From 58f7c89bb8bc691ccb4d5a2770bc96db328a8c57 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Tue, 2 May 2023 18:17:54 +0800 Subject: [PATCH] =?UTF-8?q?add:=E4=BF=AE=E6=94=B9=E8=BD=AF=E5=BA=9F?= =?UTF-8?q?=E7=BB=B4=E6=8A=A4=E6=9C=AA=E5=AD=97=E5=85=B8=E8=A1=A8=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=9A=E6=B6=89=E5=8F=8A=E8=BD=AF=E5=BA=9F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=A1=A8->=E8=BD=AF=E8=B4=B9=E7=B3=BB=E6=95=B0?= =?UTF-8?q?=EF=BC=9B=E5=90=88=E6=89=B9=E7=90=83=E7=A3=A8=E6=97=B6=E9=97=B4?= =?UTF-8?q?->=E5=90=88=E6=89=B9=E5=BC=80=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pdm/rest/WasteBallTimeController.java | 2 +- .../pdm/rest/WastecchangeController.java | 7 +- .../pdm/service/WasteBallTimeService.java | 2 +- .../pdm/service/WastecchangeService.java | 27 +- .../pdm/service/dto/WastecchangeDto.java | 95 ++-- .../impl/WasteBallTimeServiceImpl.java | 70 ++- .../service/impl/WastecchangeServiceImpl.java | 287 +++------- .../basedata/pdm/wal/PDM_WASTEBALLTIME.wql | 17 +- .../wms/basedata/pdm/wal/PDM_WASTECCHANGE.wql | 17 +- .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 262656 -> 263680 bytes .../service/impl/AutoformulaServiceImpl.java | 15 +- .../wms/basedata/pdm/wasteBallTime/index.vue | 496 +++++++++-------- .../wms/basedata/pdm/wastecchange/index.vue | 504 ++++++++++-------- 13 files changed, 709 insertions(+), 830 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WasteBallTimeController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WasteBallTimeController.java index c67ee4be..3796394b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WasteBallTimeController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WasteBallTimeController.java @@ -50,7 +50,7 @@ public class WasteBallTimeController { @Log("修改合批软废球磨时间") @ApiOperation("修改合批软废球磨时间") //@PreAuthorize("@el.check('wastecchange:edit')") - public ResponseEntity update(@Validated @RequestBody WastecchangeDto dto) { + public ResponseEntity update(@Validated @RequestBody JSONObject dto) { wasteBallTimeService.update(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WastecchangeController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WastecchangeController.java index bc0f3e98..3ca7e637 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WastecchangeController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WastecchangeController.java @@ -38,6 +38,11 @@ public class WastecchangeController { @ApiOperation("查询软废碳平衡修正维护") //@PreAuthorize("@el.check('wastecchange:list')") public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(wastecchangeService.queryJsonData(whereJson, page), HttpStatus.OK); + } + + //@PreAuthorize("@el.check('wastecchange:list')") + public ResponseEntity queryJsonData(@RequestParam Map whereJson, Pageable page) { return new ResponseEntity<>(wastecchangeService.queryAll(whereJson, page), HttpStatus.OK); } @@ -54,7 +59,7 @@ public class WastecchangeController { @Log("修改软废碳平衡修正维护") @ApiOperation("修改软废碳平衡修正维护") //@PreAuthorize("@el.check('wastecchange:edit')") - public ResponseEntity update(@Validated @RequestBody WastecchangeDto dto) { + public ResponseEntity update(@Validated @RequestBody JSONObject dto) { wastecchangeService.update(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WasteBallTimeService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WasteBallTimeService.java index 4da4f31c..958d7e9f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WasteBallTimeService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WasteBallTimeService.java @@ -61,7 +61,7 @@ public interface WasteBallTimeService { * * @param dto / */ - void update(WastecchangeDto dto); + void update(JSONObject dto); /** * 多选删除 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WastecchangeService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WastecchangeService.java index c9643a01..b7de4e5b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WastecchangeService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WastecchangeService.java @@ -24,31 +24,10 @@ public interface WastecchangeService { * @param page 分页参数 * @return Map */ + @Deprecated Map queryAll(Map whereJson, Pageable page); + Map queryJsonData(Map whereJson, Pageable page); - /** - * 查询所有数据不分页 - * - * @param whereJson 条件参数 - * @return List - */ - List queryAll(Map whereJson); - - /** - * 根据ID查询 - * - * @param change_id ID - * @return Wastecchange - */ - WastecchangeDto findById(Long change_id); - - /** - * 根据编码查询 - * - * @param code code - * @return Wastecchange - */ - WastecchangeDto findByCode(String code); /** @@ -63,7 +42,7 @@ public interface WastecchangeService { * * @param dto / */ - void update(WastecchangeDto dto); + void update(JSONObject dto); /** * 多选删除 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/dto/WastecchangeDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/dto/WastecchangeDto.java index b5f10335..0dfaafd4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/dto/WastecchangeDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/dto/WastecchangeDto.java @@ -1,5 +1,6 @@ package org.nl.wms.basedata.pdm.service.dto; +import com.alibaba.fastjson.JSONObject; import lombok.Data; import java.math.BigDecimal; import java.io.Serializable; @@ -26,52 +27,54 @@ public class WastecchangeDto implements Serializable { private String tech_type; /** CF */ - private BigDecimal cf_qty; - - /** YZ */ - private BigDecimal yz_qty; - - /** CX */ - private BigDecimal cx_qty; - - /** YC */ - private BigDecimal yc_qty; - - /** JY */ - private BigDecimal jy_qty; - - /** LT */ - private BigDecimal lt_qty; - - /** SJ */ - private BigDecimal sj_qty; - - /** YS */ - private BigDecimal ys_qty; - - /** DS */ - private BigDecimal ds_qty; - - /** CQX */ - private BigDecimal cqx_qty; - - /** XQX */ - private BigDecimal xqx_qty; - - /** QX */ - private BigDecimal qx_qty; - - /** JCF */ - private BigDecimal jcf_qty; - - /** TB */ - private BigDecimal tb_qty; - - /** YCR */ - private BigDecimal ycr_qty; - - /** GZ */ - private BigDecimal gz_qty; +// private BigDecimal cf_qty; +// +// /** YZ */ +// private BigDecimal yz_qty; +// +// /** CX */ +// private BigDecimal cx_qty; +// +// /** YC */ +// private BigDecimal yc_qty; +// +// /** JY */ +// private BigDecimal jy_qty; +// +// /** LT */ +// private BigDecimal lt_qty; +// +// /** SJ */ +// private BigDecimal sj_qty; +// +// /** YS */ +// private BigDecimal ys_qty; +// +// /** DS */ +// private BigDecimal ds_qty; +// +// /** CQX */ +// private BigDecimal cqx_qty; +// +// /** XQX */ +// private BigDecimal xqx_qty; +// +// /** QX */ +// private BigDecimal qx_qty; +// +// /** JCF */ +// private BigDecimal jcf_qty; +// +// /** TB */ +// private BigDecimal tb_qty; +// +// /** YCR */ +// private BigDecimal ycr_qty; +// +// /** GZ */ +// private BigDecimal gz_qty; + //参数 + private JSONObject alldata; /** 创建人 */ private Long create_id; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WasteBallTimeServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WasteBallTimeServiceImpl.java index ecdc69e8..c6b9fbe7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WasteBallTimeServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WasteBallTimeServiceImpl.java @@ -5,7 +5,6 @@ package org.nl.wms.basedata.pdm.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -13,22 +12,26 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.exception.BadRequestException; +import org.apache.commons.lang3.StringUtils; +import org.nl.modules.system.domain.DictDetail; +import org.nl.modules.system.repository.DictDetailRepository; import org.nl.utils.SecurityUtils; import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.basedata.pdm.service.WasteBallTimeService; -import org.nl.wms.basedata.pdm.service.WastecchangeService; import org.nl.wms.basedata.pdm.service.dto.WastecchangeDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.nl.wql.util.WqlUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; +import java.util.stream.Collectors; /** * @author ZZQ @@ -40,6 +43,9 @@ import java.util.Map; @Slf4j public class WasteBallTimeServiceImpl implements WasteBallTimeService { + @Autowired + private DictDetailRepository dictDetailRepository; + @Override public Map queryAll(Map whereJson, Pageable page) { String material_code = MapUtil.getStr(whereJson, "material_code"); @@ -50,6 +56,8 @@ public class WasteBallTimeServiceImpl implements WasteBallTimeService { map.put("material_code", "%" + material_code + "%"); } map.put("class_ids", MaterOptTypeEnum.THW.getClass_idStr()); + List rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE"); + Map typeMap = rfType.stream().collect(HashMap::new, (k, v) -> k.put(v.getValue(), v.getLabel()), HashMap::putAll); JSONObject allmaterialIds = WQL.getWO("PDM_WASTEBALLTIME").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code"); JSONArray array = allmaterialIds.getJSONArray("content"); @@ -57,6 +65,14 @@ public class WasteBallTimeServiceImpl implements WasteBallTimeService { if (ObjectUtil.isNotEmpty(array)){ for(int i=0;i rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); + JSONObject allData = new JSONObject(); + for (String key : rfType) { + allData.put(key,form.get(key)); + } + form.put("create_id",SecurityUtils.getCurrentUserId()); + form.put("create_name",SecurityUtils.getNickName()); + form.put("create_time",DateUtil.now()); + form.put("alldata",allData); + WQLObject.getWQLObject("PDM_BI_WasteBallTime").update(form); } @Override @@ -157,36 +177,8 @@ public class WasteBallTimeServiceImpl implements WasteBallTimeService { WQLObject wasTab = WQLObject.getWQLObject("PDM_BI_WasteBallTime"); // 3.插入软废碳平衡修正表 - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getNickName(); + this.update(whereJson); - // 先删除在插入 - JSONObject jsonObject = wasTab.query("material_id = '" + whereJson.getString("material_id")+"'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonObject)) wasTab.delete("material_id = '"+whereJson.getString("material_id")+"'"); - - JSONObject jsonWas = new JSONObject(); - jsonWas.put("change_id", IdUtil.getSnowflake(1,1).nextId()); - jsonWas.put("material_id", whereJson.getString("material_id")); - jsonWas.put("cf_qty", whereJson.getDoubleValue("cf_qty")); - jsonWas.put("yz_qty", whereJson.getDoubleValue("yz_qty")); - jsonWas.put("cx_qty", whereJson.getDoubleValue("cx_qty")); - jsonWas.put("yc_qty", whereJson.getDoubleValue("yc_qty")); - jsonWas.put("jy_qty", whereJson.getDoubleValue("jy_qty")); - jsonWas.put("lt_qty", whereJson.getDoubleValue("lt_qty")); - jsonWas.put("sj_qty", whereJson.getDoubleValue("sj_qty")); - jsonWas.put("ys_qty", whereJson.getDoubleValue("ys_qty")); - jsonWas.put("ds_qty", whereJson.getDoubleValue("ds_qty")); - jsonWas.put("cqx_qty", whereJson.getDoubleValue("cqx_qty")); - jsonWas.put("xqx_qty", whereJson.getDoubleValue("xqx_qty")); - jsonWas.put("qx_qty", whereJson.getDoubleValue("qx_qty")); - jsonWas.put("jcf_qty", whereJson.getDoubleValue("jcf_qty")); - jsonWas.put("tb_qty", whereJson.getDoubleValue("tb_qty")); - jsonWas.put("ycr_qty", whereJson.getDoubleValue("ycr_qty")); - jsonWas.put("gz_qty", whereJson.getDoubleValue("gz_qty")); - jsonWas.put("create_id", currentUserId); - jsonWas.put("create_name", nickName); - jsonWas.put("create_time", DateUtil.now()); - wasTab.insert(jsonWas); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WastecchangeServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WastecchangeServiceImpl.java index a6414c51..936da453 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WastecchangeServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WastecchangeServiceImpl.java @@ -6,14 +6,20 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.util.StringUtil; import org.nl.exception.BadRequestException; +import org.nl.modules.system.domain.DictDetail; +import org.nl.modules.system.repository.DictDetailRepository; +import org.nl.modules.system.service.DictDetailService; import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.basedata.pdm.service.WastecchangeService; import org.nl.wms.basedata.pdm.service.dto.WastecchangeDto; import org.nl.wql.WQL; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -44,6 +50,9 @@ import cn.hutool.core.util.ObjectUtil; @RequiredArgsConstructor @Slf4j public class WastecchangeServiceImpl implements WastecchangeService { + @Autowired + private DictDetailRepository dictDetailRepository; + @Override public Map queryAll(Map whereJson, Pageable page) { @@ -57,7 +66,6 @@ public class WastecchangeServiceImpl implements WastecchangeService { map.put("material_code", "%" + material_code + "%"); } map.put("class_ids", MaterOptTypeEnum.THW.getClass_idStr()); - JSONObject allmaterialIds = WQL.getWO("PDM_WASTECCHANGE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code"); JSONArray array = allmaterialIds.getJSONArray("content"); JSONArray array2 = new JSONArray(); @@ -74,32 +82,44 @@ public class WastecchangeServiceImpl implements WastecchangeService { } @Override - public List queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_wastecchange"); - JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(WastecchangeDto.class); - return null; + public Map queryJsonData(Map whereJson, Pageable page) { + String material_code = MapUtil.getStr(whereJson, "material_code"); + String tech_type = MapUtil.getStr(whereJson, "tech_type"); + + HashMap map = new HashMap<>(); + map.put("flag", "1"); + map.put("tech_type", tech_type); + if (ObjectUtil.isNotEmpty(material_code)) { + map.put("material_code", "%" + material_code + "%"); + } + map.put("class_ids", MaterOptTypeEnum.THW.getClass_idStr()); + + JSONObject allmaterialIds = WQL.getWO("PDM_WASTECCHANGE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code"); + JSONArray array = allmaterialIds.getJSONArray("content"); + //label:name;value:code + List rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE"); + Map typeMap = rfType.stream().collect(HashMap::new, (k, v) -> k.put(v.getValue(), v.getLabel()), HashMap::putAll); + JSONArray array2 = new JSONArray(); + if (ObjectUtil.isNotEmpty(array)){ + for(int i=0;i rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); + JSONObject allData = new JSONObject(); + for (String key : rfType) { + allData.put(key,form.get(key)); + } + form.put("create_id",SecurityUtils.getCurrentUserId()); + form.put("create_name",SecurityUtils.getNickName()); + form.put("create_time",DateUtil.now()); + form.put("alldata",allData); + WQLObject.getWQLObject("pdm_bi_wastecchange").update(form); } @Override @@ -171,7 +190,7 @@ public class WastecchangeServiceImpl implements WastecchangeService { WQLObject extTab = WQLObject.getWQLObject("MD_ME_ProducMaterialExt"); WQLObject wasTab = WQLObject.getWQLObject("PDM_BI_WasteCChange"); - // 1.将16中软废类型 放到一个数组当中 + // 1.将16中软废类型 放到一个数组当中:list:{name:ZF,value:123} JSONArray rf_arr = this.contentShift(whereJson); // 2.找软废 String tech_type = whereJson.getString("tech_type"); @@ -227,190 +246,28 @@ public class WastecchangeServiceImpl implements WastecchangeService { extTab.update(jsonExt_rf); } } - // 3.插入软废碳平衡修正表 - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getNickName(); + // 3.更新软废碳平衡修正表 - // 先删除在插入 - JSONObject jsonObject = wasTab.query("material_id = '" + whereJson.getString("material_id") + "' and tech_type ='"+whereJson.getString("tech_type")+"'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonObject)) wasTab.delete("material_id = '"+whereJson.getString("material_id")+"' and tech_type = '"+whereJson.getString("tech_type")+"'"); - - JSONObject jsonWas = new JSONObject(); - jsonWas.put("change_id", IdUtil.getSnowflake(1,1).nextId()); - jsonWas.put("material_id", whereJson.getString("material_id")); - jsonWas.put("tech_type", whereJson.getString("tech_type")); - jsonWas.put("cf_qty", whereJson.getDoubleValue("cf_qty")); - jsonWas.put("yz_qty", whereJson.getDoubleValue("yz_qty")); - jsonWas.put("cx_qty", whereJson.getDoubleValue("cx_qty")); - jsonWas.put("yc_qty", whereJson.getDoubleValue("yc_qty")); - jsonWas.put("jy_qty", whereJson.getDoubleValue("jy_qty")); - jsonWas.put("lt_qty", whereJson.getDoubleValue("lt_qty")); - jsonWas.put("sj_qty", whereJson.getDoubleValue("sj_qty")); - jsonWas.put("ys_qty", whereJson.getDoubleValue("ys_qty")); - jsonWas.put("ds_qty", whereJson.getDoubleValue("ds_qty")); - jsonWas.put("cqx_qty", whereJson.getDoubleValue("cqx_qty")); - jsonWas.put("xqx_qty", whereJson.getDoubleValue("xqx_qty")); - jsonWas.put("qx_qty", whereJson.getDoubleValue("qx_qty")); - jsonWas.put("jcf_qty", whereJson.getDoubleValue("jcf_qty")); - jsonWas.put("tb_qty", whereJson.getDoubleValue("tb_qty")); - jsonWas.put("ycr_qty", whereJson.getDoubleValue("ycr_qty")); - jsonWas.put("gz_qty", whereJson.getDoubleValue("gz_qty")); - jsonWas.put("create_id", currentUserId); - jsonWas.put("create_name", nickName); - jsonWas.put("create_time", DateUtil.now()); - wasTab.insert(jsonWas); + this.update(whereJson); } @Transactional(rollbackFor = Exception.class) public JSONArray contentShift(JSONObject json) { - JSONArray array = new JSONArray(); + List rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); + JSONArray rf_arr = new JSONArray(); + rfType.forEach(a->{ + JSONObject json_CF = new JSONObject(); + json_CF.put("name", a); + if (ObjectUtil.isEmpty(json.getString(a))) { + json_CF.put("value", "0"); + } else { + json_CF.put("value", json.getString(a)); + } + rf_arr.add(json_CF); + }); - JSONObject json_CF = new JSONObject(); - json_CF.put("name", "CF"); - if (ObjectUtil.isEmpty(json.getString("cf_qty"))) { - json_CF.put("value", "0"); - } else { - json_CF.put("value", json.getString("cf_qty")); - } - array.add(json_CF); - - JSONObject json_YZ = new JSONObject(); - json_YZ.put("name", "YZ"); - if (ObjectUtil.isEmpty(json.getString("yz_qty"))) { - json_YZ.put("value", "0"); - } else { - json_YZ.put("value", json.getString("yz_qty")); - } - array.add(json_YZ); - - JSONObject json_CX = new JSONObject(); - json_CX.put("name", "CX"); - if (ObjectUtil.isEmpty(json.getString("cx_qty"))) { - json_CX.put("value", "0"); - } else { - json_CX.put("value", json.getString("cx_qty")); - } - array.add(json_CX); - - JSONObject json_YC = new JSONObject(); - json_YC.put("name", "YC"); - if (ObjectUtil.isEmpty(json.getString("yc_qty"))) { - json_YC.put("value", "0"); - } else { - json_YC.put("value", json.getString("yc_qty")); - } - array.add(json_YC); - - JSONObject json_JY = new JSONObject(); - json_JY.put("name", "JY"); - if (ObjectUtil.isEmpty(json.getString("jy_qty"))) { - json_JY.put("value", "0"); - } else { - json_JY.put("value", json.getString("jy_qty")); - } - array.add(json_JY); - - JSONObject json_LT = new JSONObject(); - json_LT.put("name", "LT"); - if (ObjectUtil.isEmpty(json.getString("lt_qty"))) { - json_LT.put("value", "0"); - } else { - json_LT.put("value", json.getString("lt_qty")); - } - array.add(json_LT); - - JSONObject json_SJ = new JSONObject(); - json_SJ.put("name", "SJ"); - if (ObjectUtil.isEmpty(json.getString("sj_qty"))) { - json_SJ.put("value", "0"); - } else { - json_SJ.put("value", json.getString("sj_qty")); - } - array.add(json_SJ); - - JSONObject json_YS = new JSONObject(); - json_YS.put("name", "YS"); - if (ObjectUtil.isEmpty(json.getString("ys_qty"))) { - json_YS.put("value", "0"); - } else { - json_YS.put("value", json.getString("ys_qty")); - } - array.add(json_YS); - - JSONObject json_DS = new JSONObject(); - json_DS.put("name", "DS"); - if (ObjectUtil.isEmpty(json.getString("ds_qty"))) { - json_DS.put("value", "0"); - } else { - json_DS.put("value", json.getString("ds_qty")); - } - array.add(json_DS); - - JSONObject json_CQX = new JSONObject(); - json_CQX.put("name", "CQX"); - if (ObjectUtil.isEmpty(json.getString("cqx_qty"))) { - json_CQX.put("value", "0"); - } else { - json_CQX.put("value", json.getString("cqx_qty")); - } - array.add(json_CQX); - - JSONObject json_XQX = new JSONObject(); - json_XQX.put("name", "XQX"); - if (ObjectUtil.isEmpty(json.getString("xqx_qty"))) { - json_XQX.put("value", "0"); - } else { - json_XQX.put("value", json.getString("xqx_qty")); - } - array.add(json_XQX); - - JSONObject json_QX = new JSONObject(); - json_QX.put("name", "QX"); - if (ObjectUtil.isEmpty(json.getString("qx_qty"))) { - json_QX.put("value", "0"); - } else { - json_QX.put("value", json.getString("qx_qty")); - } - array.add(json_QX); - - JSONObject json_JCF = new JSONObject(); - json_JCF.put("name", "JCF"); - if (ObjectUtil.isEmpty(json.getString("jcf_qty"))) { - json_JCF.put("value", "0"); - } else { - json_JCF.put("value", json.getString("jcf_qty")); - } - array.add(json_JCF); - - JSONObject json_TB = new JSONObject(); - json_TB.put("name", "TB"); - if (ObjectUtil.isEmpty(json.getString("tb_qty"))) { - json_TB.put("value", "0"); - } else { - json_TB.put("value", json.getString("tb_qty")); - } - array.add(json_TB); - - JSONObject json_YCR = new JSONObject(); - json_YCR.put("name", "YCR"); - if (ObjectUtil.isEmpty(json.getString("ycr_qty"))) { - json_YCR.put("value", "0"); - } else { - json_YCR.put("value", json.getString("ycr_qty")); - } - array.add(json_YCR); - - JSONObject json_GZ = new JSONObject(); - json_GZ.put("name", "GZ"); - if (ObjectUtil.isEmpty(json.getString("gz_qty"))) { - json_GZ.put("value", "0"); - } else { - json_GZ.put("value", json.getString("gz_qty")); - } - array.add(json_GZ); - - return array; + return rf_arr; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/wal/PDM_WASTEBALLTIME.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/wal/PDM_WASTEBALLTIME.wql index 72d05c74..3ac3d6d6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/wal/PDM_WASTEBALLTIME.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/wal/PDM_WASTEBALLTIME.wql @@ -52,22 +52,7 @@ mater.material_name, mater.material_model, chan.change_id, - IFNULL(chan.cf_qty,'99') as cf_qty, - IFNULL(chan.yz_qty,'99') as yz_qty, - IFNULL(chan.cx_qty,'99') as cx_qty, - IFNULL(chan.yc_qty,'99') as yc_qty, - IFNULL(chan.jy_qty,'99') as jy_qty, - IFNULL(chan.lt_qty,'99') as lt_qty, - IFNULL(chan.sj_qty,'99') as sj_qty, - IFNULL(chan.ys_qty,'99') as ys_qty, - IFNULL(chan.ds_qty,'99') as ds_qty, - IFNULL(chan.cqx_qty,'99') as cqx_qty, - IFNULL(chan.xqx_qty,'99') as xqx_qty, - IFNULL(chan.qx_qty,'99') as qx_qty, - IFNULL(chan.jcf_qty,'99') as jcf_qty, - IFNULL(chan.tb_qty,'99') as tb_qty, - IFNULL(chan.ycr_qty,'99') as ycr_qty, - IFNULL(chan.gz_qty,'99') as gz_qty, + alldata, chan.create_id, chan.create_name, chan.create_time diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/wal/PDM_WASTECCHANGE.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/wal/PDM_WASTECCHANGE.wql index 9d17cca5..81c5afa7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/wal/PDM_WASTECCHANGE.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/wal/PDM_WASTECCHANGE.wql @@ -52,22 +52,7 @@ mater.material_name, mater.material_model, chan.change_id, - chan.cf_qty, - chan.yz_qty, - chan.cx_qty, - chan.yc_qty, - chan.jy_qty, - chan.lt_qty, - chan.sj_qty, - chan.ys_qty, - chan.ds_qty, - chan.cqx_qty, - chan.xqx_qty, - chan.qx_qty, - chan.jcf_qty, - chan.tb_qty, - chan.ycr_qty, - chan.gz_qty, + chan.alldata, chan.create_id, chan.create_name, chan.create_time diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index 93c00a5e16297e31609dd9545361dd8975308cef..edc88ded666022641f7c6fcf2ce09adb941b1173 100644 GIT binary patch delta 17765 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 F^gl!*DmMTC diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AutoformulaServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AutoformulaServiceImpl.java index 0c15d0f7..b85392d5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AutoformulaServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AutoformulaServiceImpl.java @@ -4739,14 +4739,17 @@ public class AutoformulaServiceImpl implements AutoformulaService { String[] strs = mater_code.split("-"); String brf = strs[strs.length-1]; - - String now_qty = WasteBallTime.getString( brf.toLowerCase()+"_qty"); - if (StrUtil.isNotEmpty(now_qty)) { - double now = Double.valueOf(now_qty); - if(now != 99){ - doubles.add(Double.valueOf(now_qty)); + JSONObject alldata = WasteBallTime.getJSONObject("alldata"); + if (ObjectUtil.isEmpty(alldata)){ + String now_qty = alldata.getString( brf.toUpperCase(Locale.ROOT)); + if (StrUtil.isNotEmpty(now_qty)) { + double now = Double.valueOf(now_qty); + if(now != 99){ + doubles.add(Double.valueOf(now_qty)); + } } } + } } }); diff --git a/mes/qd/src/views/wms/basedata/pdm/wasteBallTime/index.vue b/mes/qd/src/views/wms/basedata/pdm/wasteBallTime/index.vue index 3c4fe395..48afb136 100644 --- a/mes/qd/src/views/wms/basedata/pdm/wasteBallTime/index.vue +++ b/mes/qd/src/views/wms/basedata/pdm/wasteBallTime/index.vue @@ -29,252 +29,283 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -300,6 +331,7 @@ import pagination from '@crud/Pagination' const defaultForm = { change_id: null, material_id: null, cf_qty: null, yz_qty: null, cx_qty: null, yc_qty: null, jy_qty: null, lt_qty: null, sj_qty: null, ys_qty: null, ds_qty: null, cqx_qty: null, xqx_qty: null, qx_qty: null, jcf_qty: null, tb_qty: null, ycr_qty: null, gz_qty: null, create_id: null, create_name: null, create_time: null } export default { name: 'WasteBallTime', + dicts: ['MD_MATERIAL_WASTE_TYPE'], components: { pagination, crudOperation, rrOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { diff --git a/mes/qd/src/views/wms/basedata/pdm/wastecchange/index.vue b/mes/qd/src/views/wms/basedata/pdm/wastecchange/index.vue index 3910618e..94880125 100644 --- a/mes/qd/src/views/wms/basedata/pdm/wastecchange/index.vue +++ b/mes/qd/src/views/wms/basedata/pdm/wastecchange/index.vue @@ -26,40 +26,283 @@     - {{ msg }} + {{ msg }} - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +