From 308d6d1d07aee29cd771ce0768c57f1ec25704a9 Mon Sep 17 00:00:00 2001 From: yinq <1345442242@qq.com> Date: Thu, 3 Nov 2022 15:07:46 +0800 Subject: [PATCH] =?UTF-8?q?add=E5=B7=A5=E6=97=B6=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anomaly/controller/ReportController.java | 14 +++ .../mesnac/anomaly/mapper/ReportMapper.java | 5 + .../mesnac/anomaly/service/ReportService.java | 6 + .../service/impl/ReportServiceImpl.java | 113 +++++++++++++----- .../main/resources/mapper/ReportMapper.xml | 58 ++++++++- 5 files changed, 165 insertions(+), 31 deletions(-) diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/ReportController.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/ReportController.java index d40c405f..47cf1993 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/ReportController.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/ReportController.java @@ -513,6 +513,20 @@ public class ReportController { } } + /** + * 工时看板 + * @param + * @return + */ + @GetMapping("/workHoursBoard") + public R workHoursBoard(String workCenter){ + try { + return R.ok(reportService.workHoursBoard(workCenter)); + } catch (Exception e) { + return R.failed(e.getMessage()); + } + } + /** * 项目生产加工周期看板 * @param diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/ReportMapper.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/ReportMapper.java index 87979e05..12fccf92 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/ReportMapper.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/ReportMapper.java @@ -166,6 +166,8 @@ public interface ReportMapper { List> departmentForNonconformity(String workCenter); + List> workingHoursEachWorkshop(String workCenter); + List> workshopDeliveryRateList(String workCenter); List> NCTop5RateList(String workCenter); @@ -246,4 +248,7 @@ public interface ReportMapper { * @return */ List> customerDimensionFinishedTimeReport(Map paramMap); + + List> workHoursCompletedBusinessUnit(String workCenter); + } diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/ReportService.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/ReportService.java index e0833d35..ef2401e2 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/ReportService.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/ReportService.java @@ -258,4 +258,10 @@ public interface ReportService { */ List> customerDimensionFinishedTimeReport(Map paramMap); + /** + * 工时看板 + * @param user + * @return + */ + Map workHoursBoard(String user); } diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/ReportServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/ReportServiceImpl.java index 8792ada1..617bc2d5 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/ReportServiceImpl.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/ReportServiceImpl.java @@ -688,7 +688,9 @@ public class ReportServiceImpl implements ReportService { List> result = reportMapper.monthLoadRateReport(paramMap); Integer monthRemainingDays = getMonthRemainingDays(); for (Map map : result) { - Float number = Float.valueOf(String.valueOf(map.get("workHours" + month))) + Float.valueOf(String.valueOf(map.get("tardinessWork"))); + Float number = Float.valueOf(String.valueOf(map.get("workHours" + month))) + + Float.valueOf(String.valueOf(map.get("tardinessWork"))) + - Float.valueOf(String.valueOf(map.get("monthToNow"))); map.put("workHours" + month, String.format("%.2f",number)); if ((map.containsKey("dayCapacity"))){ Float dayCapacity= (Float.valueOf(String.valueOf(map.get("dayCapacity")))) * monthRemainingDays; @@ -1329,21 +1331,21 @@ public class ReportServiceImpl implements ReportService { tardinessWork += Float.valueOf(String.valueOf(map.get("tardinessWork"))); totalWorkingHours += Float.valueOf(String.valueOf(map.get("totalWorkingHours"))); } - countMap.put("tardinessWork",String.format("%.2f",tardinessWork)); - countMap.put("monthCapacity",String.format("%.2f",monthCapacity)); - countMap.put("workHours1",String.format("%.2f",workHours1)); - countMap.put("workHours2",String.format("%.2f",workHours2)); - countMap.put("workHours3",String.format("%.2f",workHours3)); - countMap.put("workHours4",String.format("%.2f",workHours4)); - countMap.put("workHours5",String.format("%.2f",workHours5)); - countMap.put("workHours6",String.format("%.2f",workHours6)); - countMap.put("workHours7",String.format("%.2f",workHours7)); - countMap.put("workHours8",String.format("%.2f",workHours8)); - countMap.put("workHours9",String.format("%.2f",workHours9)); - countMap.put("workHours10",String.format("%.2f",workHours10)); - countMap.put("workHours11",String.format("%.2f",workHours11)); - countMap.put("workHours12",String.format("%.2f",workHours12)); - countMap.put("totalWorkingHours",String.format("%.2f",totalWorkingHours)); + countMap.put("tardinessWork",String.format("%.3f",tardinessWork)); + countMap.put("monthCapacity",String.format("%.3f",monthCapacity)); + countMap.put("workHours1",String.format("%.3f",workHours1)); + countMap.put("workHours2",String.format("%.3f",workHours2)); + countMap.put("workHours3",String.format("%.3f",workHours3)); + countMap.put("workHours4",String.format("%.3f",workHours4)); + countMap.put("workHours5",String.format("%.3f",workHours5)); + countMap.put("workHours6",String.format("%.3f",workHours6)); + countMap.put("workHours7",String.format("%.3f",workHours7)); + countMap.put("workHours8",String.format("%.3f",workHours8)); + countMap.put("workHours9",String.format("%.3f",workHours9)); + countMap.put("workHours10",String.format("%.3f",workHours10)); + countMap.put("workHours11",String.format("%.3f",workHours11)); + countMap.put("workHours12",String.format("%.3f",workHours12)); + countMap.put("totalWorkingHours",String.format("%.3f",totalWorkingHours)); result.add(countMap); return result; } @@ -1391,24 +1393,75 @@ public class ReportServiceImpl implements ReportService { tardinessWork += Float.valueOf(String.valueOf(map.get("tardinessWork"))); totalWorkingHours += Float.valueOf(String.valueOf(map.get("totalWorkingHours"))); } - countMap.put("tardinessWork",String.format("%.2f",tardinessWork)); - countMap.put("workHours1",String.format("%.2f",workHours1)); - countMap.put("workHours2",String.format("%.2f",workHours2)); - countMap.put("workHours3",String.format("%.2f",workHours3)); - countMap.put("workHours4",String.format("%.2f",workHours4)); - countMap.put("workHours5",String.format("%.2f",workHours5)); - countMap.put("workHours6",String.format("%.2f",workHours6)); - countMap.put("workHours7",String.format("%.2f",workHours7)); - countMap.put("workHours8",String.format("%.2f",workHours8)); - countMap.put("workHours9",String.format("%.2f",workHours9)); - countMap.put("workHours10",String.format("%.2f",workHours10)); - countMap.put("workHours11",String.format("%.2f",workHours11)); - countMap.put("workHours12",String.format("%.2f",workHours12)); - countMap.put("totalWorkingHours",String.format("%.2f",totalWorkingHours)); + countMap.put("tardinessWork",String.format("%.3f",tardinessWork)); + countMap.put("workHours1",String.format("%.3f",workHours1)); + countMap.put("workHours2",String.format("%.3f",workHours2)); + countMap.put("workHours3",String.format("%.3f",workHours3)); + countMap.put("workHours4",String.format("%.3f",workHours4)); + countMap.put("workHours5",String.format("%.3f",workHours5)); + countMap.put("workHours6",String.format("%.3f",workHours6)); + countMap.put("workHours7",String.format("%.3f",workHours7)); + countMap.put("workHours8",String.format("%.3f",workHours8)); + countMap.put("workHours9",String.format("%.3f",workHours9)); + countMap.put("workHours10",String.format("%.3f",workHours10)); + countMap.put("workHours11",String.format("%.3f",workHours11)); + countMap.put("workHours12",String.format("%.3f",workHours12)); + countMap.put("totalWorkingHours",String.format("%.3f",totalWorkingHours)); result.add(countMap); return result; } + /** + * 工时看板 + * @param workCenter + * @return + */ + @Override + public Map workHoursBoard(String workCenter) { + HashMap result = new HashMap<>(); + + //各车间总工时完成情况(单轴多折线图) + List> WorkshopList = reportMapper.workingHoursEachWorkshop(workCenter); + List monthOldList = WorkshopList.stream().map(e -> { return e.get("MONTH"); }) + .distinct().sorted().collect(Collectors.toList()); + ArrayList monthList = new ArrayList<>(); + monthList.addAll(monthOldList); + + Map>> descriptionMap = WorkshopList.stream(). + collect(Collectors.groupingBy(e -> e.get("WORK_CENTER"))); + ArrayList> descriptionValueList = new ArrayList<>(); + for (String description : descriptionMap.keySet()) { + List> maps = descriptionMap.get(description); + HashMap map = new HashMap<>(); + ArrayList QTYList = new ArrayList<>(); + maps.forEach(e -> { + QTYList.add(Float.valueOf(String.valueOf(e.get("QTY")))); + }); + map.put("name",description); + map.put("value",QTYList); + descriptionValueList.add(map); + } + result.put("monthList",monthList); + result.put("descriptionValueList",descriptionValueList); + + //事业部完工工时占比(双环形图) + HashMap dutyCauseMap = new HashMap<>(); + List> workHoursCompletedList = reportMapper.workHoursCompletedBusinessUnit(workCenter); + ArrayList nameList = new ArrayList<>(); + ArrayList> nameAndValueList = new ArrayList<>(); + for (Map map : workHoursCompletedList) { + nameList.add(map.get("workOrder")); + HashMap NVMap = new HashMap<>(); + NVMap.put("name",map.get("workOrder")); + NVMap.put("value",map.get("workHours")); + nameAndValueList.add(NVMap); + } + dutyCauseMap.put("causeTypeDescription",nameList); + dutyCauseMap.put("distributionMapList",nameAndValueList); + result.put("dutyCause",dutyCauseMap); + return result; + } + /** * 工时统计报表 * @param paramMap diff --git a/anomaly/src/main/resources/mapper/ReportMapper.xml b/anomaly/src/main/resources/mapper/ReportMapper.xml index 14d391aa..af806e67 100644 --- a/anomaly/src/main/resources/mapper/ReportMapper.xml +++ b/anomaly/src/main/resources/mapper/ReportMapper.xml @@ -1629,6 +1629,11 @@ THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "tardinessWork", SUM(CASE + WHEN to_date(trunc(add_months(last_day(sysdate), -1) + 1)) < (ZSD.PLANNED_COMP_DATE + 8 / 24) + AND (ZSD.PLANNED_COMP_DATE + 8 / 24) < TO_DATE(TRUNC(SYSDATE)) + THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS + ELSE 0 END) "monthToNow",--当月初至nowTime差值 + SUM(CASE WHEN (ZSD.PLANNED_COMP_DATE + 8/24) >= TO_DATE(MONTH.month0) AND (ZSD.PLANNED_COMP_DATE + 8/24) < TO_DATE(MONTH.month1) THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours1", SUM(CASE @@ -1723,6 +1728,7 @@ AND WIP."operationDescription" = #{operationDescription} + ORDER BY WIP.WORK_CENTER_DESCRIPTION,WIP."operation" + + \ No newline at end of file