From 2d727903343feb01fedc988370091395c368faf2 Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期二, 17 十二月 2024 16:06:42 +0800
Subject: [PATCH] OEE功能及设备管理调整

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java                             |   10 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java             |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml           |    5 
 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java                                |    7 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java                    |   26 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java    |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java                    |   97 +++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java                  |   35 +--
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java   |   19 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java                     |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java                        |    8 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml                    |   15 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java                     |    5 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml                          |   12 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java            |   53 +++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java              |    9 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java                       |   27 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java           |    9 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java                  |    8 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java                          |   10 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java |  184 +++++++++---------
 21 files changed, 408 insertions(+), 147 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 5ffcb6c..d030448 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
@@ -598,4 +598,11 @@
     Integer AUTO_FLAG_Y = 1;
     Integer AUTO_FLAG_N = 2;
 
+    /**
+     * 鍋滄満绫诲瀷   1(璁″垝鍋滄満) 2 (闈炶鍒掑仠鏈�)
+     */
+    String CLOSE_TYPE_1 = "1";
+
+    String CLOSE_TYPE_2 = "2";
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java
index 816cc92..5f3a954 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java
@@ -13,7 +13,6 @@
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.vo.LoginUser;
-import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
 import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor;
 import org.jeecg.modules.mdc.model.MdcEquipmentTree;
@@ -74,7 +73,6 @@
                                                      @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                      @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                      HttpServletRequest req) {
-        //QueryWrapper<MdcEquipment> queryWrapper = QueryGenerator.initQueryWrapper(mdcEquipment, req.getParameterMap());
         Page<MdcEquipment> page = new Page<MdcEquipment>(pageNo, pageSize);
         IPage<MdcEquipment> pageList = mdcEquipmentService.pageList(page, mdcEquipment, req);
 
@@ -428,7 +426,6 @@
     @RequestMapping(value = "/exportXls")
     public ModelAndView exportXls(HttpServletRequest request, MdcEquipmentVo mdcEquipment) {
         // Step.1 缁勮鏌ヨ鏉′欢
-        //QueryWrapper<MdcEquipment> queryWrapper = QueryGenerator.initQueryWrapper(mdcEquipment, request.getParameterMap());
         //Step.2 AutoPoi 瀵煎嚭Excel
         ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
         List<MdcEquipment> pageList = mdcEquipmentService.exportXlsList(mdcEquipment);
@@ -445,7 +442,6 @@
         mv.addObject(NormalExcelConstants.CLASS, MdcEquipment.class);
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         ExportParams exportParams = new ExportParams("璁惧鍒楄〃鏁版嵁", "瀵煎嚭浜�:" + user.getRealname(), "瀵煎嚭淇℃伅");
-//        exportParams.setImageBasePath(upLoadPath);
         mv.addObject(NormalExcelConstants.PARAMS, exportParams);
         mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
         return mv;
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java
index 1c766c3..40de87a 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java
@@ -24,19 +24,15 @@
     List<MdcEquipmentDto> getMacingDataList(@Param("tableName") String tableName);
 
     @InterceptorIgnore(tenantLine = "1")
-    @Select("select Sequencenumber,CollectTime from  [${tableName}] " +
+    @Select("select Sequencenumber,CollectTime from  ${tableName} " +
             " where CollectTime > #{startTime} and CollectTime <= #{endTime} and Sequencenumber is not null" +
             "  order by CollectTime desc ")
     List<Map<String, Object>> getEquipmentSequenceNumber(@Param("tableName") String tableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
 
 
     @InterceptorIgnore(tenantLine = "1")
-    @Select("select CollectTime ${columns} from [${tableName}] where CollectTime > #{startTime} and CollectTime <= #{endTime} order by CollectTime asc")
+    @Select("select CollectTime ${columns} from ${tableName} where CollectTime > #{startTime} and CollectTime <= #{endTime} order by CollectTime asc")
     List<Map<String, Object>> getWorkLineList(Map<String, Object> param);
-
-    @InterceptorIgnore(tenantLine = "1")
-    @Select("SELECT COUNT(*) FROM SysObjects WHERE XType='U' AND name = '${tableName}'")
-    Integer isTableExist(@Param("tableName") String tableName);
 
     @InterceptorIgnore(tenantLine = "1")
     List<String> findRunningData(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java
index c542e18..3815783 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java
@@ -16,4 +16,13 @@
      * 鑾峰彇璁惧鏈�鏂版棩鏈熺殑杩愯鏁版嵁
      */
     MdcEquipmentStatisticalInfo getMaxStaticsData(@Param("equipmentId") String equipmentId);
+
+    /**
+     * 鏌ヨ璁惧杩愯鏃堕棿
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    Integer selectProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java
index 19bec11..148619f 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java
@@ -22,4 +22,31 @@
      * @return
      */
     IPage<MdcPartProcessInfo> pageList(Page<MdcPartProcessInfo> page, @Param("mdcPartProcessInfo") MdcPartProcessInfoVo mdcPartProcessInfo);
+
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    Integer selectTotalProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
+
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    Integer selectTotalProcessCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
+
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    Integer selectTotalPassCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java
index 9bcf52e..1074cc2 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java
@@ -24,4 +24,14 @@
      * @return
      */
     IPage<MdcPlanClose> pageList(Page<MdcPlanClose> page, @Param("mdcPlanClose") MdcPlanCloseVo mdcPlanClose);
+
+    /**
+     * 璁$畻 璁″垝/闈炶鍒掑仠鏈哄綋澶╂�绘椂闀�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @param closeType
+     * @return
+     */
+    Integer findPlanTimeDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate, @Param("closeType") String closeType);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml
index 77c17f3..e5d1c6b 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml
@@ -7,4 +7,9 @@
     <select id="getMaxStaticsData" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo">
         SELECT TOP 1 * FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} ORDER BY the_date DESC
     </select>
+
+    <!--鏌ヨ璁惧杩愯鏃堕棿-->
+    <select id="selectProcessLong" resultType="java.lang.Integer">
+        SELECT TOP 1 process_long FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml
index b2ceba1..2f3b308 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml
@@ -33,4 +33,19 @@
         ORDER BY the_date DESC, equipment_id ASC
     </select>
 
+    <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂�-->
+    <select id="selectTotalProcessLong" resultType="java.lang.Integer">
+        SELECT sum(total_process_long) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate}
+    </select>
+
+    <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲�-->
+    <select id="selectTotalProcessCount" resultType="java.lang.Integer">
+        SELECT sum(process_count) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate}
+    </select>
+
+    <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲�-->
+    <select id="selectTotalPassCount" resultType="java.lang.Integer">
+        SELECT sum(pass_count) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate}
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml
index ad62fad..af2f3af 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml
@@ -33,4 +33,16 @@
         </where>
         ORDER BY the_date DESC, equipment_id ASC
     </select>
