From fb248488ca953d6b2f2fb1b4f7f30a1ba65d030e Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期五, 20 六月 2025 16:46:26 +0800
Subject: [PATCH] OEE算法调整

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java                  |   83 +++++++++++++++++++++++++++++++++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java |   18 ++++-----
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java                 |    4 +-
 3 files changed, 93 insertions(+), 12 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java
new file mode 100644
index 0000000..57c88ca
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java
@@ -0,0 +1,83 @@
+package org.jeecg.modules.mdc.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.mdc.service.IMdcOeeInfoService;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+import org.jeecg.modules.mdc.vo.MdcOeeComputeVo;
+import org.jeecg.modules.quartz.entity.QuartzJob;
+import org.jeecg.modules.quartz.entity.SysQuartzLog;
+import org.jeecg.modules.quartz.service.IQuartzJobService;
+import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.jeecg.modules.system.service.ISysAnnouncementService;
+import org.quartz.*;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: Lius
+ * @CreateTime: 2025-04-24
+ * @Description: OEE
+ */
+@PersistJobDataAfterExecution
+@DisallowConcurrentExecution
+@Slf4j
+public class RunningOEEJob implements Job {
+
+    /**
+     * 鑻ュ弬鏁板彉閲忓悕淇敼 QuartzJobController涓篃闇�瀵瑰簲淇敼  鏃堕棿锛� yyyyMMdd 渚嬶細 20230414
+     */
+    private String parameter;
+
+    public void setParameter(String parameter) {
+        this.parameter = parameter;
+    }
+
+    @Resource
+    private IQuartzJobService quartzJobService;
+
+    @Resource
+    private ISysAnnouncementService sysAnnouncementService;
+
+    @Resource
+    private ISysQuartzLogService sysQuartzLogService;
+
+    @Resource
+    private IMdcOeeInfoService mdcOeeInfoService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        quartzLog.setParams(this.parameter);
+        log.info("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟 RunningOEEJob start!  鏃堕棿:" + DateUtils.now(), this.parameter);
+        long startTime = System.currentTimeMillis();
+        try {
+            MdcOeeComputeVo mdcOeeComputeVo = new MdcOeeComputeVo();
+            String dateTime = LocalDate.now().plusDays(-1).toString();
+            if (StringUtils.isNotBlank(this.parameter)) {
+                dateTime = DateUtils.date2Str(DateUtils.str2Date(this.parameter, DateUtils.yyyyMMdd.get()), DateUtils.date_sdf.get());
+            }
+            mdcOeeComputeVo.setStartTime(dateTime);
+            mdcOeeComputeVo.setEndTime(dateTime);
+            mdcOeeInfoService.computeOee(mdcOeeComputeVo);
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+            // 鍙戦�佹秷鎭�氱煡
+            sysAnnouncementService.jobSendMessage("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟", quartzLog.getExceptionDetail());
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+}
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 dd23560..aed617f 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
@@ -165,8 +165,8 @@
     @Transactional(rollbackFor = Exception.class)
     public void computeOee(MdcOeeComputeVo mdcOeeComputeVo) {
         List<MdcOeeInfo> result = new ArrayList<>();
-        String startDate = mdcOeeComputeVo.getStartDate();
-        String endDate = mdcOeeComputeVo.getEndDate();
+        String startDate = mdcOeeComputeVo.getStartTime();
+        String endDate = mdcOeeComputeVo.getEndTime();
         List<String> dateList = DateUtils.getDatesStringList(DateUtils.getShortDate(startDate), DateUtils.getShortDate(endDate));
         if (!dateList.isEmpty()) {
             //鑾峰彇璁惧鍒楄〃
@@ -204,12 +204,10 @@
                     mdcOeeInfo.setTimeActuationRate(timeActuationRate);
                     // 鏈夋晥杩愯鏃堕棿 --- 鎸夐渶姹傜淮鎶ら浂浠跺姞宸ユ�绘椂闀縷|绯荤粺涓昏酱璐熻浇鏃堕棿
                     Integer effectiveRunLong = 0;
-                    Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate);
-                    if (totalProcessLong == 0) {
-                        //鏌ヨ璁惧杩愯鏃堕棿
-                        effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", ""));
-                    } else {
-                        effectiveRunLong = totalProcessLong;
+//                    Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate);
+                    effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", ""));
+                    if (effectiveRunLong == null) {
+                        effectiveRunLong = 0;
                     }
                     mdcOeeInfo.setEffectiveRunLong(effectiveRunLong);
                     // 鎬ц兘寮�鍔ㄧ巼 --- 鏈夋晥杩愯鏃堕棿/寮�鍔ㄦ椂闂�
@@ -217,7 +215,7 @@
                     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);
+                    mdcOeeInfo.setPerformanceRate(performanceRate.compareTo(new BigDecimal(100)) > 0 ? new BigDecimal(100) : performanceRate);
                     // 鍔犲伐闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶�
                     Integer processCount = mdcPartProcessInfoService.selectTotalProcessCount(equipmentId, validDate);
                     mdcOeeInfo.setProcessCount(processCount);
@@ -225,7 +223,7 @@
                     Integer passCount = mdcPartProcessInfoService.selectTotalPassCount(equipmentId, validDate);
                     mdcOeeInfo.setPassCount(passCount);
                     // 鍚堟牸鐜� --- 鍚堟牸鏁�/鍔犲伐鏁�
-                    BigDecimal passRate = BigDecimal.ZERO;
+                    BigDecimal passRate = new BigDecimal("100");
                     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);
                     }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java
index b23a4c9..bc8f5f4 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java
@@ -8,6 +8,6 @@
  */
 @Data
 public class MdcOeeComputeVo {
-    private String startDate;
-    private String endDate;
+    private String startTime;
+    private String endTime;
 }

--
Gitblit v1.9.3