ZengTao
2024-10-21 09c9c55d62cdcc6db5e99ee238ae0e78d082ee1a
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -574,54 +574,106 @@
    /**
     * 确认字清空
     */
//    @Scheduled(fixedDelay = 300)
//    public void confirmClear() {
//        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
//        String d01ToMES = plcParameterObject.getPlcParameter("D01ToMES").getValue();
//        String d04ToMES = plcParameterObject.getPlcParameter("D04ToMES").getValue();
//        String mesD01Address = plcParameterObject.getPlcParameter("MESToD01").getAddress();
//        String mesD04Address = plcParameterObject.getPlcParameter("MESToD04").getAddress();
//        String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue();
//        String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue();
//        String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress();
//        String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress();
//        if(!REQUEST_WORD.equals(d01ToMES)){
//            S7object.getinstance().plccontrol.writeWord(mesD01Address, 0);
//        }
//        if(!REQUEST_WORD.equals(d04ToMES)){
//            S7object.getinstance().plccontrol.writeWord(mesD04Address, 0);
//        }
//        if (!REQUEST_WORD.equals(d03ToMES)) {
//            S7object.getinstance().plccontrol.writeWord(mesD03Address, 0);
//        }
//        if (!REQUEST_WORD.equals(d05ToMES)) {
//            S7object.getinstance().plccontrol.writeWord(mesD05Address, 0);
//        }
//    }
    @Scheduled(fixedDelay = 300)
    public void confirmClear() {
        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
        String d01ToMES = plcParameterObject.getPlcParameter("D01ToMES").getValue();
        String d04ToMES = plcParameterObject.getPlcParameter("D04ToMES").getValue();
        String mesD01Address = plcParameterObject.getPlcParameter("MESToD01").getAddress();
        String mesD04Address = plcParameterObject.getPlcParameter("MESToD04").getAddress();
        String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue();
        String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue();
        String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress();
        String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress();
        if (!REQUEST_WORD.equals(d01ToMES)) {
            S7object.getinstance().plccontrol.writeWord(mesD01Address, 0);
        }
        if (!REQUEST_WORD.equals(d04ToMES)) {
            S7object.getinstance().plccontrol.writeWord(mesD04Address, 0);
        }
        if (!REQUEST_WORD.equals(d03ToMES)) {
            S7object.getinstance().plccontrol.writeWord(mesD03Address, 0);
        }
        if (!REQUEST_WORD.equals(d05ToMES)) {
            S7object.getinstance().plccontrol.writeWord(mesD05Address, 0);
        }
    }
    /**
     * 进片状态修改
     */
