package org.jeecg.modules.mdc.job; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.constant.WebsocketConst; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.board.vo.EquStatus; import org.jeecg.modules.mdc.entity.Equipment; import org.jeecg.modules.mdc.service.IEquipmentService; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.message.websocket.WebSocket; import org.jeecg.modules.system.service.IMdcProductionService; import org.quartz.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** * @Author: Lius * @CreateTime: 2025-06-05 * @Description: websocket推送设备状态任务 */ @DisallowConcurrentExecution @Slf4j public class WebsocketPushEquStatusJob implements Job { @Resource private RedisUtil redisUtil; @Resource private WebSocket webSocket; @Resource private IEquipmentService equipmentService; @Resource private IMdcProductionService mdcProductionService; final private static String redisKey = "board:equipment:status:"; @Override public void execute(JobExecutionContext context) throws JobExecutionException { try { List equipmentList = equipmentService.list(); if (equipmentList != null && !equipmentList.isEmpty()) { List equStatusList = new ArrayList<>(); for (Equipment equipment : equipmentList) { if (equipment.getOporation() == null) { equipment.setOporation(0); } String key = redisKey + equipment.getEquipmentid(); if (redisUtil.hasKey(key)) { Integer status = (Integer) redisUtil.get(key); if (!status.equals(equipment.getOporation())) { EquStatus equStatus = new EquStatus(); equStatus.setEquipmentId(equipment.getEquipmentid()); equStatus.setState(equipment.getOporation()); // 通过equipmentId获取设备车间名称 String productionName = mdcProductionService.findProName(equipment.getEquipmentid()); equStatus.setPlantName(productionName); equStatusList.add(equStatus); redisUtil.set(key, equipment.getOporation()); } } else { EquStatus equStatus = new EquStatus(); equStatus.setEquipmentId(equipment.getEquipmentid()); equStatus.setState(equipment.getOporation()); // 通过equipmentId获取设备车间名称 String productionName = mdcProductionService.findProName(equipment.getEquipmentid()); equStatus.setPlantName(productionName); equStatusList.add(equStatus); redisUtil.set(key, equipment.getOporation()); } } JSONObject jsonObject = new JSONObject(); jsonObject.put(WebsocketConst.MSG_CMD, "equStatus"); jsonObject.put("data", equStatusList); webSocket.sendMessage(jsonObject.toJSONString()); } } catch (Exception e) { log.error("websocket推送设备状态任务失败 原因:" + ThrowableUtil.getStackTrace(e)); } } }