package com.mes.job; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mes.common.config.Const; import com.mes.edgglasstask.entity.EdgGlassTaskInfo; import com.mes.edgglasstask.service.EdgGlassTaskInfoService; import com.mes.edgstoragecage.entity.vo.CutDrawingVO; import com.mes.edgstoragecage.entity.vo.EdgStorageCageVO; import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; import com.mes.edgstoragecage.service.EdgStorageCageService; import com.mes.engineering.entity.Engineering; import com.mes.engineering.service.EngineeringService; import com.mes.opctask.entity.EdgStorageDeviceTask; import com.mes.opctask.entity.EdgStorageDeviceTaskHistory; import com.mes.opctask.service.EdgStorageDeviceTaskHistoryService; import com.mes.opctask.service.EdgStorageDeviceTaskService; import com.mes.tools.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.CompletionStage; /** * @Author : zhoush * @Date: 2024/12/4 9:41 * @Description: */ @Component @Slf4j public class PushMessageToIndex { @Resource EdgStorageCageDetailsService edgStorageCageDetailsService; @Resource EdgStorageCageService edgStorageCageService; @Resource EdgGlassTaskInfoService edgGlassTaskInfoService; @Resource EdgStorageDeviceTaskService edgStorageDeviceTaskService; @Resource EdgStorageDeviceTaskHistoryService edgStorageDeviceTaskHistoryService; @Resource EngineeringService engineeringService; private static final String EDG_STORAGE_DEVICE_ONE_TASK = "edg_storage_device_one_task"; private static final String EDG_STORAGE_DEVICE_TWO_TASK = "edg_storage_device_two_task"; @Scheduled(fixedDelay = 1000) public void CacheGlassOneTasks() { CacheGlassTasksChild("cacheGlassOne", 1); } @Scheduled(fixedDelay = 1000) public void CacheGlassTwoTasks() { CacheGlassTasksChild("cacheGlassTwo", 2); } private void CacheGlassTasksChild(String webSocketName, int deviceId) { JSONObject jsonObject = new JSONObject(); //卧室缓存笼内信息 List edgStorageCageVOS = edgStorageCageService.selectEdgStorageCagesByDeviceId(deviceId); jsonObject.append("EdgStorageCageinfos", edgStorageCageVOS); //获取正在整形中的任务 EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper() .eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId) .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1")); jsonObject.append("taskMessage", taskHistory); ArrayList sendwServer = WebSocketServer.sessionMap.get(webSocketName); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("Home is closed"); } } } } @Scheduled(fixedDelay = 1000) public void currentCutDrawingOneTask() { currentCutDrawingTaskChild("currentCutDrawingOne", 1, 5); } @Scheduled(fixedDelay = 1000) public void currentCutDrawingTwoTask() { currentCutDrawingTaskChild("currentCutDrawingTwo", 2, 6); } public void currentCutDrawingTaskChild(String webSocketName, int deviceId, int stationCell) { JSONObject jsonObject = new JSONObject(); List currentCutDrawings = edgStorageCageDetailsService.queryCurrentCutDrawing(deviceId, stationCell); jsonObject.append("currentCutTerritory", currentCutDrawings); ArrayList sendwServer = WebSocketServer.sessionMap.get(webSocketName); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("Home is closed"); } } } } @Scheduled(fixedDelay = 1000) public void CacheGlassTaskss() { JSONObject jsonObject = new JSONObject(); //磨边信息 List edgTasks = edgGlassTaskInfoService.selectEdgInfo(); jsonObject.append("edgTasks", edgTasks); ArrayList sendwServer = WebSocketServer.sessionMap.get("edgTasks"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("edgTasks is closed"); } } } } @Scheduled(fixedDelay = 1000) public void largenScreen() { JSONObject jsonObject = new JSONObject(); //磨边信息 List edgOneTasks = edgStorageDeviceTaskHistoryService.list( new LambdaQueryWrapper() .eq(EdgStorageDeviceTaskHistory::getDeviceId, 1) .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.EDG_GLASS_BEFORE) ); List edgTwoTasks = edgStorageDeviceTaskHistoryService.list( new LambdaQueryWrapper() .eq(EdgStorageDeviceTaskHistory::getDeviceId, 1) .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.EDG_GLASS_BEFORE) ); jsonObject.append("edgOneTasks", edgOneTasks); jsonObject.append("edgTwoTasks", edgTwoTasks); List engineeringOne = engineeringService.list( new LambdaQueryWrapper() .eq(Engineering::getStationCell, 5) .eq(Engineering::getState, 0) ); List engineeringTow = engineeringService.list( new LambdaQueryWrapper() .eq(Engineering::getStationCell, 6) .eq(Engineering::getState, 0) ); jsonObject.append("engineeringOne", engineeringOne); jsonObject.append("engineeringTwo", engineeringTow); ArrayList sendwServer = WebSocketServer.sessionMap.get("largenScreen"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("largenScreen is closed"); } } } } }