添加零件生产过程追溯报表

master
yinq 3 years ago
parent 960e4f0365
commit 1d5ca6ec93

@ -136,6 +136,20 @@ public class ReportController {
return R.failed(e.getMessage()); return R.failed(e.getMessage());
} }
} }
/**
*
* @param paramMap
* @return
*/
@GetMapping("/partsTraceScheduleReport")
public R partsTraceScheduleReport(@RequestParam(required = false) Map paramMap){
try{
List<Map<String, Object>> result = reportService.partsTraceScheduleReport(paramMap);
return R.ok(result);
}catch (Exception e){
return R.failed(e.getMessage());
}
}
@GetMapping("/findOperatorScheduleReport") @GetMapping("/findOperatorScheduleReport")
public R findOperatorScheduleReport(@RequestParam(required = false) Map paramMap){ public R findOperatorScheduleReport(@RequestParam(required = false) Map paramMap){

@ -57,4 +57,10 @@ public interface ReportMapper {
* @return * @return
*/ */
List<Map<String,Object>> findWorkOrderSchedule(Map paramMap); List<Map<String,Object>> findWorkOrderSchedule(Map paramMap);
/**
*
* @param paramMap
* @return
*/
List<Map<String,Object>> partsTraceScheduleReport(Map paramMap);
} }

@ -61,4 +61,11 @@ public interface ReportService {
* @return * @return
*/ */
List<Map<String,Object>> findWorkOrderSchedule(Map paramMap); List<Map<String,Object>> findWorkOrderSchedule(Map paramMap);
/**
*
* @param paramMap
* @return
*/
List<Map<String, Object>> partsTraceScheduleReport(Map paramMap);
} }

@ -347,6 +347,20 @@ public class ReportServiceImpl implements ReportService {
paramMap.put("locale",LocaleContextHolder.getLocale().getLanguage()); paramMap.put("locale",LocaleContextHolder.getLocale().getLanguage());
return reportMapper.findWorkOrderSchedule(paramMap); return reportMapper.findWorkOrderSchedule(paramMap);
} }
/**
*
* @param paramMap
* @return
*/
@Override
public List<Map<String, Object>> partsTraceScheduleReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site",site);
paramMap.put("locale",LocaleContextHolder.getLocale().getLanguage());
return reportMapper.partsTraceScheduleReport(paramMap);
}
} }