//    @Scheduled(fixedDelay = 300)
//    public void feedStatusUpdate() {
//        List<String> glassIds1=null;
//        List<String> glassIds2=null;
//        List<BigStorageCageFeedTask> bigStorageCageFeedTasks1=bigStorageCageFeedTaskService.list(
//                new LambdaQueryWrapper<BigStorageCageFeedTask>()
//                .eq(BigStorageCageFeedTask::getTaskState,1)
//                .eq(BigStorageCageFeedTask::getLine,Const.ARTIFICIAL_OUT_TARGET_POSITION)
//        );
//        List<BigStorageCageFeedTask> bigStorageCageFeedTasks2=bigStorageCageFeedTaskService.list(
//                new LambdaQueryWrapper<BigStorageCageFeedTask>()
//                        .eq(BigStorageCageFeedTask::getTaskState,1)
//                        .eq(BigStorageCageFeedTask::getLine,Const.TEMPERING_OUT_TARGET_POSITION)
//        );
////        if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)){
////
////        }
////        if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)){
////
////        }
//    }
    @Scheduled(fixedDelay = 300)
    public void feedStatusUpdate() {
        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
        List<String> glassIds1 = new ArrayList<>();
        List<String> glassIds2 = new ArrayList<>();
//        for (int i = 1; i <= 6; i++) {
//            String line1GlassId = plcParameterObject.getPlcParameter("D03ID" + i).getValue();
//            if (StringUtils.isNotEmpty(line1GlassId)) {
//                glassIds1.add(line1GlassId);
//            }
//            String line2GlassId = plcParameterObject.getPlcParameter("D05ID" + i).getValue();
//            if (StringUtils.isNotEmpty(line2GlassId)) {
//                glassIds1.add(line2GlassId);
//            }
//        }
        List<BigStorageCageFeedTask> bigStorageCageFeedTasks1 = bigStorageCageFeedTaskService.list(
                new LambdaQueryWrapper<BigStorageCageFeedTask>()
                        .eq(BigStorageCageFeedTask::getTaskState, 1)
                        .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION)
        );
        List<BigStorageCageFeedTask> bigStorageCageFeedTasks2 = bigStorageCageFeedTaskService.list(
                new LambdaQueryWrapper<BigStorageCageFeedTask>()
                        .eq(BigStorageCageFeedTask::getTaskState, 1)
                        .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION)
        );
        if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)&& glassIds1 != null) {
            List<String> matchingIds1 = bigStorageCageFeedTasks1.stream()
                    .map(BigStorageCageFeedTask::getGlassId)
                    .filter(glassIds1::contains)
                    .distinct()
                    .collect(Collectors.toList());
            bigStorageCageFeedTaskService.update(
                    new LambdaUpdateWrapper<BigStorageCageFeedTask>()
                            .in(BigStorageCageFeedTask::getGlassId, matchingIds1)
                            .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT)
                            .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
            );
        }
        if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks2)&& glassIds2 != null) {
            List<String> matchingIds2 = bigStorageCageFeedTasks2.stream()
                    .map(BigStorageCageFeedTask::getGlassId)
                    .filter(glassIds2::contains)
                    .distinct()
                    .collect(Collectors.toList());
            bigStorageCageFeedTaskService.update(
                    new LambdaUpdateWrapper<BigStorageCageFeedTask>()
                            .in(BigStorageCageFeedTask::getGlassId, matchingIds2)
                            .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT)
                            .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
            );
        }
        if (CollectionUtils.isEmpty(glassIds1)) {
            bigStorageCageFeedTaskService.update(
                    new LambdaUpdateWrapper<BigStorageCageFeedTask>()
                            .eq(BigStorageCageFeedTask::getLine,Const.A09_OUT_TARGET_POSITION)
                            .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
                            .gt(BigStorageCageFeedTask::getTargetSlot, 0)
                            .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT)
                            .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR)
            );
        }
        if (CollectionUtils.isEmpty(glassIds2)) {
            bigStorageCageFeedTaskService.update(
                    new LambdaUpdateWrapper<BigStorageCageFeedTask>()
                            .eq(BigStorageCageFeedTask::getLine,Const.A10_OUT_TARGET_POSITION)
                            .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
                            .gt(BigStorageCageFeedTask::getTargetSlot, 0)
                            .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT)
                            .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR)
            );
        }
    }
    /**
     * 按照玻璃id判断玻璃状态及卧转立是否可直接启动
@@ -711,13 +763,19 @@
        //向plc发送进片确认
        if (flag) {
            //向plc写入确认字
            int returnData = 0;
            PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
            int returnData = 1;
            int count = 1;
            while (returnData == 0) {
            while (returnData != 0) {
                S7object.getinstance().plccontrol.writeWord(mesAddress, 1);
                returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0);
                log.info("进卧转立第{}次发送确认字完成,地址为:{},写入的内容为{}", count++, mesAddress, returnData);
                if (Const.A10_OUT_TARGET_POSITION.equals(line)) {
                    returnData = Integer.parseInt(plcParameterObject.getPlcParameter("D04ToMES").getValue());
                } else {
                    returnData = Integer.parseInt(plcParameterObject.getPlcParameter("D01ToMES").getValue());
                }
//                returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0);
                log.info("进卧转立第{}次发送确认字完成,地址为:{},写入的内容为{}", count++, mesAddress, 1);
            }
        }
        //记录无法放下玻璃,后续判断启动
@@ -835,12 +893,17 @@
            s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot());
            log.info("向plc发送第{}片玻璃已完成,起始位置是{},目标位置是", i, taskList.get(i - 1).getLine(), taskList.get(i - 1).getTargetSlot());
        }
        int returnData = 0;
        int returnData = 1;
        int count = 1;
        while (returnData == 0) {
        while (returnData != 0) {
            s7control.writeWord(outLine, 2);
            returnData = s7control.readWord(outLine, 1).get(0);
            log.info("已向plc第{}次发送进片任务确认,地址为:{},写入的内容为{}", count++, outLine, returnData);
            if (line.equals(Const.A09_OUT_TARGET_POSITION)) {
                returnData = Integer.parseInt(plcMesObject.getPlcParameter("D03ToMES").getValue());
            } else {
                returnData = Integer.parseInt(plcMesObject.getPlcParameter("D05ToMES").getValue());
            }
//            returnData = s7control.readWord(outLine, 1).get(0);
            log.info("已向plc第{}次发送进片任务确认,地址为:{},写入的内容为{}", count++, outLine, 2);
        }
    }
@@ -953,7 +1016,8 @@
        log.info("将出片玻璃{}玻璃状态改为已出片", glassIds);
        bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
                .in(BigStorageCageDetails::getGlassId, glassIds));
                .in(BigStorageCageDetails::getGlassId, glassIds)
                .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT));
//        int returnData = 0;
//        int count = 1;
//        while (returnData == 0) {