From e331906c3191f012deb28ee18384a7087d987687 Mon Sep 17 00:00:00 2001
From: qushaowei <qushaowei@163.com>
Date: 星期三, 22 十一月 2023 19:16:57 +0800
Subject: [PATCH] Merge branch 'master' of http://117.34.109.166:18448/r/mdc_430 into develop

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java             |    5 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java            |   20 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java                     |   28 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java                       |   53 +++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOverallEquipmentEfficiencyMapper.java               |   14 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java                |   10 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOvertimeService.java                     |    3 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOvertimeMapper.java                        |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java                                      |   10 -
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java                        |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml                        |   12 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml            |   48 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml                     |    1 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java         |    3 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcWorkshopInfo.java                                   |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java                           |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java                     |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOverallEquipmentEfficiencyController.java       |   62 ++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml         |    1 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java                             |    3 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java    |  233 +++++++++++++---------
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java                                     |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java            |    2 
 24 files changed, 402 insertions(+), 140 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java
index 231bbd5..d727367 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java
@@ -51,4 +51,10 @@
      */
     public static final String OTHER_REST = "浼戞伅鐢ㄩ,棰勯槻鎬х淮淇�";
 
+    public static final String DAY = "澶�";
+
+    public static final String WEEK = "鍛�";
+
+    public static final String MONTH = "鏈�";
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOverallEquipmentEfficiencyController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOverallEquipmentEfficiencyController.java
new file mode 100644
index 0000000..7d16641
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOverallEquipmentEfficiencyController.java
@@ -0,0 +1,62 @@
+package org.jeecg.modules.mdc.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency;
+import org.jeecg.modules.mdc.service.IMdcOverallEquipmentEfficiencyService;
+import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @Description: OEE璁惧缁煎悎鏁堢巼琛�
+ * @Author: Lius
+ * @Date: 2023-11-13
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "OEE璁惧缁煎悎鏁堢巼琛�")
+@RestController
+@RequestMapping("/mdc/mdcOverallEquipmentEfficiency")
+public class MdcOverallEquipmentEfficiencyController extends JeecgController<MdcOverallEquipmentEfficiency, IMdcOverallEquipmentEfficiencyService> {
+
+    @Resource
+    private IMdcOverallEquipmentEfficiencyService mdcOverallEquipmentEfficiencyService;
+
+    /**
+     *
+     * @param mdcOverallEquipmentEfficiencyVo
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "OEE璁惧缁煎悎鏁堢巼琛�-鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "OEE璁惧缁煎悎鏁堢巼琛�-鍒嗛〉鍒楄〃鏌ヨ", notes = "OEE璁惧缁煎悎鏁堢巼琛�-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping("/list")
+    public Result queryPageList(MdcOverallEquipmentEfficiencyVo mdcOverallEquipmentEfficiencyVo,
+                                @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                HttpServletRequest req) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        Page<MdcOverallEquipmentEfficiency> page = new Page<MdcOverallEquipmentEfficiency>(pageNo, pageSize);
+        IPage<MdcOverallEquipmentEfficiency> pageList = mdcOverallEquipmentEfficiencyService.pageList(userId, page, mdcOverallEquipmentEfficiencyVo, req);
+        return Result.OK(pageList);
+    }
+
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java
index e84fcfd..7464415 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java
@@ -121,16 +121,6 @@
     @Excel(name = "璁惧鍔熺巼", width = 15)
     @ApiModelProperty(value = "璁惧鍔熺巼")
     private String devicePower;
-    /**
-     * 鍧愭爣-宸�
-     */
-    @ApiModelProperty(value = "鍧愭爣-宸�")
-    private Integer coordinateLeft;
-    /**
-     * 鍧愭爣-涓�
-     */
-    @ApiModelProperty(value = "鍧愭爣-涓�")
-    private Integer coordinateTop;
 
     /**閮ㄩ棬鍚嶇О*/
     private transient String orgCodeTxt;
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java
index 3f82318..0736092 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java
@@ -50,10 +50,10 @@
     @ApiModelProperty(value = "鏈夋晥鏃ユ湡")
     private String validDate;
     /**
-     * 鐝id
+     * 鐝
      */
-    @ApiModelProperty(value = "鐝id")
-    private String shiftSubId;
+    @ApiModelProperty(value = "鐝")
+    private String shift;
     /**
      * 姣忕彮灏忔椂
      */
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcWorkshopInfo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcWorkshopInfo.java
index 2370922..870b590 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcWorkshopInfo.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcWorkshopInfo.java
@@ -39,5 +39,11 @@
     @Excel(name = "鑳屾櫙鍥�", width = 15)
     @ApiModelProperty(value = "鑳屾櫙鍥�")
     private String backgroundImage;
+    /**
+     * 璁惧缂栧彿棰滆壊
+     */
+    @ApiModelProperty(value = "璁惧缂栧彿棰滆壊")
+    private String equipmentIdColor;
+
 
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java
index 92246e7..a427f8c 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java
@@ -23,9 +23,9 @@
 
     List<MdcDeviceCalendarVo> findAcquiesceShift();
 
-    List<String> computeActualWorkDayCount(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
+    List<String> computeActualWorkDayCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
 
     List<String> findShiftSort(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
 
-    Integer computeShiftTimeCount(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
+    Integer computeShiftTimeCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOvertimeMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOvertimeMapper.java
index 321ef29..ae71368 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOvertimeMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOvertimeMapper.java
@@ -40,5 +40,5 @@
      * @param validDate
      * @return
      */
-    List<MdcEquipmentOvertime> computeOvertime(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
+    List<MdcEquipmentOvertime> computeOvertime(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
 }
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 2723cde..2bdddbe 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
@@ -20,5 +20,5 @@
      */
     MdcEquipmentStatisticalShiftInfo getMaxStaticsData(@Param("equipmentId") String equipmentid);
 
-    BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate, @Param("shiftSubId") String shiftSubId);
+    BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOverallEquipmentEfficiencyMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOverallEquipmentEfficiencyMapper.java
index ffc1042..a6de59d 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOverallEquipmentEfficiencyMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOverallEquipmentEfficiencyMapper.java
@@ -1,11 +1,25 @@
 package org.jeecg.modules.mdc.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency;
+import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo;
 
 /**
  * @author Lius
  * @date 2023/11/3 14:29
  */
 public interface MdcOverallEquipmentEfficiencyMapper extends BaseMapper<MdcOverallEquipmentEfficiency> {
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param page
+     * @param mdcOverallEquipmentEfficiencyVo
+     * @return
+     */
+    IPage<MdcOverallEquipmentEfficiency> pageList(Page<MdcOverallEquipmentEfficiency> page, @Param("mdcOverallEquipmentEfficiency") MdcOverallEquipmentEfficiencyVo mdcOverallEquipmentEfficiencyVo);
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
index 6131c89..b2af396 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
@@ -93,18 +93,17 @@
         WHERE
             effective_date LIKE CONCAT(#{ validDate }, '%')
             AND equipment_id = #{ equipmentId }
-            AND shift_sub_id = #{ shiftSubId }
     </select>
 
     <!--鏌ヨ鐝鍒嗙被-->
     <select id="findShiftSort" resultType="java.lang.String">
-        SELECT
-            DISTINCT shift_sub_id
+        SELECT DISTINCT
+            t2.shift_name
         FROM
-            mdc_device_calendar
+            mdc_device_calendar t1 LEFT JOIN mdc_shift t2 ON t1.shift_id = t2.id
         WHERE
-            effective_date LIKE CONCAT(#{ validDate }, '%')
-            AND equipment_id = #{ equipmentId }
+            t1.effective_date LIKE CONCAT(#{ validDate }, '%')
+            AND t1.equipment_id = #{ equipmentId }
     </select>
 
     <!--鏌ヨ鐝鏁伴噺-->
@@ -116,7 +115,6 @@
         WHERE
             effective_date LIKE CONCAT(#{ validDate }, '%')
             AND equipment_id = #{ equipmentId }
-            AND shift_sub_id = #{ shiftSubId }
     </select>
 
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
index 686c7f3..a528b02 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
@@ -88,6 +88,5 @@
         WHERE
             mdc.effective_date LIKE CONCAT(#{ validDate }, '%')
             AND mdc.equipment_id = #{ equipmentId }
-            AND mdc.shift_sub_id = #{ shiftSubId }
     </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 f016ab5..97acaba 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
@@ -15,7 +15,6 @@
             mdc_equipment_statistical_shift_info
         WHERE
             equipment_id = #{ equipmentId }
-            AND shift_sub_id = #{ shiftSubId }
             AND the_date LIKE CONCAT(#{ validDate },'%')
     </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml
index 6e4a36c..7e17582 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml
@@ -2,4 +2,52 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.mdc.mapper.MdcOverallEquipmentEfficiencyMapper">
 
+    <!--鍒嗛〉鍒楄〃-->
+    <select id="pageList" resultType="org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency">
+        SELECT
+            t1.id,
+            t1.equipment_id,
+            t1.equipment_name,
+            t1.equipment_model,
+            t1.valid_date,
+            t1.shift,
+            t1.shift_time_count,
+            t1.overtime,
+            t1.actual_work_day_count,
+            t1.month_actual_work_day_time_count,
+            t1.breakdown_down_duration,
+            t1.conversion_debug_duration,
+            t1.material_shortage_duration,
+            t1.planned_task_duration,
+            t1.inspect_duration,
+            t1.other_duration,
+            t1.planned_maintenance_duration,
+            t1.conference_training_duration,
+            t1.other_rest_duration,
+            t1.load_time,
+            t1.time_actuation_rate,
+            t1.process_quantity,
+            t1.standard_process_duration,
+            t1.performance_rate,
+            t1.unqualified_quantity,
+            t1.pass_rate,
+            t1.overall_equipment_efficiency,
+            t1.create_by,
+            t1.create_time,
+            t1.update_by,
+            t1.update_time
+        FROM
+            mdc_overall_equipment_efficiency t1
+        <where>
+            <if test="mdcOverallEquipmentEfficiency.startTime != null and mdcOverallEquipmentEfficiency.startTime != '' and mdcOverallEquipmentEfficiency.endTime != null and mdcOverallEquipmentEfficiency.endTime != ''">
+                AND t1.valid_date BETWEEN #{ mdcOverallEquipmentEfficiency.startTime } AND #{ mdcOverallEquipmentEfficiency.endTime }
+            </if>
+            <if test="mdcOverallEquipmentEfficiency.equipmentIdList != null and mdcOverallEquipmentEfficiency.equipmentIdList.size() > 0 ">
+                AND t1.equipment_id IN
+                <foreach collection="mdcOverallEquipmentEfficiency.equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
+                    #{ id }
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java
index 4c2ce4a..54a6c0d 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java
@@ -41,12 +41,11 @@
     /**
      * 璁$畻瀹為檯鐝骇澶╂暟
      *
-     * @param shiftSubId
      * @param equipmentId
      * @param validDate
      * @return
      */
-    BigDecimal computeActualWorkDayCount(String shiftSubId, String equipmentId, String validDate);
+    BigDecimal computeActualWorkDayCount(String equipmentId, String validDate);
 
     /**
      * 鏌ヨ鐝鍒嗙被
@@ -60,12 +59,11 @@
     /**
      * 璁$畻鐝鏃堕棿
      *
-     * @param shiftSubId
      * @param equipmentId
      * @param validDate
      * @return
      */
-    BigDecimal computeShiftTimeCount(String shiftSubId, String equipmentId, String validDate);
+    BigDecimal computeShiftTimeCount(String equipmentId, String validDate);
 
     /**
      * 鐢熸垚璁惧宸ヤ綔鏃ュ巻
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOvertimeService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOvertimeService.java
index f8991b6..33f0763 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOvertimeService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOvertimeService.java
@@ -41,10 +41,9 @@
     /**
      * 璁$畻鍔犵彮鏃堕棿
      *
-     * @param shiftSubId
      * @param equipmentId
      * @param validDate
      * @return
      */
-    BigDecimal computeOvertime(String shiftSubId, String equipmentId, String validDate);
+    BigDecimal computeOvertime(String equipmentId, String validDate);
 }
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 c3048e1..cc1b424 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
@@ -24,9 +24,8 @@
      *
      * @param equipmentId
      * @param validDate
-     * @param shiftSubId
      * @return
      */
-    BigDecimal findSpindleRunDuration(String equipmentId, String validDate, String shiftSubId);
+    BigDecimal findSpindleRunDuration(String equipmentId, String validDate);
 
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java
index 2f9385e..14c284b 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java
@@ -1,14 +1,32 @@
 package org.jeecg.modules.mdc.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency;
+import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo;
+
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * @author: LiuS
  * @create: 2023-10-18 09:25
  */
-public interface IMdcOverallEquipmentEfficiencyService {
+public interface IMdcOverallEquipmentEfficiencyService extends IService<MdcOverallEquipmentEfficiency> {
 
     /**
      * 璁$畻璁惧缁煎悎鏁堢巼OEE
      */
     void runningOverallEquipmentEfficiency();
 
+    /**
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param userId
+     * @param page
+     * @param mdcOverallEquipmentEfficiencyVo
+     * @param req
+     * @return
+     */
+    IPage<MdcOverallEquipmentEfficiency> pageList(String userId, Page<MdcOverallEquipmentEfficiency> page, MdcOverallEquipmentEfficiencyVo mdcOverallEquipmentEfficiencyVo, HttpServletRequest req);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java
index 66b9981..d2b83ed 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.mdc.entity.MdcPlanClose;
 
+import java.math.BigDecimal;
+
 /**
  * @Description: mdc璁″垝鍋滄満缁存姢琛�
  * @Author: Lius
@@ -11,4 +13,5 @@
  */
 public interface IMdcPlanCloseService extends IService<MdcPlanClose> {
 
+    BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
index 06d005d..89dc713 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
@@ -146,15 +146,14 @@
     /**
      * 璁$畻瀹為檯鐝骇澶╂暟
      *
-     * @param shiftSubId
      * @param equipmentId
      * @param validDate
      * @return
      */
     @Override
-    public BigDecimal computeActualWorkDayCount(String shiftSubId, String equipmentId, String validDate) {
+    public BigDecimal computeActualWorkDayCount(String equipmentId, String validDate) {
         validDate = validDate.replaceAll("-", "");
-        List<String> validDateList = this.baseMapper.computeActualWorkDayCount(shiftSubId, equipmentId, validDate);
+        List<String> validDateList = this.baseMapper.computeActualWorkDayCount(equipmentId, validDate);
         return new BigDecimal(validDateList.size());
     }
 
@@ -174,14 +173,13 @@
     /**
      * 璁$畻鐝鏃堕棿
      *
-     * @param shiftSubId
      * @param equipmentId
      * @param validDate
      * @return
      */
     @Override
-    public BigDecimal computeShiftTimeCount(String shiftSubId, String equipmentId, String validDate) {
-        Integer shiftCount = this.baseMapper.computeShiftTimeCount(shiftSubId, equipmentId, validDate);
+    public BigDecimal computeShiftTimeCount(String equipmentId, String validDate) {
+        Integer shiftCount = this.baseMapper.computeShiftTimeCount(equipmentId, validDate);
         return new BigDecimal(shiftCount).multiply(new BigDecimal("8")).multiply(new BigDecimal("60"));
     }
 
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java
index b5a1eb8..f2ff16d 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java
@@ -132,14 +132,13 @@
     /**
      * 璁$畻鍔犵彮鏃堕棿锛堝垎閽燂級
      *
-     * @param shiftSubId
      * @param equipmentId
      * @param validDate
      * @return
      */
     @Override
-    public BigDecimal computeOvertime(String shiftSubId, String equipmentId, String validDate) {
-        List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(shiftSubId, equipmentId, validDate);
+    public BigDecimal computeOvertime(String equipmentId, String validDate) {
+        List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(equipmentId, validDate);
         BigDecimal result = new BigDecimal("0");
         if (list != null && !list.isEmpty()) {
             for (MdcEquipmentOvertime equipmentOvertime : list) {
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 a24c990..6e1a082 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
@@ -84,9 +84,9 @@
      * @return
      */
     @Override
-    public BigDecimal findSpindleRunDuration(String equipmentId, String validDate, String shiftSubId) {
+    public BigDecimal findSpindleRunDuration(String equipmentId, String validDate) {
         validDate = validDate.replaceAll("-", "");
-        BigDecimal duration = this.baseMapper.findSpindleRunDuration(equipmentId, validDate, shiftSubId);
+        BigDecimal duration = this.baseMapper.findSpindleRunDuration(equipmentId, validDate);
         if (duration != null && duration.compareTo(BigDecimal.ZERO) != 0) {
             return duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP);
         } else {
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
index c7a87ab..60c496c 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
@@ -1,20 +1,26 @@
 package org.jeecg.modules.mdc.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.modules.mdc.constant.MdcConstant;
 import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency;
 import org.jeecg.modules.mdc.entity.MdcStandardProcessDuration;
 import org.jeecg.modules.mdc.mapper.MdcOverallEquipmentEfficiencyMapper;
 import org.jeecg.modules.mdc.service.*;
+import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.YearMonth;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -70,118 +76,157 @@
         List<MdcEquipment> equipmentList = mdcEquipmentService.list();
         for (MdcEquipment mdcEquipment : equipmentList) {
             String equipmentId = mdcEquipment.getEquipmentId();
-            // 鏌ヨ鐝鍒嗙被
+
+            MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency = new MdcOverallEquipmentEfficiency();
+            // 鏃堕棿寮�鍔ㄧ巼璁$畻
+            mdcOverallEquipmentEfficiency.setEquipmentId(equipmentId);
+            mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName());
+            mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel());
+            mdcOverallEquipmentEfficiency.setValidDate(validDate);
+
+            // 鏌ヨ鐝埗鍒嗙被
             List<String> shiftSubIdList = mdcDeviceCalendarService.findShiftSort(equipmentId, validDate);
+            if (shiftSubIdList != null && !shiftSubIdList.isEmpty()) {
+                String shift = String.join(",", shiftSubIdList);
+                mdcOverallEquipmentEfficiency.setShift(shift);
+            }
+
+            BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(equipmentId, validDate);
+            mdcOverallEquipmentEfficiency.setShiftTimeCount(shiftTimeCount);
+
+            // 璁$畻鍔犵彮鏃堕棿
+            BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(equipmentId, validDate);
+            mdcOverallEquipmentEfficiency.setOvertime(overtime);
+
+            // 璁$畻瀹為檯鐝骇澶╂暟
+            BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(equipmentId, validDate);
+            mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount);
+
+            // 鏈堝害瀹為檯鐝骇鎬绘椂闂�(鍒嗛挓)
+            mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime));
+
             // 鏁呴殰鍋滄満鏃堕暱缁熻(鍒嗛挓)
             BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN);
+            mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration);
             // 鎹㈠瀷璋冭瘯鏃堕暱缁熻(鍒嗛挓)
             BigDecimal conversionDebugDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.CONVERSION_DEBUG);
+            mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration);
             // 鐗╂枡鐭己鏃堕暱缁熻(鍒嗛挓)
             BigDecimal materialShortageDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.MATERIAL_SHORTAGE);
+            mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration);
             // 璁″垝绛変换鍔℃椂闀跨粺璁�(鍒嗛挓)
             BigDecimal plannedTaskDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.PLANNED_TASK);
+            mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration);
             // 妫�楠屾椂闀跨粺璁�(鍒嗛挓)
             BigDecimal inspectDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.INSPECT);
+            mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration);
             // 鍏朵粬鏃堕暱缁熻(鍒嗛挓)
             BigDecimal otherDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.OTHER);
+            mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration);
             // 璁″垝淇濆吇鏃堕暱缁熻(鍒嗛挓)
-            BigDecimal plannedMaintenanceDuration = new BigDecimal("0");
+            BigDecimal plannedMaintenanceDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE);
+            mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration);
             // 浼氳/鍩硅鏃堕暱缁熻(鍒嗛挓)
-            BigDecimal conferenceTrainingDuration = new BigDecimal("0");
+            BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING);
+            mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration);
             // 鍏跺畠浼戞伅鏃堕暱缁熻(鍒嗛挓)
-            BigDecimal otherRestDuration = new BigDecimal("0");
-            if (shiftSubIdList != null && !shiftSubIdList.isEmpty()) {
-                for (String shiftSubId : shiftSubIdList) {
-                    MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency = new MdcOverallEquipmentEfficiency();
-                    // 鏃堕棿寮�鍔ㄧ巼璁$畻
-                    mdcOverallEquipmentEfficiency.setEquipmentId(equipmentId);
-                    mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName());
-                    mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel());
-                    mdcOverallEquipmentEfficiency.setValidDate(validDate);
-                    // 鐝  鐝鏃堕棿
-                    mdcOverallEquipmentEfficiency.setShiftSubId(shiftSubId);
-                    BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(shiftSubId, equipmentId, validDate);
-                    mdcOverallEquipmentEfficiency.setShiftTimeCount(shiftTimeCount);
-                    // 璁$畻鍔犵彮鏃堕棿
-                    BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(shiftSubId, equipmentId, validDate);
-                    mdcOverallEquipmentEfficiency.setOvertime(overtime);
-                    // 璁$畻瀹為檯鐝骇澶╂暟
-                    BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(shiftSubId, equipmentId, validDate);
-                    mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount);
-                    // 鏈堝害瀹為檯鐝骇鎬绘椂闂�(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime));
-                    // 鏁呴殰鍋滄満鏃堕暱缁熻(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration);
-                    // 鎹㈠瀷璋冭瘯鏃堕暱缁熻(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration);
-                    // 鐗╂枡鐭己鏃堕暱缁熻(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration);
-                    // 璁″垝绛変换鍔℃椂闀跨粺璁�(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration);
-                    // 妫�楠屾椂闀跨粺璁�(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration);
-                    // 鍏朵粬鏃堕暱缁熻(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration);
-                    // 璁″垝淇濆吇鏃堕暱缁熻(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration);
-                    // 浼氳/鍩硅鏃堕暱缁熻(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration);
-                    // 鍏跺畠浼戞伅鏃堕暱缁熻(鍒嗛挓)
-                    mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration);
-                    /*
-                        璐熻嵎鏃堕棿(灏忔椂) = 宸ヤ綔鏃ュ巻鏃堕棿 - 璁″垝鍋滄満鏃堕棿
-                        宸ヤ綔鏃ュ巻鏃堕棿 = 鏃ュ巻鏃堕棿 - 娉曞畾鍋囨棩 - 鍙屼紤鏃� + 鍔犵彮鏃堕棿
-                        璁″垝鍋滄満鏃堕棿 = 璁″垝淇濆吇鏃堕暱 + 浼氳/鍩硅鏃堕暱 + 浼氳/鍩硅鏃堕暱
-                     */
-                    // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration
-                    // 璐熻嵎鏃堕棿(鍒嗛挓)
-                    BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration);
-                    mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP));
-                    // 鏃堕棿寮�鍔ㄧ巼
-                    BigDecimal timeActuationRate = BigDecimal.ZERO;
-                    if (loadTime.compareTo(BigDecimal.ZERO) == 0) {
-                        mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO);
-                    } else {
-                        timeActuationRate = (loadTime.subtract(breakdownDownDuration).subtract(conversionDebugDuration).subtract(materialShortageDuration).subtract(plannedTaskDuration).subtract(inspectDuration).subtract(otherDuration)).divide(loadTime, 4, RoundingMode.HALF_UP);
-                        mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate);
-                    }
-                    // 鍔犲伐闆朵欢鏁�(浠�)  processQuantity
-                    BigDecimal processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate);
-                    mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity);
-                    // 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)
-                    MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId));
-                    if (mdcStandardProcessDuration != null) {
-                        mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity));
-                    } else {
-                        mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO);
-                    }
-
-                    // 鎬ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿
-                    // 鏌ヨ涓昏酱杩愯鏃堕棿(鍒嗛挓)
-                    BigDecimal spindleRunDuration  = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate, shiftSubId);
-                    if (spindleRunDuration.compareTo(BigDecimal.ZERO) != 0) {
-                        mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP));
-                    } else {
-                        mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO);
-                    }
-                    // 搴熷搧鏁� unqualifiedQuantity
-                    BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate);
-                    mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity);
-                    // 鍚堟牸鐜�
-                    if (processQuantity.compareTo(BigDecimal.ZERO) == 0) {
-                        mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE);
-                    } else {
-                        mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP));
-                    }
-                    // 璁惧缁煎悎鏁堢巼 = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼
-                    mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()));
-                    if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) {
-                        mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE);
-                    }
-                    result.add(mdcOverallEquipmentEfficiency);
-                }
+            BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST);
+            mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration);
+            /*
+                璐熻嵎鏃堕棿(灏忔椂) = 宸ヤ綔鏃ュ巻鏃堕棿 - 璁″垝鍋滄満鏃堕棿
+                宸ヤ綔鏃ュ巻鏃堕棿 = 鏃ュ巻鏃堕棿 - 娉曞畾鍋囨棩 - 鍙屼紤鏃� + 鍔犵彮鏃堕棿
+                璁″垝鍋滄満鏃堕棿 = 璁″垝淇濆吇鏃堕暱 + 浼氳/鍩硅鏃堕暱 + 浼氳/鍩硅鏃堕暱
+             */
+            // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration
+            // 璐熻嵎鏃堕棿(鍒嗛挓)
+            BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration);
+            mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP));
+            // 鏃堕棿寮�鍔ㄧ巼
+            BigDecimal timeActuationRate = BigDecimal.ZERO;
+            if (loadTime.compareTo(BigDecimal.ZERO) == 0) {
+                mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO);
+            } else {
+                timeActuationRate = (loadTime.subtract(breakdownDownDuration).subtract(conversionDebugDuration).subtract(materialShortageDuration).subtract(plannedTaskDuration).subtract(inspectDuration).subtract(otherDuration)).divide(loadTime, 4, RoundingMode.HALF_UP);
+                mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate);
             }
