hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -119,7 +119,7 @@
//        ReadWriteEntity mesReplyEntity = miloService.readFromOpcUa("DLP1A.DLP1A.MesReply");
//        if ("1".equals(mesReplyEntity.getValue() + "")) {
        String mesReplyEntity = s7DataDLPOne.getMesReply().toString();
        if (!"1".equals(mesReplyEntity)) {
        if ("1".equals(mesReplyEntity)) {
            log.info("有正在执行的任务,结束进片任务");
            return;
        }
@@ -128,13 +128,13 @@
//        ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.FROM1");
        String fromOpcUa = s7DataDLPOne.getFrom1().toString();
        List<Short> states = s7DataDLPOne.getStates();
        List<String> ids = s7DataDLPOne.getIds();
        List<String> glassIdList = new ArrayList<>();
        for (int i = 1; i <= 6; i++) {
        for (int i = 0; i < 6; i++) {
//            ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP1A.DLP1A.DI" + i);
            String requestWord = states.get(i).toString();
            String requestWord = ids.get(i);
//            if (null != requestWord.getValue()) {
            if (null != requestWord) {
            if (null != requestWord && !requestWord.isEmpty()) {
                BigStorageCageTask task = new BigStorageCageTask();
//                task.setGlassId(requestWord.getValue() + "");
                task.setGlassId(requestWord);
@@ -159,7 +159,7 @@
            //向plc发送报警:当前大车进片玻璃数量与mes读取到的数量不匹配
//            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 1));
            s7DataDLPOne = new S7DataDLPOne();
            s7DataDLPOne.setAlramSignal((short) 1);
            s7DataDLPOne.setAlarmSignal(1);
            s7SerializerDLPOne.write(s7DataDLPOne);
            return;
        }
@@ -170,7 +170,7 @@
                //向plc发送报警:同一车进片玻璃存在相同
//                miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 2));
                s7DataDLPOne = new S7DataDLPOne();
                s7DataDLPOne.setAlramSignal((short) 2);
                s7DataDLPOne.setAlarmSignal(2);
                s7SerializerDLPOne.write(s7DataDLPOne);
                return;
            }
@@ -182,7 +182,7 @@
            //向plc发送报警:理片笼存在相同的进片玻璃
//            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 4));
            s7DataDLPOne = new S7DataDLPOne();
            s7DataDLPOne.setAlramSignal((short) 4);
            s7DataDLPOne.setAlarmSignal(4);
            s7SerializerDLPOne.write(s7DataDLPOne);
            return;
        }
@@ -193,7 +193,7 @@
            //向plc发送报警:进片任务数量与系统查询到的玻璃数量不匹配
//            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 8));
            s7DataDLPOne = new S7DataDLPOne();
            s7DataDLPOne.setAlramSignal((short) 8);
            s7DataDLPOne.setAlarmSignal(8);
            s7SerializerDLPOne.write(s7DataDLPOne);
            return;
        }
@@ -214,7 +214,7 @@
                    //向plc发送报警:笼内格子剩余数量不足
//                    miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
                    s7DataDLPOne = new S7DataDLPOne();
                    s7DataDLPOne.setAlramSignal((short) 16);
                    s7DataDLPOne.setAlarmSignal(16);
                    s7SerializerDLPOne.write(s7DataDLPOne);
                    return;
                }
@@ -230,7 +230,7 @@
                //向plc发送报警:直通片台存在玻璃,无法继续直通
//                miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 64));
                s7DataDLPOne = new S7DataDLPOne();
                s7DataDLPOne.setAlramSignal((short) 64);
                s7DataDLPOne.setAlarmSignal(64);
                s7SerializerDLPOne.write(s7DataDLPOne);
                return;
            }
@@ -260,7 +260,7 @@
                        .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
                task.setTargetSlot(bigStorageDTO.getSlot());
                task.setGlassId(info.getGlassId());
                bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task);
//                bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task);
                //存放历史任务
                BigStorageCageHistoryTask historyTask = new BigStorageCageHistoryTask();
                BeanUtils.copyProperties(task, historyTask);
@@ -283,7 +283,7 @@
        } else {
            BigStorageCageTask task = inTaskList.get(0);
            task.setTargetSlot(THROUGH_SLOT);
            bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task);
//            bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task);
            //存放历史任务
            BigStorageCageHistoryTask historyTask = new BigStorageCageHistoryTask();
            BeanUtils.copyProperties(task, historyTask);
@@ -314,8 +314,8 @@
//        list.add(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 1));
//        miloService.writeToOpcWord(list);
        s7DataDLPOne = new S7DataDLPOne();
        for (int i = 0; i < inTaskList.size() && i < 6; i++) {
            short value = (short) Integer.parseInt(inTaskList.get(i).getTargetSlot().toString());
        for (int i = 0; i < inTaskList.size(); i++) {
            Integer value = Integer.parseInt(inTaskList.get(i).getTargetSlot().toString());
            switch (i) {
                case 0:
                    s7DataDLPOne.setTo1(value);
@@ -338,7 +338,9 @@
            }
        }
        s7SerializerDLPOne.write(s7DataDLPOne);
        s7DataDLPOne = new S7DataDLPOne();
        s7DataDLPOne.setMesReply(1);
        s7SerializerDLPOne.write(s7DataDLPOne);
    }
    @Scheduled(fixedDelay = 1000)
