From c87b6be5af5aff05a9a2448cfba57adb00531d07 Mon Sep 17 00:00:00 2001
From: lius <Lius2225@163.com>
Date: 星期五, 30 六月 2023 15:42:06 +0800
Subject: [PATCH] 利用率报表接口

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java |   64 +++++++++++++++++++++-----------
 1 files changed, 42 insertions(+), 22 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 de8846c..c0857ab 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
@@ -1,5 +1,6 @@
 package org.jeecg.modules.mdc.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import net.sf.saxon.expr.Component;
 import org.apache.commons.lang3.StringUtils;
@@ -18,6 +19,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -78,18 +80,18 @@
         List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("lyl");
 
         //灏佽缁撴灉
-        List<MdcEfficiencyDto> equipmentList = efficiencyList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MdcEfficiencyDto::getEquipmentId))), ArrayList::new));
+        List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().in(MdcEquipment::getEquipmentId, vo.getEquipmentIdList()));
 
         List<String> dates = DateUtils.getDatesStringList2(DateUtils.getShortDate2(vo.getStartTime()), DateUtils.getShortDate2(vo.getEndTime()));
 
-        for (MdcEfficiencyDto mdcEfficiencyDto : equipmentList) {
+        for (MdcEquipment mdcEquipment : equipmentList) {
             MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto();
-            mdcEfficiencyListDto.setEquipmentId(mdcEfficiencyDto.getEquipmentId());
-            mdcEfficiencyListDto.setEquipmentName(mdcEfficiencyDto.getEquipmentName());
-            mdcEfficiencyListDto.setEquipmentType(mdcEfficiencyDto.getEquipmentType());
+            mdcEfficiencyListDto.setEquipmentId(mdcEquipment.getEquipmentId());
+            mdcEfficiencyListDto.setEquipmentName(mdcEquipment.getEquipmentName());
+            mdcEfficiencyListDto.setEquipmentType(mdcEquipment.getEquipmentType());
             List<MdcEfficiencyResultDto> list = new ArrayList<>();
             for (String date : dates) {
-                list.add(this.efficiencyRate(efficiencyList, date, mdcEfficiencyDto, mdcUtilizationRateList));
+                list.add(this.efficiencyRate(efficiencyList, date, mdcEquipment, mdcUtilizationRateList));
             }
             mdcEfficiencyListDto.setList(list);
             listDtos.add(mdcEfficiencyListDto);
@@ -101,27 +103,45 @@
         return result;
     }
 
-    private MdcEfficiencyResultDto efficiencyRate(List<MdcEfficiencyDto> efficiencyList, String date, MdcEfficiencyDto mdcEfficiencyDto, List<MdcUtilizationRate> mdcUtilizationRateList) {
+    private MdcEfficiencyResultDto efficiencyRate(List<MdcEfficiencyDto> efficiencyList, String date, MdcEquipment mdcEquipment, List<MdcUtilizationRate> mdcUtilizationRateList) {
         MdcEfficiencyResultDto mdcEfficiencyResultDto = new MdcEfficiencyResultDto();
-        for (MdcEfficiencyDto efficiencyDto : efficiencyList) {
-            if (date.equals(efficiencyDto.getTheDate()) && efficiencyDto.getEquipmentId().equals(mdcEfficiencyDto.getEquipmentId())) {
-                mdcEfficiencyResultDto.setTheDate(efficiencyDto.getTheDate());
-                mdcEfficiencyResultDto.setProcessLong(efficiencyDto.getProcessLong());
-                mdcEfficiencyResultDto.setUtilizationRate(efficiencyDto.getUtilizationRate());
-                mdcEfficiencyResultDto.setStartRate(efficiencyDto.getStartRate());
-                mdcEfficiencyResultDto.setStartRate(efficiencyDto.getStartRate());
-                mdcEfficiencyResultDto.setOpenRate(efficiencyDto.getOpenRate());
-                mdcEfficiencyResultDto.setOpenLong(efficiencyDto.getOpenLong());
-                mdcEfficiencyResultDto.setWaitLong(efficiencyDto.getWaitLong());
-                mdcEfficiencyResultDto.setCloseLong(efficiencyDto.getCloseLong());
-                for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
-                    if (efficiencyDto.getUtilizationRate().longValue() * 100 > mdcUtilizationRate.getMinimumRange() && efficiencyDto.getUtilizationRate().longValue() * 100 <= mdcUtilizationRate.getMaximumRange()) {
-                        mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor());
+        if (efficiencyList != null && !efficiencyList.isEmpty()) {
+            for (MdcEfficiencyDto efficiencyDto : efficiencyList) {
+                if (date.equals(efficiencyDto.getTheDate()) && efficiencyDto.getEquipmentId().equals(mdcEquipment.getEquipmentId())) {
+                    mdcEfficiencyResultDto.setTheDate(efficiencyDto.getTheDate());
+                    mdcEfficiencyResultDto.setProcessLong(efficiencyDto.getProcessLong());
+                    mdcEfficiencyResultDto.setUtilizationRate(efficiencyDto.getUtilizationRate());
+                    mdcEfficiencyResultDto.setStartRate(efficiencyDto.getStartRate());
+                    mdcEfficiencyResultDto.setStartRate(efficiencyDto.getStartRate());
+                    mdcEfficiencyResultDto.setOpenRate(efficiencyDto.getOpenRate());
+                    mdcEfficiencyResultDto.setOpenLong(efficiencyDto.getOpenLong());
+                    mdcEfficiencyResultDto.setWaitLong(efficiencyDto.getWaitLong());
+                    mdcEfficiencyResultDto.setCloseLong(efficiencyDto.getCloseLong());
+                    for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
+                        if (efficiencyDto.getUtilizationRate().longValue() * 100 >= mdcUtilizationRate.getMinimumRange() && efficiencyDto.getUtilizationRate().longValue() * 100 < mdcUtilizationRate.getMaximumRange()) {
+                            mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor());
+                        }
                     }
-                }
 
+                }
+            }
+        } else {
+            mdcEfficiencyResultDto.setTheDate(date);
+            mdcEfficiencyResultDto.setProcessLong(new BigDecimal("0"));
+            mdcEfficiencyResultDto.setUtilizationRate(new BigDecimal("0"));
+            mdcEfficiencyResultDto.setStartRate(new BigDecimal("0"));
+            mdcEfficiencyResultDto.setStartRate(new BigDecimal("0"));
+            mdcEfficiencyResultDto.setOpenRate(new BigDecimal("0"));
+            mdcEfficiencyResultDto.setOpenLong(new BigDecimal("0"));
+            mdcEfficiencyResultDto.setWaitLong(new BigDecimal("0"));
+            mdcEfficiencyResultDto.setCloseLong(new BigDecimal("0"));
+            for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
+                if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) {
+                    mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor());
+                }
             }
         }
+
         return mdcEfficiencyResultDto;
     }
 

--
Gitblit v1.9.3