+
+    <!--璁$畻 璁″垝/闈炶鍒掑仠鏈哄綋澶╂�绘椂闀�-->
+    <select id="findPlanTimeDuration" resultType="java.lang.Integer">
+        SELECT
+            sum(plan_close_time_long)
+        FROM
+            mdc_plan_close
+        WHERE
+            equipment_id = #{equipmentId}
+            AND the_date = #{validDate}
+            AND close_type = #{closeType}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java
index 076e641..d087a46 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java
@@ -23,11 +23,6 @@
     List<EquipmentMachingDto> getEquipmentSequencenumber(String tableName, Date startTime, Date endTime);
 
     /**
-     * 鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦�
-     */
-    Boolean isTableExist(String tableName);
-
-    /**
      * 鏌ヨ涓�娈垫椂闂村唴鐨勬暟鎹�
      */
     List<String> findRunningData(String tableName, Date startTime, Date endTime);
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java
index 51473ea..51d56e6 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java
@@ -17,4 +17,13 @@
      * @param dateTime
      */
     void runningAllEquipmentStatisticalProcess(String dateTime);
+
+    /**
+     * 鏌ヨ璁惧杩愯鏃堕棿
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    Integer selectProcessLong(String equipmentId, String validDate);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java
index f88c2a3..ca744d1 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java
@@ -44,4 +44,30 @@
      */
     ModelAndView exportXls(String userId, MdcPartProcessInfoVo mdcPartProcessInfo);
 
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    Integer selectTotalProcessLong(String equipmentId, String validDate);
+
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    Integer selectTotalProcessCount(String equipmentId, String validDate);
+
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    Integer selectTotalPassCount(String equipmentId, String validDate);
 }
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 0241c30..50d0fe1 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
@@ -18,7 +18,15 @@
  */
 public interface IMdcPlanCloseService extends IService<MdcPlanClose> {
 
-    BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType);
+    /**
+     * 璁$畻 璁″垝/闈炶鍒掑仠鏈哄綋澶╂�绘椂闀�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @param closeType
+     * @return
+     */
+    Integer findPlanTimeDuration(String equipmentId, String validDate, String closeType);
 
     /**
      * 鍒嗛〉鏌ヨ
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java
index c0b336d..c75cd7e 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java
@@ -44,12 +44,6 @@
     }
 
     @Override
-    public Boolean isTableExist(String tableName) {
-        Integer count = equipmentWorkLineMapper.isTableExist(tableName);
-        return count != 0;
-    }
-
-    @Override
     public List<String> findRunningData(String tableName, Date startTime, Date endTime) {
         return equipmentWorkLineMapper.findRunningData(tableName, startTime, endTime);
     }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java
index 28ebc28..749ce8d 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java
@@ -67,17 +67,17 @@
         if (!running.isEmpty()) {
             MdcEquipmentRunningSectionDto dto;
             String tableName = "";
-            Boolean isTableExist = false;
+            String backupTableName = "";
             if (equip != null) {
                 if (StringUtils.isNotBlank(equip.getDrivetype())) {
                     tableName = equip.getDrivetype() + "_" + equip.getEquipmentid();
-                    isTableExist = equipmentWorkLineService.isTableExist(tableName);
+                    backupTableName = equipmentService.checkTableExists(tableName);
                 }
             }
             for (MdcEquipmentRunningSection entity : running) {
                 dto = new MdcEquipmentRunningSectionDto();
                 BeanUtils.copyProperties(entity, dto);
-                if (entity.getStatus() == 3 && StringUtils.isBlank(entity.getSequenceNumber()) && isTableExist && !"ZUOLAN".equals(equip.getDrivetype())) {
+                if (entity.getStatus() == 3 && StringUtils.isBlank(entity.getSequenceNumber()) && StringUtils.isNotBlank(backupTableName) && !"ZUOLAN".equals(equip.getDrivetype())) {
                     List<EquipmentMachingDto> esList = equipmentWorkLineService.getEquipmentSequencenumber(tableName, entity.getStartTime(), entity.getEndTime());
                     if (esList != null && esList.size() > 1) {
                         dto.setSequenceNumber(esList.get(0).getSequencenumber());
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
index ad9d45f..6864afd 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -438,16 +438,16 @@
                         }
                         map.put("value", value);
                         runData.add(map);
-                        if ("spindlebeilv".equals(englishName)) {
+                        if ("spindlebeilv".equals(englishName) && !"".equals(value)) {
                             result.put("spindlebeilv", value);
                         }
-                        if ("feedbeilv".equals(englishName)) {
+                        if ("feedbeilv".equals(englishName) && !"".equals(value)) {
                             result.put("feedbeilv", value);
                         }
-                        if ("spindleload".equals(englishName)) {
+                        if ("spindleload".equals(englishName) && !"".equals(value)) {
                             result.put("spindleload", value);
                         }
-                        if ("rapidfeed".equals(englishName)) {
+                        if ("rapidfeed".equals(englishName) && !"".equals(value)) {
                             result.put("rapidfeed", value);
                         }
                     }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java
index 5f89d3e..2a09c05 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.models.auth.In;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.modules.mdc.entity.*;
@@ -14,6 +15,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 /**
@@ -75,6 +77,23 @@
         }
     }
 
+    /**
+     * 鏌ヨ璁惧杩愯鏃堕棿
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    @Override
+    public Integer selectProcessLong(String equipmentId, String validDate) {
+        Integer processLong = this.baseMapper.selectProcessLong(equipmentId, validDate);
+        if (processLong == null) {
+            return 0;
+        } else {
+            return Integer.parseInt(new BigDecimal(processLong).divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).toString());
+        }
+    }
+
     private List<EquipmentStatisticalInfo> dataHandle(List<MdcEquipmentStatisticalInfo> list) {
         List<EquipmentStatisticalInfo> result = new ArrayList<>();
         list.forEach(item -> {
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java
index ee6dd03..18d0f4a 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java
@@ -6,20 +6,26 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.mdc.entity.MdcOeeInfo;
 import org.jeecg.modules.mdc.mapper.MdcOeeInfoMapper;
-import org.jeecg.modules.mdc.service.IMdcEquipmentService;
-import org.jeecg.modules.mdc.service.IMdcOeeInfoService;
+import org.jeecg.modules.mdc.service.*;
+import org.jeecg.modules.mdc.util.DateUtils;
 import org.jeecg.modules.mdc.vo.MdcOeeInfoVo;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -34,6 +40,15 @@
 
     @Resource
     private IMdcEquipmentService mdcEquipmentService;
+
+    @Resource
+    private IMdcPlanCloseService mdcPlanCloseService;
+
+    @Resource
+    private IMdcPartProcessInfoService mdcPartProcessInfoService;
+
+    @Resource
+    private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService;
 
     /**
      * 鍒嗛〉鍒楄〃
@@ -140,10 +155,84 @@
 
     /**
      * 璁$畻oee
-     * @param dateTime
+     * @param dateTime 鍙傛暟
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void runningComputeOee(String dateTime) {
-
+        List<MdcOeeInfo> result = new ArrayList<>();
+        // 鑾峰彇鏈夋晥鏃ユ湡 鏍煎紡 yyyy-MM-dd
+        String validDate = LocalDate.now().minusDays(1).toString();
+        if (StringUtils.isNotBlank(dateTime)) {
+            validDate = DateUtils.format(DateUtils.toDate(dateTime, DateUtils.STRDATE), DateUtils.STR_DATE);
+        }
+        try {
+            this.remove(new LambdaQueryWrapper<MdcOeeInfo>().eq(MdcOeeInfo::getTheDate, validDate));
+        } catch (Exception e) {
+            log.error("鍙傛暟鏍煎紡涓嶅", e);
+        }
+        //鑾峰彇璁惧鍒楄〃
+        List<MdcEquipment> equipmentList = mdcEquipmentService.list();
+        for (MdcEquipment mdcEquipment : equipmentList) {
+            String equipmentId = mdcEquipment.getEquipmentId();
+            MdcOeeInfo mdcOeeInfo = new MdcOeeInfo();
+            // 璁惧缂栧彿
+            mdcOeeInfo.setEquipmentId(equipmentId);
+            // 璁$畻鏃ユ湡
+            mdcOeeInfo.setTheDate(validDate);
+            // 宸ヤ綔鏃ュ巻鏃堕棿(min) --- 鎸夋瘡澶�24灏忔椂绠�
+            mdcOeeInfo.setCalendarLong(1440);
+            // 璁″垝鍋滄満鏃堕棿(min) --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶╂�绘椂闀�
+            Integer planCloseLong = mdcPlanCloseService.findPlanTimeDuration(equipmentId, validDate, CommonConstant.CLOSE_TYPE_1);
+            mdcOeeInfo.setPlanCloseLong(planCloseLong);
+            // 璐熻嵎鏃堕棿(min) --- 鏃ュ巻宸ヤ綔鏃堕棿-璁″垝鍋滄満鏃堕棿
+            Integer loadLong = mdcOeeInfo.getCalendarLong() - planCloseLong;
+            mdcOeeInfo.setLoadLong(loadLong);
+            // 闈炶鍒掑仠鏈烘椂闂�(min) --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶╂�绘椂闀�
+            Integer noPlanCloseLong = mdcPlanCloseService.findPlanTimeDuration(equipmentId, validDate, CommonConstant.CLOSE_TYPE_2);
+            mdcOeeInfo.setNoplanCloseLong(noPlanCloseLong);
+            // 寮�鍔ㄦ椂闂�(min) --- 璐熻嵎鏃堕棿-闈炶鍒掑仠鏈烘椂闂�
+            int actuateLong = loadLong - noPlanCloseLong;
+            mdcOeeInfo.setActuateLong(actuateLong);
+            // 鏃堕棿寮�鍔ㄧ巼 --- 寮�鍔ㄦ椂闂�/璐熻嵎鏃堕棿
+            BigDecimal timeActuationRate = new BigDecimal(actuateLong).divide(new BigDecimal(loadLong), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
+            mdcOeeInfo.setTimeActuationRate(timeActuationRate);
+            // 鏈夋晥杩愯鏃堕棿 --- 鎸夐渶姹傜淮鎶ら浂浠跺姞宸ユ�绘椂闀縷|绯荤粺涓昏酱璐熻浇鏃堕棿
+            Integer effectiveRunLong = 0;
+            Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate);
+            if (totalProcessLong == 0) {
+                //鏌ヨ璁惧杩愯鏃堕棿
+                effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", ""));
+            } else {
+                effectiveRunLong = totalProcessLong;
+            }
+            mdcOeeInfo.setEffectiveRunLong(effectiveRunLong);
+            // 鎬ц兘寮�鍔ㄧ巼 --- 鏈夋晥杩愯鏃堕棿/寮�鍔ㄦ椂闂�
+            BigDecimal performanceRate = BigDecimal.ZERO;
+            if (effectiveRunLong != 0 && actuateLong != 0) {
+                performanceRate = new BigDecimal(effectiveRunLong).divide(new BigDecimal(actuateLong), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
+            }
+            mdcOeeInfo.setPerformanceRate(performanceRate);
+            // 鍔犲伐闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶�
+            Integer processCount = mdcPartProcessInfoService.selectTotalProcessCount(equipmentId, validDate);
+            mdcOeeInfo.setProcessCount(processCount);
+            // 鍚堟牸闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶�
+            Integer passCount = mdcPartProcessInfoService.selectTotalPassCount(equipmentId, validDate);
+            mdcOeeInfo.setPassCount(passCount);
+            // 鍚堟牸鐜� --- 鍚堟牸鏁�/鍔犲伐鏁�
+            BigDecimal passRate = BigDecimal.ZERO;
+            if (processCount != 0 && passCount != 0) {
+                passRate = new BigDecimal(passCount).divide(new BigDecimal(processCount), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
+            }
+            mdcOeeInfo.setPassRate(passRate);
+            // OEE --- 鏃堕棿寮�鍔ㄧ巼 * 鎬ц兘寮�鍔ㄧ巼 * 涓�娆″悎鏍肩巼
+            BigDecimal oee = BigDecimal.ZERO;
+            if (!timeActuationRate.equals(BigDecimal.ZERO) && !performanceRate.equals(BigDecimal.ZERO) && !passRate.equals(BigDecimal.ZERO)) {
+                oee = timeActuationRate.multiply(performanceRate).multiply(passRate).divide(new BigDecimal("10000"), 4, RoundingMode.HALF_UP);
+            }
+            mdcOeeInfo.setOee(oee);
+            result.add(mdcOeeInfo);
+        }
+        super.saveBatch(result);
     }
 }
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 9c4526c..1f922cc 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
@@ -127,33 +127,33 @@
             // 鏈堝害瀹為檯鐝骇鎬绘椂闂�(鍒嗛挓)
             mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().multiply(actualWorkDayCount).multiply(new BigDecimal("60")).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 = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE);
-            mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration);
-            // 浼氳/鍩硅鏃堕暱缁熻(鍒嗛挓)
-            BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING);
-            mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration);
-            // 鍏跺畠浼戞伅鏃堕暱缁熻(鍒嗛挓)
-            BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST);
-            mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration);
+//            // 鏁呴殰鍋滄満鏃堕暱缁熻(鍒嗛挓)
+//            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 = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE);
+//            mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration);
+//            // 浼氳/鍩硅鏃堕暱缁熻(鍒嗛挓)
+//            BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING);
+//            mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration);
+//            // 鍏跺畠浼戞伅鏃堕暱缁熻(鍒嗛挓)
+//            BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST);
+//            mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration);
             /*
                 璐熻嵎鏃堕棿(灏忔椂) = 宸ヤ綔鏃ュ巻鏃堕棿 - 璁″垝鍋滄満鏃堕棿
                 宸ヤ綔鏃ュ巻鏃堕棿 = 鏃ュ巻鏃堕棿 - 娉曞畾鍋囨棩 - 鍙屼紤鏃� + 鍔犵彮鏃堕棿
@@ -161,78 +161,78 @@
              */
             // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration
             // 璐熻嵎鏃堕棿(鍒嗛挓)
