hdy
2025-03-12 a646fa956a1d41ea33a55712693f1b175f85ecd1
billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -16,6 +16,7 @@
import com.billion.main.om.domain.OmProductionOrderInfo;
import com.billion.main.om.service.IOmOrderSchedulingService;
import com.billion.main.om.service.IOmProductionOrderInfoService;
import com.billion.main.plcServer.util.TimeUtil;
import com.billion.main.sys.domain.SysCount;
import com.billion.main.sys.service.ISysCountService;
import com.kangaroohy.milo.model.ReadWriteEntity;
@@ -23,7 +24,6 @@
import com.kangaroohy.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import com.billion.main.plcServer.util.TimeUtil;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
@@ -100,7 +100,8 @@
                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                    }
                    //除首工站所有工站
                    else if(Constants.PLC1.contains(device) ||
                    else if(
                            Constants.PLC1.contains(device) ||
                            Constants.PLC2.contains(device) ||
                            Constants.PLC3.contains(device) ||
                            Constants.PLC4.contains(device) ||
@@ -109,17 +110,22 @@
                        //校验SFCCode是否存在
                        Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue();
                        if (SFCCode == null ) {
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(23).build());
                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(13).build());
                        } else {
                            OmOrderScheduling omOrderScheduling = new OmOrderScheduling();
                            omOrderScheduling.setSfcCode(SFCCode.toString());
                            List<OmOrderScheduling> resultList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
                            log.info("查询结果数量: {}", resultList);
                            BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
                            bsbomChildInfo.setLocationCode(device);
                            bsbomChildInfo.setBomCode(resultList.get(0).getWorkOrderNo());
                            //下发配方
                            formula(thoroughfare, device, bsbomChildInfo);
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                            if(resultList != null){
                                String getWorkOrderNo = resultList.get(0).getWorkOrderNo();
                                BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
                                bsbomChildInfo.setLocationCode(device);
                                bsbomChildInfo.setBomCode(getWorkOrderNo);
                                //下发配方
                                formula(thoroughfare, device, bsbomChildInfo);
                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                            }else {
                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(13).build());
                            }
                        }
                    }
                //出站保存数据
@@ -134,6 +140,11 @@
                        omOrderScheduling.setWorkOrderNo(workOrderNumber.toString());
                        omOrderScheduling.setNowQty(nowQty.toString());
                        omOrderScheduling.setSfcCode(SFCCode.toString());
                        Date Time = new Date();
                        ReadWriteEntity TimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime");
                        Time = format.parse(TimeUtil.test(TimeUtil.stringProcessing(TimeRead.getValue().toString())));
                        omOrderScheduling.setOnlineTime(Time);
                        omOrderScheduling.setStatus("1");
                        //托盘绑定SFCCode和工单和产线
                        if(Constants.OP005.equals(device)){
                            omOrderScheduling.setRemarks("Body");
@@ -143,6 +154,11 @@
                        }
                        omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling);
                    }else if(Constants.OFFLINE.contains(device)){
                        Date Time = new Date();
                        ReadWriteEntity TimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");
                        Time = format.parse(TimeUtil.test(TimeUtil.stringProcessing(TimeRead.getValue().toString())));
                        omOrderScheduling.setOfflineTime(Time);
                        omOrderScheduling.setStatus("2");
                        if(Constants.C060.equals(device)){
                            omOrderScheduling.setRemarks("Head");
                            omOrderScheduling.setSfcCode(SFCCode.toString());
@@ -197,38 +213,50 @@
                    //查询descriptive字段等于1的采集项保存到扫码保存到da_material_collection表里
                    DaCollectionParamConf daCollectionParamConf1 = new DaCollectionParamConf();
                    daCollectionParamConf1.setProcessesCode(device);
                    daCollectionParamConf1.setDescriptive("3");
                    daCollectionParamConf1.setDescriptive("1");
                    List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1);
                    for (DaCollectionParamConf conf : daCollectionParamConfList1) {
                        String gatherAddress = conf.getGatherAddress();
                        Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // 获取原始值对象‌:ml-citation{ref="4" data="citationList"}
                        if (valueObj != null ) {
                        String valueObj = miloService.readFromOpcUa(gatherAddress).getValue().toString(); // 获取原始值对象‌:ml-citation{ref="4" data="citationList"}
                        if (!Objects.equals(valueObj, "                                                  ")) {
                            DaMaterialCollection materialCollection = new DaMaterialCollection();
                            materialCollection.setSfcCode(SFCCode.toString());
                            materialCollection.setLocationCode(device);
                            materialCollection.setParamName(conf.getParameterSetName());
                            materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
                            materialCollection.setCollectTime(new Date());
                            materialCollection.setParamValue(miloService.readFromOpcUa(gatherAddress).getValue().toString());
                            Date Time = new Date();
                            ReadWriteEntity TimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");
                            Time = format.parse(TimeUtil.test(TimeUtil.stringProcessing(TimeRead.getValue().toString())));
                            materialCollection.setCollectTime(Time);
                            daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
                        }
                        else {
                            log.debug("采集项为空: {}", gatherAddress);
                        }
                    }
                    //查询descriptive字段等于2的采集项保存到扫码保存到da_param_collection表里
//                    查询descriptive字段等于2的采集项保存到扫码保存到da_param_collection表里
                    DaCollectionParamConf daCollectionParamConf2 = new DaCollectionParamConf();
                    daCollectionParamConf2.setProcessesCode(device);
                    daCollectionParamConf2.setDescriptive("4");
                    daCollectionParamConf2.setDescriptive("2");
                    List<DaCollectionParamConf> daCollectionParamConfList2 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf2);
                    for (DaCollectionParamConf conf : daCollectionParamConfList2) {
                        String gatherAddress = conf.getGatherAddress();
                        Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // 获取原始值对象‌:ml-citation{ref="4" data="citationList"}
                        if (valueObj != null ) {
                        String valueObj = miloService.readFromOpcUa(gatherAddress).getValue().toString(); // 获取原始值对象‌:ml-citation{ref="4" data="citationList"}
                        if (!Objects.equals(valueObj, "0.0") && !Objects.equals(valueObj, "0")) {
                            DaParamCollection paramCollection = new DaParamCollection();
                            paramCollection.setSfcCode(SFCCode.toString());
                            paramCollection.setLocationCode(device);
                            paramCollection.setParamName(conf.getParameterSetName());
                            paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
                            paramCollection.setCollectionTime(new Date());
                            paramCollection.setParamValue(miloService.readFromOpcUa(gatherAddress).getValue().toString());
                            Date Time = new Date();
                            ReadWriteEntity TimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");
                            Time = format.parse(TimeUtil.test(TimeUtil.stringProcessing(TimeRead.getValue().toString())));
                            paramCollection.setCollectTime(Time);
                            daParamCollectionService.insertDaParamCollection(paramCollection);
                        }
                        else {
                            log.debug("采集项为空: {}", gatherAddress);
                        }
                    }
                    DaStationCollection daStationCollection = new DaStationCollection();
                    daStationCollection.setLocationCode(device);