ZengTao
2025-03-14 2c08bfb96d6523dfbf5ae543e94495c151aadbf1
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -1,10 +1,21 @@
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.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;
@@ -13,7 +24,6 @@
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @Author : zhoush
@@ -30,18 +40,44 @@
    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 CacheGlassTasks() {
        JSONObject jsonObject = new JSONObject();
        List<Map<String, Object>> currentCutTerritorys = edgStorageCageDetailsService.selectCutTerritory();
        jsonObject.append("currentCutTerritory", currentCutTerritorys);
        //log.info("本次识别版图{},++++{}",engineerId,currentCutTerritorys);
        //卧室缓存笼内信息
        List<Map<String, Object>> EdgStorageCageinfos = edgStorageCageService.selectEdgStorageCages();
        jsonObject.append("EdgStorageCageinfos", EdgStorageCageinfos);
    public void CacheGlassOneTasks() {
        CacheGlassTasksChild("cacheGlassOne", 1);
    }
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
    @Scheduled(fixedDelay = 1000)
    public void CacheGlassTwoTasks() {
        CacheGlassTasksChild("cacheGlassTwo", 2);
    }
    private void CacheGlassTasksChild(String webSocketName, int deviceId) {
        JSONObject jsonObject = new JSONObject();
        //卧室缓存笼内信息
        List<EdgStorageCageVO> edgStorageCageVOS = edgStorageCageService.selectEdgStorageCagesByDeviceId(deviceId);
        jsonObject.append("EdgStorageCageinfos", edgStorageCageVOS);
        //获取正在整形中的任务
        EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
                .eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId)
                .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
                .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1"));
        jsonObject.append("taskMessage", taskHistory);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get(webSocketName);
        if (sendwServer != null) {
            for (WebSocketServer webserver : sendwServer) {
                if (webserver != null) {
@@ -59,16 +95,27 @@
    }
    @Scheduled(fixedDelay = 1000)
    public void cacheGlassIsRun() {
        JSONObject jsonObject = new JSONObject();
        //正在进行的任务
        List<EdgGlassTaskInfo> taskCaches = edgGlassTaskInfoService.selectTaskCacheIsRun();
        jsonObject.append("taskCaches", taskCaches);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlassIsRun");
    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<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get(webSocketName);
        if (sendwServer != null) {
            for (WebSocketServer webserver : sendwServer) {
                if (webserver != null) {
                    webserver.sendMessage(jsonObject.toString());
                    List<String> messages = webserver.getMessages();
                    if (!messages.isEmpty()) {
                        // // 将最后一个消息转换为整数类型的列表
                        webserver.clearMessages();
                    }
                } else {
                    log.info("Home is closed");
                }
@@ -79,7 +126,6 @@
    @Scheduled(fixedDelay = 1000)
    public void CacheGlassTaskss() {
        JSONObject jsonObject = new JSONObject();
        //log.info("本次识别版图{},++++{}",engineerId,currentCutTerritorys);
        //磨边信息
        List<EdgGlassTaskInfo> edgTasks = edgGlassTaskInfoService.selectEdgInfo();
        jsonObject.append("edgTasks", edgTasks);
@@ -100,4 +146,72 @@
            }
        }
    }
    @Scheduled(fixedDelay = 1000)
    public void querySameDayProductionTask() {
        JSONObject jsonObject = new JSONObject();
        DailyProductionVO productionVO = largenScreenService.querySameDayProduction(new DateRequest());
        jsonObject.append("productionVO", productionVO);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreenProduction");
        if (sendwServer != null) {
            for (WebSocketServer webserver : sendwServer) {
                if (webserver != null) {
                    webserver.sendMessage(jsonObject.toString());
                    List<String> messages = webserver.getMessages();
                    if (!messages.isEmpty()) {
                        // // 将最后一个消息转换为整数类型的列表
                        webserver.clearMessages();
                    }
                } else {
                    log.info("largenScreenProduction is closed");
                }
            }
        }
    }
    @Scheduled(fixedDelay = 1000)
    public void largenScreen() {
        JSONObject jsonObject = new JSONObject();
        //磨边信息
        List<EdgStorageDeviceTaskHistory> edgOneTasks = edgStorageDeviceTaskHistoryService.list(
                new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
                        .eq(EdgStorageDeviceTaskHistory::getDeviceId, 1)
                        .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.EDG_GLASS_BEFORE)
        );
        List<EdgStorageDeviceTaskHistory> edgTwoTasks = edgStorageDeviceTaskHistoryService.list(
                new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
                        .eq(EdgStorageDeviceTaskHistory::getDeviceId, 2)
                        .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.EDG_GLASS_BEFORE)
        );
        jsonObject.append("edgOneTasks", edgOneTasks);
        jsonObject.append("edgTwoTasks", edgTwoTasks);
        List<Engineering> engineeringOne = engineeringService.list(
                new LambdaQueryWrapper<Engineering>()
                        .eq(Engineering::getStationCell, 5)
                        .eq(Engineering::getState, 0)
        );
        List<Engineering> engineeringTow = engineeringService.list(
                new LambdaQueryWrapper<Engineering>()
                        .eq(Engineering::getStationCell, 6)
                        .eq(Engineering::getState, 0)
        );
        jsonObject.append("engineeringOne", engineeringOne);
        jsonObject.append("engineeringTwo", engineeringTow);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen");
        if (sendwServer != null) {
            for (WebSocketServer webserver : sendwServer) {
                if (webserver != null) {
                    webserver.sendMessage(jsonObject.toString());
                    List<String> messages = webserver.getMessages();
                    if (!messages.isEmpty()) {
                        // // 将最后一个消息转换为整数类型的列表
                        webserver.clearMessages();
                    }
                } else {
                    log.info("largenScreen is closed");
                }
            }
        }
    }
}