From 5cd4558fb1a7178653d77e1a982e6f26d06b5db5 Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期一, 31 三月 2025 17:39:00 +0800
Subject: [PATCH] 中心综合利用率趋势接口

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquEffVo.java                                              |    8 +
 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java                                   |    3 
 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java                         |    1 
 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml                      |   16 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java             |   12 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftDto.java                                          |   16 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java                         |   22 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java                       |    2 
 /dev/null                                                                                                         |    9 -
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComRateDto.java                                           |   34 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java |    5 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java                           |    4 
 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java              |   11 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftChildDto.java                                     |   16 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java         |    3 
 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java                      |    8 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java              |  123 +++++++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java                 |   34 ++--
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftRateDto.java                                      |   33 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml         |   18 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java                         |    9 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java            |    3 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml                      |   51 ++++++
 23 files changed, 408 insertions(+), 33 deletions(-)

diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
index b53209e..2343268 100644
--- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
+++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
@@ -615,4 +615,7 @@
 
     String ORG_TYPE = "3";
 
+    Integer SHIFT_TYPE_1 = 1;
+    Integer SHIFT_TYPE_2 = 2;
+
 }
diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
index 698af06..cba730b 100644
--- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
+++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -134,4 +134,5 @@
 
     List<MdcEquipment> findByProIdsAndTeamCode(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("teamCodeList") List<String> teamCodeList);
 
+    List<MdcEquipment> findByProIdsAndType(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("typeList") List<String> typeList);
 }
diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
index 7b7f06e..19bb11d 100644
--- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
+++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -324,4 +324,20 @@
         </foreach>
     </select>
 
+    <select id="findByProIdsAndType" resultType="org.jeecg.modules.mdc.entity.MdcEquipment">
+        SELECT
+            t1.*
+        FROM
+            mdc_equipment t1
+                LEFT JOIN mdc_production_equipment t2 ON t1.id = t2.equipment_id
+        WHERE t2.production_id IN
+        <foreach collection="mdcProductionIds" item = "productionId" index = "index" open = "(" close= ")" separator = ",">
+            #{productionId}
+        </foreach>
+        AND t1.equipment_type IN
+        <foreach collection="typeList" item = "equipmentType" index = "index" open = "(" close= ")" separator = ",">
+            #{equipmentType}
+        </foreach>
+    </select>
+
 </mapper>
diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
index 16fbc71..dce27ed 100644
--- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
+++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -231,4 +231,12 @@
      * @return
      */
     List<MdcEquipment> findByProIdsAndTeamCode(List<String> allProductionIds, List<String> teamCodelist);
+
+    /**
+     * 鏍规嵁浜х嚎id闆嗗悎鍜岃澶囩被鍨嬫煡璇㈣澶囧垪琛�
+     * @param allProductionIds
+     * @param typeList
+     * @return
+     */
+    List<MdcEquipment> findByProIdsAndType(List<String> allProductionIds, List<String> typeList);
 }
diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
index 7281d24..3964351 100644
--- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
+++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -1031,4 +1031,15 @@
         return this.baseMapper.findByProIdsAndTeamCode(mdcProductionIds, teamCodeList);
     }
 
+    /**
+     * 鏍规嵁浜х嚎id闆嗗悎鍜岃澶囩被鍨嬫煡璇㈣澶囧垪琛�
+     * @param allProductionIds
+     * @param typeList
+     * @return
+     */
+    @Override
+    public List<MdcEquipment> findByProIdsAndType(List<String> allProductionIds, List<String> typeList) {
+        return this.baseMapper.findByProIdsAndType(allProductionIds, typeList);
+    }
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java
index ab8fb5e..60d2f43 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java
@@ -32,7 +32,7 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垪琛ㄦ煡璇�", notes = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垪琛ㄦ煡璇�")
     @GetMapping("/efficiencyList")
