cl
2024-07-18 e7860cfa2d347d4d7336a54394a056aefd6aeebb
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -119,17 +119,18 @@
//                                }
                        }
                    }else if(Constants.OP030.equals(device)){
                        Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".Scaner").getValue();
                        Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".Scaner").getValue();//电芯码
                        if (ObjectUtil.isNotNull(value1)){
                            String cellCode = value1.toString();
                            //反馈电芯ocv检测结果
                            boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//对替换电芯校验
                            scanResult = 11;
                            //反馈电芯ocv检测结果,这里不用再进行检测,只要码没问题就可以了
                            /*boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//对替换电芯校验
                            //四个电芯的状态
                            if (b){
                                scanResult = 11;
                            }else {
                                scanResult = 12;
                            }
                            }*/
                        }else {
                            scanResult = 12;
                        }
@@ -162,7 +163,9 @@
                            String productType = productTypeObjcet.toString();//产品类型
                            String materialCode = Constants.materialMap.get(productType);
                            //调用工厂MES,保存到数据库,并且将工单传给PLC
                            receivingWorkOrders(thoroughfare, device,materialCode);
                            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                                receivingWorkOrders(thoroughfare, device,materialCode);
                            });
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                            log.info("写入到工位{}的RecordDataDone数据:{}",device,11);
                        }else{
@@ -205,7 +208,6 @@
                        if(ObjectUtil.isNull(cellCodeList) || cellCodeList.size() != 4 ){
                            result = 23;
                        }else{
                            String cellCode1 = cellCodeList.get(0);
                            String cellCode2 = cellCodeList.get(1);
                            String cellCode3 = cellCodeList.get(2);
@@ -219,9 +221,17 @@
                            result = savePassingStation(thoroughfare, device,cellCodeList);//保存过站
                            if(result == 21) {
                                if(Constants.OP030.contains(device)){
                                    daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode1);
                                    daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode2);
                                    daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode3);
                                    daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode4);
                                }
                                result = saveParamCollection(device,cellCodeList);//保存参数,发送工厂MES
                            }
                        }
                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build());
                        log.info("写入到工位{}的RecordDataDone数据:{}",device,result);
                    } else if (Constants.OP100_OP150.contains(device)){//人工工位
@@ -257,7 +267,7 @@
        }
    }
    public void receivingWorkOrders(String thoroughfare ,String device ,String materialCode)
    public synchronized void receivingWorkOrders(String thoroughfare ,String device ,String materialCode)
    {
        String paramProductNum = "";
        try {
@@ -791,20 +801,18 @@
        boolean flag = true;
        List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                .eq(DaTestDeviceInterfaceTemp::getStationCode, device)
                .eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode));
        if (CollUtil.isNotEmpty(list)){
            DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1);
            if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(1).build());
                flag = true;
            }else {
                flag = false;
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build());
            }
            daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
        }else {
            flag = false;
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build());
            log.info("读取到工位{},测试设备返回的数据查询不到,电芯码为:{}",device,cellCode);
        }
        return flag;
@@ -821,7 +829,7 @@
        if (ObjectUtil.isNotNull(value1)){
            String cellCode = value1.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    .eq(DaTestDeviceInterfaceTemp::getStationCode, device)
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode));
            if (CollUtil.isNotEmpty(list)){
                DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1);
@@ -831,18 +839,22 @@
                    flag = false;
                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build());
                }
                daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
                //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
            }else {
                flag = false;
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(5).build());
                log.info("读取到工位{},OP020工位没有给测试结果",device);
            }
        }else {
            flag = false;
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build());
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(5).build());
            log.info("读取到工位{},PLC没有给电芯码",device);
        }
        Object value2 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_2").getValue();
        if (ObjectUtil.isNotNull(value2)){
            String cellCode = value2.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    .eq(DaTestDeviceInterfaceTemp::getStationCode, device)
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode));
            if (CollUtil.isNotEmpty(list)){
                DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1);
@@ -852,11 +864,15 @@
                    flag = false;
                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(2).build());
                }
                daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
                //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
            }else {
                flag = false;
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(5).build());
                log.info("读取到工位{},OP020工位没有给测试结果",device);
            }
        }else {
            flag = false;
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(2).build());
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(5).build());
            log.info("读取到工位{},PLC没有给电芯码",device);
        }
@@ -864,7 +880,7 @@
        if (ObjectUtil.isNotNull(value3)){
            String cellCode = value3.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    .eq(DaTestDeviceInterfaceTemp::getStationCode, device)
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode));
            if (CollUtil.isNotEmpty(list)){
                DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1);
@@ -874,11 +890,15 @@
                    flag = false;
                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(2).build());
                }
                daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
                //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
            }else {
                flag = false;
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(5).build());
                log.info("读取到工位{},OP020工位没有给测试结果",device);
            }
        }else {
            flag = false;
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(2).build());
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(5).build());
            log.info("读取到工位{},PLC没有给电芯码",device);
        }
@@ -886,7 +906,7 @@
        if (ObjectUtil.isNotNull(value4)){
            String cellCode = value4.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    .eq(DaTestDeviceInterfaceTemp::getStationCode, device)
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode));
            if (CollUtil.isNotEmpty(list)){
                DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1);
@@ -896,11 +916,15 @@
                    flag = false;
                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(2).build());
                }
                daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
                //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
            }else {
                flag = false;
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(5).build());
                log.info("读取到工位{},OP020工位没有给测试结果",device);
            }
        }else {
            flag = false;
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(2).build());
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(5).build());
            log.info("读取到工位{},PLC没有给电芯码",device);
        }