修改项目进度报表

master
yinq 3 years ago
parent b83be1539b
commit 43fb21c6fe

@ -184,7 +184,7 @@ public class ReportController {
* @param paramMap
* @return
*/
@GetMapping("/ProjectScheduleReport")
@GetMapping("/projectScheduleReport")
public R ProjectScheduleReport(@RequestParam(required = false) Map paramMap){
try{
Map<String, Object> result = reportService.ProjectScheduleReport(paramMap);

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

@ -442,8 +442,20 @@ public class ReportServiceImpl implements ReportService {
map1.put("rate", shopOrderMap1.get("rate"));
map1.put("currentOperation", shopOrderMap1.get("currentOperation"));
map1.put("nextOperationNum", shopOrderMap1.get("nextOperationNum"));
map1.put("currentPlanTime", shopOrderMap1.get("currentPlanTime"));
map1.put("endPlanTime", shopOrderMap1.get("endPlanTime"));
//map1.put("rework", shopOrderMap1.get("rework"));
if (shopOrderMap1.get("isOverTime").equals("true")) {
map1.put("currentPlanTime", shopOrderMap1.get("currentPlanTime") + "(已超时)");
} else {
map1.put("currentPlanTime", shopOrderMap1.get("currentPlanTime"));
}
if (shopOrderMap1.get("rework").equals("true")) {
Map<String, Object> timeMap = reportMapper.selectCurrentPlanTime(shopOrderMap1);
map1.put("currentPlanTime", timeMap.get("planEndCompDate"));
if (shopOrderMap1.get("isOverTime").equals("true")){
map1.put("currentPlanTime", timeMap.get("planEndCompDate")+ "(已超时)");
}
}
shopOrderListJSONObject.add(map1);
}
shopOrderMap.put("categories", shopOrderListJSONObject);
@ -460,6 +472,7 @@ public class ReportServiceImpl implements ReportService {
objectHashMap.put("categories", clothingJSONObject);
HashMap<String, Object> result = new HashMap<>();
result.put("clothing", objectHashMap);
result.put("workOrder", paramMap.get("workOrder"));
return result;
}
}

@ -1126,59 +1126,91 @@
<select id="ProjectScheduleReport" parameterType="java.util.HashMap" resultType="java.util.HashMap">
--项目进度报表
SELECT WIP.item "item",--项目号
WIP.workOrder "workOrder",
WIP.shopOrder "shopOrder",
WIP.SFC "SFC",
WIP.itemDescription "itemDescription",
WIP.shopOrderQTY "shopOrderQTY",
WIP.doneQTY "doneQTY",
WIP.rate "rate",
OT.DESCRIPTION "currentOperation",
WIP.nextOperationNum "nextOperationNum",
zsd2.PLANNED_COMP_DATE "currentPlanTime",
WIP.endPlanTime "endPlanTime"
FROM (SELECT cf.VALUE item,--项目号
cf2.VALUE workOrder,--工作令
zsd.SHOP_ORDER shopOrder,--订单编号
zsd.SFC SFC,--SFC
it.DESCRIPTION itemDescription,--物料描述
SUM(zsd.DISPATCH_QTY) shopOrderQTY,--订单数量
SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN
zsd.DISPATCH_QTY
ELSE 0 END) doneQTY, --已完成数量
TO_CHAR(SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN
zsd.PROD_HOURS
ELSE 0 END) / SUM(zsd.PROD_HOURS) * 100, '99990.99') || '%' rate,--进度(工时百分比)
MAX(zsd.ACTUAL_START_DATE) ACTUAL_START_DATE,--最大实际开始时间
SUM(CASE WHEN zsd.DISPATCH_STATUS != 'COMPLETE' THEN 1 ELSE 0 END) nextOperationNum,--剩余工序数量
MAX(zsd.PLANNED_COMP_DATE) endPlanTime,--计划最终交付时间
zsd.SITE SITE
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 AND I.SITE = SO.SITE
LEFT JOIN ITEM_T it ON it.ITEM_BO = so.ITEM_BO AND it.LOCALE = 'zh'
WHERE zsd.SITE = '1000'
AND cf.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
SELECT WIP.item "item",--项目号
WIP.workOrder "workOrder",
WIP.shopOrder "shopOrder",
WIP.SFC "SFC",
WIP.itemDescription "itemDescription",
WIP.shopOrderQTY "shopOrderQTY",
WIP.doneQTY "doneQTY",
WIP.rate || '%' "rate",
OT.DESCRIPTION "currentOperation",
WIP.nextOperationNum "nextOperationNum",
zsd2.PLANNED_COMP_DATE "currentPlanTime",
WIP.endPlanTime "endPlanTime",
WIP.rework "rework",--是否返修工序
CASE
WHEN WIP.nextOperationNum > 0 AND SYSDATE > zsd2.PLANNED_COMP_DATE
THEN 'true'
WHEN WIP.nextOperationNum = 0 AND WIP.rate !=100.00 AND SYSDATE > zsd2.PLANNED_COMP_DATE
THEN 'true'
ELSE 'false' END "isOverTime" --当前工序是否超时
FROM (SELECT cf.VALUE item,--项目号
cf2.VALUE workOrder,--工作令
zsd.SHOP_ORDER shopOrder,--订单编号
zsd.SFC SFC,--SFC
it.DESCRIPTION itemDescription,--物料描述
SUM(zsd.DISPATCH_QTY) shopOrderQTY,--订单数量
SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN
zsd.DISPATCH_QTY
ELSE 0 END) doneQTY, --已完成数量
TO_CHAR(
DECODE(SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN
zsd.PROD_HOURS
ELSE 0 END), 0, 0, SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN
zsd.PROD_HOURS
ELSE 0 END) / SUM(zsd.PROD_HOURS))
* 100, '99990.99') rate,--进度(工时百分比)
MAX(zsd.ACTUAL_START_DATE) ACTUAL_START_DATE,--最大实际开始时间
SUM(CASE WHEN zsd.DISPATCH_STATUS != 'COMPLETE' THEN 1 ELSE 0 END) nextOperationNum,--剩余工序数量
MAX(zsd.PLANNED_COMP_DATE) endPlanTime,--计划最终交付时间
rs.REWORK rework,--是否返修工序
zsd.SITE SITE
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 AND I.SITE = SO.SITE
LEFT JOIN ITEM_T it ON it.ITEM_BO = so.ITEM_BO AND it.LOCALE = 'zh'
LEFT JOIN ROUTER r ON zsd.ROUTER_BO = R.HANDLE
LEFT JOIN ROUTER_STEP rs ON rs.ROUTER_BO = r.HANDLE AND rs.STEP_ID = zsd.STEP_ID
WHERE zsd.SITE = '1000'
AND cf.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE, zsd.SHOP_ORDER, zsd.SFC, it.DESCRIPTION, rs.REWORK
ORDER BY rate
) WIP
LEFT JOIN Z_SFC_DISPATCH zsd2 ON WIP.shopOrder = ZSD2.SHOP_ORDER AND WIP.SFC = zsd2.SFC
AND WIP.SITE = zsd2.SITE AND WIP.ACTUAL_START_DATE = zsd2.ACTUAL_START_DATE
INNER JOIN OPERATION O ON O.SITE = WIP.SITE AND O.OPERATION = zsd2.OPERATION AND O.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh'
<where>
<if test="shopOrder != null and shopOrder != ''">
AND zsd.SHOP_ORDER = #{shopOrder}
<if test="workOrder != null and workOrder != ''">
AND WIP.workOrder like '%${workOrder}%'
</if>
</where>
GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE, zsd.SHOP_ORDER, zsd.SFC, it.DESCRIPTION
) WIP
LEFT JOIN Z_SFC_DISPATCH zsd2 ON WIP.shopOrder = ZSD2.SHOP_ORDER AND WIP.SFC = zsd2.SFC
AND WIP.SITE = zsd2.SITE AND WIP.ACTUAL_START_DATE = zsd2.ACTUAL_START_DATE
INNER JOIN OPERATION O ON O.SITE = WIP.SITE AND O.OPERATION = zsd2.OPERATION AND O.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh'
WHERE 1 = 1
ORDER BY endPlanTime DESC
</select>
<select id="selectCurrentPlanTime" parameterType="java.util.HashMap" resultType="java.util.Map">
select MIN(zsd.PLANNED_COMP_DATE) "planEndCompDate"
FROM Z_SFC_DISPATCH zsd
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'
<where>
1=1
<if test="SFC != null and SFC != ''">
AND zsd.SFC = #{SFC}
</if>
<if test="currentOperation != null and currentOperation != ''">
AND OT.DESCRIPTION = #{currentOperation}
</if>
</where>
ORDER BY zsd.ACTUAL_START_DATE
</select>
</mapper>
Loading…
Cancel
Save