From 975bd75f6555d692d70ae28858162222d43cb49c Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 7 Jun 2023 18:40:55 +0800 Subject: [PATCH 1/6] =?UTF-8?q?rev=EF=BC=9A=E7=89=A9=E6=96=99=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=BF=9D=E5=AD=98=E6=8A=A5=E9=94=99=E3=80=81=E8=BD=AF?= =?UTF-8?q?=E5=BA=9F=E5=BA=93=E5=AD=98=E6=98=AF=E5=90=A6=E5=8F=AF=E7=94=A8?= =?UTF-8?q?=E4=B8=8D=E4=B8=80=E8=87=B4=E3=80=81=E5=85=A5=E5=BA=93=E5=88=86?= =?UTF-8?q?=E9=85=8D=E5=88=A0=E9=99=A4=E6=A1=B6=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PdaBucketServiceImpl.java | 14 ++++ .../nl/pda/st/set/wql/QPADSTSETSERVICE.wql | 17 +++++ .../impl/WasteBallTimeServiceImpl.java | 5 +- .../service/impl/WastecchangeServiceImpl.java | 8 +-- .../st/core/inbill/rawassist/DivDialog.vue | 66 +++++++++++-------- 5 files changed, 76 insertions(+), 34 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/impl/PdaBucketServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/impl/PdaBucketServiceImpl.java index 92d3c659..6d3bddd1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/impl/PdaBucketServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/impl/PdaBucketServiceImpl.java @@ -156,6 +156,20 @@ public class PdaBucketServiceImpl implements PdaBucketService { //2.假如桶码没有就插入,有就更新 桶记录表 JSONObject bucketJo = new JSONObject(); if (StrUtil.isNotEmpty(bucketunique)) { + // 校验此桶是否有未完成的单据 + JSONObject map = new JSONObject(); + map.put("flag", "16"); + map.put("bucketunique", bucketunique); + JSONArray iosList = WQL.getWO("QPADSTSETSERVICE").addParamMap(map).process().getResultJSONArray(0); + + if (ObjectUtil.isNotEmpty(iosList)) { + boolean is_emp = iosList.stream() + .map(row -> (JSONObject) row) + .allMatch(row -> row.getString("is_active").equals(is_active)); + + if (!is_emp) throw new PdaRequestException("此桶库存是否可用与选择是否可用不一致"+bucketunique+"!"); + } + bucketJo = bucketRecordTable.query("bucketunique='" + bucketunique + "'").uniqueResult(0); String before_storage_qty = bucketJo.getString("storage_qty"); bucketJo.put("storagevehicle_type", "04"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/wql/QPADSTSETSERVICE.wql b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/wql/QPADSTSETSERVICE.wql index 2fe11568..6a6de55a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/wql/QPADSTSETSERVICE.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/wql/QPADSTSETSERVICE.wql @@ -478,3 +478,20 @@ ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "16" + QUERY + SELECT + dis.* + FROM + st_ivt_iostorinvdisdtl dis + LEFT JOIN ST_IVT_IOStorInv mst ON mst.iostorinv_id = dis.iostorinv_id + WHERE + mst.io_type = '0' + + OPTION 输入.bucketunique <> "" + dis.bucketunique = 输入.bucketunique + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF 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 c6b9fbe7..401a7d21 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 @@ -16,6 +16,7 @@ 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.utils.SpringContextHolder; import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.basedata.pdm.service.WasteBallTimeService; import org.nl.wms.basedata.pdm.service.dto.WastecchangeDto; @@ -56,7 +57,7 @@ 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"); + List rfType = SpringContextHolder.getBean(DictDetailRepository.class).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"); @@ -129,7 +130,7 @@ public class WasteBallTimeServiceImpl implements WasteBallTimeService { @Override @Transactional(rollbackFor = Exception.class) public void update(JSONObject form) { - List rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); + List rfType = SpringContextHolder.getBean(DictDetailRepository.class).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)); 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 936da453..d9ec493d 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 @@ -15,6 +15,7 @@ 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.utils.SpringContextHolder; 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; @@ -53,7 +54,6 @@ public class WastecchangeServiceImpl implements WastecchangeService { @Autowired private DictDetailRepository dictDetailRepository; - @Override public Map queryAll(Map whereJson, Pageable page) { String material_code = MapUtil.getStr(whereJson, "material_code"); @@ -97,7 +97,7 @@ public class WastecchangeServiceImpl implements WastecchangeService { 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"); + List rfType = SpringContextHolder.getBean(DictDetailRepository.class).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)){ @@ -141,7 +141,7 @@ public class WastecchangeServiceImpl implements WastecchangeService { @Override @Transactional(rollbackFor = Exception.class) public void update(JSONObject form) { - List rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); + List rfType = SpringContextHolder.getBean(DictDetailRepository.class).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)); @@ -254,7 +254,7 @@ public class WastecchangeServiceImpl implements WastecchangeService { @Transactional(rollbackFor = Exception.class) public JSONArray contentShift(JSONObject json) { - List rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); + List rfType = SpringContextHolder.getBean(DictDetailRepository.class).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(); diff --git a/mes/qd/src/views/wms/st/core/inbill/rawassist/DivDialog.vue b/mes/qd/src/views/wms/st/core/inbill/rawassist/DivDialog.vue index 4d2fc1b0..27e5d4fc 100644 --- a/mes/qd/src/views/wms/st/core/inbill/rawassist/DivDialog.vue +++ b/mes/qd/src/views/wms/st/core/inbill/rawassist/DivDialog.vue @@ -14,7 +14,7 @@ 入库分配 - + 关闭 @@ -51,10 +51,10 @@ - - - - + + + + - - - + + + - + - + @@ -140,7 +141,7 @@ - + - - - - - - + + + + + + - - + + - - + + @@ -330,7 +334,8 @@ export default { }) }, toDelete(data) { - data.pop = true + this.$set(data, 'pop', true) + // data.pop = true }, close() { this.form.tableMater = [] @@ -395,7 +400,8 @@ export default { return } dis_dtl.storagevehicle_code = this.form.storagevehicle_code - dis_dtl.pop = false + // dis_dtl.pop = false + this.$set(dis_dtl, 'pop', false) this.form.tableMater.splice(this.form.tableMater.length, 0, dis_dtl) if (this.form.dtl_row.assign_qty) { this.form.dtl_row.assign_qty = parseFloat(this.form.dtl_row.assign_qty) + parseFloat(this.form.storage_qty) @@ -444,6 +450,7 @@ export default { }) }, deleteRow(index, rows) { + debugger // 如果桶状态不是生成调后台逻辑 if (rows[index].status !== '01') { crudRawAssist.deleteDisDtl(rows[index]).then(res => { @@ -453,9 +460,11 @@ export default { crudRawAssist.getDisDtl(this.form.dtl_row).then(res => { this.form.tableMater = res }) - rows[index].pop = false + // rows[index].pop = false + this.$set(rows[index], 'pop', false) }).catch(err => { - rows[index].pop = false + // rows[index].pop = false + this.$set(rows[index], 'pop', false) return }) } @@ -553,7 +562,8 @@ export default { } }, doCancel(data) { - data.pop = false + this.$set(data, 'pop', false) + // data.pop = false }, unDivStruct() { if (this.form.tableMater.length <= 0) { From c172453084af9570793c46a97c8de446810211c2 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 8 Jun 2023 11:12:13 +0800 Subject: [PATCH 2/6] =?UTF-8?q?rev=EF=BC=9A=E7=94=9F=E4=BA=A7=E9=85=8D?= =?UTF-8?q?=E7=B2=89=E5=87=BA=E5=BA=93=E7=B2=BE=E5=BA=A6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=20=E4=BF=9D=E7=95=993=E4=BD=8D=E5=B0=8F=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/pda/st/out/service/impl/HandPFOutIvtServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/out/service/impl/HandPFOutIvtServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/out/service/impl/HandPFOutIvtServiceImpl.java index 8c92c84d..de40ea2c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/out/service/impl/HandPFOutIvtServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/out/service/impl/HandPFOutIvtServiceImpl.java @@ -164,7 +164,7 @@ public class HandPFOutIvtServiceImpl implements HandPFOutIvtService { } String area_type = pointObj.getString("area_type"); String bucketunique = jsonObject.get("bucketunique"); - String out_qty = jsonObject.get("out_qty"); + String out_qty = NumberUtil.round(jsonObject.get("out_qty"), 3).toString(); //根据桶查询物料批次信息 JSONObject bucketObj = WQLObject.getWQLObject("md_pb_bucketrecord").query("bucketunique='" + bucketunique + "'").uniqueResult(0); String material_id = bucketObj.getString("material_id"); From 01980f65dfab6631c5fe3f7cf4a91be861ad0926 Mon Sep 17 00:00:00 2001 From: liuxy Date: Fri, 9 Jun 2023 13:58:10 +0800 Subject: [PATCH 3/6] =?UTF-8?q?rev=EF=BC=9A=E9=85=8D=E7=B2=89=E5=BC=80?= =?UTF-8?q?=E5=8D=95=E5=90=88=E6=89=B9=E6=A8=A1=E5=BC=8F=E7=90=83=E7=A3=A8?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AutoformulaServiceImpl.java | 46 ++++++++++++++++++- .../org/nl/wms/pf/wql/QPF_AUTOFORMULA02.wql | 22 +++++++++ .../views/wms/pf/initformula/DivDialog.vue | 9 ++++ 3 files changed, 76 insertions(+), 1 deletion(-) 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 7b02a159..1da58d7e 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 @@ -13,6 +13,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.exception.BadRequestException; import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; +import org.nl.wms.basedata.master.service.MaterialbaseService; import org.nl.wms.pf.service.AutoformulaService; import org.nl.wms.pf.service.InitformulaService; import org.nl.wql.WQL; @@ -30,6 +31,7 @@ import java.util.stream.Collectors; @Slf4j public class AutoformulaServiceImpl implements AutoformulaService { private final InitformulaService initformulaService; + private final MaterialbaseService materialbaseService; @Override @Transactional(rollbackFor = Exception.class) public JSONObject autoCalculation(Map map) { @@ -4877,14 +4879,56 @@ public class AutoformulaServiceImpl implements AutoformulaService { } dtl_new.add(jo); } + + /* + * 计算出球磨时间 + */ + // 1.找出所有软废 + List rfList = dtl_new.stream() + .map(row -> (JSONObject) row) + .filter(row -> ObjectUtil.isNotEmpty(row.getString("material_type_id"))) + .filter(row -> materialbaseService.isAlongMaterType(MaterOptTypeEnum.RF.getCode(), row.getString("material_id"), null)) + .collect(Collectors.toList()); + + // 2.找出所有软废bom中最后一个碳化钨 + ArrayList numList = new ArrayList<>(); // 球磨时间集合 + + rfList.forEach(row -> { + // 截取软废的类型 + String code = row.getString("material_code"); + String rf_type = code.substring(code.lastIndexOf('-') + 1); + + // 找此软废bom最后一个碳化钨 + JSONObject rfBomdtl = WQL.getWO("QPF_AUTOFORMULA02") + .addParam("material_id", row.getString("material_id")) + .addParam("flag", "9") + .process() + .uniqueResult(0); + + if (ObjectUtil.isNotEmpty(rfBomdtl)) { + // 找到此碳化钨此软废类型的球磨时间 + JSONObject jsonAllData = PDM_BI_WasteBallTime.query("material_id = '" + rfBomdtl.getString("material_id") + "'").uniqueResult(0).getJSONObject("alldata"); + if (ObjectUtil.isEmpty(jsonAllData)) numList.add(0.0); + numList.add(jsonAllData.getDouble(rf_type)); + } + }); + + // 3.找出最大的球磨时间 + double time = 0.0; + if (ObjectUtil.isNotEmpty(numList)) { + time = numList.stream() + .filter(row -> row != 99) + .max(Comparator.comparingDouble(row -> row)).get(); + } + JSONObject result = new JSONObject(); result.put("tableDtl",dtl_new); result.put("chunfen_qty",chunfen_qty); result.put("ball_time",ball_time); + result.put("time",time); return result; } - /** * 合批含软废 * @param json diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA02.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA02.wql index 361186df..803e5091 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA02.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA02.wql @@ -370,3 +370,25 @@ ENDQUERY ENDIF + IF 输入.flag = "9" + QUERY + SELECT + bomdtl.* + FROM + MD_PD_ProductBOM bom + LEFT JOIN md_pd_productbomdtl bomdtl ON bom.bom_id = bomdtl.bom_id + LEFT JOIN md_me_materialbase mater ON mater.material_id = bomdtl.material_id + LEFT JOIN md_pb_classstandard class ON mater.material_type_id = class.class_id + WHERE + 1 = 1 + AND bom.is_delete = '0' + AND bom.is_used = '1' + AND class.class_code = '09030101' + OPTION 输入.material_id <> "" + bom.material_id = 输入.material_id + ENDOPTION + ORDER BY bomdtl.seqno DESC + ENDSELECT + ENDQUERY + ENDIF + diff --git a/mes/qd/src/views/wms/pf/initformula/DivDialog.vue b/mes/qd/src/views/wms/pf/initformula/DivDialog.vue index e439fb20..f1a98fb8 100644 --- a/mes/qd/src/views/wms/pf/initformula/DivDialog.vue +++ b/mes/qd/src/views/wms/pf/initformula/DivDialog.vue @@ -1099,6 +1099,9 @@ export default { autoformula.autoCalculation(this.form).then(res => { this.crud.notify('自动计算成功!') this.chunfen_qty = res.chunfen_qty + if (res.time !== 0.0 && res.time !== undefined) { + this.form.ball_time = res.time + } this.fullscreenLoading = false if ((parseFloat(this.chunfen_qty) > 0) && (parseFloat(this.chunfen_qty) < parseFloat(this.form.workorder_qty))) { this.$confirm('软废纯粉重量为' + parseFloat(this.chunfen_qty).toFixed(3) + '公斤,不足工令重量,是否继续?') @@ -1112,6 +1115,9 @@ export default { this.form2.total_qty1 = 0 this.form2.add_qty1 = 0 this.ball_time = res2.ball_time + if (res2.time !== 0.0 && res2.time !== undefined) { + this.form.ball_time = res2.time + } if ((parseFloat(this.ball_time) > 0)) { this.form.ball_time = parseFloat(this.ball_time) } @@ -1162,6 +1168,9 @@ export default { this.tableDtl = res.tableDtl this.form2.total_qty1 = 0 this.form2.add_qty1 = 0 + if (res.time !== 0.0 && res.time !== undefined) { + this.form.ball_time = res.time + } for (let i = 0; i < this.tableDtl.length; i++) { const row = this.tableDtl[i] row.edit = true From 71edee2319fa633c243ca900b487c51e4905e7ba Mon Sep 17 00:00:00 2001 From: liuxy Date: Mon, 10 Jul 2023 17:18:48 +0800 Subject: [PATCH 4/6] =?UTF-8?q?rev=EF=BC=9A=E8=BD=AF=E5=BA=9F=E7=A2=B3?= =?UTF-8?q?=E5=B9=B3=E8=A1=A1=E4=BF=AE=E6=AD=A3=E7=BB=B4=E6=8A=A4=EF=BC=8C?= =?UTF-8?q?=E8=A2=8B=E6=A0=87=E7=AD=BE=E6=89=93=E5=8D=B0=EF=BC=8C=E5=88=86?= =?UTF-8?q?=E9=85=8D=E8=B4=A7=E4=BD=8D=E9=87=8D=E5=A4=8D=EF=BC=8C=E7=90=83?= =?UTF-8?q?=E7=A3=A8=E5=B7=A5=E8=89=BA=E9=85=92=E7=B2=BE=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=EF=BC=8C=E5=85=A5=E5=BA=93=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PdmWorkTaskServiceImpl.java | 57 ++++++++++++++++++- .../service/impl/WastecchangeServiceImpl.java | 33 ++++++++++- .../wms/basedata/pdm/wal/PDM_WASTECCHANGE.wql | 10 ++++ .../pf/service/impl/FormulaServiceImpl.java | 51 ++++++++++++++++- .../master/bagrecord/insertAndPrintDialog.vue | 15 ++++- .../wms/basedata/pdm/wastecchange/index.vue | 4 +- 6 files changed, 160 insertions(+), 10 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/pdm/service/impl/PdmWorkTaskServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/pda/pdm/service/impl/PdmWorkTaskServiceImpl.java index 92e4e59d..a7968439 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/pdm/service/impl/PdmWorkTaskServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/pdm/service/impl/PdmWorkTaskServiceImpl.java @@ -18,7 +18,9 @@ import org.nl.pda.pdm.service.PdmWorkTaskService; import org.nl.pda.st.vehicle.service.impl.EmptyVehicleServiceImpl; import org.nl.utils.SecurityUtils; import org.nl.utils.SpringContextHolder; +import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.basedata.master.service.ClassstandardService; +import org.nl.wms.basedata.master.service.MaterialbaseService; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.st.core.task.InTask; import org.nl.wms.st.vehicle.task.ProductTask; @@ -44,6 +46,8 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService { private WmsToAcsService wmsToAcsService; @Autowired private ClassstandardService classstandardService; + @Autowired + private MaterialbaseService materialbaseService; @Override public Map queryWorkTask(Map jsonObject) { @@ -805,6 +809,9 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService { @Override @Transactional(rollbackFor = Exception.class) public Map issueQM(Map jsonObject) { + WQLObject formDtlTab = WQLObject.getWQLObject("pdm_bi_formuladtl"); // 配方明细表 + WQLObject materExtTab = WQLObject.getWQLObject("MD_ME_ProducMaterialExt"); // 成品扩展属性表 + if (ObjectUtil.isEmpty(jsonObject)) { throw new PdaRequestException("传入参数不能为空!"); } @@ -866,7 +873,55 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService { data2.put("code", para.getString("ext_name")); data2.put("value", row.getString("value")); //预磨1酒精设定值:开单重量*工艺参数"预磨1酒精设定值(改为比例)" - double masterbucket_qty = form_jo.getDoubleValue("masterbucket_qty"); +// double masterbucket_qty = form_jo.getDoubleValue("masterbucket_qty"); + + /* + 计算开单重量: + 配方明细中【是否需要配粉】为是的和,其中若为软废,需要乘以物料扩展属性的纯粉系数 + */ + // 1. 找出所有明细 + List jsonDtlAll = formDtlTab.query("formula_id = '" + form_jo.getString("formula_id") + "' and is_need_manage = '1'").getResultJSONArray(0).toJavaList(JSONObject.class); + + if (ObjectUtil.isEmpty(jsonDtlAll)) throw new BadRequestException("开单重量异常,请检查!"); + + // 2.过滤出是物料的 + List jsonDtlAll_mater = jsonDtlAll.stream() + .filter(item -> item.getString("material_type").equals("01")) + .collect(Collectors.toList()); + + // 3.计算物料分类重量 + double class_qty = jsonDtlAll.stream() + .filter(item -> item.getString("material_type").equals("02")) + .collect(Collectors.summarizingDouble(item -> item.getDoubleValue("formula_qty"))) + .getSum(); + + String masterbucket_qty1 = String.valueOf(class_qty); + try { + for (JSONObject jsonDtl : jsonDtlAll_mater) { + String formula_qty = jsonDtl.getString("formula_qty"); + + // 判断是否是软废 + boolean is_rf = materialbaseService.isAlongMaterType(MaterOptTypeEnum.RF.getCode(), jsonDtl.getString("material_id"), null); + + if (is_rf) { + // 软废:重量*纯粉系数 + String net_rate = materExtTab.query("material_id ='" + jsonDtl.getString("material_id") + "'").uniqueResult(0).getString("net_rate"); + + // 软废纯粉计算 + String rf_qty = NumberUtil.mul(formula_qty, NumberUtil.div(net_rate, "100").toString()).toString(); + + masterbucket_qty1 = NumberUtil.add(masterbucket_qty1,rf_qty).toString(); + } else { + // 直接相加 + masterbucket_qty1 = NumberUtil.add(masterbucket_qty1,formula_qty).toString(); + } + + } + } catch (Exception e) { + throw new BadRequestException("计算有误:"+e.getMessage()); + } + double masterbucket_qty = Double.valueOf(masterbucket_qty1); + if (para.getString("para_code").equals("QM006")) { QM006_qty = NumberUtil.round(data2.getDoubleValue("value") * 0.01 * masterbucket_qty, 3); data2.put("value", NumberUtil.round(data2.getDoubleValue("value") * 0.01 * masterbucket_qty, 3)); 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 d9ec493d..8e7c8a38 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 @@ -94,7 +94,14 @@ public class WastecchangeServiceImpl implements WastecchangeService { } map.put("class_ids", MaterOptTypeEnum.THW.getClass_idStr()); - JSONObject allmaterialIds = WQL.getWO("PDM_WASTECCHANGE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code"); + // 判断工艺是否为空 + if (ObjectUtil.isEmpty(tech_type)) { + map.put("is_emp", "1"); + } else { + map.put("is_emp", "2"); + } + + JSONObject allmaterialIds = WQL.getWO("PDM_WASTECCHANGE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_code"); JSONArray array = allmaterialIds.getJSONArray("content"); //label:name;value:code List rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE"); @@ -141,6 +148,8 @@ public class WastecchangeServiceImpl implements WastecchangeService { @Override @Transactional(rollbackFor = Exception.class) public void update(JSONObject form) { + WQLObject wasTab = WQLObject.getWQLObject("pdm_bi_wastecchange"); + List rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); JSONObject allData = new JSONObject(); for (String key : rfType) { @@ -150,7 +159,24 @@ public class WastecchangeServiceImpl implements WastecchangeService { form.put("create_name",SecurityUtils.getNickName()); form.put("create_time",DateUtil.now()); form.put("alldata",allData); - WQLObject.getWQLObject("pdm_bi_wastecchange").update(form); + + JSONObject json = wasTab.query("material_id = '" + form.getString("material_id") + "' and tech_type = '" + form.getString("tech_type") + "'").uniqueResult(0); + + if (ObjectUtil.isEmpty(json)) { + form.put("change_id", IdUtil.getSnowflake(1, 1).nextId()); + wasTab.insert(form); + + if (form.getString("tech_type").equals("01")) { + form.put("tech_type","02"); + } else { + form.put("tech_type","01"); + } + + form.put("change_id", IdUtil.getSnowflake(1, 1).nextId()); + wasTab.insert(form); + } else { + wasTab.update(form); + } } @Override @@ -195,6 +221,8 @@ public class WastecchangeServiceImpl implements WastecchangeService { // 2.找软废 String tech_type = whereJson.getString("tech_type"); + if (ObjectUtil.isEmpty(tech_type)) throw new BadRequestException("工艺类型不能为空!"); + for (int i = 0; i < rf_arr.size(); i++) { JSONObject json_rf_type = rf_arr.getJSONObject(i); // 校验修正值必须为 -0.5 ~ 0.5 之间 或者为 99 @@ -247,7 +275,6 @@ public class WastecchangeServiceImpl implements WastecchangeService { } } // 3.更新软废碳平衡修正表 - this.update(whereJson); } 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 81c5afa7..e587ba22 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 @@ -17,6 +17,7 @@ 输入.material_code TYPEAS s_string 输入.class_ids TYPEAS f_string 输入.material_id TYPEAS s_string + 输入.is_emp TYPEAS s_string 输入.code TYPEAS s_string 输入.tech_type TYPEAS s_string 输入.materialIds TYPEAS f_string @@ -70,6 +71,15 @@ OPTION 输入.tech_type <> "" chan.tech_type = 输入.tech_type ENDOPTION + + OPTION 输入.is_emp = "1" + IFNULL(chan.tech_type,'') = '' + ENDOPTION + + OPTION 输入.is_emp = "2" + IFNULL(chan.tech_type,'') <> '' + ENDOPTION + ENDSELECT ENDPAGEQUERY ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java index 0bc36576..6b3fcbd9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java @@ -53,6 +53,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -757,6 +758,7 @@ public class FormulaServiceImpl implements FormulaService { String formula_id = MapUtil.getStr(whereJson, "formula_id"); WQLObject formMstTab = WQLObject.getWQLObject("PDM_BI_Formula"); // 配方主表 + WQLObject formDtlTab = WQLObject.getWQLObject("pdm_bi_formuladtl"); // 配方明细表 WQLObject workTab = WQLObject.getWQLObject("PDM_BI_WorkOrder"); // 工令表 WQLObject deptTab = WQLObject.getWQLObject("sys_dept"); // 部门表 WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表 @@ -828,7 +830,54 @@ public class FormulaServiceImpl implements FormulaService { oneMap.put("para_name", json92jj.getString("para_name")); } } - String masterbucket_qty = jsonMst.getString("masterbucket_qty"); // 开单重量 + + /* + 计算开单重量: + 配方明细中【是否需要配粉】为是的和,其中若为软废,需要乘以物料扩展属性的纯粉系数 + */ + // 1. 找出所有明细 + List jsonDtlAll = formDtlTab.query("formula_id = '" + formula_id + "' and is_need_manage = '1'").getResultJSONArray(0).toJavaList(JSONObject.class); + + if (ObjectUtil.isEmpty(jsonDtlAll)) throw new BadRequestException("开单重量异常,请检查!"); + + // 2.过滤出是物料的 + List jsonDtlAll_mater = jsonDtlAll.stream() + .filter(row -> row.getString("material_type").equals("01")) + .collect(Collectors.toList()); + + // 3.计算物料分类重量 + double class_qty = jsonDtlAll.stream() + .filter(row -> row.getString("material_type").equals("02")) + .collect(Collectors.summarizingDouble(row -> row.getDoubleValue("formula_qty"))) + .getSum(); + + String masterbucket_qty = String.valueOf(class_qty); + try { + for (JSONObject jsonDtl : jsonDtlAll_mater) { + String formula_qty = jsonDtl.getString("formula_qty"); + + // 判断是否是软废 + boolean is_rf = materialbaseService.isAlongMaterType(MaterOptTypeEnum.RF.getCode(), jsonDtl.getString("material_id"), null); + + if (is_rf) { + // 软废:重量*纯粉系数 + String net_rate = materExtTab.query("material_id ='" + jsonDtl.getString("material_id") + "'").uniqueResult(0).getString("net_rate"); + + // 软废纯粉计算 + String rf_qty = NumberUtil.mul(formula_qty, NumberUtil.div(net_rate, "100").toString()).toString(); + + masterbucket_qty = NumberUtil.add(masterbucket_qty,rf_qty).toString(); + } else { + // 直接相加 + masterbucket_qty = NumberUtil.add(masterbucket_qty,formula_qty).toString(); + } + + } + } catch (Exception e) { + throw new BadRequestException("计算有误:"+e.getMessage()); + } + +// String masterbucket_qty = jsonMst.getString("masterbucket_qty"); // 开单重量 JSONObject jsonQM13 = paraTab.query("material_id = '" + material_id + "' and para_code = 'QM013'").uniqueResult(0); JSONObject jsonQM14 = paraTab.query("material_id = '" + material_id + "' and para_code = 'QM014'").uniqueResult(0); JSONObject jsonPW02 = paraTab.query("material_id = '" + material_id + "' and para_code = 'PW002'").uniqueResult(0); diff --git a/mes/qd/src/views/wms/basedata/master/bagrecord/insertAndPrintDialog.vue b/mes/qd/src/views/wms/basedata/master/bagrecord/insertAndPrintDialog.vue index 0eb4f241..31389354 100644 --- a/mes/qd/src/views/wms/basedata/master/bagrecord/insertAndPrintDialog.vue +++ b/mes/qd/src/views/wms/basedata/master/bagrecord/insertAndPrintDialog.vue @@ -6,6 +6,7 @@ width="450px" :before-close="handleClose" destroy-on-close + :close-on-click-modal="false" @close="close" > @@ -33,7 +34,7 @@ - + @@ -41,11 +42,11 @@ - + - + @@ -136,6 +137,14 @@ export default { // 根据单据号查询调用接口获取压制订单内信息 crudBagrecord.blurQueryMater({ 'bill_code': val }).then(res => { this.materialList = res.data + + if (this.materialList.length === 0) { + this.form1.material_code = null + this.form1.pcsn = null + } else { + this.form1.material_code = this.materialList[0].item_code + this.form1.pcsn = this.materialList[0].batch_seq + } }) }, changePcsn(val) { 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 94880125..c2542445 100644 --- a/mes/qd/src/views/wms/basedata/pdm/wastecchange/index.vue +++ b/mes/qd/src/views/wms/basedata/pdm/wastecchange/index.vue @@ -354,8 +354,7 @@ export default { del: false, download: false, reset: true - }, - query: { tech_type: '02' } + } }) }, data() { @@ -392,6 +391,7 @@ export default { this.form.tableData.splice(index, 1, row) // 通过splice 替换数据 触发视图更新 }, confirm(row) { + row.tech_type = this.query.tech_type this.confirm_flg = true crudWastecchange.confirm(row).then(res => { this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) From 0e37af66a392fd57195a726cff0e6f7c1d4c6d11 Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 12 Jul 2023 14:20:11 +0800 Subject: [PATCH 5/6] =?UTF-8?q?rev=EF=BC=9A=E8=BD=AF=E5=BA=9F=E7=AD=89?= =?UTF-8?q?=E7=BA=A7=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/HandNewMaterialServiceImpl.java | 12 ++++++++++++ .../pda/st/set/rest/PdaBucketController.java | 7 +++++++ .../pda/st/set/service/PdaBucketService.java | 5 +++++ .../service/impl/PdaBucketServiceImpl.java | 19 ++++++++++++++++--- .../nl/pda/st/set/wql/QPADSTSETSERVICE.wql | 12 ++++++++++++ 5 files changed, 52 insertions(+), 3 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/in/service/impl/HandNewMaterialServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/in/service/impl/HandNewMaterialServiceImpl.java index 377b2aa1..feb9d64a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/in/service/impl/HandNewMaterialServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/in/service/impl/HandNewMaterialServiceImpl.java @@ -643,6 +643,18 @@ public class HandNewMaterialServiceImpl implements HandNewMaterialService { total_qty = total_qty + bucket_now.getDoubleValue("storage_qty"); } + // 判断等级是否一致 + JSONArray jsonDtlArr = io_dtl.query("iostorinv_id = '" + iostorinv_id + "'").getResultJSONArray(0); + String ivt_level = jsonDtlArr.getJSONObject(0).getString("ivt_level"); + + boolean is_level = jsonDtlArr.stream() + .map(row -> (JSONObject) row) + .allMatch(row -> row.getString("ivt_level").equals(ivt_level)); + + if (!is_level) { + throw new PdaRequestException("库存等级不一致,请检查!"); + } + HashMap mst_map = new HashMap<>(); mst_map.put("total_qty", total_qty + ""); mst_map.put("detail_count", detail_count + ""); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/rest/PdaBucketController.java b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/rest/PdaBucketController.java index e33b9d1e..b5d257f4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/rest/PdaBucketController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/rest/PdaBucketController.java @@ -83,4 +83,11 @@ public class PdaBucketController { public ResponseEntity delete(@RequestBody Map whereJson) { return new ResponseEntity<>(bucketService.delete(whereJson), HttpStatus.OK); } + + @PostMapping("/getLevel") + @Log("获取等级下拉框") + @ApiOperation("获取等级下拉框") + public ResponseEntity delete() { + return new ResponseEntity<>(bucketService.getLevel(), HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/PdaBucketService.java b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/PdaBucketService.java index 2e9e218e..da48f624 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/PdaBucketService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/PdaBucketService.java @@ -53,4 +53,9 @@ public interface PdaBucketService { */ Map delete(Map jsonObject); + /** + * 获取等级下拉框 + * @return / + */ + JSONObject getLevel(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/impl/PdaBucketServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/impl/PdaBucketServiceImpl.java index 6d3bddd1..e9b64c67 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/impl/PdaBucketServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/service/impl/PdaBucketServiceImpl.java @@ -149,6 +149,7 @@ public class PdaBucketServiceImpl implements PdaBucketService { UserDto userDto = userService.findById(currentUserId); String input_optname = mst.getString("user"); String pcsn = mst.getString("pcsn"); + String ivt_level = mst.getString("ivt_level"); if (StrUtil.isEmpty(material_id)) { throw new PdaRequestException("物料标识不能为空!"); @@ -177,7 +178,7 @@ public class PdaBucketServiceImpl implements PdaBucketService { bucketJo.put("pcsn", pcsn); bucketJo.put("qty_unit_id", materDto.getBase_unit_id()); bucketJo.put("qty_unit_name", materDto.getBase_unit_name()); - bucketJo.put("ivt_level", "01"); + bucketJo.put("ivt_level", ivt_level); bucketJo.put("quality_scode", "02"); bucketJo.put("storage_qty", mst.getString("storage_qty")); bucketJo.put("is_active", is_active); @@ -199,7 +200,7 @@ public class PdaBucketServiceImpl implements PdaBucketService { bucketJo.put("pcsn", pcsn); bucketJo.put("qty_unit_id", materDto.getBase_unit_id()); bucketJo.put("qty_unit_name",materDto.getBase_unit_name()); - bucketJo.put("ivt_level", "01"); + bucketJo.put("ivt_level", ivt_level); bucketJo.put("quality_scode", "02"); bucketJo.put("storage_qty", mst.getString("storage_qty")); bucketJo.put("is_active", is_active); @@ -245,7 +246,7 @@ public class PdaBucketServiceImpl implements PdaBucketService { changeObj.put("bucket_code", bucketunique); changeObj.put("material_id", material_id); changeObj.put("pcsn", pcsn); - changeObj.put("ivt_level", "01"); + changeObj.put("ivt_level", ivt_level); changeObj.put("is_active", is_active); changeObj.put("quality_scode", "02"); String change_type_scode = ""; @@ -370,5 +371,17 @@ public class PdaBucketServiceImpl implements PdaBucketService { } + @Override + public JSONObject getLevel() { + + JSONArray resultJSONArray = WQL.getWO("QPADSTSETSERVICE").addParam("flag", "17").process().getResultJSONArray(0); + + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功!"); + returnjo.put("result", resultJSONArray); + return returnjo; + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/wql/QPADSTSETSERVICE.wql b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/wql/QPADSTSETSERVICE.wql index 6a6de55a..0629bb8e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/wql/QPADSTSETSERVICE.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/pda/st/set/wql/QPADSTSETSERVICE.wql @@ -495,3 +495,15 @@ ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "17" + QUERY + SELECT + * + FROM + sys_dict_detail + WHERE + name = 'ST_IVT_LEVEL' + ENDSELECT + ENDQUERY + ENDIF From 1d0ed5679737dc7de40a09664e54f00355ea3f4b Mon Sep 17 00:00:00 2001 From: liuxy Date: Mon, 17 Jul 2023 15:03:27 +0800 Subject: [PATCH 6/6] =?UTF-8?q?add:=E6=B7=B7=E5=90=88=E6=96=99=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/wms/pdm/rest/DailyplanController.java | 7 + .../nl/wms/pdm/service/DailyplanService.java | 6 + .../nl/wms/pdm/service/eum/MaterTypeEnum.java | 43 ++ .../service/impl/DailyplanServiceImpl.java | 478 ++++++++++++++++-- .../wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_2.wql | 207 ++++++++ .../wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_3.wql | 162 ++++++ mes/qd/src/api/wms/pdm/dailyplan.js | 10 +- .../wms/statistics/producttask/index.vue | 35 +- 8 files changed, 888 insertions(+), 60 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/eum/MaterTypeEnum.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_2.wql create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_3.wql diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/rest/DailyplanController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/rest/DailyplanController.java index f5f9f13a..ff942c25 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/rest/DailyplanController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/rest/DailyplanController.java @@ -105,4 +105,11 @@ public class DailyplanController { public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException { dailyplanService.download(whereJson, response); } + + @PostMapping("/querytable") + @Log("查看明细") + @ApiOperation("查看明细") + public ResponseEntity querytable(@RequestBody JSONObject whereJson){ + return new ResponseEntity<>(dailyplanService.querytable(whereJson),HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/DailyplanService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/DailyplanService.java index 1291c52a..3842bd1a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/DailyplanService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/DailyplanService.java @@ -96,4 +96,10 @@ public interface DailyplanService { * @throws IOException */ void download(Map whereJson, HttpServletResponse response) throws IOException; + + /** + * 查看明细 + * @param whereJson / + */ + JSONArray querytable(JSONObject whereJson); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/eum/MaterTypeEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/eum/MaterTypeEnum.java new file mode 100644 index 00000000..02ad1061 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/eum/MaterTypeEnum.java @@ -0,0 +1,43 @@ +package org.nl.wms.pdm.service.eum; + +/** + * 任务状态枚举 + */ +public enum MaterTypeEnum { + // 物料分类 + THW(1, "1503644361664106496", "碳化钨粉"), + GF(2, "1503644362192588800", "钴粉"), + WF(3, "1503644362234531840", "钨粉"), + TF(4, "1503644362788179968", "碳粉"), + RF(5, "1503644362150645760", "软废"), + BY(6, "1503644361974484992", "切削油"), + TJJ(7, "1503644361697660928", "添加剂"), + HG(8, "1503644361571831808", "一般化工"), + PG(9, "1503644362108702720", "PG粉"), + + // 物料id + THG(10, "('1510099925482999808')", "碳化铬 0.8"), + THF(11, "('1510099925420085251')", "碳化钒 0.8"), + THD_THN(12, "('1510099925420085249','1510099925420085250')", "碳化钽,碳化铌"), + + ; + + private int index; + private String id; + private String name; + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + MaterTypeEnum(int index, String id, String name) { + this.index = index; + this.id = id; + this.name = name; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DailyplanServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DailyplanServiceImpl.java index e411e393..28148367 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DailyplanServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DailyplanServiceImpl.java @@ -27,6 +27,7 @@ import org.nl.wms.pcs.service.dto.ProductplanprocDto; import org.nl.wms.pdm.service.DailyplanService; import org.nl.wms.pdm.service.ProducetaskprocService; import org.nl.wms.pdm.service.WorkOrdereService; +import org.nl.wms.pdm.service.eum.MaterTypeEnum; import org.nl.wms.st.core.service.StorPublicService; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; @@ -40,6 +41,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @author Liuxy @@ -143,59 +145,201 @@ public class DailyplanServiceImpl implements DailyplanService { if (StrUtil.isNotEmpty(material_code)) { map.put("material_code", "%" + material_code + "%"); } + String begin_time = map.get("begin_time"); if (StrUtil.isNotEmpty(begin_time)) { map.put("begin_time", begin_time.substring(0,10)+" 00:00:00"); } + String end_time = map.get("end_time"); if (StrUtil.isNotEmpty(end_time)) { map.put("end_time", end_time.substring(0,10)+" 23:59:59"); } - map.put("flag", "7"); - JSONObject jret = WQL.getWO("QPDM_PRODUCTDAILYPLAN").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "WorkOrder2.device_id,WorkOrder2.material_code"); - JSONArray json = jret.getJSONArray("content"); - JSONArray ja = new JSONArray(); - for(int i=0;i jsonThw = arrayMater.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.THW.getId())) + .collect(Collectors.toList()); + + jsonResult.put("sum_qty1",ObjectUtil.isNotEmpty(jsonThw) ? jsonThw.get(0).getDoubleValue("num") : 0); + + // 钴粉 - sum_qty2 + List jsonGf = arrayMater.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.GF.getId())) + .collect(Collectors.toList()); + + jsonResult.put("sum_qty2",ObjectUtil.isNotEmpty(jsonGf) ? jsonGf.get(0).getDoubleValue("num") : 0); + + + // 处理【添加剂】 + // 碳化铬 - sum_qty4 + json.put("material_id", MaterTypeEnum.THG.getId()); + JSONObject jsonThg = WQL.getWO("QPDM_PRODUCTDAILYPLAN_2").addParamMap(json).process().uniqueResult(0); + + jsonResult.put("sum_qty4",ObjectUtil.isNotEmpty(jsonThg) ? jsonThg.getDoubleValue("num") : 0); + + // 碳化钒 - sum_qty5 + json.put("material_id", MaterTypeEnum.THF.getId()); + JSONObject jsonThf = WQL.getWO("QPDM_PRODUCTDAILYPLAN_2").addParamMap(json).process().uniqueResult(0); + + jsonResult.put("sum_qty5",ObjectUtil.isNotEmpty(jsonThf) ? jsonThf.getDoubleValue("num") : 0); + + + // 碳化钽/铌 - sum_qty6 + json.put("material_id", MaterTypeEnum.THD_THN.getId()); + JSONObject jsonThdThn = WQL.getWO("QPDM_PRODUCTDAILYPLAN_2").addParamMap(json).process().uniqueResult(0); + + jsonResult.put("sum_qty6",ObjectUtil.isNotEmpty(jsonThdThn) ? jsonThdThn.getDoubleValue("num") : 0); + + // 处理配方明细物料类型为【物料分类】 -02 + json.put("flag", "3"); + JSONArray arrayClass = WQL.getWO("QPDM_PRODUCTDAILYPLAN_2").addParamMap(json).process().getResultJSONArray(0); + + // 碳粉 - sum_qty7 + List jsonTf = arrayClass.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.TF.getId())) + .collect(Collectors.toList()); + + jsonResult.put("sum_qty7",ObjectUtil.isNotEmpty(jsonTf) ? jsonTf.get(0).getDoubleValue("num"): 0); + + + // 钨粉 - sum_qty8 + List jsonWf = arrayClass.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.WF.getId())) + .collect(Collectors.toList()); + + jsonResult.put("sum_qty8",ObjectUtil.isNotEmpty(jsonWf) ? jsonWf.get(0).getDoubleValue("num") : 0); + + // 原材料合计 - sum_qty9 + String yl_num = NumberUtil.add( + jsonResult.getString("sum_qty1"), + jsonResult.getString("sum_qty2"), + jsonResult.getString("sum_qty4"), + jsonResult.getString("sum_qty5"), + jsonResult.getString("sum_qty6"), + jsonResult.getString("sum_qty7"), + jsonResult.getString("sum_qty8") + ).toString(); + + jsonResult.put("sum_qty9",yl_num); + + /* + * 二次粉 + */ + // PG粉 - sum_qty10 + List jsonPg = arrayMater.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.PG.getId())) + .collect(Collectors.toList()); + + jsonResult.put("sum_qty10",ObjectUtil.isNotEmpty(jsonPg) ? jsonPg.get(0).getDoubleValue("num") : 0); + + // 软废 - sum_qty11 + List jsonRf = arrayMater.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.RF.getId())) + .collect(Collectors.toList()); + + jsonResult.put("sum_qty11",ObjectUtil.isNotEmpty(jsonRf) ? jsonRf.get(0).getDoubleValue("num") : 0); + + /* + * 成型剂 + */ + + // 二次粉和成型剂合计 - sum_qty15 + String tow_num = NumberUtil.add( + jsonResult.getString("sum_qty10"), + jsonResult.getString("sum_qty11") + ).toString(); + + jsonResult.put("sum_qty15",tow_num); + + /* + * 投入汇总 - sum_qty16 + */ + String sum_num = NumberUtil.add( + jsonResult.getString("sum_qty9"), + jsonResult.getString("sum_qty15") + ).toString(); + + jsonResult.put("sum_qty16",sum_num); + + /* + * 产出 + */ + // PG粉重量 - out_qty1 + json.put("flag", "4"); + JSONObject jsonPgOut = WQL.getWO("QPDM_PRODUCTDAILYPLAN_2").addParamMap(json).process().uniqueResult(0); + + jsonResult.put("out_qty1",ObjectUtil.isNotEmpty(jsonPgOut) ? jsonPgOut.getDoubleValue("num") : 0); + + // 残料 - out_qty2 + json.put("flag", "5"); + JSONObject jsonClOut = WQL.getWO("QPDM_PRODUCTDAILYPLAN_2").addParamMap(json).process().uniqueResult(0); + + jsonResult.put("out_qty2",ObjectUtil.isNotEmpty(jsonClOut) ? jsonClOut.getDoubleValue("num") : 0); + + // 产出总重量 - out_qty3 + String out_num = NumberUtil.add( + jsonResult.getString("out_qty1"), + jsonResult.getString("out_qty2") + ).toString(); + + jsonResult.put("out_qty3",out_num); + + /* + * 投入产出比:产出总重量/投入汇总x100% + * - in_num + */ + + if (jsonResult.getDoubleValue("sum_qty16") != 0) { + String in_num = NumberUtil.round(NumberUtil.div(jsonResult.getString("out_qty3"), jsonResult.getString("sum_qty16")), 3).toString(); + jsonResult.put("in_num",NumberUtil.mul(in_num, "100")); + } else { + jsonResult.put("in_num",0); + } + return jsonResult; + } + @Override public JSONArray queryAll(Map whereJson) { HashMap map = new HashMap<>(whereJson); @@ -794,4 +938,252 @@ public class DailyplanServiceImpl implements DailyplanService { } FileUtil.downloadExcel(list, response); } + + @Override + public JSONArray querytable(JSONObject whereJson) { + + // 根据日期、设备查出对应工令 + JSONArray resultJSONArray = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParam("flag", "1") + .addParam("planstart_time", whereJson.getString("workorder_date")) + .addParam("device_code", whereJson.getString("device_code")) + .process().getResultJSONArray(0); + + JSONArray resulArr = new JSONArray(); + for (int i = 0; i < resultJSONArray.size(); i++) { + JSONObject json = resultJSONArray.getJSONObject(i); + + // 调用处理方法 + JSONObject result = fieldHandDtl(json); + resulArr.add(result); + } + + return resulArr; + } + + private JSONObject fieldHandDtl(JSONObject json) { + + WQLObject workTaskTab = WQLObject.getWQLObject("pdm_bi_worktask"); // 工令工序任务表 + WQLObject buckTab = WQLObject.getWQLObject("MD_PB_BucketRecord"); // 桶记录表 + + JSONObject result = new JSONObject(); + + // 配粉日期:配粉工序计划开始时间 - pw_time + JSONObject jsonPf = workTaskTab.query("workorder_id = '" + json.getString("workorder_id") + "' and workprocedure_code = 'GX001'").uniqueResult(0); + + result.put("pw_time",ObjectUtil.isNotEmpty(jsonPf) ? jsonPf.getString("planstart_time").substring(0,10) : ""); + + // 物料编码 - material_code + result.put("material_code",json.getString("material_code")); + + // 牌号 - old_mark + result.put("old_mark",json.getString("old_mark")); + + // 批号 - pcsn + result.put("pcsn",json.getString("pcsn")); + + // 归属部门 + + /* + * 原材料 + * 物料 + */ + JSONArray jsonYl = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParam("flag", "2").addParam("workorder_id", json.getString("workorder_id")).process().getResultJSONArray(0); + + // 碳化钨 - sum_qty1 + List jsonThw = jsonYl.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.THW.getId())) + .collect(Collectors.toList()); + + result.put("sum_qty1",ObjectUtil.isNotEmpty(jsonThw) ? jsonThw.get(0).getDoubleValue("num") : 0); + + // 钴粉 - sum_qty2 + List jsonGf = jsonYl.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.GF.getId())) + .collect(Collectors.toList()); + + result.put("sum_qty2",ObjectUtil.isNotEmpty(jsonGf) ? jsonGf.get(0).getDoubleValue("num") : 0); + + // 镍粉 - sum_qty3 + result.put("sum_qty3",0); + + /* + * 原材料 + * 添加剂 + */ + // 碳化铬 - sum_qty4 + JSONObject param = new JSONObject(); + param.put("workorder_id", json.getString("workorder_id")); + param.put("material_id", MaterTypeEnum.THG.getId()); + param.put("flag", "2"); + + JSONObject jsonThg = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParamMap(param).process().uniqueResult(0); + + result.put("sum_qty4",ObjectUtil.isNotEmpty(jsonThg) ? jsonThg.getDoubleValue("num") : 0); + + // 碳化钒 - sum_qty5 + param.put("material_id", MaterTypeEnum.THF.getId()); + JSONObject jsonThf = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParamMap(param).process().uniqueResult(0); + + result.put("sum_qty5",ObjectUtil.isNotEmpty(jsonThf) ? jsonThf.getDoubleValue("num") : 0); + + // 碳化钽/铌 - sum_qty6 + param.put("material_id", MaterTypeEnum.THD_THN.getId()); + JSONObject jsonThdAndThn = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParamMap(param).process().uniqueResult(0); + + result.put("sum_qty6",ObjectUtil.isNotEmpty(jsonThdAndThn) ? jsonThdAndThn.getDoubleValue("num") : 0); + + /* + * 原材料 + * 物料分类 + */ + JSONArray jsonYlClassType = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParam("flag", "3").addParam("workorder_id", json.getString("workorder_id")).process().getResultJSONArray(0); + + // 碳粉 - sum_qty7 + List jsonTf = jsonYlClassType.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.TF.getId())) + .collect(Collectors.toList()); + + result.put("sum_qty7",ObjectUtil.isNotEmpty(jsonTf) ? jsonTf.get(0).getDoubleValue("num") : 0); + + // 钨粉 - sum_qty8 + List jsonWf = jsonYlClassType.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.WF.getId())) + .collect(Collectors.toList()); + + result.put("sum_qty8",ObjectUtil.isNotEmpty(jsonWf) ? jsonWf.get(0).getDoubleValue("num") : 0); + + // 原材料合计 - sum_qty9 + String sum_qty9 = NumberUtil.add( + result.getString("sum_qty1"), + result.getString("sum_qty2"), + result.getString("sum_qty3"), + result.getString("sum_qty4"), + result.getString("sum_qty5"), + result.getString("sum_qty6"), + result.getString("sum_qty7"), + result.getString("sum_qty8") + ).toString(); + + result.put("sum_qty9",sum_qty9); + + /* + * 二次粉 + */ + // PG粉 - sum_qty10 + List jsonPg = jsonYl.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.PG.getId())) + .collect(Collectors.toList()); + + result.put("sum_qty10",ObjectUtil.isNotEmpty(jsonPg) ? jsonPg.get(0).getDoubleValue("num") : 0); + + // 软废 - sum_qty11 + List jsonRf = jsonYl.stream() + .map(row -> (JSONObject) row) + .filter(row -> row.getString("material_type_id").equals(MaterTypeEnum.RF.getId())) + .collect(Collectors.toList()); + + result.put("sum_qty11",ObjectUtil.isNotEmpty(jsonRf) ? jsonRf.get(0).getDoubleValue("num") : 0); + + /* + * 成型剂 + */ + // PEG2000\PEG - sum_qty12 + result.put("sum_qty12",0); + + // 石蜡/kg - sum_qty13 + result.put("sum_qty13",0); + + // 白油 - sum_qty14 + result.put("sum_qty14",0); + + // 二次粉 + 成型剂 合计 - sum_qty15 + String sum_qty15 = NumberUtil.add( + result.getString("sum_qty10"), + result.getString("sum_qty11"), + result.getString("sum_qty12"), + result.getString("sum_qty13"), + result.getString("sum_qty14") + ).toString(); + + result.put("sum_qty15",sum_qty15); + + // 投入汇总:两次合计 - sum_qty16 + String sum_qty16 = NumberUtil.add( + result.getString("sum_qty9"), + result.getString("sum_qty15") + ).toString(); + + result.put("sum_qty16",sum_qty16); + + /* + * 工序信息 + * 球磨工序 + */ + JSONObject paramGx = new JSONObject(); + paramGx.put("flag", "4"); + paramGx.put("workorder_id", json.getString("workorder_id")); + paramGx.put("workprocedure_code", "GX002"); + JSONObject jsonQm = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParamMap(paramGx).process().uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonQm)) { + // 开工日期: 创建日期 - task_qty1 + result.put("task_qty1",ObjectUtil.isNotEmpty(jsonQm.getString("start_time")) ? jsonQm.getString("start_time").substring(0,10) : ""); + } + + // 设备号 - task_qty2 + result.put("task_qty2",ObjectUtil.isNotEmpty(jsonQm) ? jsonQm.getString("device_code") : ""); + + // 操作人员 - task_qty3 + result.put("task_qty3",ObjectUtil.isNotEmpty(jsonQm) ? jsonQm.getString("start_name") : ""); + + /* + * 工序信息 + * 喷雾工序 + */ + paramGx.put("workprocedure_code", "GX003"); + JSONObject jsonPw = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParamMap(paramGx).process().uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonPw)) { + // 计划日期 - task_qty4 + result.put("task_qty4",ObjectUtil.isNotEmpty(jsonPw) ? jsonPw.getString("planend_time").substring(0,10) : ""); + + // 执行日期 - task_qty5 + result.put("task_qty5",ObjectUtil.isNotEmpty(jsonPw.getString("start_time")) ? jsonPw.getString("start_time").substring(0,10) : ""); + } + + // 设备号 - task_qty6 + result.put("task_qty6",ObjectUtil.isNotEmpty(jsonPw) ? jsonPw.getString("device_code") : ""); + + // 产出Kg: 下线桶记录表汇总 - task_qty7 + paramGx.put("flag", "5"); + JSONObject jsonOut = WQL.getWO("QPDM_PRODUCTDAILYPLAN_3").addParamMap(paramGx).process().uniqueResult(0); + result.put("task_qty7",ObjectUtil.isNotEmpty(jsonOut) ? jsonOut.getDoubleValue("num") : 0); + + // 操作人员 - task_qty8 + result.put("task_qty8",ObjectUtil.isNotEmpty(jsonPw) ? jsonPw.getString("start_name") : ""); + + /* + * 锤磨 压团 制粒 + */ + + /* + * 产出 + */ + // 入库日期 - out_qty1 + JSONObject jsonInTime = buckTab.query("material_id = '" + json.getString("material_id") + "' and pcsn = '" + json.getString("pcsn") + "' order by instor_time").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonInTime)) { + result.put("out_qty1",ObjectUtil.isNotEmpty(jsonInTime.getString("instor_time")) ? jsonInTime.getString("instor_time").substring(0,10) : ""); + } + + // PG粉重量 - out_qty2 + result.put("out_qty2",ObjectUtil.isNotEmpty(jsonOut) ? jsonOut.getDoubleValue("num") : 0); + + return result; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_2.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_2.wql new file mode 100644 index 00000000..42cdce60 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_2.wql @@ -0,0 +1,207 @@ +[交易说明] + 交易名: 混合料场报表分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.material_code TYPEAS s_string + 输入.begin_time TYPEAS s_string + 输入.end_time TYPEAS s_string + 输入.device_id TYPEAS s_string + + 输入.planstart_time TYPEAS s_string + 输入.device_code TYPEAS s_string + 输入.material_id TYPEAS f_string + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + SUBSTRING(workorder.planstart_time,1,10) AS planstart_time, + device.device_code, + MAX(device.device_name) AS device_name + FROM + pdm_bi_workorder workorder + INNER JOIN pdm_bi_worktask workTask ON workTask.workorder_id = workorder.workorder_id AND workTask.workprocedure_code = 'GX003' + INNER JOIN em_bi_deviceinfo device ON workTask.device_id = device.device_id AND device.is_produceuse = '1' + WHERE + device.workprocedure_id = '1472449923327856640' + AND workorder.is_delete = '0' + + OPTION 输入.material_code <> "" + mater.material_code = 输入.material_code + ENDOPTION + + OPTION 输入.device_id <> "" + workorder.device_id = 输入.device_id + ENDOPTION + + OPTION 输入.begin_time <> "" + workorder.planstart_time >= 输入.begin_time + ENDOPTION + + OPTION 输入.end_time <> "" + workorder.planstart_time <= 输入.end_time + ENDOPTION + + GROUP BY planstart_time,device.device_code + + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + SUM(dtl.formula_qty) AS num, + mater.material_type_id, + class.class_name + FROM + pdm_bi_formuladtl dtl + LEFT JOIN pdm_bi_formula mst ON mst.formula_id = dtl.formula_id + LEFT JOIN pdm_bi_workorder workorder ON mst.workorder_id = workorder.workorder_id + INNER JOIN pdm_bi_worktask workTask ON workTask.workorder_id = workorder.workorder_id AND workTask.workprocedure_code = 'GX003' + INNER JOIN em_bi_deviceinfo device ON workTask.device_id = device.device_id AND device.is_produceuse = '1' + LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id + LEFT JOIN md_pb_classstandard class ON mater.material_type_id = class.class_id + WHERE + device.workprocedure_id = '1472449923327856640' + AND workorder.is_delete = '0' + AND mst.is_delete = '0' + AND dtl.material_type = '01' + + OPTION 输入.planstart_time <> "" + SUBSTRING(workorder.planstart_time,1,10) = 输入.planstart_time + ENDOPTION + + OPTION 输入.device_code <> "" + device.device_code = 输入.device_code + ENDOPTION + + OPTION 输入.material_id <> "" + mater.material_id in 输入.material_id + ENDOPTION + + group by mater.material_type_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + SUM(dtl.formula_qty) AS num, + class.class_id AS material_type_id, + class.class_name + FROM + pdm_bi_formuladtl dtl + LEFT JOIN pdm_bi_formula mst ON mst.formula_id = dtl.formula_id + LEFT JOIN pdm_bi_workorder workorder ON mst.workorder_id = workorder.workorder_id + INNER JOIN pdm_bi_worktask workTask ON workTask.workorder_id = workorder.workorder_id AND workTask.workprocedure_code = 'GX003' + INNER JOIN em_bi_deviceinfo device ON workTask.device_id = device.device_id AND device.is_produceuse = '1' + LEFT JOIN md_pb_classstandard class ON dtl.material_id = class.class_id + WHERE + device.workprocedure_id = '1472449923327856640' + AND workorder.is_delete = '0' + AND mst.is_delete = '0' + AND dtl.material_type = '02' + + OPTION 输入.planstart_time <> "" + SUBSTRING(workorder.planstart_time,1,10) = 输入.planstart_time + ENDOPTION + + OPTION 输入.device_code <> "" + device.device_code = 输入.device_code + ENDOPTION + + group by class.class_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + SUM(ne.qty) AS num + FROM + PDM_BI_ProcedureOffline ne + LEFT JOIN pdm_bi_workorder workorder ON ne.workorder_id = workorder.workorder_id + LEFT JOIN md_pb_bucketrecord buck ON ne.bucketunique = buck.bucketunique + INNER JOIN pdm_bi_worktask workTask ON workTask.workorder_id = workorder.workorder_id AND workTask.workprocedure_code = 'GX003' + INNER JOIN em_bi_deviceinfo device ON workTask.device_id = device.device_id AND device.is_produceuse = '1' + WHERE + device.workprocedure_id = '1472449923327856640' + AND workorder.is_delete = '0' + AND buck.quality_scode <> '02' + + OPTION 输入.planstart_time <> "" + SUBSTRING(workorder.planstart_time,1,10) = 输入.planstart_time + ENDOPTION + + OPTION 输入.device_code <> "" + device.device_code = 输入.device_code + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + SUM(buck.storage_qty) AS num + FROM + md_pb_bucketrecord buck + LEFT JOIN pdm_bi_workorder workorder ON buck.material_id = workorder.material_id AND buck.pcsn = workorder.pcsn + INNER JOIN pdm_bi_worktask workTask ON workTask.workorder_id = workorder.workorder_id AND workTask.workprocedure_code = 'GX003' + INNER JOIN em_bi_deviceinfo device ON workTask.device_id = device.device_id AND device.is_produceuse = '1' + WHERE + device.workprocedure_id = '1472449923327856640' + AND workorder.is_delete = '0' + AND buck.quality_scode = '02' + + OPTION 输入.planstart_time <> "" + SUBSTRING(workorder.planstart_time,1,10) = 输入.planstart_time + ENDOPTION + + OPTION 输入.device_code <> "" + device.device_code = 输入.device_code + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_3.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_3.wql new file mode 100644 index 00000000..af880269 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/QPDM_PRODUCTDAILYPLAN_3.wql @@ -0,0 +1,162 @@ +[交易说明] + 交易名: 混合料场报表明细查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.planstart_time TYPEAS s_string + 输入.device_code TYPEAS s_string + + 输入.workorder_id TYPEAS s_string + 输入.material_id TYPEAS f_string + + 输入.workprocedure_code TYPEAS s_string + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + workorder.*, + mater.material_code, + ext.old_mark + FROM + pdm_bi_workorder workorder + INNER JOIN pdm_bi_worktask workTask ON workTask.workorder_id = workorder.workorder_id AND workTask.workprocedure_code = 'GX003' + INNER JOIN em_bi_deviceinfo device ON workTask.device_id = device.device_id AND device.is_produceuse = '1' + INNER JOIN md_me_materialbase mater ON workTask.material_id = mater.material_id + INNER JOIN MD_ME_ProducMaterialExt ext ON ext.material_id = mater.material_id + WHERE + device.workprocedure_id = '1472449923327856640' + AND workorder.is_delete = '0' + + OPTION 输入.planstart_time <> "" + SUBSTRING(workorder.planstart_time,1,10) = 输入.planstart_time + ENDOPTION + + OPTION 输入.device_code <> "" + device.device_code = 输入.device_code + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + SUM(dtl.formula_qty) AS num, + mater.material_type_id + FROM + pdm_bi_formuladtl dtl + LEFT JOIN pdm_bi_formula mst ON mst.formula_id = dtl.formula_id + LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id + WHERE + dtl.material_type = '01' + + OPTION 输入.workorder_id <> "" + mst.workorder_id = 输入.workorder_id + ENDOPTION + + OPTION 输入.material_id <> "" + dtl.material_id in 输入.material_id + ENDOPTION + + group by mater.material_type_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + SUM(dtl.formula_qty) AS num, + class.class_id AS material_type_id + FROM + pdm_bi_formuladtl dtl + LEFT JOIN pdm_bi_formula mst ON mst.formula_id = dtl.formula_id + LEFT JOIN md_pb_classstandard class ON class.class_id = dtl.material_id + WHERE + dtl.material_type = '02' + + OPTION 输入.workorder_id <> "" + mst.workorder_id = 输入.workorder_id + ENDOPTION + + group by class.class_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + workTask.*, + device.device_code + FROM + pdm_bi_worktask workTask + LEFT JOIN em_bi_deviceinfo device ON device.device_id = workTask.device_id + WHERE + 1 = 1 + + OPTION 输入.workorder_id <> "" + workTask.workorder_id = 输入.workorder_id + ENDOPTION + + OPTION 输入.workprocedure_code <> "" + workTask.workprocedure_code = 输入.workprocedure_code + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + SUM(qty) AS num + FROM + PDM_BI_ProcedureOffline + WHERE + 1 = 1 + + OPTION 输入.workorder_id <> "" + workorder_id = 输入.workorder_id + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/mes/qd/src/api/wms/pdm/dailyplan.js b/mes/qd/src/api/wms/pdm/dailyplan.js index 601f3fe3..d4cfd893 100644 --- a/mes/qd/src/api/wms/pdm/dailyplan.js +++ b/mes/qd/src/api/wms/pdm/dailyplan.js @@ -54,4 +54,12 @@ export function query2(params) { params }) } -export default { add, edit, del, importExcel, query2, submit, submit2 } + +export function querytable(data) { + return request({ + url: 'api/dailyplan/querytable', + method: 'post', + data + }) +} +export default { add, edit, del, importExcel, query2, submit, submit2, querytable } diff --git a/mes/qd/src/views/wms/statistics/producttask/index.vue b/mes/qd/src/views/wms/statistics/producttask/index.vue index 1e9e51ee..ba488fb6 100644 --- a/mes/qd/src/views/wms/statistics/producttask/index.vue +++ b/mes/qd/src/views/wms/statistics/producttask/index.vue @@ -66,7 +66,7 @@ @@ -107,8 +107,8 @@ - - + + @@ -139,25 +139,25 @@ - - - + + + - - - + + + - + - - - + + + - + @@ -224,6 +224,7 @@ export default { this.crud.query.end_time = (new Date().daysLater(0)).strftime('%F', 'zh') this.query_flag = false } + this.tableDtl = [] return true }, hand(value) { @@ -251,8 +252,10 @@ export default { } this.crud.toQuery() }, - querytable() { - this.crud.toQuery() + querytable(index, row) { + dailyplan.querytable(row).then(res => { + this.tableDtl = res + }) } } }