资源负荷率报表(上工序已完成)

master
yinq 2 years ago
parent 4011e13e0b
commit 5a1af386c4

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

@ -297,4 +297,11 @@ public interface ReportMapper {
* @return * @return
*/ */
Map<String, String> findAbnormalDutyBySFCAndStepId(@Param("site") String site,@Param("sfc") String sfc,@Param("stepId") String stepId); Map<String, String> findAbnormalDutyBySFCAndStepId(@Param("site") String site,@Param("sfc") String sfc,@Param("stepId") String stepId);
/**
* ()
* @param paramMap
* @return
*/
List<Map<String, String>> loadRatePreviousCompletedReport(Map paramMap);
} }

@ -299,4 +299,12 @@ public interface ReportService {
* @return * @return
*/ */
Map<String, Object> financialWorkHoursBoard(Map paramMap); Map<String, Object> financialWorkHoursBoard(Map paramMap);
/**
* ()
* @param paramMap
* @return
*/
List<Map<String, String>> loadRatePreviousCompletedReport(Map paramMap);
} }

@ -26,6 +26,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -1595,6 +1596,90 @@ public class ReportServiceImpl implements ReportService {
return result; return result;
} }
/**
* ()
* @param paramMap
* @return
*/
@Override
public List<Map<String, String>> loadRatePreviousCompletedReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site", site);
paramMap.put("locale", LocaleContextHolder.getLocale().getLanguage());
Integer restOfTheWeek = 1 ;
if (String.valueOf(paramMap.get("week")).equals("true")){
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
int dayOfWeek = now.getDayOfWeek().getValue();
LocalDateTime weekStart = now.minusDays(dayOfWeek - 1).with(LocalTime.MIN);
LocalDateTime weekEnd = now.plusDays(7 * 8 - dayOfWeek).with(LocalTime.MAX);
List<Map<String, String>> weekOfDate = DateReportUtils.getWeekOfDate3(weekStart.format(fmt), weekEnd.format(fmt));
return weekOfDate;
}else {
LocalDateTime now = LocalDateTime.now();
int dayOfWeek = now.getDayOfWeek().getValue();
restOfTheWeek = 7 - dayOfWeek + 1;
}
List<Map<String, String>> resultList = reportMapper.loadRatePreviousCompletedReport(paramMap);
HashMap<String, String> countMap = new HashMap<>();
countMap.put("workCenterDescription","总计:");
Float tardinessWork = 0.00f;
Float weekCapacity = 0.00f;
Float dayCapacity = 0.00f;
Float OverdueAddWeek = 0.00f;
Float unWorkHours1 = 0.00f;
Float unWorkHours2 = 0.00f;
Float unWorkHours3 = 0.00f;
Float unWorkHours4 = 0.00f;
Float unWorkHours5 = 0.00f;
Float unWorkHours6 = 0.00f;
Float unWorkHours7 = 0.00f;
Float unWorkHours8 = 0.00f;
for (Map<String, String> map : resultList) {
tardinessWork += Float.valueOf(String.valueOf(map.get("tardinessWork")));
if (!StringUtils.isBlank(map.get("weekCapacity"))){
weekCapacity += Float.valueOf(String.valueOf(map.get("weekCapacity")));
}
if (!StringUtils.isBlank(map.get("dayCapacity"))){
dayCapacity += Float.valueOf(String.valueOf(map.get("dayCapacity")));
}
OverdueAddWeek += Float.valueOf(String.valueOf(map.get("OverdueAddWeek")));
unWorkHours1 += Float.valueOf(String.valueOf(map.get("unWorkHours1")));
unWorkHours2 += Float.valueOf(String.valueOf(map.get("unWorkHours2")));
unWorkHours3 += Float.valueOf(String.valueOf(map.get("unWorkHours3")));
unWorkHours4 += Float.valueOf(String.valueOf(map.get("unWorkHours4")));
unWorkHours5 += Float.valueOf(String.valueOf(map.get("unWorkHours5")));
unWorkHours6 += Float.valueOf(String.valueOf(map.get("unWorkHours6")));
unWorkHours7 += Float.valueOf(String.valueOf(map.get("unWorkHours7")));
unWorkHours8 += Float.valueOf(String.valueOf(map.get("unWorkHours8")));
}
countMap.put("tardinessWork",String.format("%.2f",tardinessWork));
countMap.put("weekCapacity",String.format("%.2f",weekCapacity));
countMap.put("dayCapacity",String.format("%.2f",dayCapacity));
countMap.put("OverdueAddWeek",String.format("%.2f",OverdueAddWeek));
countMap.put("unWorkHours1",String.format("%.2f",unWorkHours1));
countMap.put("unWorkHours2",String.format("%.2f",unWorkHours2));
countMap.put("unWorkHours3",String.format("%.2f",unWorkHours3));
countMap.put("unWorkHours4",String.format("%.2f",unWorkHours4));
countMap.put("unWorkHours5",String.format("%.2f",unWorkHours5));
countMap.put("unWorkHours6",String.format("%.2f",unWorkHours6));
countMap.put("unWorkHours7",String.format("%.2f",unWorkHours7));
countMap.put("unWorkHours8",String.format("%.2f",unWorkHours8));
countMap.put("weekRate1",String.format("%.2f", (OverdueAddWeek + unWorkHours1) / (dayCapacity * restOfTheWeek) * 100 ) + "%");
countMap.put("weekRate2",String.format("%.2f",unWorkHours2 / weekCapacity * 100 ) + "%");
countMap.put("weekRate3",String.format("%.2f",unWorkHours3 / weekCapacity * 100 ) + "%");
countMap.put("weekRate4",String.format("%.2f",unWorkHours4 / weekCapacity * 100 ) + "%");
countMap.put("weekRate5",String.format("%.2f",unWorkHours5 / weekCapacity * 100 ) + "%");
countMap.put("weekRate6",String.format("%.2f",unWorkHours6 / weekCapacity * 100 ) + "%");
countMap.put("weekRate7",String.format("%.2f",unWorkHours7 / weekCapacity * 100 ) + "%");
countMap.put("weekRate8",String.format("%.2f",unWorkHours8 / weekCapacity * 100 ) + "%");
resultList.add(countMap);
return resultList;
}
/** /**
* *
* @param paramMap * @param paramMap

@ -3065,6 +3065,129 @@ SELECT zab.CREATED_DATE_TIME,
WHERE ZSS.SITE = #{site} AND ZSS.SPLIT_SFC = #{sfc} AND NST.STEP_ID = #{stepId} WHERE ZSS.SITE = #{site} AND ZSS.SPLIT_SFC = #{sfc} AND NST.STEP_ID = #{stepId}
GROUP BY NST.SITE, NST.SFC,ZSS.SPLIT_SFC, NST.STEP_ID GROUP BY NST.SITE, NST.SFC,ZSS.SPLIT_SFC, NST.STEP_ID
</select> </select>
<select id="loadRatePreviousCompletedReport" resultType="java.util.Map">
--资源负荷率报表(上工序已完成)
SELECT CF.VALUE "weekCapacity",
CFD.VALUE "dayCapacity",
WIP."tardinessWork" + WIP."unWorkHours1" "OverdueAddWeek",
WIP.*,
WIP.RESOURCE_TYPE_DESCRIPTION "DESCRIPTION",
WIP.WORK_CENTER_DESCRIPTION "workCenterDescription",
TO_CHAR(DECODE(CFD.VALUE, NULL, 0, (WIP."tardinessWork" + WIP."unWorkHours1") /
(CFD.VALUE *
CEIL((TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') +
7 * 1) - SYSDATE))) * 100, '99990.99') || '%' "weekRate1",
TO_CHAR(DECODE(CF.VALUE, NULL, 0, WIP."unWorkHours2" / CF.VALUE) * 100, '99990.99') || '%' "weekRate2",
TO_CHAR(DECODE(CF.VALUE, NULL, 0, WIP."unWorkHours3" / CF.VALUE) * 100, '99990.99') || '%' "weekRate3",
TO_CHAR(DECODE(CF.VALUE, NULL, 0, WIP."unWorkHours4" / CF.VALUE) * 100, '99990.99') || '%' "weekRate4",
TO_CHAR(DECODE(CF.VALUE, NULL, 0, WIP."unWorkHours5" / CF.VALUE) * 100, '99990.99') || '%' "weekRate5",
TO_CHAR(DECODE(CF.VALUE, NULL, 0, WIP."unWorkHours6" / CF.VALUE) * 100, '99990.99') || '%' "weekRate6",
TO_CHAR(DECODE(CF.VALUE, NULL, 0, WIP."unWorkHours7" / CF.VALUE) * 100, '99990.99') || '%' "weekRate7",
TO_CHAR(DECODE(CF.VALUE, NULL, 0, WIP."unWorkHours8" / CF.VALUE) * 100, '99990.99') || '%' "weekRate8"
FROM (WITH WEEK AS (
SELECT TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') WEEK0,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 1 WEEK1,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 2 WEEK2,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 3 WEEK3,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 4 WEEK4,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 5 WEEK5,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 6 WEEK6,
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 O.OPERATION "operation",
OT.DESCRIPTION "operationDescription",
RT.DESCRIPTION,
SUM(CASE
WHEN TO_DATE(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW')) >
(ZSD.PLANNED_COMP_DATE + 8 / 24) THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "tardinessWork",
SUM(CASE
WHEN (ZSD.PLANNED_COMP_DATE + 8 / 24) >= TO_DATE(WEEK.WEEK0) AND
(ZSD.PLANNED_COMP_DATE + 8 / 24) &lt; TO_DATE(WEEK.WEEK1)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "unWorkHours1",
SUM(CASE
WHEN (ZSD.PLANNED_COMP_DATE + 8 / 24) >= TO_DATE(WEEK.WEEK1) AND
(ZSD.PLANNED_COMP_DATE + 8 / 24) &lt; TO_DATE(WEEK.WEEK2)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "unWorkHours2",
SUM(CASE
WHEN (ZSD.PLANNED_COMP_DATE + 8 / 24) >= TO_DATE(WEEK.WEEK2) AND
(ZSD.PLANNED_COMP_DATE + 8 / 24) &lt; TO_DATE(WEEK.WEEK3)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "unWorkHours3",
SUM(CASE
WHEN (ZSD.PLANNED_COMP_DATE + 8 / 24) >= TO_DATE(WEEK.WEEK3) AND
(ZSD.PLANNED_COMP_DATE + 8 / 24) &lt; TO_DATE(WEEK.WEEK4)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "unWorkHours4",
SUM(CASE
WHEN (ZSD.PLANNED_COMP_DATE + 8 / 24) >= TO_DATE(WEEK.WEEK4) AND
(ZSD.PLANNED_COMP_DATE + 8 / 24) &lt; TO_DATE(WEEK.WEEK5)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "unWorkHours5",
SUM(CASE
WHEN (ZSD.PLANNED_COMP_DATE + 8 / 24) >= TO_DATE(WEEK.WEEK5) AND
(ZSD.PLANNED_COMP_DATE + 8 / 24) &lt; TO_DATE(WEEK.WEEK6)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "unWorkHours6",
SUM(CASE
WHEN (ZSD.PLANNED_COMP_DATE + 8 / 24) >= TO_DATE(WEEK.WEEK6) AND
(ZSD.PLANNED_COMP_DATE + 8 / 24) &lt; TO_DATE(WEEK.WEEK7)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "unWorkHours7",
SUM(CASE
WHEN (ZSD.PLANNED_COMP_DATE + 8 / 24) >= TO_DATE(WEEK.WEEK7) AND
(ZSD.PLANNED_COMP_DATE + 8 / 24) &lt; TO_DATE(WEEK.WEEK8)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "unWorkHours8",
WCT.DESCRIPTION WORK_CENTER_DESCRIPTION,
RT.DESCRIPTION RESOURCE_TYPE_DESCRIPTION
FROM (WITH DIS AS (SELECT MIN(ZSD.DISPATCH_NO) DISPATCH_NO
FROM Z_SFC_DISPATCH ZSD
GROUP BY ZSD.SFC)
SELECT NZSD.*
FROM (
SELECT OZSD.*,
CASE
WHEN DIS.DISPATCH_NO = OZSD.DISPATCH_NO AND OZSD.DISPATCH_STATUS != 'COMPLETE'
THEN N'COMPLETE'
ELSE LAG(OZSD.DISPATCH_STATUS, 1)
OVER ( PARTITION BY OZSD.SFC ORDER BY OZSD.SFC,OZSD.DISPATCH_NO ) END PREVIOUS_STATUS
FROM Z_SFC_DISPATCH OZSD
LEFT JOIN DIS ON DIS.DISPATCH_NO = OZSD.DISPATCH_NO
WHERE OZSD.DISPATCH_STATUS != 'CANCEL'
AND OZSD.DISPATCH_STATUS != 'PAUSE'
ORDER BY OZSD.SFC, OZSD.DISPATCH_NO) NZSD
WHERE NZSD.DISPATCH_STATUS != 'COMPLETE'
AND NZSD.PREVIOUS_STATUS = 'COMPLETE') ZSD
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = ZSD.SITE AND CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T OT ON O.HANDLE = OT.OPERATION_BO
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
LEFT JOIN RESOURCE_TYPE RT ON ZSD.RESOURCE_TYPE = RT.RESOURCE_TYPE
CROSS JOIN WEEK
WHERE (ZSD.DISPATCH_STATUS != 'CANCEL' AND ZSD.DISPATCH_STATUS != 'PAUSE' AND ZSD.DISPATCH_STATUS != 'COMPLETE')
AND ZSD.PLANNED_COMP_DATE IS NOT NULL
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
GROUP BY O.OPERATION, OT.DESCRIPTION, WCT.DESCRIPTION, RT.DESCRIPTION
ORDER BY O.OPERATION ASC) WIP
LEFT JOIN OPERATION OP ON OP.OPERATION = WIP."operation" AND CURRENT_REVISION = 'true'
LEFT JOIN CUSTOM_FIELDS CF ON CF.ATTRIBUTE = 'WEEK_CAPACITY' AND CF.HANDLE = OP.HANDLE
LEFT JOIN CUSTOM_FIELDS CFD ON CFD.ATTRIBUTE = 'DAY_CAPACITY' AND CFD.HANDLE = OP.HANDLE
<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> </mapper>
Loading…
Cancel
Save