rev:兰州需求开发

This commit is contained in:
2023-12-22 16:03:54 +08:00
parent 478dbc91e9
commit 2c804c1a19
9 changed files with 2031 additions and 201 deletions

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> custIvtBList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "5")
.addParam("customer_name", "('" + collectB1 + "')")
.addParam("customer_name", "('"+collectB1+"')")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// C库存集合
List<JSONObject> custIvtCList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "5")
.addParam("customer_name", "('" + collectC1 + "')")
.addParam("customer_name", "('"+collectC1+"')")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 其他库存集合
List<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> yesterdayInList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "7")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有昨日出库量客户分组集合
// 所有昨日出库量客户、仓库分组集合
List<JSONObject> yesterdayOutList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "8")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月入库量客户分组集合
// 所有昨日调拨(出库)量客户、仓库分组集合
List<JSONObject> yesterdayAllotList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "88")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月入库量客户、仓库分组集合
List<JSONObject> monthInList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "9")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月出库量客户分组集合
// 所有当月出库量客户、仓库分组集合
List<JSONObject> monthOutList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "10")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月调拨(出库)量客户、仓库分组集合
List<JSONObject> monthAllotList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "100")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有上个月出库量客户、仓库分组集合
List<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> yesterdayOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "12")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有昨日调拨出库量区域分组集合
List<JSONObject> yesterdayAllotRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "122")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有昨日入库量区域、客户分组集合
List<JSONObject> yesterdayCustInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "13")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
@@ -371,6 +351,10 @@ public class AutoQueryProudDayData {
List<JSONObject> yesterdayCustOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "14")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有昨日调拨出库量区域、客户分组集合
List<JSONObject> yesterdayCustAllotRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "144")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月入库量区域分组集合
List<JSONObject> monthInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "15")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
@@ -379,6 +363,10 @@ public class AutoQueryProudDayData {
List<JSONObject> monthOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "16")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月调拨出库量区域分组集合
List<JSONObject> monthAllotRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "166")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月入库量区域、客户分组集合
List<JSONObject> monthCustInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "17")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
@@ -387,62 +375,119 @@ public class AutoQueryProudDayData {
List<JSONObject> monthCustOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "18")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月调拨出库量区域、客户分组集合
List<JSONObject> 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<JSONObject> todayCustIvtList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "19")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 当月入库量调拨入库默认1-21号根据客户分组
List<JSONObject> 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<JSONObject> dataList) {
JSONObject result = new JSONObject();
// 兰州一期仓(除BC)
List<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> todayCustIvtList, List<JSONObject> 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;
}
}

View File