+            // 鍔犲伐闆朵欢鏁�(浠�)  processQuantity
+            BigDecimal processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate);
+            mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity);
+            // 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)
+            MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId));
+            if (mdcStandardProcessDuration != null) {
+                mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity));
+            } else {
+                mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO);
+            }
+
+            // 鎬ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿
+            // 鏌ヨ涓昏酱杩愯鏃堕棿(鍒嗛挓)
+            BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate);
+            if (loadTime.compareTo(BigDecimal.ZERO) != 0) {
+                mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP));
+            } else {
+                mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO);
+            }
+            // 搴熷搧鏁� unqualifiedQuantity
+            BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate);
+            mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity);
+            // 鍚堟牸鐜�
+            if (processQuantity.compareTo(BigDecimal.ZERO) == 0) {
+                mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE);
+            } else {
+                mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP));
+            }
+            // 璁惧缁煎悎鏁堢巼 = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼
+            mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()));
+            if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) {
+                mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE);
+            }
+            result.add(mdcOverallEquipmentEfficiency);
+
         }
         super.saveBatch(result);
     }
+
+    /**
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param userId
+     * @param page
+     * @param mdcOverallEquipmentEfficiencyVo
+     * @param req
+     * @return
+     */
+    @Override
+    public IPage<MdcOverallEquipmentEfficiency> pageList(String userId, Page<MdcOverallEquipmentEfficiency> page, MdcOverallEquipmentEfficiencyVo mdcOverallEquipmentEfficiencyVo, HttpServletRequest req) {
+        List<String> equipmentIds = new ArrayList<>();
+        if (StringUtils.isNotEmpty(mdcOverallEquipmentEfficiencyVo.getParentId()) && StringUtils.isEmpty(mdcOverallEquipmentEfficiencyVo.getEquipmentId())) {
+            if ("2".equals(mdcOverallEquipmentEfficiencyVo.getTypeTree())) {
+                // 閮ㄩ棬灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcOverallEquipmentEfficiencyVo.getParentId());
+            } else {
+                // 浜х嚎灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcOverallEquipmentEfficiencyVo.getParentId());
+            }
+        } else if (StringUtils.isNotEmpty(mdcOverallEquipmentEfficiencyVo.getEquipmentId())) {
+            // 鍗曞彴璁惧淇℃伅
+            mdcOverallEquipmentEfficiencyVo.setEquipmentIdList(Collections.singletonList(mdcOverallEquipmentEfficiencyVo.getEquipmentId()));
+        } else {
+            // 鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭�
+            if ("2".equals(mdcOverallEquipmentEfficiencyVo.getTypeTree())) {
+                // 閮ㄩ棬灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
+            } else {
+                // 浜х嚎灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
+            }
+        }
+        if (mdcOverallEquipmentEfficiencyVo.getEquipmentIdList() == null || mdcOverallEquipmentEfficiencyVo.getEquipmentIdList().isEmpty()) {
+            mdcOverallEquipmentEfficiencyVo.setEquipmentIdList(equipmentIds);
+        }
+        if (mdcOverallEquipmentEfficiencyVo.getEquipmentIdList() == null || mdcOverallEquipmentEfficiencyVo.getEquipmentIdList().isEmpty()) {
+            return null;
+        }
+        return this.baseMapper.pageList(page, mdcOverallEquipmentEfficiencyVo);
+    }
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java
index 9ef0320..7ed38b2 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java
@@ -1,11 +1,16 @@
 package org.jeecg.modules.mdc.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.modules.mdc.entity.MdcPlanClose;
 import org.jeecg.modules.mdc.mapper.MdcPlanCloseMapper;
 import org.jeecg.modules.mdc.service.IMdcPlanCloseService;
 import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Collections;
