From 109e2fdc5607792ddf74654cd864142963213bad Mon Sep 17 00:00:00 2001 From: cl <418351270@qq.com> Date: 星期一, 01 七月 2024 15:26:20 +0800 Subject: [PATCH] 修改参数采集 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 1019 ++++++++++++++++++++++++++++------------------------------- 1 files changed, 489 insertions(+), 530 deletions(-) diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java index 52c039b..7a83c27 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java @@ -2,13 +2,12 @@ import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONObject; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.jcdm.common.utils.StringUtils; import com.jcdm.framework.websocket.WebSocketUsers; import com.jcdm.main.constant.Constants; import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; @@ -17,67 +16,35 @@ import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService; import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService; -import com.jcdm.main.da.testDeviceInterface.domain.DaTestDeviceInterface; -import com.jcdm.main.da.testDeviceInterface.service.IDaTestDeviceInterfaceService; -import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo; import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; -import com.jcdm.main.plcserver.conf.OPCElement; -import com.jcdm.main.plcserver.util.TimeUtil; -import com.jcdm.main.restful.factoryMes.service.RestfulService; import com.jcdm.main.restful.qingYan.doman.ChildVO; import com.jcdm.main.restful.qingYan.doman.ParentVO; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; import com.kangaroohy.milo.service.MiloService; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.websocket.Session; import java.text.SimpleDateFormat; -import java.time.Instant; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; + @Slf4j @Component public class OPCUaSubscription implements SubscriptionCallback { - private static final Logger logger = LoggerFactory.getLogger("sys-user"); - public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - //鏂拌嚜鍔ㄥ伐绔� - public List<String> automaticList = Arrays.asList("OP280","OP310A","OP310B", "OP300A","OP300B", "OP320A","OP320B", "OP340A","OP340B", "OP350A","OP350B", "OP360","OP365","OP370", "OP390", "OP470"); - - //閲囬泦妯$粍宸ヤ綅 ModuleCode - public List<String> moduleCodeList = Arrays.asList("OP300A","OP310A","OP310B","OP300B","OP320A","OP320B","OP340A","OP340B","OP365", "OP350A", "OP350B", "OP330"); - - //鍖哄垎妯$粍鍨嬪彿宸ヤ綅 - public List<String> distinguishingModules = Arrays.asList("OP300","OP310", "OP340", "OP350", "OP330"); - - //鍖哄垎灏忚溅鐮� - public List<String> agvId = Arrays.asList("OP360", "OP390", "OP470","OP280"); - - - //鍖哄垎pack鍨嬪彿鐨勫伐浣� - public List<String> packIdList = Arrays.asList("OP280","OP360","OP390","OP470"); - - //娴嬭瘯璁惧鎵嬪姩宸ヤ綅 - public List<String> testList = Arrays.asList("OP430-1","OP430-2","OP430-3","OP430-4","OP480-1","OP480-2","OP480-3","OP440"); - - - //绌虹殑 - public List<String> nullList = Arrays.asList("OP250","OP260"); public static MiloService miloService; - Map<String, Session> map = WebSocketUsers.getUsers(); - public IDaPassingStationCollectionService daPassingStationCollectionService; + public static IDaPassingStationCollectionService daPassingStationCollectionService; public static IDaCollectionParamConfService collectionParamConfService; @@ -85,538 +52,530 @@ public static IOmProductionOrdeInfoService omProductionOrdeInfoService; - private static IDaTestDeviceInterfaceService daTestDeviceInterfaceService; - + @Value("${orderLineUrl}") + private static String orderLineUrl; public OPCUaSubscription(MiloService miloService, IDaPassingStationCollectionService daPassingStationCollectionService, IDaCollectionParamConfService collectionParamConfService, IDaParamCollectionService daParamCollectionService, - IOmProductionOrdeInfoService omProductionOrdeInfoService, - IDaTestDeviceInterfaceService daTestDeviceInterfaceService) { + IOmProductionOrdeInfoService omProductionOrdeInfoService) { OPCUaSubscription.miloService = miloService; - this.daPassingStationCollectionService = daPassingStationCollectionService; + OPCUaSubscription.daPassingStationCollectionService = daPassingStationCollectionService; OPCUaSubscription.collectionParamConfService = collectionParamConfService; OPCUaSubscription.daParamCollectionService = daParamCollectionService; OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService; - OPCUaSubscription.daTestDeviceInterfaceService = daTestDeviceInterfaceService; } @Override public void onSubscribe(String identifier, Object value) { - - logger.info("鍦板潃锛�"+identifier+"鍊硷細"+value); + log.info("鍦板潃锛�"+identifier+"鍊硷細"+value); try { - if(null != value && Integer.valueOf(value.toString())!= 0) { + if(null != value && !Constants.ZERO.equals(value.toString())) { String[] nodes = identifier.split("[.]"); String thoroughfare = nodes[0];//閫氶亾 String device = nodes[1];//璁惧 String tab = nodes[2];//鏍囪 - String tabVlaue = value.toString();//鍦板潃鍊� - - if (("RecordData").equals(tab)) { - String recordDataDoneValue = ""; - - if("1".equals(tabVlaue)){ - - //璇锋眰宸ュ崟 -// if(device.equals("OP230")){ -// getFactoryOrder("OP230"); -// } - - //鑷姩宸ヤ綅 - if(automaticList.stream().anyMatch(s -> s.equals(device))){ - //plc缁欐垜浠竴涓ā缁勭爜锛屾嬁妯$粍鐮佹牎楠屽嚭鍨嬪彿 - if(moduleCodeList.stream().anyMatch(s -> s.equals(device))) { - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - //璇绘ā缁勭爜 - Object moduleCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); - if(device.equals("OP365")){ - Object moduleCodeA = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCodeA").getValue(); - Object moduleCodeB = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCodeB").getValue(); - if(moduleCodeA!=null && moduleCodeB!=null){ - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); - }else { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); - } - return; - } - - if(moduleCode!=null){ - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); - }else { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); - } - }else { - if(agvId.stream().anyMatch(s -> s.equals(device))){ - Object agvIdObject = miloService.readFromOpcUa(thoroughfare + "." + device + ".AGVID").getValue(); - //agvId 灏忚溅鐮佹槸鍚︿负绌� - if(agvIdObject!=null){ - String PACKCode = thoroughfare + "." + device + ".MPACKCode"; - OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getTrolleyYard, agvIdObject.toString())); - //灏忚溅鐮佹煡鎵惧伐鍗曟槸鍚︿负绌� - if(one!=null){ - String packId = one.getProductNum(); - miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(PACKCode).value(packId).build()); - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); - }else { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); - } - }else { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); - } - - }else { - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - Object packCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + ".PACKCode").getValue(); - if(packCodeObject!=null){ - //pack 濡傛灉鍖哄垎鍨嬪彿鐨勮瘽灏辫澶勭悊 - //璁板綍鏁版嵁瀹屾垚 - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); - }else { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); - } - } - } - }else { - //鎵嬪姩宸ヤ綅澶勭悊閫昏緫 -// if (map.containsKey(device)){ - WebSocketUsers.sendMessageToUserByText(map.get(device), "IN"); - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); -// } - } - - - }else if("2".equals(tabVlaue)){ - if(automaticList.stream().anyMatch(s -> s.equals(device))){ - //鑷姩宸ヤ綅 - //鍑虹珯淇濆瓨鏁版嵁 - outSaveDate(thoroughfare,device); - //璁板綍鏁版嵁瀹屾垚 - /*String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf(recordDataDoneValue)).build());*/ - }else { - //鎵嬪姩宸ヤ綅 -// if(device.contains("OP330")){ -// String str = device.substring(0,5); -// WebSocketUsers.sendMessageToUserByText(map.get(str), "END"); -// }else { - WebSocketUsers.sendMessageToUserByText(map.get(device), "END"); -// } - if(testList.stream().anyMatch(s -> s.equals(device))){ - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(21).build()); -// Object packCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); -// DaTestDeviceInterface deviceInterfaceOne = null; -// -// if (ObjectUtil.isNotNull(packCodeObject)) { -// String modelCode = packCodeObject.toString(); -// deviceInterfaceOne = daTestDeviceInterfaceService.getOne(new LambdaQueryWrapper<DaTestDeviceInterface>() -// .eq(DaTestDeviceInterface::getProductNum, modelCode) -// .eq(DaTestDeviceInterface::getStationCode, device)); + String valueString = value.toString();//鍦板潃鍊� + if (Constants.RECORD_CHECK_CODE.equals(tab)){//鐢佃姱鏍¢獙 + if (Constants.ONE.equals(valueString)){ + Integer scanResult = 11; + if (Constants.OP010.equals(device) || Constants.OP030.equals(device)){ + //OP010宸ヤ綅鐢佃姱鏉$爜鏍¢獙||OP030宸ヤ綅鐢佃姱鏉$爜鏍¢獙 + Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".Scaner").getValue(); + if (ObjectUtil.isNotNull(value1)){ + String keyCode = value1.toString(); + log.info("璇诲彇鍒板伐浣峽}鐨凷caner鏁版嵁锛歿}",device,keyCode); + //浠呮牎楠岄暱搴︽槸鍚﹀悎鏍� +// List<KeyCodeCheck> collect = keyCodeCheckService.list().stream().filter(x -> x.getKeyCode().contains(keyCode)).collect(Collectors.toList()); +// if (CollUtil.isNotEmpty(collect)){ +// scanResult = 11; // } -// -// if (deviceInterfaceOne != null && "1".equals(deviceInterfaceOne.getTotalResult())) { -// writeToOpc(RecordDataDoneAddress, (short) 21); -// } else { -// writeToOpc(RecordDataDoneAddress, (short) 22); -// } -// writeToOpc(RecordDataDoneAddress, (short) 21); } - - } - }else { - System.out.println("^"); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult1").value(scanResult).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凷canerResult1鏁版嵁锛歿}",device,scanResult); } - } - //淇濆瓨鎷х揣鏁版嵁 - else if (("AngleResult").equals(tab)) { - if("1".equals(tabVlaue)||"2".equals(tabVlaue)){ - List<String> list = new ArrayList<>(); - String[] suffixes = {"Torque", "Angle", "TorqueResult", "AngleResult"}; + }else if (Constants.RECORD_SN.equals(tab)){//姹備笅鍙戞ā缁勭爜璇�9 + if (Constants.ONE.equals(valueString)){ + if (Constants.OP100_1.equals(device) || Constants.OP100_2.equals(device) ){ + /*List<WorkOrder> orderList = workOrderService.list().stream() + .sorted(Comparator.comparing(WorkOrder::getCreateTime).reversed()) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(orderList)){ + String productNum = orderList.get(0).getProductNum();//妯$粍鐮� + //OP070涓嬪彂浜у搧妯$粍鐮� + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(productNum).build()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(1).build()); + }else{ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(2).build());//娌℃湁瑕佺敓浜х殑宸ュ崟 + }*/ + } + } + }else if (Constants.RECORD_DATA.equals(tab)){//鍑哄叆绔� + if (Constants.ONE.equals(valueString)){//鍏ョ珯 + //1:鍛婄煡MES鎵樼洏宸插埌绔欙紝璇锋眰涓嬪彂杩涚珯鐘舵�� + if (Constants.OP030.equals(device)){ + //鍙嶉鐢佃姱ocv妫�娴嬬粨鏋� + boolean b = true;//OCVResultFeedBack(thoroughfare, device); + if (b){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,11); + }else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,12); + } + } else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,11); + } + }else if (Constants.TWO.equals(valueString)){//鍑虹珯 + //鍒嗘010-065娈� + if (Constants.OP010.equals(device)){ + //010宸ヤ綅鏃犺繃绔欒褰曪紝鍙粰鏀捐淇″彿 + /*List<SendFactoryMes> collect = sendFactoryMesList.stream().filter(x -> device.equals(x.getLocationCode())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)){ + for (SendFactoryMes sendFactoryMes : collect) { + ChildVO childVO = new ChildVO(); + childVO.setItemCode(sendFactoryMes.getItemCode()); + childVO.setItemText(sendFactoryMes.getItemText()); + childVO.setItemType(sendFactoryMes.getItemType()); + } + }*/ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,21); + }else if (Constants.OP020_OP065.contains(device)){ + Integer result = 21; + //璇诲彇鐢佃姱鐮� + List<String> cellCodeList = readCellCodeList(thoroughfare, device); + if(ObjectUtil.isNull(cellCodeList) && cellCodeList.size() != 4){ + result = 23; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(23).build()); + }else{ + result = savePassingStation(thoroughfare, device,cellCodeList);//淇濆瓨杩囩珯 + if(result==21) { + result = saveParamCollection(thoroughfare, device,cellCodeList);//淇濆瓨鍙傛暟锛屽彂閫佸伐鍘侻ES + } + } + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,result); + } else if (Constants.OP100_1.equals(device) || Constants.OP100_2.equals(device)){ - for (String suffix : suffixes) { - String string = thoroughfare + "." + device + "." + suffix; - list.add(string); + } else { + //2:鍛婄煡MES宸ヤ綅宸ヤ綔瀹屾垚锛岃姹傝褰曞伐浣嶆暟鎹� + //淇濆瓨鍙傛暟閲囬泦璁板綍 + saveParamPassingData(device,thoroughfare); + //淇濆瓨杩囩珯璁板綍 + DaPassingStationCollection passingStationCollection = new DaPassingStationCollection(); + Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); + String moduleCode = null; + if (ObjectUtil.isNotNull(value1)){ + moduleCode = value1.toString(); + log.info("璇诲彇宸ヤ綅{}鐨凪oduleCode鏁版嵁锛歿}",device,moduleCode); + } + passingStationCollection.setSfcCode(moduleCode); + passingStationCollection.setLocationCode(device); + passingStationCollection.setInboundTime(new Date()); + String stationStatus = Constants.PASS; + ReadWriteEntity stationStatusRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus"); + if (ObjectUtil.isNotNull(stationStatusRead.getValue())){ + String string = stationStatusRead.getValue().toString(); + if (Constants.TWO.equals(string)){ + stationStatus = Constants.UN_PASS; + } + } + passingStationCollection.setOutRsSign(stationStatus); + passingStationCollection.setCreateTime(new Date()); + daPassingStationCollectionService.save(passingStationCollection); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,21); } - List<ReadWriteEntity> list1 = miloService.readFromOpcUa(list); - List<Object> collect = list1.stream().map(ReadWriteEntity::getValue).collect(Collectors.toList()); - String joinedString = String.join(",", collect.toString()); - WebSocketUsers.sendMessageToUserByText(map.get(device), TightenTheConversionOkNg(joinedString)); - if(device.contains("270") || device.contains("260")){ - logger.info("璇诲彇鍒板伐浣峽}鐨凷caner鏁版嵁锛歿}",device,TightenTheConversionOkNg(joinedString)); - } + } + } else if (Constants.RECORD_CHECK_CODE_1.equals(tab)) { + if (Constants.OP100_1.equals(device)){ + //閽㈠甫鏉$爜鏍¢獙--鍙戦�佺粰宸ュ巶mes + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult11").value(11).build()); + } else if (Constants.OP100_2.equals(device)) { + //PET甯︽潯鐮佹牎楠�--鍙戦�佺粰宸ュ巶mes + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult12").value(11).build()); } } } } catch (Exception e) { - logger.info("璁㈤槄鏂规硶鎶ラ敊:{}"+e.getMessage()); - logger.error("璁㈤槄鏂规硶鎶ラ敊",e); + System.out.println(e.getMessage()); + log.info(e.getMessage()); } } /** - * 鑾峰彇SNCode + * 璇诲彇鐢佃姱鐮� + * @param thoroughfare 閫氶亾 + * @param device 宸ヤ綅 + * @return list + * @throws Exception e */ - public String getSNCode(){ - String SNCode = ""; - return SNCode; - } - - /** - * 鍑虹珯淇濆瓨鏁版嵁 - */ - public void outSaveDate(String thoroughfare,String device) { - String snCode = ""; - String result = ""; - String read = thoroughfare + "." + device + "."; - + private static List<String> readCellCodeList(String thoroughfare, String device){ + List<String> cellCodeList = new ArrayList<>(); + //鐢佃姱鐮佸湴鍧� + List<String> readList = new ArrayList<>(); + readList.add(thoroughfare + "." + device +".CellCode_1"); + readList.add(thoroughfare + "." + device +".CellCode_2"); + readList.add(thoroughfare + "." + device +".CellCode_3"); + readList.add(thoroughfare + "." + device +".CellCode_4"); try { - if(nullList.stream().noneMatch(s -> s.equals(device))){//鍒犻櫎鈥︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�� - if(moduleCodeList.stream().anyMatch(s -> s.equals(device))){ - read = read + "ModuleCode"; - }else { - read = read + "PACKCode"; + List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(readList);//鐢佃姱鐮� + for (ReadWriteEntity readWriteEntity : readWriteEntityList) { + if (ObjectUtil.isNotNull(readWriteEntity.getValue())){ + cellCodeList.add(readWriteEntity.getValue().toString());//灏佽鐢佃姱鐮� } } - if(device.equals("OP365")){ - try { - saveStationInfo365(thoroughfare,device); - }catch (Exception e){ - e.printStackTrace(); - } - }else { - snCode = miloService.readFromOpcUa(read).getValue().toString(); - - if(null == snCode || "".equals(snCode)){ - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf("22")).build()); - }else{ - - String workOrderNo = ""; - String productCode = ""; - //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� - Object orderNumberObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "WorkOrderNumber").getValue(); - if(orderNumberObject!=null){ - workOrderNo = orderNumberObject.toString(); - } - - Object productCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "ProductType").getValue(); - if(productCodeObject!=null){ - productCode = productCodeObject.toString(); - } - - saveStationInfo(snCode,thoroughfare,device,workOrderNo,productCode); - //3銆佷繚瀛樺弬鏁伴噰闆嗘暟鎹� - List<DaParamCollection> daParamCollectionList = SaveParamData(snCode,thoroughfare,device,workOrderNo,productCode); - - //濡傛灉鏄湯灏惧伐绔欒鎶ュ伐 - if(device.equals("OP500")){ - RestfulService.getWorkReportResultFeedback(snCode,device,format.format(new Date())); - //1銆佹洿鏂板伐鍗曚俊鎭� - updateOrderInfo(snCode); - } - - try{ - daParamCollectionService.automaticWorkstationPushGeelycvMesFeedback(snCode,device,daParamCollectionList); - }catch (Exception e){ - } - } - - } - }catch (Exception e) { - logger.error("鍑虹珯淇濆瓨鏁版嵁寮傚父锛�"+e); - } - } - - -// /** -// * 鍑虹珯淇濆瓨鏁版嵁 -// */ -// public String outSaveDate(String thoroughfare,String device) { -// String result = ""; -// try { -// //璇诲彇SNCode -// String PACKCode = thoroughfare + "." + device + ".PACKCode"; -// Object PACKCodeObject = miloService.readFromOpcUa(PACKCode).getValue(); -// if(null == PACKCodeObject || "".equals(PACKCodeObject)){ -// result = "22"; -// }else{ -// String PACKCodeParam = PACKCodeObject.toString(); -// //1銆佹洿鏂板伐鍗曚俊鎭� -// //updateOrderInfo(); -// //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� -// saveStationInfo(PACKCodeParam,thoroughfare,device); -// //3銆佷繚瀛樺弬鏁伴噰闆嗘暟鎹� -// SaveParamData(PACKCodeParam,thoroughfare,device,"",""); -// -// result = "21"; -// -// } -// -// }catch (Exception e) { -// -// } -// return result; -// } - - /** - * 淇濆瓨杩囩珯閲囬泦 - */ - public void saveStationInfo(String packCode,String thoroughfare,String device,String workOrderNo,String productCode) throws Exception { - logger.info("杩涘叆宸ヤ綅{}-鏂规硶saveStationInfo",device); - SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); - sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // CST閫氬父琛ㄧず涓浗鏍囧噯鏃堕棿锛屽嵆涓滃叓鍖� - String prefix = thoroughfare+"."+device+"."; - String startTime = miloService.readFromOpcUa(prefix + "StartTime").getValue().toString(); - String stopTime = miloService.readFromOpcUa(prefix + "StopTime").getValue().toString(); - String stationStatus = miloService.readFromOpcUa(prefix + "StationStatus").getValue().toString(); - - DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection(); - daPassingStationCollection.setSfcCode(packCode); - daPassingStationCollection.setWorkOrderNo(workOrderNo); - daPassingStationCollection.setProductCode(productCode); - daPassingStationCollection.setLocationCode(device); - String strt = TimeUtil.stringProcessing(startTime); - String end = TimeUtil.stringProcessing(stopTime); - daPassingStationCollection.setInboundTime(format.parse(TimeUtil.test(strt)));//鍏ョ珯鏃堕棿 - daPassingStationCollection.setOutboundTime(format.parse(TimeUtil.test(end)));//鍑虹珯鏃堕棿 - daPassingStationCollection.setOutRsSign(stationStatus);//鍑虹珯鏄惁鍚堟牸 - daPassingStationCollectionService.insertDaPassingStationCollection(daPassingStationCollection); - logger.info("缁撴潫宸ヤ綅{}-鏂规硶saveStationInfo",device); - } - - public static List<DaParamCollection> SaveParamData(String packCode,String thoroughfare,String device,String workOrderNo,String productType) throws Exception { - logger.info("杩涘叆宸ヤ綅{}-鏂规硶SaveParamData",device); - List<DaCollectionParamConf> list; - DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); - daCollectionParamConf.setGatherAddress(thoroughfare+ "." + device); - list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); - List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); - - List<String> nodeIdList = list.stream().map(info -> { - String nodeid = info.getGatherAddress(); - return nodeid; - }).collect(Collectors.toList()); - - if(!nodeIdList.isEmpty()){ - List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(nodeIdList); - for(int i=0;i<nodeIdList.size();i++){ - if(readWriteEntityList.get(i).getValue() == null){ - readWriteEntityList.get(i).setValue(" "); - } - String paramValue = readWriteEntityList.get(i).getValue().toString(); - DaParamCollection ParamCollection = new DaParamCollection(); - ParamCollection.setParamCode(list.get(i).getCollectParameterId()); - ParamCollection.setLocationCode(device); - if(paramValue.contains("Time")){ - ParamCollection.setParamValue(TimeUtil.test(TimeUtil.stringProcessing(paramValue))); - }else { - ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString()); - } - ParamCollection.setSfcCode(packCode); - if(device.contains("OP360")){ - String node = nodeIdList.get(i); - Object value = miloService.readFromOpcUa("PACK.OP360.ModuleSNCode"+node.charAt(node.length()-1)).getValue(); - if(value!=null){ - ParamCollection.setModuleCode(value.toString()); - } - } - ParamCollection.setParamName(list.get(i).getCollectParameterName()); - ParamCollection.setParamUpper(list.get(i).getParamUpper()); - ParamCollection.setParamLower(list.get(i).getParamLower()); - ParamCollection.setUnit(list.get(i).getCollectParameterUnit()); - ParamCollection.setType(list.get(i).getCollectParameterType()); - ParamCollection.setCollectionTime(new Date()); - ParamCollection.setWorkOrderNo(workOrderNo); - ParamCollection.setProductCode(productType); - daParamCollectionlist.add(ParamCollection); - } - } - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf("21")).build()); - logger.info("缁欏伐浣峽}鍐欎簡21",device); - daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); - List<DaParamCollection> baseDataList = addBaseData(workOrderNo,productType,device,packCode); - for (int i = 0; i < baseDataList.size(); i++){ - daParamCollectionlist.add(baseDataList.get(i)); - } - logger.info("缁撴潫宸ヤ綅{}-鏂规硶SaveParamData",device); - return daParamCollectionlist; - } - - public static List<DaParamCollection> addBaseData(String workOrderNo,String productCode,String locationCode,String packCode){ - Map<String, String> map = new HashMap<>(); - map.put("GC", "鍗楁禂宸ュ巶"); - map.put("CXBH", "Pack绾�"); - map.put("SBBH", "璁惧001"); - map.put("YGBH", "鍛樺伐001"); - List<DaParamCollection> confList = new ArrayList<>(); - map.forEach((key, value) -> { - List<DaCollectionParamConf> daCollectionParamConfs = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() - .eq(DaCollectionParamConf::getProcessesCode,locationCode) - .like(DaCollectionParamConf::getCollectParameterId,key)); - DaParamCollection saveData = new DaParamCollection(); - saveData.setWorkOrderNo(workOrderNo); - saveData.setProductCode(productCode); - saveData.setLocationCode(locationCode); - saveData.setSfcCode(packCode); - saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId()); - saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName()); - saveData.setCollectionTime(new Date()); - saveData.setParamValue(value); - confList.add(saveData); - }); - daParamCollectionService.insertBatch(confList); - return confList; - } - - public static void getFactoryOrder(String locationCode){ - String productionWorkOrder = RestfulService.getProductionWorkOrderRequest("", locationCode); - JSONObject jsonObject = new JSONObject(productionWorkOrder); - JSONObject dataObject = jsonObject.getJSONObject("data"); - - String productNum = dataObject.getStr("productNum"); - String stationCode = dataObject.getStr("stationCode"); - String materialCode = dataObject.getStr("materialCode"); - String productionOrderNum = dataObject.getStr("productionOrderNum"); - - OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo(); - omProductionOrdeInfo.setProductNum(productNum); - omProductionOrdeInfo.setWorkOrderNo(productionOrderNum); - omProductionOrdeInfo.setStationCode(stationCode); - omProductionOrdeInfo.setProductCode(materialCode); - omProductionOrdeInfoService.save(omProductionOrdeInfo); - } - - public static void updateOrderInfo(String packCode){ - OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum, packCode)); - one.setOrderStatus("5"); - omProductionOrdeInfoService.saveOrUpdate(one); - } - - public static void avgFunction(){ - - } - - public static String TightenTheConversionOkNg(String param){ - // 鍘婚櫎棣栧熬鐨勬柟鎷彿锛岀劧鍚庢寜鐓ч�楀彿鍒嗗壊瀛楃涓� - String[] parts = param.substring(1, param.length() - 1).split(","); - - // 鍒涘缓涓�涓柊鐨凷tringBuilder鏉ユ瀯寤烘浛鎹㈠悗鐨勫瓧绗︿覆 - StringBuilder sb = new StringBuilder(); - sb.append('['); // 娣诲姞宸︽柟鎷彿 - - for (int i = 0; i < parts.length; i++) { - String part = parts[i].trim(); // 鍘婚櫎鍙兘鐨勭┖鏍� - float value; - try { - value = Float.parseFloat(part); // 灏濊瘯灏嗗瓧绗︿覆杞崲涓烘诞鐐规暟 - String replacement; - if(i<2){ - replacement = part; - }else{ - if (value == 1f) { - replacement = "OK"; - } else{ - replacement = "NG"; - } - } - /* if (value == 1f) { - replacement = "OK"; - } else if (value == 2f) { - replacement = "NG"; - } else { - replacement = part; // 濡傛灉涓嶆槸1鎴�2锛屽垯淇濇寔涓嶅彉 - }*/ - sb.append(replacement); - if (i < parts.length - 1) { - sb.append(','); // 娣诲姞閫楀彿锛堥櫎浜嗘渶鍚庝竴涓厓绱狅級 - } - } catch (NumberFormatException e) { - // 濡傛灉杞崲澶辫触锛屽垯淇濇寔鍘熸牱锛堟垨杩涜鍏朵粬閿欒澶勭悊锛� - sb.append(part); - if (i < parts.length - 1) { - sb.append(','); - } - } - } - sb.append(']'); // 娣诲姞鍙虫柟鎷彿 - return sb.toString(); - } - - - /** - * 鏍¢獙鏄惁瀛樺湪NG - * @param packCode sfcCode - * @return boolean - */ - public boolean checkIsNG(String packCode,String modelCode){ - List<DaPassingStationCollection> list = daPassingStationCollectionService.list(new LambdaQueryWrapper<DaPassingStationCollection>() - .eq(StrUtil.isNotBlank(packCode),DaPassingStationCollection::getSfcCode, packCode) - .eq(DaPassingStationCollection::getOutRsSign, Constants.UN_PASS)); - return CollUtil.isEmpty(list); - } - - /** - * 淇濆瓨杩囩珯閲囬泦 - */ - public void saveStationInfo365(String thoroughfare,String device) throws Exception { - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - String prefix = thoroughfare+"."+device+"."; - List<DaPassingStationCollection> passingStationCollections = new ArrayList<>(); - String ModuleCodeA = ""; - String ModuleCodeB = ""; - String StationStatusA = ""; - String StationStatusB = ""; - - Object objectModuleCodeA = miloService.readFromOpcUa(prefix + "ModuleCodeA").getValue(); - Object objectModuleCodeB = miloService.readFromOpcUa(prefix + "ModuleCodeB").getValue(); - Object objectStationStatusA = miloService.readFromOpcUa(prefix + "StationStatusA").getValue(); - Object objectStationStatusB = miloService.readFromOpcUa(prefix + "StationStatusB").getValue(); - - if(ObjectUtil.isNotNull(objectModuleCodeA) && ObjectUtil.isNotNull(objectStationStatusA) && ObjectUtil.isNotNull(objectModuleCodeB) && ObjectUtil.isNotNull(objectStationStatusB)){ - ModuleCodeA = objectModuleCodeA.toString(); - ModuleCodeB = objectModuleCodeB.toString(); - StationStatusA = objectStationStatusA.toString(); - StationStatusB = objectStationStatusB.toString(); - - String[] modeles = {ModuleCodeA,ModuleCodeB}; - String[] StationStatus = {StationStatusA,StationStatusB}; - - String startTime = miloService.readFromOpcUa(prefix + "StartTime").getValue().toString(); - String stopTime = miloService.readFromOpcUa(prefix + "StopTime").getValue().toString(); - for (int i = 0; i < 2; i++) { - DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection(); - String strt = TimeUtil.stringProcessing(startTime); - String end = TimeUtil.stringProcessing(stopTime); - daPassingStationCollection.setInboundTime(format.parse(TimeUtil.test(strt)));//鍏ョ珯鏃堕棿 - daPassingStationCollection.setOutboundTime(format.parse(TimeUtil.test(end)));//鍑虹珯鏃堕棿 - daPassingStationCollection.setSfcCode(modeles[i]); - daPassingStationCollection.setLocationCode(device); - daPassingStationCollection.setOutRsSign(StationStatus[i]);//鍑虹珯鏄惁鍚堟牸 - passingStationCollections.add(daPassingStationCollection); - } - daPassingStationCollectionService.saveBeachDaPassingStationCollection(passingStationCollections); - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(21).build()); - logger.info("宸ヤ綅{}鍥炲21",device); - - }else { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(22).build()); - } - } - - private static void writeToOpc(String identifier, short value) { - try { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(identifier).value(value).build()); } catch (Exception e) { throw new RuntimeException(e); } + return cellCodeList; } + /** + * 淇濆瓨杩囩珯鏁版嵁 + * @param thoroughfare 閫氶亾 + * @param device 宸ヤ綅 + * @param cellCodeList 鐢佃姱鐮侀泦鍚� + * @return list + * @throws Exception e + */ + private static Integer savePassingStation(String thoroughfare, String device,List<String> cellCodeList){ + Integer result = 21; + + try { + //璇昏繘绔欐椂闂� + Date startTime = new Date(); + ReadWriteEntity startTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime");//杩涚珯鏃堕棿 + if (ObjectUtil.isNotNull(startTimeRead.getValue())){ + String stringStartTime = startTimeRead.getValue().toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + startTime = sdf.parse(stringStartTime); + }else{ + result = 23; + log.info("璇诲彇鍒板伐浣峽}鐨凷tartTime鏁版嵁锛歿},杩斿洖RecordDataDone鐨勫�间负{}",device,"IS NULL锛�",result); + } + + //璇诲伐绔欑姸鎬� + String stationStatus = Constants.PASS; + ReadWriteEntity stationStatusRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus");//绔欑姸鎬佸湴鍧� + if (ObjectUtil.isNotNull(stationStatusRead.getValue())){ + String string = stationStatusRead.getValue().toString(); + if (Constants.TWO.equals(string)){ + stationStatus = Constants.UN_PASS; + } + }else{ + result = 23; + log.info("璇诲彇鍒板伐浣峽}StationStatuss鏁版嵁锛歿},杩斿洖RecordDataDone鐨勫�间负{}",device,"IS NULL锛�",result); + } + + List<DaPassingStationCollection> passingList = new ArrayList<>(); + for (String cellCode : cellCodeList) { + DaPassingStationCollection passingStationCollection = new DaPassingStationCollection(); + if (ObjectUtil.isNotNull(cellCode)){ + passingStationCollection.setSfcCode(cellCode);//鐢佃姱鐮� + passingStationCollection.setLocationCode(device);//宸ヤ綅 + passingStationCollection.setInboundTime(startTime);//杩涚珯鏃堕棿 + passingStationCollection.setOutboundTime(new Date());//鍑虹珯鏃堕棿 + passingStationCollection.setOutRsSign(stationStatus);//绔欑姸鎬佸�� + passingStationCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + passingList.add(passingStationCollection); + }else{ + result = 23; + log.info("璇诲彇鍒板伐浣峽}CellCode鏁版嵁锛歿},杩斿洖RecordDataDone鐨勫�间负{}",device,"IS NULL锛�",result); + } + } + + if (CollUtil.isNotEmpty(passingList)){ + daPassingStationCollectionService.insertBatch(passingList);//瀛樺偍杩囩珯閲囬泦鏁版嵁 + } + + } catch (Exception e) { + throw new RuntimeException(e); + } + + return result; + } + + /** + * 淇濆瓨鐢佃姱杩囩珯璁板綍 + * @param thoroughfare 閫氶亾 + * @param device 宸ヤ綅 + * @param cellCodeList 鐢佃姱鐮侀泦鍚� + * @return list + * @throws Exception e + */ + private static Integer saveParamCollection(String thoroughfare, String device,List<String> cellCodeList){ + Integer result = 21;//杩斿洖缁撴灉 + List<List<ChildVO>> mesList = new ArrayList<>();//瀛樺偍4涓數鑺殑鍙戦�佺粰MES鐨勫�� + + try { + //鏌ヨ鍙傛暟閰嶇疆琛� + List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() + .eq(DaCollectionParamConf::getProcessesCode, device)//宸ヤ綅 + .eq(DaCollectionParamConf::getRemarks, Constants.ONE));//绫诲瀷 + if (CollUtil.isNotEmpty(list)) { + List<DaParamCollection> saveParamList = new ArrayList<>();//灏佽鍙傛暟閲囬泦list + List<DaCollectionParamConf> confColl1 = list.stream().filter(x -> Constants.INT_ONE.equals(x.getKeyNum())).collect(Collectors.toList()); + List<DaCollectionParamConf> confColl2 = list.stream().filter(x -> Constants.INT_TWO.equals(x.getKeyNum())).collect(Collectors.toList()); + List<DaCollectionParamConf> confColl3 = list.stream().filter(x -> Constants.INT_THREE.equals(x.getKeyNum())).collect(Collectors.toList()); + List<DaCollectionParamConf> confColl4 = list.stream().filter(x -> Constants.INT_FOUR.equals(x.getKeyNum())).collect(Collectors.toList()); + List<DaCollectionParamConf> confColl0 = list.stream().filter(x -> Constants.INT_ZERO.equals(x.getKeyNum())).collect(Collectors.toList()); + + List<String> collect1 = confColl1.stream() + .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); + List<ReadWriteEntity> paramCollectionList1 = miloService.readFromOpcUa(collect1);//鐢佃姱1 鍙傛暟鍊� + + List<String> collect2 = confColl2.stream() + .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); + List<ReadWriteEntity> paramCollectionList2 = miloService.readFromOpcUa(collect2);//鐢佃姱2 鍙傛暟鍊� + + List<String> collect3 = confColl3.stream() + .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); + List<ReadWriteEntity> paramCollectionList3 = miloService.readFromOpcUa(collect3);//鐢佃姱3 鍙傛暟鍊� + + List<String> collect4 = confColl4.stream() + .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); + List<ReadWriteEntity> paramCollectionList4 = miloService.readFromOpcUa(collect4);//鐢佃姱4 鍙傛暟鍊� + + List<String> collect0 = confColl0.stream() + .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); + List<ReadWriteEntity> paramCollectionList0 = miloService.readFromOpcUa(collect0);//鐢佃姱 鍙傛暟鍊� + + //绗竴涓數鑺殑鏁版嵁 + if (CollUtil.isNotEmpty(paramCollectionList1)) { + List<ChildVO> mesChildList1 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist1 + for (int i = 0; i < paramCollectionList1.size(); i++) { + DaParamCollection daParamCollection = new DaParamCollection(); + daParamCollection.setSfcCode(cellCodeList.get(0));//鐢佃姱鐮� + daParamCollection.setParamCode(confColl1.get(i).getCollectParameterId());//鍙傛暟缂栫爜 + daParamCollection.setParamName(confColl1.get(i).getCollectParameterName());//鍙傛暟鍚嶇О + String paramValue = ""; + if (ObjectUtil.isNotNull(paramCollectionList1.get(i).getValue())) { + paramValue = paramCollectionList1.get(i).getValue().toString();//鍙傛暟鍊� + } + daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� + daParamCollection.setLocationCode(device);//宸ヤ綅 + daParamCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + saveParamList.add(daParamCollection);//灏佽鍙傛暟閲囬泦list + + //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 + ChildVO childVO = new ChildVO(); + childVO.setItemCode(confColl1.get(i).getCollectParameterName());//鍙傛暟 + childVO.setItemType(confColl1.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl1.get(i).getParameterSetName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(new Date().toString()); + mesChildList1.add(childVO); + mesList.add(0, mesChildList1); + } + } + if (CollUtil.isNotEmpty(paramCollectionList2)) { + List<ChildVO> mesChildList2 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist2 + + for (int i = 0; i < paramCollectionList2.size(); i++) { + DaParamCollection daParamCollection = new DaParamCollection(); + daParamCollection.setSfcCode(cellCodeList.get(1));//鐢佃姱鐮� + daParamCollection.setParamCode(confColl2.get(i).getCollectParameterId());//鍙傛暟缂栫爜 + daParamCollection.setParamName(confColl2.get(i).getCollectParameterName());//鍙傛暟鍚嶇О + String paramValue = ""; + if (ObjectUtil.isNotNull(paramCollectionList2.get(i).getValue())) { + paramValue = paramCollectionList2.get(i).getValue().toString();//鍙傛暟鍊� + } + daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� + daParamCollection.setLocationCode(device);//宸ヤ綅 + daParamCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + saveParamList.add(daParamCollection);//灏佽鍙傛暟閲囬泦list + + //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 + ChildVO childVO = new ChildVO(); + childVO.setItemCode(confColl2.get(i).getCollectParameterName());//鍙傛暟 + childVO.setItemType(confColl2.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl2.get(i).getParameterSetName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(new Date().toString()); + mesChildList2.add(childVO); + mesList.add(1, mesChildList2); + } + } + if (CollUtil.isNotEmpty(paramCollectionList3)) { + List<ChildVO> mesChildList3 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist3 + for (int i = 0; i < paramCollectionList3.size(); i++) { + DaParamCollection daParamCollection = new DaParamCollection(); + daParamCollection.setSfcCode(cellCodeList.get(2));//鐢佃姱鐮� + daParamCollection.setParamCode(confColl3.get(i).getCollectParameterId());//鍙傛暟缂栫爜 + daParamCollection.setParamName(confColl3.get(i).getCollectParameterName());//鍙傛暟鍚嶇О + String paramValue = ""; + if (ObjectUtil.isNotNull(paramCollectionList3.get(i).getValue())) { + paramValue = paramCollectionList3.get(i).getValue().toString();//鍙傛暟鍊� + } + daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� + daParamCollection.setLocationCode(device);//宸ヤ綅 + daParamCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + saveParamList.add(daParamCollection);//灏佽鍙傛暟閲囬泦list + + //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 + ChildVO childVO = new ChildVO(); + childVO.setItemCode(confColl3.get(i).getCollectParameterName());//鍙傛暟 + childVO.setItemType(confColl3.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl3.get(i).getParameterSetName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(new Date().toString()); + mesChildList3.add(childVO); + mesList.add(2, mesChildList3); + } + } + if (CollUtil.isNotEmpty(paramCollectionList4)) { + List<ChildVO> mesChildList4 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist4 + for (int i = 0; i < paramCollectionList4.size(); i++) { + DaParamCollection daParamCollection = new DaParamCollection(); + daParamCollection.setSfcCode(cellCodeList.get(3));//鐢佃姱鐮� + daParamCollection.setParamCode(confColl4.get(i).getCollectParameterId());//鍙傛暟缂栫爜 + daParamCollection.setParamName(confColl4.get(i).getCollectParameterName());//鍙傛暟鍚嶇О + String paramValue = ""; + if (ObjectUtil.isNotNull(paramCollectionList4.get(i).getValue())) { + paramValue = paramCollectionList4.get(i).getValue().toString();//鍙傛暟鍊� + } + daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� + daParamCollection.setLocationCode(device);//宸ヤ綅 + daParamCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + saveParamList.add(daParamCollection);//灏佽鍙傛暟閲囬泦list + + //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 + ChildVO childVO = new ChildVO(); + childVO.setItemCode(confColl4.get(i).getCollectParameterName());//鍙傛暟 + childVO.setItemType(confColl4.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl4.get(i).getParameterSetName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(new Date().toString()); + mesChildList4.add(childVO); + mesList.add(3, mesChildList4); + } + } + + //鍏叡鍙傛暟 + if (CollUtil.isNotEmpty(paramCollectionList0)) { + for (int i = 0; i < cellCodeList.size(); i++) {//寰幆4涓數鑺� + List<ChildVO> mesChildList0 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist0 + for (int j = 0; j < paramCollectionList0.size(); j++) { + DaParamCollection daParamCollection = new DaParamCollection(); + daParamCollection.setSfcCode(cellCodeList.get(i));//鐢佃姱鐮� + daParamCollection.setParamCode(confColl0.get(j).getCollectParameterId());//鍙傛暟缂栫爜 + daParamCollection.setParamName(confColl0.get(j).getCollectParameterName());//鍙傛暟鍚嶇О + String paramValue = ""; + if (ObjectUtil.isNotNull(paramCollectionList0.get(j).getValue())) { + paramValue = paramCollectionList0.get(j).getValue().toString();//鍙傛暟鍊� + } + daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� + daParamCollection.setLocationCode(device);//宸ヤ綅 + daParamCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + saveParamList.add(daParamCollection); + + //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 + ChildVO childVO = new ChildVO(); + childVO.setItemCode(confColl0.get(j).getCollectParameterName());//鍙傛暟 + childVO.setItemType(confColl0.get(j).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl0.get(j).getParameterSetName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(new Date().toString()); + mesChildList0.add(childVO); + } + mesList.get(i).addAll(mesChildList0); + /* mesList.add(mesChildList0);*/ + } + + } + + CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + //鎻掑叆鍙傛暟閲囬泦琛� + daParamCollectionService.insertBatch(saveParamList); + //涓婁紶鍒板伐鍘俶es + ParentVO parentVO = new ParentVO(); + parentVO.setStationCode(device);//宸ヤ綅 + parentVO.setSiteCode("3983"); + + parentVO.setRecordId(UUID.randomUUID().toString()); + parentVO.setTotalResult("1"); + for (int i = 0; i < cellCodeList.size(); i++) {//寰幆4涓數鑺� + parentVO.setProductNum(cellCodeList.get(i));//鐢佃姱鐮� + parentVO.setCheckList(mesList.get(i));//鍙傛暟 + //CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + log.info("鎵ц宸ュ巶MES鏂规硶start锛屼紶鍏ユ暟鎹細{}",parentVO); + HttpResponse execute = HttpRequest.post(orderLineUrl).body(JSONUtil.toJsonStr(parentVO)).execute(); + log.info("鎵ц宸ュ巶MES鏂规硶end锛岃繑鍥炴暟鎹細{}",execute.body()); + //}); + } + }); + } + }catch (Exception e) { + throw new RuntimeException(e); + } + return result; + } + + /** + * 淇濆瓨杩囩珯鏁版嵁鍜屽弬鏁颁繚瀛樻暟鎹� + * @param device 宸ヤ綅鍙� + * @throws Exception + */ + private void saveParamPassingData(String device,String thoroughfare) throws Exception { + + //淇濆瓨鍙傛暟閲囬泦鏁版嵁 + List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() + .eq(DaCollectionParamConf::getProcessesCode, device) + .eq(DaCollectionParamConf::getRemarks, Constants.ONE)); + if (CollUtil.isNotEmpty(list)){ + List<String> collect = list.stream().map(DaCollectionParamConf::getGatherAddress) + .filter(Objects::nonNull).distinct() + .collect(Collectors.toList()); + QueryPLCData(device,thoroughfare,collect); + + } + } + + /** + * 鎵归噺鏌ヨplc绔欑偣鏁版嵁 + * @param device 绔欑偣 + * @param collect 鐐逛綅 + * @throws Exception + */ + private static void QueryPLCData(String device,String thoroughfare,List<String> collect) throws Exception { + List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(collect); + + if (CollUtil.isNotEmpty(readWriteEntityList)){ + List<DaParamCollection> collectionList = new ArrayList<>(); + Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); + String moduleCode = null; + if (ObjectUtil.isNotNull(value1)){ + moduleCode = value1.toString(); + } + for (int i = 0; i < readWriteEntityList.size(); i++) { + DaParamCollection daParamCollection = new DaParamCollection(); + if (StrUtil.isNotBlank(moduleCode)){ + daParamCollection.setModuleCode(moduleCode); + } + daParamCollection.setParamCode(collect.get(i)); + String paramValue = ""; + if (ObjectUtil.isNotNull(readWriteEntityList.get(i).getValue())){ + paramValue = readWriteEntityList.get(i).getValue().toString(); + } + daParamCollection.setParamValue(paramValue); + daParamCollection.setLocationCode(device); + daParamCollection.setCollectionTime(new Date()); + collectionList.add(daParamCollection); + } + daParamCollectionService.insertBatch(collectionList); + } + } } -- Gitblit v1.9.3