@@ -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<JSONObject> allIvtList = WQL.getWO("TEST0001").addParam("flag", "1").process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 超期库存集合
List<JSONObject> sidIvtList = WQL.getWO("TEST0001").addParam("flag", "2").process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 临期库存集合
List<JSONObject> faceIvtList = WQL.getWO("TEST0001").addParam("flag", "3").process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 正常库龄
List<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<String> bList = new ArrayList<>(Arrays.asList(splitB));
String collectB1 = String.join("','", bList);
String[] splitC = custC.split(",");
ArrayList<String> cList = new ArrayList<>(Arrays.asList(splitC));
String collectC1 = String.join("','", cList);
String in_cust = custB + "," + custC;
String[] splitAll = in_cust.split(",");
ArrayList<String> aAndBList = new ArrayList<>(Arrays.asList(splitAll));
String collectAll = String.join("','", aAndBList);
// B库存集合
List<JSONObject> custIvtBList = WQL.getWO("TEST0001").addParam("flag", "5")
.addParam("customer_name", "('" + collectB1 + "')")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// C库存集合
List<JSONObject> custIvtCList = WQL.getWO("TEST0001").addParam("flag", "5")
.addParam("customer_name", "('" + collectC1 + "')")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 其他库存集合
List<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> yesterdayInList = WQL.getWO("TEST0001").addParam("flag", "7")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有昨日出库量客户分组集合
List<JSONObject> yesterdayOutList = WQL.getWO("TEST0001").addParam("flag", "8")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月入库量客户分组集合
List<JSONObject> monthInList = WQL.getWO("TEST0001").addParam("flag", "9")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月出库量客户分组集合
List<JSONObject> monthOutList = WQL.getWO("TEST0001").addParam("flag", "10")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// ---- 昨日入库量 ----
JSONObject yesterdayIn = new JSONObject();
yesterdayIn.put("Title", "昨日入库量");
// B客户
List<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> yesterdayInRegList = WQL.getWO("TEST0001").addParam("flag", "11")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有昨日出库量区域分组集合
List<JSONObject> yesterdayOutRegList = WQL.getWO("TEST0001").addParam("flag", "12")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有昨日入库量区域、客户分组集合
List<JSONObject> yesterdayCustInRegList = WQL.getWO("TEST0001").addParam("flag", "13")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有昨日出库量区域、客户分组集合
List<JSONObject> yesterdayCustOutRegList = WQL.getWO("TEST0001").addParam("flag", "14")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月入库量区域分组集合
List<JSONObject> monthInRegList = WQL.getWO("TEST0001").addParam("flag", "15")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月出库量区域分组集合
List<JSONObject> monthOutRegList = WQL.getWO("TEST0001").addParam("flag", "16")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月入库量区域、客户分组集合
List<JSONObject> monthCustInRegList = WQL.getWO("TEST0001").addParam("flag", "17")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 所有当月出库量区域、客户分组集合
List<JSONObject> 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<JSONObject> param, String title) {
JSONObject result = new JSONObject();
result.put("Title", title);
Map<String, List<JSONObject>> 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<JSONObject> 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<JSONObject> param, String title, String customer) {
JSONObject result = new JSONObject();
result.put("Title", title);
Map<String, List<JSONObject>> 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<JSONObject> list = paramMap.get(region_code);
List<JSONObject> 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;
}
}

View File

@@ -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

View File

@@ -792,6 +792,8 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
JSONArray resultJSONArray = WQL.getWO("QST_IVT_CHECKOUTBILL").addParamMap(map).process().getResultJSONArray(0);
List<JSONObject> ivtList = WQL.getWO("QST_IVT_CHECKOUTBILL").addParam("flag", "20").process().getResultJSONArray(0).toJavaList(JSONObject.class);
List<Map<String, Object>> 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"));
}

View File

@@ -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

View File

@@ -298,11 +298,11 @@
<el-table-column show-overflow-tooltip prop="bill_type" :formatter="bill_typeFormat" label="业务类型" />
<el-table-column show-overflow-tooltip width="100" prop="biz_date" label="业务日期" />
<el-table-column show-overflow-tooltip label="明细数" align="center" prop="detail_count" width="60" />
<el-table-column show-overflow-tooltip label="计划重量" align="center" prop="total_qty" width="100" />
<el-table-column show-overflow-tooltip label="实际重量" align="center" prop="plan_qty" width="100" />
<el-table-column show-overflow-tooltip label="计划重量" align="center" prop="total_qty" width="100" :formatter="crud.formatNum3" />
<el-table-column show-overflow-tooltip label="实际重量" align="center" prop="plan_qty" width="100" :formatter="crud.formatNum3" />
<el-table-column show-overflow-tooltip label="收货地址" align="center" prop="total_qty" width="100">
<template slot-scope="scope">
{{ scope.row.bill_type === '1004' ? scope.row.stor_name : scope.row.receiptaddress }}
{{ scope.row.bill_type === '1004' ? scope.row.out_stor_name : scope.row.receiptaddress }}
</template>
</el-table-column>
<el-table-column show-overflow-tooltip label="客户" align="center" prop="cust_simple_name" width="100" />