¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.mdc.job; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.jeecg.common.api.dto.message.MessageDTO; |
| | | import org.jeecg.common.constant.CommonConstant; |
| | | import org.jeecg.common.system.api.ISysBaseAPI; |
| | | import org.jeecg.common.system.vo.DictModel; |
| | | import org.jeecg.common.util.DateUtils; |
| | | import org.jeecg.modules.mdc.dto.MdcEquipmentDto; |
| | | import org.jeecg.modules.mdc.entity.MdcEquipment; |
| | | import org.jeecg.modules.mdc.entity.MdcOverrunAlarm; |
| | | import org.jeecg.modules.mdc.service.IMdcEquipmentService; |
| | | import org.jeecg.modules.mdc.service.IMdcOverrunAlarmService; |
| | | import org.jeecg.modules.mdc.util.ThrowableUtil; |
| | | 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.jeecg.modules.system.service.ISysDictService; |
| | | import org.quartz.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Lius |
| | | * @Description: çæ§è®¾å¤è¿è¡è½¬éä¸NCç¨åºè®¾å®è½¬éå¯¹æ¯ |
| | | * @date 2024/3/4 16:14 |
| | | */ |
| | | @PersistJobDataAfterExecution |
| | | @DisallowConcurrentExecution |
| | | @Slf4j |
| | | public class RunningMonitoringSpeedJob implements Job { |
| | | |
| | | @Resource |
| | | private IQuartzJobService quartzJobService; |
| | | |
| | | @Resource |
| | | private ISysQuartzLogService sysQuartzLogService; |
| | | |
| | | @Resource |
| | | private ISysAnnouncementService sysAnnouncementService; |
| | | |
| | | @Resource |
| | | private IMdcEquipmentService mdcEquipmentService; |
| | | |
| | | @Resource |
| | | private ISysDictService sysDictService; |
| | | |
| | | @Resource |
| | | private ISysBaseAPI sysBaseApi; |
| | | |
| | | @Resource |
| | | private IMdcOverrunAlarmService mdcOverrunAlarmService; |
| | | |
| | | @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()); |
| | | } |
| | | log.info("çæ§è®¾å¤è¿è¡è½¬éä¸NCç¨åºè®¾å®è½¬éå¯¹æ¯ RunningMonitoringSpeedJob start! æ¶é´:" + DateUtils.now()); |
| | | long startTime = System.currentTimeMillis(); |
| | | try { |
| | | List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().ne(MdcEquipment::getDriveType, "ZUOLAN")); |
| | | |
| | | // è·ååå
¸æ°æ® |
| | | List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_OPERATING_SPEED_RANGE); |
| | | BigDecimal range = BigDecimal.ZERO; |
| | | if (dictModelList != null && !dictModelList.isEmpty()) { |
| | | range = new BigDecimal(dictModelList.get(0).getValue()); |
| | | } |
| | | |
| | | for (MdcEquipment mdcEquipment : mdcEquipmentList) { |
| | | String saveTableName = mdcEquipment.getSaveTableName(); |
| | | MdcEquipmentDto mdcEquipmentDto = new MdcEquipmentDto(); |
| | | try { |
| | | //æ¥è¯¢åè¡¨æ°æ® |
| | | mdcEquipmentDto = mdcEquipmentService.getWorkLineLast(saveTableName); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("æ¥è¯¢åè¡¨æ°æ®å¤±è´¥!", e); |
| | | } |
| | | if (mdcEquipmentDto != null && StringUtils.isNotBlank(mdcEquipmentDto.getSpindlespeed()) && StringUtils.isNotBlank(mdcEquipmentDto.getActualspindlespeed())) { |
| | | MessageDTO messageDTO = new MessageDTO(); |
| | | messageDTO.setTitle("设å¤è¿è¡è½¬éæ¥è¦ï¼"); |
| | | messageDTO.setCategory("é¢è¦æ¶æ¯"); |
| | | messageDTO.setFromUser("admin"); |
| | | messageDTO.setToUser("admin"); |
| | | //è®¾å® |
| | | BigDecimal spindlespeed = new BigDecimal(mdcEquipmentDto.getSpindlespeed()); |
| | | //å®é
|
| | | BigDecimal actualspindlespeed = new BigDecimal(mdcEquipmentDto.getActualspindlespeed()); |
| | | |
| | | MdcOverrunAlarm mdcOverrunAlarm = new MdcOverrunAlarm(); |
| | | mdcOverrunAlarm.setEquipmentId(mdcEquipment.getEquipmentId()); |
| | | mdcOverrunAlarm.setSetValue(spindlespeed.toString()); |
| | | mdcOverrunAlarm.setRealValue(actualspindlespeed.toString()); |
| | | if (range.equals(BigDecimal.ZERO)) { |
| | | if (spindlespeed.compareTo(actualspindlespeed) == 1) { |
| | | // 设å®å¼å¤§äºå®é
å¼ ä½ |
| | | messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤è¿è¡è½¬é使¥è¦ï¼"); |
| | | sysBaseApi.sendSysAnnouncement(messageDTO); |
| | | mdcOverrunAlarm.setAlarmContent("设å¤è¿è¡è½¬éæ¯NC代ç 设å®å¼ä½æ¥è¦"); |
| | | mdcOverrunAlarmService.save(mdcOverrunAlarm); |
| | | } else if (spindlespeed.compareTo(actualspindlespeed) == -1) { |
| | | // 设å®å¼å°äºå®é
å¼ é« |
| | | messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤è¿è¡è½¬é髿¥è¦ï¼"); |
| | | sysBaseApi.sendSysAnnouncement(messageDTO); |
| | | mdcOverrunAlarm.setAlarmContent("设å¤è¿è¡è½¬éæ¯NC代ç 设å®å¼é«æ¥è¦"); |
| | | mdcOverrunAlarmService.save(mdcOverrunAlarm); |
| | | } |
| | | } else { |
| | | BigDecimal multiply = spindlespeed.multiply(range.divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)); |
| | | BigDecimal max = spindlespeed.add(multiply); |
| | | BigDecimal min = spindlespeed.subtract(multiply); |
| | | if (actualspindlespeed.compareTo(max) == 1 || actualspindlespeed.compareTo(min) == -1) { |
| | | if (spindlespeed.compareTo(actualspindlespeed) == 1) { |
| | | // 设å®å¼å¤§äºå®é
å¼ ä½ |
| | | messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤è¿è¡è½¬é使¥è¦ï¼"); |
| | | sysBaseApi.sendSysAnnouncement(messageDTO); |
| | | mdcOverrunAlarm.setAlarmContent("设å¤è¿è¡è½¬éæ¯NC代ç 设å®å¼ä½æ¥è¦"); |
| | | mdcOverrunAlarmService.save(mdcOverrunAlarm); |
| | | } else if (spindlespeed.compareTo(actualspindlespeed) == -1) { |
| | | // 设å®å¼å°äºå®é
å¼ é« |
| | | messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤è¿è¡è½¬é髿¥è¦ï¼"); |
| | | sysBaseApi.sendSysAnnouncement(messageDTO); |
| | | mdcOverrunAlarm.setAlarmContent("设å¤è¿è¡è½¬éæ¯NC代ç 设å®å¼é«æ¥è¦"); |
| | | mdcOverrunAlarmService.save(mdcOverrunAlarm); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | quartzLog.setIsSuccess(0); |
| | | } catch (Exception e) { |
| | | quartzLog.setIsSuccess(-1); |
| | | quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); |
| | | // åéæ¶æ¯éç¥ |
| | | sysAnnouncementService.jobSendMessage("çæ§è®¾å¤è¿è¡è½¬éä¸NCç¨åºè®¾å®è½¬é对æ¯ï¼", quartzLog.getExceptionDetail()); |
| | | } |
| | | long endTime = System.currentTimeMillis(); |
| | | quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); |
| | | sysQuartzLogService.save(quartzLog); |
| | | } |
| | | } |