-            BigDecimal loadTime = mdcOverallEquipmentEfficiency.getMonthActualWorkDayTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration);
-            if (loadTime.compareTo(BigDecimal.ZERO) < 0) {
-                loadTime = BigDecimal.ZERO;
-            }
-            mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP));
+//            BigDecimal loadTime = mdcOverallEquipmentEfficiency.getMonthActualWorkDayTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration);
+//            if (loadTime.compareTo(BigDecimal.ZERO) < 0) {
+//                loadTime = BigDecimal.ZERO;
+//            }
+//            mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP));
 
             // 鏃堕棿寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿
             // 鏌ヨ涓昏酱杩愯鏃堕棿(鍒嗛挓)
-            BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate);
-            BigDecimal timeActuationRate = BigDecimal.ZERO;
-            if (loadTime.compareTo(BigDecimal.ZERO) == 0) {
-                mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO);
-            } else {
-                timeActuationRate = spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP);
-                mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate);
-            }
+//            BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate);
+//            BigDecimal timeActuationRate = BigDecimal.ZERO;
+//            if (loadTime.compareTo(BigDecimal.ZERO) == 0) {
+//                mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO);
+//            } else {
+//                timeActuationRate = spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP);
+//                mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate);
+//            }
 
-            BigDecimal processQuantity;
-            // 鍔犲伐闆朵欢鏁�(浠�)  processQuantity
-            if ("FANUC".equals(mdcEquipment.getDriveType())) {
-                processQuantity = processCountService.findCount(equipmentId, validDate);
-            } else {
-                processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate);
-            }
-            mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity);
+//            BigDecimal processQuantity;
+//            // 鍔犲伐闆朵欢鏁�(浠�)  processQuantity
+//            if ("FANUC".equals(mdcEquipment.getDriveType())) {
+//                processQuantity = processCountService.findCount(equipmentId, validDate);
+//            } else {
+//                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);
+//            }
 
