wangfei
2025-09-23 3a60ee203ba55ff9df9bcc81b465cfaeb5faf05b
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -1,18 +1,19 @@
package com.mes.job;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
import com.kangaroohy.milo.service.MiloService;
import com.mes.alarm.entity.ProductAlarmInfo;
import com.mes.alarm.service.ProductAlarmInfoService;
import com.mes.bigstoragecagetask.entity.BigStorageCageTask;
import com.mes.bigstoragecagetask.entity.BigStorageTaskVO;
import com.mes.bigstoragecagetask.service.BigStorageCageTaskService;
import com.mes.common.config.Const;
import com.mes.hollow.entity.HollowBigStorageCageDetails;
import com.mes.hollow.entity.HollowGlassOutRelationInfo;
import com.mes.hollow.entity.dto.FlowCardGlassInfoDTO;
import com.mes.hollow.entity.dto.LackDetailsDTO;
import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
import com.mes.hollow.service.HollowBigStorageCageDetailsService;
import com.mes.hollow.service.HollowBigStorageCageService;
@@ -26,7 +27,6 @@
import com.mes.s7.entity.S7DataZKDLPOne;
import com.mes.s7.entity.S7DataZKDLPTwo;
import com.mes.s7.entity.S7DataZKExtra;
import com.mes.tools.WebSocketServer;
import com.mes.tools.WebSocketUtils;
import com.mes.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
@@ -42,7 +42,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @Author : zhoush
@@ -70,6 +69,8 @@
    @Autowired(required = false)
    MiloService miloService;
    @Resource
    ProductAlarmInfoService productAlarmInfoService;
    @Autowired
    @Qualifier("s7SerializerZKDLPOne")
@@ -98,6 +99,10 @@
    @Resource
    RedisUtil redisUtil;
    private static final String ALARM_MODULE = "中空";
    private static final String ALARM_TYPE = "中空大理片";
    private static final String ALARM_CODE = "sizeSame";
    @Scheduled(fixedDelay = 5000)
    public void hollowGlassTaskOne() {
        hollowGlassTaskChild(930, CMJ1ModbusTcp.readUInt16(42027 - offset) + "", "HollowGlassOne");
@@ -117,21 +122,22 @@
    }
    public void hollowGlassTaskChild(int cell, String isFreeTag, String websocketName) {
        List<HollowGlassOutRelationInfo> taskList = hollowGlassOutRelationInfoService.list(new LambdaQueryWrapper<HollowGlassOutRelationInfo>()
                .in(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START).eq(HollowGlassOutRelationInfo::getCell, cell));
        JSONObject jsonObject = new JSONObject();
        if (CollectionUtil.isNotEmpty(taskList)) {
            List<Long> taskIdList = taskList.stream().map(HollowGlassOutRelationInfo::getId).collect(Collectors.toList());
            List<HollowGlassQueueInfo> list = hollowGlassQueueInfoService.list(new LambdaQueryWrapper<HollowGlassQueueInfo>().in(HollowGlassQueueInfo::getRelationId, taskIdList));
            jsonObject.append("queueInfo", list);
        }
//        List<HollowGlassOutRelationInfo> taskList = hollowGlassOutRelationInfoService.list(new LambdaQueryWrapper<HollowGlassOutRelationInfo>()
//                .in(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START).eq(HollowGlassOutRelationInfo::getCell, cell));
        JSONObject jsonObject = new JSONObject(true);
//        if (CollectionUtil.isNotEmpty(taskList)) {
//            List<Long> taskIdList = taskList.stream().map(HollowGlassOutRelationInfo::getId).collect(Collectors.toList());
//            List<HollowGlassQueueInfo> list = hollowGlassQueueInfoService.list(new LambdaQueryWrapper<HollowGlassQueueInfo>().in(HollowGlassQueueInfo::getRelationId, taskIdList));
//            jsonObject.append("queueInfo", list);
//        }
        Map<String, List<HollowGlassQueueInfo>> queueInfo = hollowGlassOutRelationInfoService.appointHollowTaskDetails(cell);
        jsonObject.append("queueInfo", queueInfo);
        try {
            jsonObject.append("freeRequest", isFreeTag);
        } catch (Exception e) {
            log.error("opc存在异常", e);
        }
        webSocketUtils.sendToWeb(websocketName,jsonObject);
        webSocketUtils.sendToWeb(websocketName, jsonObject);
    }
    @Scheduled(fixedDelay = 1000)
