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); } } 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); } 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; }