-            // 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)
-            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);
-            }
-
-            if ("FANUC".equals(mdcEquipment.getDriveType())) {
-                // 锛堟柊锛夋�ц兘寮�鍔ㄧ巼 = 鐞嗚鏍囧噯鍔犲伐鏃堕暱 * 浠舵暟 /锛堜富杞磋繍琛屾椂闂达級
-                // 鏌ヨ娉曞叞鍏嬭澶囨爣鍑嗗姞宸ユ椂闀�(绉�)
-                BigDecimal duration = processCountService.findDuration(mdcEquipment.getEquipmentId(), validDate);
-                if (spindleRunDuration.compareTo(BigDecimal.ZERO) != 0 && duration.compareTo(BigDecimal.ZERO) != 0) {
-                    mdcOverallEquipmentEfficiency.setStandardProcessDuration(duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP));
-                    BigDecimal performanceRate = duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).divide(spindleRunDuration, 4, RoundingMode.HALF_UP);
-                    if (performanceRate.compareTo(BigDecimal.ONE) == 1) {
-                        performanceRate = new BigDecimal("0.95").add(BigDecimal.valueOf(Math.random() * 5).divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP));
-                    }
-                    mdcOverallEquipmentEfficiency.setPerformanceRate(performanceRate);
-                } else {
-                    mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO);
-                }
-            } else {
-                // 锛堟棫锛夋�ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿
-                if (loadTime.compareTo(BigDecimal.ZERO) != 0) {
-                    mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP));
-                } else {
-                    mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO);
-                }
-            }
+//            if ("FANUC".equals(mdcEquipment.getDriveType())) {
+//                // 锛堟柊锛夋�ц兘寮�鍔ㄧ巼 = 鐞嗚鏍囧噯鍔犲伐鏃堕暱 * 浠舵暟 /锛堜富杞磋繍琛屾椂闂达級
+//                // 鏌ヨ娉曞叞鍏嬭澶囨爣鍑嗗姞宸ユ椂闀�(绉�)
+//                BigDecimal duration = processCountService.findDuration(mdcEquipment.getEquipmentId(), validDate);
+//                if (spindleRunDuration.compareTo(BigDecimal.ZERO) != 0 && duration.compareTo(BigDecimal.ZERO) != 0) {
+//                    mdcOverallEquipmentEfficiency.setStandardProcessDuration(duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP));
+//                    BigDecimal performanceRate = duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).divide(spindleRunDuration, 4, RoundingMode.HALF_UP);
+//                    if (performanceRate.compareTo(BigDecimal.ONE) == 1) {
+//                        performanceRate = new BigDecimal("0.95").add(BigDecimal.valueOf(Math.random() * 5).divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP));
+//                    }
+//                    mdcOverallEquipmentEfficiency.setPerformanceRate(performanceRate);
+//                } else {
+//                    mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO);
+//                }
+//            } else {
+//                // 锛堟棫锛夋�ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿
+//                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()).setScale(4, RoundingMode.HALF_UP));
-            if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) {
-                mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ZERO);
-            }
+//            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()).setScale(4, RoundingMode.HALF_UP));
+//            if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) {
+//                mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ZERO);
+//            }
             result.add(mdcOverallEquipmentEfficiency);
 
         }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java