-    public Result efficiencyList(MdcEfficiencyReportQueryVo vo) {
+    public Result<?> efficiencyList(MdcEfficiencyReportQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         MdcEfficiencyVo result = mdcEfficiencyReportService.efficiencyList(userId, vo);
@@ -41,7 +41,7 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-寮�鍔ㄧ巼鍒楄〃鏌ヨ", notes = "璁惧鏁堢巼鎶ヨ〃-寮�鍔ㄧ巼鍒楄〃鏌ヨ")
     @GetMapping("/efficiencyPOList")
-    public Result efficiencyPOList(MdcEfficiencyReportQueryVo vo) {
+    public Result<?> efficiencyPOList(MdcEfficiencyReportQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         MdcEfficiencyVo result = mdcEfficiencyReportService.efficiencyPOList(userId, vo);
@@ -50,7 +50,7 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鐝鍒╃敤鐜囧垪琛ㄦ煡璇�", notes = "璁惧鏁堢巼鎶ヨ〃-鐝鍒╃敤鐜囧垪琛ㄦ煡璇�")
     @GetMapping("/efficiencyShiftList")
-    public Result efficiencyShiftList(MdcEfficiencyReportShiftQueryVo vo) {
+    public Result<?> efficiencyShiftList(MdcEfficiencyReportShiftQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         MdcEfficiencyShiftVo result = mdcEfficiencyReportService.efficiencyShiftList(userId, vo);
@@ -59,7 +59,7 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-缁熻鍒嗘瀽鍒楄〃", notes = "璁惧鏁堢巼鎶ヨ〃-缁熻鍒嗘瀽鍒楄〃")
     @GetMapping("/dayStatisticalRate")
-    public Result dayStatisticalRate(MdcEfficiencyReportQueryVo vo) {
+    public Result<?> dayStatisticalRate(MdcEfficiencyReportQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         StatisticalAnalysisVo result = mdcEfficiencyReportService.dayStatisticalRate(userId, vo);
@@ -68,7 +68,7 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-瀵规瘮鍒嗘瀽", notes = "璁惧鏁堢巼鎶ヨ〃-瀵规瘮鍒嗘瀽")
     @GetMapping("/comparativeAnalysis")
-    public Result comparativeAnalysis(ComparativeAnalysisQueryVo vo) {
+    public Result<?> comparativeAnalysis(ComparativeAnalysisQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         ComparativeAnalysisDto result = mdcEfficiencyReportService.comparativeAnalysis(userId, vo);
@@ -77,7 +77,7 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼", notes = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼")
     @GetMapping("/dayUtilizationRate")
-    public Result dayUtilizationRate(DayUtilizationRateQueryVo vo) {
+    public Result<?> dayUtilizationRate(DayUtilizationRateQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         DayUtilizationRateDto result = mdcEfficiencyReportService.dayUtilizationRate(userId, vo);
@@ -86,7 +86,7 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼瀵规瘮", notes = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼瀵规瘮")
     @GetMapping("/dayUtilizationRateContrast")
-    public Result dayUtilizationRateContrast(DayUtilizationRateContrastQueryVo vo) {
+    public Result<?> dayUtilizationRateContrast(DayUtilizationRateContrastQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         DayUtilizationRateDto result = mdcEfficiencyReportService.dayUtilizationRateContrast(userId, vo);
@@ -95,7 +95,7 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囪蛋鍔垮垎鏋愬垪琛�", notes = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囪蛋鍔垮垎鏋愬垪琛�")
     @GetMapping("/utilizationRateTrendAnalyze")
-    public Result utilizationRateTrendAnalyze(DayUtilizationRateContrastQueryVo vo) {
+    public Result<?> utilizationRateTrendAnalyze(DayUtilizationRateContrastQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         MdcUtilizationRateDto result = mdcEfficiencyReportService.utilizationRateTrendAnalyze(userId, vo);
@@ -104,21 +104,21 @@
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垎娈靛垎鏋愬垪琛�", notes = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垎娈靛垎鏋愬垪琛�")
     @GetMapping("/utilizationRateSectionAnalyze")
-    public Result utilizationRateSectionAnalyze(DayUtilizationRateContrastQueryVo vo) {
+    public Result<?> utilizationRateSectionAnalyze(DayUtilizationRateContrastQueryVo vo) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         MdcUtilizationRateDto result = mdcEfficiencyReportService.utilizationRateSectionAnalyze(userId, vo);
         return Result.OK(result);
     }
 
-//    @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-缁煎悎鍒╃敤鐜囩粺璁″垎鏋�", notes = "璁惧鏁堢巼鎶ヨ〃-缁煎悎鍒╃敤鐜囩粺璁″垎鏋�")
-//    @GetMapping("/comprehensiveRayeAnalyze")
-//    public Result comprehensiveRayeAnalyze(DayUtilizationRateContrastQueryVo vo) {
-//        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-//        String userId = user.getId();
-//        MdcUtilizationRateDto result = mdcEfficiencyReportService.comprehensiveRayeAnalyze(userId, vo);
-//        return Result.OK(result);
-//    }
+    @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-缁煎悎鍒╃敤鐜囩粺璁″垎鏋�", notes = "璁惧鏁堢巼鎶ヨ〃-缁煎悎鍒╃敤鐜囩粺璁″垎鏋�")
+    @GetMapping("/comprehensiveRateAnalyze")
+    public Result<?> comprehensiveRateAnalyze(EquEffVo vo) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        Map<String, Object> result = mdcEfficiencyReportService.comprehensiveRateAnalyze(userId, vo);
+        return Result.OK(result);
+    }
 
     @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鐝粍缁煎悎鍒╃敤鐜囩粺璁″垎鏋�", notes = "璁惧鏁堢巼鎶ヨ〃-缁煎悎鍒╃敤鐜囩粺璁″垎鏋�")
     @GetMapping("/teamEfficiencyAnalyzeByMonth")
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComRateDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComRateDto.java
new file mode 100644
index 0000000..5c24398
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComRateDto.java
@@ -0,0 +1,34 @@
+package org.jeecg.modules.mdc.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author: Lius
+ * @CreateTime: 2025-03-31
+ * @Description:
+ */
+@Data
+public class ComRateDto {
+
+    private String theMonth;
+
+    /**
+     * 鍒╃敤鐜�
+     */
+    private BigDecimal utilizationRate = BigDecimal.ZERO;
+    /**
+     * 鐝鍒╃敤鐜�
+     */
+    private BigDecimal shiftUtilizationRate = BigDecimal.ZERO;
+    /**
+     * 淇鍒╃敤鐜�
+     */
+    private BigDecimal amendUtilizationRate = BigDecimal.ZERO;
+    /**
+     * 绱杩愯鏃堕暱
+     */
+    private BigDecimal processLong = BigDecimal.ZERO;
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftChildDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftChildDto.java
new file mode 100644
index 0000000..0389aab
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftChildDto.java
@@ -0,0 +1,16 @@
+package org.jeecg.modules.mdc.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author: Lius
+ * @CreateTime: 2025-03-31
+ * @Description:
+ */
+@Data
+public class ComShiftChildDto {
+    private String month;
+    private BigDecimal utilizationRate = BigDecimal.ZERO;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftDto.java
new file mode 100644
index 0000000..37858cf
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftDto.java
@@ -0,0 +1,16 @@
+package org.jeecg.modules.mdc.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: Lius
+ * @CreateTime: 2025-03-31
+ * @Description:
+ */
+@Data
+public class ComShiftDto {
+    private String shiftSubName;
+    private List<ComShiftChildDto> dataList;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftRateDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftRateDto.java
new file mode 100644
index 0000000..65fc778
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftRateDto.java
@@ -0,0 +1,33 @@
+package org.jeecg.modules.mdc.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author: Lius
+ * @CreateTime: 2025-03-31
+ * @Description:
+ */
+@Data
+public class ComShiftRateDto {
+
+    /**
+     * 褰撴湀
+     */
+    private String theMonth;
+    /**
+     * 鐝id
+     */
+    private String shiftSub;
+    /**
+     * 鐝鍚嶇О
+     */
+    private String shiftSubName;
+
+    /**
+     * 鍒╃敤鐜�
+     */
+    private BigDecimal utilizationRate = BigDecimal.ZERO;
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java
index 189a667..62877b1 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java
@@ -40,4 +40,8 @@
      * 澶╂暟
      */
     private BigDecimal dayNum;
+    /**
+     * 鐝id
+     */
+    private String shiftSubId;
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/UtilizationRateAvg.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/UtilizationRateAvg.java
deleted file mode 100644
index 5a4f7ad..0000000
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/UtilizationRateAvg.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.jeecg.modules.mdc.dto;
-
-/**
- * @Author: Lius
- * @CreateTime: 2025-03-28
- * @Description:
- */
-public class UtilizationRateAvg {
-}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java
index 8d63563..b313c87 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java
@@ -100,6 +100,18 @@
     @ApiModelProperty(value = "寮�鏈虹巼")
     private BigDecimal openRate;
     /**
+     * 鐝id
+     */
+    @Excel(name = "鐝id", width = 15)
+    @ApiModelProperty(value = "鐝id")
+    private String shiftSubId;
+    /**
+     * 缁熻绫诲瀷(1鎬� 2鍒嗙彮娆�)
+     */
+    @Excel(name = "缁熻绫诲瀷", width = 15)
+    @ApiModelProperty(value = "缁熻绫诲瀷")
+    private Integer shiftType;
+    /**
      * 鍒涘缓鏃堕棿
      */
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java
index 2749b4a..456f302 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto;
 import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfoMonth;
@@ -113,6 +114,7 @@
                     MdcEquipmentStatisticalShiftInfoMonth mdcEquipmentShiftInfoMonth = new MdcEquipmentStatisticalShiftInfoMonth();
                     mdcEquipmentShiftInfoMonth.setEquipmentId(mdcEquipment.getEquipmentId());
                     mdcEquipmentShiftInfoMonth.setTheMonth(date);
+                    mdcEquipmentShiftInfoMonth.setShiftType(CommonConstant.SHIFT_TYPE_1);
                     mdcEquipmentShiftInfoMonth.setCloseLong(mdcEquipmentShiftStatisticalDto.getCloseLong().intValue());
                     mdcEquipmentShiftInfoMonth.setTotalLong(mdcEquipmentShiftStatisticalDto.getTotalLong().intValue());
                     mdcEquipmentShiftInfoMonth.setOpenLong(mdcEquipmentShiftStatisticalDto.getOpenLong().intValue());
@@ -123,6 +125,26 @@
                     mdcEquipmentShiftInfoMonth.setStartRate(mdcEquipmentShiftStatisticalDto.getOpenLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getProcessLong().divide(mdcEquipmentShiftStatisticalDto.getOpenLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
                     mdcEquipmentShiftInfoMonth.setOpenRate(mdcEquipmentShiftStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getOpenLong().divide(mdcEquipmentShiftStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
                     mdcEquipmentStatisticalShiftInfoMonthList.add(mdcEquipmentShiftInfoMonth);
+                    // step.4 姹囨�诲悇鐝鍒╃敤鐜囨暟鎹�
+                    List<MdcEquipmentStatisticalDto> essdList = mdcEquipmentStatisticalShiftInfoService.findShiftByEquipmentAndMonth(mdcEquipment.getEquipmentId(), date);
+                    if (essdList != null && !essdList.isEmpty()) {
+                        for (MdcEquipmentStatisticalDto equipmentStatisticalDto : essdList) {
+                            MdcEquipmentStatisticalShiftInfoMonth equipmentStatisticalShiftInfoMonth = new MdcEquipmentStatisticalShiftInfoMonth();
+                            equipmentStatisticalShiftInfoMonth.setEquipmentId(mdcEquipment.getEquipmentId());
+                            equipmentStatisticalShiftInfoMonth.setTheMonth(date);
+                            equipmentStatisticalShiftInfoMonth.setShiftType(CommonConstant.SHIFT_TYPE_2);
+                            equipmentStatisticalShiftInfoMonth.setCloseLong(equipmentStatisticalDto.getCloseLong().intValue());
+                            equipmentStatisticalShiftInfoMonth.setTotalLong(equipmentStatisticalDto.getTotalLong().intValue());
+                            equipmentStatisticalShiftInfoMonth.setOpenLong(equipmentStatisticalDto.getOpenLong().intValue());
+                            equipmentStatisticalShiftInfoMonth.setErrorLong(equipmentStatisticalDto.getErrorLong().intValue());
+                            equipmentStatisticalShiftInfoMonth.setWaitLong(equipmentStatisticalDto.getWaitLong().intValue());
+                            equipmentStatisticalShiftInfoMonth.setProcessLong(equipmentStatisticalDto.getProcessLong().intValue());
+                            equipmentStatisticalShiftInfoMonth.setUtilizationRate(equipmentStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getProcessLong().divide(equipmentStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
+                            equipmentStatisticalShiftInfoMonth.setStartRate(equipmentStatisticalDto.getOpenLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getProcessLong().divide(equipmentStatisticalDto.getOpenLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
+                            equipmentStatisticalShiftInfoMonth.setOpenRate(equipmentStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getOpenLong().divide(equipmentStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
+                            mdcEquipmentStatisticalShiftInfoMonthList.add(equipmentStatisticalShiftInfoMonth);
+                        }
+                    }
                 }
             }
             if (!mdcEquipmentStatisticalInfoMonthList.isEmpty()) {
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java
index dcad1ab..29e764f 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java
@@ -1,14 +1,11 @@
 package org.jeecg.modules.mdc.mapper;
 
 import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.mdc.dto.MdcComAnaDto;
-import org.jeecg.modules.mdc.dto.MdcEfficiencyDto;
-import org.jeecg.modules.mdc.dto.TeamEquEffDto;
+import org.jeecg.modules.mdc.dto.*;
 import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
 import org.jeecg.modules.mdc.vo.ComparativeAnalysisQueryVo;
 import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo;
 import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo;
-import org.jeecg.modules.mdc.dto.EquipmentEfficiencyAnalyzeDto;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -56,4 +53,8 @@
     List<EquipmentEfficiencyAnalyzeDto> equipmentEfficiencyAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month);
 
     List<TeamEquEffDto> teamEquipmentEfficiencyAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month);
+
+    List<ComRateDto> comprehensiveRateAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String startStr, @Param("end") String endStr);
+
+    List<ComShiftRateDto> comprehensiveShiftRateAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String startStr, @Param("end") String endStr, @Param("shiftId") String shiftId);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
index f4443d6..29d3b52 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
@@ -6,6 +6,7 @@
 import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @author: LiuS
@@ -24,4 +25,6 @@
     BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
 
     MdcEquipmentStatisticalDto findByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date);
+
+    List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
index c706d61..b249fad 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
@@ -194,7 +194,7 @@
             t2.utilization_rate AS shiftUtilizationRate
         FROM
             mdc_equipment_statistical_info_month t1
-                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month
+                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month AND t2.shift_type = 1
                 AND t1.equipment_id = t2.equipment_id
                 LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id
         WHERE
@@ -214,7 +214,7 @@
             t2.utilization_rate AS shiftUtilizationRate
         FROM
             mdc_equipment_statistical_info_month t1
-                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month
+                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month AND t2.shift_type = 1
                 AND t1.equipment_id = t2.equipment_id
                 LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id
         WHERE
@@ -224,4 +224,51 @@
             </foreach>
             AND t1.the_month = #{month}
     </select>
+
+    <select id="comprehensiveRateAnalyze" resultType="org.jeecg.modules.mdc.dto.ComRateDto">
+        SELECT
+            t1.the_month AS theMonth,
+            AVG ( t1.utilization_rate ) AS utilizationRate,
+            AVG ( t2.utilization_rate ) AS shiftUtilizationRate,
+            SUM ( t1.process_long ) AS processLong
+        FROM
+            mdc_equipment_statistical_info_month t1
+                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month
+                AND t1.equipment_id = t2.equipment_id
+                AND t2.shift_type = 1
+                LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id
+        WHERE
+            t1.equipment_id IN
+            <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+            AND t1.the_month BETWEEN #{start} AND #{end}
+        GROUP BY
+            t1.the_month
+        ORDER BY
+            t1.the_month
+    </select>
+
+    <select id="comprehensiveShiftRateAnalyze" resultType="org.jeecg.modules.mdc.dto.ComShiftRateDto">
+        SELECT
+            t1.the_month AS theMonth,
+            t1.shift_sub AS shiftSub,
+            t2.shift_sub_name AS shiftSubName,
+            AVG ( t1.utilization_rate ) AS utilizationRate
+        FROM
+            mdc_equipment_statistical_shift_info_month t1
+                LEFT JOIN mdc_shift_sub t2 ON t1.shift_sub = t2.id
+        WHERE
+            t2.shift_id = #{shiftId}
+            AND t1.equipment_id IN
+            <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+            AND t1.the_month BETWEEN #{start} AND #{end}
+            AND t1.shift_type = 2
+        GROUP BY
+            t1.the_month,
+            t1.shift_sub,
+            t2.shift_sub_name
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
index b12976f..8378f85 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
@@ -25,10 +25,26 @@
             SUM(wait_long) waitLong,
             SUM(process_long) processLong,
             SUM(error_long) errorLong,
-            SUM ( total_long ) totalLong
+            SUM(total_long) totalLong
         FROM
             mdc_equipment_statistical_shift_info
         WHERE
             equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%')
     </select>
+
+    <select id="findShiftByEquipmentAndMonth" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto">
+        SELECT
+            shift_sub_id shiftSubId,
+            SUM(open_long) openLong,
+            SUM(close_long) closeLong,
+            SUM(wait_long) waitLong,
+            SUM(process_long) processLong,
+            SUM(error_long) errorLong,
+            SUM(total_long) totalLong
+        FROM
+            mdc_equipment_statistical_shift_info
+        WHERE
+            equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%')
+        GROUP BY shift_sub_id
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
index ff6bde6..e4ecca0 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
@@ -5,6 +5,7 @@
 import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @Description: 璁惧鍗曟棩鐝杩愯鏁版嵁琛�
@@ -30,4 +31,6 @@
     BigDecimal findSpindleRunDuration(String equipmentId, String validDate);
 
     MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date);
+
+    List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(String equipmentId, String date);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java
index cf688c3..1f3d8a2 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java
@@ -109,4 +109,6 @@
     Map<String, Object> teamEquipmentEfficiencyAnalyze(String userId, EquEffVo equEffVo);
 
     Map<String, Object> teamEfficiencyAnalyzeByMonth(String userId, EquEffVo equEffVo);
+
+    Map<String, Object> comprehensiveRateAnalyze(String userId, EquEffVo vo);
 }
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 8733675..631c938 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
@@ -1931,6 +1931,129 @@
         return result;
     }
 
+    @Override
+    public Map<String, Object> comprehensiveRateAnalyze(String userId, EquEffVo vo) {
+        Map<String, Object> result = new HashMap<>();
+        // 1. 鏃ユ湡澶勭悊
+        LocalDate now = LocalDate.now();
+        Date start = DateUtils.toDate(now.plusMonths(-12).toString(), DateUtils.STR_DATE);
+        Date end = DateUtils.toDate(now.plusMonths(-1).toString(), DateUtils.STR_DATE);
+
+        List<String> monthBetween = DateUtils.getMonthBetween(start, end);
+        List<String> dateList = monthBetween.stream()
+                .map(date -> date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "鏈�")
+                .collect(Collectors.toList());
+        result.put("dateList", dateList);
+
+        // 1. 澶勭悊鐢熶骇ID
+        List<String> mdcProductionIds = StringUtils.isBlank(vo.getProductionIds())
+                ? Collections.singletonList(vo.getProductionId())
+                : Arrays.asList(vo.getProductionIds().split(","));
+
+        List<String> allProductionIds = mdcProductionService.findChildren(mdcProductionIds);
+        if (allProductionIds.isEmpty()) {
+            return result; // 鎻愬墠杩斿洖绌虹粨鏋�
+        }
+        //鏁版嵁鏉冮檺杩囨护
+        allProductionIds = mdcProductionService.findProIdsByUId(userId, allProductionIds);
+        // 2. 鑾峰彇璁惧鍒楄〃
+        List<MdcEquipment> equipmentList = StringUtils.isNotBlank(vo.getEquipmentType())
+                ? mdcEquipmentService.findByProIdsAndType(allProductionIds, Arrays.asList(vo.getEquipmentType().split(",")))
+                : mdcEquipmentService.findByProductionIds(allProductionIds);
+
+        if (equipmentList.isEmpty()) {
+            return result;
+        }
+
+        // 3. 鏁版嵁澶勭悊
+        List<String> equipmentIdList = equipmentList.stream()
+                .map(MdcEquipment::getEquipmentId)
+                .collect(Collectors.toList());
+        String startStr = monthBetween.get(0).replaceAll("-", "");
+        String endStr = monthBetween.get(monthBetween.size() - 1).replaceAll("-", "");
+        List<ComRateDto> comRateDtoList = mdcEfficiencyReportMapper.comprehensiveRateAnalyze(equipmentIdList, startStr, endStr);
+        if (comRateDtoList.isEmpty()) {
+            return result; // 鎻愬墠杩斿洖绌虹粨鏋�
+        }
+        List<ComRateDto> dataList = new ArrayList<>();
+        Map<String, ComRateDto> map = comRateDtoList.stream().collect(Collectors.toMap(ComRateDto::getTheMonth, comRateDto -> comRateDto));
+        monthBetween.forEach(date -> {
+            String d = date.replaceAll("-", "");
+            String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "鏈�";
+            if (map.containsKey(d)) {
+                ComRateDto comRateDto = map.get(d);
+                comRateDto.setTheMonth(month);
+                comRateDto.setUtilizationRate(comRateDto.getUtilizationRate().setScale(2, RoundingMode.HALF_UP));
+                comRateDto.setShiftUtilizationRate(comRateDto.getShiftUtilizationRate() != null ? comRateDto.getShiftUtilizationRate().setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO);
+                comRateDto.setAmendUtilizationRate(comRateDto.getAmendUtilizationRate().setScale(2, RoundingMode.HALF_UP));
+                comRateDto.setProcessLong(comRateDto.getProcessLong().divide(new BigDecimal("3600"), 2, RoundingMode.HALF_UP));
+                dataList.add(comRateDto);
+            } else {
+                ComRateDto comRateDto = new ComRateDto();
+                comRateDto.setTheMonth(month);
+                dataList.add(comRateDto);
+            }
+        });
+        result.put("dataList", dataList);
+
+        if (StringUtils.isNotBlank(vo.getShiftId())) {
+            List<MdcShiftSub> shiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getShiftId, vo.getShiftId()));
+            if (shiftSubList == null || shiftSubList.isEmpty()) {
+                return result;
+            }
+            List<String> shiftSubNameList = shiftSubList.stream().map(MdcShiftSub::getShiftSubName).collect(Collectors.toList());
+            result.put("shiftSubList", shiftSubNameList);
+
+            List<ComShiftRateDto> comShiftRateDtoList = mdcEfficiencyReportMapper.comprehensiveShiftRateAnalyze(equipmentIdList, startStr, endStr, vo.getShiftId());
+            Map<String, List<ComShiftRateDto>> groupMap;
+            if (comShiftRateDtoList != null && !comShiftRateDtoList.isEmpty()) {
+                groupMap = comShiftRateDtoList.stream().collect(Collectors.groupingBy(ComShiftRateDto::getShiftSub));
+            } else {
+                groupMap = new HashMap<>();
+            }
+            List<ComShiftDto> shiftDataList = new ArrayList<>();
+            shiftSubList.forEach(mdcShiftSub -> {
+                ComShiftDto comShiftDto = new ComShiftDto();
+                comShiftDto.setShiftSubName(mdcShiftSub.getShiftSubName());
+                if (groupMap.containsKey(mdcShiftSub.getId())) {
+                    List<ComShiftRateDto> csrd = groupMap.get(mdcShiftSub.getId());
+                    Map<String, ComShiftRateDto> collect = csrd.stream().collect(Collectors.toMap(ComShiftRateDto::getTheMonth, comShiftRateDto -> comShiftRateDto));
+                    List<ComShiftChildDto> comShiftChildDtoList = new ArrayList<>();
+                    monthBetween.forEach(date -> {
+                        String d = date.replaceAll("-", "");
+                        String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "鏈�";
+                        if (collect.containsKey(d)) {
+                            ComShiftRateDto comShiftRateDto = collect.get(d);
+                            ComShiftChildDto comShiftChildDto = new ComShiftChildDto();
+                            comShiftChildDto.setMonth(month);
+                            comShiftChildDto.setUtilizationRate(comShiftRateDto.getUtilizationRate().setScale(2, RoundingMode.HALF_UP));
+                            comShiftChildDtoList.add(comShiftChildDto);
+                        } else {
+                            ComShiftChildDto comShiftChildDto = new ComShiftChildDto();
+                            comShiftChildDto.setMonth(month);
+                            comShiftChildDtoList.add(comShiftChildDto);
+                        }
+                    });
+                    comShiftDto.setDataList(comShiftChildDtoList);
+                } else {
+                    List<ComShiftChildDto> comShiftChildDtoList = new ArrayList<>();
+                    monthBetween.forEach(date -> {
+                        String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "鏈�";
+                        ComShiftChildDto comShiftChildDto = new ComShiftChildDto();
+                        comShiftChildDto.setMonth(month);
+                        comShiftChildDtoList.add(comShiftChildDto);
+                    });
+                    comShiftDto.setDataList(comShiftChildDtoList);
+                }
+                shiftDataList.add(comShiftDto);
+            });
+
+            result.put("shiftDataList", shiftDataList);
+        }
+
+        return result;
+    }
+
     // 鎻愬彇鐨勫钩鍧囧�艰绠楁柟娉�
     private TeamEquEffDto calculateAverages(List<TeamEquEffDto> items) {
         BigDecimal size = new BigDecimal(items.size());
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
index b1051a3..1dc422a 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -99,6 +99,11 @@
         return this.baseMapper.findByEquipmentAndMonth(equipmentId, date);
     }
 
+    @Override
+    public List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(String equipmentId, String date) {
+        return this.baseMapper.findShiftByEquipmentAndMonth(equipmentId, date);
+    }
+
     @Transactional(readOnly = true)
     public List<MdcEquipmentStatisticalShiftInfo> equipmentShiftStatisticalProcess(Equipment equipment, String dateTime) {
         Date initDate = null;
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquEffVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquEffVo.java
index 70b0175..70a00c7 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquEffVo.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquEffVo.java
@@ -23,6 +23,14 @@
      */
     private String teamCodes;
     /**
+     * 璁惧绫诲瀷
+     */
+    private String equipmentType;
+    /**
+     * 鐝埗id
+     */
+    private String shiftId;
+    /**
      * 鏈堜唤
      */
     private String month;

--
Gitblit v1.9.3