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.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.largenscreen.entity.DailyProductionVO; import com.mes.largenscreen.entity.DateRequest; import com.mes.largenscreen.entity.PieChartVO; import com.mes.largenscreen.entity.RunTime; import com.mes.largenscreen.service.LargenScreenService; 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; /** * @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; @Resource LargenScreenService largenScreenService; 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 = edgStorageCageDetailsService.queryCurrentCutDrawing(deviceId, stationCell); 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 querySameDayProductionTask() { JSONObject jsonObject = new JSONObject(); ArrayList sendwServer = WebSocketServer.sessionMap.get("largenScreenProduction"); if (sendwServer != null) { List productionVO = largenScreenService.querySameDayProduction(new DateRequest()); jsonObject.append("productionVO", productionVO); for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("largenScreenProduction is closed"); } } } } @Scheduled(fixedDelay = 500) public void largenScreen() { JSONObject jsonObject = new JSONObject(); //磨边信息 ArrayList sendwServer = WebSocketServer.sessionMap.get("largenScreen"); if (sendwServer != null) { List edgOneTasks = edgGlassTaskInfoService.list( new LambdaQueryWrapper() .lt(EdgGlassTaskInfo::getState, 2) .eq(EdgGlassTaskInfo::getLine, 1) ); List edgTwoTasks = edgGlassTaskInfoService.list( new LambdaQueryWrapper() .lt(EdgGlassTaskInfo::getState, 2) .eq(EdgGlassTaskInfo::getLine, 2) ); 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); List pieChartVOS = edgStorageCageDetailsService.queryPieChart(); jsonObject.append("pieChartVOS", pieChartVOS); List loadRunTimes = edgStorageDeviceTaskHistoryService.queryRunTimes(); jsonObject.append("loadRunTimes", loadRunTimes); 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"); } } } } }