@@ -360,7 +362,8 @@
            return;
        }
        //获取出片任务表
        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task");
        List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataWLTwo);
//        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task");
        if (CollectionUtil.isNotEmpty(outTaskList)) {
            log.info("有正在执行的出片任务,结束本次出片任务");
            return;
@@ -544,7 +547,7 @@
            }
//            if (null != requestWord.getValue()) {
            if (null != requestWord) {
            if (!requestWord.isEmpty()) {
                BigStorageCageTask task = new BigStorageCageTask();
//                task.setGlassId(requestWord.getValue() + "");
//                task.setTargetSlot(Integer.parseInt(toOpcUa.getValue() + ""));
@@ -602,7 +605,7 @@
                    .eq(BigStorageCageHistoryTask::getGlassId, item.getGlassId()));
            item.setTargetSlot(0);
            //清空任务表数据
            bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", item);
//            bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", item);
        }
        //清空启动状态
        //向opc发送启动信号
@@ -613,14 +616,14 @@
//        }
//        list.add(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 0));
//        miloService.writeToOpcWord(list);
        s7DataDLPOne =new S7DataDLPOne();
        s7DataDLPOne.setTo1((short)0);
        s7DataDLPOne.setTo2((short)0);
        s7DataDLPOne.setTo3((short)0);
        s7DataDLPOne.setTo4((short)0);
        s7DataDLPOne.setTo5((short)0);
        s7DataDLPOne.setTo6((short)0);
        s7DataDLPOne.setMesReply((short)0);
        s7DataDLPOne = new S7DataDLPOne();
        s7DataDLPOne.setTo1(0);
        s7DataDLPOne.setTo2(0);
        s7DataDLPOne.setTo3(0);
        s7DataDLPOne.setTo4(0);
        s7DataDLPOne.setTo5(0);
        s7DataDLPOne.setTo6(0);
        s7DataDLPOne.setMesReply(0);
        s7SerializerDLPOne.write(s7DataDLPOne);
    }
@@ -634,8 +637,9 @@
            log.info("当前为非联机状态,结束完成出片任务");
            return;
        }
        //获取进片任务表
        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task");
        //获取出片任务表
        List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataWLTwo);
//        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task");
        if (CollectionUtil.isEmpty(outTaskList)) {
            log.info("当前大车无进片玻璃,结束完成进片任务");
            return;
@@ -719,12 +723,13 @@
            }
        }
//       重置任务表数据
        bigStorageCageTaskService.updateOutTaskMessage("big_storage_cage_out_one_task");
//        bigStorageCageTaskService.updateOutTaskMessage("big_storage_cage_out_one_task");
        resetOutTask();
        //清空启动状态
        //向opc发送启动信号
//        miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 0));
        S7DataDLPTwo s7DataDLPTwo=new S7DataDLPTwo();
        s7DataDLPTwo.setMesReply((short)0);
        S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
        s7DataDLPTwo.setMesReply(0);
        s7SerializerDLPTwo.write(s7DataDLPTwo);
    }
@@ -858,12 +863,54 @@
        List<String> glassIds = bigStorageCageTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList());
        int glassCount = bigStorageCageTaskList.size();
        //生成出片任务条数不足6补全
        while (bigStorageCageTaskList.size() < 6) {
            bigStorageCageTaskList.add(new BigStorageCageTask("", 0, 0, 0));
        }
//        while (bigStorageCageTaskList.size() < 6) {
//            bigStorageCageTaskList.add(new BigStorageCageTask("", 0, 0, 0));
//        }
        //清空任务表数据
        bigStorageCageTaskService.removeAll("big_storage_cage_out_one_task");
        bigStorageCageTaskService.saveTaskMessage(tableName, bigStorageCageTaskList);
        resetOutTask();
        S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
        for (int i = 0; i < bigStorageCageTaskList.size() && i < 6; i++) {
            String glassId = bigStorageCageTaskList.get(i).getGlassId();
            Integer startSlot = bigStorageCageTaskList.get(i).getStartSlot();
            Integer target = bigStorageCageTaskList.get(i).getTargetSlot();
            if (startSlot > 0) {
                switch (i) {
                    case 0:
                        s7DataDLPTwo.setId1(glassId);
                        s7DataDLPTwo.setFrom1(startSlot);
                        s7DataDLPTwo.setTo1(target);
                        break;
                    case 1:
                        s7DataDLPTwo.setId2(glassId);
                        s7DataDLPTwo.setFrom2(startSlot);
                        s7DataDLPTwo.setTo2(target);
                        break;
                    case 2:
                        s7DataDLPTwo.setId3(glassId);
                        s7DataDLPTwo.setFrom3(startSlot);
                        s7DataDLPTwo.setTo3(target);
                        break;
                    case 3:
                        s7DataDLPTwo.setId4(glassId);
                        s7DataDLPTwo.setFrom4(startSlot);
                        s7DataDLPTwo.setTo4(target);
                        break;
                    case 4:
                        s7DataDLPTwo.setId5(glassId);
                        s7DataDLPTwo.setFrom5(startSlot);
                        s7DataDLPTwo.setTo5(target);
                        break;
                    case 5:
                        s7DataDLPTwo.setId6(glassId);
                        s7DataDLPTwo.setFrom6(startSlot);
                        s7DataDLPTwo.setTo6(target);
                        break;
                }
            }
        }
        s7SerializerDLPTwo.write(s7DataDLPTwo);
