package org.jeecg.modules.mdc.job; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.mdcJc.dto.MesRcJobreport; import org.jeecg.modules.mdcJc.entity.MdcJcRcJobreport; import org.jeecg.modules.mdcJc.service.IMdcJcRcJobreportService; import org.jeecg.modules.mdcJc.service.MesRcJobreportService; 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.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @Author: Lius * @CreateTime: 2025-04-14 * @Description: 同步MES加工信息(合格率) */ @PersistJobDataAfterExecution @DisallowConcurrentExecution @Slf4j public class MesPartProcessInfoJob 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 IMdcJcRcJobreportService mdcJcRcJobreportService; @Resource private MesRcJobreportService mesRcJobreportService; @Resource private IMdcEquipmentService mdcEquipmentService; @Override public void execute(JobExecutionContext context) throws JobExecutionException { SysQuartzLog quartzLog = new SysQuartzLog(); quartzLog.setCreateTime(new Date()); List byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName()); if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } log.info("定时获取MES系统加工个数任务 MesPartProcessInfoJob start! 时间:" + DateUtils.getNow()); long startTime = System.currentTimeMillis(); try { if (StringUtils.isNotBlank(parameter)) { String date = ""; if (StringUtils.isNotBlank(this.parameter)) { date = DateUtils.format(DateUtils.toDate(this.parameter, DateUtils.STRDATE), DateUtils.STR_DATE); } else { date = DateUtils.format(DateUtils.getNow(), DateUtils.STR_DATE); } mdcJcRcJobreportService.remove(new LambdaQueryWrapper().eq(MdcJcRcJobreport::getTheDate, date)); //获取设备列表 List mdcEquipmentList = mdcEquipmentService.list(); if (mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) { List equipmentIdList = mdcEquipmentList.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList()); List mesRcJobreportList = mesRcJobreportService.findPartProcessInfo(date, equipmentIdList); if (mesRcJobreportList != null && !mesRcJobreportList.isEmpty()) { List mdcJcRcJobreportList = new ArrayList<>(); for (MesRcJobreport mesRcJobreport : mesRcJobreportList) { MdcJcRcJobreport mdcJcRcJobreport = new MdcJcRcJobreport(); mdcJcRcJobreport.setEquipmentId(mesRcJobreport.getDeviceNumber()); mdcJcRcJobreport.setOkuqty(mesRcJobreport.getOkuqty().intValue()); mdcJcRcJobreport.setProcessCount(mesRcJobreport.getQty().intValue()); mdcJcRcJobreport.setTheDate(date); mdcJcRcJobreportList.add(mdcJcRcJobreport); } if (!mdcEquipmentList.isEmpty()) { mdcJcRcJobreportService.saveBatch(mdcJcRcJobreportList); } } } } quartzLog.setIsSuccess(0); } catch (Exception e) { quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); // 发送消息通知 sysAnnouncementService.jobSendMessage("定时获取MES系统加工个数任务", quartzLog.getExceptionDetail()); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } }