From aeebbe6d9b05429ef74770ea2ec7dc6dd5f39b1d Mon Sep 17 00:00:00 2001
From: lius <Lius2225@163.com>
Date: 星期五, 04 八月 2023 14:03:09 +0800
Subject: [PATCH] update

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java |  220 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 112 insertions(+), 108 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
index 49346ae..6bbaf58 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -12,6 +12,7 @@
 import org.jeecg.modules.mdc.service.*;
 import org.jeecg.modules.mdc.util.DateUtils;
 import org.jeecg.modules.mdc.vo.*;
+import org.jeecg.modules.mdc.vo.MdcUtilizationRateDto;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.service.IMdcProductionService;
@@ -1030,9 +1031,9 @@
      * @return
      */
     @Override
-    public MdcEfficiencyVo utilizationRateSectionAnalyze(String userId, DayUtilizationRateContrastQueryVo vo) {
-        MdcEfficiencyVo result = new MdcEfficiencyVo();
-        List<MdcEfficiencyListDto> listDtos = new ArrayList<>();
+    public MdcUtilizationRateDto utilizationRateSectionAnalyze(String userId, DayUtilizationRateContrastQueryVo vo) {
+        MdcUtilizationRateDto result = new MdcUtilizationRateDto();
+        List<MdcUtilizationRateListDto> listDtos = new ArrayList<>();
         List<String> equipmentIds = new ArrayList<>();
         if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) {
             if ("2".equals(vo.getTypeTree())) {
@@ -1074,129 +1075,38 @@
             if ("2".equals(vo.getTypeTree())) {
                 // 閮ㄩ棬灞傜骇
                 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList());
-                // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭�
-                List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()));
 
                 for (MdcEquDepDto mdcEquDepDto : equipmentList) {
-                    MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto();
-                    mdcEfficiencyListDto.setEquipmentId(mdcEquDepDto.getEquipmentId());
-                    mdcEfficiencyListDto.setEquipmentName(mdcEquDepDto.getEquipmentName());
-                    mdcEfficiencyListDto.setEquipmentType(mdcEquDepDto.getEquipmentType());
-                    switch (mdcEquDepDto.getOrgType()) {
-                        case "1":
-                            mdcEfficiencyListDto.setLevel1(mdcEquDepDto.getDepartName());
-                            break;
-                        case "2":
-                            mdcEfficiencyListDto.setLevel2(mdcEquDepDto.getDepartName());
-                            break;
-                        case "3":
-                            mdcEfficiencyListDto.setLevel3(mdcEquDepDto.getDepartName());
-                            break;
-                        default:
-                    }
-
-                    SysDepart sysDepart = departList.stream().filter(depart -> depart.getId().equals(mdcEquDepDto.getParentId())).findAny().orElse(null);
-                    if (sysDepart != null) {
-                        switch (sysDepart.getOrgType()) {
-                            case "1":
-                                mdcEfficiencyListDto.setLevel1(sysDepart.getDepartName());
-                                break;
-                            case "2":
-                                mdcEfficiencyListDto.setLevel2(sysDepart.getDepartName());
-                                break;
-                            case "3":
-                                mdcEfficiencyListDto.setLevel3(sysDepart.getDepartName());
-                                break;
-                            default:
-                        }
-                        if (StringUtils.isNotEmpty(sysDepart.getParentId())) {
-                            departList.stream().filter(depart -> depart.getId().equals(sysDepart.getParentId())).findAny().ifPresent(depart1 -> {
-                                switch (depart1.getOrgType()) {
-                                    case "1":
-                                        mdcEfficiencyListDto.setLevel1(depart1.getDepartName());
-                                        break;
-                                    case "2":
-                                        mdcEfficiencyListDto.setLevel2(depart1.getDepartName());
-                                        break;
-                                    case "3":
-                                        mdcEfficiencyListDto.setLevel3(depart1.getDepartName());
-                                        break;
-                                    default:
-                                }
-                            });
-                        }
-                    }
+                    MdcUtilizationRateListDto mdcUtilizationRateListDto = new MdcUtilizationRateListDto();
+                    mdcUtilizationRateListDto.setEquipmentId(mdcEquDepDto.getEquipmentId());
+                    mdcUtilizationRateListDto.setEquipmentName(mdcEquDepDto.getEquipmentName());
+                    mdcUtilizationRateListDto.setEquipmentType(mdcEquDepDto.getEquipmentType());
                     //
-                    List<MdcEfficiencyResultDto> list = new ArrayList<>();
+                    List<MdcUtilizationResultDto> list = new ArrayList<>();
                     for (String date : dateList) {
                         Date startTime = DateUtils.toDate(date + " " + startString + ":00", DateUtils.STR_DATE_TIME_SMALL);
                         Date endTime = DateUtils.toDate(date + " " + endString + ":00", DateUtils.STR_DATE_TIME_SMALL);
-                        list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), startTime, endTime, date, mdcUtilizationRateList));
+                        list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList));
                     }
-                    mdcEfficiencyListDto.setDataList(list);
-                    listDtos.add(mdcEfficiencyListDto);
+                    mdcUtilizationRateListDto.setDataList(list);
+                    listDtos.add(mdcUtilizationRateListDto);
                 }
 
             } else {
                 // 浜х嚎灞傜骇
                 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList());
-                // 鏌ヨ鎵�鏈変骇绾夸俊鎭�
-                List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()));
 
                 for (MdcEquProDto mdcEquProDto : equipmentList) {
-                    MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto();
+                    MdcUtilizationRateListDto mdcEfficiencyListDto = new MdcUtilizationRateListDto();
                     mdcEfficiencyListDto.setEquipmentId(mdcEquProDto.getEquipmentId());
                     mdcEfficiencyListDto.setEquipmentName(mdcEquProDto.getEquipmentName());
                     mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType());
-                    switch (mdcEquProDto.getOrgType()) {
-                        case "1":
-                            mdcEfficiencyListDto.setLevel1(mdcEquProDto.getProductionName());
-                            break;
-                        case "2":
-                            mdcEfficiencyListDto.setLevel2(mdcEquProDto.getProductionName());
-                            break;
-                        case "3":
-                            mdcEfficiencyListDto.setLevel3(mdcEquProDto.getProductionName());
-                            break;
-                        default:
-                    }
-                    MdcProduction mdcProduction = productionList.stream().filter(production -> production.getId().equals(mdcEquProDto.getParentId())).findAny().orElse(null);
-                    if (mdcProduction != null) {
-                        switch (mdcProduction.getOrgType()) {
-                            case "1":
-                                mdcEfficiencyListDto.setLevel1(mdcProduction.getProductionName());
-                                break;
-                            case "2":
-                                mdcEfficiencyListDto.setLevel2(mdcProduction.getProductionName());
-                                break;
-                            case "3":
-                                mdcEfficiencyListDto.setLevel3(mdcProduction.getProductionName());
-                                break;
-                            default:
-                        }
-                        if (StringUtils.isNotEmpty(mdcProduction.getParentId())) {
-                            productionList.stream().filter(production -> production.getId().equals(mdcProduction.getParentId())).findAny().ifPresent(production1 -> {
-                                switch (production1.getOrgType()) {
-                                    case "1":
-                                        mdcEfficiencyListDto.setLevel1(production1.getProductionName());
-                                        break;
-                                    case "2":
-                                        mdcEfficiencyListDto.setLevel2(production1.getProductionName());
-                                        break;
-                                    case "3":
-                                        mdcEfficiencyListDto.setLevel3(production1.getProductionName());
-                                        break;
-                                    default:
-                                }
-                            });
-                        }
-                    }
                     //
-                    List<MdcEfficiencyResultDto> list = new ArrayList<>();
+                    List<MdcUtilizationResultDto> list = new ArrayList<>();
                     for (String date : dateList) {
                         Date startTime = DateUtils.toDate(date + " " + startString + ":00", DateUtils.STR_DATE_TIME_SMALL);
                         Date endTime = DateUtils.toDate(date + " " + endString + ":00", DateUtils.STR_DATE_TIME_SMALL);
-                        list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), startTime, endTime, date, mdcUtilizationRateList));
+                        list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList));
                     }
                     mdcEfficiencyListDto.setDataList(list);
                     listDtos.add(mdcEfficiencyListDto);
@@ -1207,9 +1117,103 @@
         return result;
     }
 