index eaccb68..2d41fb1 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java
@@ -142,7 +142,7 @@
         ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
         List<MdcPartProcessInfo> mdcPartProcessInfos = this.baseMapper.selectList(queryWrapper);
         // 瀵煎嚭鏂囦欢鍚嶇О
-        mv.addObject(NormalExcelConstants.FILE_NAME,  "闆朵欢鍔犲伐鏁版嵁鍒楄〃");
+        mv.addObject(NormalExcelConstants.FILE_NAME, "闆朵欢鍔犲伐鏁版嵁鍒楄〃");
         mv.addObject(NormalExcelConstants.CLASS, MdcPartProcessInfo.class);
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("闆朵欢鍔犲伐鏁版嵁鍒楄〃鏁版嵁", "瀵煎嚭浜�:" + user.getRealname(), "闆朵欢鍔犲伐鏁版嵁"));
@@ -150,4 +150,55 @@
         mv.addObject(NormalExcelConstants.DATA_LIST, mdcPartProcessInfos);
         return mv;
     }
+
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    @Override
+    public Integer selectTotalProcessLong(String equipmentId, String validDate) {
+        Integer totalProcessLong = this.baseMapper.selectTotalProcessLong(equipmentId, validDate);
+        if (totalProcessLong == null) {
+            return 0;
+        } else {
+            return totalProcessLong;
+        }
+    }
+
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    @Override
+    public Integer selectTotalProcessCount(String equipmentId, String validDate) {
+        Integer totalProcessCount = this.baseMapper.selectTotalProcessCount(equipmentId, validDate);
+        if (totalProcessCount == null) {
+            return 0;
+        } else {
+            return totalProcessCount;
+        }
+    }
+
+    /**
+     * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲�
+     *
+     * @param equipmentId
+     * @param validDate
+     * @return
+     */
+    @Override
+    public Integer selectTotalPassCount(String equipmentId, String validDate) {
+        Integer totalPassCount = this.baseMapper.selectTotalPassCount(equipmentId, validDate);
+        if (totalPassCount == null) {
+            return 0;
+        } else {
+            return totalPassCount;
+        }
+    }
 }
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 e678fbc..e54d198 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
@@ -165,28 +165,21 @@
         return mv;
     }
 
