Merge remote-tracking branch 'origin/master'

master
zpl 3 years ago
commit 3d89254435

@ -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 FINISHED_STATUS = #{hjIsCompleted}
</if>
<if test="isCompleted != null and isCompleted != ''">
AND IS_COMPLETE = #{isCompleted}
</if>
</where>
ORDER BY FINISHED_OPERATION,FINISHED_SHOP_ORDER,SFC,STEP_ID
</select>
<select id="surplusReturnTable" resultType="java.util.HashMap">
@ -209,12 +333,12 @@
CF.VALUE ITEM_SPEC,
ZRRT.ACTUAL_START_DATE ACTUAL_START_DATE,ZRRT.ACTUAL_COMPLETE_DATE ACTUAL_COMPLETE_DATE,
'' SHUT_DOWN_TIME,/*暂时无法计算*/
CASE WHEN ZRRT.WAIT_END_DATE IS NOT NULL THEN TO_CHAR(TO_NUMBER((ZRRT.WAIT_END_DATE -ZRRT.WAIT_START_DATE)*24),'FM9999990.000')
ELSE TO_CHAR(TO_NUMBER((SYSDATE-(ZRRT.WAIT_START_DATE + 8/24))*24),'FM9999990.000')
END REPAIR_WAIT_TIME,
CASE WHEN ZRRT.ACTUAL_COMPLETE_DATE IS NOT NULL THEN TO_CHAR(TO_NUMBER((ZRRT.ACTUAL_COMPLETE_DATE-ZRRT.CREATED_DATE_TIME-ZRRT.WAIT_TIME)*24),'FM9999990.000')
CASE WHEN ZRRT.ACTUAL_START_DATE IS NOT NULL THEN TO_CHAR(TO_NUMBER((ZRRT.ACTUAL_START_DATE -ZRRT.CREATED_DATE_TIME)*24),'FM9999990.000')
ELSE TO_CHAR(TO_NUMBER((SYSDATE -ZRRT.CREATED_DATE_TIME)*24),'FM9999990.000')
END REPORT_WAIT_TIME ,
CASE WHEN ZRRT.ACTUAL_COMPLETE_DATE IS NOT NULL THEN TO_CHAR(TO_NUMBER((ZRRT.ACTUAL_COMPLETE_DATE-ZRRT.CREATED_DATE_TIME)*24) - NVL(ZRRT.WAIT_TIME,0),'FM9999990.000')
ELSE TO_CHAR(TO_NUMBER((SYSDATE- 8/24 - ZRRT.CREATED_DATE_TIME-ZRRT.WAIT_TIME)*24),'FM9999990.000')
END REPAIR_TIME,
END REPAIR_TIME ,
CASE WHEN ZRRT.STATUS = '401' THEN '待维修'
WHEN ZRRT.STATUS = '501' THEN '维修中'
WHEN ZRRT.STATUS = '502' THEN '维修等待'
@ -223,7 +347,7 @@
WHEN ZRRT.STATUS = '601' THEN '报修单确认'
END STATUS
,ZRRT.REPORT_USER REPORT_USER,ZNU.FULL_NAME REPORT_USER_DESCRIPTION,
ZRRT.REPAIR_USERS ,ZRRT.REMARK
ZRRT.REPAIR_USERS ,ZRRT.REMARK , ZRRT.CREATED_DATE_TIME REPORT_DATE_TIME
FROM
Z_RESOURCE_REPAIR_TASK ZRRT
INNER JOIN RESRCE R ON R.RESRCE = ZRRT.RESOURCE_NO AND R.SITE = ZRRT.SITE
@ -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
@ -618,8 +742,11 @@
CASE
WHEN zab.NC_QTY IS NOT NULL THEN zsd.DISPATCH_QTY - TO_NUMBER(zab.NC_QTY)
ELSE zsd.DISPATCH_QTY END QUALIFIED_NUM,
zsd.PROD_HOURS,
zsd.ACTUAL_PROD_HOURS,
NVL(zsd.PROD_HOURS,0) PROD_HOURS,
NVL(zsd.ACTUAL_PROD_HOURS,0) ACTUAL_PROD_HOURS,
CASE WHEN ZSD.PROD_HOURS IS NULL THEN 0
WHEN zab.NC_QTY IS NOT NULL THEN ROUND((zsd.DISPATCH_QTY - TO_NUMBER(zab.NC_QTY))*ZSD.PROD_HOURS ,4)
ELSE ROUND(zsd.DISPATCH_QTY*ZSD.PROD_HOURS ,4) END TOTAL_PROD_HOURS ,
zsd.EMPLOYEE_DESCRIPTION,
zsd.ACTUAL_START_DATE,
zsd.ACTUAL_COMPLETE_DATE,
@ -670,20 +797,27 @@
</select>
<select id="findWorkOrderSchedule" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT *
SELECT DISTINCT *
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,
CREATED_DATE_TIME,
CASE WHEN zsd2.QTY > 0 THEN '未完成' ELSE '完成' END IS_COMPLETE
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,
zsd.CREATED_DATE_TIME,
zsd.WORK_CENTER,
wct.DESCRIPTION WORK_CENTER_DESCRIPTION,
zsd.SUM_HOURS,
CASE WHEN zsd2.QTY > 0 THEN '未完成' ELSE '完成' END IS_COMPLETE,
zsd.SITE
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,
SITE,
SUM(COMP_HOURS) SUM_HOURS,
CASE
WHEN SUM(COMP_HOURS) != 0 THEN (SUM(COMP_HOURS) / SUM(HOURS) * 100)
ELSE 0 END HOURS_PERCENT,
@ -695,11 +829,13 @@
SELECT cf2.VALUE WORK_ORDER,
cf.VALUE ITEM_NUMBER,
zsd.CREATED_DATE_TIME,
zsd.DISPATCH_SEQ,
zsd.PROD_HOURS * zsd.DISPATCH_SEQ HOURS,
zsd.SITE,
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'
@ -713,40 +849,53 @@
LEFT JOIN CUSTOM_FIELDS cf2
ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
WHERE zsd.SITE = #{site}
)
GROUP BY WORK_ORDER, ITEM_NUMBER
<if test="workOrder != null and workOrder != ''">
AND cf2.VALUE = #{workOrder}
</if>
<if test="itemNumber != null and itemNumber != ''">
AND cf.VALUE = #{itemNumber}
</if>
)
GROUP BY SITE,WORK_ORDER, ITEM_NUMBER,WORK_CENTER
) zsd
LEFT JOIN (
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY
LEFT JOIN (
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'
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
LEFT JOIN (
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY
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'
WHERE zsd.DISPATCH_STATUS != 'COMPLETE' AND zsd.DISPATCH_STATUS != 'CANCEL' AND zsd.SITE= #{site}
<if test="workOrder != null and workOrder != ''">
AND cf2.VALUE = #{workOrder}
</if>
<if test="itemNumber != null and itemNumber != ''">
AND cf.VALUE = #{itemNumber}
</if>
GROUP BY cf2.VALUE, cf.VALUE,zsd.WORK_CENTER
) zsd2 ON zsd2.WORK_CENTER = zsd.WORK_CENTER AND zsd2.WORK_ORDER || zsd2.ITEM_NUMBER = zsd.WORK_ORDER || zsd.ITEM_NUMBER
LEFT JOIN (
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
WHERE (zsd.WORK_ORDER IS NOT NULL OR zsd.ITEM_NUMBER IS NOT NULL)
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'
WHERE zsd.SITE = #{site}
<if test="workOrder != null and workOrder != ''">
AND cf2.VALUE = #{workOrder}
</if>
<if test="itemNumber != null and itemNumber != ''">
AND cf.VALUE = #{itemNumber}
</if>
GROUP BY cf2.VALUE, cf.VALUE,zsd.WORK_CENTER
) zsd3 ON zsd3.WORK_CENTER = zsd.WORK_CENTER AND zsd3.WORK_ORDER || zsd3.ITEM_NUMBER = zsd.WORK_ORDER || zsd.ITEM_NUMBER
INNER JOIN WORK_CENTER wc ON wc.WORK_CENTER = zsd.WORK_CENTER AND wc.SITE = zsd.SITE
LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE AND wct.LOCALE = 'zh'
WHERE (zsd.WORK_ORDER IS NOT NULL OR zsd.ITEM_NUMBER IS NOT NULL)
)
<where>
1 = 1
<if test="workOrder != null and workOrder != ''">
AND WORK_ORDER = #{workOrder}
</if>
<if test="itemNumber != null and itemNumber != ''">
AND ITEM_NUMBER = #{itemNumber}
<if test="workCenter != null and workCenter != ''">
AND (WORK_CENTER = #{workCenter} OR WORK_CENTER_DESCRIPTION = #{workCenter})
</if>
<if test="isCompleted != null and isCompleted != ''">
AND IS_COMPLETE = #{isCompleted}

@ -22,35 +22,361 @@ public class BoardController {
@Autowired
public BoardMapper boardMapper;
@GetMapping("/test")
public R test(String resource, String qty) {
Map<String, Object> result = new HashMap<>();
/**
*
*/
@GetMapping("/resourceRunData")
public R resourceRunData(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceRunData(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceRunParamData")
public R resourceRunParamData(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceRunParamData(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceFaultDescription")
public R resourceFaultDescription(@RequestParam(required = false) Map paramMap) {
try {
result.put("RESOURCE", resource);
result.put("SHOP_ORDER", "SO20211011");
result.put("ITEM", "00302354001");
result.put("QTY", 80);
result.put("JJ", 560);
result.put("HJ", 450);
result.put("RCL", 700);
result.put("ZZ", 390);
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceFaultDescription(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
return R.ok(result);
/**
*
*/
@GetMapping("/monthPlanCompleteData")
public R monthPlanCompleteData(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.monthPlanCompleteData(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/monthCompleteData")
public R monthCompleteData(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.monthCompleteData(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/monthCompleteAndPlanCompleteData")
public R monthCompleteAndPlanCompleteData(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.monthCompleteAndPlanCompleteData(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/percentOfPass")
public R percentOfPass(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.percentOfPass(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
@GetMapping("/findResourceInfo")
public R findResourceInfo(@RequestParam(required = false) Map paramMap) {
/**
*
*/
@GetMapping("/resourceRunDataThreeDay")
public R resourceRunDataThreeDay(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.findResourceInfo(paramMap);
List<Map<String, Object>> result = boardMapper.resourceRunDataThreeDay(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/onceEspecially")
public R onceEspecially(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.onceEspecially(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/scheduleOfCompletion")
public R scheduleOfCompletion(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.scheduleOfCompletion(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/abnormalResolveData")
public R abnormalResolveData(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.abnormalResolveData(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/abnormalContent")
public R abnormalContent(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.abnormalContent(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/planDataFSW")
public R planDataFSW(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.planDataFSW(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/completeDataFSW")
public R completeDataFSW(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.completeDataFSW(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/planAndCompleteDataFSW")
public R planAndCompleteDataFSW(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.planAndCompleteDataFSW(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceStatusQty")
public R resourceStatusQty(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceStatusQty(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceAbnormalInfo")
public R resourceAbnormalInfo(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceAbnormalInfo(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceFaultThree")
public R resourceFaultThree(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceFaultThree(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/completeRate")
public R completeRate(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.completeRate(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceRunQtyAll")
public R resourceRunQtyAll(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceRunQtyAll(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceQtyRun")
public R resourceQtyRun(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceQtyRun(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceQtyFree")
public R resourceQtyFree(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceQtyFree(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceQtyDow")
public R resourceQtyDow(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceQtyDow(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/resourceQtyAll")
public R resourceQtyAll(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.resourceQtyAll(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/abnormalTypeQty")
public R abnormalTypeQty(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.abnormalTypeQty(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/abnormalDataDetails")
public R abnormalDataDetails(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = boardMapper.abnormalDataDetails(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
}

@ -36,13 +36,13 @@ public class ProdReadyTaskController {
@ResponseBody
@PostMapping("/doPrint")
public R doPrint(@RequestBody List<ProdReadyTask> list){
for (ProdReadyTask prodReadyTask:list){
prodReadyTask = prodReadyTaskService.getById(prodReadyTask.getHandle());
for (ProdReadyTask readyTask:list){
ProdReadyTask prodReadyTask = prodReadyTaskService.getById(readyTask.getHandle());
String result = prodReadyTask.getResult();
if (StringUtil.isBlank(result) || !prodReadyTask.getResult().equals(Constants.RSESULT_OK)){
throw new BaseException("未准备合格不能打印");
}
prodReadyTaskService.doPrint(prodReadyTask);
prodReadyTaskService.doPrint(prodReadyTask,readyTask.getStatus());
}
return R.ok();
}

@ -6,6 +6,7 @@ package com.foreverwin.mesnac.common.controller;
* @Since 2021-08-23
*/
import com.foreverwin.mesnac.common.mapper.ReportDataMapper;
import com.foreverwin.mesnac.common.service.ReportDataService;
import com.foreverwin.modular.core.util.CommonMethods;
import com.foreverwin.modular.core.util.R;
@ -21,6 +22,8 @@ public class ReportDataController {
@Autowired
public ReportDataService reportDataService;
@Autowired
public ReportDataMapper reportDataMapper;
/**
*
@ -145,5 +148,38 @@ public class ReportDataController {
return R.ok(result);
}
/**
*
* @param paramMap
* @return
*/
@GetMapping("/selectItemMoveData")
public R selectItemMoveData(@RequestParam(required = false) Map paramMap) {
try{
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = reportDataMapper.selectItemMoveData(paramMap);
return R.ok(result);
}catch (Exception e){
return R.failed(e.getMessage());
}
}
/**
*
* @param
* @return
*/
@PostMapping("/doItemMove")
public R doItemMove(@RequestBody List<String> list) {
try{
if (list == null || list.size() < 1){
return R.ok("物料流转成功");
}
String site = CommonMethods.getSite();
reportDataMapper.doItemMove(site , list);
return R.ok("物料流转成功");
}catch (Exception e){
return R.failed(e.getMessage());
}
}
}

@ -215,6 +215,7 @@ public class SfcDispatchDto implements Serializable{
private String completeToDate_S;
private String other1;
@ExcelColumn("物料去向")
private String other2;
private String other3;
private String other4;

@ -7,5 +7,64 @@ import java.util.Map;
@Repository
public interface BoardMapper {
List<Map<String, Object>> findResourceInfo(Map paramMap);
//设备运行状态
List<Map<String, Object>> resourceRunData(Map paramMap);
//设备运行状态参数
List<Map<String, Object>> resourceRunParamData(Map paramMap);
//设备故障描述
List<Map<String, Object>> resourceFaultDescription(Map paramMap);
// 月完成数
List<Map<String, Object>> monthPlanCompleteData(Map paramMap);
// 月完成数
List<Map<String, Object>> monthCompleteData(Map paramMap);
// 月计划完成数和月完成数
List<Map<String, Object>> monthCompleteAndPlanCompleteData(Map paramMap);
// 合格率
List<Map<String, Object>> percentOfPass(Map paramMap);
// 车间设备近三天运行数
List<Map<String, Object>> resourceRunDataThreeDay(Map paramMap);
// 一次交检合格率
List<Map<String, Object>> onceEspecially(Map paramMap);
// 完工进度
List<Map<String, Object>> scheduleOfCompletion(Map paramMap);
// 异常处理情况
List<Map<String, Object>> abnormalResolveData(Map paramMap);
// 异常响应情况
List<Map<String, Object>> abnormalContent(Map paramMap);
// 焊接车间计划数
List<Map<String, Object>> planDataFSW(Map paramMap);
// 完成数
List<Map<String, Object>> completeDataFSW(Map paramMap);
// 焊接车间计划数、完成数
List<Map<String, Object>> planAndCompleteDataFSW(Map paramMap);
//综合看板
// 设备异常提报数
List<Map<String, Object>> resourceStatusQty(Map paramMap);
// 设备各异常处理状态
List<Map<String, Object>> resourceAbnormalInfo(Map paramMap);
// 设备故障前三
List<Map<String, Object>> resourceFaultThree(Map paramMap);
// 达成率
List<Map<String, Object>> completeRate(Map paramMap);
// 设备运行数
List<Map<String, Object>> resourceRunQtyAll(Map paramMap);
List<Map<String, Object>> resourceQtyRun(Map paramMap);
List<Map<String, Object>> resourceQtyFree(Map paramMap);
List<Map<String, Object>> resourceQtyDow(Map paramMap);
List<Map<String, Object>> resourceQtyAll(Map paramMap);
// 异常类型数据
List<Map<String, Object>> abnormalTypeQty(Map paramMap);
// 异常详情
List<Map<String, Object>> abnormalDataDetails(Map paramMap);
}

@ -1,5 +1,6 @@
package com.foreverwin.mesnac.common.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -33,4 +34,8 @@ public interface ReportDataMapper {
List<Map<String, Object>> findInspectionDetailPassRate(Map paramMap);
List<Map<String, Object>> findSectionPassRate(Map paramMap);
List<Map<String, Object>> selectItemMoveData(Map paramMap);
void doItemMove(@Param("site") String site, @Param("list") List<String> list);
}

@ -38,7 +38,7 @@ public interface ProdReadyTaskService extends IService<ProdReadyTask> {
boolean saveResult(ProdReadyTask prodReadyTask);
void doPrint(ProdReadyTask prodReadyTask);
void doPrint(ProdReadyTask prodReadyTask ,String printerName);
void sendMsgJob(String site);

@ -434,7 +434,7 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
}
@Override
public void doPrint(ProdReadyTask prodReadyTask) {
public void doPrint(ProdReadyTask prodReadyTask ,String printerName) {
String site = CommonMethods.getSite();
String user = CommonMethods.getUser();
String sfcDispatchBo = prodReadyTask.getSfcDispatchBo();
@ -454,7 +454,7 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
if (StringUtil.notBlank(factory)&&factory.equals("6100")){
type=Constants.PRINT_TYPE_PRODUCT;
}
if (StringUtil.isBlank(printName)) {
if (printerName == null && StringUtil.isBlank(printName)) {
throw new BaseException("资源" + resrce + "维护的打印机不能为空");
}
String item = prodReadyTask.getItem();
@ -469,7 +469,7 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
if (printLogList.isEmpty() || !printLogList.isEmpty()) {
//打印参数
LabelPrintDto labelPrintDto = new LabelPrintDto();
labelPrintDto.setPrinter(printName);
labelPrintDto.setPrinter(printerName == null ? printName : printerName);
labelPrintDto.setPrintTemplate(type);
labelPrintDto.setShopOrder(shopOrder);
labelPrintDto.setItem(selectCurrent.getItem());
@ -508,6 +508,8 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
}
labelPrintDto.setOperation(operationDesc.toString());
//打印物料去向
labelPrintDto.setItemTypeOrder(sfcDispatchDto.getOther2());
labelPrintDtoList.add(labelPrintDto);
printData = JSON.toJSONString(labelPrintDtoList);
//打印记录

@ -1,74 +1,640 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.foreverwin.mesnac.common.mapper.BoardMapper">
<select id="findResourceInfo" resultType="java.util.HashMap" parameterType="java.util.HashMap">
WITH
TE AS (
SELECT DISTINCT R.RESRCE RESRCE , R.HANDLE HANDLE
FROM RESRCE r
INNER JOIN WORK_CENTER_MEMBER wcm ON WCM.WORK_CENTER_OR_RESOURCE_GBO = R.HANDLE
INNER JOIN WORK_CENTER_MEMBER wcm2 ON WCM2.WORK_CENTER_OR_RESOURCE_GBO = WCM.WORK_CENTER_BO
INNER JOIN WORK_CENTER wc ON WC.HANDLE = WCM2.WORK_CENTER_BO
WHERE R.SITE = '1000' --AND WC.WORK_CENTER = 'JJ'
),
TEMP AS (
SELECT ZSD.RESRCE , ZSD.DISPATCH_STATUS , i.ITEM , it.DESCRIPTION , ZSD.ACTUAL_START_DATE,
ZSD.PROD_HOURS ,ZSD.DISPATCH_QTY ,ZSD.STEP_ID , ZSD.ACTUAL_PROD_HOURS
FROM Z_SFC_DISPATCH zsd
INNER JOIN TE ON TE.RESRCE = ZSD.RESRCE
INNER JOIN SHOP_ORDER SO ON SO.SHOP_ORDER = ZSD.SHOP_ORDER
INNER JOIN ITEM i ON I.HANDLE = SO.ITEM_BO
INNER JOIN ITEM_T IT ON IT.ITEM_BO = I.HANDLE AND IT.LOCALE = 'zh'
WHERE ZSD.SITE = '1000'
) ,
MN AS (
SELECT R.RESRCE , R.DESCRIPTION RESOURCE_DESCRIPTION, CF.VALUE || '/' || R.DESCRIPTION NAME ,
--WC.WORK_CENTER ,
--RT.RESOURCE_TYPE,
--RT.DESCRIPTION RESOURCE_TYPE_DESCRIPTION,
CASE WHEN ZRSR.STATUS = 'RUN' THEN '#1afa29'
WHEN ZRSR.STATUS = 'DOW' THEN '#EF4136' --'RGB(255,115,100)'
WHEN ZRSR.STATUS = 'FREE' THEN '#dbdbdb'
WHEN ZRSR.STATUS = 'WARN' THEN '#F4EA2A'
ELSE '#FFF' END STATUS_COLOR,
CASE WHEN ZRSR.STATUS = 'RUN' THEN '运行'
WHEN ZRSR.STATUS = 'DOW' THEN '停机' --'RGB(255,115,100)'
WHEN ZRSR.STATUS = 'FREE' THEN '空闲'
WHEN ZRSR.STATUS = 'WARN' THEN '告警'
ELSE '运行' END STATUS_NAME,
NVL(ZRSR.STATUS,'FREE') STATUS,
CF.VALUE RESOURCE_LOCATION ,
ZEDR.S1 FEED_RATE, ZEDR.S2 FEED_VALUE, ZEDR.S3 SPINDLE_LOAD , ZEDR.S4 SPINDLE_SPEED
FROM RESRCE R
INNER JOIN WORK_CENTER_MEMBER wcm ON WCM.WORK_CENTER_OR_RESOURCE_GBO = R.HANDLE
INNER JOIN WORK_CENTER_MEMBER wcm2 ON WCM2.WORK_CENTER_OR_RESOURCE_GBO = WCM.WORK_CENTER_BO
INNER JOIN WORK_CENTER wc ON WC.HANDLE = WCM2.WORK_CENTER_BO
INNER JOIN RESOURCE_TYPE_RESOURCE RTR ON RTR.RESOURCE_BO = R.HANDLE
INNER JOIN RESOURCE_TYPE RT ON RT.HANDLE = RTR.RESOURCE_TYPE_BO
LEFT JOIN Z_RESOURCE_STATUS_RECEIVE ZRSR ON ZRSR.RESRCE = R.RESRCE
LEFT JOIN CUSTOM_FIELDS cf ON CF.HANDLE = R.HANDLE AND CF."ATTRIBUTE" = 'RESOURCE_LOCATION'
LEFT JOIN Z_EDC_DATA_RESOURCE zedr ON ZEDR.RESRCE = R.RESRCE
WHERE RT.SITE = '1000' AND WC.WORK_CENTER = 'JJ'
ORDER BY ZRSR.RESRCE
)
SELECT T.RESRCE RE_NAME , T.DISPATCH_STATUS , ITEM , DESCRIPTION ITEM_DESCRIPTION, DISPATCH_QTY , PROD_HOURS , WORK_HOUR, ACTUAL_START_DATE, STEP_ID ,ACTUAL_PROD_HOURS,
CASE WHEN PROD_HOURS > WORK_HOUR THEN ROUND(WORK_HOUR /PROD_HOURS,2)
ELSE (CASE WHEN DISPATCH_STATUS = 'START' THEN 90 ELSE 100 END ) END PROGRESS ,
MN.*
<!--设备运行状态-->
<select id="resourceRunData" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT
MAX(CASE WHEN STATUS = 'RUN' THEN QTY ELSE 0 END)RUN,
MAX(CASE WHEN STATUS = 'DOW' THEN QTY ELSE 0 END)"STOP",
MAX(CASE WHEN STATUS = 'WARN' THEN QTY ELSE 0 END)IDLE,
MAX(CASE WHEN STATUS = 'FREE' THEN QTY ELSE 0 END)IDLEA
FROM
( SELECT "STATUS", COUNT(1)QTY FROM Z_RESOURCE_STATUS_RECEIVE GROUP BY "STATUS" )
</select>
<!--设备运行状态参数-->
<select id="resourceRunParamData" resultType="java.util.HashMap" parameterType="java.util.HashMap">
WITH TPARAM AS(
SELECT
ZRSR.RESRCE,
R.DESCRIPTION RESOURCE_DESCRIPTION,
CF.VALUE,
CF.VALUE || '/' || R.DESCRIPTION NAME,
CASE
WHEN ZRSR.STATUS = 'RUN' THEN '#7FB80E' --'#1afa29'
WHEN ZRSR.STATUS = 'DOW' THEN '#F5A15B' --'#EF4136'
ELSE '#dbdbdb'
END STATUS_COLOR,
CASE
WHEN ZRSR.STATUS = 'RUN' THEN '运行'
WHEN ZRSR.STATUS = 'DOW' THEN '停机'
ELSE '空闲'
END STATUS_NAME,
ZEDR.S1 FEED_RATE,
ZEDR.S2 FEED_VALUE,
ZEDR.S3 SPINDLE_LOAD,
ZEDR.S4 SPINDLE_SPEED
FROM
Z_RESOURCE_STATUS_RECEIVE ZRSR
LEFT JOIN RESRCE R ON
R.RESRCE = ZRSR.RESRCE
AND R.SITE = '1000'
LEFT JOIN Z_EDC_DATA_RESOURCE ZEDR ON
ZEDR.RESRCE = ZRSR.RESRCE
LEFT JOIN CUSTOM_FIELDS cf ON
CF.HANDLE = R.HANDLE
AND CF."ATTRIBUTE" = 'RESOURCE_LOCATION'
),
TEMP AS(
SELECT
ZSD.RESRCE,
ZSD.DISPATCH_STATUS,
i.ITEM,
it.DESCRIPTION,
ZSD.ACTUAL_START_DATE,
ZSD.PROD_HOURS,
ZSD.DISPATCH_QTY,
ZSD.STEP_ID,
ZSD.ACTUAL_PROD_HOURS
FROM
Z_SFC_DISPATCH zsd
INNER JOIN Z_RESOURCE_STATUS_RECEIVE ZRSR ON
ZRSR.RESRCE = ZSD.RESRCE
INNER JOIN SHOP_ORDER SO ON
SO.SHOP_ORDER = ZSD.SHOP_ORDER
INNER JOIN ITEM i ON
I.HANDLE = SO.ITEM_BO
INNER JOIN ITEM_T IT ON
IT.ITEM_BO = I.HANDLE
AND IT.LOCALE = 'zh'
WHERE
ZSD.SITE = '1000'
AND ZSD.DISPATCH_STATUS IN(
'COMPLETE',
'START'
)
),
MN AS(
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER(
PARTITION BY RESRCE
ORDER BY
DISPATCH_STATUS DESC,
ACTUAL_START_DATE DESC,
STEP_ID DESC
) rn,
RESRCE,
DISPATCH_STATUS,
ITEM,
DESCRIPTION,
DISPATCH_QTY,
PROD_HOURS,
ACTUAL_START_DATE,
STEP_ID,
ACTUAL_PROD_HOURS,
CASE
WHEN DISPATCH_STATUS = 'START' THEN(
SYSDATE -(
ACTUAL_START_DATE + 8 / 24
)
)* 24
ELSE NVL( 10000, ACTUAL_PROD_HOURS )
END WORK_HOUR
FROM
TEMP
)
WHERE
rn = 1
) SELECT
A.*,
B.ITEM,
B.DESCRIPTION ITEM_DESCRIPTION,
B.DISPATCH_QTY,
CASE
WHEN B.PROD_HOURS > B.WORK_HOUR THEN ROUND( WORK_HOUR / PROD_HOURS, 2 )
ELSE(
CASE
WHEN B.DISPATCH_STATUS = 'START' THEN 90
ELSE 100
END
)
END PROGRESS
FROM
TPARAM A
LEFT JOIN MN B ON
B.RESRCE = A.RESRCE
ORDER BY
A.VALUE,
B.ITEM
</select>
<select id="resourceFaultDescription" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT ROWNUM , T.* FROM (SELECT DISTINCT ZRFR.RESRCE, R.DESCRIPTION, ZRFR.DESCRIPTION FAULT_DESCRIPTION
FROM Z_RESOURCE_FAULT_RECEIVE ZRFR
INNER JOIN RESRCE R ON R.RESRCE = ZRFR.RESRCE AND R.SITE = #{site}
WHERE ZRFR.DESCRIPTION IS NOT NULL AND TO_CHAR(ZRFR.CREATED_DATE_TIME , 'YYYY-MM-DD') = TO_CHAR(SYSDATE ,'YYYY-MM-DD') ) T
WHERE ROWNUM &lt; 20
</select>
<!--月计划完成数-->
<select id="monthPlanCompleteData" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT SUM(ZSD.DISPATCH_QTY) "value" FROM Z_SFC_DISPATCH zsd
WHERE ZSD.DISPATCH_STATUS != 'NEW' AND ZSD.SITE = #{site}
AND TO_CHAR(ZSD.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
</select>
<!--月完成数-->
<select id="monthCompleteData" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT NVL(SUM(ZSD.DISPATCH_QTY),0) "value" FROM Z_SFC_DISPATCH zsd
WHERE ZSD.SITE = #{site} AND ZSD.DISPATCH_STATUS IN ('COMPLETE','CANCEL')
AND TO_CHAR(ZSD.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
AND ZSD.SHOP_ORDER IN (
SELECT SHOP_ORDER FROM SHOP_ORDER SO WHERE TO_CHAR(SO.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
)
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
</select>
<!--月计划完成数和月完成数-->
<select id="monthCompleteAndPlanCompleteData" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT A.CNT QTY_PLAN , B.CNT QTY_DONE , A.CNT - B.CNT QTY_HAND FROM
(SELECT SUM(ZSD.DISPATCH_QTY) CNT FROM Z_SFC_DISPATCH zsd
WHERE ZSD.DISPATCH_STATUS != 'NEW' AND ZSD.SITE = #{site}
AND TO_CHAR(ZSD.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
) A,
( SELECT NVL(SUM(ZSD.DISPATCH_QTY),0) CNT FROM Z_SFC_DISPATCH zsd
WHERE ZSD.DISPATCH_STATUS IN ('COMPLETE','CANCEL')
AND TO_CHAR(ZSD.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
AND ZSD.SHOP_ORDER IN (
SELECT SHOP_ORDER FROM SHOP_ORDER SO WHERE TO_CHAR(SO.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
)
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
) B
</select>
<!--合格率-->
<select id="percentOfPass" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT 10 "min", 100 "max",
CASE WHEN SUM(QTY) = 0 THEN 0
ELSE NVL(ROUND(SUM(CASE WHEN RESULT = 'OK' THEN QTY ELSE 0 END)/SUM(QTY)*100,2),0) END "value", '%' "unit"
FROM (
SELECT ZT.SITE, ZT.SFC, ZT.RESULT, SC.QTY, RANK() OVER(PARTITION BY ZT.SITE, ZT.SFC ORDER BY ZT.CREATED_DATE_TIME DESC) AS ROW_ID
FROM Z_INSPECTION_TASK ZT
INNER JOIN SFC SC ON ZT.SITE = SC.SITE AND ZT.SFC = SC.SFC
WHERE ZT.SITE = #{site} AND ZT.CATEGORY = 'P' AND STATUS = 'COMPLETE'
AND TO_CHAR(ZT.CREATED_DATE_TIME + 8/24,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
<if test="workCenter != null and workCenter != ''">
AND ZT.WORK_CENTER = #{workCenter}
</if>
) WHERE ROW_ID = 1
GROUP BY SITE
</select>
<!--车间设备近三天运行数-->
<select id="resourceRunDataThreeDay" resultType="java.util.HashMap" parameterType="java.util.HashMap">
WITH TEMP AS (
SELECT DISTINCT ZSD.RESRCE , TO_CHAR(ZSD.ACTUAL_START_DATE,'MM-DD') DATE_TIME FROM Z_SFC_DISPATCH ZSD
WHERE ZSD.SITE = #{site} AND ZSD.DISPATCH_STATUS IN ('COMPLETE','CANCEL','START')
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
AND ZSD.ACTUAL_START_DATE > (SELECT TO_DATE( TO_CHAR(SYSDATE-3 ,'YYYY-MM-DD') || ' 16:00:00' , 'YYYY-MM-DD HH24:MI:SS' ) DATE_TIME FROM DUAL )
)
SELECT A.DATE_TIME A_DATE , A.CNT A_CNT ,B.DATE_TIME B_DATE , B.CNT B_CNT ,C.DATE_TIME C_DATE , C.CNT C_CNT
FROM
(SELECT COUNT(RESRCE) CNT , TO_CHAR(SYSDATE-2 ,'MM-DD') DATE_TIME FROM TEMP WHERE DATE_TIME = TO_CHAR(SYSDATE-2 ,'MM-DD') ) A,
(SELECT COUNT(RESRCE) CNT , TO_CHAR(SYSDATE-1 ,'MM-DD') DATE_TIME FROM TEMP WHERE DATE_TIME = TO_CHAR(SYSDATE-1 ,'MM-DD') ) B,
(SELECT COUNT(RESRCE) CNT , TO_CHAR(SYSDATE ,'MM-DD') DATE_TIME FROM TEMP WHERE DATE_TIME = TO_CHAR(SYSDATE ,'MM-DD') ) C
</select>
<!--一次交检合格率-->
<select id="onceEspecially" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT L.MONTHS, L.XS_MONTHS, NVL(P.JJ_QTY,0) JJ_QTY, NVL(P.OK_QTY,0) OK_QTY, ROUND(NVL(P.OK_QTY,0)/NVL(P.JJ_QTY,1)*100,2) OK_RATE
FROM (
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-4),'YYYYMM') MONTHS, TO_NUMBER(TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-4),'MM')) XS_MONTHS FROM DUAL
UNION
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-3),'YYYYMM') MONTHS, TO_NUMBER(TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-3),'MM')) XS_MONTHS FROM DUAL
UNION
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-2),'YYYYMM') MONTHS, TO_NUMBER(TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-2),'MM')) XS_MONTHS FROM DUAL
UNION
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-1),'YYYYMM') MONTHS, TO_NUMBER(TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-1),'MM')) XS_MONTHS FROM DUAL
UNION
SELECT TO_CHAR(SYSDATE, 'YYYYMM') MONTHS, TO_NUMBER(TO_CHAR(SYSDATE,'MM')) XS_MONTHS FROM DUAL
) L
LEFT JOIN (
SELECT TASK_MONTH, SUM(QTY) JJ_QTY, SUM(CASE WHEN RESULT = 'OK' THEN QTY ELSE 0 END) OK_QTY
FROM (
SELECT TO_CHAR(ZT.CREATED_DATE_TIME + 8/24, 'YYYYMM') TASK_MONTH, ZT.SFC, ZT.RESULT, SC.QTY,
ROW_NUMBER() OVER(PARTITION BY TO_CHAR(ZT.CREATED_DATE_TIME + 8/24, 'YYYYMM'),ZT.SFC, SC.QTY ORDER BY ZT.CREATED_DATE_TIME DESC) SEQ
FROM Z_INSPECTION_TASK ZT
INNER JOIN SFC SC ON ZT.SITE = SC.SITE AND SC.SFC = ZT.SFC
WHERE ZT.SITE = #{site} AND ZT.CATEGORY = 'P' AND ZT.STATUS = 'COMPLETE'
<if test="workCenter != null and workCenter != ''">
AND ZT.WORK_CENTER = #{workCenter}
</if>
) WHERE SEQ = 1
GROUP BY TASK_MONTH
) P ON L.MONTHS = P.TASK_MONTH
ORDER BY L.MONTHS
</select>
<!--完工进度-->
<select id="scheduleOfCompletion" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT
T.ITEM_NUMBER,
T.ITEM_DESC,
T.SHOP_ORDER,
T.PLANNED_COMP_DATE,
T.PLANNED_START_DATE,
CASE
WHEN SUM( T.CNT_HOURS )= 0 THEN '0%'
ELSE ROUND( SUM( T.CNT_HOURS )/ SUM( T.PROD_HOURS ), 2 )* 100 || '%'
END COMP_RATE
FROM
(
SELECT *
SELECT
CF.VALUE ITEM_NUMBER,
IT.DESCRIPTION ITEM_DESC,
SO.SHOP_ORDER,
SO.PLANNED_COMP_DATE,
SO.PLANNED_START_DATE,
ZSD.SFC,
ZSD.PROD_HOURS,
CASE
WHEN ZSD.ACTUAL_COMPLETE_DATE IS NOT NULL THEN ZSD.PROD_HOURS
WHEN ZSD.ACTUAL_COMPLETE_DATE IS NULL
AND ZSD.ACTUAL_START_DATE IS NOT NULL THEN 0
WHEN ZSD.ACTUAL_START_DATE IS NULL THEN 0
END CNT_HOURS
FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY RESRCE ORDER BY DISPATCH_STATUS DESC ,ACTUAL_START_DATE DESC ,STEP_ID DESC ) rn,
RESRCE , DISPATCH_STATUS , ITEM , DESCRIPTION , DISPATCH_QTY , PROD_HOURS , ACTUAL_START_DATE , STEP_ID ,ACTUAL_PROD_HOURS ,
CASE WHEN DISPATCH_STATUS = 'START' THEN (SYSDATE - (ACTUAL_START_DATE + 8/24) ) * 24
ELSE NVL(10000,ACTUAL_PROD_HOURS) END WORK_HOUR
FROM TEMP WHERE DISPATCH_STATUS IN ('COMPLETE' ,'START' ) )
WHERE rn = 1
ORDER BY RESRCE , DISPATCH_STATUS DESC
) T
LEFT JOIN MN ON MN.RESRCE = T.RESRCE
ORDER BY MN.RESOURCE_LOCATION ,MN.RESRCE
Z_SFC_DISPATCH ZSD
INNER JOIN SHOP_ORDER SO ON
SO.SHOP_ORDER = ZSD.SHOP_ORDER
INNER JOIN SFC S ON
S.SHOP_ORDER_BO = SO.HANDLE
INNER JOIN ITEM IM ON
IM.HANDLE = SO.ITEM_BO
LEFT JOIN ITEM_T IT ON
IT.ITEM_BO = IM.HANDLE
AND IT.LOCALE = 'zh'
LEFT JOIN CUSTOM_FIELDS CF ON
SO.HANDLE = CF.HANDLE
AND CF.ATTRIBUTE = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS CF1 ON
SO.HANDLE = CF1.HANDLE
AND CF1.ATTRIBUTE = 'FACTORY'
WHERE
ZSD.SITE = '1000'
AND CF1.VALUE = '6106'
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
AND ZSD.DISPATCH_STATUS != 'CANCEL'
AND TO_CHAR( SO.PLANNED_COMP_DATE + 8 / 24, 'YYYY-MM' )= TO_CHAR( SYSDATE, 'YYYY-MM' )
ORDER BY
ZSD.SHOP_ORDER,
ZSD.SFC
) T
GROUP BY
T.ITEM_NUMBER,
T.ITEM_DESC,
T.SHOP_ORDER,
T.PLANNED_COMP_DATE,
T.PLANNED_START_DATE
ORDER BY
T.PLANNED_START_DATE DESC
</select>
<!--异常待解决\异常已解决\异常正在处理-->
<select id="abnormalResolveData" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT COUNT(1) "value" FROM Z_ABNORMAL_BILL ZB
WHERE SITE = #{site} AND TO_CHAR(ZB.CREATED_DATE_TIME + 8/24,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
<if test="workCenter != null and workCenter != ''">
AND ZB.WORK_CENTER = #{workCenter}
</if>
<if test="status != null and status != ''">
<choose>
<when test="status.contains('unResolve')">
AND ZB.STATUS = 'N'
</when>
<when test="status.contains('resolve')">
AND ZB.STATUS = 'G'
</when>
<when test="status.contains('dealing')">
AND ZB.STATUS NOT IN ('N', 'G', 'Q')
</when>
</choose>
</if>
</select>
<!--异常响应情况-->
<select id="abnormalContent" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT CONTENT
FROM (
SELECT ZM.CONTENT FROM Z_ABNORMAL_BILL ZB
INNER JOIN Z_MESSAGE ZM ON ZB.HANDLE = ZM.OBJECT_BO
WHERE ZB.SITE = '1000' AND ZB.STATUS = 'N'
AND TO_CHAR(ZB.CREATED_DATE_TIME + 8/24, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
<if test="workCenter != null and workCenter != ''">
AND ZB.WORK_CENTER = #{workCenter}
</if>
ORDER BY ZB.CREATED_DATE_TIME DESC
) WHERE ROWNUM &lt;= 30
</select>
<!--焊接车间计划数-->
<select id="planDataFSW" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT SUM(ZSD.DISPATCH_QTY) "value" FROM Z_SFC_DISPATCH zsd
INNER JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION
INNER JOIN OPERATION_T ot ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh'
WHERE TO_CHAR(ZSD.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
AND ZSD.WORK_CENTER = 'HJ' AND ZSD.SITE = #{site}
<choose>
<when test="operationDescription != null and operationDescription != ''">
AND OT.DESCRIPTION != ('焊接' )
</when>
<otherwise>
AND OT.DESCRIPTION = ('焊接' )
</otherwise>
</choose>
</select>
<!--焊接车间完成数-->
<select id="completeDataFSW" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT SUM(ZSD.DISPATCH_QTY) "value" FROM Z_SFC_DISPATCH zsd
INNER JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION
INNER JOIN OPERATION_T ot ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh'
WHERE TO_CHAR(ZSD.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
AND ZSD.DISPATCH_STATUS IN ('COMPLETE','CANCEL')
AND ZSD.WORK_CENTER = 'HJ' AND ZSD.SITE = #{site}
<choose>
<when test="operationDescription != null and operationDescription != ''">
AND OT.DESCRIPTION != ('焊接' )
</when>
<otherwise>
AND OT.DESCRIPTION = ('焊接' )
</otherwise>
</choose>
AND ZSD.SHOP_ORDER IN (
SELECT SHOP_ORDER FROM SHOP_ORDER SO WHERE TO_CHAR(SO.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
)
</select>
<!--焊接车间计划数、完成数-->
<select id="planAndCompleteDataFSW" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT A.CNT QTY_PLAN , B.CNT QTY_DONE , A.CNT - B.CNT QTY_HAND FROM
(
SELECT SUM(ZSD.DISPATCH_QTY) CNT FROM Z_SFC_DISPATCH zsd
INNER JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION
INNER JOIN OPERATION_T ot ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh'
WHERE TO_CHAR(ZSD.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
AND ZSD.WORK_CENTER = 'HJ' AND ZSD.SITE = #{site}
<choose>
<when test="operationDescription != null and operationDescription != ''">
AND OT.DESCRIPTION != ('焊接' )
</when>
<otherwise>
AND OT.DESCRIPTION = ('焊接' )
</otherwise>
</choose> ) A ,
(
SELECT SUM(ZSD.DISPATCH_QTY) CNT FROM Z_SFC_DISPATCH zsd
INNER JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION
INNER JOIN OPERATION_T ot ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh'
WHERE TO_CHAR(ZSD.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
AND ZSD.DISPATCH_STATUS IN ('COMPLETE','CANCEL')
AND ZSD.WORK_CENTER = 'HJ' AND ZSD.SITE = #{site}
<choose>
<when test="operationDescription != null and operationDescription != ''">
AND OT.DESCRIPTION != ('焊接' )
</when>
<otherwise>
AND OT.DESCRIPTION = ('焊接' )
</otherwise>
</choose>
AND ZSD.SHOP_ORDER IN (
SELECT SHOP_ORDER FROM SHOP_ORDER SO WHERE TO_CHAR(SO.PLANNED_COMP_DATE + 8/24 , 'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM') ) ) B
</select>
<!--综合看板-->
<!--设备不同状态数-->
<select id="resourceStatusQty" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT SUM(CASE WHEN "TYPE" = 'Z' THEN 1 ELSE 0 END) Z_QTY,
SUM(CASE WHEN "TYPE" = 'S' THEN 1 ELSE 0 END) S_QTY,
SUM(CASE WHEN "TYPE" = 'Q' THEN 1 ELSE 0 END) Q_QTY
FROM Z_ABNORMAL_BILL ZB
WHERE SITE = '1000' AND TO_CHAR(ZB.CREATED_DATE_TIME,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
GROUP BY TO_CHAR(ZB.CREATED_DATE_TIME,'YYYY-MM')
</select>
<!--设备各异常处理状态-->
<select id="resourceAbnormalInfo" resultType="java.util.HashMap" parameterType="java.util.HashMap" >
SELECT TEMP.* , T.CNT FROM
(
SELECT '其他' TYPE_DESCRIPTION ,'Q' TYPE , 'N' STATUS , '待解决' STATUS_DESCRIPTION FROM DUAL
UNION
SELECT '其他' TYPE_DESCRIPTION ,'Q' TYPE , 'X' , '正在处理' FROM DUAL
UNION
SELECT '其他' TYPE_DESCRIPTION ,'Q' TYPE , 'SUCCESS' , '已解决' STATUS FROM DUAL
UNION
SELECT '质量', 'Z', 'N', '待解决' FROM DUAL
UNION
SELECT '质量', 'Z', 'X', '正在处理' FROM DUAL
UNION
SELECT '质量', 'Z', 'SUCCESS', '已解决' FROM DUAL
UNION
SELECT '设备', 'S', 'N' , '待解决' FROM DUAL
UNION
SELECT '设备', 'S', 'X' , '正在处理' FROM DUAL
UNION
SELECT '设备', 'S', 'SUCCESS', '已解决' FROM DUAL ) TEMP
LEFT JOIN
(SELECT ZAB."TYPE" , ZAB.STATUS , COUNT(*) CNT
FROM Z_ABNORMAL_BILL zab WHERE STATUS IN ('N','X') AND TO_CHAR(ZAB.CREATED_DATE_TIME,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM') GROUP BY ZAB."TYPE" ,ZAB.STATUS ,TO_CHAR(ZAB.CREATED_DATE_TIME,'YYYY-MM')
UNION
SELECT ZAB."TYPE" , 'SUCCESS' STATUS , COUNT(*) CNT
FROM Z_ABNORMAL_BILL zab WHERE STATUS NOT IN ('N','X') AND TO_CHAR(ZAB.CREATED_DATE_TIME,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM') GROUP BY ZAB."TYPE" ,TO_CHAR(ZAB.CREATED_DATE_TIME,'YYYY-MM') ) T
ON T.TYPE = TEMP.TYPE AND T.STATUS = TEMP.STATUS
ORDER BY TEMP.TYPE DESC,TEMP.STATUS DESC
</select>
<!--设备故障前三-->
<select id="resourceFaultThree" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT DESCRIPTION, QTY
FROM (
SELECT SUBSTR(NT.DESCRIPTION, 0, 4) DESCRIPTION, SUM(1) QTY
FROM Z_ABNORMAL_BILL A
INNER JOIN Z_ABNORMAL_NC_CODE B ON B.ABNORMAL_BILL_BO = A.HANDLE
INNER JOIN NC_CODE NC ON NC.SITE = B.SITE AND NC.NC_CODE = B.NC_CODE
INNER JOIN NC_CODE_T NT ON NT.NC_CODE_BO = NC.HANDLE
WHERE A.TYPE = 'S' AND A.SITE = '1000' AND TO_CHAR(A.CREATED_DATE_TIME,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
GROUP BY SUBSTR(NT.DESCRIPTION, 0, 4)
ORDER BY SUM(1) DESC
) WHERE ROWNUM &lt;= 3
</select>
<!--达成率-->
<select id="completeRate" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT 0 "min", 100 "max", '名称' "label", T.RATE "value",
'%' "unit"
FROM DUAL , (SELECT ROUND( SUM(SO.QTY_DONE) / SUM(SO.QTY_TO_BUILD) , 4 ) * 100 RATE
FROM SHOP_ORDER SO
LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = SO.HANDLE AND CF.ATTRIBUTE = 'FACTORY'
WHERE SITE = '1000'
AND TO_CHAR(SO.PLANNED_COMP_DATE,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
GROUP BY TO_CHAR(PLANNED_COMP_DATE,'YYYY-MM') ) T
</select>
<!--设备运行数-->
<!--设备运行状态数-->
<select id="resourceRunQtyAll" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT X.CNT RUN , Y.CNT IDLE ,Z.CNT "STOP" FROM
(SELECT COUNT(RESRCE) CNT
FROM RESRCE r
WHERE R.STATUS_BO = 'StatusBO:1000,301' AND R.SITE = '1000'
AND R.RESRCE NOT IN (SELECT RESRCE FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS != 'RUN')) X ,
(SELECT M.CNT + N.CNT CNT FROM
(SELECT COUNT(RESRCE) CNT FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS = 'FREE') M,
(
SELECT COUNT(RESRCE) CNT FROM RESRCE r
WHERE R.STATUS_BO = 'StatusBO:1000,4' AND R.SITE = '1000'
AND R.RESRCE NOT IN (SELECT RESRCE FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS = 'FREE')
) N ) Y ,
(SELECT M.CNT + N.CNT CNT FROM
(SELECT COUNT(RESRCE) CNT FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS IN ('DOW','WARN')) M,
(
SELECT COUNT(RESRCE) CNT FROM RESRCE r
WHERE R.STATUS_BO = 'StatusBO:1000,5' AND R.SITE = '1000'
AND R.RESRCE NOT IN (SELECT RESRCE FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS IN ('DOW' ,'WARN'))
) N ) Z
</select>
<!--设备状态:运行中、空闲、停机-->
<select id="resourceQtyRun" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT COUNT(RESRCE) "value"
FROM RESRCE r
WHERE R.STATUS_BO = 'StatusBO:1000,301' AND R.SITE = '1000'
AND R.RESRCE NOT IN (SELECT RESRCE FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS != 'RUN')
</select>
<select id="resourceQtyFree" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT M.CNT + N.CNT "value" FROM
(SELECT COUNT(RESRCE) CNT FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS = 'FREE') M,
(
SELECT COUNT(RESRCE) CNT FROM RESRCE r
WHERE R.STATUS_BO = 'StatusBO:1000,4' AND R.SITE = '1000'
AND R.RESRCE NOT IN (SELECT RESRCE FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS = 'FREE')
) N
</select>
<select id="resourceQtyDow" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT M.CNT + N.CNT "value" FROM
(SELECT COUNT(RESRCE) CNT FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS IN ('DOW','WARN')) M,
(
SELECT COUNT(RESRCE) CNT FROM RESRCE r
WHERE R.STATUS_BO = 'StatusBO:1000,5' AND R.SITE = '1000'
AND R.RESRCE NOT IN (SELECT RESRCE FROM Z_RESOURCE_STATUS_RECEIVE zrsr WHERE ZRSR.STATUS IN ('DOW' ,'WARN'))
) N
</select>
<!--设备运行状态数-->
<select id="resourceQtyAll" resultType="java.util.HashMap" parameterType="java.util.HashMap">
WITH TEMPA AS (
SELECT COUNT(*) CNT FROM (SELECT DISTINCT ZSD.RESRCE FROM Z_SFC_DISPATCH ZSD
WHERE ZSD.DISPATCH_STATUS IN ('COMPLETE','CANCEL','START')
AND TO_CHAR(ZSD.ACTUAL_START_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE-1 ,'YYYY-MM-DD')
AND ZSD.RESRCE NOT IN (SELECT RESRCE FROM Z_RESOURCE_STATUS_RECEIVE WHERE STATUS = 'RUN'))
) ,
TEMPB AS (SELECT
MAX(CASE WHEN STATUS = 'RUN' THEN QTY ELSE 0 END)RUN,
MAX(CASE WHEN STATUS = 'DOW' THEN QTY ELSE 0 END)"STOP",
MAX(CASE WHEN STATUS = 'WARN' THEN QTY ELSE 0 END)IDLE,
MAX(CASE WHEN STATUS = 'FREE' THEN QTY ELSE 0 END)IDLEA
FROM
( SELECT "STATUS", COUNT(1)QTY FROM Z_RESOURCE_STATUS_RECEIVE GROUP BY "STATUS" ))
SELECT TEMPA.CNT + TEMPB.RUN RUN , TEMPB.STOP STOP , TEMPB.IDLE + TEMPB.IDLEA IDLE
FROM TEMPA, TEMPB
</select>
<!--异常看板-->
<select id="abnormalTypeQty" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT TEMP.* , NVL(T.DID_CNT,0) ,NVL(T.SUM_CNT,0) SUM_CNT FROM
( SELECT 'Z' TYPE , '质量异常' TYPE_DESCRIPTION FROM DUAL
UNION
SELECT 'Q' TYPE , '其他异常' TYPE_DESCRIPTION FROM DUAL
UNION
SELECT 'S' TYPE , '设备异常' TYPE_DESCRIPTION FROM DUAL ) TEMP
LEFT JOIN
(SELECT A.TYPE , A.CNT, B.CNT SUM_CNT , A.CNT || '/' || B.CNT DID_CNT FROM
( SELECT ZAB.SITE,"TYPE" ,COUNT("TYPE") CNT FROM Z_ABNORMAL_BILL ZAB
WHERE ZAB.SITE = #{site} AND TO_CHAR(ZAB.CREATED_DATE_TIME + 8/24,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
<if test="workCenter != null and workCenter != ''">
AND ZB.WORK_CENTER = #{workCenter}
</if>
GROUP BY ZAB."TYPE", TO_CHAR(ZAB.CREATED_DATE_TIME + 8/24,'YYYY-MM'),ZAB.SITE ) A
LEFT JOIN (SELECT SITE,COUNT(*) CNT FROM Z_ABNORMAL_BILL ZAB WHERE TO_CHAR(ZAB.CREATED_DATE_TIME + 8/24,'YYYY-MM') = TO_CHAR(SYSDATE,'YYYY-MM')
GROUP BY SITE ,TO_CHAR(ZAB.CREATED_DATE_TIME + 8/24,'YYYY-MM')) B ON B.SITE = A.SITE
) T
ON T.TYPE = TEMP."TYPE"
ORDER BY TEMP."TYPE" DESC
</select>
<select id="abnormalDataDetails" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT T.* , T.UN_DEAL || '天' UN_DEAL_TIME , UG.DESCRIPTION USER_GROUP_DESCRIPTION FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY ZAB.ABNORMAL_NO) SEQ, ZAB.HANDLE ,
ZAB."TYPE" ,
CASE WHEN ZAB.TYPE = 'Q' THEN '其他'
WHEN ZAB.TYPE = 'Z' THEN '质量'
WHEN ZAB.TYPE = 'S' THEN '设备' END TYPE_LOCALE ,
ZAB.STATUS ,
CASE WHEN ZAB.STATUS = 'N' THEN '新建'
WHEN ZAB.STATUS = 'X' THEN '响应中'
WHEN ZAB.STATUS = 'F' THEN '方案确认'
WHEN ZAB.STATUS = 'J' THEN '纠防确认'
WHEN ZAB.STATUS = 'Q' THEN '取消'
WHEN ZAB.STATUS = 'G' THEN '关闭' END STATUS_LOCALE ,
CASE WHEN ZAB.STATUS = 'F' THEN ZABD.RESOLVE_SEND_USER_GROUP
WHEN ZAB.STATUS = 'J' THEN ZABD.DUTY_SEND_USER_GROUP
WHEN ZAB.STATUS = 'Q' THEN ZAB.CANCEL_SEND_USER_GROUP
ELSE ZAB.REPORT_SEND_USER_GROUP END USER_GROUP ,
CASE WHEN ZAB.STATUS IN ('N' ,'X' ) THEN ROUND(SYSDATE - ZAB.CREATED_DATE_TIME,4)
ELSE 0 END UN_DEAL ,
ZAB.CREATED_DATE_TIME, ZABD.ABNORMAL_METHOD,
CASE WHEN ZABD.ABNORMAL_METHOD = 'X' THEN '线下换料'
WHEN ZABD.ABNORMAL_METHOD = 'S' THEN '试装'
WHEN ZABD.ABNORMAL_METHOD = 'R' THEN '让步放心'
WHEN ZABD.ABNORMAL_METHOD = 'C' THEN '产品报废'
WHEN ZABD.ABNORMAL_METHOD = 'P' THEN '配作'
WHEN ZABD.ABNORMAL_METHOD = 'F' THEN '返修'
WHEN ZABD.ABNORMAL_METHOD = 'CG' THEN '常规维修'
WHEN ZABD.ABNORMAL_METHOD = 'JH' THEN '计划维修'
WHEN ZABD.ABNORMAL_METHOD = 'DX' THEN '大项修' END ABNORMAL_METHOD_LOCALE,
CF.VALUE ITEM_NUMBER , ZAB.RESRCE , R.DESCRIPTION RESOURCE_DESCRIPTION,
ZABD.RESOLVE_DATE_TIME , ZAB.NC_CODE , T.NC_CODE_GATHER , T.DESCRIPTION_GATHER
FROM Z_ABNORMAL_BILL ZAB
LEFT JOIN Z_ABNORMAL_BILL_DISPOSE ZABD ON ZABD.ABNORMAL_BILL_BO = ZAB.HANDLE
LEFT JOIN RESRCE R ON R.RESRCE = ZAB.RESRCE
LEFT JOIN SHOP_ORDER SO ON SO.SHOP_ORDER = ZAB.SHOP_ORDER
LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = SO.HANDLE AND CF."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN (SELECT ZANC.ABNORMAL_BILL_BO ,LISTAGG(NC.NC_CODE,',') WITHIN GROUP (ORDER BY NC.NC_CODE) NC_CODE_GATHER ,
LISTAGG(NCT.DESCRIPTION ,',') WITHIN GROUP (ORDER BY NCT.DESCRIPTION ) DESCRIPTION_GATHER
FROM Z_ABNORMAL_NC_CODE ZANC
LEFT JOIN NC_CODE NC ON NC.NC_CODE = ZANC.NC_CODE
LEFT JOIN NC_CODE_T NCT ON NCT.NC_CODE_BO = NC.HANDLE
GROUP BY ZANC.ABNORMAL_BILL_BO) T ON T.ABNORMAL_BILL_BO = ZAB.HANDLE
WHERE ZAB.SITE = #{site} AND TO_CHAR(ZAB.CREATED_DATE_TIME + 8/24,'YYYY-MM' ) = TO_CHAR (SYSDATE , 'YYYY-MM')
<if test="workCenter != null and workCenter != ''">
AND ZB.WORK_CENTER = #{workCenter}
</if>
) T
LEFT JOIN USER_GROUP UG ON UG.USER_GROUP = T.USER_GROUP
ORDER BY T.SEQ
</select>
</mapper>

@ -287,7 +287,7 @@
<if test="endRate != null and endRate != ''">
AND M.RATE_DATA_INT &lt;= #{endRate}
</if>
ORDER BY M.WORK_CENTER,M.RESOURCE_TYPE,M.DATE_TIME
ORDER BY M.WORK_CENTER_DESCRIPTION,M.RESOURCE_TYPE_DESCRIPTION,M.DATE_TIME
<if test="reportType != null and reportType.contains('true')">
) TD
GROUP BY TD.RESOURCE_TYPE ,TD.RESOURCE_TYPE_DESCRIPTION ,TD.WORK_CENTER, TD.WORK_CENTER_DESCRIPTION
@ -666,4 +666,53 @@
GROUP BY "MONTH","SECTION"
ORDER BY "SECTION","MONTH"
</select>
<select id="selectItemMoveData" resultType="java.util.HashMap" parameterType="java.util.HashMap">
WITH TEMP AS (SELECT MAX(ZSD.HANDLE) HANDLE FROM Z_SFC_DISPATCH ZSD
WHERE ZSD.SITE = #{site} AND ZSD.OTHER_2 IS NOT NULL
GROUP BY ZSD.SFC )
SELECT ZSD.SHOP_ORDER ,ZSD.SFC , CF.VALUE WORK_ORDER , I.ITEM , IT.DESCRIPTION ITEM_DESCRIPTION ,
ZSD.BLANKING_SIZE , ZSD.OPERATION , OT.DESCRIPTION OPERATION_DESCRIPTION , ZSD.EMPLOYEE_DESCRIPTION ,
ZSD.DISPATCH_QTY ,ZSD.OTHER_2 , ZSD.OTHER_3 , ZSD.HANDLE , ZSD.BLANKING_SIZE ,
CASE WHEN ZSD.OTHER_2 = 'H' THEN '转入焊接'
WHEN ZSD.OTHER_2 = 'Z' THEN '转装配'
WHEN ZSD.OTHER_2 = 'RK' THEN '入库' END OTHER_2_DESC ,
CASE WHEN ZSD.OTHER_3 = 'true' THEN '已流转'
ELSE '未流转' END OTHER_3_DESC
FROM Z_SFC_DISPATCH ZSD
LEFT JOIN SHOP_ORDER SO ON SO.SHOP_ORDER = ZSD.SHOP_ORDER
LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = SO.HANDLE AND CF."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE
LEFT JOIN ITEM_T IT ON IT.ITEM_BO = SO.ITEM_BO
LEFT JOIN ITEM I ON I.HANDLE = SO.ITEM_BO
INNER JOIN TEMP ON TEMP.HANDLE = ZSD.HANDLE
WHERE ZSD.SITE = #{site} AND ZSD.DISPATCH_STATUS = 'COMPLETE'
<if test="other2 != null and other2 != ''">
AND ZSD.OTHER_2 = #{other2}
</if>
<if test="other3 != null and other3 != ''">
AND ZSD.OTHER_3 = #{other3}
</if>
<if test="operation != null and operation != ''">
AND ZSD.OPERATION = #{operation}
</if>
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
<if test="startFromDate != null and startFromDate != ''" >
AND TO_CHAR(ZSD.ACTUAL_COMPLETE_DATE,'YYYY-MM-DD') >=#{startFromDate}
</if>
<if test="startToDate != null and startToDate != ''" >
AND TO_CHAR(ZSD.ACTUAL_COMPLETE_DATE,'YYYY-MM-DD') &lt;= #{startToDate}
</if>
</select>
<update id="doItemMove">
UPDATE Z_SFC_DISPATCH ZSD SET ZSD.OTHER_3 = 'true' WHERE ZSD.HANDLE IN
<foreach item="item" collection="list" separator="," open="(" close=")" index="">
#{item}
</foreach>
AND ZSD.SITE = #{site}
</update>
</mapper>

@ -1,5 +1,7 @@
package com.foreverwin.mesnac.console.initMethod;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
@ -15,6 +17,7 @@ import org.springframework.stereotype.Component;
@Order(value = 1)
public class ApplicationRunnerInitial implements ApplicationRunner {
private static Logger logger = LoggerFactory.getLogger(ApplicationRunnerInitial.class);
@Value("${ws.erp.server}")
private String erpServer;
@Value("${ws.erp.port}")
@ -34,6 +37,12 @@ public class ApplicationRunnerInitial implements ApplicationRunner {
System.setProperty("ws.erp.username", erpUser);
System.setProperty("ws.erp.password", erpPwd);
System.setProperty("ws.erp.valid", valid);
logger.info(System.getProperty("ws.erp.server"));
logger.info(System.getProperty("ws.erp.port"));
logger.info(System.getProperty("ws.erp.username"));
logger.info(System.getProperty("ws.erp.password"));
logger.info(System.getProperty("ws.erp.valid"));
}
}

@ -75,7 +75,7 @@ print:
mepapi:
server: 113.98.201.217
port: 50000
port: 50400
username: site_admin
password: Sap12345
@ -119,9 +119,16 @@ exportDocument:
template: SFC_SCRAP_TEMPLATE.ftl
cappftp:
server: 172.16.251.70
port: 9003
username: Administrator
password: cappnew@123
server: 121.37.67.42
port: 21
username: ftpuser
password: 1qa2WS3ed
uploadDir:
downloadDir:
downloadDir:
#cappftp:
# server: 172.16.251.70
# port: 9003
# username: Administrator
# password: cappnew@123
# uploadDir:
# downloadDir:

@ -35,7 +35,10 @@ spring:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
profiles:
# active: prd
# active: qas
active: local
# active: dev
# 文件上传
servlet:
multipart:

@ -63,6 +63,27 @@ public class ShopOrderReleaseController {
return R.ok(list);
}
/**
* - BOM
*
* @param shopOrderList
* @return
*/
@ResponseBody
@PostMapping("shopOrderBomComponentUpdate")
public R shopOrderBomComponentUpdate(@RequestBody List<ShopOrderRelease> shopOrderList) {
try {
String site = CommonMethods.getSite();
String user = CommonMethods.getUser();
shopOrderReleaseService.shopOrderBomComponentUpdate(site, user, shopOrderList);
} catch (Exception e) {
return R.failed(e.getMessage());
}
return R.ok();
}
/**
* -
*

@ -22,4 +22,7 @@ import java.util.List;
public interface IssueItemMapper extends BaseMapper<IssueItem> {
BigDecimal selectInvIssueQty(@Param("site") String site, @Param("inventory") String inventory);
//查询上料表的上料数据
BigDecimal selectLoadInventoryQty(@Param("site") String site, @Param("inventoryId") String inventoryId);
}

@ -40,6 +40,18 @@ public interface ShopOrderReleaseService {
*/
List<ShopOrderRelease> findShopOrderList(ShopOrderRelease shopOrderRelease);
/**
* - BOM
*
* 1.
* 2.
*
* @param site
* @param user
* @param shopOrderList
*/
void shopOrderBomComponentUpdate(String site, String user, List<ShopOrderRelease> shopOrderList);
/**
* -
*

@ -217,7 +217,9 @@ public class IssueItemServiceImpl extends ServiceImpl<IssueItemMapper, IssueItem
meInventoryService.validateAndAdd(request);
} else {
issueInvQty = issueInvQty.add(inventoryModel.getQtyOnHand());
String inventoryId = inventoryModel.getInventoryId();
BigDecimal handOnQty = issueItemMapper.selectLoadInventoryQty(site, inventoryId);
issueInvQty = issueInvQty.add(inventoryModel.getQtyOnHand()).add(handOnQty);
//库存修改
InventoryValidateAndUpdateWithReceiveQuantityOverrideRequest request = new InventoryValidateAndUpdateWithReceiveQuantityOverrideRequest();

@ -469,6 +469,7 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
sfcDispatch.setPlannedCompDate(sfcDispatchDto.getPlannedCompDate());
sfcDispatch.setEarliestStartDate(sfcDispatchDto.getEarliestStartDate());
sfcDispatch.setLatestEndDate(sfcDispatchDto.getLatestEndDate());
sfcDispatch.setOther2(sfcDispatchDto.getOther2());
list.add(sfcDispatch);
@ -629,6 +630,7 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
sfcDispatch.setPlannedCompDate(sfcDispatchDto.getPlannedCompDate());
sfcDispatch.setEarliestStartDate(sfcDispatchDto.getEarliestStartDate());
sfcDispatch.setLatestEndDate(sfcDispatchDto.getLatestEndDate());
sfcDispatch.setOther2(sfcDispatchDto.getOther2());
//是否分配资源
if (StringUtil.notBlank(resource)) {

@ -11,10 +11,8 @@ import com.foreverwin.mesnac.dispatch.model.SfcDispatch;
import com.foreverwin.mesnac.dispatch.model.ShopOrderRelease;
import com.foreverwin.mesnac.dispatch.service.SfcDispatchService;
import com.foreverwin.mesnac.dispatch.service.ShopOrderReleaseService;
import com.foreverwin.mesnac.meapi.model.Router;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.foreverwin.mesnac.meapi.model.ShopOrder;
import com.foreverwin.mesnac.meapi.model.WorkCenter;
import com.foreverwin.mesnac.meapi.mapper.BomComponentMapper;
import com.foreverwin.mesnac.meapi.model.*;
import com.foreverwin.mesnac.meapi.service.*;
import com.foreverwin.mesnac.meapi.util.StringUtils;
import com.foreverwin.modular.core.exception.BaseException;
@ -67,6 +65,12 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
private SfcDispatchService sfcDispatchService;
@Autowired
private ShopOrderReleaseMapper shopOrderReleaseMapper;
@Autowired
private CustomFieldsService customFieldsService;
@Autowired
private BomComponentService bomComponentService;
@Autowired
private BomService bomService;
@Override
public List<RouterDTO> selectShopOrderRouter(String routerBo) {
@ -78,6 +82,53 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
return shopOrderReleaseMapper.findShopOrderList(shopOrderRelease);
}
@Override
public void shopOrderBomComponentUpdate(String site, String user, List<ShopOrderRelease> shopOrderList) {
if (shopOrderList == null || shopOrderList.size() <= 0) {
throw new BaseException("请至少选择一笔需要更新的工单");
}
for (ShopOrderRelease shopOrderReleaseModel : shopOrderList) {
Bom bom = isUpdateBomComponent(shopOrderReleaseModel, true);
if (bom==null){
continue;
}
//查询工单信息
String shopOrder = shopOrderReleaseModel.getShopOrder();
String shopOrderBo = shopOrderReleaseModel.getShopOrderBo();
ShopOrder shopOrderModel = shopOrderService.getById(shopOrderBo);
if (shopOrderModel == null) {
throw new BaseException("工单[" + shopOrder + "]不存在");
}
/*if (!"H".equals(bom.getBomType())){
throw BusinessException.build("工单["+shopOrder+"]的计划物料清单["+plannedBomBo+"]的类型不是'工单'!");
}*/
Double qtyToBuild = shopOrderModel.getQtyToBuild();
// 更新工单BOM的组件数据
List<BomComponent> bomComponents = bomComponentService.listByBomBo(bom.getHandle());
List<BomComponent> bomComponentList = new ArrayList<>();
for (BomComponent bomComponent:bomComponents) {
try{
BigDecimal bomComponentQty = new BigDecimal(bomComponent.getQty());
BigDecimal qty = new BigDecimal(qtyToBuild);
BigDecimal resultQty = bomComponentQty.divide(qty,4,BigDecimal.ROUND_DOWN);
bomComponent.setQty(resultQty.doubleValue());
}catch (Exception e){
throw BusinessException.build("工单组件数量除以工单数量时出现异常,请查看工单["+shopOrder+"]工单BOM["+bom.getBom()+"]组件的数量!");
}
bomComponent.setModifiedDateTime(LocalDateTime.now());
bomComponentList.add(bomComponent);
}
bomComponentService.saveOrUpdateBatch(bomComponentList);
CustomFields customFields = new CustomFields();
customFields.setHandle(bom.getHandle());
customFields.setAttribute("IS_CHANGE_QTY");
customFields.setValue("TRUE");
customFields.setCreatedDateTime(new Date());
customFieldsService.save(customFields);
}
}
@Override
public void shopOrderRelease(String site, String user, List<ShopOrderRelease> shopOrderList) {
if (shopOrderList == null || shopOrderList.size() <= 0) {
@ -102,6 +153,9 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
throw new BaseException("工单[" + shopOrder + "]不存在");
}
// 校验工单对应的工单BOM是否更新了组件数据
isUpdateBomComponent(shopOrderReleaseModel,false);
String statusBo = shopOrderModel.getStatusBo();
String routerBo = shopOrderModel.getPlannedRouterBo();
BigDecimal qtyToBuild = new BigDecimal(shopOrderModel.getQtyToBuild());
@ -515,4 +569,40 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
return prodHours;
}
/** 校验工单BOM是否已更新 **/
public Bom isUpdateBomComponent(ShopOrderRelease shopOrderRelease,Boolean bl){
String shopOrder = shopOrderRelease.getShopOrder();
String shopOrderBo = shopOrderRelease.getShopOrderBo();
ShopOrder shopOrderModel = shopOrderService.getById(shopOrderBo);
if (shopOrderModel == null) {
throw new BaseException("工单[" + shopOrder + "]不存在");
}
String statusBo = shopOrderModel.getStatusBo();
if (!"501".equals(StringUtils.trimHandle(statusBo)) && bl) {
throw BusinessException.build("工单[" +shopOrder+ "]不是可下达状态无法更新工单BOM");
}
String plannedBomBo = shopOrderModel.getPlannedBomBo();
String bomNo = plannedBomBo.split(",")[1];
Bom bom = new Bom();
bom.setBom(bomNo);
bom.setCurrentRevision("true");
List<Bom> boms = bomService.selectList(bom);
if (boms == null || boms.isEmpty()){
throw BusinessException.build("工单["+shopOrder+"]的计划物料清单["+plannedBomBo+"]不存在,请维护主数据!");
}
if (boms.size() > 1){
throw BusinessException.build("工单["+shopOrder+"]的计划物料清单["+plannedBomBo+"]存在多个当前版本,请修改主数据!");
}
String handle = boms.get(0).getHandle();
String customFieldsValue = customFieldsService.getCustomFieldsValue(handle, "IS_CHANGE_QTY");
if ("TRUE".equals(customFieldsValue)){
return null;
}else {
if (bl){
return boms.get(0);
}
throw BusinessException.build("工单[" +shopOrder+ "]未更新工单BOM不能点击下达请先更新工单BOM后再下达工单");
}
}
}

@ -344,4 +344,10 @@
WHERE SITE = #{site} AND INVENTORY = #{inventory}
GROUP BY SITE, INVENTORY
</select>
<select id="selectLoadInventoryQty" resultType="java.math.BigDecimal">
SELECT NVL(SUM(ZLI.QTY_ON_HAND),0) FROM Z_LOAD_INVENTORY ZLI
WHERE ZLI.SITE = #{site} AND ZLI.INVENTORY_ID = #{inventoryId}
</select>
</mapper>

@ -684,7 +684,7 @@
CASE WHEN SD.DISPATCH_STATUS = 'COMPLETE' THEN SD.DISPATCH_QTY ELSE 0 END COMPLETED_QTY, SD.PLANNED_START_DATE, SD.PLANNED_COMP_DATE, SD.WORK_CENTER, SD.IS_DISPATCH, SD.EMPLOYEE_DESCRIPTION,
SD.ACTUAL_START_DATE, SD.ACTUAL_COMPLETE_DATE, SD.REMARK, SD.DISPATCH_SEQ, SD.DISPATCH_SEQ-1 BEFORE_SEQ, SD.DISPATCH_SEQ+1 AFTER_SEQ, SD.EARLIEST_START_DATE, SD.LATEST_END_DATE,
CASE WHEN CC.VALUE = '9' THEN N'是' ELSE N'否' END IS_MAJOR, CASE WHEN SD.TURN_OPERATION = 'true' THEN N'是' ELSE N'否' END TURN_OPERATION, SD.BLANKING_SIZE, MAX(BC.COMPONENT_GBO) COMPONENT_BO,
WR.WORK_CENTER RESOURCE_WORK_CENTER, MAX(CP.ITEM) COMPONENT, MAX(CT.DESCRIPTION) COMPONENT_DESCRIPTION, MAX(C3.VALUE) TEXTURE, MAX(C4.VALUE) MAT_SPEC
WR.WORK_CENTER RESOURCE_WORK_CENTER, MAX(CP.ITEM) COMPONENT, MAX(CT.DESCRIPTION) COMPONENT_DESCRIPTION, MAX(C3.VALUE) TEXTURE, MAX(C4.VALUE) MAT_SPEC ,SD.OTHER_2
FROM Z_SFC_DISPATCH SD
INNER JOIN SFC SC ON SC.SITE = SD.SITE AND SC.SFC = SD.SFC
LEFT JOIN RESRCE RS ON SD.SITE = RS.SITE AND SD.RESRCE = RS.RESRCE
@ -778,7 +778,7 @@
SD.STEP_ID, SD.OPERATION, OT.DESCRIPTION, SD.RESOURCE_TYPE, SD.RESRCE, SD.EMPLOYEE, SD.EMPLOYEE, SD.DISPATCH_QTY, SD.PROD_HOURS, RS.DESCRIPTION,
SD.DISPATCH_STATUS, SD.DISPATCH_QTY, SD.PLANNED_START_DATE, SD.PLANNED_COMP_DATE, SD.WORK_CENTER, SD.IS_DISPATCH, SD.EMPLOYEE_DESCRIPTION,
SD.ACTUAL_START_DATE, SD.ACTUAL_COMPLETE_DATE, SD.REMARK, SD.DISPATCH_SEQ, SD.EARLIEST_START_DATE, SD.LATEST_END_DATE,
CC.VALUE, SD.TURN_OPERATION, SD.BLANKING_SIZE, WR.WORK_CENTER
CC.VALUE, SD.TURN_OPERATION, SD.BLANKING_SIZE, WR.WORK_CENTER ,SD.OTHER_2
) WIP
LEFT JOIN Z_SFC_DISPATCH V1 ON V1.SITE = WIP.SITE AND V1.SFC = WIP.SFC AND V1.ROUTER_BO = WIP.ROUTER_BO AND V1.DISPATCH_SEQ = WIP.BEFORE_SEQ
LEFT JOIN Z_SFC_DISPATCH V2 ON V2.SITE = WIP.SITE AND V2.SFC = WIP.SFC AND V2.ROUTER_BO = WIP.ROUTER_BO AND V2.DISPATCH_SEQ = WIP.AFTER_SEQ

@ -327,12 +327,12 @@
<if test="ew.entity.origin!=null"> AND ORIGIN=#{ew.entity.origin}</if>
</if>
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
${ew.sqlSegment}
AND ${ew.sqlSegment}
</if>
</if>
</where>
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
${ew.sqlSegment}
AND ${ew.sqlSegment}
</if>
</select>

@ -676,13 +676,13 @@
JOIN Z_SFC_DISPATCH zsd ON S.SFC=zsd.SFC AND S.SITE=zsd.SITE
LEFT JOIN Z_SFC_DISPATCH PREZSD ON zsd.SFC=PREZSD.SFC AND PREZSD.DISPATCH_SEQ=TO_NUMBER(zsd.DISPATCH_SEQ)-1 AND zsd.ROUTER_BO=PREZSD.ROUTER_BO
JOIN Z_PROD_READY_TASK zprt ON ZPRT.SFC_DISPATCH_BO=zsd.HANDLE
JOIN SFC S ON S.SFC=ZSD.SFC AND S.SITE=ZSD.SITE
JOIN SFC_ROUTING SR ON SR.SFC_BO=S.HANDLE
JOIN SFC_ROUTER SR2 ON SR.HANDLE =SR2.SFC_ROUTING_BO AND SR2.IN_USE = 'true'
LEFT JOIN SFC_STEP SS ON SR2.HANDLE =SS.SFC_ROUTER_BO AND (SS.QTY_IN_QUEUE>0 or SS.QTY_IN_WORK>0)
JOIN SFC_STEP SSS ON SR2.HANDLE =SSS.SFC_ROUTER_BO AND SSS.STEP_ID = ZSD.STEP_ID AND SSS.BYPASSED = 'false'
WHERE S.SITE=#{ew.entity.site} AND ZSD.RESRCE=#{ew.entity.resrce} AND (ZSD.DISPATCH_STATUS='RELEASE' OR ZSD.DISPATCH_STATUS='START')
AND S.STATUS_BO IN ('StatusBO:'||#{ew.entity.site}||',401','StatusBO:'||#{ew.entity.site}||',402','StatusBO:'||#{ew.entity.site}||',403','StatusBO:'||#{ew.entity.site}||',404')
AND zprt.STATUS='FINISH' AND ZPRT."RESULT"='OK' AND SS.BYPASSED = 'false'
AND zprt.STATUS='FINISH' AND ZPRT."RESULT"='OK'
) T
WHERE T.SITE = #{ew.entity.site}
<if test="globalQuery!=null and globalQuery!=''">

@ -22,6 +22,8 @@ import com.foreverwin.mesnac.common.service.SfcDispatchCommonService;
import com.foreverwin.mesnac.common.util.ERPAPI;
import com.foreverwin.mesnac.common.util.ExceptionUtil;
import com.foreverwin.mesnac.common.util.StringUtil;
import com.foreverwin.mesnac.dispatch.model.SfcDispatch;
import com.foreverwin.mesnac.dispatch.service.SfcDispatchService;
import com.foreverwin.mesnac.integration.model.IntegrationLog;
import com.foreverwin.mesnac.integration.service.IntegrationLogService;
import com.foreverwin.mesnac.meapi.dto.BomComponentDto;
@ -103,7 +105,8 @@ public class PodTemplateServiceImpl implements PodTemplateService {
private SfcDispatchCommonService sfcDispatchCommonService;
@Autowired
private ResrceMapper resrceMapper;
@Autowired
private SfcDispatchService sfcDispatchService;
@Override
@ -273,6 +276,7 @@ public class PodTemplateServiceImpl implements PodTemplateService {
String stepId = sfcDto.getStepId();
String dispatchNo = sfcDto.getDispatchNo();
SfcDispatch sfcDispatchById = sfcDispatchService.getById(HandleEnum.SFC_DISPATCH.getHandle(site, dispatchNo));
Sfc sfcServiceById = sfcService.getById(HandleEnum.SFC.getHandle(site, sfc));
String status = StringUtil.trimHandle(sfcServiceById.getStatusBo());
if (status.equals("404")) {
@ -337,7 +341,9 @@ public class PodTemplateServiceImpl implements PodTemplateService {
inspectionTaskService.createTask(paramMap);
}
//计算工时
LocalDateTime startTime = sfcService.getSfcStartTime(HandleEnum.SFC.getHandle(site, sfc));
//LocalDateTime startTime = sfcService.getSfcStartTime(HandleEnum.SFC.getHandle(site, sfc));
// 派工表实际开始时间
LocalDateTime startTime = sfcDispatchById.getActualStartDate();
long workHourSeconds = Duration.between(startTime, LocalDateTime.now()).getSeconds();
workHour = new BigDecimal(workHourSeconds).divide(BigDecimal.valueOf(3600), 2, RoundingMode.HALF_UP);
//减去暂停时间

Loading…
Cancel
Save