-    private MdcEfficiencyResultDto utilizationRate(String equipmentId, Date startTime, Date endTime, String date, List<MdcUtilizationRate> mdcUtilizationRateList) {
-        MdcEfficiencyResultDto dto = new MdcEfficiencyResultDto();
-        dto.setTheDate(DateUtils.format(DateUtils.toDate(date, DateUtils.STR_DATE), DateUtils.STRDATE));
+    /**
+     * 璁惧鍒╃敤鐜囪蛋鍔垮垎鏋�
+     *
+     * @param userId
+     * @param vo
+     * @return
+     */
+    @Override
+    public MdcUtilizationRateDto utilizationRateTrendAnalyze(String userId, DayUtilizationRateContrastQueryVo vo) {
+        MdcUtilizationRateDto result = new MdcUtilizationRateDto();
+        List<MdcUtilizationRateListDto> listDtos = new ArrayList<>();
+        List<String> equipmentIds = new ArrayList<>();
+        if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) {
+            if ("2".equals(vo.getTypeTree())) {
+                // 閮ㄩ棬灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, vo.getParentId());
+            } else {
+                // 浜х嚎灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, vo.getParentId());
+            }
+        } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) {
+            // 鍗曞彴璁惧淇℃伅
+            vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId()));
+        } else {
+            // 鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭�
+            if ("2".equals(vo.getTypeTree())) {
+                // 閮ㄩ棬灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
+            } else {
+                // 浜х嚎灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
+            }
+        }
+
+        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
+            vo.setEquipmentIdList(equipmentIds);
+        }
+
+        List<String> dateList = DateUtils.getDatesStringList(DateUtils.getShortDate2(vo.getStartDate()), DateUtils.getShortDate2(vo.getEndDate()));
+        result.setDates(dateList);
+
+        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
+            result.setMdcEfficiencyList(listDtos);
+        } else {
+            // 鍒╃敤鐜囩瓑绾�
+            List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("lyl");
+            if ("2".equals(vo.getTypeTree())) {
+                // 閮ㄩ棬灞傜骇
+                List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList());
+
+                for (MdcEquDepDto mdcEquDepDto : equipmentList) {
+                    MdcUtilizationRateListDto mdcEfficiencyListDto = new MdcUtilizationRateListDto();
+                    mdcEfficiencyListDto.setEquipmentId(mdcEquDepDto.getEquipmentId());
+                    mdcEfficiencyListDto.setEquipmentName(mdcEquDepDto.getEquipmentName());
+                    mdcEfficiencyListDto.setEquipmentType(mdcEquDepDto.getEquipmentType());
+
+                    List<MdcUtilizationResultDto> list = new ArrayList<>();
+                    for (String date : dateList) {
+                        Date startTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL);
+                        Date endTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL);
+                        list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList));
+                    }
+                    mdcEfficiencyListDto.setDataList(list);
+                    listDtos.add(mdcEfficiencyListDto);
+                }
+
+            } else {
+                // 浜х嚎灞傜骇
+                List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList());
+
+                for (MdcEquProDto mdcEquProDto : equipmentList) {
+                    MdcUtilizationRateListDto mdcEfficiencyListDto = new MdcUtilizationRateListDto();
+                    mdcEfficiencyListDto.setEquipmentId(mdcEquProDto.getEquipmentId());
+                    mdcEfficiencyListDto.setEquipmentName(mdcEquProDto.getEquipmentName());
+                    mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType());
+                    List<MdcUtilizationResultDto> list = new ArrayList<>();
+                    for (String date : dateList) {
+                        Date startTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL);
+                        Date endTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL);
+                        list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList));
+                    }
+                    mdcEfficiencyListDto.setDataList(list);
+                    listDtos.add(mdcEfficiencyListDto);
+                }
+            }
+            result.setMdcEfficiencyList(listDtos);
+        }
+
+        return result;
+    }
+
+    private MdcUtilizationResultDto utilizationRate(String equipmentId, String equipmentName, String equipmentType, Date startTime, Date endTime, String date, List<MdcUtilizationRate> mdcUtilizationRateList) {
+        MdcUtilizationResultDto dto = new MdcUtilizationResultDto();
+        dto.setEquipmentId(equipmentId);
+        dto.setEquipmentName(equipmentName);
+        dto.setEquipmentType(equipmentType);
+        dto.setTheDate(date);
         List<MdcEquipmentRunningSection> runningSections = mdcEquipmentRunningSectionService.listEquipmentRunningSection(equipmentId, startTime.getTime(), endTime.getTime());
         if (runningSections != null && !runningSections.isEmpty()) {
             // 鏃堕棿淇

--
Gitblit v1.9.3