From 20a7735a6831064c9d5bea12c50f63729f2db2fc Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期六, 06 一月 2024 15:36:11 +0800
Subject: [PATCH] mdc更新

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml                       |    9 +++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java          |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java              |   14 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java         |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java                  |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java                    |    5 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java             |    1 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java                          |    5 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java                          |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml         |    4 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java                  |   42 +++++++-------
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java |   57 +++++++++++++++---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java                  |   23 +++++--
 13 files changed, 126 insertions(+), 44 deletions(-)

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 0736092..ea1fcea 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
@@ -59,126 +59,126 @@
      */
     @Excel(name = "姣忕彮灏忔椂", width = 15)
     @ApiModelProperty(value = "姣忕彮灏忔椂")
-    private BigDecimal shiftTimeCount;
+    private BigDecimal shiftTimeCount = BigDecimal.ZERO;
     /**
      * 鍔犵彮鏃堕棿
      */
     @Excel(name = "鍔犵彮鏃堕棿", width = 15)
     @ApiModelProperty(value = "鍔犵彮鏃堕棿")
-    private BigDecimal overtime;
+    private BigDecimal overtime = BigDecimal.ZERO;
     /**
      * 瀹為檯鐝骇澶╂暟
      */
     @Excel(name = "瀹為檯鐝骇澶╂暟", width = 15)
     @ApiModelProperty(value = "瀹為檯鐝骇澶╂暟")
-    private BigDecimal actualWorkDayCount;
+    private BigDecimal actualWorkDayCount = BigDecimal.ZERO;
     /**
      * 鏈堝害瀹為檯鐝骇鎬绘椂闂�
      */
     @Excel(name = "鏈堝害瀹為檯鐝骇鎬绘椂闂�", width = 15)
     @ApiModelProperty(value = "鏈堝害瀹為檯鐝骇鎬绘椂闂�")
-    private BigDecimal monthActualWorkDayTimeCount;
+    private BigDecimal monthActualWorkDayTimeCount = BigDecimal.ZERO;
     /**
      * 鏁呴殰鍋滄満鏃堕暱(鍒嗛挓)
      */
     @Excel(name = "鏁呴殰鍋滄満鏃堕暱", width = 15)
     @ApiModelProperty(value = "鏁呴殰鍋滄満鏃堕暱(鍒嗛挓)")
-    private BigDecimal breakdownDownDuration;
+    private BigDecimal breakdownDownDuration = BigDecimal.ZERO;
     /**
      * 鎹㈠瀷璋冭瘯鏃堕暱(鍒嗛挓)
      */
     @Excel(name = "鎹㈠瀷璋冭瘯鏃堕暱(鍒嗛挓)", width = 15)
     @ApiModelProperty(value = "鎹㈠瀷璋冭瘯鏃堕暱(鍒嗛挓)")
-    private BigDecimal conversionDebugDuration;
+    private BigDecimal conversionDebugDuration = BigDecimal.ZERO;
     /**
      * 鐗╂枡鐭己鏃堕暱(鍒嗛挓)
      */
     @Excel(name = "鐗╂枡鐭己鏃堕暱(鍒嗛挓)", width = 15)
     @ApiModelProperty(value = "鐗╂枡鐭己鏃堕暱(鍒嗛挓)")
-    private BigDecimal materialShortageDuration;
+    private BigDecimal materialShortageDuration = BigDecimal.ZERO;
     /**
      * 璁″垝绛変换鍔�(鍒嗛挓)
      */
     @Excel(name = "璁″垝绛変换鍔�(鍒嗛挓)", width = 15)
     @ApiModelProperty(value = "璁″垝绛変换鍔�(鍒嗛挓)")
-    private BigDecimal plannedTaskDuration;
+    private BigDecimal plannedTaskDuration = BigDecimal.ZERO;
     /**
      * 妫�楠�(鍒嗛挓)
      */
     @Excel(name = "妫�楠�(鍒嗛挓)", width = 15)
     @ApiModelProperty(value = "妫�楠�(鍒嗛挓)")
-    private BigDecimal inspectDuration;
+    private BigDecimal inspectDuration = BigDecimal.ZERO;
     /**
      * 鍏朵粬(鍒嗛挓)
      */
     @Excel(name = "鍏朵粬(鍒嗛挓)", width = 15)
     @ApiModelProperty(value = "鍏朵粬(鍒嗛挓)")
