add资源负荷率报表(月维度)

master
yinq 3 years ago
parent cc495948d8
commit cc3905ae2c

@ -287,6 +287,19 @@ public class ReportController {
}
}
/**
* ()
* @param paramMap
* @return
*/
@GetMapping("/monthLoadRateReport")
public R monthLoadRateReport(@RequestParam(required = false) Map paramMap){
try{
return R.ok(reportService.monthLoadRateReport(paramMap));
}catch (Exception e){
return R.failed(e.getMessage());
}
}
}

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

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

@ -517,6 +517,21 @@ public class ReportServiceImpl implements ReportService {
return reportMapper.weekLoadRateReport(paramMap);
}
/**
* ()
* @param paramMap
* @return
*/
@Override
public List<Map<String, Object>> monthLoadRateReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site", site);
paramMap.put("locale", LocaleContextHolder.getLocale().getLanguage());
if (StringUtils.isBlank((String) paramMap.get("month"))){
paramMap.put("month",(Integer)paramMap.get("month"));
}
return reportMapper.monthLoadRateReport(paramMap);
}
/**

@ -1505,8 +1505,8 @@
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 7 WEEK7,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 8 WEEK8
FROM DUAL)
SELECT ZSD.OPERATION "operation",
R.DESCRIPTION "resourceDescription",
SELECT O.OPERATION "operation",
OT.DESCRIPTION "operationDescription",
SUM(CASE
WHEN SYSDATE > ZSD.PLANNED_COMP_DATE THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "tardinessWork",
SUM(CASE
@ -1532,26 +1532,115 @@
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "unWorkHours7",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK7) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK8)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "unWorkHours8",
R.RESRCE
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "unWorkHours8"
FROM Z_SFC_DISPATCH ZSD
LEFT JOIN RESRCE R ON R.SITE = ZSD.SITE AND R.RESRCE = ZSD.RESRCE
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = ZSD.SITE
LEFT JOIN OPERATION_T OT ON O.HANDLE = OT.OPERATION_BO
CROSS JOIN WEEK
WHERE (ZSD.DISPATCH_STATUS != 'COMPLETE' AND ZSD.DISPATCH_STATUS != 'CANCEL' AND ZSD.DISPATCH_STATUS != 'PAUSE')
AND R.DESCRIPTION IS NOT NULL
AND ZSD.PLANNED_COMP_DATE IS NOT NULL
-- AND ZSD.CREATED_DATE_TIME > TO_DATE(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'),'IW') - 8 * 7)
GROUP BY ZSD.OPERATION, R.DESCRIPTION,R.RESRCE
ORDER BY "tardinessWork" DESC) WIP
LEFT JOIN CUSTOM_FIELDS CF ON CF.ATTRIBUTE ='WEEK_CAPACITY' AND CF.HANDLE = 'ResourceBO:'|| #{site} || ','|| WIP.RESRCE
GROUP BY O.OPERATION,OT.DESCRIPTION
ORDER BY "tardinessWork" DESC ) WIP
LEFT JOIN CUSTOM_FIELDS CF ON CF.ATTRIBUTE ='WEEK_CAPACITY' AND CF.HANDLE = 'OperationBO:1000,'|| WIP."operation" || ',1.0'
<where>
1=1
<if test="operation != null and operation != ''">
AND WIP."operation" = #{operation}
</if>
<if test="resourceDescription != null and resourceDescription != ''">
AND WIP."resourceDescription" = #{resourceDescription}
<if test="operationDescription != null and operationDescription != ''">
AND WIP."operationDescription" = #{operationDescription}
</if>
</where>
</select>
<select id="monthLoadRateReport" resultType="java.util.HashMap" parameterType="java.util.HashMap">
--资源负荷率报表(月维度)
SELECT WIP.*,
CF.VALUE "monthCapacity",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours1" / CF.VALUE) * 100, '99990.99') || '%' "monthRate1",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours2" / CF.VALUE) * 100, '99990.99') || '%' "monthRate2",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours3" / CF.VALUE) * 100, '99990.99') || '%' "monthRate3",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours4" / CF.VALUE) * 100, '99990.99') || '%' "monthRate4",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours5" / CF.VALUE) * 100, '99990.99') || '%' "monthRate5",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours6" / CF.VALUE) * 100, '99990.99') || '%' "monthRate6",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours7" / CF.VALUE) * 100, '99990.99') || '%' "monthRate7",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours8" / CF.VALUE) * 100, '99990.99') || '%' "monthRate8",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours9" / CF.VALUE) * 100, '99990.99') || '%' "monthRate9",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours10" / CF.VALUE) * 100, '99990.99') || '%' "monthRate10",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours11" / CF.VALUE) * 100, '99990.99') || '%' "monthRate11",
TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours12" / CF.VALUE) * 100, '99990.99') || '%' "monthRate12"
FROM (
WITH MONTH AS (
SELECT ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 0 - #{month}) month0,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 1- #{month}) month1,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 2- #{month}) month2,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 3- #{month}) month3,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 4- #{month}) month4,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 5- #{month}) month5,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 6- #{month}) month6,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 7- #{month}) month7,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 8- #{month}) month8,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 9- #{month}) month9,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 10- #{month}) month10,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 11- #{month}) month11,
ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 12- #{month}) month12
FROM DUAL)
SELECT O.OPERATION "operation",
OT.DESCRIPTION "operationDescription",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month0) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month1)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours1",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month1) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month2)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours2",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month2) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month3)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours3",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month3) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month4)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours4",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month4) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month5)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours5",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month5) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month6)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours6",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month6) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month7)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours7",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month7) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month8)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours8",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month8) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month9)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours9",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month9) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month10)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours10",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month10) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month11)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours11",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month11) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(MONTH.month12)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours12"
FROM Z_SFC_DISPATCH ZSD
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = ZSD.SITE
LEFT JOIN OPERATION_T OT ON O.HANDLE = OT.OPERATION_BO
CROSS JOIN MONTH
WHERE (ZSD.DISPATCH_STATUS != 'COMPLETE' AND ZSD.DISPATCH_STATUS != 'CANCEL' AND ZSD.DISPATCH_STATUS != 'PAUSE')
AND ZSD.PLANNED_COMP_DATE IS NOT NULL
GROUP BY O.OPERATION,OT.DESCRIPTION
ORDER BY O.OPERATION DESC ) WIP
LEFT JOIN CUSTOM_FIELDS CF ON CF.ATTRIBUTE ='MONTH_CAPACITY' AND CF.HANDLE = 'OperationBO:1000,'|| WIP."operation" || ',1.0'
<where>
1=1
<if test="operation != null and operation != ''">
AND WIP."operation" = #{operation}
</if>
<if test="operationDescription != null and operationDescription != ''">
AND WIP."operationDescription" = #{operationDescription}
</if>
</where>
</select>
</mapper>

@ -1,8 +1,5 @@
package com.foreverwin.mesnac.meapi.controller;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.foreverwin.mesnac.meapi.enums.HandleEnum;
@ -236,7 +233,7 @@ public class ResrceController {
* @param paramMap
* @return
*/
@PostMapping("/weekLoadRateReportSaveAll")
@PostMapping("/loadRateReportSaveAll")
public R weekLoadRateReportSaveAll(@RequestBody Map paramMap) {
try {
List<HashMap<String, String>> resultList = (List<HashMap<String, String>>) paramMap.get("resultList");
@ -244,7 +241,7 @@ public class ResrceController {
if (paramMap.get("capacity").equals("weekCapacity")) {
for (HashMap<String, String> hashMap : resultList) {
CustomFields customFields = new CustomFields();
customFields.setHandle(HandleEnum.RESOURCE.getHandle(CommonMethods.getSite(), hashMap.get("RESRCE")));
customFields.setHandle(HandleEnum.OPERATION.getHandle(CommonMethods.getSite(), hashMap.get("operation"),"1.0"));
customFields.setAttribute("WEEK_CAPACITY");
customFields.setValue(hashMap.get("weekCapacity"));
CustomFieldsList.add(customFields);
@ -252,7 +249,7 @@ public class ResrceController {
} else {
for (HashMap<String, String> hashMap : resultList) {
CustomFields customFields = new CustomFields();
customFields.setHandle(HandleEnum.RESOURCE.getHandle(CommonMethods.getSite(), hashMap.get("RESRCE")));
customFields.setHandle(HandleEnum.OPERATION.getHandle(CommonMethods.getSite(), hashMap.get("operation"),"1.0"));
customFields.setAttribute("MONTH_CAPACITY");
customFields.setValue(hashMap.get("monthCapacity"));
CustomFieldsList.add(customFields);

Loading…
Cancel
Save