hdy
2025-03-26 7451ba882c5c2dd895fc646e787022301c672916
修改
已修改8个文件
215 ■■■■■ 文件已修改
billion-main/src/main/java/com/billion/main/constant/Constants.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/da/mapper/DaMaterialCollectionMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/da/service/IDaMaterialCollectionService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/da/service/impl/DaMaterialCollectionServiceImpl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/da/service/impl/DaParamCollectionServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/da/service/impl/DaStationCollectionServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java 118 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/constant/Constants.java
@@ -10,7 +10,7 @@
    public static final String TWO= "2";
    public static final String RecordData= "RecordData";
    public static final String WorkOrderRequest= "WorkOrderRequest";
    public static final String TEST= "TEST";
    public static final List<String> PLC1 = new ArrayList<>();
    public static final List<String> PLC2 = new ArrayList<>();
billion-main/src/main/java/com/billion/main/da/mapper/DaMaterialCollectionMapper.java
@@ -37,6 +37,8 @@
     */
    public int insertDaMaterialCollection(DaMaterialCollection daMaterialCollection);
    /**
     * 修改物料采集
     * 
billion-main/src/main/java/com/billion/main/da/service/IDaMaterialCollectionService.java
@@ -37,6 +37,8 @@
     */
    public void insertDaMaterialCollection(DaMaterialCollection daMaterialCollection);
    /**
     * 修改物料采集
     * 
billion-main/src/main/java/com/billion/main/da/service/impl/DaMaterialCollectionServiceImpl.java
@@ -33,8 +33,9 @@
{
    @Autowired
    private DaMaterialCollectionMapper daMaterialCollectionMapper;
    @Autowired
    public IBsBomChildInfoService bsBomChildInfoService;
    @Autowired
    public IOmOrderSchedulingService omOrderSchedulingService;
    /**
     * 查询物料采集
@@ -70,6 +71,7 @@
    public void insertDaMaterialCollection(DaMaterialCollection daMaterialCollection)
    {
        String url = "http://172.40.161.71:8890/Interaction/CollectMT";
        CollectMT collectMT = new CollectMT();
        DaMaterialCollection  daMaterialCollection1 = new DaMaterialCollection();
        BsBomChildInfo bsBomChildInfo = new BsBomChildInfo();
@@ -79,31 +81,40 @@
        daMaterialCollection1.setParamValue(daMaterialCollection.getParamValue());
        daMaterialCollection1.setCollectTime(daMaterialCollection.getCollectTime());
        omOrderScheduling.setSfcCode(daMaterialCollection.getSfcCode());
        if(Objects.equals(daMaterialCollection.getLocationCode(), "OP130") || Objects.equals(daMaterialCollection.getLocationCode(), "OP020")){
            daMaterialCollection1.setMaterialCode("");
            daMaterialCollection1.setMaterialName(daMaterialCollection.getMaterialName());
            collectMT.setMaterial1(daMaterialCollection1.getParamName());
        }else{
            bsBomChildInfo.setLocationCode(daMaterialCollection.getLocationCode());
            String materialCode = daMaterialCollection.getSfcCode().length() > 9 ? daMaterialCollection.getSfcCode().substring(0, daMaterialCollection.getSfcCode().length() - 9) : daMaterialCollection.getSfcCode();
            bsBomChildInfo.setMaterialCode(materialCode);
            List<BsBomChildInfo> bsBomChildInfoList = bsBomChildInfoService.selectBsBomChildInfoList(bsBomChildInfo);
            daMaterialCollection1.setMaterialCode(bsBomChildInfoList.get(0).getMaterialCode());
            daMaterialCollection1.setMaterialName(bsBomChildInfoList.get(0).getMaterialName());
            collectMT.setMaterial1(bsBomChildInfoList.get(0).getMaterialName());
        }
        if(Objects.equals(daMaterialCollection.getLocationCode(), Constants.PLC1.toString()) ||
                Objects.equals(daMaterialCollection.getLocationCode(), Constants.C005) ||
                Objects.equals(daMaterialCollection.getLocationCode(), Constants.C060))
        if(     Constants.PLC1.contains(daMaterialCollection.getLocationCode()) ||
                Constants.C005.equals(daMaterialCollection.getLocationCode()) ||
                Constants.C060.equals(daMaterialCollection.getLocationCode()) )
        {omOrderScheduling.setRemarks("Head");}
        else if(Objects.equals(daMaterialCollection.getLocationCode(), Constants.PLC2.toString()) ||
                Objects.equals(daMaterialCollection.getLocationCode(), Constants.OP005) ||
                Objects.equals(daMaterialCollection.getLocationCode(), Constants.OP310))
        else if(
                Constants.PLC2.contains(daMaterialCollection.getLocationCode()) ||
                        Constants.OP005.equals(daMaterialCollection.getLocationCode()) ||
                        Constants.OP310.equals(daMaterialCollection.getLocationCode()))
        {omOrderScheduling.setRemarks("Body");}
        else if(Objects.equals(daMaterialCollection.getLocationCode(), Constants.P010))
        else if(Constants.P010.equals(daMaterialCollection.getLocationCode()))
        {omOrderScheduling.setRemarks("Pre");}
        List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
        collectMT.setOrderNumber(omOrderSchedulingList.get(0).getWorkOrderNo());
        String OrderNumber = omOrderSchedulingList.get(0).getWorkOrderNo();
        //要改!!!!
        if(Objects.equals(daMaterialCollection.getLocationCode(), "OP130") || Objects.equals(daMaterialCollection.getLocationCode(), "OP020")){
            daMaterialCollection1.setMaterialCode("0");
            daMaterialCollection1.setMaterialName("0");
            collectMT.setMaterial1("0");
        }else{
//            bsBomChildInfo.setLocationCode(daMaterialCollection.getLocationCode());
//            bsBomChildInfo.setBomCode(OrderNumber);
//            List<BsBomChildInfo> bsBomChildInfoList = bsBomChildInfoService.selectBsBomChildInfoList(bsBomChildInfo);
//            String MaterialCode = bsBomChildInfoList.get(0).getMaterialCode();
//            String MaterialName = bsBomChildInfoList.get(0).getMaterialName();
//            daMaterialCollection1.setMaterialCode(MaterialCode);
//            daMaterialCollection1.setMaterialName(MaterialName);
//            collectMT.setMaterial1(MaterialName);
            daMaterialCollection1.setMaterialCode("0");
            daMaterialCollection1.setMaterialName("0");
            collectMT.setMaterial1("0");
        }
        this.save(daMaterialCollection1);
        collectMT.setOrderNumber(OrderNumber);
        collectMT.setEngineNumber(daMaterialCollection.getSfcCode());
        collectMT.setStationName(daMaterialCollection.getLocationCode());
        collectMT.setPartsNumber(daMaterialCollection.getParamValue());
@@ -116,10 +127,18 @@
            // 记录日志
            log.error("推送失败");
        }
        this.save(daMaterialCollection1);
//        this.save(daMaterialCollection);
    }
//    @Override
//    public void insertDaMaterialCollectionOP020OP130(DaMaterialCollection DaMaterialCollection)
//    {
//
////        this.save(daMaterialCollection);
//    }
//
    /**
     * 修改物料采集
     * 
billion-main/src/main/java/com/billion/main/da/service/impl/DaParamCollectionServiceImpl.java
@@ -39,6 +39,7 @@
    private IDaParamCollectionService daParamCollectionService;
    @Resource
    private SqlSessionFactory sqlSessionFactory;
    @Autowired
    public IOmOrderSchedulingService omOrderSchedulingService;
@@ -91,7 +92,7 @@
        else if(Objects.equals(daParamCollection.getLocationCode(), Constants.P010))
        {omOrderScheduling.setRemarks("Pre");}
        List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
        daParamCollectionMapper.insertDaParamCollection(daParamCollection);
        collectQualityData.setOrderNumber(omOrderSchedulingList.get(0).getWorkOrderNo());
        collectQualityData.setStationName(daParamCollection.getLocationCode());
        collectQualityData.setEngineNumber(daParamCollection.getSfcCode());
@@ -107,7 +108,7 @@
            // 记录日志
            log.error("推送失败, sfcCode: {}",collectQualityData.getFactoryNumber());
        }
        return daParamCollectionMapper.insertDaParamCollection(daParamCollection);
        return 0;
    }
    /**
billion-main/src/main/java/com/billion/main/da/service/impl/DaStationCollectionServiceImpl.java
@@ -32,6 +32,7 @@
{
    @Autowired
    private DaStationCollectionMapper daStationCollectionMapper;
    @Autowired
    public IOmOrderSchedulingService omOrderSchedulingService;
    /**
     * 查询过站采集
billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java
@@ -214,16 +214,16 @@
        lists.add("PLC4.OP110.RecordData");
        lists.add("PLC4.OP140.RecordData");
        //TEST
        lists.add("TEST.C005.RecordData");
        lists.add("TEST.C005.WorkOrderRequest");
        lists.add("TEST.C060.RecordData");
        lists.add("TEST.OP005.RecordData");
        lists.add("TEST.OP005.WorkOrderRequest");
        lists.add("TEST.OP010.RecordData");
        lists.add("TEST.OP300.RecordData");
        lists.add("TEST.P010.RecordData");
        lists.add("TEST.P010.WorkOrderRequest");
//        //TEST
//        lists.add("TEST.C005.RecordData");
//        lists.add("TEST.C005.WorkOrderRequest");
//        lists.add("TEST.C060.RecordData");
//        lists.add("TEST.OP005.RecordData");
//        lists.add("TEST.OP005.WorkOrderRequest");
//        lists.add("TEST.OP010.RecordData");
//        lists.add("TEST.OP300.RecordData");
//        lists.add("TEST.P010.RecordData");
//        lists.add("TEST.P010.WorkOrderRequest");
        return lists;
    }
billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -25,6 +25,7 @@
import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
import com.kangaroohy.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.milo.opcua.sdk.client.nodes.UaNode;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
@@ -100,14 +101,14 @@
                if (Constants.ZERO.equals(valueString)){
                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(0).build());
                //请求进站
                } else if (Constants.ONE.equals(valueString)){
                }  if (Constants.ONE.equals(valueString)){
                    //1.1//首工站
                    if(Constants.ONLINE.contains(device)){
                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                    }
                    //1.2//除首工站所有工站
                    else if(
                            Constants.TEST.contains(device) ||
//                            Constants.TEST.contains(device) ||
                            Constants.PLC1.contains(device) ||
                            Constants.PLC2.contains(device) ||
                            Constants.PLC3.contains(device) ||
@@ -130,7 +131,6 @@
                                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(EngineType).build());
                                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SerialNumber").value(SerialNumber).build());
                                }
                                //9L发动机涂胶轨迹下发
                                else if(Constants.OP080.equals(device) && Constants.PLC_4.equals(thoroughfare)){
                                    // 1. 初始化工单对象并查询工单信息
@@ -183,7 +183,7 @@
                        }
                    }
                //出站保存数据
                } else if (Constants.TWO.equals(valueString)) {
                } if (Constants.TWO.equals(valueString)) {
                    OmProductionOrderInfo omProductionOrderInfo = new OmProductionOrderInfo();
                    OmOrderScheduling omOrderScheduling = new OmOrderScheduling();
                    Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue();
@@ -282,55 +282,56 @@
                        if (Objects.equals(nowQty, getPreOrder2.getPlanQty().toString())){
                            omProductionOrderInfoService.updatePreStatus2();
                        }
                    }else if (Constants.OP020.equals(device)){
                        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        // 遍历 MaterialCode35 到 MaterialCode40 共6组数据
                        for (int i = 35; i <= 40; i++) {  // 修改循环范围
                                // 构建OPC UA节点地址(例如:PLC1.OP020.MaterialCode35)
                                String nodeId = "PLC1." + device + ".MaterialCode" + i;
                                // 创建采集对象
                                DaMaterialCollection materialCollection = new DaMaterialCollection();
                                materialCollection.setSfcCode(SFCCode.toString());
                                materialCollection.setLocationCode(device);
                                // 设置参数名称(活塞1到活塞6)
                                int pistonNumber = i - 34;  // 35→1, 36→2...40→6
                                materialCollection.setParamName("活塞" + pistonNumber);
                                // 通过OPC UA读取参数值
                                ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId);
                                if (dataRead != null && dataRead.getValue() != null) {
                                    materialCollection.setParamValue(dataRead.getValue().toString());
                                } else {
                                    materialCollection.setParamValue("N/A");  // 处理空值情况
                                }
                                Date collectTime = new Date();
                                ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间
                                collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString())));
                                materialCollection.setCollectTime( collectTime);
                                // 插入数据库
                                daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
                        }
                    }else if (Constants.OP130.equals(device)){
                        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        // 遍历 MaterialCode35 到 MaterialCode40 共6组数据
                            String nodeId = "PLC1." + device + ".MaterialCode35" ;
                            // 创建采集对象
                            DaMaterialCollection materialCollection = new DaMaterialCollection();
                            materialCollection.setSfcCode(SFCCode.toString());
                            materialCollection.setLocationCode(device);
                            materialCollection.setParamName("缸盖码");
                            // 通过OPC UA读取参数值
                            ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId);
                            if (dataRead != null && dataRead.getValue() != null) {
                                materialCollection.setParamValue(dataRead.getValue().toString());
                            } else {
                                materialCollection.setParamValue("N/A");  // 处理空值情况
                            }
                            Date collectTime = new Date();
                            ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间
                            collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString())));
                            materialCollection.setCollectTime( collectTime);
                            // 插入数据库
                            daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
//                    }else if (Constants.OP020.equals(device)){
//                        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                        // 遍历 MaterialCode35 到 MaterialCode40 共6组数据
//                        for (int i = 35; i <= 40; i++) {  // 修改循环范围
//                                // 构建OPC UA节点地址(例如:PLC1.OP020.MaterialCode35)
//                                String nodeId = "PLC2." + device + ".MaterialCode" + i;
//                                // 创建采集对象
//                                DaMaterialCollection materialCollection = new DaMaterialCollection();
//                                materialCollection.setSfcCode(SFCCode.toString());
//                                materialCollection.setLocationCode(device);
//                                // 设置参数名称(活塞1到活塞6)
//                                int pistonNumber = i - 34;  // 35→1, 36→2...40→6
//                                materialCollection.setParamName("活塞" + pistonNumber);
//                                // 通过OPC UA读取参数值
//                                ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId);
//                                if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), "                                                  ")) {
//                                    materialCollection.setParamValue(dataRead.getValue().toString());
//                                    Date collectTime = new Date();
//                                    ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间
//                                    collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString())));
//                                    materialCollection.setCollectTime( collectTime);
//                                    // 插入数据库
//                                    daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
//                                } else {
//                                    log.info("活塞号为空: {}",materialCollection.getParamName() );
//                                }
//                        }
//                    }else if (Constants.OP130.equals(device)){
//                        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                        // 遍历 MaterialCode35 到 MaterialCode40 共6组数据
//                            String nodeId = "PLC3." + device + ".MaterialCode35" ;
//                            // 创建采集对象
//                            DaMaterialCollection materialCollection = new DaMaterialCollection();
//                            materialCollection.setSfcCode(SFCCode.toString());
//                            materialCollection.setLocationCode(device);
//                            materialCollection.setParamName("缸盖码");
//                            // 通过OPC UA读取参数值
//                            ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId);
//                            if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), "                                                  ")) {
//                                materialCollection.setParamValue(dataRead.getValue().toString());
//                                Date collectTime = new Date();
//                                ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间
//                                collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString())));
//                                materialCollection.setCollectTime( collectTime);
//                                // 插入数据库
//                                daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
//                            } else {
//                                log.info("缸盖码为空: {}",materialCollection.getParamName() );
//                            }
                    }
                    //出站保存
                    DaStationCollection daStationCollection = new DaStationCollection();
@@ -354,6 +355,7 @@
                    daCollectionParamConf1.setDescriptive("1");
                    List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1);
                    for (DaCollectionParamConf conf : daCollectionParamConfList1) {
                        String index = String.valueOf(daCollectionParamConfList1.indexOf(conf));
                        String gatherAddress = conf.getGatherAddress();
                        String valueObj = null;
                        ReadWriteEntity entity = miloService.readFromOpcUa(gatherAddress);
@@ -363,6 +365,7 @@
                                valueObj = value.toString();  // 最终赋值
                                if (!Objects.equals(valueObj, "                                                  ")) {
                                    DaMaterialCollection materialCollection = new DaMaterialCollection();
                                    materialCollection.setRemark(index);
                                    materialCollection.setSfcCode(SFCCode.toString());
                                    materialCollection.setLocationCode(device);
                                    materialCollection.setParamName(conf.getParameterSetName());
@@ -386,8 +389,9 @@
                    List<DaCollectionParamConf> daCollectionParamConfList2 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf2);
                    for (DaCollectionParamConf conf : daCollectionParamConfList2) {
                        String gatherAddress = conf.getGatherAddress();
                        String valueObj = miloService.readFromOpcUa(gatherAddress).getValue().toString(); // 获取原始值对象‌:ml-citation{ref="4" data="citationList"}
                        if (!Objects.equals(valueObj, "0.0") && !Objects.equals(valueObj, "0")) {
                        try{
                            Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // 获取原始值对象‌:ml-citation{ref="4" data="citationList"}
                            if (!Objects.equals(valueObj, "0.0") && !Objects.equals(valueObj, "0") && valueObj != null  ) {
                            DaParamCollection paramCollection = new DaParamCollection();
                            paramCollection.setSfcCode(SFCCode.toString());
                            paramCollection.setLocationCode(device);
@@ -402,6 +406,10 @@
                        else {
                            log.info("采集项为空: {}", gatherAddress);
                        }
                        }catch (Exception e){
                            log.error(e.getMessage());
                        }
                    }
                }
            }