From 2c804c1a19026454a9fbbd660af1feec339352e6 Mon Sep 17 00:00:00 2001 From: liuxy Date: Fri, 22 Dec 2023 16:03:54 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A=E5=85=B0=E5=B7=9E=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/basedata/st/wql/QST_STRUCTIVT001.wql | 2 +- .../java/org/nl/wms/sch/AutoQueryEnum.java | 32 + .../nl/wms/sch/manage/AUTOQUERYBILLINFO.wql | 407 ++++++++++- .../wms/sch/manage/AutoQueryProudDayData.java | 477 ++++++++----- .../sch/manage/AutoQueryProudDayDataTest.java | 570 +++++++++++++++ .../java/org/nl/wms/sch/manage/TEST0001.wql | 660 ++++++++++++++++++ .../service/impl/CheckOutBillServiceImpl.java | 14 +- .../st/outbill/wql/QST_IVT_CHECKOUTBILL.wql | 64 +- .../src/views/wms/st/outbill/index.vue | 6 +- 9 files changed, 2031 insertions(+), 201 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/AutoQueryEnum.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryProudDayDataTest.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TEST0001.wql diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql index 5c7e6b9ca..5716e3941 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql @@ -205,7 +205,7 @@ case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then plan.FRP_description end AS paper_name, sub.thickness_request, sub.box_weight, - sub.sales_owner + cust.sales_owner FROM ST_IVT_StructIvt ivt LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AutoQueryEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AutoQueryEnum.java new file mode 100644 index 000000000..f9c71f53d --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AutoQueryEnum.java @@ -0,0 +1,32 @@ +package org.nl.wms.sch; + +/** + * 仓库枚举 + */ +public enum AutoQueryEnum { + AC01("01", "兰州一期仓库", "1582991156504039424"), + BC01("02", "兰州二期仓库", "1582991156504039455"), + WK01("03", "东莞仓库", "1597073830499717120"); + + private String name; + private String code; + private String id; + + private AutoQueryEnum(String code, String name, String id) { + this.code = code; + this.name = name; + this.id = id; + } + + public String getName() { + return name; + } + + public String getCode() { + return code; + } + + public String getId() { + return id; + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AUTOQUERYBILLINFO.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AUTOQUERYBILLINFO.wql index dac997a0b..8bbb29943 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AUTOQUERYBILLINFO.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AUTOQUERYBILLINFO.wql @@ -166,7 +166,8 @@ QUERY SELECT SUM( dis.plan_qty ) / 1000 AS num, - sub.customer_name + sub.customer_name, + attr.stor_id FROM ( SELECT MIN( a.iostorinvdis_id ) AS iostorinvdis_id @@ -188,6 +189,7 @@ LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = dis.struct_id WHERE mst.is_delete = '0' AND mst.io_type = '0' @@ -198,7 +200,7 @@ AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time - GROUP BY sub.customer_name + GROUP BY sub.customer_name,attr.stor_id ENDSELECT ENDQUERY @@ -208,7 +210,8 @@ QUERY SELECT SUM( dis.plan_qty ) / 1000 AS num, - sub.customer_name + sub.customer_name, + attr.stor_id FROM ( SELECT MIN( a.iostorinvdis_id ) AS iostorinvdis_id @@ -217,7 +220,7 @@ LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id WHERE b.io_type = '1' - AND b.bill_type in ('1001','1004') + AND b.bill_type = '1001' AND b.bill_status = '99' AND b.is_delete = '0' AND (LEFT ( b.confirm_time, 10 ) = DATE_SUB( CURDATE(), INTERVAL 1 DAY ) @@ -230,17 +233,64 @@ LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = dis.struct_id + WHERE mst.is_delete = '0' AND mst.io_type = '1' - AND mst.bill_type in ('1001','1004') + AND mst.bill_type = '1001' AND mst.bill_status = '99' AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) OR LEFT(confirm_time,10) = CURDATE()) AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time - GROUP BY sub.customer_name + GROUP BY sub.customer_name,attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "88" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + sub.customer_name, + attr.stor_id + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type = '1004' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT ( b.confirm_time, 10 ) = DATE_SUB( CURDATE(), INTERVAL 1 DAY ) + OR LEFT ( confirm_time, 10 ) = CURDATE()) + AND CONCAT( DATE_SUB( CURDATE(), INTERVAL 1 DAY ), ' 08:00:00' ) <= b.confirm_time + AND CONCAT( CURDATE(), ' 08:00:00' ) >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = dis.struct_id + + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type = '1004' + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY sub.customer_name,attr.stor_id ENDSELECT ENDQUERY @@ -250,7 +300,8 @@ QUERY SELECT SUM( dis.plan_qty ) / 1000 AS num, - sub.customer_name + sub.customer_name, + attr.stor_id FROM ( SELECT MIN( a.iostorinvdis_id ) AS iostorinvdis_id @@ -271,6 +322,8 @@ LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = dis.struct_id + WHERE mst.is_delete = '0' AND mst.io_type = '0' @@ -280,7 +333,7 @@ AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time AND NOW() >= mst.confirm_time - GROUP BY sub.customer_name + GROUP BY sub.customer_name,attr.stor_id ENDSELECT ENDQUERY @@ -290,7 +343,8 @@ QUERY SELECT SUM( dis.plan_qty ) / 1000 AS num, - sub.customer_name + sub.customer_name, + attr.stor_id FROM ( SELECT MIN( a.iostorinvdis_id ) AS iostorinvdis_id @@ -299,7 +353,7 @@ LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id WHERE b.io_type = '1' - AND b.bill_type in ('1001','1004') + AND b.bill_type = '1001' AND b.bill_status = '99' AND b.is_delete = '0' AND MONTH (LEFT ( b.confirm_time, 10 )) = MONTH (CURDATE()) @@ -311,16 +365,102 @@ LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = dis.struct_id + WHERE mst.is_delete = '0' AND mst.io_type = '1' - AND mst.bill_type in ('1001','1004') + AND mst.bill_type = '1001' AND mst.bill_status = '99' AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time AND NOW() >= mst.confirm_time - GROUP BY sub.customer_name + GROUP BY sub.customer_name,attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "100" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + sub.customer_name, + attr.stor_id + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type = '1004' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH (LEFT ( b.confirm_time, 10 )) = MONTH (CURDATE()) + AND CONCAT( DATE_FORMAT( NOW(), '%Y-%m-01' ), ' 08:00:00' ) <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = dis.struct_id + + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type = '1004' + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY sub.customer_name,attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "101" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + sub.customer_name, + attr.stor_id + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type = '1001' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND DATE_FORMAT(DATE_SUB( CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01 08:00:00' ) <= b.confirm_time + AND DATE_FORMAT(CURDATE(), '%Y-%m-01 08:00:00' ) >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = dis.struct_id + + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type = '1001' + AND mst.bill_status = '99' + AND DATE_FORMAT(DATE_SUB( CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01 08:00:00' ) <= mst.confirm_time + AND DATE_FORMAT(CURDATE(), '%Y-%m-01 08:00:00' ) >= mst.confirm_time + + GROUP BY sub.customer_name,attr.stor_id ENDSELECT ENDQUERY @@ -381,7 +521,7 @@ LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id WHERE b.io_type = '1' - AND b.bill_type in ('1001','1004') + AND b.bill_type = '1001' AND b.bill_status = '99' AND b.is_delete = '0' AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) @@ -397,7 +537,49 @@ WHERE mst.is_delete = '0' AND mst.io_type = '1' - AND mst.bill_type in ('1001','1004') + AND mst.bill_type = '1001' + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2) + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "122" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type = '1004' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= b.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type = '1004' AND mst.bill_status = '99' AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) OR LEFT(confirm_time,10) = CURDATE()) @@ -467,7 +649,7 @@ LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id WHERE b.io_type = '1' - AND b.bill_type in ('1001','1004') + AND b.bill_type = '1001' AND b.bill_status = '99' AND b.is_delete = '0' AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) @@ -484,7 +666,51 @@ WHERE mst.is_delete = '0' AND mst.io_type = '1' - AND mst.bill_type in ('1001','1004') + AND mst.bill_type = '1001' + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2),sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "144" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type = '1004' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= b.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= b.confirm_time + + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type = '1004' AND mst.bill_status = '99' AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) OR LEFT(confirm_time,10) = CURDATE()) @@ -550,7 +776,7 @@ LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id WHERE b.io_type = '1' - AND b.bill_type in ('1001','1004') + AND b.bill_type = '1001' AND b.bill_status = '99' AND b.is_delete = '0' AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) @@ -565,7 +791,47 @@ WHERE mst.is_delete = '0' AND mst.io_type = '1' - AND mst.bill_type in ('1001','1004') + AND mst.bill_type = '1001' + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2) + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "166" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type = '1004' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type = '1004' AND mst.bill_status = '99' AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time @@ -632,7 +898,7 @@ LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id WHERE b.io_type = '1' - AND b.bill_type in ('1001','1004') + AND b.bill_type = '1001' AND b.bill_status = '99' AND b.is_delete = '0' AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) @@ -647,7 +913,7 @@ WHERE mst.is_delete = '0' AND mst.io_type = '1' - AND mst.bill_type in ('1001','1004') + AND mst.bill_type = '1001' AND mst.bill_status = '99' AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time @@ -658,3 +924,104 @@ ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "188" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type = '1004' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type = '1004' + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2),sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "19" + QUERY + SELECT + SUM( ivt.canuse_qty ) / 1000 AS num, + sub.customer_name + FROM + st_ivt_structivt ivt + LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = ivt.pcsn AND sub.package_box_sn = attr.storagevehicle_code + WHERE + ivt.canuse_qty > '0' + + GROUP BY sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "20" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_id + FROM + st_ivt_iostorinvdis a + LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '0' + AND b.bill_type = '0004' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = dis.struct_id + + WHERE + mst.is_delete = '0' + AND mst.io_type = '0' + AND mst.bill_type = '0004' + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryProudDayData.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryProudDayData.java index 9f8e59a0d..69140a68c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryProudDayData.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryProudDayData.java @@ -4,6 +4,7 @@ package org.nl.wms.sch.manage; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; @@ -13,12 +14,10 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.ext.mes.service.LmsToMesService; +import org.nl.wms.sch.AutoQueryEnum; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -44,7 +43,7 @@ public class AutoQueryProudDayData { } } else { JSONObject jo = new JSONObject(); - jo.put("User", ""); + jo.put("User",""); UserList.add(jo); } param.put("UserList", UserList); @@ -62,14 +61,15 @@ public class AutoQueryProudDayData { // 查询共多少个仓库 String in_stor_code = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("STOR_CODE_FEISHU").getValue(); - JSONArray storArr = storTab.query("is_used = '1' and stor_code in" + in_stor_code).getResultJSONArray(0); + JSONArray storArr = storTab.query("is_used = '1' and stor_code in"+in_stor_code).getResultJSONArray(0); // 客户 String custB = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("CUST_B").getValue(); String custC = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("CUST_C").getValue(); + String custBandC = custB + "," + custC; JSONObject result = new JSONObject(); // 全部数据 - result.put("Title", DateUtil.today() + "成品数据(单位:T)"); + result.put("Title", DateUtil.today()+"成品数据(单位:T)"); /* * 查询各仓库库存 @@ -92,45 +92,45 @@ public class AutoQueryProudDayData { JSONObject item = storArr.getJSONObject(i); JSONObject json = new JSONObject(); - json.put("local", item.getString("stor_name")); // 存储地点 + json.put("local", item.getString("simple_name")); // 存储地点 - // 库存总量 + // 总量 List collect = allIvtList.stream() .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) .collect(Collectors.toList()); - json.put("TotalInventory", collect.isEmpty() ? "0" : NumberUtil.round(collect.get(0).getString("num"), 2) + ""); + json.put("TotalInventory", collect.isEmpty() ? "0" : NumberUtil.round(collect.get(0).getString("num"), 2)+""); // 超期库存 List collect2 = sidIvtList.stream() .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) .collect(Collectors.toList()); - json.put("OverdueInventory", collect2.isEmpty() ? "0" : NumberUtil.round(collect2.get(0).getString("num"), 2) + ""); + json.put("OverdueInventory", collect2.isEmpty() ? "0" : NumberUtil.round(collect2.get(0).getString("num"),2)+""); // 临期库存 List collect3 = faceIvtList.stream() .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) .collect(Collectors.toList()); - json.put("InterimInventory", collect3.isEmpty() ? "0" : NumberUtil.round(collect3.get(0).getString("num"), 2) + ""); + json.put("InterimInventory", collect3.isEmpty() ? "0" : NumberUtil.round(collect3.get(0).getString("num"),2)+""); // 正常库存 List collect4 = regIvtList.stream() .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) .collect(Collectors.toList()); - json.put("NormalStockAge", collect4.isEmpty() ? "0" : NumberUtil.round(collect4.get(0).getString("num"), 2) + ""); + json.put("NormalStockAge", collect4.isEmpty() ? "0" : NumberUtil.round(collect4.get(0).getString("num"),2)+""); Arrayobject1.add(json); } - // 计算全部 + // 计算汇总 JSONObject allIvt = new JSONObject(); - allIvt.put("local", "全部"); - allIvt.put("TotalInventory", NumberUtil.round(allIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - allIvt.put("OverdueInventory", NumberUtil.round(sidIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - allIvt.put("InterimInventory", NumberUtil.round(faceIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - allIvt.put("NormalStockAge", NumberUtil.round(regIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + allIvt.put("local", "汇总"); + ; + allIvt.put("TotalInventory", NumberUtil.round(Arrayobject1.stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row)).getDoubleValue("TotalInventory")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); + allIvt.put("OverdueInventory", NumberUtil.round(Arrayobject1.stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row)).getDoubleValue("OverdueInventory")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); + allIvt.put("InterimInventory", NumberUtil.round(Arrayobject1.stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row)).getDoubleValue("InterimInventory")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); + allIvt.put("NormalStockAge", NumberUtil.round(Arrayobject1.stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row)).getDoubleValue("NormalStockAge")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); Arrayobject1.add(allIvt); - - result.put("Arrayobject1", Arrayobject1); + result.put("Arrayobject1",Arrayobject1); /* * 各客户库存 : @@ -148,9 +148,9 @@ public class AutoQueryProudDayData { JSONObject custHand = new JSONObject(); custHand.put("Customer1", "B库存"); custHand.put("Customer2", "C库存"); - custHand.put("Customer3", "Other库存"); + custHand.put("Customer3", "Other库存(除BC)"); Customernventory.add(custHand); - result.put("Customernventory", Customernventory); + result.put("Customernventory",Customernventory); // 2.数据 JSONArray Arrayobject2 = new JSONArray(); @@ -171,52 +171,53 @@ public class AutoQueryProudDayData { // B库存集合 List custIvtBList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "5") - .addParam("customer_name", "('" + collectB1 + "')") + .addParam("customer_name", "('"+collectB1+"')") .process().getResultJSONArray(0).toJavaList(JSONObject.class); // C库存集合 List custIvtCList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "5") - .addParam("customer_name", "('" + collectC1 + "')") + .addParam("customer_name", "('"+collectC1+"')") .process().getResultJSONArray(0).toJavaList(JSONObject.class); // 其他库存集合 List custIvtOtherList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "6") - .addParam("customer_name", "('" + collectAll + "')") + .addParam("customer_name", "('"+collectAll+"')") .process().getResultJSONArray(0).toJavaList(JSONObject.class); for (int i = 0; i < storArr.size(); i++) { JSONObject item = storArr.getJSONObject(i); JSONObject json = new JSONObject(); - json.put("Local", item.getString("stor_name")); + json.put("Local", item.getString("simple_name")); // B库存 List collectB = custIvtBList.stream() .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) .collect(Collectors.toList()); - json.put("Customernventory1", collectB.isEmpty() ? "0" : NumberUtil.round(collectB.get(0).getString("num"), 2) + ""); + json.put("Customernventory1", collectB.isEmpty() ? "0" : NumberUtil.round(collectB.get(0).getString("num"), 2)+""); // C库存 List collectC = custIvtCList.stream() .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) .collect(Collectors.toList()); - json.put("Customernventory2", collectC.isEmpty() ? "0" : NumberUtil.round(collectC.get(0).getString("num"), 2) + ""); + json.put("Customernventory2", collectC.isEmpty() ? "0" : NumberUtil.round(collectC.get(0).getString("num"), 2)+""); // 其他库存 List collectOthen = custIvtOtherList.stream() .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) .collect(Collectors.toList()); - json.put("Customernventory3", collectOthen.isEmpty() ? "0" : NumberUtil.round(collectOthen.get(0).getString("num"), 2) + ""); + json.put("Customernventory3", collectOthen.isEmpty() ? "0" : NumberUtil.round(collectOthen.get(0).getString("num"), 2)+""); Arrayobject2.add(json); } - // 计算全部 + // 计算汇总 JSONObject allCustIvt = new JSONObject(); - allCustIvt.put("Local", "全部"); - allCustIvt.put("Customernventory1", NumberUtil.round(custIvtBList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - allCustIvt.put("Customernventory2", NumberUtil.round(custIvtCList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - allCustIvt.put("Customernventory3", NumberUtil.round(custIvtOtherList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + allCustIvt.put("Local", "汇总"); + + allCustIvt.put("Customernventory1", NumberUtil.round(Arrayobject2.stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row)).getDoubleValue("Customernventory1")).reduce(Double::sum).orElse(0.00).toString(), 2)+""); + allCustIvt.put("Customernventory2", NumberUtil.round(Arrayobject2.stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row)).getDoubleValue("Customernventory2")).reduce(Double::sum).orElse(0.00).toString(), 2)+""); + allCustIvt.put("Customernventory3", NumberUtil.round(Arrayobject2.stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row)).getDoubleValue("Customernventory3")).reduce(Double::sum).orElse(0.00).toString(), 2)+""); Arrayobject2.add(allCustIvt); result.put("Arrayobject2", Arrayobject2); @@ -235,112 +236,87 @@ public class AutoQueryProudDayData { JSONArray Arrayobject3 = new JSONArray(); JSONObject changeIvt = new JSONObject(); - changeIvt.put("Customer1", "B客户"); - changeIvt.put("Customer2", "C客户"); - changeIvt.put("Customer3", "汇总"); + changeIvt.put("Customer1", "兰州仓库(除BC)"); + changeIvt.put("Customer2", "兰州二期仓库(除BC)"); + changeIvt.put("Customer3", "东莞仓"); + changeIvt.put("Customer4", "兰州仓B客户"); + changeIvt.put("Customer5", "兰州仓C客户"); Arrayobject3.add(changeIvt); result.put("Arrayobject3", Arrayobject3); // 2.数据 JSONArray Arrayobject4 = new JSONArray(); - // 所有昨日入库量客户分组集合 + // 所有昨日入库量客户、仓库分组集合 List yesterdayInList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "7") .process().getResultJSONArray(0).toJavaList(JSONObject.class); - // 所有昨日出库量客户分组集合 + // 所有昨日出库量客户、仓库分组集合 List yesterdayOutList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "8") .process().getResultJSONArray(0).toJavaList(JSONObject.class); - // 所有当月入库量客户分组集合 + // 所有昨日调拨(出库)量客户、仓库分组集合 + List yesterdayAllotList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "88") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有当月入库量客户、仓库分组集合 List monthInList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "9") .process().getResultJSONArray(0).toJavaList(JSONObject.class); - // 所有当月出库量客户分组集合 + // 所有当月出库量客户、仓库分组集合 List monthOutList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "10") .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 所有当月调拨(出库)量客户、仓库分组集合 + List monthAllotList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "100") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有上个月出库量客户、仓库分组集合 + List upMonthOutList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "101") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // ---- 昨日入库量 ---- - JSONObject yesterdayIn = new JSONObject(); - yesterdayIn.put("Title", "昨日入库量"); + JSONObject yesterdayIn = ivtChange(custBandC, custB, custC, yesterdayInList); + yesterdayIn.put("Title", "昨日入"); - // B客户 - List custBList = yesterdayInList.stream() - .filter(row -> custB.contains(row.getString("customer_name"))) - .collect(Collectors.toList()); - yesterdayIn.put("Customerqty1", NumberUtil.round(custBList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - - // C客户 - List custCList = yesterdayInList.stream() - .filter(row -> custC.contains(row.getString("customer_name"))) - .collect(Collectors.toList()); - yesterdayIn.put("Customerqty2", NumberUtil.round(custCList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - - // 汇总 - yesterdayIn.put("Customerqty3", NumberUtil.round(yesterdayInList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); Arrayobject4.add(yesterdayIn); // ---- 昨日出库量 ---- - JSONObject yesterdayOut = new JSONObject(); - yesterdayOut.put("Title", "昨日出库量"); + JSONObject yesterdayOut = ivtChange(custBandC, custB, custC, yesterdayOutList); + yesterdayOut.put("Title", "昨日出"); - // B客户 - List custBList2 = yesterdayOutList.stream() - .filter(row -> custB.contains(row.getString("customer_name"))) - .collect(Collectors.toList()); - yesterdayOut.put("Customerqty1", NumberUtil.round(custBList2.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - - // C客户 - List custCList2 = yesterdayOutList.stream() - .filter(row -> custC.contains(row.getString("customer_name"))) - .collect(Collectors.toList()); - yesterdayOut.put("Customerqty2", NumberUtil.round(custCList2.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - - // 汇总 - yesterdayOut.put("Customerqty3", NumberUtil.round(yesterdayOutList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); Arrayobject4.add(yesterdayOut); + // ---- 昨日调拨量 ---- + JSONObject yesterdayAllot = ivtChange(custBandC, custB, custC, yesterdayAllotList); + yesterdayAllot.put("Title", "昨日调"); + + Arrayobject4.add(yesterdayAllot); + // ---- 当月入库量 ---- - JSONObject monthdayIn = new JSONObject(); - monthdayIn.put("Title", "当月入库量"); + JSONObject monthdayIn = ivtChange(custBandC, custB, custC, monthInList); + monthdayIn.put("Title", "当月入"); - // B客户 - List custBList3 = monthInList.stream() - .filter(row -> custB.contains(row.getString("customer_name"))) - .collect(Collectors.toList()); - monthdayIn.put("Customerqty1", NumberUtil.round(custBList3.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - - // C客户 - List custCList3 = monthInList.stream() - .filter(row -> custC.contains(row.getString("customer_name"))) - .collect(Collectors.toList()); - monthdayIn.put("Customerqty2", NumberUtil.round(custCList3.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - - // 汇总 - monthdayIn.put("Customerqty3", NumberUtil.round(monthInList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); Arrayobject4.add(monthdayIn); // ---- 当月出库量 ---- - JSONObject monthdayOut = new JSONObject(); - monthdayOut.put("Title", "当月出库量"); + JSONObject monthdayOut = ivtChange(custBandC, custB, custC, monthOutList); + monthdayOut.put("Title", "当月出"); - // B客户 - List custBList4 = monthOutList.stream() - .filter(row -> custB.contains(row.getString("customer_name"))) - .collect(Collectors.toList()); - monthdayOut.put("Customerqty1", NumberUtil.round(custBList4.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - - // C客户 - List custCList4 = monthOutList.stream() - .filter(row -> custC.contains(row.getString("customer_name"))) - .collect(Collectors.toList()); - monthdayOut.put("Customerqty2", NumberUtil.round(custCList4.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); - - // 汇总 - monthdayOut.put("Customerqty3", NumberUtil.round(monthOutList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); Arrayobject4.add(monthdayOut); - result.put("Arrayobject4", Arrayobject4); + // ---- 当月调拨量 ---- + JSONObject monthdayallot = ivtChange(custBandC, custB, custC, monthAllotList); + monthdayallot.put("Title", "当月调"); + + Arrayobject4.add(monthdayallot); + + // ---- 上月出库量 ---- + JSONObject upMonthdayOut= ivtChange(custBandC, custB, custC, upMonthOutList); + upMonthdayOut.put("Title", "上月出"); + + Arrayobject4.add(upMonthdayOut); + result.put("Arrayobject4",Arrayobject4); /* * 各区域库存变化 @@ -350,7 +326,7 @@ public class AutoQueryProudDayData { * C库存:10000426 比亚迪,2010 海亮股份 * } * { - * region_code: A1,A2,A3,A4 + * region_code: A1,A2,A3,A4,B1,B2 * } */ JSONArray Arrayobject5 = new JSONArray(); @@ -363,6 +339,10 @@ public class AutoQueryProudDayData { List yesterdayOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "12") .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 所有昨日调拨出库量区域分组集合 + List yesterdayAllotRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "122") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 所有昨日入库量区域、客户分组集合 List yesterdayCustInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "13") .process().getResultJSONArray(0).toJavaList(JSONObject.class); @@ -371,6 +351,10 @@ public class AutoQueryProudDayData { List yesterdayCustOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "14") .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 所有昨日调拨出库量区域、客户分组集合 + List yesterdayCustAllotRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "144") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 所有当月入库量区域分组集合 List monthInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "15") .process().getResultJSONArray(0).toJavaList(JSONObject.class); @@ -379,6 +363,10 @@ public class AutoQueryProudDayData { List monthOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "16") .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 所有当月调拨出库量区域分组集合 + List monthAllotRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "166") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 所有当月入库量区域、客户分组集合 List monthCustInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "17") .process().getResultJSONArray(0).toJavaList(JSONObject.class); @@ -387,62 +375,119 @@ public class AutoQueryProudDayData { List monthCustOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "18") .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 所有当月调拨出库量区域、客户分组集合 + List monthCustAllotRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "188") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // ---- 当月入库量 ---- - JSONObject monthRegIn = monthReg(monthInRegList, "当月入库量"); + JSONObject monthRegIn = monthReg(monthInRegList, "当月入"); Arrayobject5.add(monthRegIn); + // ---- 当月调拨量 ---- + JSONObject monthAllotOut = monthReg(monthAllotRegList, "当月调"); + Arrayobject5.add(monthAllotOut); + // ---- 当月出库量 ---- - JSONObject monthRegOut = monthReg(monthOutRegList, "当月出库量"); + JSONObject monthRegOut = monthReg(monthOutRegList, "当月出"); Arrayobject5.add(monthRegOut); // ---- 昨日入库量 ---- - JSONObject yesterdayInReg = monthReg(yesterdayInRegList, "昨日入库量"); + JSONObject yesterdayInReg = monthReg(yesterdayInRegList, "昨日入"); Arrayobject5.add(yesterdayInReg); + // ---- 昨日调拨量 ---- + JSONObject yesterdayAllotReg = monthReg(yesterdayAllotRegList, "昨日调"); + Arrayobject5.add(yesterdayAllotReg); + // ---- 昨日出库量 ---- - JSONObject yesterdayOutReg = monthReg(yesterdayOutRegList, "昨日出库量"); + JSONObject yesterdayOutReg = monthReg(yesterdayOutRegList, "昨日出"); Arrayobject5.add(yesterdayOutReg); - // ---- B昨日出库量 ---- - JSONObject yesterdayCustOutRegB = monthRegCust(yesterdayCustOutRegList, "B昨日出库量", custB); - Arrayobject5.add(yesterdayCustOutRegB); - // ---- B昨日入库量 ---- - JSONObject yesterdayCustInRegB = monthRegCust(yesterdayCustInRegList, "B昨日入库量", custB); + JSONObject yesterdayCustInRegB = monthRegCust(yesterdayCustInRegList, "B昨日入", custB); Arrayobject5.add(yesterdayCustInRegB); + // ---- B昨日调拨出库量 ---- + JSONObject yesterdayCustAllotRegB = monthRegCust(yesterdayCustAllotRegList, "B昨日调", custB); + Arrayobject5.add(yesterdayCustAllotRegB); + + // ---- B昨日出库量 ---- + JSONObject yesterdayCustOutRegB = monthRegCust(yesterdayCustOutRegList, "B昨日出", custB); + Arrayobject5.add(yesterdayCustOutRegB); + // ---- B当月入库量 ---- - JSONObject monthCustInRegB = monthRegCust(monthCustInRegList, "B当月入库量", custB); + JSONObject monthCustInRegB = monthRegCust(monthCustInRegList, "B当月入", custB); Arrayobject5.add(monthCustInRegB); + // ---- B当月调拨出库量 ---- + JSONObject monthCustAllotRegB = monthRegCust(monthCustAllotRegList, "B当月调", custB); + Arrayobject5.add(monthCustAllotRegB); + // ---- B当月出库量 ---- - JSONObject monthCustOutRegB = monthRegCust(monthCustOutRegList, "B当月出库量", custB); + JSONObject monthCustOutRegB = monthRegCust(monthCustOutRegList, "B当月出", custB); Arrayobject5.add(monthCustOutRegB); - // ---- C昨日出库量 ---- - JSONObject yesterdayCustOutRegC = monthRegCust(yesterdayCustOutRegList, "C昨日出库量", custC); - Arrayobject5.add(yesterdayCustOutRegC); - // ---- C昨日入库量 ---- - JSONObject yesterdayCustInRegC = monthRegCust(yesterdayCustInRegList, "C昨日入库量", custC); + JSONObject yesterdayCustInRegC = monthRegCust(yesterdayCustInRegList, "C昨日入", custC); Arrayobject5.add(yesterdayCustInRegC); + // ---- C昨日调拨出库量 ---- + JSONObject yesterdayCustAllotRegC = monthRegCust(yesterdayCustAllotRegList, "C昨日调", custC); + Arrayobject5.add(yesterdayCustAllotRegC); + + // ---- C昨日出库量 ---- + JSONObject yesterdayCustOutRegC = monthRegCust(yesterdayCustOutRegList, "C昨日出", custC); + Arrayobject5.add(yesterdayCustOutRegC); + // ---- C当月入库量 ---- - JSONObject monthCustInRegC = monthRegCust(monthCustInRegList, "C当月入库量", custC); + JSONObject monthCustInRegC = monthRegCust(monthCustInRegList, "C当月入", custC); Arrayobject5.add(monthCustInRegC); + // ---- C当月调拨出库量 ---- + JSONObject monthCustAllotRegC = monthRegCust(monthCustAllotRegList, "C当月调", custC); + Arrayobject5.add(monthCustAllotRegC); + // ---- C当月出库量 ---- - JSONObject monthCustOutRegC = monthRegCust(monthCustOutRegList, "C当月出库量", custC); + JSONObject monthCustOutRegC = monthRegCust(monthCustOutRegList, "C当月出", custC); Arrayobject5.add(monthCustOutRegC); result.put("Arrayobject5", Arrayobject5); + /* + * 上月库存B、C库存 + */ + String end_date = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("END_DATE").getValue(); + String nowDay = DateUtil.today().substring(8, 10); + + if (end_date.equals(nowDay)) { + JSONArray Arrayobject6 = new JSONArray(); + + // 当日实时库存,根据客户分组 + List todayCustIvtList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "19") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 当月入库量(调拨入库:默认1-21号),根据客户分组 + List monthCustIvtList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "20") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // ---- B公司 ---- + JSONObject CorpB = upMonthIvt(custB, todayCustIvtList, monthCustIvtList); + CorpB.put("Customer1", "B库存"); + Arrayobject6.add(CorpB); + + // ---- C公司 ---- + JSONObject CorpC = upMonthIvt(custC, todayCustIvtList, monthCustIvtList); + CorpC.put("Customer1", "C库存"); + Arrayobject6.add(CorpC); + + result.put("Arrayobject6",Arrayobject6); + result.put("EndDate", getEndDate()); + } return result; } /** * 当月区域公共方法 - * * @param param 、 * @param title 、 * @return JSONObject @@ -456,10 +501,12 @@ public class AutoQueryProudDayData { .collect(Collectors.groupingBy(row -> row.getString("region_code"))); if (paramMap.isEmpty()) { - result.put("Areaqty1", "0"); - result.put("Areaqty2", "0"); - result.put("Areaqty3", "0"); - result.put("Areaqty4", "0"); + result.put("Areaqty1","0"); + result.put("Areaqty2","0"); + result.put("Areaqty3","0"); + result.put("Areaqty4","0"); + result.put("Areaqty5","0"); + result.put("Areaqty6","0"); } for (String region_code : paramMap.keySet()) { @@ -468,34 +515,34 @@ public class AutoQueryProudDayData { String num = NumberUtil.round(list.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""; switch (region_code) { - case "A1": - result.put("Areaqty1", num); - break; - case "A2": - result.put("Areaqty2", num); - break; - case "A3": - result.put("Areaqty3", num); - break; - case "A4": - result.put("Areaqty4", num); - break; + case "A1": result.put("Areaqty1", num); break; + case "A2": result.put("Areaqty2", num); break; + case "A3": result.put("Areaqty3", num); break; + case "A4": result.put("Areaqty4", num); break; + case "B1": result.put("Areaqty5", num); break; + case "B2": result.put("Areaqty6", num); break; default: break; } } if (ObjectUtil.isEmpty(result.getString("Areaqty1"))) { - result.put("Areaqty1", "0"); + result.put("Areaqty1","0"); } if (ObjectUtil.isEmpty(result.getString("Areaqty2"))) { - result.put("Areaqty2", "0"); + result.put("Areaqty2","0"); } if (ObjectUtil.isEmpty(result.getString("Areaqty3"))) { - result.put("Areaqty3", "0"); + result.put("Areaqty3","0"); } if (ObjectUtil.isEmpty(result.getString("Areaqty4"))) { - result.put("Areaqty4", "0"); + result.put("Areaqty4","0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty5"))) { + result.put("Areaqty5","0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty6"))) { + result.put("Areaqty6","0"); } return result; @@ -503,9 +550,8 @@ public class AutoQueryProudDayData { /** * 当月区域、客户公共方法 - * - * @param param 、 - * @param title 、 + * @param param 、 + * @param title 、 * @param customer 客户 、 * @return JSONObject */ @@ -518,10 +564,12 @@ public class AutoQueryProudDayData { .collect(Collectors.groupingBy(row -> row.getString("region_code"))); if (paramMap.isEmpty()) { - result.put("Areaqty1", "0"); - result.put("Areaqty2", "0"); - result.put("Areaqty3", "0"); - result.put("Areaqty4", "0"); + result.put("Areaqty1","0"); + result.put("Areaqty2","0"); + result.put("Areaqty3","0"); + result.put("Areaqty4","0"); + result.put("Areaqty5","0"); + result.put("Areaqty6","0"); } for (String region_code : paramMap.keySet()) { @@ -535,36 +583,125 @@ public class AutoQueryProudDayData { switch (region_code) { - case "A1": - result.put("Areaqty1", num); - break; - case "A2": - result.put("Areaqty2", num); - break; - case "A3": - result.put("Areaqty3", num); - break; - case "A4": - result.put("Areaqty4", num); - break; + case "A1": result.put("Areaqty1", num); break; + case "A2": result.put("Areaqty2", num); break; + case "A3": result.put("Areaqty3", num); break; + case "A4": result.put("Areaqty4", num); break; + case "B1": result.put("Areaqty5", num); break; + case "B2": result.put("Areaqty6", num); break; default: break; } } if (ObjectUtil.isEmpty(result.getString("Areaqty1"))) { - result.put("Areaqty1", "0"); + result.put("Areaqty1","0"); } if (ObjectUtil.isEmpty(result.getString("Areaqty2"))) { - result.put("Areaqty2", "0"); + result.put("Areaqty2","0"); } if (ObjectUtil.isEmpty(result.getString("Areaqty3"))) { - result.put("Areaqty3", "0"); + result.put("Areaqty3","0"); } if (ObjectUtil.isEmpty(result.getString("Areaqty4"))) { - result.put("Areaqty4", "0"); + result.put("Areaqty4","0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty5"))) { + result.put("Areaqty5","0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty6"))) { + result.put("Areaqty6", "0"); } return result; } + + /** + * 库存变化公共方法 + * @param custBandC b和c客户 + * @param custB b客户 + * @param custC c客户 + * @param dataList 、 + * @return 、 + */ + public JSONObject ivtChange(String custBandC, String custB, String custC, List dataList) { + JSONObject result = new JSONObject(); + + // 兰州一期仓(除BC) + List collect = dataList.stream() + .filter(row -> row.getString("stor_id").equals(AutoQueryEnum.AC01.getId())) + .filter(row -> !custBandC.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + result.put("Customerqty1", NumberUtil.round(collect.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); + + // 兰州二期仓(除BC) + List collect2 = dataList.stream() + .filter(row -> row.getString("stor_id").equals(AutoQueryEnum.BC01.getId())) + .filter(row -> !custBandC.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + result.put("Customerqty2", NumberUtil.round(collect2.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); + + // 东莞仓 + List collect3 = dataList.stream() + .filter(row -> row.getString("stor_id").equals(AutoQueryEnum.WK01.getId())) + .collect(Collectors.toList()); + result.put("Customerqty3", NumberUtil.round(collect3.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); + + // 兰州一期仓(B) + List collect4 = dataList.stream() + .filter(row -> row.getString("stor_id").equals(AutoQueryEnum.AC01.getId())) + .filter(row -> custB.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + result.put("Customerqty4", NumberUtil.round(collect4.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); + + // 兰州一期仓(C) + List collect5 = dataList.stream() + .filter(row -> row.getString("stor_id").equals(AutoQueryEnum.AC01.getId())) + .filter(row -> custC.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + result.put("Customerqty5", NumberUtil.round(collect5.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+""); + + return result; + } + + + /** + * 上月库存公共方法 + * @param cust 客户 + * @param todayCustIvtList 实时库存客户分组 + * @param monthCustIvtList 当月入库量客户分组 + * @return / + */ + public JSONObject upMonthIvt(String cust, List todayCustIvtList, List monthCustIvtList) { + + JSONObject result = new JSONObject(); + + double ivtCust = todayCustIvtList.stream() + .filter(row -> cust.contains(row.getString("customer_name"))) + .map(row -> row.getDoubleValue("num")) + .reduce(Double::sum).orElse(0.00); + + double inIvtCust = monthCustIvtList.stream() + .filter(row -> cust.contains(row.getString("customer_name"))) + .map(row -> row.getDoubleValue("num")) + .reduce(Double::sum).orElse(0.00); + + double subIvt = NumberUtil.sub(ivtCust, inIvtCust); + + result.put("Customerqty1", subIvt > 0 ? NumberUtil.round(subIvt, 2).toString() : "0"); + + return result; + } + + public String getEndDate() { + String substring = DateUtil.lastMonth().toString().substring(0, 7); + + Calendar instance = Calendar.getInstance(); + instance.setTime(DateUtil.lastMonth()); + int actualMaximum = instance.getActualMaximum(Calendar.DAY_OF_MONTH); + String date = substring + "-" + String.valueOf(actualMaximum); + + String endDate = DateUtil.format(DateUtil.parse(date), "yyyy年MM月dd日"); + return endDate; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryProudDayDataTest.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryProudDayDataTest.java new file mode 100644 index 000000000..ec23ffe29 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryProudDayDataTest.java @@ -0,0 +1,570 @@ +package org.nl.wms.sch.manage; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.ext.mes.service.LmsToMesService; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +@Component +@RequiredArgsConstructor +public class AutoQueryProudDayDataTest { + + private final LmsToMesService lmsToMesService; + + public void run() { + JSONObject param = new JSONObject(); + + JSONArray UserList = new JSONArray(); + + String userList = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("USER_LIST_FEISHU").getValue(); + + String[] split = userList.split(","); + if (split.length > 0) { + for (String s : split) { + JSONObject jo = new JSONObject(); + jo.put("User", s); + UserList.add(jo); + } + } else { + JSONObject jo = new JSONObject(); + jo.put("User", ""); + UserList.add(jo); + } + param.put("UserList", UserList); + + param.put("Code", "ctp_AAVwgNuQOtO0"); + param.put("card", data()); + + // 调用接口 + lmsToMesService.proudDayData(param); + + } + + public JSONObject data() { + WQLObject storTab = WQLObject.getWQLObject("st_ivt_bsrealstorattr"); // 仓库表 + + // 查询共多少个仓库 + String in_stor_code = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("STOR_CODE_FEISHU").getValue(); + JSONArray storArr = storTab.query("is_used = '1' and stor_code in" + in_stor_code).getResultJSONArray(0); + + // 客户 + String custB = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("CUST_B").getValue(); + String custC = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("CUST_C").getValue(); + + JSONObject result = new JSONObject(); // 全部数据 + result.put("Title", DateUtil.today() + "成品数据(单位:T)"); + + /* + * 查询各仓库库存 + */ + JSONArray Arrayobject1 = new JSONArray(); // 各仓库库存集合 + + // 库存总量集合 + List allIvtList = WQL.getWO("TEST0001").addParam("flag", "1").process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 超期库存集合 + List sidIvtList = WQL.getWO("TEST0001").addParam("flag", "2").process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 临期库存集合 + List faceIvtList = WQL.getWO("TEST0001").addParam("flag", "3").process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 正常库龄 + List regIvtList = WQL.getWO("TEST0001").addParam("flag", "4").process().getResultJSONArray(0).toJavaList(JSONObject.class); + + for (int i = 0; i < storArr.size(); i++) { + JSONObject item = storArr.getJSONObject(i); + + JSONObject json = new JSONObject(); + json.put("local", item.getString("stor_name")); // 存储地点 + + // 库存总量 + List collect = allIvtList.stream() + .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) + .collect(Collectors.toList()); + json.put("TotalInventory", collect.isEmpty() ? "0" : NumberUtil.round(collect.get(0).getString("num"), 2) + ""); + + // 超期库存 + List collect2 = sidIvtList.stream() + .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) + .collect(Collectors.toList()); + json.put("OverdueInventory", collect2.isEmpty() ? "0" : NumberUtil.round(collect2.get(0).getString("num"), 2) + ""); + + // 临期库存 + List collect3 = faceIvtList.stream() + .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) + .collect(Collectors.toList()); + json.put("InterimInventory", collect3.isEmpty() ? "0" : NumberUtil.round(collect3.get(0).getString("num"), 2) + ""); + + // 正常库存 + List collect4 = regIvtList.stream() + .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) + .collect(Collectors.toList()); + json.put("NormalStockAge", collect4.isEmpty() ? "0" : NumberUtil.round(collect4.get(0).getString("num"), 2) + ""); + + Arrayobject1.add(json); + } + + // 计算全部 + JSONObject allIvt = new JSONObject(); + allIvt.put("local", "全部"); + allIvt.put("TotalInventory", NumberUtil.round(allIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + allIvt.put("OverdueInventory", NumberUtil.round(sidIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + allIvt.put("InterimInventory", NumberUtil.round(faceIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + allIvt.put("NormalStockAge", NumberUtil.round(regIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); +// Arrayobject1.add(allIvt); + + result.put("Arrayobject1", Arrayobject1); + + /* + * 各客户库存 : + * 1.表头 + * { + * B库存:10000708 蕉城时代,10000698 江苏时代,10000779 四川时代,10000561 宁德时代 + * C库存:10000426 比亚迪,2010 海亮股份 + * Other库存: 除B、C客户的其他客户 + * } + * 2.数据 + */ + // 1.表头: + JSONArray Customernventory = new JSONArray(); + + JSONObject custHand = new JSONObject(); + custHand.put("Customer1", "B库存"); + custHand.put("Customer2", "C库存"); + custHand.put("Customer3", "Other库存"); + Customernventory.add(custHand); + result.put("Customernventory", Customernventory); + + // 2.数据 + JSONArray Arrayobject2 = new JSONArray(); + + String[] splitB = custB.split(","); + ArrayList bList = new ArrayList<>(Arrays.asList(splitB)); + String collectB1 = String.join("','", bList); + + String[] splitC = custC.split(","); + ArrayList cList = new ArrayList<>(Arrays.asList(splitC)); + String collectC1 = String.join("','", cList); + + + String in_cust = custB + "," + custC; + String[] splitAll = in_cust.split(","); + ArrayList aAndBList = new ArrayList<>(Arrays.asList(splitAll)); + String collectAll = String.join("','", aAndBList); + + // B库存集合 + List custIvtBList = WQL.getWO("TEST0001").addParam("flag", "5") + .addParam("customer_name", "('" + collectB1 + "')") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // C库存集合 + List custIvtCList = WQL.getWO("TEST0001").addParam("flag", "5") + .addParam("customer_name", "('" + collectC1 + "')") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 其他库存集合 + List custIvtOtherList = WQL.getWO("TEST0001").addParam("flag", "6") + .addParam("customer_name", "('" + collectAll + "')") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + for (int i = 0; i < storArr.size(); i++) { + JSONObject item = storArr.getJSONObject(i); + + JSONObject json = new JSONObject(); + json.put("Local", item.getString("stor_name")); + + // B库存 + List collectB = custIvtBList.stream() + .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) + .collect(Collectors.toList()); + json.put("Customernventory1", collectB.isEmpty() ? "0" : NumberUtil.round(collectB.get(0).getString("num"), 2) + ""); + + // C库存 + List collectC = custIvtCList.stream() + .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) + .collect(Collectors.toList()); + json.put("Customernventory2", collectC.isEmpty() ? "0" : NumberUtil.round(collectC.get(0).getString("num"), 2) + ""); + + // 其他库存 + List collectOthen = custIvtOtherList.stream() + .filter(row -> row.getString("stor_id").equals(item.getString("stor_id"))) + .collect(Collectors.toList()); + json.put("Customernventory3", collectOthen.isEmpty() ? "0" : NumberUtil.round(collectOthen.get(0).getString("num"), 2) + ""); + + Arrayobject2.add(json); + } + + // 计算全部 + JSONObject allCustIvt = new JSONObject(); + allCustIvt.put("Local", "全部"); + allCustIvt.put("Customernventory1", NumberUtil.round(custIvtBList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + allCustIvt.put("Customernventory2", NumberUtil.round(custIvtCList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + allCustIvt.put("Customernventory3", NumberUtil.round(custIvtOtherList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); +// Arrayobject2.add(allCustIvt); + + result.put("Arrayobject2", Arrayobject2); + + /* + * 库存变化 + * 1.表头 + * { + * B库存:10000708 蕉城时代,10000698 江苏时代,10000779 四川时代,10000561 宁德时代 + * C库存:10000426 比亚迪,2010 海亮股份 + * 汇总: 所有客户 + * } + * 2.数据 + */ + // 1.表头 + JSONArray Arrayobject3 = new JSONArray(); + + JSONObject changeIvt = new JSONObject(); + changeIvt.put("Customer1", "B客户"); + changeIvt.put("Customer2", "C客户"); + changeIvt.put("Customer3", "汇总"); + Arrayobject3.add(changeIvt); + result.put("Arrayobject3", Arrayobject3); + + // 2.数据 + JSONArray Arrayobject4 = new JSONArray(); + + // 所有昨日入库量客户分组集合 + List yesterdayInList = WQL.getWO("TEST0001").addParam("flag", "7") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有昨日出库量客户分组集合 + List yesterdayOutList = WQL.getWO("TEST0001").addParam("flag", "8") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有当月入库量客户分组集合 + List monthInList = WQL.getWO("TEST0001").addParam("flag", "9") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有当月出库量客户分组集合 + List monthOutList = WQL.getWO("TEST0001").addParam("flag", "10") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // ---- 昨日入库量 ---- + JSONObject yesterdayIn = new JSONObject(); + yesterdayIn.put("Title", "昨日入库量"); + + // B客户 + List custBList = yesterdayInList.stream() + .filter(row -> custB.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + yesterdayIn.put("Customerqty1", NumberUtil.round(custBList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + + // C客户 + List custCList = yesterdayInList.stream() + .filter(row -> custC.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + yesterdayIn.put("Customerqty2", NumberUtil.round(custCList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + + // 汇总 + yesterdayIn.put("Customerqty3", NumberUtil.round(yesterdayInList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + Arrayobject4.add(yesterdayIn); + + // ---- 昨日出库量 ---- + JSONObject yesterdayOut = new JSONObject(); + yesterdayOut.put("Title", "昨日出库量"); + + // B客户 + List custBList2 = yesterdayOutList.stream() + .filter(row -> custB.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + yesterdayOut.put("Customerqty1", NumberUtil.round(custBList2.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + + // C客户 + List custCList2 = yesterdayOutList.stream() + .filter(row -> custC.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + yesterdayOut.put("Customerqty2", NumberUtil.round(custCList2.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + + // 汇总 + yesterdayOut.put("Customerqty3", NumberUtil.round(yesterdayOutList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); +// Arrayobject4.add(yesterdayOut); + + // ---- 当月入库量 ---- + JSONObject monthdayIn = new JSONObject(); + monthdayIn.put("Title", "当月入库量"); + + // B客户 + List custBList3 = monthInList.stream() + .filter(row -> custB.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + monthdayIn.put("Customerqty1", NumberUtil.round(custBList3.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + + // C客户 + List custCList3 = monthInList.stream() + .filter(row -> custC.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + monthdayIn.put("Customerqty2", NumberUtil.round(custCList3.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + + // 汇总 + monthdayIn.put("Customerqty3", NumberUtil.round(monthInList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + Arrayobject4.add(monthdayIn); + + // ---- 当月出库量 ---- + JSONObject monthdayOut = new JSONObject(); + monthdayOut.put("Title", "当月出库量"); + + // B客户 + List custBList4 = monthOutList.stream() + .filter(row -> custB.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + monthdayOut.put("Customerqty1", NumberUtil.round(custBList4.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + + // C客户 + List custCList4 = monthOutList.stream() + .filter(row -> custC.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + monthdayOut.put("Customerqty2", NumberUtil.round(custCList4.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); + + // 汇总 + monthdayOut.put("Customerqty3", NumberUtil.round(monthOutList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""); +// Arrayobject4.add(monthdayOut); + + result.put("Arrayobject4", Arrayobject4); + + /* + * 各区域库存变化 + * 数据 + * { + * B库存:10000708 蕉城时代,10000698 江苏时代,10000779 四川时代,10000561 宁德时代 + * C库存:10000426 比亚迪,2010 海亮股份 + * } + * { + * region_code: A1,A2,A3,A4 + * } + */ + JSONArray Arrayobject5 = new JSONArray(); + + // 所有昨日入库量区域分组集合 + List yesterdayInRegList = WQL.getWO("TEST0001").addParam("flag", "11") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有昨日出库量区域分组集合 + List yesterdayOutRegList = WQL.getWO("TEST0001").addParam("flag", "12") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有昨日入库量区域、客户分组集合 + List yesterdayCustInRegList = WQL.getWO("TEST0001").addParam("flag", "13") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有昨日出库量区域、客户分组集合 + List yesterdayCustOutRegList = WQL.getWO("TEST0001").addParam("flag", "14") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有当月入库量区域分组集合 + List monthInRegList = WQL.getWO("TEST0001").addParam("flag", "15") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有当月出库量区域分组集合 + List monthOutRegList = WQL.getWO("TEST0001").addParam("flag", "16") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有当月入库量区域、客户分组集合 + List monthCustInRegList = WQL.getWO("TEST0001").addParam("flag", "17") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 所有当月出库量区域、客户分组集合 + List monthCustOutRegList = WQL.getWO("TEST0001").addParam("flag", "18") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // ---- 当月入库量 ---- + JSONObject monthRegIn = monthReg(monthInRegList, "当月入库量"); + Arrayobject5.add(monthRegIn); + + // ---- 当月出库量 ---- + JSONObject monthRegOut = monthReg(monthOutRegList, "当月出库量"); + Arrayobject5.add(monthRegOut); + + // ---- 昨日入库量 ---- + JSONObject yesterdayInReg = monthReg(yesterdayInRegList, "昨日入库量"); + Arrayobject5.add(yesterdayInReg); + + // ---- 昨日出库量 ---- + JSONObject yesterdayOutReg = monthReg(yesterdayOutRegList, "昨日出库量"); + Arrayobject5.add(yesterdayOutReg); + + // ---- B昨日出库量 ---- + JSONObject yesterdayCustOutRegB = monthRegCust(yesterdayCustOutRegList, "B昨日出库量", custB); + Arrayobject5.add(yesterdayCustOutRegB); + + // ---- B昨日入库量 ---- + JSONObject yesterdayCustInRegB = monthRegCust(yesterdayCustInRegList, "B昨日入库量", custB); + Arrayobject5.add(yesterdayCustInRegB); + + // ---- B当月入库量 ---- + JSONObject monthCustInRegB = monthRegCust(monthCustInRegList, "B当月入库量", custB); + Arrayobject5.add(monthCustInRegB); + + // ---- B当月出库量 ---- + JSONObject monthCustOutRegB = monthRegCust(monthCustOutRegList, "B当月出库量", custB); + Arrayobject5.add(monthCustOutRegB); + + // ---- C昨日出库量 ---- + JSONObject yesterdayCustOutRegC = monthRegCust(yesterdayCustOutRegList, "C昨日出库量", custC); + Arrayobject5.add(yesterdayCustOutRegC); + + // ---- C昨日入库量 ---- + JSONObject yesterdayCustInRegC = monthRegCust(yesterdayCustInRegList, "C昨日入库量", custC); + Arrayobject5.add(yesterdayCustInRegC); + + // ---- C当月入库量 ---- + JSONObject monthCustInRegC = monthRegCust(monthCustInRegList, "C当月入库量", custC); + Arrayobject5.add(monthCustInRegC); + + // ---- C当月出库量 ---- + JSONObject monthCustOutRegC = monthRegCust(monthCustOutRegList, "C当月出库量", custC); + Arrayobject5.add(monthCustOutRegC); + + result.put("Arrayobject5", Arrayobject5); + + return result; + } + + /** + * 当月区域公共方法 + * + * @param param 、 + * @param title 、 + * @return JSONObject + */ + private JSONObject monthReg(List param, String title) { + + JSONObject result = new JSONObject(); + result.put("Title", title); + + Map> paramMap = param.stream() + .collect(Collectors.groupingBy(row -> row.getString("region_code"))); + + if (paramMap.isEmpty()) { + result.put("Areaqty1", "0"); + result.put("Areaqty2", "0"); + result.put("Areaqty3", "0"); + result.put("Areaqty4", "0"); + } + + for (String region_code : paramMap.keySet()) { + List list = paramMap.get(region_code); + + String num = NumberUtil.round(list.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""; + + switch (region_code) { + case "A1": + result.put("Areaqty1", num); + break; + case "A2": + result.put("Areaqty2", num); + break; + case "A3": + result.put("Areaqty3", num); + break; + case "A4": + result.put("Areaqty4", num); + break; + default: + break; + } + } + + if (ObjectUtil.isEmpty(result.getString("Areaqty1"))) { + result.put("Areaqty1", "0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty2"))) { + result.put("Areaqty2", "0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty3"))) { + result.put("Areaqty3", "0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty4"))) { + result.put("Areaqty4", "0"); + } + + return result; + } + + /** + * 当月区域、客户公共方法 + * + * @param param 、 + * @param title 、 + * @param customer 客户 、 + * @return JSONObject + */ + private JSONObject monthRegCust(List param, String title, String customer) { + + JSONObject result = new JSONObject(); + result.put("Title", title); + + Map> paramMap = param.stream() + .collect(Collectors.groupingBy(row -> row.getString("region_code"))); + + if (paramMap.isEmpty()) { + result.put("Areaqty1", "0"); + result.put("Areaqty2", "0"); + result.put("Areaqty3", "0"); + result.put("Areaqty4", "0"); + } + + for (String region_code : paramMap.keySet()) { + List list = paramMap.get(region_code); + + List custList = list.stream() + .filter(row -> customer.contains(row.getString("customer_name"))) + .collect(Collectors.toList()); + + String num = NumberUtil.round(custList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + ""; + + + switch (region_code) { + case "A1": + result.put("Areaqty1", num); + break; + case "A2": + result.put("Areaqty2", num); + break; + case "A3": + result.put("Areaqty3", num); + break; + case "A4": + result.put("Areaqty4", num); + break; + default: + break; + } + } + + if (ObjectUtil.isEmpty(result.getString("Areaqty1"))) { + result.put("Areaqty1", "0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty2"))) { + result.put("Areaqty2", "0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty3"))) { + result.put("Areaqty3", "0"); + } + if (ObjectUtil.isEmpty(result.getString("Areaqty4"))) { + result.put("Areaqty4", "0"); + } + + return result; + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TEST0001.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TEST0001.wql new file mode 100644 index 000000000..dac997a0b --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TEST0001.wql @@ -0,0 +1,660 @@ +[交易说明] + 交易名: 成品日报 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.customer_name TYPEAS f_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + SUM( ivt.canuse_qty ) / 1000 AS num, + attr.stor_id + FROM + st_ivt_structivt ivt + LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id + WHERE + ivt.canuse_qty > '0' + + GROUP BY attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + SUM( ivt.canuse_qty ) / 1000 AS num, + attr.stor_id + FROM + st_ivt_structivt ivt + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code + AND ivt.pcsn = sub.container_name + WHERE + DATEDIFF( NOW(), sub.date_of_production ) >= '90' + AND ivt.canuse_qty > '0' + + GROUP BY attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + SUM( ivt.canuse_qty ) / 1000 AS num, + attr.stor_id + FROM + st_ivt_structivt ivt + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code + AND ivt.pcsn = sub.container_name + WHERE + DATEDIFF( NOW(), sub.date_of_production ) > '60' + AND DATEDIFF( NOW(), sub.date_of_production ) <= '90' + AND ivt.canuse_qty > '0' + + GROUP BY attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + SUM( ivt.canuse_qty ) / 1000 AS num, + attr.stor_id + FROM + st_ivt_structivt ivt + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code + AND ivt.pcsn = sub.container_name + WHERE + DATEDIFF( NOW(), sub.date_of_production ) < '90' + AND ivt.canuse_qty > '0' + + GROUP BY attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + SUM( ivt.canuse_qty ) / 1000 AS num, + attr.stor_id + FROM + st_ivt_structivt ivt + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code + AND ivt.pcsn = sub.container_name + WHERE + ivt.canuse_qty > '0' + + OPTION 输入.customer_name <> "" + sub.customer_name in 输入.customer_name + ENDOPTION + + GROUP BY attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "6" + QUERY + SELECT + SUM( ivt.canuse_qty ) / 1000 AS num, + attr.stor_id + FROM + st_ivt_structivt ivt + LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code + AND ivt.pcsn = sub.container_name + WHERE + ivt.canuse_qty > '0' + + OPTION 输入.customer_name <> "" + sub.customer_name not in 输入.customer_name + ENDOPTION + + GROUP BY attr.stor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "7" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_id + FROM + st_ivt_iostorinvdis a + LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '0' + AND b.bill_type = '0001' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= b.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '0' + AND mst.bill_type = '0001' + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "8" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type in ('1001','1004') + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT ( b.confirm_time, 10 ) = DATE_SUB( CURDATE(), INTERVAL 1 DAY ) + OR LEFT ( confirm_time, 10 ) = CURDATE()) + AND CONCAT( DATE_SUB( CURDATE(), INTERVAL 1 DAY ), ' 08:00:00' ) <= b.confirm_time + AND CONCAT( CURDATE(), ' 08:00:00' ) >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type in ('1001','1004') + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "9" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_id + FROM + st_ivt_iostorinvdis a + LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '0' + AND b.bill_type = '0001' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '0' + AND mst.bill_type = '0001' + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "10" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type in ('1001','1004') + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH (LEFT ( b.confirm_time, 10 )) = MONTH (CURDATE()) + AND CONCAT( DATE_FORMAT( NOW(), '%Y-%m-01' ), ' 08:00:00' ) <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type in ('1001','1004') + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "11" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_id + FROM + st_ivt_iostorinvdis a + LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '0' + AND b.bill_type = '0001' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= b.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '0' + AND mst.bill_type = '0001' + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2) + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "12" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type in ('1001','1004') + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= b.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type in ('1001','1004') + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2) + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "13" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_id + FROM + st_ivt_iostorinvdis a + LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '0' + AND b.bill_type = '0001' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= b.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '0' + AND mst.bill_type = '0001' + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2),sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "14" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type in ('1001','1004') + AND b.bill_status = '99' + AND b.is_delete = '0' + AND (LEFT(b.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= b.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= b.confirm_time + + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type in ('1001','1004') + AND mst.bill_status = '99' + AND (LEFT(mst.confirm_time,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) + OR LEFT(confirm_time,10) = CURDATE()) + AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 08:00:00') <= mst.confirm_time + AND CONCAT(CURDATE(), ' 08:00:00') >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2),sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "15" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_id + FROM + st_ivt_iostorinvdis a + LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '0' + AND b.bill_type = '0001' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '0' + AND mst.bill_type = '0001' + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2) + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "16" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type in ('1001','1004') + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type in ('1001','1004') + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2) + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "17" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_id + FROM + st_ivt_iostorinvdis a + LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '0' + AND b.bill_type = '0001' + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '0' + AND mst.bill_type = '0001' + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2),sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "18" + QUERY + SELECT + SUM( dis.plan_qty ) / 1000 AS num, + LEFT(dis.pcsn,2) AS region_code, + sub.customer_name + FROM + ( SELECT + MIN( a.iostorinvdis_id ) AS iostorinvdis_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.bill_type in ('1001','1004') + AND b.bill_status = '99' + AND b.is_delete = '0' + AND MONTH(LEFT(b.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= b.confirm_time + AND NOW() >= b.confirm_time + GROUP BY + pcsn + ) AS a + LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = a.iostorinvdis_id + LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id + INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + WHERE + mst.is_delete = '0' + AND mst.io_type = '1' + AND mst.bill_type in ('1001','1004') + AND mst.bill_status = '99' + AND MONTH(LEFT(mst.confirm_time,10)) = MONTH(CURDATE()) + AND CONCAT(DATE_FORMAT(NOW(), '%Y-%m-01'), ' 08:00:00') <= mst.confirm_time + AND NOW() >= mst.confirm_time + + GROUP BY LEFT(dis.pcsn,2),sub.customer_name + + ENDSELECT + ENDQUERY + ENDIF 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 b9fa5a7c6..ebb431c3b 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 @@ -792,6 +792,8 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { JSONArray resultJSONArray = WQL.getWO("QST_IVT_CHECKOUTBILL").addParamMap(map).process().getResultJSONArray(0); + List ivtList = WQL.getWO("QST_IVT_CHECKOUTBILL").addParam("flag", "20").process().getResultJSONArray(0).toJavaList(JSONObject.class); + List> list = new ArrayList<>(); for (int i = 0; i < resultJSONArray.size(); i++) { @@ -818,15 +820,21 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { if (StrUtil.equals(jsonObject.getString("bill_type"), "1009")) { mp.put("业务类型", "手工出库"); } + + String box_weight = ivtList.stream() + .filter(row -> row.getString("bill_code").equals(jsonObject.getString("bill_code"))) + .map(row -> row.getDoubleValue("box_weight")) + .reduce(Double::sum).orElse(0.00).toString(); + //计划重量、实际重量、实际毛重、车号、箱数、收货地址(调拨显示到货仓库)、单据状态 mp.put("业务日期", jsonObject.getString("biz_date")); mp.put("计划重量", jsonObject.getString("qty")); mp.put("实际重量", jsonObject.getString("plan_qty")); - mp.put("实际毛重", jsonObject.getString("box_weight")); - mp.put("车号", jsonObject.getString("carno")); + mp.put("实际毛重", box_weight); + mp.put("车号", jsonObject.getString("order_number")); mp.put("箱数", jsonObject.getString("box_count")); if (StrUtil.equals(jsonObject.getString("bill_type"), "1004")){ - mp.put("收货地址", jsonObject.getString("stor_name")); + mp.put("收货地址", jsonObject.getString("out_stor_name")); }else { mp.put("收货地址", jsonObject.getString("receiptaddress")); } 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 337fcb122..20f06940c 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 @@ -91,13 +91,27 @@ cu.cust_name, IFNULL(dtl.vbeln,'') as vbeln, cu.cust_simple_name, - dtl.plan_qty + 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 LEFT JOIN st_ivt_iostorinvdtl dtl ON ios.iostorinv_id = dtl.iostorinv_id LEFT JOIN st_ivt_iostorinvdis dis ON dtl.iostorinvdtl_id = dis.iostorinvdtl_id + LEFT JOIN st_ivt_bsrealstorattr attr ON attr.stor_id = ios.out_stor_id 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, + a.iostorinv_id + FROM + st_ivt_iostorinvdtl a + LEFT JOIN ST_IVT_IOStorInv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '1' + and b.is_delete='0' + GROUP BY a.iostorinv_id + ) a ON a.iostorinv_id = ios.iostorinv_id WHERE ios.io_type = '1' and ios.is_delete='0' @@ -169,9 +183,10 @@ SELECT MAX(ios.bill_code) AS bill_code, MAX(ios.stor_name) AS stor_name, + MAX(attr.stor_name) AS out_stor_name, MAX(ios.bill_type) AS bill_type, MAX(ios.biz_date) AS biz_date, - sum(dis.real_qty) AS qty, + MAX(ios.total_qty) AS qty, MAX(cu.cust_code) AS cust_code, MAX(cu.cust_name) AS cust_name, MAX(dtl.vbeln) AS vbeln, @@ -179,9 +194,9 @@ CONCAT( sub.thickness_request, '*', sub.width_standard ) AS spec, MAX(tr.cust_name) AS wl_cust_name, MAX(ios.estimated_freight) AS estimated_freight, - MAX(dtl.plan_qty) AS plan_qty, + MAX(a.plan_qty) AS plan_qty, MAX(sub.box_weight) AS box_weight, - MAX(ios.carno) AS carno, + MAX(ios.order_number) AS order_number, MAX(ios.receiptaddress) AS receiptaddress, MAX( sd.label ) AS bill_status, count(DISTINCT(dis.box_no)) as box_count @@ -191,8 +206,21 @@ LEFT JOIN ST_IVT_IOStorInv ios ON ios.iostorinv_id = dtl.iostorinv_id LEFT JOIN md_cs_customerbase cu ON ios.cust_code = cu.cust_code LEFT JOIN md_cs_transportationbase tr ON ios.trans_code = tr.cust_code + LEFT JOIN st_ivt_bsrealstorattr attr ON attr.stor_id = ios.out_stor_id LEFT JOIN pdm_bi_subpackagerelationrecord sub ON sub.package_box_sn = dis.box_no AND dis.pcsn = sub.container_name AND dis.iostorinv_id = sub.bill_id LEFT JOIN sys_dict sd on ios.bill_status = sd.`value` and sd.`code` = 'io_bill_status' + LEFT JOIN ( + SELECT + SUM(a.assign_qty) AS plan_qty, + a.iostorinv_id + FROM + st_ivt_iostorinvdtl a + LEFT JOIN ST_IVT_IOStorInv b ON a.iostorinv_id = b.iostorinv_id + WHERE + b.io_type = '1' + and b.is_delete='0' + GROUP BY a.iostorinv_id + ) a ON a.iostorinv_id = ios.iostorinv_id WHERE ios.io_type = '1' AND ios.is_delete = '0' @@ -1089,5 +1117,33 @@ ENDQUERY ENDIF + IF 输入.flag = "20" + QUERY + SELECT + SUM(sub.box_weight) AS box_weight, + MAX(ios.bill_code) AS bill_code + FROM + ( + SELECT + a.box_no, + MAX(b.iostorinv_id) AS iostorinv_id, + MAX(a.pcsn) AS pcsn + 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' + GROUP BY a.box_no + ) dis + LEFT JOIN st_ivt_iostorinv ios ON dis.iostorinv_id = ios.iostorinv_id + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = dis.box_no AND dis.pcsn = sub.container_name + WHERE + ios.io_type = '1' + and ios.is_delete='0' + GROUP BY ios.bill_code + ENDSELECT + ENDQUERY + ENDIF 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 ac16a7b30..38ae59ec0 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/outbill/index.vue @@ -298,11 +298,11 @@ - - + +