-    private BigDecimal otherDuration;
+    private BigDecimal otherDuration = BigDecimal.ZERO;
     /**
      * 璁″垝淇濆吇
      */
     @Excel(name = "璁″垝淇濆吇", width = 15)
     @ApiModelProperty(value = "璁″垝淇濆吇")
-    private BigDecimal plannedMaintenanceDuration;
+    private BigDecimal plannedMaintenanceDuration = BigDecimal.ZERO;
     /**
      * 浼氳鍩硅鏃堕暱
      */
     @Excel(name = "浼氳鍩硅鏃堕暱", width = 15)
     @ApiModelProperty(value = "浼氳鍩硅鏃堕暱")
-    private BigDecimal conferenceTrainingDuration;
+    private BigDecimal conferenceTrainingDuration = BigDecimal.ZERO;
     /**
      * 鍏朵粬浼戞伅鏃堕暱
      */
     @Excel(name = "鍏朵粬浼戞伅鏃堕暱", width = 15)
     @ApiModelProperty(value = "鍏朵粬浼戞伅鏃堕暱")
-    private BigDecimal otherRestDuration;
+    private BigDecimal otherRestDuration = BigDecimal.ZERO;
     /**
      * 璐熻嵎鏃堕棿
      */
     @Excel(name = "璐熻嵎鏃堕棿", width = 15)
     @ApiModelProperty(value = "璐熻嵎鏃堕棿")
-    private BigDecimal loadTime;
+    private BigDecimal loadTime = BigDecimal.ZERO;
     /**
      * 鏃堕棿寮�鍔ㄧ巼
      */
     @Excel(name = "鏃堕棿寮�鍔ㄧ巼", width = 15)
     @ApiModelProperty(value = "鏃堕棿寮�鍔ㄧ巼")
-    private BigDecimal timeActuationRate;
+    private BigDecimal timeActuationRate = BigDecimal.ZERO;
     /**
      * 鍔犲伐闆朵欢鏁�
      */
     @Excel(name = "鍔犲伐闆朵欢鏁�", width = 15)
     @ApiModelProperty(value = "鍔犲伐闆朵欢鏁�")
-    private BigDecimal processQuantity;
+    private BigDecimal processQuantity = BigDecimal.ZERO;
     /**
      * 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)
      */
     @Excel(name = "鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)", width = 15)
     @ApiModelProperty(value = "鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)")
-    private BigDecimal standardProcessDuration;
+    private BigDecimal standardProcessDuration = BigDecimal.ZERO;
     /**
      * 鎬ц兘寮�鍔ㄧ巼
      */
     @Excel(name = "鎬ц兘寮�鍔ㄧ巼", width = 15)
     @ApiModelProperty(value = "鎬ц兘寮�鍔ㄧ巼")
-    private BigDecimal performanceRate;
+    private BigDecimal performanceRate = BigDecimal.ZERO;
     /**
      * 搴熷搧鏁�
      */
     @Excel(name = "搴熷搧鏁�", width = 15)
     @ApiModelProperty(value = "搴熷搧鏁�")
-    private BigDecimal unqualifiedQuantity;
+    private BigDecimal unqualifiedQuantity = BigDecimal.ZERO;
     /**
      * 鍚堟牸鐜�
      */
     @Excel(name = "鍚堟牸鐜�", width = 15)
     @ApiModelProperty(value = "鍚堟牸鐜�")
-    private BigDecimal passRate;
+    private BigDecimal passRate = BigDecimal.ONE;
     /**
      * 璁惧缁煎悎鏁堢巼
      */
     @Excel(name = "璁惧缁煎悎鏁堢巼", width = 15)
     @ApiModelProperty(value = "璁惧缁煎悎鏁堢巼")