@ -12,8 +12,8 @@
<result column="PARAM" property="param"/> <result column="PARAM" property="param"/>
</resultMap> </resultMap>
<select id="findIntegrationLog" resultMap="IntegrationLogDto"> <select id="findIntegrationLog" resultMap="IntegrationLogDto">
SELECT HANDLE,INTEGRATION_TYPE, CATEGORY, INTEGRATION_WAY,STATUS, SELECT HANDLE,INTEGRATION_TYPE, CATEGORY, INTEGRATION_WAY,STATUS,
REQUEST_DATE_TIME,RESULT_MESSAGE RESULT_MESSAGE,PARAM PARAM REQUEST_DATE_TIME,RESULT_MESSAGE RESULT_MESSAGE,PARAM PARAM
FROM Z_INTEGRATION_LOG FROM Z_INTEGRATION_LOG
<where> <where>
SITE = #{site} SITE = #{site}
@ -27,7 +27,7 @@
AND STATUS = #{param.status} AND STATUS = #{param.status}
</if> </if>
<if test="param.startDateTime != null and param.startDateTime != ''"> <if test="param.startDateTime != null and param.startDateTime != ''">
AND REQUEST_DATE_TIME &gt;= TO_DATE(#{param.startDateTime}, 'YYYY-MM-DD') - 8/24 AND REQUEST_DATE_TIME &gt;= TO_DATE(#{param.startDateTime}, 'YYYY-MM-DD') - 8/24
</if> </if>
<if test="param.endDateTime != null and param.endDateTime != ''"> <if test="param.endDateTime != null and param.endDateTime != ''">
AND REQUEST_DATE_TIME &lt;= TO_DATE(#{param.endDateTime}|| '15:59:59', 'YYYY-MM-DD HH24:MI:SS') AND REQUEST_DATE_TIME &lt;= TO_DATE(#{param.endDateTime}|| '15:59:59', 'YYYY-MM-DD HH24:MI:SS')
@ -42,7 +42,8 @@
<select id="partsManufacturing" parameterType="java.util.HashMap" resultType="java.util.HashMap"> <select id="partsManufacturing" parameterType="java.util.HashMap" resultType="java.util.HashMap">
WITH ZSD AS ( WITH ZSD AS (
SELECT * FROM SELECT * FROM
( SELECT TEMP.* , ROW_NUMBER() OVER(PARTITION BY TEMP.FINISHED_SFC , TEMP.FINISHED_SHOP_ORDER ORDER BY STEP_ID_A) RN FROM ( SELECT TEMP.* , ROW_NUMBER() OVER(PARTITION BY TEMP.FINISHED_SFC , TEMP.FINISHED_SHOP_ORDER ORDER BY
STEP_ID_A) RN FROM
( (
SELECT SELECT
cf.VALUE FINISHED_WORK_ORDER, cf.VALUE FINISHED_WORK_ORDER,
@ -83,10 +84,12 @@
) WHERE RN = 1 ) WHERE RN = 1
) , ) ,
zsdTemplate AS ( zsdTemplate AS (
SELECT COUNT(ZSD2.SHOP_ORDER) NUM , ZSD.FINISHED_SHOP_ORDER FINISHED_SHOP_ORDER_TEMP , ZSD.FINISHED_SFC FINISHED_SFC_TEMP FROM ZSD SELECT COUNT(ZSD2.SHOP_ORDER) NUM , ZSD.FINISHED_SHOP_ORDER FINISHED_SHOP_ORDER_TEMP , ZSD.FINISHED_SFC
FINISHED_SFC_TEMP FROM ZSD
INNER JOIN BOM_COMPONENT bc ON bc.BOM_BO = zsd.BOM_BO INNER JOIN BOM_COMPONENT bc ON bc.BOM_BO = zsd.BOM_BO
INNER JOIN SHOP_ORDER so ON so.ITEM_BO = BC.COMPONENT_GBO INNER JOIN SHOP_ORDER so ON so.ITEM_BO = BC.COMPONENT_GBO
INNER JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'WORK_ORDER' AND cf.VALUE = zsd.FINISHED_WORK_ORDER 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 zsd2.SITE = #{site} INNER JOIN Z_SFC_DISPATCH zsd2 ON zsd2.SHOP_ORDER = so.SHOP_ORDER AND zsd2.SITE = #{site}
WHERE zsd2.DISPATCH_STATUS != 'COMPLETE' AND zsd2.DISPATCH_STATUS != 'CANCEL' WHERE zsd2.DISPATCH_STATUS != 'COMPLETE' AND zsd2.DISPATCH_STATUS != 'CANCEL'
GROUP BY ZSD.FINISHED_SHOP_ORDER , ZSD.FINISHED_SFC GROUP BY ZSD.FINISHED_SHOP_ORDER , ZSD.FINISHED_SFC
@ -175,7 +178,8 @@
FROM FROM
zsd zsd
LEFT JOIN zsdTemplate ON LEFT JOIN zsdTemplate ON
zsdTemplate.FINISHED_SHOP_ORDER_TEMP = zsd.FINISHED_SHOP_ORDER AND zsdTemplate.FINISHED_SFC_TEMP = ZSD.FINISHED_SFC zsdTemplate.FINISHED_SHOP_ORDER_TEMP = zsd.FINISHED_SHOP_ORDER AND zsdTemplate.FINISHED_SFC_TEMP =
ZSD.FINISHED_SFC
INNER JOIN BOM_COMPONENT bc ON INNER JOIN BOM_COMPONENT bc ON
bc.BOM_BO = zsd.BOM_BO bc.BOM_BO = zsd.BOM_BO
INNER JOIN ITEM i ON INNER JOIN ITEM i ON
@ -312,62 +316,65 @@
<select id="resourceRepair" resultType="java.util.HashMap"> <select id="resourceRepair" resultType="java.util.HashMap">
SELECT SELECT
ZRRT.HANDLE HANDLE, ZRRT.HANDLE HANDLE,
CASE WHEN WC2.WORK_CENTER != 'NULL' THEN WC2.WORK_CENTER CASE WHEN WC2.WORK_CENTER != 'NULL' THEN WC2.WORK_CENTER
ELSE WC.WORK_CENTER ELSE WC.WORK_CENTER
END WORK_CENTER, END WORK_CENTER,
CASE WHEN WCT2.DESCRIPTION != 'NULL' THEN WCT2.DESCRIPTION CASE WHEN WCT2.DESCRIPTION != 'NULL' THEN WCT2.DESCRIPTION
ELSE WCT.DESCRIPTION ELSE WCT.DESCRIPTION
END WORK_CENTER_DESCRIPTION, END WORK_CENTER_DESCRIPTION,
ZRRT.RESOURCE_NO,R.DESCRIPTION RESOURCE_DESCRIPTION,ZRRT.NC_CODE_NO, /*不良代码描述,维修人员*/ ZRRT.RESOURCE_NO,R.DESCRIPTION RESOURCE_DESCRIPTION,ZRRT.NC_CODE_NO, /*不良代码描述,维修人员*/
ZRRT.PRELIMINARY_REASON ,dflt.DATA_TAG DEAL_WAY ,ZRRT.DEAL_WAY_DESCRIPTION , ZRRT.PRELIMINARY_REASON ,dflt.DATA_TAG DEAL_WAY ,ZRRT.DEAL_WAY_DESCRIPTION ,
I.ITEM ITEM, I.ITEM ITEM,
CASE WHEN ZRITS.ITEM_BO != 'NULL' THEN IT.DESCRIPTION CASE WHEN ZRITS.ITEM_BO != 'NULL' THEN IT.DESCRIPTION
ELSE ZRITS.DESCRIPTION ELSE ZRITS.DESCRIPTION
END ITEM_DESCRIPTION, END ITEM_DESCRIPTION,
CF.VALUE ITEM_SPEC, CF.VALUE ITEM_SPEC,
ZRRT.ACTUAL_START_DATE ACTUAL_START_DATE,ZRRT.ACTUAL_COMPLETE_DATE ACTUAL_COMPLETE_DATE, ZRRT.ACTUAL_START_DATE ACTUAL_START_DATE,ZRRT.ACTUAL_COMPLETE_DATE ACTUAL_COMPLETE_DATE,
'' SHUT_DOWN_TIME,/*暂时无法计算*/ '' SHUT_DOWN_TIME,/*暂时无法计算*/
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') CASE WHEN ZRRT.ACTUAL_START_DATE IS NOT NULL THEN TO_CHAR(TO_NUMBER((ZRRT.ACTUAL_START_DATE
ELSE TO_CHAR(TO_NUMBER((SYSDATE -ZRRT.CREATED_DATE_TIME)*24),'FM9999990.000') -ZRRT.CREATED_DATE_TIME)*24),'FM9999990.000')
END REPORT_WAIT_TIME , ELSE TO_CHAR(TO_NUMBER((SYSDATE -ZRRT.CREATED_DATE_TIME)*24),'FM9999990.000')
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') END REPORT_WAIT_TIME ,
ELSE TO_CHAR(TO_NUMBER((SYSDATE- 8/24 - ZRRT.CREATED_DATE_TIME-ZRRT.WAIT_TIME)*24),'FM9999990.000') CASE WHEN ZRRT.ACTUAL_COMPLETE_DATE IS NOT NULL THEN
END REPAIR_TIME , TO_CHAR(TO_NUMBER((ZRRT.ACTUAL_COMPLETE_DATE-ZRRT.CREATED_DATE_TIME)*24) -
CASE WHEN ZRRT.STATUS = '401' THEN '待维修' NVL(ZRRT.WAIT_TIME,0),'FM9999990.000')
WHEN ZRRT.STATUS = '501' THEN '维修中' ELSE TO_CHAR(TO_NUMBER((SYSDATE- 8/24 - ZRRT.CREATED_DATE_TIME-ZRRT.WAIT_TIME)*24),'FM9999990.000')
WHEN ZRRT.STATUS = '502' THEN '维修等待' END REPAIR_TIME ,
WHEN ZRRT.STATUS = '302' THEN '关闭' CASE WHEN ZRRT.STATUS = '401' THEN '待维修'
WHEN ZRRT.STATUS = '301' THEN '维修完成' WHEN ZRRT.STATUS = '501' THEN '维修中'
WHEN ZRRT.STATUS = '601' THEN '报修单确认' WHEN ZRRT.STATUS = '502' THEN '维修等待'
END STATUS WHEN ZRRT.STATUS = '302' THEN '关闭'
,ZRRT.REPORT_USER REPORT_USER,ZNU.FULL_NAME REPORT_USER_DESCRIPTION, WHEN ZRRT.STATUS = '301' THEN '维修完成'
ZRRT.REPAIR_USERS ,ZRRT.REMARK , ZRRT.CREATED_DATE_TIME REPORT_DATE_TIME WHEN ZRRT.STATUS = '601' THEN '报修单确认'
END STATUS
,ZRRT.REPORT_USER REPORT_USER,ZNU.FULL_NAME REPORT_USER_DESCRIPTION,
ZRRT.REPAIR_USERS ,ZRRT.REMARK , ZRRT.CREATED_DATE_TIME REPORT_DATE_TIME
FROM FROM
Z_RESOURCE_REPAIR_TASK ZRRT Z_RESOURCE_REPAIR_TASK ZRRT
INNER JOIN RESRCE R ON R.RESRCE = ZRRT.RESOURCE_NO AND R.SITE = ZRRT.SITE INNER JOIN RESRCE R ON R.RESRCE = ZRRT.RESOURCE_NO AND R.SITE = ZRRT.SITE
INNER JOIN WORK_CENTER_MEMBER WCM ON WCM.WORK_CENTER_OR_RESOURCE_GBO = R.HANDLE INNER JOIN WORK_CENTER_MEMBER WCM ON WCM.WORK_CENTER_OR_RESOURCE_GBO = R.HANDLE
LEFT JOIN WORK_CENTER WC ON WC.HANDLE = WCM.WORK_CENTER_BO AND WC.WC_CATEGORY ='LEVEL2' LEFT JOIN WORK_CENTER WC ON WC.HANDLE = WCM.WORK_CENTER_BO AND WC.WC_CATEGORY ='LEVEL2'
LEFT JOIN WORK_CENTER_MEMBER WCM2 ON WCM2.WORK_CENTER_OR_RESOURCE_GBO = WC.HANDLE LEFT JOIN WORK_CENTER_MEMBER WCM2 ON WCM2.WORK_CENTER_OR_RESOURCE_GBO = WC.HANDLE
LEFT JOIN WORK_CENTER WC2 ON WC2.HANDLE = WCM2.WORK_CENTER_BO AND WC2.WC_CATEGORY = 'LEVEL4' LEFT JOIN WORK_CENTER WC2 ON WC2.HANDLE = WCM2.WORK_CENTER_BO AND WC2.WC_CATEGORY = 'LEVEL4'
LEFT JOIN WORK_CENTER_T WCT ON WCT.WORK_CENTER_BO = WC.HANDLE AND WCT.LOCALE = #{locale} LEFT JOIN WORK_CENTER_T WCT ON WCT.WORK_CENTER_BO = WC.HANDLE AND WCT.LOCALE = #{locale}
LEFT JOIN WORK_CENTER_T WCT2 ON WCT2.WORK_CENTER_BO = WC2.HANDLE AND WCT2.LOCALE = #{locale} LEFT JOIN WORK_CENTER_T WCT2 ON WCT2.WORK_CENTER_BO = WC2.HANDLE AND WCT2.LOCALE = #{locale}
LEFT JOIN Z_RESOURCE_INSPECT_TASK_SPARE ZRITS ON ZRITS.RESOURCE_INSPECT_TASK_BO = ZRRT.HANDLE LEFT JOIN Z_RESOURCE_INSPECT_TASK_SPARE ZRITS ON ZRITS.RESOURCE_INSPECT_TASK_BO = ZRRT.HANDLE
LEFT JOIN ITEM I ON I.HANDLE = ZRITS.ITEM_BO LEFT JOIN ITEM I ON I.HANDLE = ZRITS.ITEM_BO
LEFT JOIN ITEM_T IT ON IT.ITEM_BO = ZRITS.ITEM_BO AND IT.LOCALE = #{locale} LEFT JOIN ITEM_T IT ON IT.ITEM_BO = ZRITS.ITEM_BO AND IT.LOCALE = #{locale}
LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = ZRITS.ITEM_BO AND CF."ATTRIBUTE" = 'MAT_SPEC' LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = ZRITS.ITEM_BO AND CF."ATTRIBUTE" = 'MAT_SPEC'
LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = ZRRT.REPORT_USER AND ZNU.SITE = ZRRT.SITE LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = ZRRT.REPORT_USER AND ZNU.SITE = ZRRT.SITE
LEFT JOIN DATA_FIELD df ON df.DATA_FIELD = 'REPAIR_DEAL_WAY' LEFT JOIN DATA_FIELD df ON df.DATA_FIELD = 'REPAIR_DEAL_WAY'
LEFT JOIN DATA_FIELD_LIST dfl ON dfl.DATA_FIELD_BO = df.HANDLE AND dfl.DATA_VALUE = ZRRT.DEAL_WAY LEFT JOIN DATA_FIELD_LIST dfl ON dfl.DATA_FIELD_BO = df.HANDLE AND dfl.DATA_VALUE = ZRRT.DEAL_WAY
LEFT JOIN DATA_FIELD_LIST_T dflt ON dflt.DATA_FIELD_LIST_BO = dfl.HANDLE AND dflt.LOCALE = #{locale} LEFT JOIN DATA_FIELD_LIST_T dflt ON dflt.DATA_FIELD_LIST_BO = dfl.HANDLE AND dflt.LOCALE = #{locale}
<where> <where>
ZRRT.SITE = #{site} ZRRT.SITE = #{site}
<if test="param.workCenter != null and param.workCenter != ''"> <if test="param.workCenter != null and param.workCenter != ''">
AND (WC.WORK_CENTER LIKE '%${param.workCenter}%' OR WC2.WORK_CENTER LIKE '%${param.workCenter}%' OR AND (WC.WORK_CENTER LIKE '%${param.workCenter}%' OR WC2.WORK_CENTER LIKE '%${param.workCenter}%' OR
WCT.DESCRIPTION LIKE '%${param.workCenter}%' OR WCT2.DESCRIPTION LIKE '%${param.workCenter}%') WCT.DESCRIPTION LIKE '%${param.workCenter}%' OR WCT2.DESCRIPTION LIKE '%${param.workCenter}%')
</if> </if>
<if test="param.resource != null and param.resource != ''"> <if test="param.resource != null and param.resource != ''">
AND (R.RESRCE LIKE '%${param.resource}%' OR R.DESCRIPTION LIKE '%${param.resource}%') AND (R.RESRCE LIKE '%${param.resource}%' OR R.DESCRIPTION LIKE '%${param.resource}%')
@ -383,9 +390,11 @@
</select> </select>
<select id="findInspectionTask" resultType="java.util.HashMap" parameterType="java.util.HashMap"> <select id="findInspectionTask" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT WT.DESCRIPTION WORK_CENTER_DESCRIPTION, C2.VALUE ITEM_NUMBER,SO.SHOP_ORDER, C3.VALUE PRODUCT_MODEL,IM.ITEM ITEM, IT.DESCRIPTION ITEM_DESCRIPTION, SELECT WT.DESCRIPTION WORK_CENTER_DESCRIPTION, C2.VALUE ITEM_NUMBER,SO.SHOP_ORDER, C3.VALUE
ZT.SFC, ZT.OPERATION, OT.DESCRIPTION OPERATION_DESCRIPTION, ZT.RESRCE, RS.DESCRIPTION RESOURCE_DESCRIPTION, ZT.TASK_NO, ZT.CATEGORY, PRODUCT_MODEL,IM.ITEM ITEM, IT.DESCRIPTION ITEM_DESCRIPTION,
ZT."RESULT", ZT.CREATE_USER, ZNU.FULL_NAME, ZT.MODIFIED_DATE_TIME ZT.SFC, ZT.OPERATION, OT.DESCRIPTION OPERATION_DESCRIPTION, ZT.RESRCE, RS.DESCRIPTION RESOURCE_DESCRIPTION,
ZT.TASK_NO, ZT.CATEGORY,
ZT."RESULT", ZT.CREATE_USER, ZNU.FULL_NAME, ZT.MODIFIED_DATE_TIME
FROM Z_INSPECTION_TASK ZT FROM Z_INSPECTION_TASK ZT
LEFT JOIN WORK_CENTER WC ON WC.SITE = ZT.SITE AND WC.WORK_CENTER = ZT.WORK_CENTER LEFT JOIN WORK_CENTER WC ON WC.SITE = ZT.SITE AND WC.WORK_CENTER = ZT.WORK_CENTER
LEFT JOIN WORK_CENTER_T WT ON WT.WORK_CENTER_BO = WC.HANDLE AND WT.LOCALE = 'zh' LEFT JOIN WORK_CENTER_T WT ON WT.WORK_CENTER_BO = WC.HANDLE AND WT.LOCALE = 'zh'
@ -401,7 +410,7 @@
LEFT JOIN Z_NWA_USER ZNU ON ZNU.SITE = ZT.SITE AND ZNU.USER_NAME = ZT.CREATE_USER LEFT JOIN Z_NWA_USER ZNU ON ZNU.SITE = ZT.SITE AND ZNU.USER_NAME = ZT.CREATE_USER
WHERE ZT.SITE = #{site} WHERE ZT.SITE = #{site}
<if test="workCenter != null and workCenter != ''"> <if test="workCenter != null and workCenter != ''">
AND (WC.WORK_CENTER = #{workCenter} OR WT.DESCRIPTION = #{workCenter}) AND (WC.WORK_CENTER = #{workCenter} OR WT.DESCRIPTION = #{workCenter})
</if> </if>
<if test="category != null and category != ''"> <if test="category != null and category != ''">
AND ZT.CATEGORY = #{category} AND ZT.CATEGORY = #{category}
@ -433,7 +442,8 @@
</select> </select>
<select id="findQualityInspectionReport" parameterType="java.util.HashMap" resultType="java.util.HashMap"> <select id="findQualityInspectionReport" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT Szsd.PROD_HOURS* CFPT.VALUE*zab.PB_QTY PRICE,CFPT.VALUE PRICE_TIME,zab.CREATED_DATE_TIME,zab.ABNORMAL_NO ABNORMAL_NO, SELECT Szsd.PROD_HOURS* CFPT.VALUE*zab.PB_QTY PRICE,CFPT.VALUE PRICE_TIME,zab.CREATED_DATE_TIME,zab.ABNORMAL_NO
ABNORMAL_NO,
dflt.DATA_TAG PRODUCT_CATEGORY, dflt.DATA_TAG PRODUCT_CATEGORY,
dflt2.DATA_TAG DISCOVER, dflt2.DATA_TAG DISCOVER,
i.ITEM ITEM ,it.DESCRIPTION ITEM_DESCRIPTION, i.ITEM ITEM ,it.DESCRIPTION ITEM_DESCRIPTION,
@ -471,51 +481,54 @@
END ABNORMAL_METHOD,zabd.RESOLVE_REMARK RESOLVE_REMARK,znu2.FULL_NAME RESOLVE_USER, END ABNORMAL_METHOD,zabd.RESOLVE_REMARK RESOLVE_REMARK,znu2.FULL_NAME RESOLVE_USER,
zabd.CLOSED_DATE_TIME CLOSED_DATE_TIME,zab.NC_QTY NC_QTY,zab.PB_QTY PB_QTY, zabd.CLOSED_DATE_TIME CLOSED_DATE_TIME,zab.NC_QTY NC_QTY,zab.PB_QTY PB_QTY,
CASE WHEN (zabd.ABNORMAL_METHOD ='F' AND zab.SHOP_ORDER IS NOT NULL) THEN TO_CHAR(so.QTY_TO_BUILD,'9999') CASE WHEN (zabd.ABNORMAL_METHOD ='F' AND zab.SHOP_ORDER IS NOT NULL) THEN TO_CHAR(so.QTY_TO_BUILD,'9999')
WHEN zabd.ABNORMAL_METHOD = 'F' THEN TO_CHAR(zab.PB_QTY,'9999') ELSE '' END NUMBERS, WHEN zabd.ABNORMAL_METHOD = 'F' THEN TO_CHAR(zab.PB_QTY,'9999') ELSE '' END NUMBERS,
zsd.EMPLOYEE_DESCRIPTION DISPATCH_USER ,zabd.DUTY_CAUSE_TYPE DUTY_CAUSE_TYPE,zabd.DUTY_TYPE DUTY_TYPE, zsd.EMPLOYEE_DESCRIPTION DISPATCH_USER ,zabd.DUTY_CAUSE_TYPE DUTY_CAUSE_TYPE,zabd.DUTY_TYPE DUTY_TYPE,
zabd.DUTY_DEPART DUTY_DEPART,TO_CHAR(TO_NUMBER(zabd.CLOSED_DATE_TIME - zab.RESPONSE_DATE_TIME)*24,'FM9999990.000') WORKING_HOURS, zabd.DUTY_DEPART DUTY_DEPART,TO_CHAR(TO_NUMBER(zabd.CLOSED_DATE_TIME -
zab.RESPONSE_DATE_TIME)*24,'FM9999990.000') WORKING_HOURS,
CASE WHEN zab.SFC IS NOT NULL THEN '质量异常' CASE WHEN zab.SFC IS NOT NULL THEN '质量异常'
ELSE '外协质量异常' ELSE '外协质量异常'
END ABNORMAL_TYPE END ABNORMAL_TYPE
FROM Z_ABNORMAL_BILL zab FROM Z_ABNORMAL_BILL zab
INNER JOIN Z_ABNORMAL_BILL_DISPOSE zabd ON zab.HANDLE = zabd.ABNORMAL_BILL_BO INNER JOIN Z_ABNORMAL_BILL_DISPOSE zabd ON zab.HANDLE = zabd.ABNORMAL_BILL_BO
LEFT JOIN Z_ABNORMAL_NC_CODE zanc ON zab.HANDLE = zanc.ABNORMAL_BILL_BO LEFT JOIN Z_ABNORMAL_NC_CODE zanc ON zab.HANDLE = zanc.ABNORMAL_BILL_BO
LEFT JOIN NC_CODE nc ON zanc.NC_CODE = nc.NC_CODE AND nc.SITE = zab.SITE LEFT JOIN NC_CODE nc ON zanc.NC_CODE = nc.NC_CODE AND nc.SITE = zab.SITE
LEFT JOIN NC_CODE_T nct ON nct.NC_CODE_BO = nc.HANDLE AND nct.LOCALE = #{locale} LEFT JOIN NC_CODE_T nct ON nct.NC_CODE_BO = nc.HANDLE AND nct.LOCALE = #{locale}
INNER JOIN ITEM i ON i.HANDLE = zab.ITEM_BO INNER JOIN ITEM i ON i.HANDLE = zab.ITEM_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE AND it.LOCALE = #{locale} LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE AND it.LOCALE = #{locale}
INNER JOIN DATA_FIELD df ON df.DATA_FIELD = 'PRODUCT_CATEGORY' INNER JOIN DATA_FIELD df ON df.DATA_FIELD = 'PRODUCT_CATEGORY'
LEFT JOIN DATA_FIELD_LIST dfl ON dfl.DATA_FIELD_BO = df.HANDLE AND dfl.DATA_VALUE = zab.PRODUCT_CATEGORY LEFT JOIN DATA_FIELD_LIST dfl ON dfl.DATA_FIELD_BO = df.HANDLE AND dfl.DATA_VALUE = zab.PRODUCT_CATEGORY
LEFT JOIN DATA_FIELD_LIST_T dflt ON dflt.DATA_FIELD_LIST_BO = dfl.HANDLE AND dflt.LOCALE = #{locale} LEFT JOIN DATA_FIELD_LIST_T dflt ON dflt.DATA_FIELD_LIST_BO = dfl.HANDLE AND dflt.LOCALE = #{locale}
INNER JOIN DATA_FIELD df2 ON df2.DATA_FIELD = 'DISCOVER' INNER JOIN DATA_FIELD df2 ON df2.DATA_FIELD = 'DISCOVER'
LEFT JOIN DATA_FIELD_LIST dfl2 ON dfl2.DATA_FIELD_BO = df2.HANDLE AND dfl2.DATA_VALUE = zab.DISCOVER LEFT JOIN DATA_FIELD_LIST dfl2 ON dfl2.DATA_FIELD_BO = df2.HANDLE AND dfl2.DATA_VALUE = zab.DISCOVER
LEFT JOIN DATA_FIELD_LIST_T dflt2 ON dflt2.DATA_FIELD_LIST_BO = dfl2.HANDLE AND dflt2.LOCALE = #{locale} LEFT JOIN DATA_FIELD_LIST_T dflt2 ON dflt2.DATA_FIELD_LIST_BO = dfl2.HANDLE AND dflt2.LOCALE = #{locale}
LEFT JOIN CUSTOM_FIELDS mapNo ON mapNo."ATTRIBUTE" = 'DWG_NO' AND mapNo.HANDLE = i.HANDLE LEFT JOIN CUSTOM_FIELDS mapNo ON mapNo."ATTRIBUTE" = 'DWG_NO' AND mapNo.HANDLE = i.HANDLE
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zab.SHOP_ORDER AND so.SITE = zab.SITE LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zab.SHOP_ORDER AND so.SITE = zab.SITE
LEFT JOIN CUSTOM_FIELDS itemNumber ON itemNumber.HANDLE = so.HANDLE AND itemNumber."ATTRIBUTE" = 'ITEM_NUMBER' LEFT JOIN CUSTOM_FIELDS itemNumber ON itemNumber.HANDLE = so.HANDLE AND itemNumber."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN SFC s ON s.SFC = zab.SFC AND s.SITE = zab.SITE LEFT JOIN SFC s ON s.SFC = zab.SFC AND s.SITE = zab.SITE
LEFT JOIN Z_SFC_DISPATCH Szsd ON s.SFC = zab.SFC AND SUBSTR(Szsd.ROUTER_BO,1,INSTR(Szsd.ROUTER_BO,',',-1)-1) = SUBSTR(zabd.ROUTER_BO,1,INSTR(zabd.ROUTER_BO,',',-1)-1) LEFT JOIN Z_SFC_DISPATCH Szsd ON s.SFC = zab.SFC AND SUBSTR(Szsd.ROUTER_BO,1,INSTR(Szsd.ROUTER_BO,',',-1)-1) =
LEFT JOIN OPERATION o2 ON o2.OPERATION = Szsd.OPERATION AND o2.SITE = Szsd.SITE AND o2.CURRENT_REVISION ='true' SUBSTR(zabd.ROUTER_BO,1,INSTR(zabd.ROUTER_BO,',',-1)-1)
LEFT JOIN OPERATION_T ot2 ON ot2.OPERATION_BO = o2.HANDLE AND ot2.LOCALE = 'zh' LEFT JOIN OPERATION o2 ON o2.OPERATION = Szsd.OPERATION AND o2.SITE = Szsd.SITE AND o2.CURRENT_REVISION ='true'
LEFT JOIN RESRCE RES ON RES.RESRCE = Szsd.RESRCE AND Szsd.SITE = RES.SITE LEFT JOIN OPERATION_T ot2 ON ot2.OPERATION_BO = o2.HANDLE AND ot2.LOCALE = 'zh'
LEFT JOIN RESOURCE_TYPE rt2 ON rt2.RESOURCE_TYPE = Szsd.RESOURCE_TYPE AND rt2.SITE = Szsd.SITE LEFT JOIN RESRCE RES ON RES.RESRCE = Szsd.RESRCE AND Szsd.SITE = RES.SITE
LEFT JOIN CUSTOM_FIELDS CFPT ON CFPT."ATTRIBUTE" = 'PRICE_TIME' AND CFPT.HANDLE = RES.HANDLE LEFT JOIN RESOURCE_TYPE rt2 ON rt2.RESOURCE_TYPE = Szsd.RESOURCE_TYPE AND rt2.SITE = Szsd.SITE
LEFT JOIN CUSTOM_FIELDS CFPT ON CFPT."ATTRIBUTE" = 'PRICE_TIME' AND CFPT.HANDLE = RES.HANDLE
LEFT JOIN SFC_ROUTING SR ON SR.SFC_BO = S.HANDLE LEFT JOIN SFC_ROUTING SR ON SR.SFC_BO = S.HANDLE
LEFT JOIN SFC_ROUTER ST ON ST.SFC_ROUTING_BO = SR.HANDLE AND ST.IN_USE = 'true' 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 SFC_STEP SS ON SS.SFC_ROUTER_BO = ST.HANDLE AND (SS.QTY_IN_QUEUE > 0 OR SS.QTY_IN_WORK > 0)
LEFT JOIN Z_SFC_DISPATCH zsd ON zsd.DISPATCH_NO = S.SFC || '-' || SS.STEP_ID LEFT JOIN Z_SFC_DISPATCH zsd ON zsd.DISPATCH_NO = S.SFC || '-' || SS.STEP_ID
LEFT JOIN OPERATION o ON o.OPERATION = zsd.OPERATION AND o.SITE = zab.SITE AND o.CURRENT_REVISION ='true' LEFT JOIN OPERATION o ON o.OPERATION = zsd.OPERATION AND o.SITE = zab.SITE AND o.CURRENT_REVISION ='true'
LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE AND ot.LOCALE = #{locale} LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE AND ot.LOCALE = #{locale}
LEFT JOIN RESRCE r2 ON r2.RESRCE = zsd.RESRCE AND r2.SITE = zab.SITE LEFT JOIN RESRCE r2 ON r2.RESRCE = zsd.RESRCE AND r2.SITE = zab.SITE
LEFT JOIN RESOURCE_TYPE rt ON rt.RESOURCE_TYPE = zsd.RESOURCE_TYPE AND rt.SITE = zab.SITE LEFT JOIN RESOURCE_TYPE rt ON rt.RESOURCE_TYPE = zsd.RESOURCE_TYPE AND rt.SITE = zab.SITE
LEFT JOIN WORK_CENTER wc ON wc.WORK_CENTER = SUBSTR(o.OPERATION,1,INSTR(o.OPERATION,'_')-1) AND wc.SITE = zab.SITE LEFT JOIN WORK_CENTER wc ON wc.WORK_CENTER = SUBSTR(o.OPERATION,1,INSTR(o.OPERATION,'_')-1) AND wc.SITE =
LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE AND wct.LOCALE = #{locale} zab.SITE
LEFT JOIN Z_NWA_USER znu ON znu.USER_NAME = zab.CREATED_USER AND znu.SITE = zab.SITE LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE AND wct.LOCALE = #{locale}
LEFT JOIN Z_NWA_USER znu2 ON znu2.USER_NAME = zabd.RESOLVE_USER AND znu2.SITE = zab.SITE LEFT JOIN Z_NWA_USER znu ON znu.USER_NAME = zab.CREATED_USER AND znu.SITE = zab.SITE
LEFT JOIN Z_NWA_USER znu2 ON znu2.USER_NAME = zabd.RESOLVE_USER AND znu2.SITE = zab.SITE
<where> <where>
zab.SITE = #{site} AND zab."TYPE" ='Z' zab.SITE = #{site} AND zab."TYPE" ='Z'
<if test="abnormalNo != null and abnormalNo != ''"> <if test="abnormalNo != null and abnormalNo != ''">
@ -526,7 +539,7 @@
</if> </if>
<if test="productCategory != null and productCategory != ''"> <if test="productCategory != null and productCategory != ''">
AND (dflt.DATA_TAG = #{productCategory} OR AND (dflt.DATA_TAG = #{productCategory} OR
zab.PRODUCT_CATEGORY = #{productCategory} zab.PRODUCT_CATEGORY = #{productCategory}
) )
</if> </if>
<if test="discover != null and discover != ''"> <if test="discover != null and discover != ''">
@ -543,13 +556,13 @@
</if> </if>
</where> </where>
GROUP BY zab.CREATED_DATE_TIME ,zab.ABNORMAL_NO ,CFPT.VALUE, GROUP BY zab.CREATED_DATE_TIME ,zab.ABNORMAL_NO ,CFPT.VALUE,
i.ITEM ,it.DESCRIPTION ,itemNumber.VALUE ,zab.ITEM_NUMBER, i.ITEM ,it.DESCRIPTION ,itemNumber.VALUE ,zab.ITEM_NUMBER,
mapNo.VALUE ,zab.PB_DESCRIPTION ,zsd.EMPLOYEE_DESCRIPTION , mapNo.VALUE ,zab.PB_DESCRIPTION ,zsd.EMPLOYEE_DESCRIPTION ,
zab."TYPE" ,zab.REPORT_SEND_USER_GROUP ,zabd.DUTY_DEPART ,zabd.PRINCIPAL_USER, zab."TYPE" ,zab.REPORT_SEND_USER_GROUP ,zabd.DUTY_DEPART ,zabd.PRINCIPAL_USER,
zab.PB_GRADE,zabd.DUTY_CAUSE_DESCRIPTION ,zabd.BEFORE_MEASURE,ABNORMAL_METHOD, zab.PB_GRADE,zabd.DUTY_CAUSE_DESCRIPTION ,zabd.BEFORE_MEASURE,ABNORMAL_METHOD,
zabd.RESOLVE_REMARK ,zabd.RESOLVE_USER ,Szsd.RESOURCE_TYPE, zabd.RESOLVE_REMARK ,zabd.RESOLVE_USER ,Szsd.RESOURCE_TYPE,
zabd.CLOSED_DATE_TIME ,zab.NC_QTY ,zab.PB_QTY ,zab.SHOP_ORDER,so.QTY_TO_BUILD, zabd.CLOSED_DATE_TIME ,zab.NC_QTY ,zab.PB_QTY ,zab.SHOP_ORDER,so.QTY_TO_BUILD,
zsd.EMPLOYEE_DESCRIPTION ,ot.DESCRIPTION ,RES.RESRCE,RES.DESCRIPTION, zsd.EMPLOYEE_DESCRIPTION ,ot.DESCRIPTION ,RES.RESRCE,RES.DESCRIPTION,
r2.RESRCE,r2.DESCRIPTION,zsd.RESOURCE_TYPE,ot2.DESCRIPTION,rt2.DESCRIPTION, r2.RESRCE,r2.DESCRIPTION,zsd.RESOURCE_TYPE,ot2.DESCRIPTION,rt2.DESCRIPTION,
rt.DESCRIPTION, dflt.DATA_TAG,zabd.DUTY_CAUSE_TYPE,zabd.DUTY_TYPE ,zabd.DUTY_DEPART,zab.SFC, rt.DESCRIPTION, dflt.DATA_TAG,zabd.DUTY_CAUSE_TYPE,zabd.DUTY_TYPE ,zabd.DUTY_DEPART,zab.SFC,
znu.FULL_NAME,znu2.FULL_NAME,zab.RESPONSE_DATE_TIME,dflt2.DATA_TAG,Szsd.HANDLE, Szsd.PROD_HOURS,zabd.ROUTER_BO znu.FULL_NAME,znu2.FULL_NAME,zab.RESPONSE_DATE_TIME,dflt2.DATA_TAG,Szsd.HANDLE, Szsd.PROD_HOURS,zabd.ROUTER_BO
@ -558,42 +571,44 @@
<select id="findAbnormalRecord" parameterType="java.util.HashMap" resultType="java.util.HashMap"> <select id="findAbnormalRecord" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT wct.DESCRIPTION WORK_CENTER, SELECT wct.DESCRIPTION WORK_CENTER,
COALESCE(cf2.VALUE,zab.ITEM_NUMBER) ITEM_NUMBER, COALESCE(cf2.VALUE,zab.ITEM_NUMBER) ITEM_NUMBER,
COALESCE(zab.WORK_ORDER,cf.VALUE) WORK_ORDER, COALESCE(zab.WORK_ORDER,cf.VALUE) WORK_ORDER,
so.SHOP_ORDER SHOP_ORDER , so.SHOP_ORDER SHOP_ORDER ,
i.ITEM ITEM,it.DESCRIPTION ITEM_DESCRIPTION,zab.SFC SFC,zab.ABNORMAL_NO ABNORMAL_NO, i.ITEM ITEM,it.DESCRIPTION ITEM_DESCRIPTION,zab.SFC SFC,zab.ABNORMAL_NO ABNORMAL_NO,
CASE WHEN zab."TYPE" = 'Z' THEN '质量异常' CASE WHEN zab."TYPE" = 'Z' THEN '质量异常'
WHEN zab."TYPE" = 'S' THEN '设备异常' WHEN zab."TYPE" = 'S' THEN '设备异常'
WHEN zab."TYPE" = 'Q' THEN '其他异常' END ABNORMAL_TYPE, WHEN zab."TYPE" = 'Q' THEN '其他异常' END ABNORMAL_TYPE,
zab.OPERATION OPERATION ,ot.DESCRIPTION OPERATION_DESCRIPTION,r.RESRCE RESRCE,r.DESCRIPTION RESRCE_DESCRIPTION, zab.OPERATION OPERATION ,ot.DESCRIPTION OPERATION_DESCRIPTION,r.RESRCE RESRCE,r.DESCRIPTION RESRCE_DESCRIPTION,
zab.CREATED_DATE_TIME CREATED_DATE_TIME ,znu.FULL_NAME PB_USER,znu2.FULL_NAME REPORT_USER, zab.CREATED_DATE_TIME CREATED_DATE_TIME ,znu.FULL_NAME PB_USER,znu2.FULL_NAME REPORT_USER,
LISTAGG(nct.DESCRIPTION , ';') WITHIN GROUP(ORDER BY zab.ABNORMAL_NO) NC_CODE_DESCRIPTION, LISTAGG(nct.DESCRIPTION , ';') WITHIN GROUP(ORDER BY zab.ABNORMAL_NO) NC_CODE_DESCRIPTION,
CASE WHEN zab.STATUS = 'N' THEN '新建' CASE WHEN zab.STATUS = 'N' THEN '新建'
WHEN zab.STATUS = 'X' THEN '响应中' WHEN zab.STATUS = 'X' THEN '响应中'
WHEN zab.STATUS = 'F' THEN '方案确认' WHEN zab.STATUS = 'F' THEN '方案确认'
WHEN zab.STATUS = 'J' THEN '纠防确认' WHEN zab.STATUS = 'J' THEN '纠防确认'
WHEN zab.STATUS = 'Q' THEN '取消' WHEN zab.STATUS = 'Q' THEN '取消'
WHEN zab.STATUS = 'G' THEN '关闭' END ABNORMAL_STATUS, WHEN zab.STATUS = 'G' THEN '关闭' END ABNORMAL_STATUS,
CASE WHEN zabd.ABNORMAL_METHOD = 'X' THEN '线下换料' CASE WHEN zabd.ABNORMAL_METHOD = 'X' THEN '线下换料'
WHEN zabd.ABNORMAL_METHOD = 'S' THEN '试装' WHEN zabd.ABNORMAL_METHOD = 'S' THEN '试装'
WHEN zabd.ABNORMAL_METHOD = 'R' THEN '让步放行' WHEN zabd.ABNORMAL_METHOD = 'R' THEN '让步放行'
WHEN zabd.ABNORMAL_METHOD = 'C' THEN '报废' WHEN zabd.ABNORMAL_METHOD = 'C' THEN '报废'
WHEN zabd.ABNORMAL_METHOD = 'P' THEN '配作' WHEN zabd.ABNORMAL_METHOD = 'P' THEN '配作'
WHEN zabd.ABNORMAL_METHOD = 'F' THEN '返修' WHEN zabd.ABNORMAL_METHOD = 'F' THEN '返修'
WHEN zabd.ABNORMAL_METHOD = 'FW' THEN '返修(外协)' WHEN zabd.ABNORMAL_METHOD = 'FW' THEN '返修(外协)'
WHEN zabd.ABNORMAL_METHOD = 'FB' THEN '返修(不返回原工艺)' WHEN zabd.ABNORMAL_METHOD = 'FB' THEN '返修(不返回原工艺)'
ELSE '' ELSE ''
END ABNORMAL_METHOD, END ABNORMAL_METHOD,
zabd.RESOLVE_DATE_TIME RESOLVE_DATE_TIME, zabd.RESOLVE_DATE_TIME RESOLVE_DATE_TIME,
znu3.FULL_NAME RESOLVE_USER,zabd.CLOSED_DATE_TIME CANCEL_DATE_TIME , znu3.FULL_NAME RESOLVE_USER,zabd.CLOSED_DATE_TIME CANCEL_DATE_TIME ,
znu4.FULL_NAME CANCEL_USER,zabd.RESOLVE_REMARK RESOLVE_REMARK, znu4.FULL_NAME CANCEL_USER,zabd.RESOLVE_REMARK RESOLVE_REMARK,
zabd.ABNORMAL_REASON ABNORMAL_REASON,zabd.BEFORE_MEASURE BEFORE_MEASURE, zabd.ABNORMAL_REASON ABNORMAL_REASON,zabd.BEFORE_MEASURE BEFORE_MEASURE,
ug.DESCRIPTION RESOLVE_SEND_USER_GROUP, ug.DESCRIPTION RESOLVE_SEND_USER_GROUP,
CASE WHEN zsr.CREATED_DATE_TIME IS NOT NULL THEN TO_CHAR(TO_NUMBER(zabd.RESOLVE_DATE_TIME - zsr.CREATED_DATE_TIME)*24,'FM9999990.000') CASE WHEN zsr.CREATED_DATE_TIME IS NOT NULL THEN TO_CHAR(TO_NUMBER(zabd.RESOLVE_DATE_TIME -
WHEN zabd.RESOLVE_DATE_TIME IS NOT NULL THEN TO_CHAR(TO_NUMBER(zabd.RESOLVE_DATE_TIME - zab.CREATED_DATE_TIME)*24,'FM9999990.000') zsr.CREATED_DATE_TIME)*24,'FM9999990.000')
ELSE '' WHEN zabd.RESOLVE_DATE_TIME IS NOT NULL THEN TO_CHAR(TO_NUMBER(zabd.RESOLVE_DATE_TIME -
END RESOLVE_DURATION, zab.CREATED_DATE_TIME)*24,'FM9999990.000')
zabd.DUTY_DEPART DUTY_DEPART ELSE ''
END RESOLVE_DURATION,
zabd.DUTY_DEPART DUTY_DEPART
FROM Z_ABNORMAL_BILL zab FROM Z_ABNORMAL_BILL zab
LEFT JOIN Z_ABNORMAL_NC_CODE zanc ON zanc.ABNORMAL_BILL_BO = zab.HANDLE LEFT JOIN Z_ABNORMAL_NC_CODE zanc ON zanc.ABNORMAL_BILL_BO = zab.HANDLE
LEFT JOIN Z_ABNORMAL_BILL_DISPOSE zabd ON zabd.ABNORMAL_BILL_BO = zab.HANDLE LEFT JOIN Z_ABNORMAL_BILL_DISPOSE zabd ON zabd.ABNORMAL_BILL_BO = zab.HANDLE
@ -613,19 +628,19 @@
LEFT JOIN Z_NWA_USER znu2 ON znu2.USER_NAME = zab.CREATED_USER LEFT JOIN Z_NWA_USER znu2 ON znu2.USER_NAME = zab.CREATED_USER
LEFT JOIN Z_NWA_USER znu3 ON znu3.USER_NAME = zabd.RESOLVE_USER LEFT JOIN Z_NWA_USER znu3 ON znu3.USER_NAME = zabd.RESOLVE_USER
LEFT JOIN Z_NWA_USER znu4 ON znu4.USER_NAME = zabd.CLOSED_USER LEFT JOIN Z_NWA_USER znu4 ON znu4.USER_NAME = zabd.CLOSED_USER
LEFT JOIN Z_SELF_REPORT zsr ON zsr.HANDLE = zab.OBJECT_BO LEFT JOIN Z_SELF_REPORT zsr ON zsr.HANDLE = zab.OBJECT_BO
LEFT JOIN USER_GROUP ug ON ug.USER_GROUP = zabd.RESOLVE_SEND_USER_GROUP AND ug.SITE = zab.SITE LEFT JOIN USER_GROUP ug ON ug.USER_GROUP = zabd.RESOLVE_SEND_USER_GROUP AND ug.SITE = zab.SITE
<where> <where>
zab.SITE = #{site} zab.SITE = #{site}
<if test="abnormalNo != null and abnormalNo != ''"> <if test="abnormalNo != null and abnormalNo != ''">
AND zab.ABNORMAL_NO = #{abnormalNo} AND zab.ABNORMAL_NO = #{abnormalNo}
</if> </if>
<if test="sfc != null and sfc != ''"> <if test="sfc != null and sfc != ''">
AND zab.sfc = #{sfc} AND zab.sfc = #{sfc}
</if>
<if test="workCenter != null and workCenter != ''">
AND (wc.WORK_CENTER = #{workCenter} OR wct.DESCRIPTION = #{workCenter})
</if> </if>
<if test="workCenter != null and workCenter != ''">
AND (wc.WORK_CENTER = #{workCenter} OR wct.DESCRIPTION = #{workCenter})
</if>
<if test="itemNumber != null and itemNumber != ''"> <if test="itemNumber != null and itemNumber != ''">
AND (CASE WHEN cf2.VALUE IS NOT NULL THEN cf2.VALUE ELSE zab.ITEM_NUMBER END) = #{itemNumber} AND (CASE WHEN cf2.VALUE IS NOT NULL THEN cf2.VALUE ELSE zab.ITEM_NUMBER END) = #{itemNumber}
</if> </if>
@ -638,7 +653,7 @@
</if> </if>
<if test="resrce != null and resrce != ''"> <if test="resrce != null and resrce != ''">
AND (r.RESRCE LIKE '%${resrce}%' AND (r.RESRCE LIKE '%${resrce}%'
OR r.DESCRIPTION LIKE '%${resrce}%') OR r.DESCRIPTION LIKE '%${resrce}%')
</if> </if>
<if test="abnormalType != null and abnormalType != ''"> <if test="abnormalType != null and abnormalType != ''">
AND zab.TYPE = #{abnormalType} AND zab.TYPE = #{abnormalType}
@ -652,119 +667,126 @@
</if> </if>
</where> </where>
GROUP BY wct.DESCRIPTION ,zab.PRODUCT_CATEGORY ,cf.VALUE ,so.SHOP_ORDER , GROUP BY wct.DESCRIPTION ,zab.PRODUCT_CATEGORY ,cf.VALUE ,so.SHOP_ORDER ,
i.ITEM ,it.DESCRIPTION,zab.SFC,zab."TYPE" ,zab.ABNORMAL_NO, i.ITEM ,it.DESCRIPTION,zab.SFC,zab."TYPE" ,zab.ABNORMAL_NO,
zab.OPERATION,ot.DESCRIPTION,r.RESRCE,r.DESCRIPTION, zab.OPERATION,ot.DESCRIPTION,r.RESRCE,r.DESCRIPTION,
zab.CREATED_DATE_TIME ,znu.FULL_NAME,znu2.FULL_NAME, zab.CREATED_DATE_TIME ,znu.FULL_NAME,znu2.FULL_NAME,
zab.STATUS,zabd.ABNORMAL_METHOD,zabd.RESOLVE_DATE_TIME , zab.STATUS,zabd.ABNORMAL_METHOD,zabd.RESOLVE_DATE_TIME ,
znu3.FULL_NAME,zabd.CLOSED_DATE_TIME ,znu4.FULL_NAME, znu3.FULL_NAME,zabd.CLOSED_DATE_TIME ,znu4.FULL_NAME,
zabd.RESOLVE_REMARK,zabd.ABNORMAL_REASON,zabd.BEFORE_MEASURE, zabd.RESOLVE_REMARK,zabd.ABNORMAL_REASON,zabd.BEFORE_MEASURE,
zsr.CREATED_DATE_TIME,zab.ITEM_NUMBER, zsr.CREATED_DATE_TIME,zab.ITEM_NUMBER,
zabd.DUTY_DEPART,ug.DESCRIPTION,cf2.VALUE,zab.WORK_ORDER zabd.DUTY_DEPART,ug.DESCRIPTION,cf2.VALUE,zab.WORK_ORDER
ORDER BY zab.CREATED_DATE_TIME DESC ORDER BY zab.CREATED_DATE_TIME DESC
</select> </select>
<select id="shopOrderSchedule" parameterType="java.util.HashMap" resultType="java.util.HashMap"> <select id="shopOrderSchedule" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT ROWNUM SEQ,S.* FROM ( SELECT ROWNUM SEQ,S.* FROM (
SELECT wct.DESCRIPTION WORK_CENTER_DESCRIPTION,cf.VALUE ITEM_NUMBER, SELECT wct.DESCRIPTION WORK_CENTER_DESCRIPTION,cf.VALUE ITEM_NUMBER,
COALESCE(dflt.DATA_TAG,cf2.VALUE) WORK_ORDER, COALESCE(dflt.DATA_TAG,cf2.VALUE) WORK_ORDER,
zsd.SHOP_ORDER,it.DESCRIPTION ITEM_DESCRIPTION,zsd.PLANNED_START_DATE,zsd.PLANNED_START_DATE PREDICT_COMP_DATE, zsd.SHOP_ORDER,it.DESCRIPTION ITEM_DESCRIPTION,zsd.PLANNED_START_DATE,zsd.PLANNED_START_DATE PREDICT_COMP_DATE,
zsd.PLANNED_COMP_DATE ,zsd.ACTUAL_START_DATE ,zsd.ACTUAL_COMPLETE_DATE, zsd.PLANNED_COMP_DATE ,zsd.ACTUAL_START_DATE ,zsd.ACTUAL_COMPLETE_DATE,
CASE WHEN zsd.DISPATCH_STATUS = 'NEW' THEN '新建' CASE WHEN zsd.DISPATCH_STATUS = 'NEW' THEN '新建'
WHEN zsd.DISPATCH_STATUS = 'RELEASE' THEN '发布' WHEN zsd.DISPATCH_STATUS = 'RELEASE' THEN '发布'
WHEN zsd.DISPATCH_STATUS = 'PAUSE' THEN '暂挂' WHEN zsd.DISPATCH_STATUS = 'PAUSE' THEN '暂挂'
WHEN zsd.DISPATCH_STATUS = 'START' ThEN '已开始' WHEN zsd.DISPATCH_STATUS = 'START' ThEN '已开始'
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN '已完成' WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN '已完成'
WHEN zsd.DISPATCH_STATUS = 'CANCEL' THEN '已取消' WHEN zsd.DISPATCH_STATUS = 'CANCEL' THEN '已取消'
ELSE '' ELSE ''
END DISPATCH_STATUS, END DISPATCH_STATUS,
ot.DESCRIPTION CURRENT_OPERATION_DESCRIPTION, ot.DESCRIPTION CURRENT_OPERATION_DESCRIPTION,
-- CASE WHEN ss.STEP_ID = zsd.STEP_ID AND zsd.DISPATCH_STATUS != 'START' AND o.OPERATION = zsd.OPERATION THEN '' -- CASE WHEN ss.STEP_ID = zsd.STEP_ID AND zsd.DISPATCH_STATUS != 'START' AND o.OPERATION = zsd.OPERATION THEN ''
-- ELSE ot.DESCRIPTION -- ELSE ot.DESCRIPTION
-- END CURRENT_OPERATION_DESCRIPTION, -- END CURRENT_OPERATION_DESCRIPTION,
ot2.DESCRIPTION OPERATION_DESCRIPTION, ot2.DESCRIPTION OPERATION_DESCRIPTION,
CASE WHEN zab.HANDLE IS NOT NULL THEN '是' CASE WHEN zab.HANDLE IS NOT NULL THEN '是'
ELSE '否' ELSE '否'
END IS_ANOMALY, END IS_ANOMALY,
CASE WHEN zsd.PLANNED_COMP_DATE IS NOT NULL AND zsd.ACTUAL_COMPLETE_DATE IS NULL AND zsd.DISPATCH_STATUS != 'CANCEL' THEN TO_CHAR(TO_NUMBER(zsd.PLANNED_COMP_DATE + 8/24 - SYSDATE),'FM9999990.000') CASE WHEN zsd.PLANNED_COMP_DATE IS NOT NULL AND zsd.ACTUAL_COMPLETE_DATE IS NULL AND zsd.DISPATCH_STATUS !=
ELSE '' 'CANCEL' THEN TO_CHAR(TO_NUMBER(zsd.PLANNED_COMP_DATE + 8/24 - SYSDATE),'FM9999990.000')
END SURPLUS_DAY, ELSE ''
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 END SURPLUS_DAY,
THEN ROUND(TO_NUMBER(SYSDATE - (zsd.ACTUAL_START_DATE+8/24))*24/TO_NUMBER(cf3.VALUE * zsd.DISPATCH_QTY),2)*100 || '%' CASE WHEN zsd.ACTUAL_START_DATE IS NOT NULL AND cf3.VALUE IS NOT NULL AND cf3.VALUE != 0 AND
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 zsd.ACTUAL_COMPLETE_DATE IS NULL
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 || '%' THEN ROUND(TO_NUMBER(SYSDATE - (zsd.ACTUAL_START_DATE+8/24))*24/TO_NUMBER(cf3.VALUE * zsd.DISPATCH_QTY),2)*100
ELSE '' || '%'
END PROCESS_HOURS 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 *
zsd.DISPATCH_QTY),2)*100 || '%'
ELSE ''
END PROCESS_HOURS
FROM Z_SFC_DISPATCH zsd FROM Z_SFC_DISPATCH zsd
LEFT JOIN WORK_CENTER wc ON wc.WORK_CENTER = zsd.WORK_CENTER LEFT JOIN WORK_CENTER wc ON wc.WORK_CENTER = zsd.WORK_CENTER
LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE AND wct.LOCALE = 'zh' LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE AND wct.LOCALE = 'zh'
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE 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 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' LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN ITEM i On i.HANDLE = so.ITEM_BO LEFT JOIN ITEM i On i.HANDLE = so.ITEM_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = so.ITEM_BO LEFT JOIN ITEM_T it ON it.ITEM_BO = so.ITEM_BO
LEFT JOIN RESRCE r ON r.RESRCE = zsd.RESRCE AND r.SITE = zsd.SITE LEFT JOIN RESRCE r ON r.RESRCE = zsd.RESRCE AND r.SITE = zsd.SITE
LEFT JOIN SFC s ON s.SFC = zsd.SFC AND s.SITE = zsd.SITE LEFT JOIN SFC s ON s.SFC = zsd.SFC AND s.SITE = zsd.SITE
LEFT JOIN SFC_ROUTING sr ON sr.SFC_BO = s.HANDLE LEFT JOIN SFC_ROUTING sr ON sr.SFC_BO = s.HANDLE
LEFT JOIN SFC_ROUTER st ON st.SFC_ROUTING_BO = sr.HANDLE AND st.IN_USE = 'true' 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 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 o ON o.OPERATION = SUBSTR(SS.OPERATION_BO,INSTR(SS.OPERATION_BO,',',1,1)+1,INSTR(SS.OPERATION_BO,',',1,2) - INSTR(SS.OPERATION_BO,',') -1) AND o.SITE = zsd.SITE LEFT JOIN OPERATION o ON o.OPERATION =
LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE AND ot.LOCALE = 'zh' SUBSTR(SS.OPERATION_BO,INSTR(SS.OPERATION_BO,',',1,1)+1,INSTR(SS.OPERATION_BO,',',1,2) -
LEFT JOIN OPERATION o2 ON o2.OPERATION = zsd.OPERATION AND o2.SITE = zsd.SITE INSTR(SS.OPERATION_BO,',') -1) AND o.SITE = zsd.SITE
LEFT JOIN OPERATION_T ot2 ON ot2.OPERATION_BO = o2.HANDLE AND ot2.LOCALE = 'zh' LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE AND ot.LOCALE = 'zh'
LEFT JOIN Z_ABNORMAL_BILL zab ON zab.SFC = zsd.SFC AND zab.OPERATION = zsd.OPERATION AND zab.SITE = zsd.SITE LEFT JOIN OPERATION o2 ON o2.OPERATION = zsd.OPERATION AND o2.SITE = zsd.SITE
LEFT JOIN ROUTER_STEP rs ON zsd.ROUTER_BO = rs.ROUTER_BO AND rs.STEP_ID = zsd.STEP_ID LEFT JOIN OPERATION_T ot2 ON ot2.OPERATION_BO = o2.HANDLE AND ot2.LOCALE = 'zh'
LEFT JOIN ROUTER_OPERATION ro ON ro.ROUTER_STEP_BO = rs.HANDLE AND ro.OPERATION_BO = ss.OPERATION_BO LEFT JOIN Z_ABNORMAL_BILL zab ON zab.SFC = zsd.SFC AND zab.OPERATION = zsd.OPERATION AND zab.SITE = zsd.SITE
LEFT JOIN CUSTOM_FIELDS cf3 ON cf3.HANDLE = ro.HANDLE AND cf3."ATTRIBUTE" = 'PROD_TIME' LEFT JOIN ROUTER_STEP rs ON zsd.ROUTER_BO = rs.ROUTER_BO AND rs.STEP_ID = zsd.STEP_ID
LEFT JOIN DATA_FIELD df ON df.DATA_FIELD = 'WORK_ORDER' LEFT JOIN ROUTER_OPERATION ro ON ro.ROUTER_STEP_BO = rs.HANDLE AND ro.OPERATION_BO = ss.OPERATION_BO
LEFT JOIN DATA_FIELD_LIST dfl ON dfl.DATA_FIELD_BO = df.HANDLE AND dfl.DATA_VALUE = zab.WORK_ORDER LEFT JOIN CUSTOM_FIELDS cf3 ON cf3.HANDLE = ro.HANDLE AND cf3."ATTRIBUTE" = 'PROD_TIME'
LEFT JOIN DATA_FIELD_LIST_T dflt ON dflt.DATA_FIELD_LIST_BO = dfl.HANDLE AND dflt.LOCALE = #{locale} LEFT JOIN DATA_FIELD df ON df.DATA_FIELD = 'WORK_ORDER'
<where> LEFT JOIN DATA_FIELD_LIST dfl ON dfl.DATA_FIELD_BO = df.HANDLE AND dfl.DATA_VALUE = zab.WORK_ORDER
zsd.SITE = #{site} LEFT JOIN DATA_FIELD_LIST_T dflt ON dflt.DATA_FIELD_LIST_BO = dfl.HANDLE AND dflt.LOCALE = #{locale}
<if test="workCenter != null and workCenter != ''"> <where>
AND (wc.WORK_CENTER = #{workCenter} OR wct.DESCRIPTION = #{workCenter}) zsd.SITE = #{site}
</if> <if test="workCenter != null and workCenter != ''">
<if test="itemNumber != null and itemNumber != ''"> AND (wc.WORK_CENTER = #{workCenter} OR wct.DESCRIPTION = #{workCenter})
AND cf.VALUE = #{itemNumber} </if>
</if> <if test="itemNumber != null and itemNumber != ''">
<if test="workOrder != null and workOrder != ''"> AND cf.VALUE = #{itemNumber}
AND (dflt.DATA_TAG like '%${workOrder}%' OR </if>
zab.WORK_ORDER like '%${workOrder}%' OR <if test="workOrder != null and workOrder != ''">
cf2.VALUE like '%${workOrder}%' AND (dflt.DATA_TAG like '%${workOrder}%' OR
) zab.WORK_ORDER like '%${workOrder}%' OR
</if> cf2.VALUE like '%${workOrder}%'
<if test="shopOrder != null and shopOrder != ''"> )
AND so.SHOP_ORDER LIKE '%${shopOrder}%' </if>
</if> <if test="shopOrder != null and shopOrder != ''">
<if test="startDateTime != null and startDateTime != ''"> AND so.SHOP_ORDER LIKE '%${shopOrder}%'
AND zsd.PLANNED_COMP_DATE &gt;= TO_DATE(#{startDateTime},'YYYY-MM-DD')-8/24 </if>
</if> <if test="startDateTime != null and startDateTime != ''">
<if test="endDateTime != null and endDateTime != ''"> AND zsd.PLANNED_COMP_DATE &gt;= TO_DATE(#{startDateTime},'YYYY-MM-DD')-8/24
AND zsd.PLANNED_COMP_DATE &lt;= TO_DATE(#{endDateTime}|| '15:59:59','YYYY-MM-DD HH24:MI:SS') </if>
</if> <if test="endDateTime != null and endDateTime != ''">
</where> AND zsd.PLANNED_COMP_DATE &lt;= TO_DATE(#{endDateTime}|| '15:59:59','YYYY-MM-DD HH24:MI:SS')
ORDER BY zsd.SFC DESC,zsd.STEP_ID) S </if>
</where>
ORDER BY zsd.SFC DESC,zsd.STEP_ID) S
</select> </select>
<select id="findOperatorScheduleReport" parameterType="java.util.HashMap" resultType="java.util.HashMap"> <select id="findOperatorScheduleReport" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT DISTINCT zsd.STEP_ID,cf.VALUE ITEM_NUMBER, SELECT DISTINCT zsd.STEP_ID,cf.VALUE ITEM_NUMBER,
so.SHOP_ORDER, so.SHOP_ORDER,
i.ITEM, i.ITEM,
it.DESCRIPTION ITEM_DESCRIPTION, it.DESCRIPTION ITEM_DESCRIPTION,
zsd.DISPATCH_QTY, zsd.DISPATCH_QTY,
cf2.VALUE WORK_ORDER, cf2.VALUE WORK_ORDER,
zsd.SFC, zsd.SFC,
wct.DESCRIPTION WORK_CENTER_DESCRIPTION, wct.DESCRIPTION WORK_CENTER_DESCRIPTION,
zsd.OPERATION, zsd.OPERATION,
ot.DESCRIPTION OPERATION_DESCRIPTION, ot.DESCRIPTION OPERATION_DESCRIPTION,
zsd.RESRCE, zsd.RESRCE,
CASE CASE
WHEN zab.NC_QTY IS NOT NULL THEN zsd.DISPATCH_QTY - TO_NUMBER(zab.NC_QTY) WHEN zab.NC_QTY IS NOT NULL THEN zsd.DISPATCH_QTY - TO_NUMBER(zab.NC_QTY)
ELSE zsd.DISPATCH_QTY END QUALIFIED_NUM, ELSE zsd.DISPATCH_QTY END QUALIFIED_NUM,
NVL(zsd.PROD_HOURS,0) PROD_HOURS, NVL(zsd.PROD_HOURS,0) PROD_HOURS,
NVL(zsd.ACTUAL_PROD_HOURS,0) ACTUAL_PROD_HOURS, NVL(zsd.ACTUAL_PROD_HOURS,0) ACTUAL_PROD_HOURS,
CASE WHEN ZSD.PROD_HOURS IS NULL THEN 0 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) 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 , ELSE ROUND(zsd.DISPATCH_QTY*ZSD.PROD_HOURS ,4) END TOTAL_PROD_HOURS ,
zsd.EMPLOYEE,zsd.EMPLOYEE_DESCRIPTION, zsd.EMPLOYEE,zsd.EMPLOYEE_DESCRIPTION,
CASE WHEN ZUR.TEMPORARY_USER = 'true' THEN '临时' CASE WHEN ZUR.TEMPORARY_USER = 'true' THEN '临时'
WHEN ZUR.TEMPORARY_USER = 'false' THEN '正式' END EMPLOYEE_ATTR, WHEN ZUR.TEMPORARY_USER = 'false' THEN '正式' END EMPLOYEE_ATTR,
@ -772,20 +794,20 @@
zsd.ACTUAL_COMPLETE_DATE, zsd.ACTUAL_COMPLETE_DATE,
zsd.REMARK zsd.REMARK
FROM Z_SFC_DISPATCH zsd FROM Z_SFC_DISPATCH zsd
LEFT JOIN Z_USER_RESOURCE ZUR ON zsd.RESRCE = ZUR.RESRCE LEFT JOIN Z_USER_RESOURCE ZUR ON zsd.RESRCE = ZUR.RESRCE
AND zsd.EMPLOYEE_DESCRIPTION like CONCAT(ZUR.USER_DESCRIPTION, '%') AND zsd.EMPLOYEE_DESCRIPTION like CONCAT(ZUR.USER_DESCRIPTION, '%')
INNER JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE INNER 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 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' LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
INNER JOIN ITEM i ON i.HANDLE = so.ITEM_BO 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' LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE AND it.LOCALE = 'zh'
INNER JOIN WORK_CENTER wc ON wc.WORK_CENTER = zsd.WORK_CENTER AND wc.SITE = zsd.SITE 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' LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE AND wct.LOCALE = 'zh'
INNER JOIN OPERATION o INNER JOIN OPERATION o
ON o.OPERATION = zsd.OPERATION AND o.CURRENT_REVISION = 'true' AND o.SITE = zsd.SITE ON o.OPERATION = zsd.OPERATION AND o.CURRENT_REVISION = 'true' AND o.SITE = zsd.SITE
LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE AND ot.LOCALE = 'zh' LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE AND ot.LOCALE = 'zh'
LEFT JOIN Z_INSPECTION_TASK zit ON zit.SFC_DISPATCH_BO = zsd.HANDLE LEFT JOIN Z_INSPECTION_TASK zit ON zit.SFC_DISPATCH_BO = zsd.HANDLE
LEFT JOIN Z_ABNORMAL_BILL zab ON zab.OBJECT_BO = zit.HANDLE LEFT JOIN Z_ABNORMAL_BILL zab ON zab.OBJECT_BO = zit.HANDLE
<where> <where>
zsd.SITE = #{site} zsd.SITE = #{site}
<if test="workCenter != null and workCenter != ''"> <if test="workCenter != null and workCenter != ''">
@ -826,101 +848,103 @@
</select> </select>
<select id="findWorkOrderSchedule" parameterType="java.util.HashMap" resultType="java.util.HashMap"> <select id="findWorkOrderSchedule" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT DISTINCT * SELECT DISTINCT *
FROM ( FROM (
SELECT zsd.WORK_ORDER, SELECT zsd.WORK_ORDER,
zsd.ITEM_NUMBER, zsd.ITEM_NUMBER,
zsd.DISPATCH_QTY, zsd.DISPATCH_QTY,
TO_CHAR(TO_NUMBER(zsd.HOURS_PERCENT), 'FM9999990.00') || '%' HOURS_PERCENT, TO_CHAR(TO_NUMBER(zsd.HOURS_PERCENT), 'FM9999990.00') || '%' HOURS_PERCENT,
TO_CHAR(TO_NUMBER(zsd.OPERATION_PERCENT), 'FM9999990.00') || '%' OPERATION_PERCENT, TO_CHAR(TO_NUMBER(zsd.OPERATION_PERCENT), 'FM9999990.00') || '%' OPERATION_PERCENT,
zsd.CREATED_DATE_TIME, zsd.CREATED_DATE_TIME,
zsd.WORK_CENTER, zsd.WORK_CENTER,
wct.DESCRIPTION WORK_CENTER_DESCRIPTION, wct.DESCRIPTION WORK_CENTER_DESCRIPTION,
zsd.SUM_HOURS, zsd.SUM_HOURS,
CASE WHEN zsd2.QTY > 0 THEN '未完成' ELSE '完成' END IS_COMPLETE, CASE WHEN zsd2.QTY > 0 THEN '未完成' ELSE '完成' END IS_COMPLETE,
zsd.SITE zsd.SITE
FROM ( FROM (
SELECT WORK_ORDER, SELECT WORK_ORDER,
ITEM_NUMBER, ITEM_NUMBER,
MIN(CREATED_DATE_TIME) CREATED_DATE_TIME, MIN(CREATED_DATE_TIME) CREATED_DATE_TIME,
SUM(DISPATCH_QTY) DISPATCH_QTY, SUM(DISPATCH_QTY) DISPATCH_QTY,
WORK_CENTER, WORK_CENTER,
SITE, SITE,
SUM(COMP_HOURS) SUM_HOURS, SUM(COMP_HOURS) SUM_HOURS,
CASE CASE
WHEN SUM(COMP_HOURS) != 0 THEN (SUM(COMP_HOURS) / SUM(HOURS) * 100) WHEN SUM(COMP_HOURS) != 0 THEN (SUM(COMP_HOURS) / SUM(HOURS) * 100)
ELSE 0 END HOURS_PERCENT, ELSE 0 END HOURS_PERCENT,
CASE CASE
WHEN SUM(COMP_OPERATION) != 0 WHEN SUM(COMP_OPERATION) != 0
THEN (SUM(COMP_OPERATION) / SUM(OPERATION_NUM) * 100) THEN (SUM(COMP_OPERATION) / SUM(OPERATION_NUM) * 100)
ELSE 0 END OPERATION_PERCENT ELSE 0 END OPERATION_PERCENT
FROM ( FROM (
SELECT cf2.VALUE WORK_ORDER, SELECT cf2.VALUE WORK_ORDER,
cf.VALUE ITEM_NUMBER, cf.VALUE ITEM_NUMBER,
zsd.CREATED_DATE_TIME, zsd.CREATED_DATE_TIME,
zsd.SITE, zsd.SITE,
zsd.DISPATCH_QTY, zsd.DISPATCH_QTY,
zsd.PROD_HOURS * zsd.DISPATCH_QTY HOURS, zsd.PROD_HOURS * zsd.DISPATCH_QTY HOURS,
zsd.WORK_CENTER WORK_CENTER, zsd.WORK_CENTER WORK_CENTER,
CASE CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL' WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
THEN zsd.PROD_HOURS * zsd.DISPATCH_QTY THEN zsd.PROD_HOURS * zsd.DISPATCH_QTY
ELSE 0 END COMP_HOURS, ELSE 0 END COMP_HOURS,
CASE CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL' WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
THEN 1 THEN 1
ELSE 0 END COMP_OPERATION, ELSE 0 END COMP_OPERATION,
ROW_NUMBER() OVER (PARTITION BY zsd.HANDLE ORDER BY zsd.HANDLE) OPERATION_NUM ROW_NUMBER() OVER (PARTITION BY zsd.HANDLE ORDER BY zsd.HANDLE) OPERATION_NUM
FROM Z_SFC_DISPATCH zsd FROM Z_SFC_DISPATCH zsd
INNER JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE INNER JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
LEFT JOIN CUSTOM_FIELDS cf LEFT JOIN CUSTOM_FIELDS cf
ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER' ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf2 LEFT JOIN CUSTOM_FIELDS cf2
ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER' ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
WHERE zsd.SITE = #{site} WHERE zsd.SITE = #{site}
<if test="workOrder != null and workOrder != ''"> <if test="workOrder != null and workOrder != ''">
AND cf2.VALUE = #{workOrder} AND cf2.VALUE = #{workOrder}
</if> </if>
<if test="itemNumber != null and itemNumber != ''"> <if test="itemNumber != null and itemNumber != ''">
AND cf.VALUE = #{itemNumber} AND cf.VALUE = #{itemNumber}
</if> </if>
) )
GROUP BY SITE,WORK_ORDER, ITEM_NUMBER,WORK_CENTER GROUP BY SITE,WORK_ORDER, ITEM_NUMBER,WORK_CENTER
) zsd ) zsd
LEFT JOIN ( LEFT JOIN (
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY,zsd.WORK_CENTER SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY,zsd.WORK_CENTER
FROM Z_SFC_DISPATCH zsd FROM Z_SFC_DISPATCH zsd
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE 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 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' 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} WHERE zsd.DISPATCH_STATUS != 'COMPLETE' AND zsd.DISPATCH_STATUS != 'CANCEL' AND zsd.SITE= #{site}
<if test="workOrder != null and workOrder != ''"> <if test="workOrder != null and workOrder != ''">
AND cf2.VALUE = #{workOrder} AND cf2.VALUE = #{workOrder}
</if> </if>
<if test="itemNumber != null and itemNumber != ''"> <if test="itemNumber != null and itemNumber != ''">
AND cf.VALUE = #{itemNumber} AND cf.VALUE = #{itemNumber}
</if> </if>
GROUP BY cf2.VALUE, cf.VALUE,zsd.WORK_CENTER 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 ) zsd2 ON zsd2.WORK_CENTER = zsd.WORK_CENTER AND zsd2.WORK_ORDER || zsd2.ITEM_NUMBER = zsd.WORK_ORDER ||
LEFT JOIN ( zsd.ITEM_NUMBER
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY,zsd.WORK_CENTER LEFT JOIN (
FROM Z_SFC_DISPATCH zsd SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY,zsd.WORK_CENTER
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE FROM Z_SFC_DISPATCH zsd
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER' LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER' LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER'
WHERE zsd.SITE = #{site} LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
<if test="workOrder != null and workOrder != ''"> WHERE zsd.SITE = #{site}
AND cf2.VALUE = #{workOrder} <if test="workOrder != null and workOrder != ''">
</if> AND cf2.VALUE = #{workOrder}
<if test="itemNumber != null and itemNumber != ''"> </if>
AND cf.VALUE = #{itemNumber} <if test="itemNumber != null and itemNumber != ''">
</if> AND cf.VALUE = #{itemNumber}
GROUP BY cf2.VALUE, cf.VALUE,zsd.WORK_CENTER </if>
) zsd3 ON zsd3.WORK_CENTER = zsd.WORK_CENTER AND zsd3.WORK_ORDER || zsd3.ITEM_NUMBER = zsd.WORK_ORDER || zsd.ITEM_NUMBER GROUP BY cf2.VALUE, cf.VALUE,zsd.WORK_CENTER
INNER JOIN WORK_CENTER wc ON wc.WORK_CENTER = zsd.WORK_CENTER AND wc.SITE = zsd.SITE ) zsd3 ON zsd3.WORK_CENTER = zsd.WORK_CENTER AND zsd3.WORK_ORDER || zsd3.ITEM_NUMBER = zsd.WORK_ORDER ||
LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE AND wct.LOCALE = 'zh' zsd.ITEM_NUMBER
WHERE (zsd.WORK_ORDER IS NOT NULL OR zsd.ITEM_NUMBER IS NOT NULL) 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> <where>
1 = 1 1 = 1
<if test="workCenter != null and workCenter != ''"> <if test="workCenter != null and workCenter != ''">
@ -938,4 +962,50 @@
</where> </where>
ORDER BY CREATED_DATE_TIME ASC ORDER BY CREATED_DATE_TIME ASC
</select> </select>
<select id="partsTraceScheduleReport" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT zsd.SHOP_ORDER SHOP_ORDER,
s.SFC SFC,
cf.VALUE ITEM_NUMBER,
cf2.VALUE WORK_ORDER,
i.ITEM ITEM,
it.DESCRIPTION ITEM_DESCRIPTION,
ct.DESCRIPTION COMPONENT_DESCRIPTION,
zsd.BLANKING_SIZE BLANKING_SIZE,
ot.DESCRIPTION OPERATION_DESCRIPTION,
zsd.EMPLOYEE_DESCRIPTION PB_USER,
zsd.ACTUAL_START_DATE ACTUAL_START_DATE,
zsd.ACTUAL_COMPLETE_DATE ACTUAL_COMPLETE_DATE,
znu.FULL_NAME FULL_NAME
FROM Z_SFC_DISPATCH zsd
LEFT JOIN SFC s ON s.SFC = zsd.SFC AND s.SITE = zsd.SITE
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'
LEFT JOIN ITEM i On i.HANDLE = so.ITEM_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = so.ITEM_BO AND it.LOCALE = 'zh'
INNER JOIN SFC_BOM sb ON SB.SFC_BO = s.HANDLE
INNER JOIN BOM_COMPONENT bc ON bc.BOM_BO = sb.BOM_BO
LEFT JOIN ITEM cp ON cp.HANDLE = bc.COMPONENT_GBO
LEFT JOIN ITEM_T ct ON ct.ITEM_BO = cp.HANDLE AND ct.LOCALE = 'zh'
INNER JOIN OPERATION o ON o.SITE = zsd.SITE AND o.OPERATION = zsd.OPERATION AND o.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE AND ot.LOCALE = 'zh'
LEFT JOIN Z_INSPECTION_TASK zit ON zit.SFC = S.SFC AND zit.SHOP_ORDER = so.SHOP_ORDER
AND zsd.OPERATION = zit.OPERATION AND zit.STEP_ID = zsd.STEP_ID
LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = zit.MODIFY_USER
<where>
zsd.DISPATCH_STATUS = 'COMPLETE'
<if test="shopOrder != null and shopOrder != ''">
AND zsd.SHOP_ORDER = #{shopOrder}
</if>
<if test="sfc != null and sfc != ''">
AND s.SFC = #{sfc}
</if>
<if test="item != null and item != ''">
AND i.ITEM = #{item}
</if>
<if test="itemDescription != null and itemDescription != ''">
AND it.DESCRIPTION = #{itemDescription}
</if>
</where>
</select>
</mapper> </mapper>

@ -0,0 +1,25 @@
package com.foreverwin.mesnac.common.dto;
import com.foreverwin.mesnac.common.model.ExcelColumn;
import java.io.Serializable;
/**
* BOM DTO
*/
public class shopOrderReleaseDto implements Serializable{
@ExcelColumn("工单编号")
private String shopOrder;
public String getShopOrder() {
return shopOrder;
}
public void setShopOrder(String shopOrder) {
this.shopOrder = shopOrder;
}
}
Loading…
Cancel
Save