wangfei
2025-11-04 aea7379082d3a9d53a35f62e8ff435254be8d213
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -2,6 +2,8 @@
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mes.alarm.entity.ProductAlarmInfo;
import com.mes.alarm.service.ProductAlarmInfoService;
import com.mes.common.config.Const;
import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
@@ -18,15 +20,17 @@
import com.mes.opctask.entity.EdgStorageDeviceTaskHistory;
import com.mes.opctask.service.EdgStorageDeviceTaskHistoryService;
import com.mes.opctask.service.EdgStorageDeviceTaskService;
import com.mes.tools.WebSocketServer;
import com.mes.tools.WebSocketUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
@@ -53,11 +57,16 @@
    EngineeringService engineeringService;
    @Resource
    LargenScreenService largenScreenService;
    @Resource
    private ProductAlarmInfoService productAlarmInfoService;
    private static final String ALARM_MODULE = "磨边";
    private static final String ALARM_TYPE1 = "一线卧式理片笼";
    private static final String ALARM_TYPE2 = "二线卧式理片笼";
    private static final String ALARM_CODE_NOGLASS = "noGlass";
    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";
    @Resource
    private WebSocketUtils webSocketUtils;
    @Scheduled(fixedDelay = 1000)
    public void CacheGlassOneTasks() {
@@ -82,21 +91,20 @@
                .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) {
                    webserver.sendMessage(jsonObject.toString());
                    List<String> messages = webserver.getMessages();
                    if (!messages.isEmpty()) {
                        // // 将最后一个消息转换为整数类型的列表
                        webserver.clearMessages();
                    }
                } else {
                    log.info("Home is closed");
                }
            }
        //推送报警信息
        if (deviceId == 1) {
            jsonObject.append("alarmInfo", productAlarmInfoService.list(new LambdaQueryWrapper<ProductAlarmInfo>()
                    .eq(ProductAlarmInfo::getState, Const.LOAD_RAW_GLASS_NEW)
                    .eq(ProductAlarmInfo::getAlarmModule, ALARM_MODULE)
                    .eq(ProductAlarmInfo::getAlarmType, ALARM_TYPE1)));
        } else {
            jsonObject.append("alarmInfo", productAlarmInfoService.list(new LambdaQueryWrapper<ProductAlarmInfo>()
                    .eq(ProductAlarmInfo::getState, Const.LOAD_RAW_GLASS_NEW)
                    .eq(ProductAlarmInfo::getAlarmModule, ALARM_MODULE)
                    .eq(ProductAlarmInfo::getAlarmType, ALARM_TYPE2)));
        }
        webSocketUtils.sendToWeb(webSocketName, jsonObject);
    }
    @Scheduled(fixedDelay = 1000)
@@ -111,21 +119,7 @@
    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");
                }
            }
        }
        webSocketUtils.sendToWeb(webSocketName, jsonObject);
    }
    @Scheduled(fixedDelay = 1000)
@@ -134,97 +128,62 @@
        //磨边信息
        List<EdgGlassTaskInfo> edgTasks = edgGlassTaskInfoService.selectEdgInfo();
        jsonObject.append("edgTasks", edgTasks);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("edgTasks");
        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("edgTasks is closed");
                }
            }
        }
        webSocketUtils.sendToWeb("edgTasks", jsonObject);
    }
    @Scheduled(fixedDelay = 1000)
    @Scheduled(fixedDelay = 5000)
    public void querySameDayProductionTask() {
        JSONObject jsonObject = new JSONObject();
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreenProduction");
        if (sendwServer != null) {
            List<DailyProductionVO> productionVO = largenScreenService.querySameDayProduction(new DateRequest());
            jsonObject.append("productionVO", productionVO);
            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");
                }
            }
        }
        List<DailyProductionVO> productionVO = largenScreenService.querySameDayProduction(new DateRequest());
        jsonObject.append("productionVO", productionVO);
        webSocketUtils.sendToWeb("largenScreenProduction", jsonObject);
    }
    @Scheduled(fixedDelay = 500)
    @Scheduled(fixedDelay = 5000)
    public void largenScreen() {
        JSONObject jsonObject = new JSONObject();
        //磨边信息
        Date startOfToday = new Date(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String formatted = sdf.format(startOfToday);
        LocalDate date = LocalDate.parse(formatted); // formatted = "2025-05-23"
        LocalDateTime start = date.atStartOfDay(); // 2025-05-23 00:00:00
        LocalDateTime end = date.plusDays(1).atStartOfDay();
        int edgOneCount = edgGlassTaskInfoService.count(
                new LambdaQueryWrapper<EdgGlassTaskInfo>()
                        .lt(EdgGlassTaskInfo::getState, 2)
                        .eq(EdgGlassTaskInfo::getLine, 1)
                        .between(EdgGlassTaskInfo::getCreateTime, start, end)
        );
        edgOneCount = edgOneCount >= 6 ? 6 : edgOneCount;
        int edgTwoCount = edgGlassTaskInfoService.count(
                new LambdaQueryWrapper<EdgGlassTaskInfo>()
                        .lt(EdgGlassTaskInfo::getState, 2)
                        .eq(EdgGlassTaskInfo::getLine, 2)
                        .between(EdgGlassTaskInfo::getCreateTime, start, end)
        );
        edgTwoCount = edgTwoCount >= 6 ? 6 : edgTwoCount;
        jsonObject.append("edgOneCount", edgOneCount);
        jsonObject.append("edgTwoCount", edgTwoCount);
        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);
        List<PieChartVO> pieChartVOS = edgStorageCageDetailsService.queryPieChart();
        jsonObject.append("pieChartVOS", pieChartVOS);
        List<RunTime> loadRunTimes = edgStorageDeviceTaskHistoryService.queryRunTimes(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        jsonObject.append("loadRunTimes", loadRunTimes);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen");
        if (sendwServer != null) {
            Date startOfToday = new Date(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli());
        webSocketUtils.sendToWeb("largenScreen", jsonObject);
            List<EdgGlassTaskInfo> edgOneTasks = edgGlassTaskInfoService.list(
                    new LambdaQueryWrapper<EdgGlassTaskInfo>()
                            .lt(EdgGlassTaskInfo::getState, 2)
                            .eq(EdgGlassTaskInfo::getLine, 1)
                            .ge(EdgGlassTaskInfo::getCreateTime, startOfToday)
            );
            List<EdgGlassTaskInfo> edgTwoTasks = edgGlassTaskInfoService.list(
                    new LambdaQueryWrapper<EdgGlassTaskInfo>()
                            .lt(EdgGlassTaskInfo::getState, 2)
                            .eq(EdgGlassTaskInfo::getLine, 2)
                            .ge(EdgGlassTaskInfo::getCreateTime, startOfToday)
            );
            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);
            List<PieChartVO> pieChartVOS = edgStorageCageDetailsService.queryPieChart();
            jsonObject.append("pieChartVOS", pieChartVOS);
            List<RunTime> loadRunTimes = edgStorageDeviceTaskHistoryService.queryRunTimes();
            jsonObject.append("loadRunTimes", loadRunTimes);
            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");
                }
            }
        }
    }
}