工作令加工进度表

master
赵嘉伟 3 years ago
parent 049f28ed66
commit 9dbee07ee9

@ -145,4 +145,16 @@ public class ReportController {
return R.failed(e.getMessage());
}
}
/**
*
*/
@GetMapping("/findWorkOrderSchedule")
public R findWorkOrderSchedule(@RequestParam(required = false) Map paramMap){
try{
return R.ok(reportService.findWorkOrderSchedule(paramMap));
}catch (Exception e){
return R.failed(e.getMessage());
}
}
}

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

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

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

@ -668,4 +668,96 @@
</if>
</where>
</select>
<select id="findWorkOrderSchedule" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT *
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
FROM (
SELECT WORK_ORDER,
ITEM_NUMBER,
MIN(CREATED_DATE_TIME) CREATED_DATE_TIME,
SUM(DISPATCH_SEQ) DISPATCH_SEQ,
CASE
WHEN SUM(COMP_HOURS) != 0 THEN (SUM(COMP_HOURS) / SUM(HOURS) * 100)
ELSE 0 END HOURS_PERCENT,
CASE
WHEN SUM(COMP_OPERATION) != 0
THEN (SUM(COMP_OPERATION) / SUM(OPERATION_NUM) * 100)
ELSE 0 END OPERATION_PERCENT
FROM (
SELECT cf2.VALUE WORK_ORDER,
cf.VALUE ITEM_NUMBER,
zsd.CREATED_DATE_TIME,
zsd.DISPATCH_SEQ,
zsd.PROD_HOURS * zsd.DISPATCH_SEQ HOURS,
CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
THEN zsd.PROD_HOURS * zsd.DISPATCH_SEQ
ELSE 0 END COMP_HOURS,
CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
THEN 1
ELSE 0 END COMP_OPERATION,
ROW_NUMBER() OVER (PARTITION BY zsd.HANDLE ORDER BY zsd.HANDLE) OPERATION_NUM
FROM Z_SFC_DISPATCH zsd
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 cf2
ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
WHERE zsd.SITE = #{site}
)
GROUP BY WORK_ORDER, ITEM_NUMBER
) zsd
LEFT JOIN (
SELECT cf2.VALUE WORK_ORDER, cf.VALUE ITEM_NUMBER, COUNT(zsd.HANDLE) QTY
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
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)
)
<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>
<if test="isCompleted != null and isCompleted != ''">
AND IS_COMPLETE = #{isCompleted}
</if>
<if test="startDateTime != null and startDateTime != ''">
AND CREATED_DATE_TIME &gt;= TO_DATE(#{startDateTime},'YYYY-MM-DD')-8/24
</if>
<if test="endDateTime != null and endDateTime != ''">
AND CREATED_DATE_TIME &lt;= TO_DATE(#{endDateTime}|| '15:59:59','YYYY-MM-DD HH24:MI:SS')
</if>
</where>
ORDER BY CREATED_DATE_TIME ASC
</select>
</mapper>
Loading…
Cancel
Save