+import java.util.List;
 
 
 /**
@@ -17,4 +22,27 @@
 @Service
 public class MdcPlanCloseServiceImpl extends ServiceImpl<MdcPlanCloseMapper, MdcPlanClose> implements IMdcPlanCloseService {
 
+    @Override
+    public BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType) {
+        BigDecimal result = new BigDecimal("0");
+        List<MdcPlanClose> mdcPlanCloses = this.baseMapper.selectList(new LambdaQueryWrapper<MdcPlanClose>().in(MdcPlanClose::getPlanCloseType, Collections.singletonList(planCloseType)));
+        if (mdcPlanCloses != null && !mdcPlanCloses.isEmpty()) {
+            for (MdcPlanClose mdcPlanClose : mdcPlanCloses) {
+                switch (mdcPlanClose.getPlanCloseTimeType()) {
+                    case "澶�":
+                        result = result.add(actualWorkDayCount.multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong())));
+                        break;
+                    case "鍛�":
+                        result = result.add(new BigDecimal("4").multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong())));
+                        break;
+                    case "鏈�":
+                        result = result.add(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong()));
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+        return result;
+    }
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java
new file mode 100644
index 0000000..45accee
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java
@@ -0,0 +1,53 @@
+package org.jeecg.modules.mdc.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Lius
+ * @date 2023/11/13 17:10
+ */
+@Data
+public class MdcOverallEquipmentEfficiencyVo {
+
+    /**
+     * 寮�濮嬫椂闂�  ->  20220101
+     */
+    private String startTime;
+    /**
+     * 缁撴潫鏃堕棿  ->  20220101
+     */
+    private String endTime;
+    /**
+     * 鏍戠被鍨�    ->  1:杞﹂棿灞傜骇   2:閮ㄩ棬灞傜骇
+     */
+    private String typeTree;
+    /**
+     * 灞傜骇ID
+     */
+    private String parentId;
+    /**
+     * 璁惧Id
+     */
+    private String equipmentId;
+    /**
+     * 鐝埗Id
+     */
+    private String shiftId;
+    /**
+     * 鐝Id
+     */
+    private String shiftSubId;
+
+    /**
+     * 璁惧ids
+     */
+    private List<String> equipmentIdList;
+
+
+
+
+
+
+}

--
Gitblit v1.9.3