//        bigStorageCageTaskService.removeAll("big_storage_cage_out_one_task");
//        bigStorageCageTaskService.saveTaskMessage(tableName, bigStorageCageTaskList);
        List<BigStorageCageHistoryTask> historyList = bigStorageCageTaskList.stream().filter(e -> StringUtils.isNotBlank(e.getGlassId())).map(e -> {
            BigStorageCageHistoryTask history = new BigStorageCageHistoryTask();
            BeanUtils.copyProperties(e, history);
@@ -881,8 +928,8 @@
                .in(BigStorageCageDetails::getGlassId, glassIds));
        try {
//            miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 1));
            S7DataDLPTwo s7DataDLPTwo=new S7DataDLPTwo();
            s7DataDLPTwo.setMesReply((short)1);
            s7DataDLPTwo = new S7DataDLPTwo();
            s7DataDLPTwo.setMesReply(1);
            s7SerializerDLPTwo.write(s7DataDLPTwo);
        } catch (Exception e) {
            e.printStackTrace();
@@ -941,8 +988,8 @@
                .in(BigStorageCageDetails::getGlassId, glassIds));
        try {
//            miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 1));
            S7DataDLPTwo s7DataDLPTwo=new S7DataDLPTwo();
            s7DataDLPTwo.setMesReply((short)1);
            S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
            s7DataDLPTwo.setMesReply(1);
            s7SerializerDLPTwo.write(s7DataDLPTwo);
        } catch (Exception e) {
            e.printStackTrace();
@@ -985,4 +1032,54 @@
                .value(value)
                .build();
    }
    //重置任务表
    private void resetOutTask() {
        S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
        s7DataDLPTwo.setId1("");
        s7DataDLPTwo.setId2("");
        s7DataDLPTwo.setId3("");
        s7DataDLPTwo.setId4("");
        s7DataDLPTwo.setId5("");
        s7DataDLPTwo.setId6("");
        s7DataDLPTwo.setFrom1(0);
        s7DataDLPTwo.setFrom2(0);
        s7DataDLPTwo.setFrom3(0);
        s7DataDLPTwo.setFrom4(0);
        s7DataDLPTwo.setFrom5(0);
        s7DataDLPTwo.setFrom6(0);
        s7DataDLPTwo.setTo1(0);
        s7DataDLPTwo.setTo2(0);
        s7DataDLPTwo.setTo3(0);
        s7DataDLPTwo.setTo4(0);
        s7DataDLPTwo.setTo5(0);
        s7DataDLPTwo.setTo6(0);
        s7DataDLPTwo.setState1(0);
        s7DataDLPTwo.setState2(0);
        s7DataDLPTwo.setState3(0);
        s7DataDLPTwo.setState4(0);
        s7DataDLPTwo.setState5(0);
        s7DataDLPTwo.setState6(0);
        s7SerializerDLPTwo.write(s7DataDLPTwo);
    }
    //读取出片地址
    private List<BigStorageCageTask> getOutTaskList(S7DataDLPTwo s7DataDLPTwo) {
        List<BigStorageCageTask> outTaskList = new ArrayList<>();
        List<String> glassIds = s7DataDLPTwo.getIds();
        List<Integer> startSlots = s7DataDLPTwo.getFroms();
        List<Integer> endSlots = s7DataDLPTwo.getTos();
        List<Integer> states = s7DataDLPTwo.getStates();
        for (int i = 0; i < 6; i++) {
            if (glassIds.get(i) != null && !glassIds.get(i).isEmpty()) {
                BigStorageCageTask bigStorageCageTask = new BigStorageCageTask();
                bigStorageCageTask.setGlassId(glassIds.get(i));
                bigStorageCageTask.setStartSlot(startSlots.get(i));
                bigStorageCageTask.setTargetSlot(endSlots.get(i));
                bigStorageCageTask.setTaskState(states.get(i));
                outTaskList.add(bigStorageCageTask);
            }
        }
        return outTaskList;
    }
}