cl
2024-07-16 58c9d48e6a66b3db4da52b79e81dbf47c72e9cd3
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -161,17 +161,25 @@
                        if (ObjectUtil.isNotNull(productTypeObjcet)){
                            String productType = productTypeObjcet.toString();//产品类型
                            String materialCode = Constants.materialMap.get(productType);
                            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                                //调用工厂MES,保存到数据库,并且将工单传给PLC (目前临时用该方法)
                                receivingWorkOrders(thoroughfare, device,materialCode);
                            });
                            //调用工厂MES,保存到数据库,并且将工单传给PLC
                            receivingWorkOrders(thoroughfare, device,materialCode);
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                            log.info("写入到工位{}的RecordDataDone数据:{}",device,11);
                        }else{
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build());
                        }
                    }else if (Constants.OP150.contains(device)){//人工工位
                        Object modulCodeObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue();
                        if (ObjectUtil.isNull(modulCodeObjcet)){
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build());
                        }else{
                            String productNum = modulCodeObjcet.toString();
                            //将产品SN发送到前台
                            productNum = "productNum,"+ productNum;
                            WebSocketUsers.sendMessageToUserByText(map.get(device), productNum);
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                        }
                    }else if (Constants.ModuleList.contains(device)){//有模组码的工位
                        Object modulCodeObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue();
                        if (ObjectUtil.isNull(modulCodeObjcet)){
@@ -257,38 +265,6 @@
            log.error(e.getMessage());
        }
    }
/*    public void receivingWorkOrders(String thoroughfare ,String device) {
        String paramProductNum = "";
        try {
            List<OmProductionOrdeInfo> orderList = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>()
                    .eq(OmProductionOrdeInfo::getOrderStatus, Constants.ONE));//工单状态
            if (CollUtil.isNotEmpty(orderList)){
                Long id = orderList.get(0).getId();
                String productNum = orderList.get(0).getProductNum();//模组码
                String orderNum = orderList.get(0).getWorkOrderNo();
                //下发产品模组码
                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(productNum).build());
                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(orderNum).build());
                //miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(1).build());
                //更新工单状态为执行中
                OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
                omProductionOrdeInfo.setId(id);
                omProductionOrdeInfo.setOrderStatus("3");
                omProductionOrdeInfoService.updateOmProductionOrdeInfo(omProductionOrdeInfo);
                //将产品SN发送到前台
                productNum = "productNum,"+ productNum;
                WebSocketUsers.sendMessageToUserByText(map.get(device), productNum);
            }*//*else{
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(2).build());//没有要生产的工单
            }*//*
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }*/
    public void receivingWorkOrders(String thoroughfare ,String device ,String materialCode)
    {
@@ -319,12 +295,15 @@
                omProductionOrdeInfo.setCreateUser("工厂MES");
                omProductionOrdeInfoService.save(omProductionOrdeInfo);
                //发送给前台
                WebSocketUsers.sendMessageToUserByText(map.get(device), dataObject.getStr("productNum"));
                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());
                //写PLC
                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(dataObject.getStr("productNum")).build());
                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(dataObject.getStr("productionOrderNum")).build());
                //将产品SN发送到前台
                productNum = "productNum,"+ productNum;
                WebSocketUsers.sendMessageToUserByText(map.get(device), productNum);
            }
        } catch (Exception e) {