Lius
2025-03-06 36deabe1df249a56a553fb606447dd326a2c81a7
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
@@ -23,16 +23,18 @@
import org.quartz.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @author Lius
 * @Description: 监控设备运行转速与NC程序设定转速对比
 * @date 2024/3/4 16:14
 */
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
@Slf4j
public class RunningMonitoringSpeedJob implements Job {
@@ -72,65 +74,65 @@
            // 获取字典数据
            List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_OPERATING_SPEED_RANGE);
            Integer range = 0;
            BigDecimal range = BigDecimal.ZERO;
            if (dictModelList != null && !dictModelList.isEmpty()) {
                range = Integer.valueOf(dictModelList.get(0).getValue());
                range = new BigDecimal(dictModelList.get(0).getValue());
            }
            Map<String, String> proNamesByEquipmentIds = mdcEquipmentService.getProNamesByEquipmentIds(mdcEquipmentList.stream().map(MdcEquipment::getId).collect(Collectors.toList()));
            for (MdcEquipment mdcEquipment : mdcEquipmentList) {
                String productionName = proNamesByEquipmentIds.get(mdcEquipment.getId());
                String saveTableName = mdcEquipment.getSaveTableName();
                MdcEquipmentDto mdcEquipmentDto = new MdcEquipmentDto();
                try {
                    //查询单表数据
                    mdcEquipmentDto = mdcEquipmentService.getWorkLineLast(saveTableName);
                } catch (Exception e) {
                    log.error("查询单表数据失败!", e);
                }
                if (StringUtils.isNotBlank(mdcEquipmentDto.getSpindlespeed()) && StringUtils.isNotBlank(mdcEquipmentDto.getActualspindlespeed())) {
                //查询单表数据
                mdcEquipmentDto = mdcEquipmentService.getWorkLineLast(saveTableName);
                if (mdcEquipmentDto != null && StringUtils.isNotBlank(mdcEquipmentDto.getSpindlespeed()) && StringUtils.isNotBlank(mdcEquipmentDto.getActualspindlespeed())) {
                    MessageDTO messageDTO = new MessageDTO();
                    messageDTO.setTitle("设备运行转速报警!");
                    messageDTO.setCategory("预警消息");
                    messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备 [" + mdcEquipment.getEquipmentId() + "] 运行转速!");
                    messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                    messageDTO.setFromUser("admin");
                    messageDTO.setToUser("admin");
                    //设定
                    Integer spindlespeed = Integer.valueOf(mdcEquipmentDto.getSpindlespeed());
                    BigDecimal spindlespeed = new BigDecimal(mdcEquipmentDto.getSpindlespeed());
                    //实际
                    Integer actualspindlespeed = Integer.valueOf(mdcEquipmentDto.getActualspindlespeed());
                    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(0)) {
                        if (spindlespeed > actualspindlespeed) {
                    if (range.equals(BigDecimal.ZERO)) {
                        if (spindlespeed.compareTo(actualspindlespeed) == 1) {
                            // 设定值大于实际值   低
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低!");
                            sysBaseApi.sendSysAnnouncement(messageDTO);
                            mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低报警");
                            mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低");
                            mdcOverrunAlarmService.save(mdcOverrunAlarm);
                        } else if (spindlespeed < actualspindlespeed) {
                        } else if (spindlespeed.compareTo(actualspindlespeed) == -1) {
                            // 设定值小于实际值   高
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高!");
                            sysBaseApi.sendSysAnnouncement(messageDTO);
                            mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高报警");
                            mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高");
                            mdcOverrunAlarmService.save(mdcOverrunAlarm);
                        }
                    } else {
                        int max = spindlespeed + spindlespeed * (range / 100);
                        int min = spindlespeed - spindlespeed * (range / 100);
                        if (actualspindlespeed > max || actualspindlespeed < min) {
                            if (spindlespeed > actualspindlespeed) {
                        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() + "] 的设备运行转速低报警!");
                                messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低!");
                                sysBaseApi.sendSysAnnouncement(messageDTO);
                                mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低报警");
                                mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低");
                                mdcOverrunAlarmService.save(mdcOverrunAlarm);
                            } else if (spindlespeed < actualspindlespeed) {
                            } else if (spindlespeed.compareTo(actualspindlespeed) == -1) {
                                // 设定值小于实际值   高
                                messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!");
                                messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高!");
                                sysBaseApi.sendSysAnnouncement(messageDTO);
                                mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高报警");
                                mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高");
                                mdcOverrunAlarmService.save(mdcOverrunAlarm);
                            }
                        }