+    /**
+     * 璁$畻 璁″垝/闈炶鍒掑仠鏈哄綋澶╂�绘椂闀�
+     * @param equipmentId
+     * @param validDate
+     * @param closeType
+     * @return
+     */
     @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, Arrays.asList(planCloseType.split(","))));
-//        if (mdcPlanCloses != null && !mdcPlanCloses.isEmpty()) {
-//            for (MdcPlanClose mdcPlanClose : mdcPlanCloses) {
-//                switch (mdcPlanClose.getPlanCloseTimeType()) {
-//                    case MdcConstant.DAY:
-//                        result = result.add(actualWorkDayCount.multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong())));
-//                        break;
-//                    case MdcConstant.WEEK:
-//                        result = result.add(new BigDecimal("4").multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong())));
-//                        break;
-//                    case MdcConstant.MONTH:
-//                        result = result.add(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong()));
-//                        break;
-//                    default:
-//                        break;
-//                }
-//            }
-//        }
-        return result;
+    public Integer findPlanTimeDuration(String equipmentId, String validDate, String closeType) {
+        Integer planTimeDuration = this.baseMapper.findPlanTimeDuration(equipmentId, validDate, closeType);
+        if (planTimeDuration == null) {
+            return 0;
+        } else {
+            return planTimeDuration;
+        }
     }
 
 }

--
Gitblit v1.9.3