cl
2024-07-29 1f4b2e0571bcdc64786bf4d6ba5916b3a39b3929
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -127,7 +127,7 @@
                    }else if(Constants.OP030.equals(device)){
                        Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".Scaner").getValue();//电芯码
                        if (ObjectUtil.isNotNull(value1)){
                            String cellCode = value1.toString();
                            //String cellCode = value1.toString();
                            scanResult = 11;
                            //反馈电芯ocv检测结果,这里不用再进行检测,只要码没问题就可以了
                            /*boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//对替换电芯校验
@@ -181,7 +181,7 @@
                        if (ObjectUtil.isNotNull(productTypeObjcet)){
                            String productType = productTypeObjcet.toString();//产品类型
                            String materialCode = Constants.materialMap.get(productType);
                            //调用工厂MES,保存到数据库,并且将工单传给PLC
                            //接收工单,保存到数据库,并且将工单传给PLC
                            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                                receivingWorkOrders(thoroughfare, device,materialCode);
                            });
@@ -311,33 +311,19 @@
    {
        String paramProductNum = "";
        try {
            // 查询最新的工单信息
            OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder();
            log.info("请求工厂MES工单:入参device{},materialCode:{}", device, materialCode);
            String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode);
            JSONObject jsonObject = new JSONObject(orderJsonString);
            // 从JSONObject中获取data对象
            JSONObject dataObject = jsonObject.getJSONObject("data");
            String code = jsonObject.getStr("code");
            // 判断接单是否成功
            if(code.equals("success")) {
                log.info("请求工厂MES工单:入参pack{}出参pack:{}", paramProductNum, dataObject.getStr("productNum"));
                OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
                omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum"));
                omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum"));
                omProductionOrdeInfo.setStationCode(dataObject.getStr("stationCode"));
                omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode"));
                omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity")));
                omProductionOrdeInfo.setOnlineCompletionMark("0");
                omProductionOrdeInfo.setSfResult("0");
                omProductionOrdeInfo.setProductModel(dataObject.getStr("model"));
                omProductionOrdeInfo.setCreateTime(new Date());
                omProductionOrdeInfo.setCreateUser("工厂MES");
                omProductionOrdeInfoService.save(omProductionOrdeInfo);
            //先查询表中是否有剩余工单
            List<OmProductionOrdeInfo> orderList = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>()
                    .eq(OmProductionOrdeInfo::getOrderStatus, Constants.ONE)
                    .eq(OmProductionOrdeInfo::getStationCode,device)//工位
                    .eq(OmProductionOrdeInfo::getProductCode,materialCode));//产品类型
            if (CollUtil.isNotEmpty(orderList)){
                Long id = orderList.get(0).getId();
                String productNum = orderList.get(0).getProductNum();//模组码
                String orderNum = orderList.get(0).getWorkOrderNo();
                String productNum = dataObject.getStr("productNum");
                String orderNum = dataObject.getStr("productionOrderNum");
                paramProductNum = productNum;
                //下发产品模组码
                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(productNum).build());
                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(orderNum).build());
@@ -345,8 +331,44 @@
                //将产品SN发送到前台
                productNum = "productNum,"+ productNum;
                WebSocketUsers.sendMessageToUserByText(map.get(device), productNum);
            }else{
                // 查询最新的工单信息
                OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder();
                log.info("请求工厂MES工单:入参device{},materialCode:{}", device, materialCode);
                String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode);
                JSONObject jsonObject = new JSONObject(orderJsonString);
                // 从JSONObject中获取data对象
                JSONObject dataObject = jsonObject.getJSONObject("data");
                String code = jsonObject.getStr("code");
                // 判断接单是否成功
                if(code.equals("success")) {
                    log.info("请求工厂MES工单:入参pack{}出参pack:{}", paramProductNum, dataObject.getStr("productNum"));
                    OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
                    omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum"));
                    omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum"));
                    omProductionOrdeInfo.setStationCode(device);
                    omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode"));
                    omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity")));
                    omProductionOrdeInfo.setOnlineCompletionMark("0");
                    omProductionOrdeInfo.setSfResult("0");
                    omProductionOrdeInfo.setProductModel(dataObject.getStr("model"));
                    omProductionOrdeInfo.setCreateTime(new Date());
                    omProductionOrdeInfo.setCreateUser("工厂MES");
                    omProductionOrdeInfoService.save(omProductionOrdeInfo);
                    String productNum = dataObject.getStr("productNum");
                    String orderNum = dataObject.getStr("productionOrderNum");
                    //下发产品模组码
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(productNum).build());
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(orderNum).build());
                    //将产品SN发送到前台
                    productNum = "productNum,"+ productNum;
                    WebSocketUsers.sendMessageToUserByText(map.get(device), productNum);
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
@@ -549,7 +571,7 @@
                    daParamCollectionService.insertBatch(collectionList);
                    //如果220工位,进行报工,因为上层系统只支持6位,所有报工工位修改为M1P220
                    if("M1OP220".equals(device)) {
                    if(Constants.OP220.equals(device)) {
                        getWorkReportResultFeedback(moduleCode, "M1P220", format.format(new Date()));
                    }
@@ -830,36 +852,6 @@
    }
    /**
     * 030工位返回ocv测试结果
     * @param thoroughfare
     * @param device
     * @param cellCode
     * @throws Exception
     */
    private boolean OCVResultFeedBack(String thoroughfare, String device,String cellCode) throws Exception {
        boolean flag = true;
        List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                .eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
        );
        if (CollUtil.isNotEmpty(list)){
            DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0);
            if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){
                flag = true;
            }else {
                flag = false;
            }
            daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
        }else {
            flag = false;
            log.info("读取到工位{},测试设备返回的数据查询不到,电芯码为:{}",device,cellCode);
        }
        return flag;
    }
    /**
     * OP020校验电芯挡位
     * @param thoroughfare
     * @param device
@@ -898,6 +890,33 @@
     * 030工位返回ocv测试结果
     * @param thoroughfare
     * @param device
     * @param cellCode
     * @throws Exception
     */
    private boolean OCVResultFeedBack(String thoroughfare, String device,String cellCode) throws Exception {
        boolean flag = true;
        List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
        );
        if (CollUtil.isNotEmpty(list)){
            DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0);
            if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){
                flag = true;
            }else {
                flag = false;
            }
            //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
        }else {
            flag = false;
            log.info("读取到工位{},测试设备返回的数据查询不到,电芯码为:{}",device,cellCode);
        }
        return flag;
    }
    /**
     * 030工位返回ocv测试结果
     * @param thoroughfare
     * @param device
     * @throws Exception
     */
    private boolean OCVResultFeedBack(String thoroughfare, String device) throws Exception {
@@ -906,7 +925,6 @@
        if (ObjectUtil.isNotNull(value1)){
            String cellCode = value1.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                    .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
            );
@@ -933,7 +951,6 @@
        if (ObjectUtil.isNotNull(value2)){
            String cellCode = value2.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                    .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
            );
@@ -961,7 +978,6 @@
        if (ObjectUtil.isNotNull(value3)){
            String cellCode = value3.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                    .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
            );
@@ -989,7 +1005,6 @@
        if (ObjectUtil.isNotNull(value4)){
            String cellCode = value4.toString();
            List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                    //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                    .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                    .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
            );