零件加工报表,工作令加工进度表

master
赵嘉伟
parent 9dbee07ee9
commit 7d0114864b

@ -17,7 +17,7 @@ public interface ReportMapper {
List<IntegrationLogDto> findIntegrationLog(@Param("site")String site, @Param("param") Map<String,Object> map);
List<Map<String, Object>> partsManufacturing(@Param("param") Map<String,Object> map);
List<Map<String, Object>> partsManufacturing(Map<String,Object> map);
List<Map<String,Object>> surplusReturnTable(@Param("site")String site, @Param("locale")String locale,
@Param("item")String item, @Param("itemDescription")String itemDescription);

@ -40,137 +40,261 @@
</select>
<select id="partsManufacturing" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT * FROM (
SELECT cf.VALUE WORK_ORDER,zsd.SHOP_ORDER FINISHED_SHOP_ORDER,i.ITEM FINISHED_ITEM,it.DESCRIPTION
FINISHED_ITEM_DESCRIPTION,zsd.SFC FINISHED_SFC,
CASE WHEN o.OPERATION IS NOT NULL THEN
CASE WHEN zsd.DISPATCH_STATUS = 'NEW'THEN '新建'
WHEN zsd.DISPATCH_STATUS = 'RELEASE' THEN '发布'
WHEN zsd.DISPATCH_STATUS = 'PAUSE' THEN '暂挂'
WHEN zsd.DISPATCH_STATUS = 'START'THEN '已开始'
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN '已完成'
WHEN zsd.DISPATCH_STATUS = 'CANCEL' THEN '已取消'
ELSE '' END ELSE '' END FINISHED_OPERATION_STATUS,
o.OPERATION FINISHED_OPERATION,
CASE WHEN zsd4.HANDLE IS NOT NULL THEN '否' ELSE '是' END ZI_JIAN,
cf3.VALUE ITEM_NUMBER,so2.SHOP_ORDER,i2.ITEM,it2.DESCRIPTION ITEM_DESCRIPTION,
so2.QTY_TO_BUILD SHOP_ORDER_QTY,s2.SFC,o2.OPERATION,ot2.DESCRIPTION OPERATION_DESCRIPTION,zsd3.STEP_ID STEP_ID,
CASE WHEN zsd3.DISPATCH_STATUS = 'NEW'THEN '新建'
WHEN zsd3.DISPATCH_STATUS = 'RELEASE' THEN '发布'
WHEN zsd3.DISPATCH_STATUS = 'PAUSE' THEN '暂挂'
WHEN zsd3.DISPATCH_STATUS = 'START'THEN '已开始'
WHEN zsd3.DISPATCH_STATUS = 'COMPLETE' THEN '已完成'
WHEN zsd3.DISPATCH_STATUS = 'CANCEL' THEN '已取消'
ELSE '' END OPERATION_STATUS,o3.OPERATION CURRENT_OPERATION,ot3.DESCRIPTION CURRENT_OPERATION_DESCRIPTION,
CASE WHEN st2.STATUS = '405' THEN '是' ELSE '否' END DISPATCH_STATUS,
znu2.FULL_NAME
OPERATION_USER,zsd3.PLANNED_START_DATE,zsd3.PLANNED_COMP_DATE,zsd3.ACTUAL_START_DATE,zsd3.ACTUAL_COMPLETE_DATE,
zsd3.BLANKING_SIZE
FROM Z_SFC_DISPATCH zsd
-- INNER JOIN (
-- SELECT zsd.SFC,min(zsd.STEP_ID) STEP_ID,SITE FROM Z_SFC_DISPATCH zsd GROUP BY zsd.sfc,SITE
-- ) zsd2 ON zsd2.SFC = zsd.sfc AND zsd2.STEP_ID = zsd.STEP_ID AND zsd2.SITE = zsd.SITE
/*因为不根据stepID选所以选最小的一个stepID*/
INNER JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
INNER JOIN ITEM i ON i.HANDLE = so.ITEM_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE AND it.LOCALE = 'zh'
INNER JOIN OPERATION o ON o.OPERATION = zsd.OPERATION AND o.SITE = zsd.SITE AND o.CURRENT_REVISION = 'true' AND
o.OPERATION IN ('HJ_6106HJH1','HJ_6106HJH2','HJ_6106HJH3')
LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'WORK_ORDER'
/*从上面往下边开始查找子件*/
LEFT JOIN Z_SFC_DISPATCH zsd3 ON zsd3.HANDLE IN (
SELECT zsd2.HANDLE FROM
BOM_COMPONENT bc
INNER JOIN ITEM i ON i.HANDLE = bc.COMPONENT_GBO
INNER JOIN SHOP_ORDER so2 ON so2.ITEM_BO = i.HANDLE
LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so2.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER' AND cf2.VALUE =
cf.VALUE
INNER JOIN Z_SFC_DISPATCH zsd2 ON zsd2.SHOP_ORDER = so2.SHOP_ORDER AND zsd2.SITE = zsd.SITE
WHERE cf2.VALUE IS NOT NULL AND bc.BOM_BO = so.BOM_BO
)
INNER JOIN SHOP_ORDER so2 ON so2.SHOP_ORDER = zsd3.SHOP_ORDER AND so2.SITE = zsd.SITE
INNER JOIN ITEM i2 ON i2.HANDLE = so2.ITEM_BO
LEFT JOIN ITEM_T it2 ON it2.ITEM_BO = i2.HANDLE AND it2.LOCALE = 'zh'
INNER JOIN SFC s2 ON s2.SFC = zsd3.SFC AND s2.SITE = zsd.SITE
LEFT JOIN SFC_ROUTING sr ON sr.SFC_BO = s2.HANDLE
LEFT JOIN SFC_ROUTER st ON st.SFC_ROUTING_BO = sr.HANDLE AND st.IN_USE = 'true'
LEFT JOIN SFC_STEP ss ON ss.SFC_ROUTER_BO = st.HANDLE AND (ss.QTY_IN_QUEUE > 0 OR ss.QTY_IN_WORK > 0)
INNER JOIN OPERATION o2 ON o2.OPERATION = zsd3.OPERATION AND o2.SITE = zsd.SITE AND o2.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot2 ON ot2.OPERATION_BO = o2.HANDLE AND ot2.LOCALE = 'zh'
LEFT JOIN OPERATION o3 ON o3.OPERATION =
SUBSTR(SS.OPERATION_BO,INSTR(SS.OPERATION_BO,',',1,1)+1,INSTR(SS.OPERATION_BO,',',1,2) -
INSTR(SS.OPERATION_BO,',') -1) AND o3.SITE = zsd.SITE AND o3.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot3 ON ot3.OPERATION_BO = o3.HANDLE AND ot3.LOCALE = 'zh'
LEFT JOIN Z_NWA_USER znu2 ON znu2.USER_NAME = zsd3.EMPLOYEE AND zsd3.DISPATCH_SEQ = (
SELECT MAX(zsd4.DISPATCH_SEQ)
FROM Z_SFC_DISPATCH zsd4
WHERE zsd4.SFC = zsd3.SFC AND zsd.SITE = zsd4.SITE )
LEFT JOIN CUSTOM_FIELDS cf3
ON so2.HANDLE = cf3.HANDLE AND cf3."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf4
ON so2.HANDLE = cf4.HANDLE AND cf4."ATTRIBUTE" = 'WORK_ORDER'
INNER JOIN STATUS st2
ON st2.HANDLE = s2.STATUS_BO
LEFT JOIN Z_SFC_DISPATCH zsd4 ON zsd4.HANDLE = zsd3.HANDLE AND zsd4.DISPATCH_STATUS != 'COMPLETE' AND
zsd4.DISPATCH_STATUS != 'CANCEL'
<!-- LEFT JOIN Z_SFC_DISPATCH zsd4 ON zsd4.HANDLE-->
<!-- = (-->
<!-- SELECT zsd2.HANDLE FROM Z_SFC_DISPATCH zsd2-->
<!-- WHERE zsd2.DISPATCH_STATUS != 'COMPLETE' AND zsd4.DISPATCH_STATUS != 'CANCEL' AND zsd2.HANDLE = zsd3.HANDLE AND ROWNUM < 2-->
<!-- )-->
<where>
zsd.SITE = #{param.site} AND cf.VALUE = #{param.workOrder}
<if test="param.itemNumber != null and param.itemNumber != ''">
AND CF3.VALUE LIKE '%${param.itemNumber}%'
</if>
<if test="param.shopOrder != null and param.shopOrder != ''">
AND (zsd.SHOP_ORDER = #{param.shopOrder} OR zsd3.SHOP_ORDER = #{param.shopOrder})
</if>
<if test="param.item != null and param.item != ''">
AND (i.ITEM = #{param.item} OR it.DESCRIPTION = #{param.item} OR i2.ITEM = #{param.item} OR
it2.DESCRIPTION = #{param.item})
</if>
<if test="param.currentOperation != null and param.currentOperation != ''">
AND (ot3.DESCRIPTION LIKE '%${param.currentOperation}%' OR
o3.OPERATION LIKE '%${param.currentOperation}%')
</if>
<if test="param.operation != null and param.operation != ''">
AND (O.OPERATION LIKE '%${param.operation}%'
OR OT.DESCRIPTION LIKE '%${param.operation}%'
OR o2.OPERATION LIKE '%${param.operation}'
OR ot2.DESCRIPTION LIKE '%${param.operation}'
)
</if>
<if test="param.status != null and param.status != ''">
<if test="param.status == 'Y'.toString()">
AND st2.STATUS = '405'
</if>
<if test="param.status == 'N'.toString()">
AND st2.STATUS != '405'
</if>
</if>
<if test="param.startDateTime != null and param.startDateTime != ''">
AND ZSD3.ACTUAL_START_DATE &gt;= TO_DATE(#{param.startDateTime}, 'YYYY-MM-DD') - 8/24
</if>
<if test="param.endDateTime != null and param.endDateTime != ''">
AND ZSD3.ACTUAL_START_DATE &lt;= TO_DATE(#{param.endDateTime}|| '15:59:59', 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="param.completeStartDateTime != null and param.completeStartDateTime != ''">
AND ZSD3.ACTUAL_COMPLETE_DATE &gt;= TO_DATE(#{param.completeStartDateTime}, 'YYYY-MM-DD') - 8/24
</if>
<if test="param.completeEndDateTime != null and param.completeEndDateTime != ''">
AND ZSD3.ACTUAL_COMPLETE_DATE &lt;= TO_DATE(#{param.completeEndDateTime}|| '15:59:59',
'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="param.finishedStatus != null and param.finishedStatus != ''">
AND zsd.DISPATCH_STATUS = #{param.finishedStatus}
</if>
<if test="param.partsStatus != null and param.partsStatus != ''">
AND zsd3.DISPATCH_STATUS = #{param.partsStatus}
</if>
</where>
) ORDER BY FINISHED_OPERATION,FINISHED_SHOP_ORDER,SFC,STEP_ID
SELECT
DISTINCT
SITE,
FINISHED_WORK_ORDER,
FINISHED_SHOP_ORDER,
FINISHED_SFC,
FINISHED_ITEM,
FINISHED_ITEM_DESCRIPTION,
FINISHED_OPERATION,
FINISHED_OPERATION_DESCRIPTION,
CASE WHEN FINISHED_STATUS = 'NEW'THEN '新建'
WHEN FINISHED_STATUS = 'RELEASE' THEN '发布'
WHEN FINISHED_STATUS = 'PAUSE' THEN '暂挂'
WHEN FINISHED_STATUS = 'START'THEN '已开始'
WHEN FINISHED_STATUS = 'COMPLETE' THEN '已完成'
WHEN FINISHED_STATUS = 'CANCEL' THEN '已取消'
ELSE '' END FINISHED_STATUS,
HJ_IS_COMPLETE,
ITEM_NUMBER,
SHOP_ORDER ,
ITEM ,
ITEM_DESCRIPTION,
DISPATCH_QTY ,
BLANKING_SIZE ,
SFC ,
OPERATION ,
OPERATION_DESCRIPTION,
STEP_ID,
CASE WHEN DISPATCH_STATUS = 'NEW'THEN '新建'
WHEN DISPATCH_STATUS = 'RELEASE' THEN '发布'
WHEN DISPATCH_STATUS = 'PAUSE' THEN '暂挂'
WHEN DISPATCH_STATUS = 'START'THEN '已开始'
WHEN DISPATCH_STATUS = 'COMPLETE' THEN '已完成'
WHEN DISPATCH_STATUS = 'CANCEL' THEN '已取消'
ELSE '' END DISPATCH_STATUS,
CURRENT_OPERATION,
CURRENT_OPERATION_DESCRIPTION,
IS_COMPLETE,
EMPLOYEE_DESCRIPTION,
PLANNED_START_DATE ,
PLANNED_COMP_DATE,
ACTUAL_START_DATE,
ACTUAL_COMPLETE_DATE
FROM
(
SELECT
FINISHED_WORK_ORDER,
FINISHED_SHOP_ORDER,
FINISHED_SFC,
FINISHED_ITEM,
FINISHED_ITEM_DESCRIPTION,
FINISHED_OPERATION,
FINISHED_OPERATION_DESCRIPTION,
FINISHED_STATUS,
zsd.SITE,
CASE
WHEN zsdTemplate.NUM > 1 THEN '未完成'
ELSE '完成'
END HJ_IS_COMPLETE,
cf2.VALUE ITEM_NUMBER,
so.SHOP_ORDER ,
i.ITEM ,
it.DESCRIPTION ITEM_DESCRIPTION,
zsd2.DISPATCH_QTY ,
zsd2.BLANKING_SIZE ,
zsd2.SFC ,
zsd2.OPERATION ,
ot2.DESCRIPTION OPERATION_DESCRIPTION,
zsd2.DISPATCH_STATUS ,
o3.OPERATION CURRENT_OPERATION,
ot3.DESCRIPTION CURRENT_OPERATION_DESCRIPTION,
CASE
WHEN zsd3.NUM > 1 THEN '未完成'
ELSE '完成'
END IS_COMPLETE,
zsd2.EMPLOYEE_DESCRIPTION,
zsd2.PLANNED_START_DATE ,
zsd2.PLANNED_COMP_DATE,
zsd2.ACTUAL_START_DATE ,
zsd2.ACTUAL_COMPLETE_DATE,
zsd2.STEP_ID
FROM
(
SELECT
cf.VALUE FINISHED_WORK_ORDER,
so.SHOP_ORDER FINISHED_SHOP_ORDER,
zsd.SFC FINISHED_SFC,
i.ITEM FINISHED_ITEM,
it.DESCRIPTION FINISHED_ITEM_DESCRIPTION,
o.OPERATION FINISHED_OPERATION,
ot.DESCRIPTION FINISHED_OPERATION_DESCRIPTION,
so.BOM_BO ,
zsd.SITE,
zsd.DISPATCH_STATUS FINISHED_STATUS
FROM
Z_SFC_DISPATCH zsd
INNER JOIN SHOP_ORDER so ON
so.SHOP_ORDER = zsd.SHOP_ORDER
AND so.SITE = zsd.SITE
INNER JOIN ITEM i ON
i.HANDLE = so.ITEM_BO
LEFT JOIN ITEM_T it ON
it.ITEM_BO = i.HANDLE
AND it.LOCALE = 'zh'
INNER JOIN OPERATION o ON
o.OPERATION = zsd.OPERATION
AND o.SITE = zsd.SITE
AND o.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot ON
ot.OPERATION_BO = o.HANDLE
INNER JOIN CUSTOM_FIELDS cf ON
cf.HANDLE = so.HANDLE
AND cf."ATTRIBUTE" = 'WORK_ORDER'
WHERE
zsd.OPERATION IN ('HJ_6106HJH1', 'HJ_6106HJH2', 'HJ_6106HJH3')
AND cf.VALUE = #{workOrder}
AND zsd.SITE = #{site}
)zsd
INNER JOIN (
SELECT
COUNT(zsd.HANDLE) NUM,
cf.VALUE WORK_ORDER ,
zsd.SITE
FROM
Z_SFC_DISPATCH zsd
INNER JOIN SHOP_ORDER so ON
so.SHOP_ORDER = zsd.SHOP_ORDER
AND so.SITE = zsd.SITE
INNER JOIN CUSTOM_FIELDS cf ON
cf.HANDLE = so.HANDLE
AND cf."ATTRIBUTE" = 'WORK_ORDER'
WHERE
zsd.DISPATCH_STATUS != 'COMPLETE'
AND zsd.DISPATCH_STATUS != 'CANCEL'
AND cf.VALUE = #{workOrder}
GROUP BY
cf.VALUE,
zsd.SITE
) zsdTemplate ON
zsdTemplate.WORK_ORDER = zsd.FINISHED_WORK_ORDER
AND zsdTemplate.SITE = zsd.SITE
INNER JOIN BOM_COMPONENT bc ON
bc.BOM_BO = zsd.BOM_BO
INNER JOIN ITEM i ON
i.HANDLE = bc.COMPONENT_GBO
LEFT JOIN ITEM_T it ON
it.ITEM_BO = i.HANDLE
AND it.LOCALE = 'zh'
INNER JOIN SHOP_ORDER so ON
so.ITEM_BO = i.HANDLE
AND i.SITE = so.SITE
INNER JOIN CUSTOM_FIELDS cf ON
cf.HANDLE = so.HANDLE
AND cf."ATTRIBUTE" = 'WORK_ORDER'
AND cf.VALUE = zsd.FINISHED_WORK_ORDER
/*子件的查询*/
INNER JOIN Z_SFC_DISPATCH zsd2 ON
zsd2.SHOP_ORDER = so.SHOP_ORDER
AND zsd.SITE = zsd2.SITE
LEFT JOIN CUSTOM_FIELDS cf2 ON
so.HANDLE = cf2.HANDLE
AND cf2."ATTRIBUTE" = 'ITEM_NUMBER'
INNER JOIN OPERATION o2 ON
o2.OPERATION = zsd2.OPERATION
AND o2.SITE = zsd.SITE
LEFT JOIN OPERATION_T ot2 ON
ot2.OPERATION_BO = o2.HANDLE
AND ot2.LOCALE = 'zh'
INNER JOIN SFC s2 ON
s2.SFC = zsd2.SFC
AND s2.SITE = zsd.SITE
LEFT JOIN SFC_ROUTING sr ON
sr.SFC_BO = s2.HANDLE
LEFT JOIN SFC_ROUTER st ON
st.SFC_ROUTING_BO = sr.HANDLE
AND st.IN_USE = 'true'
LEFT JOIN SFC_STEP ss ON
ss.SFC_ROUTER_BO = st.HANDLE
AND (ss.QTY_IN_QUEUE > 0
OR ss.QTY_IN_WORK > 0)
LEFT JOIN OPERATION o3 ON
o3.OPERATION = SPLIT(ss.OPERATION_BO,
2)
AND o3.SITE = zsd.SITE
AND o3.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot3 ON
ot3.OPERATION_BO = o3.HANDLE
AND ot3.LOCALE = 'zh'
LEFT JOIN (
SELECT
COUNT(HANDLE) NUM,
SHOP_ORDER,
SITE
FROM
Z_SFC_DISPATCH zsd
WHERE
SITE = #{site}
AND zsd.DISPATCH_STATUS != 'COMPLETE'
AND zsd.DISPATCH_STATUS != 'CANCEL'
GROUP BY
SITE ,
SHOP_ORDER
) zsd3 ON
zsd3.SHOP_ORDER = so.SHOP_ORDER
AND zsd3.SITE = zsd.SITE
)
<where>
SITE = #{site} AND FINISHED_WORK_ORDER = #{workOrder}
<if test="itemNumber != null and itemNumber != ''">
AND ITEM_NUMBER = #{itemNumber}
</if>
<if test="shopOrder != null and shopOrder != ''">
AND (FINISHED_SHOP_ORDER = #{shopOrder} OR SHOP_ORDER = #{shopOrder})
</if>
<if test="item != null and item != ''">
AND (FINISHED_ITEM = #{item} OR FINISHED_ITEM_DESCRIPTION = #{item}
OR ITEM = #{item} OR ITEM_DESCRIPTION = #{item}
)
</if>
<if test="currentOperation != null and currentOperation != ''">
AND (CURRENT_OPERATION LIKE '%${currentOperation}%' OR
CURRENT_OPERATION_DESCRIPTION LIKE '%${currentOperation}%'
)
</if>
<if test="operation != null and operation != ''">
AND (FINISHED_OPERATION LIKE '%${operation}%'
OR FINISHED_OPERATION_DESCRIPTION LIKE '%${operation}%'
OR OPERATION LIKE '%${operation}%'
OR OPERATION_DESCRIPTION LIKE '%${operation}%'
)
</if>
<if test="finishedStatus != null and finishedStatus != ''">
AND FINISHED_STATUS = #{finishedStatus}
</if>
<if test="startDateTime != null and startDateTime != ''">
AND ACTUAL_START_DATE &gt;= TO_DATE(#{startDateTime}, 'YYYY-MM-DD') - 8/24
</if>
<if test="endDateTime != null and endDateTime != ''">
AND ACTUAL_START_DATE &lt;= TO_DATE(#{endDateTime}|| '15:59:59', 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="completeStartDateTime != null and completeStartDateTime != ''">
AND ACTUAL_COMPLETE_DATE &gt;= TO_DATE(#{completeStartDateTime}, 'YYYY-MM-DD') - 8/24
</if>
<if test="completeEndDateTime != null and completeEndDateTime != ''">
AND ACTUAL_COMPLETE_DATE &lt;= TO_DATE(#{completeEndDateTime}|| '15:59:59',
'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="hjIsCompleted != null and hjIsCompleted != ''">
AND HJ_IS_COMPLETE = #{hjIsCompleted}
</if>
<if test="isCompleted != null and hjIsCompleted != ''">
AND IS_COMPLETE = #{isCompleted}
</if>
</where>
ORDER BY FINISHED_OPERATION,FINISHED_SHOP_ORDER,SFC,STEP_ID
</select>
<select id="surplusReturnTable" resultType="java.util.HashMap">
@ -547,9 +671,9 @@
ELSE ''
END SURPLUS_DAY,
CASE WHEN zsd.ACTUAL_START_DATE IS NOT NULL AND cf3.VALUE IS NOT NULL AND cf3.VALUE != 0 AND zsd.ACTUAL_COMPLETE_DATE IS NULL
THEN ROUND(TO_NUMBER(SYSDATE - (zsd.ACTUAL_START_DATE+8/24))*24/TO_NUMBER(cf3.VALUE),2)*100 || '%'
THEN ROUND(TO_NUMBER(SYSDATE - (zsd.ACTUAL_START_DATE+8/24))*24/TO_NUMBER(cf3.VALUE * zsd.DISPATCH_QTY),2)*100 || '%'
WHEN zsd.ACTUAL_START_DATE IS NOT NULL AND cf3.VALUE IS NOT NULL AND cf3.VALUE != 0 AND zsd.ACTUAL_COMPLETE_DATE IS NOT NULL
THEN ROUND(TO_NUMBER((zsd.ACTUAL_COMPLETE_DATE+8/24) - (zsd.ACTUAL_START_DATE+8/24))*24/TO_NUMBER(cf3.VALUE),2)*100 || '%'
THEN ROUND(TO_NUMBER((zsd.ACTUAL_COMPLETE_DATE+8/24) - (zsd.ACTUAL_START_DATE+8/24))*24/TO_NUMBER(cf3.VALUE * zsd.DISPATCH_QTY),2)*100 || '%'
ELSE ''
END PROCESS_HOURS
FROM Z_SFC_DISPATCH zsd
@ -674,16 +798,18 @@
FROM (
SELECT zsd.WORK_ORDER,
zsd.ITEM_NUMBER,
zsd.DISPATCH_SEQ,
TO_CHAR(TO_NUMBER(zsd.HOURS_PERCENT), 'FM9999990.00') HOURS_PERCENT,
TO_CHAR(TO_NUMBER(zsd.OPERATION_PERCENT), 'FM9999990.00') OPERATION_PERCENT,
zsd.DISPATCH_QTY,
TO_CHAR(TO_NUMBER(zsd.HOURS_PERCENT), 'FM9999990.00') || '%' HOURS_PERCENT,
TO_CHAR(TO_NUMBER(zsd.OPERATION_PERCENT), 'FM9999990.00') || '%' OPERATION_PERCENT,
CREATED_DATE_TIME,
zsd.WORK_CENTER,
CASE WHEN zsd2.QTY > 0 THEN '未完成' ELSE '完成' END IS_COMPLETE
FROM (
SELECT WORK_ORDER,
ITEM_NUMBER,
MIN(CREATED_DATE_TIME) CREATED_DATE_TIME,
SUM(DISPATCH_SEQ) DISPATCH_SEQ,
SUM(DISPATCH_QTY) DISPATCH_QTY,
WORK_CENTER,
CASE
WHEN SUM(COMP_HOURS) != 0 THEN (SUM(COMP_HOURS) / SUM(HOURS) * 100)
ELSE 0 END HOURS_PERCENT,
@ -695,11 +821,12 @@
SELECT cf2.VALUE WORK_ORDER,
cf.VALUE ITEM_NUMBER,
zsd.CREATED_DATE_TIME,
zsd.DISPATCH_SEQ,
zsd.PROD_HOURS * zsd.DISPATCH_SEQ HOURS,
zsd.DISPATCH_QTY,
zsd.PROD_HOURS * zsd.DISPATCH_QTY HOURS,
zsd.WORK_CENTER WORK_CENTER,
CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
THEN zsd.PROD_HOURS * zsd.DISPATCH_SEQ
THEN zsd.PROD_HOURS * zsd.DISPATCH_QTY
ELSE 0 END COMP_HOURS,
CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
@ -712,12 +839,12 @@
ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf2
ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
WHERE zsd.SITE = #{site}
WHERE zsd.SITE = '1000'
)
GROUP BY WORK_ORDER, ITEM_NUMBER
GROUP BY WORK_ORDER, ITEM_NUMBER,WORK_CENTER
) zsd
LEFT JOIN (
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY,zsd.WORK_CENTER
FROM Z_SFC_DISPATCH zsd
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
LEFT JOIN CUSTOM_FIELDS cf
@ -726,22 +853,25 @@
ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
WHERE zsd.DISPATCH_STATUS != 'COMPLETE'
AND zsd.DISPATCH_STATUS != 'CANCEL'
GROUP BY cf2.VALUE, cf.VALUE
) zsd2 ON zsd2.WORK_ORDER || zsd2.ITEM_NUMBER = zsd.WORK_ORDER || zsd.ITEM_NUMBER
GROUP BY cf2.VALUE, cf.VALUE,zsd.WORK_CENTER
) zsd2 ON zsd2.WORK_ORDER || zsd2.ITEM_NUMBER = zsd.WORK_ORDER || zsd.ITEM_NUMBER AND zsd2.WORK_CENTER = zsd.WORK_CENTER
LEFT JOIN (
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY,zsd.WORK_CENTER
FROM Z_SFC_DISPATCH zsd
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
LEFT JOIN CUSTOM_FIELDS cf
ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf2
ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
GROUP BY cf2.VALUE, cf.VALUE
) zsd3 ON zsd3.WORK_ORDER || zsd3.ITEM_NUMBER = zsd.WORK_ORDER || zsd.ITEM_NUMBER
GROUP BY cf2.VALUE, cf.VALUE,zsd.WORK_CENTER
) zsd3 ON zsd3.WORK_ORDER || zsd3.ITEM_NUMBER = zsd.WORK_ORDER || zsd.ITEM_NUMBER AND zsd3.WORK_CENTER = zsd.WORK_CENTER AND zsd3.WORK_CENTER = zsd.WORK_CENTER
WHERE (zsd.WORK_ORDER IS NOT NULL OR zsd.ITEM_NUMBER IS NOT NULL)
)
<where>
1 = 1
<if test="workCenter != null and workCenter != ''">
AND WORK_CENTER = #{workCenter}
</if>
<if test="workOrder != null and workOrder != ''">
AND WORK_ORDER = #{workOrder}
</if>

Loading…
Cancel
Save