@@ -140,7 +146,7 @@
        try {
            //查询使用数据源1查询数据
            queryDataSource1(jsonObject);
            webSocketUtils.sendToWeb("hollowGlassMessage",jsonObject);
            webSocketUtils.sendToWeb("hollowGlassMessage", jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
        }
@@ -148,9 +154,9 @@
    public void queryDataSource1(JSONObject jsonObject) throws Exception {
//        S7DataZKDLPOne s7DataZKDLPOne = s7SerializerZKDLPOne.read(S7DataZKDLPOne.class);
//        S7DataZKDLPTwo s7DataZKDLPTwo = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class);
//        S7DataZKExtra s7DataZKExtra = s7SerializerZKQ2.read(S7DataZKExtra.class);
        S7DataZKDLPOne s7DataZKDLPOne = s7SerializerZKDLPOne.read(S7DataZKDLPOne.class);
        S7DataZKDLPTwo s7DataZKDLPTwo = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class);
        S7DataZKExtra s7DataZKExtra = s7SerializerZKQ2.read(S7DataZKExtra.class);
        List<Double> carPostion = new ArrayList<>();
        carPostion.add(0.25);
        carPostion.add(0.5);
@@ -158,150 +164,150 @@
        //界面展示笼子信息
        jsonObject.append("bigStorageCageInfos", hollowBigStorageCageDetailsService.queryHollowbigStorageCageDetail());
//        try {
//            //进片任务数据
//            List<BigStorageTaskVO> inTaskList = new ArrayList();
//            String fromOpcUa = s7DataZKDLPOne.getFrom1().toString();
//            for (int i = 0; i < 6; i++) {
//                String requestWord = "";
//                String stateWord = "";
//                String targetSlotWord = "";
//                switch (i) {
//                    case 0:
//                        requestWord = s7DataZKDLPOne.getId1();
//                        stateWord = s7DataZKDLPOne.getState1().toString();
//                        targetSlotWord = s7DataZKDLPOne.getTo1().toString();
//                        break;
//                    case 1:
//                        requestWord = s7DataZKDLPOne.getId2();
//                        stateWord = s7DataZKDLPOne.getState2().toString();
//                        targetSlotWord = s7DataZKDLPOne.getTo2().toString();
//                        break;
//                    case 2:
//                        requestWord = s7DataZKDLPOne.getId3();
//                        stateWord = s7DataZKDLPOne.getState3().toString();
//                        targetSlotWord = s7DataZKDLPOne.getTo3().toString();
//                        break;
//                    case 3:
//                        requestWord = s7DataZKDLPOne.getId4();
//                        stateWord = s7DataZKDLPOne.getState4().toString();
//                        targetSlotWord = s7DataZKDLPOne.getTo4().toString();
//                        break;
//                    case 4:
//                        requestWord = s7DataZKDLPOne.getId5();
//                        stateWord = s7DataZKDLPOne.getState5().toString();
//                        targetSlotWord = s7DataZKDLPOne.getTo5().toString();
//                        break;
//                    case 5:
//                        requestWord = s7DataZKDLPOne.getId6();
//                        stateWord = s7DataZKDLPOne.getState6().toString();
//                        targetSlotWord = s7DataZKDLPOne.getTo6().toString();
//                        break;
//                }
//                if (StringUtils.isNotEmpty(requestWord)) {
//                    BigStorageTaskVO task = new BigStorageTaskVO();
//                    task.setGlassId(requestWord);
//                    int isExistCount = hollowBigStorageCageDetailsService.count(new LambdaQueryWrapper<HollowBigStorageCageDetails>().in(HollowBigStorageCageDetails::getGlassId, task.getGlassId())
//                            .in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
//                    if (isExistCount > 0) {
//                        task.setIsSame(1);
//                    } else {
//                        task.setIsSame(0);
//                    }
//                    task.setStartSlot(Integer.parseInt(fromOpcUa));
//                    task.setTargetSlot(Integer.parseInt(targetSlotWord));
//                    task.setTaskState(Integer.parseInt(stateWord));
//                    inTaskList.add(task);
//                    continue;
//                }
//            }
//            jsonObject.append("bigStorageCageDetailsFeedTask", inTaskList);
//        } catch (Exception e) {
//            //todo:不做任务处理
//        }
//        try {
//            //进片联机
//            Boolean inkageEntity = s7DataZKDLPOne.getMesControl();
//            jsonObject.append("inkageEntity", inkageEntity);
//            //进片请求
//            String requestEntity = s7DataZKDLPOne.getRequestMes().toString();
//            jsonObject.append("requestEntity", requestEntity);
//            //启动命令
//            String mesReplyEntity = s7DataZKDLPOne.getMesReply().toString();
//            jsonObject.append("mesReplyEntity", mesReplyEntity);
//            //出片联机
//            String outInkageEntity = s7DataZKDLPTwo.getMesControl().toString();
//            jsonObject.append("outInkageEntity", outInkageEntity);
//            //出片请求
//            String outRequestEntity = s7DataZKDLPTwo.getRequestMes().toString();
//            jsonObject.append("outInkageEntity", outInkageEntity);
//            //930空闲信号
//            jsonObject.append("freeOneRequestEntity", CMJ1ModbusTcp.readUInt16(42027 - offset));
//            //931空闲信号
//            jsonObject.append("freeTwoRequestEntity", s7DataZKExtra.getIsFree());
//            //932空闲信号
//            jsonObject.append("freeThreeRequestEntity", s7DataZKExtra.getIsFree());
//        } catch (Exception e) {
//            //todo:不做任务处理
//        }
//
//        //出片任务数据
//        List<BigStorageCageTask> outTaskList = new ArrayList<>();
//        for (int i = 0; i < 6; i++) {
//
//            BigStorageCageTask bigStorageCageTask = new BigStorageCageTask();
//            String glassId = "";
//            Integer startSlot = 0;
//            Integer targetSlot = 0;
//            Integer taskState = 0;
//            switch (i) {
//                case 0:
//                    glassId = s7DataZKDLPTwo.getId1();
//                    startSlot = s7DataZKDLPTwo.getFrom1();
//                    targetSlot = s7DataZKDLPTwo.getTo1();
//                    taskState = s7DataZKDLPTwo.getState1();
//                    ;
//                    break;
//                case 1:
//                    glassId = s7DataZKDLPTwo.getId2();
//                    startSlot = s7DataZKDLPTwo.getFrom2();
//                    targetSlot = s7DataZKDLPTwo.getTo2();
//                    taskState = s7DataZKDLPTwo.getState2();
//                    break;
//                case 2:
//                    glassId = s7DataZKDLPTwo.getId3();
//                    startSlot = s7DataZKDLPTwo.getFrom3();
//                    targetSlot = s7DataZKDLPTwo.getTo3();
//                    taskState = s7DataZKDLPTwo.getState3();
//                    break;
//                case 3:
//                    glassId = s7DataZKDLPTwo.getId4();
//                    startSlot = s7DataZKDLPTwo.getFrom4();
//                    targetSlot = s7DataZKDLPTwo.getTo4();
//                    taskState = s7DataZKDLPTwo.getState4();
//                    break;
//                case 4:
//                    glassId = s7DataZKDLPTwo.getId5();
//                    startSlot = s7DataZKDLPTwo.getFrom5();
//                    targetSlot = s7DataZKDLPTwo.getTo5();
//                    taskState = s7DataZKDLPTwo.getState5();
//                    break;
//                case 5:
//                    glassId = s7DataZKDLPTwo.getId6();
//                    startSlot = s7DataZKDLPTwo.getFrom6();
//                    targetSlot = s7DataZKDLPTwo.getTo6();
//                    taskState = s7DataZKDLPTwo.getState6();
//                    break;
//            }
//            if (StringUtils.isNotEmpty(glassId)) {
//                bigStorageCageTask.setGlassId(glassId);
//                bigStorageCageTask.setStartSlot(startSlot);
//                bigStorageCageTask.setTargetSlot(targetSlot);
//                bigStorageCageTask.setTaskState(taskState);
//                outTaskList.add(bigStorageCageTask);
//            }
//        }
//        jsonObject.append("bigStorageCageDetailsOutTask", outTaskList);
        try {
            //进片任务数据
            List<BigStorageTaskVO> inTaskList = new ArrayList();
            String fromOpcUa = s7DataZKDLPOne.getFrom1().toString();
            for (int i = 0; i < 6; i++) {
                String requestWord = "";
                String stateWord = "";
                String targetSlotWord = "";
                switch (i) {
                    case 0:
                        requestWord = s7DataZKDLPOne.getId1();
                        stateWord = s7DataZKDLPOne.getState1().toString();
                        targetSlotWord = s7DataZKDLPOne.getTo1().toString();
                        break;
                    case 1:
                        requestWord = s7DataZKDLPOne.getId2();
                        stateWord = s7DataZKDLPOne.getState2().toString();
                        targetSlotWord = s7DataZKDLPOne.getTo2().toString();
                        break;
                    case 2:
                        requestWord = s7DataZKDLPOne.getId3();
                        stateWord = s7DataZKDLPOne.getState3().toString();
                        targetSlotWord = s7DataZKDLPOne.getTo3().toString();
                        break;
                    case 3:
                        requestWord = s7DataZKDLPOne.getId4();
                        stateWord = s7DataZKDLPOne.getState4().toString();
                        targetSlotWord = s7DataZKDLPOne.getTo4().toString();
                        break;
                    case 4:
                        requestWord = s7DataZKDLPOne.getId5();
                        stateWord = s7DataZKDLPOne.getState5().toString();
                        targetSlotWord = s7DataZKDLPOne.getTo5().toString();
                        break;
                    case 5:
                        requestWord = s7DataZKDLPOne.getId6();
                        stateWord = s7DataZKDLPOne.getState6().toString();
                        targetSlotWord = s7DataZKDLPOne.getTo6().toString();
                        break;
                }
                if (StringUtils.isNotEmpty(requestWord)) {
                    BigStorageTaskVO task = new BigStorageTaskVO();
                    task.setGlassId(requestWord);
                    int isExistCount = hollowBigStorageCageDetailsService.count(new LambdaQueryWrapper<HollowBigStorageCageDetails>().in(HollowBigStorageCageDetails::getGlassId, task.getGlassId())
                            .in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
                    if (isExistCount > 0) {
                        task.setIsSame(1);
                    } else {
                        task.setIsSame(0);
                    }
                    task.setStartSlot(Integer.parseInt(fromOpcUa));
                    task.setTargetSlot(Integer.parseInt(targetSlotWord));
                    task.setTaskState(Integer.parseInt(stateWord));
                    inTaskList.add(task);
                    continue;
                }
            }
            jsonObject.append("bigStorageCageDetailsFeedTask", inTaskList);
        } catch (Exception e) {
            //todo:不做任务处理
        }
        try {
            //进片联机
            Boolean inkageEntity = s7DataZKDLPOne.getMesControl();
            jsonObject.append("inkageEntity", inkageEntity);
            //进片请求
            String requestEntity = s7DataZKDLPOne.getRequestMes().toString();
            jsonObject.append("requestEntity", requestEntity);
            //启动命令
            String mesReplyEntity = s7DataZKDLPOne.getMesReply().toString();
            jsonObject.append("mesReplyEntity", mesReplyEntity);
            //出片联机
            String outInkageEntity = s7DataZKDLPTwo.getMesControl().toString();
            jsonObject.append("outInkageEntity", outInkageEntity);
            //出片请求
            String outRequestEntity = s7DataZKDLPTwo.getRequestMes().toString();
            jsonObject.append("outInkageEntity", outInkageEntity);
            //930空闲信号
            jsonObject.append("freeOneRequestEntity", CMJ1ModbusTcp.readUInt16(42027 - offset));
            //931空闲信号
            jsonObject.append("freeTwoRequestEntity", s7DataZKExtra.getIsFree());
            //932空闲信号
            jsonObject.append("freeThreeRequestEntity", s7DataZKExtra.getIsFree());
        } catch (Exception e) {
            //todo:不做任务处理
        }
        //出片任务数据
        List<BigStorageCageTask> outTaskList = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            BigStorageCageTask bigStorageCageTask = new BigStorageCageTask();
            String glassId = "";
            Integer startSlot = 0;
            Integer targetSlot = 0;
            Integer taskState = 0;
            switch (i) {
                case 0:
                    glassId = s7DataZKDLPTwo.getId1();
                    startSlot = s7DataZKDLPTwo.getFrom1();
                    targetSlot = s7DataZKDLPTwo.getTo1();
                    taskState = s7DataZKDLPTwo.getState1();
                    ;
                    break;
                case 1:
                    glassId = s7DataZKDLPTwo.getId2();
                    startSlot = s7DataZKDLPTwo.getFrom2();
                    targetSlot = s7DataZKDLPTwo.getTo2();
                    taskState = s7DataZKDLPTwo.getState2();
                    break;
                case 2:
                    glassId = s7DataZKDLPTwo.getId3();
                    startSlot = s7DataZKDLPTwo.getFrom3();
                    targetSlot = s7DataZKDLPTwo.getTo3();
                    taskState = s7DataZKDLPTwo.getState3();
                    break;
                case 3:
                    glassId = s7DataZKDLPTwo.getId4();
                    startSlot = s7DataZKDLPTwo.getFrom4();
                    targetSlot = s7DataZKDLPTwo.getTo4();
                    taskState = s7DataZKDLPTwo.getState4();
                    break;
                case 4:
                    glassId = s7DataZKDLPTwo.getId5();
                    startSlot = s7DataZKDLPTwo.getFrom5();
                    targetSlot = s7DataZKDLPTwo.getTo5();
                    taskState = s7DataZKDLPTwo.getState5();
                    break;
                case 5:
                    glassId = s7DataZKDLPTwo.getId6();
                    startSlot = s7DataZKDLPTwo.getFrom6();
                    targetSlot = s7DataZKDLPTwo.getTo6();
                    taskState = s7DataZKDLPTwo.getState6();
                    break;
            }
            if (StringUtils.isNotEmpty(glassId)) {
                bigStorageCageTask.setGlassId(glassId);
                bigStorageCageTask.setStartSlot(startSlot);
                bigStorageCageTask.setTargetSlot(targetSlot);
                bigStorageCageTask.setTaskState(taskState);
                outTaskList.add(bigStorageCageTask);
            }
        }
        jsonObject.append("bigStorageCageDetailsOutTask", outTaskList);
        //调度开关
        boolean dispatchHollowSwitch = false;
@@ -328,6 +334,15 @@
        HollowBigStorageDetailsQueryVO hollowBigStorageDetailsQueryVO = new HollowBigStorageDetailsQueryVO();
        List<FlowCardGlassInfoDTO> bigStorageCageUsageSummary = hollowGlassRelationInfoService.queryHollowAllFlowCardSummary(hollowBigStorageDetailsQueryVO);
        jsonObject.append("bigStorageCageUsageSummary", bigStorageCageUsageSummary);
        //缺片详情
        List<LackDetailsDTO> lackDetailsList = hollowGlassRelationInfoService.queryLackByFlowCard();
        jsonObject.append("lackDetailsList", lackDetailsList);
        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_TYPE)));
    }
    @Scheduled(fixedDelay = 1000)
@@ -341,6 +356,6 @@
        jsonObject.append("pieChartVOS", pieChartVOS);
        List<RunTime> hollowRunTimes = hollowBigStorageCageHistoryTaskService.queryRunTimes(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        jsonObject.append("hollowRunTimes", hollowRunTimes);
        webSocketUtils.sendToWeb("largenScreen",jsonObject);
        webSocketUtils.sendToWeb("largenScreen", jsonObject);
    }
}