From 565878bde393e9f9a05574bea09756da70634e35 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 19 Mar 2024 14:29:56 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A1.=E5=8F=91=E8=B4=A7=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E4=B8=8D=E8=83=BD=E5=BC=BA=E6=8E=A7=E4=BC=98=E5=8C=96?= =?UTF-8?q?2.=E5=87=BA=E5=BA=93=E5=AE=9E=E9=99=85=E9=87=8D=E9=87=8F?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9C=9F=E6=98=AF=E5=8F=91=E8=B4=A7=E9=87=8D?= =?UTF-8?q?=E9=87=8F3.B=E5=BC=80=E5=A4=B4=E5=AD=90=E5=8D=B7=E4=BF=9D?= =?UTF-8?q?=E8=B4=A8=E6=9C=9F=E4=B8=BA180=E5=A4=A9=E4=BC=98=E5=8C=964.?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E4=BF=A1=E6=81=AF=E5=9B=9E=E4=BC=A0sap?= =?UTF-8?q?=E4=BC=98=E5=8C=965.=E5=BA=93=E5=AD=98=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E4=BC=98=E5=8C=966.=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BB=93=E4=BD=8D=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/StructattrServiceImpl.java | 28 +++- .../wms/basedata/st/wql/QST_STRUCT_ATTR.wql | 14 ++ .../java/org/nl/wms/basedata/st/wql/stivt.xls | Bin 326144 -> 325632 bytes .../inbill/service/CheckOutBillService.java | 8 + .../outbill/rest/CheckOutBillController.java | 7 + .../service/impl/CheckOutBillServiceImpl.java | 142 +++++++++++++++--- .../st/outbill/wql/QST_IVT_CHECKOUTBILL.wql | 40 ++++- .../org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql | 12 +- .../src/views/wms/basedata/st/ivt/index.vue | 2 +- .../basedata/st/struct/OneCreateDialog.vue | 10 +- .../src/views/wms/st/outbill/DivDialog.vue | 52 ++++++- .../src/views/wms/st/outbill/checkoutbill.js | 9 +- .../src/views/wms/st/outbill/index.vue | 6 +- 13 files changed, 285 insertions(+), 45 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java index e7bd880af..3fe0b3eef 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java @@ -28,10 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.BiConsumer; import java.util.stream.Collectors; @@ -541,8 +538,9 @@ public class StructattrServiceImpl implements StructattrService { int createNum = whereJson.getIntValue("num"); // 开始生成数 int createNum_start = 1; + // 前缀 - String prefix = whereJson.getString("prefix"); + String prefix = ""; if (ObjectUtil.isNotEmpty(jsonAttr)) { String struct_code = jsonAttr.getString("struct_code"); @@ -559,6 +557,21 @@ public class StructattrServiceImpl implements StructattrService { createNum_start += Integer.parseInt(result); prefix = struct_code.substring(0, firstIndex); + } else { + // 截取第一个 - 之前的数据集合 + + List attrList = WQL.getWO("QST_STRUCT_ATTR").addParam("flag", "2").process() + .getResultJSONArray(0).toJavaList(JSONObject.class); + + List subStringList = attrList.stream() + .filter(row -> row.getString("struct_code").contains("-")) + .map(row -> row.getString("struct_code").substring(0, row.getString("struct_code").indexOf("-"))) + .distinct() + .sorted() + .filter(row -> row.matches("-?\\d+(\\.\\d+)?")) + .collect(Collectors.toList()); + + prefix = String.valueOf(Integer.parseInt(subStringList.get(subStringList.size() - 1)) + 1); } /* @@ -651,13 +664,16 @@ public class StructattrServiceImpl implements StructattrService { /* * 判断前缀是否存在 */ - List attrList = attrTab.query("1 = 1").getResultJSONArray(0).toJavaList(JSONObject.class); + List attrList = WQL.getWO("QST_STRUCT_ATTR").addParam("flag", "2").process() + .getResultJSONArray(0).toJavaList(JSONObject.class); // 截取第一个 - 之前的数据集合 List subStringList = attrList.stream() .filter(row -> row.getString("struct_code").contains("-")) .map(row -> row.getString("struct_code").substring(0, row.getString("struct_code").indexOf("-"))) .distinct() + .sorted() + .filter(row -> row.matches("-?\\d+(\\.\\d+)?")) .collect(Collectors.toList()); // 判断是否有相同的前缀 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCT_ATTR.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCT_ATTR.wql index a90e95868..29a15aa70 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCT_ATTR.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCT_ATTR.wql @@ -86,5 +86,19 @@ ENDPAGEQUERY ENDIF + IF 输入.flag = "2" + QUERY + SELECT + struct.* + FROM + st_ivt_structattr struct + LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = struct.sect_id + WHERE + sect.sect_type_attr = '09' + + ENDSELECT + ENDQUERY + ENDIF + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index 2a54c742cb043466b72cdbc2d34010b21224574c..706870f4826956cedb429850ca3986cd8d6aa628 100644 GIT binary patch delta 39632 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 Yy| updataIsOverdue(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(checkOutBillService.updataIsOverdue(whereJson),HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index 35440c6c6..185fbcb52 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -1022,6 +1022,32 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { FileUtil.downloadExcel(list, response); } + @Override + public JSONObject updataIsOverdue(JSONObject whereJson) { + // 出入库主表 + WQLObject mstTab = WQLObject.getWQLObject("st_ivt_iostorinv"); + // 出入库分配明细表 + WQLObject disTab = WQLObject.getWQLObject("st_ivt_iostorinvdis"); + + // 更新主表 + JSONObject jsonMst = mstTab.query("iostorinv_id = '" + whereJson.getString("iostorinv_id") + "'").uniqueResult(0); + jsonMst.put("is_overdue", whereJson.getString("is_overdue")); + mstTab.update(jsonMst); + + // 计算超期数量 + List disList = disTab.query("iostorinvdtl_id = '" + whereJson.getString("iostorinvdtl_id") + "' AND is_overdue = '1'") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + double overdue_qyt = disList.stream() + .map(row -> row.getDoubleValue("plan_qty")) + .reduce(Double::sum).orElse(0.00); + + JSONObject result = new JSONObject(); + result.put("overdue_qyt",overdue_qyt); + result.put("mst", jsonMst); + return result; + } + @Override @Transactional(rollbackFor = Exception.class) public void update(JSONObject whereJson) { @@ -1290,11 +1316,12 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("work_status", "00"); } - // 判断是否超期 - if (ivt2.getString("is_overdue").equals("1")) { - dtl.put("work_status", "01"); + if (jo_mst.getString("is_overdue").equals("1")) { + // 判断是否超期 + if (ivt2.getString("is_overdue").equals("1")) { + dtl.put("work_status", "01"); + } } - wo_dis.insert(dtl); } //记录需锁定的仓位 @@ -1358,9 +1385,12 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } // 判断是否超期 - if (jsonIvt.getString("is_overdue").equals("1")) { - dtl.put("work_status", "01"); + if (jo_mst.getString("is_overdue").equals("1")) { + if (jsonIvt.getString("is_overdue").equals("1")) { + dtl.put("work_status", "01"); + } } + wo_dis.insert(dtl); //记录需锁定的仓位 (如果此明细有相同物料的且子卷号不能为空的则在最后一个明细分配完成后锁定仓位) @@ -1534,6 +1564,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("is_issued", "0"); dtl.put("plan_qty", ivt2.getDoubleValue("change_qty")); dtl.put("real_qty", ivt2.getDoubleValue("change_qty")); + dtl.put("is_overdue", ivt2.getString("is_overdue")); dtl.put("instorage_time", ivt2.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt2.getString("sect_id") + "'").uniqueResult(0); @@ -1542,6 +1573,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } else { dtl.put("work_status", "00"); } + + if (jo_mst.getString("is_overdue").equals("1")) { + // 判断是否超期 + if (ivt2.getString("is_overdue").equals("1")) { + dtl.put("work_status", "01"); + } + } + wo_dis.insert(dtl); } //记录需锁定的仓位 @@ -1594,6 +1633,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("is_issued", "0"); dtl.put("plan_qty", jsonIvt.getDoubleValue("change_qty")); dtl.put("real_qty", jsonIvt.getDoubleValue("change_qty")); + dtl.put("is_overdue", jsonIvt.getString("is_overdue")); dtl.put("instorage_time", jsonIvt.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + jsonIvt.getString("sect_id") + "'").uniqueResult(0); @@ -1602,6 +1642,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } else { dtl.put("work_status", "00"); } + + if (jo_mst.getString("is_overdue").equals("1")) { + // 判断是否超期 + if (jsonIvt.getString("is_overdue").equals("1")) { + dtl.put("work_status", "01"); + } + } + wo_dis.insert(dtl); //记录需锁定的仓位 Struct_map.put(jsonIvt.getString("struct_id"), jsonIvt); @@ -1658,6 +1706,8 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { json.put("is_issued", "0"); json.put("plan_qty", ivt.getDoubleValue("change_qty")); json.put("real_qty", ivt.getDoubleValue("change_qty")); + json.put("is_overdue", ivt.getString("is_overdue")); + json.put("instorage_time", ivt.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt.getString("sect_id") + "'").uniqueResult(0); if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { @@ -1665,6 +1715,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } else { json.put("work_status", "00"); } + + // 判断是否超期 + if (jo_mst.getString("is_overdue").equals("1")) { + if (ivt.getString("is_overdue").equals("1")) { + json.put("work_status", "01"); + } + } + wo_dis.insert(json); // 更新明细 @@ -4384,6 +4442,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("is_issued", "0"); dtl.put("plan_qty", ivt.getDoubleValue("change_qty")); dtl.put("real_qty", ivt.getDoubleValue("change_qty")); + dtl.put("is_overdue", ivt.getString("is_overdue")); dtl.put("instorage_time", ivt.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt.getString("sect_id") + "'").uniqueResult(0); @@ -4392,6 +4451,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } else { dtl.put("work_status", "00"); } + + // 判断是否超期 + if (jo_mst.getString("is_overdue").equals("1")) { + if (ivt.getString("is_overdue").equals("1")) { + dtl.put("work_status", "01"); + } + } + wo_dis.insert(dtl); //记录需锁定的仓位 Struct_map.put(ivt.getString("struct_id"), ivt); @@ -4453,6 +4520,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { json.put("is_issued", "0"); json.put("plan_qty", ivt.getDoubleValue("change_qty")); json.put("real_qty", ivt.getDoubleValue("change_qty")); + json.put("is_overdue", ivt.getString("is_overdue")); json.put("instorage_time", ivt.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt.getString("sect_id") + "'").uniqueResult(0); @@ -4461,6 +4529,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } else { json.put("work_status", "00"); } + + // 判断是否超期 + if (jo_mst.getString("is_overdue").equals("1")) { + if (ivt.getString("is_overdue").equals("1")) { + json.put("work_status", "01"); + } + } + wo_dis.insert(json); // 更新明细 @@ -4585,8 +4661,12 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dis.put("bill_code", jo_mst.getString("bill_code")); dis.put("bill_table", "ST_IVT_IOStorInv"); - if (dis.getString("is_overdue").equals("1")) { - storPublicService.IOStor(dis, "12"); + if (jo_mst.getString("is_overdue").equals("1")) { + if (dis.getString("is_overdue").equals("1")) { + storPublicService.IOStor(dis, "12"); + } else { + storPublicService.IOStor(dis, "21"); + } } else { storPublicService.IOStor(dis, "21"); } @@ -4596,15 +4676,23 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { from_start.put("struct_id", dis.getString("struct_id")); from_start.put("lock_type", "1"); from_start.put("is_overdue", dis.getString("is_overdue")); - if (dis.getString("is_overdue").equals("1")) { - from_start.put("storagevehicle_code", dis.getString("box_no")); + + if (jo_mst.getString("is_overdue").equals("1")) { + if (dis.getString("is_overdue").equals("1")) { + from_start.put("storagevehicle_code", dis.getString("box_no")); + } else { + from_start.put("storagevehicle_code", ""); + } } else { from_start.put("storagevehicle_code", ""); } + storPublicService.updateStructAndPoint(from_start); - if (dis.getString("is_overdue").equals("1")) { - continue; + if (jo_mst.getString("is_overdue").equals("1")) { + if (dis.getString("is_overdue").equals("1")) { + continue; + } } //查询对应明细 @@ -4664,7 +4752,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } JSONObject mst_row = mst_wql.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0); - JSONArray dis_rows = dis_wql.query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0); + + JSONArray dis_rows = new JSONArray(); + + if (jo_mst.getString("is_overdue").equals("1")) { + dis_rows = dis_wql.query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0); + } else { + dis_rows = dis_wql.query("iostorinv_id = '" + iostorinv_id + "'").getResultJSONArray(0); + } //生成手工入库单 String new_iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; @@ -4767,7 +4862,13 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { if ("1003".equals(out_jo.getString("bill_type")) || "1006".equals(out_jo.getString("bill_type"))) { //如果为返检出库或者改切出库删除对应的包装关系 - JSONArray dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0); + JSONArray dis_rows = new JSONArray(); + if (jo_mst.getString("is_overdue").equals("1")) { + dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0); + } else { + dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "'").getResultJSONArray(0); + } + for (int i = 0; i < dis_rows.size(); i++) { JSONObject dis_row = dis_rows.getJSONObject(i); String sect_code = dis_row.getString("sect_code"); @@ -5329,12 +5430,15 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // 回传sap JSONObject jsonMst = mstTab.query("iostorinv_id = '" + whereJson.getString("iostorinv_id") + "'").uniqueResult(0); - JSONArray jsonArr = new JSONArray(); - jsonArr.add(jsonMst); + // 判断单据是否是完成状态:只回传完成状态的单据 + if (jsonMst.getString("bill_status").equals("99")) { + JSONArray jsonArr = new JSONArray(); + jsonArr.add(jsonMst); - JSONObject param = new JSONObject(); - param.put("rows", jsonArr); - inAndOutReturnService.uploadSAP(param); + JSONObject param = new JSONObject(); + param.put("rows", jsonArr); + inAndOutReturnService.uploadSAP(param); + } } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql index 9f3c310f5..7a3c9cb0f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql @@ -97,6 +97,7 @@ cu.cust_simple_name, a.plan_qty, attr.stor_name AS out_stor_name + FROM ST_IVT_IOStorInv ios LEFT JOIN md_cs_customerbase cu ON ios.cust_code = cu.cust_code @@ -106,15 +107,32 @@ LEFT JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND dis.box_no = sub.package_box_sn AND sub.bill_code = ios.bill_code LEFT JOIN ( SELECT - SUM(a.assign_qty) AS plan_qty, + SUM(a.plan_qty) AS plan_qty, a.iostorinv_id FROM - st_ivt_iostorinvdtl a + st_ivt_iostorinvdis a LEFT JOIN ST_IVT_IOStorInv b ON a.iostorinv_id = b.iostorinv_id WHERE b.io_type = '1' and b.is_delete='0' + and a.is_overdue = '0' + and b.is_overdue = '1' GROUP BY a.iostorinv_id + + UNION + + SELECT + SUM(a.plan_qty) AS plan_qty, + a.iostorinv_id + FROM + st_ivt_iostorinvdis a + LEFT JOIN ST_IVT_IOStorInv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '1' + and b.is_delete='0' + and b.is_overdue = '0' + GROUP BY a.iostorinv_id + ) a ON a.iostorinv_id = ios.iostorinv_id WHERE ios.io_type = '1' @@ -369,7 +387,14 @@ struct.storagevehicle_id, struct.storagevehicle_code, point.point_id, - sub.sap_pcsn + sub.sap_pcsn, + CASE + WHEN SUBSTRING(sub.container_name,1,1) = 'B' AND DATEDIFF( NOW(), sub.date_of_production ) > '180' + THEN '1' + WHEN SUBSTRING(sub.container_name,1,1) != 'B' AND DATEDIFF( NOW(), sub.date_of_production ) > '90' + THEN '1' + ELSE '0' + END AS is_overdue FROM ST_IVT_StructIvt ivt LEFT JOIN st_ivt_structattr struct ON struct.struct_id = ivt.struct_id @@ -437,7 +462,14 @@ struct.storagevehicle_id, struct.storagevehicle_code, point.point_id, - sub.sap_pcsn + sub.sap_pcsn, + CASE + WHEN SUBSTRING(sub.container_name,1,1) = 'B' AND DATEDIFF( NOW(), sub.date_of_production ) > '180' + THEN '1' + WHEN SUBSTRING(sub.container_name,1,1) != 'B' AND DATEDIFF( NOW(), sub.date_of_production ) > '90' + THEN '1' + ELSE '0' + END AS is_overdue FROM ST_IVT_StructIvt ivt2 LEFT JOIN st_ivt_structattr struct ON struct.struct_id = ivt2.struct_id diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql index ebd2006ad..189f4aaed 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql @@ -62,7 +62,11 @@ attr.struct_name, attr.struct_code, CASE - WHEN DATEDIFF( NOW(), sub.date_of_production ) > '90' THEN '1' ELSE '0' + WHEN SUBSTRING(sub.container_name,1,1) = 'B' AND DATEDIFF( NOW(), sub.date_of_production ) > '180' + THEN '1' + WHEN SUBSTRING(sub.container_name,1,1) != 'B' AND DATEDIFF( NOW(), sub.date_of_production ) > '90' + THEN '1' + ELSE '0' END AS is_overdue FROM ST_IVT_StructIvt ivt @@ -164,7 +168,11 @@ attr.struct_name, attr.struct_code, CASE - WHEN DATEDIFF( NOW(), sub.date_of_production ) > '90' THEN '1' ELSE '0' + WHEN SUBSTRING(sub.container_name,1,1) = 'B' AND DATEDIFF( NOW(), sub.date_of_production ) > '180' + THEN '1' + WHEN SUBSTRING(sub.container_name,1,1) != 'B' AND DATEDIFF( NOW(), sub.date_of_production ) > '90' + THEN '1' + ELSE '0' END AS is_overdue FROM ST_IVT_StructIvt ivt diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue b/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue index 5c7ff08f1..329ee1879 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue @@ -241,7 +241,7 @@ - + diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/struct/OneCreateDialog.vue b/lms/nladmin-ui/src/views/wms/basedata/st/struct/OneCreateDialog.vue index 5d77938be..f4b5ff0a7 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/struct/OneCreateDialog.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/st/struct/OneCreateDialog.vue @@ -25,11 +25,11 @@ - + @@ -126,10 +126,6 @@ export default { return this.crud.notify('库区不能为空', CRUD.NOTIFICATION_TYPE.INFO) } - if (this.formMst.prefix === '') { - return this.crud.notify('前缀不能为空', CRUD.NOTIFICATION_TYPE.INFO) - } - if (this.formMst.num === '') { return this.crud.notify('数量不能为空', CRUD.NOTIFICATION_TYPE.INFO) } diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue index 2f9a18098..0b07484ed 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue @@ -143,6 +143,7 @@ 是否异常出库 + + + + + @@ -227,6 +243,7 @@ style="width: 100%;" max-height="400" size="mini" + :row-style="rowStyle" border :highlight-current-row="true" :header-cell-style="{background:'#f5f7fa',color:'#606266'}" @@ -256,7 +273,7 @@ - + @@ -268,7 +285,7 @@ - + @@ -338,7 +355,8 @@ export default { invtypelist: [], pointList: [], rules: { - } + }, + overdue_qyt: 0 } }, watch: { @@ -459,6 +477,7 @@ export default { deleteRow(row) { checkoutbill.oneCancel(row).then(res => { this.queryTableDtl() + this.updataIsOverdue() }) }, handleDtlCurrentChange(current) { @@ -517,6 +536,7 @@ export default { checkoutbill.allDiv(this.mstrow).then(res => { this.crud.notify('分配成功!', CRUD.NOTIFICATION_TYPE.INFO) this.queryTableDtl() + this.updataIsOverdue() this.loadingAlldiv = false }).catch(() => { this.loadingAlldiv = false @@ -532,6 +552,7 @@ export default { this.mstrow.iostorinvdtl_id = this.currentRow.iostorinvdtl_id checkoutbill.allDivOne(this.mstrow).then(res => { this.queryTableDtl() + this.updataIsOverdue() this.loadingAutodiv = false }).catch(() => { this.loadingAutodiv = false @@ -542,6 +563,7 @@ export default { this.loadingAlldiv = true checkoutbill.allCancel(this.mstrow).then(res => { this.queryTableDtl() + this.updataIsOverdue() this.loadingAlldiv = false }).catch(() => { this.loadingAlldiv = false @@ -553,6 +575,7 @@ export default { checkoutbill.allCancel(this.currentRow).then(res => { this.queryTableDtl() this.loadingAlldiv = false + this.updataIsOverdue() }).catch(() => { this.loadingAlldiv = false }) @@ -673,6 +696,10 @@ export default { this.tableDtl = res }) }, + queryTableDtl2() { + this.queryTableDtl() + this.updataIsOverdue() + }, queryTableDdis(iostorinvdtl_id) { checkoutbill.getOutBillDis2({ 'iostorinvdtl_id': iostorinvdtl_id, 'bill_status': '01' }).then(res => { this.tabledis = res @@ -689,6 +716,23 @@ export default { return 'background: yellow' } } + }, + rowStyle({ row, rowIndex }) { + const stylejson = {} + + if (this.rowmst.is_overdue === '1') { + if (row.is_overdue === '1') { + stylejson.background = '#f3f071' + return stylejson + } + } + }, + updataIsOverdue() { + this.rowmst.iostorinvdtl_id = this.currentRow.iostorinvdtl_id + checkoutbill.updataIsOverdue(this.rowmst).then(res => { + this.overdue_qyt = res.overdue_qyt + this.rowmst = res.mst + }) } } } diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js b/lms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js index f63c48161..289a2d586 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js +++ b/lms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js @@ -241,4 +241,11 @@ export function outReturn(data) { data }) } -export default { add, edit, del, allDiv, allCancel, getOutBillDtl, getOutBillDis, getOutBillDis2, setPoint, oneSetPoint, getOutBillTask, getStructIvt, manualDiv, confirm, issueTask, finishTask, cancleTaskfinish, getInvTypes, paramByCodeType, schAreaType, backConfirm, getOutBillDisDtl, getType, allDivOne, moneySubmit, getDisNum, queryBox, getOutBillTask2, oneCancel, cancelTask, allSetPoint, oneSetPoint2, outReturn } +export function updataIsOverdue(data) { + return request({ + url: '/api/checkoutbill/updataIsOverdue', + method: 'post', + data + }) +} +export default { add, edit, del, allDiv, allCancel, getOutBillDtl, getOutBillDis, getOutBillDis2, setPoint, oneSetPoint, getOutBillTask, getStructIvt, manualDiv, confirm, issueTask, finishTask, cancleTaskfinish, getInvTypes, paramByCodeType, schAreaType, backConfirm, getOutBillDisDtl, getType, allDivOne, moneySubmit, getDisNum, queryBox, getOutBillTask2, oneCancel, cancelTask, allSetPoint, oneSetPoint2, outReturn, updataIsOverdue } diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/index.vue b/lms/nladmin-ui/src/views/wms/st/outbill/index.vue index 8362bc70a..36df88fc5 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/outbill/index.vue @@ -319,6 +319,7 @@ + @@ -375,7 +376,7 @@ export default { }, mixins: [presenter(), header(), crud()], // 数据字典 - dicts: ['io_bill_status', 'ST_CREATE_MODE', 'ST_INV_OUT_TYPE', 'is_upload'], + dicts: ['io_bill_status', 'ST_CREATE_MODE', 'ST_INV_OUT_TYPE', 'is_upload', 'IS_OR_NOT'], data() { return { height: document.documentElement.clientHeight - 180 + 'px;', @@ -510,6 +511,9 @@ export default { create_modeFormat(row) { return this.dict.label.ST_CREATE_MODE[row.create_mode] }, + isOverdue(row) { + return this.dict.label.IS_OR_NOT[row.is_overdue] + }, handleCurrentChange(current) { if (current === null) { this.dis_flag = true