-    private BigDecimal overallEquipmentEfficiency;
+    private BigDecimal overallEquipmentEfficiency = BigDecimal.ONE;
 
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java
index 0186ee7..304cc7b 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java
@@ -25,6 +25,15 @@
 @Slf4j
 public class RunningOverallEquipmentEfficiencyJob implements Job {
 
+    /**
+     * 鑻ュ弬鏁板彉閲忓悕淇敼 QuartzJobController涓篃闇�瀵瑰簲淇敼  鏃堕棿锛� yyyyMMdd 渚嬶細 20230414
+     */
+    private String parameter;
+
+    public void setParameter(String parameter) {
+        this.parameter = parameter;
+    }
+
     @Resource
     private IQuartzJobService quartzJobService;
 
@@ -45,10 +54,11 @@
         if (byJobClassName != null && !byJobClassName.isEmpty()) {
             quartzLog.setJobId(byJobClassName.get(0).getId());
         }
-        log.info("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟 RunningOverallEquipmentEfficiencyJob start!  鏃堕棿:" + DateUtils.now());
+        quartzLog.setParams(this.parameter);
+        log.info("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟 RunningOverallEquipmentEfficiencyJob start!  鏃堕棿:" + DateUtils.now(), this.parameter);
         long startTime = System.currentTimeMillis();
         try {
-            mdcOverallEquipmentEfficiencyService.runningOverallEquipmentEfficiency();
+            mdcOverallEquipmentEfficiencyService.runningOverallEquipmentEfficiency(this.parameter);
             quartzLog.setIsSuccess(0);
         } catch (Exception e) {
             quartzLog.setIsSuccess(-1);
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java
index 4606be3..98b04c7 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java
@@ -8,6 +8,8 @@
 import org.jeecg.modules.mdc.entity.MdcProcessCount;
 import org.jeecg.modules.mdc.vo.MdcProcessCountVo;
 
+import java.math.BigDecimal;
+
 /**
  * @author Lius
  * @date 2023/11/27 11:07
@@ -23,4 +25,7 @@
      * @return
      */
     IPage<MdcProcessCountDto> pageList(Page<MdcProcessCountDto> page, @Param("mdcProcessCountVo") MdcProcessCountVo mdcProcessCountVo);
+
+    BigDecimal findDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
+
 }
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 7e17582..aa6acb7 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
@@ -38,6 +38,7 @@
             t1.update_time
         FROM
             mdc_overall_equipment_efficiency t1
+            LEFT JOIN mdc_equipment t2 ON t1.equipment_id = t2.equipment_id
         <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 }
@@ -48,6 +49,9 @@
                     #{ id }
                 </foreach>
             </if>
+            <if test="mdcOverallEquipmentEfficiency.driveType != null and mdcOverallEquipmentEfficiency.driveType != ''">
+                AND t2.drive_type = #{ mdcOverallEquipmentEfficiency.driveType }
+            </if>
         </where>
     </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml
index 202d360..cc290c6 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml
@@ -44,4 +44,13 @@
             t1.the_date,
             t1.sequence_number
     </select>
+
+    <select id="findDuration" resultType="java.math.BigDecimal">
+        SELECT
+            SUM( duration )
+        FROM
+            mdc_process_count
+        WHERE
+            equipment_id = #{ equipmentId } 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/service/IMdcOverallEquipmentEfficiencyService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java
index 14c284b..58d4635 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
@@ -17,7 +17,7 @@
     /**
      * 璁$畻璁惧缁煎悎鏁堢巼OEE
      */
-    void runningOverallEquipmentEfficiency();
+    void runningOverallEquipmentEfficiency(String dateTime);
 
     /**
      * 鍒嗛〉鍒楄〃鏌ヨ
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java
index 08e4346..5753ddb 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java
@@ -8,6 +8,7 @@
 import org.jeecg.modules.mdc.vo.MdcProcessCountVo;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 
 /**
  * @author Lius
@@ -31,4 +32,5 @@
      */
     IPage<MdcProcessCountDto> pageList(String userId, Page<MdcProcessCountDto> page, MdcProcessCountVo mdcProcessCountVo, HttpServletRequest req);
 
