admin
2024-07-19 5f0f21ec4d684d6e1a40596889ad92a1f4f1042a
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,38 +208,30 @@
                        if(ObjectUtil.isNull(cellCodeList) || cellCodeList.size() != 4 ){
                            result = 23;
                        }else{
                            if(Constants.OP020.contains(device)) {
                                String cellCode1 = cellCodeList.get(0);
                                String cellCode2 = cellCodeList.get(1);
                                String cellCode3 = cellCodeList.get(2);
                                String cellCode4 = cellCodeList.get(3);
                                if (!cellCode1.isEmpty() && cellCode2.isEmpty()) {
                                    result = 23;
                                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build());
                                    return;
                                }
                                if (cellCode1.isEmpty() && !cellCode2.isEmpty()) {
                                    result = 23;
                                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build());
                                    return;
                                }
                                if (!cellCode3.isEmpty() && cellCode4.isEmpty()) {
                                    result = 23;
                                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build());
                                    return;
                                }
                                if (!cellCode4.isEmpty() && cellCode3.isEmpty()) {
                                    result = 23;
                                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build());
                                    return;
                                }
                            String cellCode1 = cellCodeList.get(0);
                            String cellCode2 = cellCodeList.get(1);
                            String cellCode3 = cellCodeList.get(2);
                            String cellCode4 = cellCodeList.get(3);
                            if ((!cellCode1.isEmpty() && cellCode2.isEmpty()) || (cellCode1.isEmpty() && !cellCode2.isEmpty())
                            || (!cellCode3.isEmpty() && cellCode4.isEmpty()) || (!cellCode4.isEmpty() && cellCode3.isEmpty())) {
                                result = 23;
                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build());
                                return;
                            }
                            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)){//人工工位
@@ -272,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 {
@@ -513,9 +508,9 @@
                    //插入参数采集表
                    daParamCollectionService.insertBatch(collectionList);
                    //如果220工位,进行报工
                    //如果220工位,进行报工,因为上层系统只支持6位,所有报工工位修改为M1P220
                    if("M1OP220".equals(device)) {
                        getWorkReportResultFeedback(moduleCode, "M1OP220", format.format(new Date()));
                        getWorkReportResultFeedback(moduleCode, "M1P220", format.format(new Date()));
                    }
                    //上传到工厂mes
@@ -806,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;
@@ -836,28 +829,34 @@
        if (ObjectUtil.isNotNull(value1)){
            String cellCode = value1.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    .eq(DaTestDeviceInterfaceTemp::getStationCode, device)
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode));
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                    .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
            );
            if (CollUtil.isNotEmpty(list)){
                DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1);
                DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0);
                if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){
                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(1).build());
                }else {
                    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);
@@ -867,11 +866,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);
        }
@@ -879,7 +882,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);
@@ -889,11 +892,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);
        }
@@ -901,7 +908,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);
@@ -911,11 +918,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);
        }