+    BigDecimal findDuration(String equipmentId, String validDate);
 }
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 90a7462..cdce65c 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
@@ -165,6 +165,7 @@
      */
     @Override
     public BigDecimal computeShiftTimeCount(String equipmentId, String validDate) {
+        validDate = validDate.replaceAll("-", "");
         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 f2ff16d..c83a76a 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
@@ -138,7 +138,7 @@
      */
     @Override
     public BigDecimal computeOvertime(String equipmentId, String validDate) {
-        List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(equipmentId, validDate);
+        List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(equipmentId, validDate.replaceAll("-", ""));
         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/MdcOverallEquipmentEfficiencyServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
index 60c496c..348d6b2 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
@@ -11,6 +11,7 @@
 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.util.DateUtils;
 import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo;
 import org.springframework.stereotype.Service;
 
@@ -54,11 +55,14 @@
     @Resource
     private IMdcEquipmentStatisticalShiftInfoService mdcEquipmentStatisticalShiftInfoService;
 
+    @Resource
+    private IProcessCountService processCountService;
+
     /**
      * 璁$畻璁惧缁煎悎鏁堢巼OEE
      */
     @Override
-    public void runningOverallEquipmentEfficiency() {
+    public void runningOverallEquipmentEfficiency(String dateTime) {
         /*
             OEE = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼
             鏃堕棿寮�鍔ㄧ巼 = 锛堣礋鑽锋椂闂� - 闈炶鍒掑仠鏈烘椂闂达級 / 璐熻嵎鏃堕棿 脳 100%
@@ -72,7 +76,19 @@
         List<MdcOverallEquipmentEfficiency> result = new ArrayList<>();
         // 鑾峰彇鏈夋晥鏃ユ湡 鏍煎紡 yyyy-MM
         String validDate = YearMonth.now().minusMonths(1).toString();
+        if (StringUtils.isNotBlank(dateTime)) {
+            validDate = DateUtils.format(DateUtils.toDate(dateTime, "yyyyMM"), DateUtils.STR_YEAR_MONTH);
+            try {
+                if (validDate != null) {
+                    this.remove(new LambdaQueryWrapper<MdcOverallEquipmentEfficiency>().
+                            eq(MdcOverallEquipmentEfficiency::getValidDate, validDate));
+                }
+            } catch (Exception e) {
+                log.error("鍙傛暟鏍煎紡涓嶅", e);
+            }
+        }
         // 鑾峰彇璁惧鍒楄〃
+//        List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198"));
         List<MdcEquipment> equipmentList = mdcEquipmentService.list();
         for (MdcEquipment mdcEquipment : equipmentList) {
             String equipmentId = mdcEquipment.getEquipmentId();
@@ -141,17 +157,22 @@
             // 璐熻嵎鏃堕棿(鍒嗛挓)
             BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration);
             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 = (loadTime.subtract(breakdownDownDuration).subtract(conversionDebugDuration).subtract(materialShortageDuration).subtract(plannedTaskDuration).subtract(inspectDuration).subtract(otherDuration)).divide(loadTime, 4, RoundingMode.HALF_UP);
+                timeActuationRate = spindleRunDuration.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) {
@@ -160,14 +181,29 @@
                 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));
+            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 {
-                mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO);
+                // 锛堟棫锛夋�ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿
+                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);
@@ -177,8 +213,9 @@
             } else {
                 mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP));
             }
+
             // 璁惧缁煎悎鏁堢巼 = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼
-            mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()));
+            mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()).setScale(4, RoundingMode.HALF_UP));
             if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) {
                 mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE);
             }
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 7ed38b2..72102ab 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
@@ -9,7 +9,7 @@
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.Collections;
+import java.util.Arrays;
 import java.util.List;
 
 
@@ -25,7 +25,7 @@
     @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)));
+        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()) {
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java
index 021968f..013cde5 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java
@@ -22,6 +22,7 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -112,6 +113,12 @@
         return this.baseMapper.pageList(page, mdcProcessCountVo);
     }
 
+    @Override
+    public BigDecimal findDuration(String equipmentId, String validDate) {
+        BigDecimal result = this.baseMapper.findDuration(equipmentId, validDate.replaceAll("-", ""));
+        return result == null ? BigDecimal.ZERO : result;
+    }
+
     @Transactional(readOnly = true)
     List<MdcProcessCount> processCount(MdcEquipment mdcEquipment) {
         Date initDate = null;
@@ -197,13 +204,15 @@
                             }
                             //璁$畻鍔犲伐鏃堕暱
                             long duration = this.handleProcessDuration(equipmentRunningSectionList);
-                            MdcProcessCount mdcProcessCount = new MdcProcessCount();
-                            mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId());
-                            mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName());
-                            mdcProcessCount.setSequenceNumber(sequenceNumber);
-                            mdcProcessCount.setDuration(duration);
-                            mdcProcessCount.setTheDate(stringDate);
-                            resultList.add(mdcProcessCount);
+                            if (duration != 0 && duration < 100000) {
+                                MdcProcessCount mdcProcessCount = new MdcProcessCount();
+                                mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId());
+                                mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName());
+                                mdcProcessCount.setSequenceNumber(sequenceNumber);
+                                mdcProcessCount.setDuration(duration);
+                                mdcProcessCount.setTheDate(stringDate);
+                                resultList.add(mdcProcessCount);
+                            }
                         }
                     }
                 }
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
index 45accee..19657c2 100644
--- 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
@@ -45,6 +45,11 @@
      */
     private List<String> equipmentIdList;
 
+    /**
+     * 椹卞姩绫诲瀷
+     */
+    private String driveType;
+
 
 
 

--
Gitblit v1.9.3