From 653b17eac39c339774cd46291a9345493b253a1f Mon Sep 17 00:00:00 2001 From: admin <15939171744@163.com> Date: 星期四, 11 七月 2024 10:35:18 +0800 Subject: [PATCH] 100-1工位 接收工单 人工操作页面优化 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 1334 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 807 insertions(+), 527 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..4c46dec 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,14 @@ 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.http.HttpRequest; +import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONObject; +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.common.core.domain.AjaxResult; import com.jcdm.framework.websocket.WebSocketUsers; import com.jcdm.main.constant.Constants; import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; @@ -17,11 +18,10 @@ 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.da.testDeviceInterfaceTemp.domain.DaTestDeviceInterfaceTemp; +import com.jcdm.main.da.testDeviceInterfaceTemp.service.IDaTestDeviceInterfaceTempService; 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; @@ -30,54 +30,29 @@ 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 org.springframework.web.bind.annotation.GetMapping; 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 static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - 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 static MiloService miloService; - public IDaPassingStationCollectionService daPassingStationCollectionService; + + public static IDaPassingStationCollectionService daPassingStationCollectionService; public static IDaCollectionParamConfService collectionParamConfService; @@ -85,538 +60,843 @@ public static IOmProductionOrdeInfoService omProductionOrdeInfoService; - private static IDaTestDeviceInterfaceService daTestDeviceInterfaceService; + public static IDaTestDeviceInterfaceTempService daTestDeviceInterfaceTempService; +/* @Value("${orderLineUrl}") + private static String orderLineUrl;*/ public OPCUaSubscription(MiloService miloService, IDaPassingStationCollectionService daPassingStationCollectionService, IDaCollectionParamConfService collectionParamConfService, IDaParamCollectionService daParamCollectionService, IOmProductionOrdeInfoService omProductionOrdeInfoService, - IDaTestDeviceInterfaceService daTestDeviceInterfaceService) { + IDaTestDeviceInterfaceTempService daTestDeviceInterfaceTempService) { OPCUaSubscription.miloService = miloService; - this.daPassingStationCollectionService = daPassingStationCollectionService; + OPCUaSubscription.daPassingStationCollectionService = daPassingStationCollectionService; OPCUaSubscription.collectionParamConfService = collectionParamConfService; OPCUaSubscription.daParamCollectionService = daParamCollectionService; OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService; - OPCUaSubscription.daTestDeviceInterfaceService = daTestDeviceInterfaceService; + OPCUaSubscription.daTestDeviceInterfaceTempService = daTestDeviceInterfaceTempService; } @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();//鍦板潃鍊� + String valueString = value.toString();//鍦板潃鍊� - if (("RecordData").equals(tab)) { - String recordDataDoneValue = ""; + CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + subHandle(thoroughfare,device,tab,valueString); + }); - 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)); -// } -// -// if (deviceInterfaceOne != null && "1".equals(deviceInterfaceOne.getTotalResult())) { -// writeToOpc(RecordDataDoneAddress, (short) 21); -// } else { -// writeToOpc(RecordDataDoneAddress, (short) 22); -// } -// writeToOpc(RecordDataDoneAddress, (short) 21); - } - - - } - }else { - System.out.println("^"); - } - } - //淇濆瓨鎷х揣鏁版嵁 - else if (("AngleResult").equals(tab)) { - if("1".equals(tabVlaue)||"2".equals(tabVlaue)){ - List<String> list = new ArrayList<>(); - String[] suffixes = {"Torque", "Angle", "TorqueResult", "AngleResult"}; - - for (String suffix : suffixes) { - String string = thoroughfare + "." + device + "." + suffix; - list.add(string); - } - 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)); - } - } - } } } catch (Exception e) { - logger.info("璁㈤槄鏂规硶鎶ラ敊:{}"+e.getMessage()); - logger.error("璁㈤槄鏂规硶鎶ラ敊",e); + log.error(e.getMessage()); } } - - - /** - * 鑾峰彇SNCode - */ - public String getSNCode(){ - String SNCode = ""; - return SNCode; - } - - /** - * 鍑虹珯淇濆瓨鏁版嵁 - */ - public void outSaveDate(String thoroughfare,String device) { - String snCode = ""; - String result = ""; - String read = thoroughfare + "." + device + "."; - - try { - if(nullList.stream().noneMatch(s -> s.equals(device))){//鍒犻櫎鈥︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�� - if(moduleCodeList.stream().anyMatch(s -> s.equals(device))){ - read = read + "ModuleCode"; - }else { - read = read + "PACKCode"; + public void subHandle(String thoroughfare,String device,String tab,String valueString){ + try{ + if (Constants.RECORD_CHECK_CODE.equals(tab)){//鐢佃姱鏍¢獙 + if (Constants.ONE.equals(valueString)){ + Integer scanResult = 11; + if (Constants.OP010.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; +// } + } + }else if(Constants.OP030.equals(device)){ + Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".Scaner").getValue(); + if (ObjectUtil.isNotNull(value1)){ + String cellCode = value1.toString(); + //鍙嶉鐢佃姱ocv妫�娴嬬粨鏋� + boolean b = OCVResultFeedBack(thoroughfare, device,cellCode); + //鍥涗釜鐢佃姱鐨勭姸鎬� + if (b){ + scanResult = 11; + }else { + scanResult = 12; + } + }else { + scanResult = 12; + } + } + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult1").value(scanResult).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凷canerResult1鏁版嵁锛歿}",device,scanResult); } - } - if(device.equals("OP365")){ - try { - saveStationInfo365(thoroughfare,device); - }catch (Exception e){ - e.printStackTrace(); + }else if (Constants.RECORD_SN.equals(tab)){//姹備笅鍙戞ā缁勭爜璇�9 + if (Constants.ONE.equals(valueString)){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(1).build());//娌℃湁瑕佺敓浜х殑宸ュ崟 } - }else { - snCode = miloService.readFromOpcUa(read).getValue().toString(); + }else if (Constants.RECORD_DATA.equals(tab)){//鍑哄叆绔� + if (Constants.ONE.equals(valueString)){//鍏ョ珯 + //1:鍛婄煡MES鎵樼洏宸插埌绔欙紝璇锋眰涓嬪彂杩涚珯鐘舵�� + if (Constants.OP030.equals(device)){ + //鍙嶉鐢佃姱ocv妫�娴嬬粨鏋� + boolean b = 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 if(Constants.OP100_1.equals(device) || Constants.OP100_2.equals(device)){ + //1銆佽繘绔橮LC缁欎骇鍝佺被鍨嬶紝MES璇诲彇浜у搧绫诲瀷 + Object productTypeObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".ProductType").getValue();//浜у搧绫诲瀷 + if (ObjectUtil.isNotNull(productTypeObjcet)){ + String productType = productTypeObjcet.toString();//浜у搧绫诲瀷 + String materialCode = Constants.materialMap.get(productType); + CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + //璋冪敤宸ュ巶MES锛屼繚瀛樺埌鏁版嵁搴�,骞朵笖灏嗗伐鍗曚紶缁橮LC (鐩墠涓存椂鐢ㄨ鏂规硶锛� + receivingWorkOrders(thoroughfare, device,materialCode); + }); - if(null == snCode || "".equals(snCode)){ - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf("22")).build()); - }else{ + 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()); + } - String workOrderNo = ""; - String productCode = ""; - //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� - Object orderNumberObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "WorkOrderNumber").getValue(); - if(orderNumberObject!=null){ - workOrderNo = orderNumberObject.toString(); + }else if (Constants.ModuleList.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{ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); + } } - - Object productCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "ProductType").getValue(); - if(productCodeObject!=null){ - productCode = productCodeObject.toString(); + else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,11); } - - 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){ + }else if (Constants.TWO.equals(valueString)){//鍑虹珯 + //鍒嗘010-065娈� + if (Constants.OP010.equals(device)){ + //010宸ヤ綅鏃犺繃绔欒褰曪紝鍙粰鏀捐淇″彿 + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,21); + }else if (Constants.OP020_OP090.contains(device)){ + Integer result = 21; + //璇诲彇鐢佃姱鐮� + List<String> cellCodeList = readCellCodeList(thoroughfare, device); + if(ObjectUtil.isNull(cellCodeList) || cellCodeList.size() != 4){ + result = 23; + }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_OP150.contains(device)){//浜哄伐宸ヤ綅 + WebSocketUsers.sendMessageToUserByText(map.get(device), "END"); + } else { + Integer result = 21; + Object productTypeObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".ProductType").getValue();//浜у搧绫诲瀷 + Object modulCodeObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); + if (ObjectUtil.isNull(modulCodeObjcet)){ + result = 23; + }else{ + String moduleCode = modulCodeObjcet.toString(); + result = savePassingStation(thoroughfare, device,moduleCode);//淇濆瓨杩囩珯 + if(result == 21) { + result = saveParamCollection(thoroughfare, device,moduleCode);//淇濆瓨鍙傛暟锛屽彂閫佸伐鍘侻ES + } + } + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,result); } } - } }catch (Exception e) { - logger.error("鍑虹珯淇濆瓨鏁版嵁寮傚父锛�"+e); + log.error(e.getMessage()); } } - - -// /** -// * 鍑虹珯淇濆瓨鏁版嵁 -// */ -// 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) { +/* public void receivingWorkOrders(String thoroughfare ,String device) { + String paramProductNum = ""; try { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(identifier).value(value).build()); + + 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); + + //灏嗕骇鍝丼N鍙戦�佸埌鍓嶅彴 + 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) + { + String paramProductNum = ""; + try { + // 鏌ヨ鏈�鏂扮殑宸ュ崟淇℃伅 + OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder(); + String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode); + JSONObject jsonObject = new JSONObject(orderJsonString); + // 浠嶫SONObject涓幏鍙杁ata瀵硅薄 + JSONObject dataObject = jsonObject.getJSONObject("data"); + String code = jsonObject.getStr("code"); + // 鍒ゆ柇鎺ュ崟鏄惁鎴愬姛 + if(code.equals("success")) { + log.info("璇锋眰宸ュ巶MES宸ュ崟锛氬叆鍙俻ack{}鍑哄弬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.setMaterialCode(dataObject.getStr("materialCode")); + omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity"))); + omProductionOrdeInfo.setOnlineCompletionMark("0"); + omProductionOrdeInfo.setSfResult("0"); + omProductionOrdeInfo.setProductCode(dataObject.getStr("model")); + omProductionOrdeInfo.setCreateTime(new Date()); + omProductionOrdeInfo.setCreateUser("宸ュ巶MES"); + omProductionOrdeInfoService.save(omProductionOrdeInfo); + + //鍙戦�佺粰鍓嶅彴 + WebSocketUsers.sendMessageToUserByText(map.get(device), dataObject.getStr("productNum")); + + //鍐橮LC + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MES_ModuleCode").value(dataObject.getStr("productNum")).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MES_WorkOrderNumber").value(dataObject.getStr("productionOrderNum")).build()); + + } } catch (Exception e) { throw new RuntimeException(e); } } + /** + * 璇诲彇鐢佃姱鐮� + * @param thoroughfare 閫氶亾 + * @param device 宸ヤ綅 + * @return list + * @throws Exception e + */ + private static List<String> readCellCodeList(String thoroughfare, String device){ + List<String> cellCodeList = new ArrayList<>(); + Map map = new HashMap(); + //鐢佃姱鐮佸湴鍧� + 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 { + List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(readList);//鐢佃姱鐮� + for (ReadWriteEntity readWriteEntity : readWriteEntityList) { + if (ObjectUtil.isNotNull(readWriteEntity.getValue()) && !"".equals(readWriteEntity.getValue().toString().trim())){ + cellCodeList.add(readWriteEntity.getValue().toString());//灏佽鐢佃姱鐮� + }/*else{ + cellCodeList.add("");//灏佽鐢佃姱鐮� + }*/ + } + + } catch (Exception e) { + throw new RuntimeException(e); + } + return cellCodeList; + } + + + /** + * 淇濆瓨杩囩珯鏁版嵁 + * @param thoroughfare 閫氶亾 + * @param device 宸ヤ綅 + * @param moduleCode 妯$粍鍙� + * @return list + * @throws Exception e + */ + private static Integer savePassingStation(String thoroughfare, String device,String moduleCode){ + Integer result = 21; + + try { + //璇昏繘绔欐椂闂� + Date startTime = new Date(); + ReadWriteEntity startTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime");//杩涚珯鏃堕棿 + if (ObjectUtil.isNotNull(startTimeRead.getValue())){ + startTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(startTimeRead.getValue().toString()))); + }else{ + result = 23; + log.info("璇诲彇鍒板伐浣峽}鐨凷tartTime鏁版嵁锛歿},杩斿洖RecordDataDone鐨勫�间负{}",device,"IS NULL锛�",result); + return 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("璇诲彇鍒板伐浣峽}StationStatus鏁版嵁锛歿},杩斿洖RecordDataDone鐨勫�间负{}",device,"IS NULL锛�",result); + return result; + } + + DaPassingStationCollection passingStationCollection = new DaPassingStationCollection(); + passingStationCollection.setSfcCode(moduleCode);//鐢佃姱鐮� + passingStationCollection.setLocationCode(device);//宸ヤ綅 + passingStationCollection.setInboundTime(startTime);//杩涚珯鏃堕棿 + passingStationCollection.setOutboundTime(new Date());//鍑虹珯鏃堕棿 + passingStationCollection.setOutRsSign(stationStatus);//绔欑姸鎬佸�� + passingStationCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + daPassingStationCollectionService.save(passingStationCollection); + + } catch (Exception e) { + throw new RuntimeException(e); + } + + return result; + } + + /** + * 淇濆瓨杩囩珯鏁版嵁 + * @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())){ + startTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(startTimeRead.getValue().toString()))); + }else{ + result = 23; + log.info("璇诲彇鍒板伐浣峽}鐨凷tartTime鏁版嵁锛歿},杩斿洖RecordDataDone鐨勫�间负{}",device,"IS NULL锛�",result); + return 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("璇诲彇鍒板伐浣峽}StationStatus鏁版嵁锛歿},杩斿洖RecordDataDone鐨勫�间负{}",device,"IS NULL锛�",result); + return result; + } + + List<DaPassingStationCollection> passingList = new ArrayList<>(); + for (String cellCode : cellCodeList) { + DaPassingStationCollection passingStationCollection = new DaPassingStationCollection(); + if (ObjectUtil.isNotNull(cellCode) && !cellCode.isEmpty()){ + passingStationCollection.setSfcCode(cellCode);//鐢佃姱鐮� + passingStationCollection.setLocationCode(device);//宸ヤ綅 + passingStationCollection.setInboundTime(startTime);//杩涚珯鏃堕棿 + passingStationCollection.setOutboundTime(new Date());//鍑虹珯鏃堕棿 + passingStationCollection.setOutRsSign(stationStatus);//绔欑姸鎬佸�� + passingStationCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + passingList.add(passingStationCollection); + } + } + + if (CollUtil.isNotEmpty(passingList)){ + daPassingStationCollectionService.insertBatch(passingList);//瀛樺偍杩囩珯閲囬泦鏁版嵁 + } + + } catch (Exception e) { + throw new RuntimeException(e); + } + + return result; + } + + + /** + * 淇濆瓨鍙傛暟鏁版嵁鍜屽彂閫佸伐鍘侻ES + * @param thoroughfare 閫氶亾 + * @param device 宸ヤ綅 + * @param moduleCode 妯$粍鍙� + * @return list + * @throws Exception e + */ + private static Integer saveParamCollection(String thoroughfare, String device,String moduleCode){ + Integer result = 21;//杩斿洖缁撴灉 + String sendMes = ""; + + try { + //鏌ヨ鍙傛暟閰嶇疆琛� + List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() + .eq(DaCollectionParamConf::getProcessesCode, device)//宸ヤ綅 + .eq(DaCollectionParamConf::getWhetherToCollect, Constants.ONE)//鏄惁閲囬泦 + ); + if (CollUtil.isNotEmpty(list)){ + + List<String> collect = list.stream() + .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); + List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(collect); + + List<DaParamCollection> collectionList = new ArrayList<>(); + List<ChildVO> mesList = new ArrayList<>(); + for (int i = 0; i < readWriteEntityList.size(); i++) { + DaParamCollection daParamCollection = new DaParamCollection(); + daParamCollection.setSfcCode(moduleCode);//妯$粍鐮� + daParamCollection.setParamCode(list.get(i).getCollectParameterId());//鍙傛暟缂栫爜 + daParamCollection.setParamName(list.get(i).getCollectParameterName());//鍙傛暟鍚嶇О + String paramValue = ""; + if (ObjectUtil.isNotNull(readWriteEntityList.get(i).getValue())){ + paramValue = readWriteEntityList.get(i).getValue().toString();//鍙傛暟鍊� + if("DATE".equals(list.get(i).getCollectParameterType()) && !paramValue.isEmpty()){ + paramValue = format.parse(TimeUtil.test(TimeUtil.stringProcessing(paramValue))).toString(); + } + } + daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� + daParamCollection.setLocationCode(device);//宸ヤ綅 + daParamCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + collectionList.add(daParamCollection);//灏佽鍙傛暟閲囬泦list + + //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 + ChildVO childVO = new ChildVO(); + childVO.setItemCode(list.get(i).getCollectParameterId());//鍙傛暟缂栫爜 + childVO.setItemType(list.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(list.get(i).getCollectParameterName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(format.format(new Date())); + mesList.add(childVO); + } + + CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + //鎻掑叆鍙傛暟閲囬泦琛� + daParamCollectionService.insertBatch(collectionList); + //涓婁紶鍒板伐鍘俶es + ParentVO parentVO = new ParentVO(); + parentVO.setStationCode(device);//宸ヤ綅 + parentVO.setSiteCode("3983"); + + parentVO.setRecordId(UUID.randomUUID().toString()); + parentVO.setTotalResult("1"); + parentVO.setProductNum(moduleCode); + parentVO.setCheckList(mesList); + + log.info("鎵ц宸ュ巶MES鏂规硶start锛屽伐浣嶅彿{} 浼犲叆鏁版嵁锛歿}",device ,parentVO); + HttpResponse execute = HttpRequest.post(Constants.FACTORY_EMS_UAT_RUL+"deviceResultFeedback").body(JSONUtil.toJsonStr(parentVO)).execute(); + log.info("鎵ц宸ュ巶MES鏂规硶end锛屽伐浣嶅彿{} 杩斿洖鏁版嵁锛歿}",device,execute.body()); + + }); + } + }catch (Exception e) { + throw new RuntimeException(e); + } + return result; + } + + /** + * 淇濆瓨鍙傛暟鏁版嵁鍜屽彂閫佸伐鍘侻ES + * @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<ChildVO> mesChildList1 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist1 + List<ChildVO> mesChildList2 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist2 + List<ChildVO> mesChildList3 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist3 + List<ChildVO> mesChildList4 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist4 + List<ChildVO> mesChildList0 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist4 + try { + //鏌ヨ鍙傛暟閰嶇疆琛� + List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() + .eq(DaCollectionParamConf::getProcessesCode, device)//宸ヤ綅 + .eq(DaCollectionParamConf::getWhetherToCollect, 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) && !cellCodeList.get(0).isEmpty()) { + 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).getCollectParameterId());//鍙傛暟 + childVO.setItemType(confColl1.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl1.get(i).getCollectParameterName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(format.format(new Date())); + mesChildList1.add(childVO); + } + + } + if (CollUtil.isNotEmpty(paramCollectionList2) && !cellCodeList.get(1).isEmpty()) { + + 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).getCollectParameterId());//鍙傛暟 + childVO.setItemType(confColl2.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl2.get(i).getCollectParameterName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(format.format(new Date())); + mesChildList2.add(childVO); + } + } + if (CollUtil.isNotEmpty(paramCollectionList3) && !cellCodeList.get(2).isEmpty()) { + 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).getCollectParameterId());//鍙傛暟 + childVO.setItemType(confColl3.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl3.get(i).getCollectParameterName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(format.format(new Date())); + mesChildList3.add(childVO); + } + } + if (CollUtil.isNotEmpty(paramCollectionList4)&& !cellCodeList.get(3).isEmpty()) { + 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).getCollectParameterId());//鍙傛暟 + childVO.setItemType(confColl4.get(i).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl4.get(i).getCollectParameterName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(format.format(new Date())); + mesChildList4.add(childVO); + } + } + + //鍏叡鍙傛暟 + if (CollUtil.isNotEmpty(paramCollectionList0)) { + for (int i = 0; i < cellCodeList.size(); i++) {//寰幆4涓數鑺� + if(!cellCodeList.get(i).isEmpty()){ + 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();//鍙傛暟鍊� + if("DATE".equals(confColl0.get(j).getCollectParameterType()) && !paramValue.isEmpty()){ + paramValue = TimeUtil.test(TimeUtil.stringProcessing(paramValue)); + } + } + daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� + daParamCollection.setLocationCode(device);//宸ヤ綅 + daParamCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + saveParamList.add(daParamCollection); + + //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 + ChildVO childVO = new ChildVO(); + childVO.setItemCode(confColl0.get(j).getCollectParameterId());//鍙傛暟 + childVO.setItemType(confColl0.get(j).getItemType()); + childVO.setItemValue(paramValue);//鍙傛暟鍊� + childVO.setItemText(confColl0.get(j).getCollectParameterName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(format.format(new Date())); + mesChildList0.add(childVO); + } + } + + //mesList.get(i).addAll(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涓數鑺� + if(!cellCodeList.get(i).isEmpty()){ + parentVO.setProductNum(cellCodeList.get(i));//鐢佃姱鐮� + //灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist4 + List<ChildVO> mesChildList = new ArrayList<>(mesChildList0); + switch (i) { + case 0 : + mesChildList.addAll(mesChildList1); + break; + case 1 : + mesChildList.addAll(mesChildList2); + break; + case 2 : + mesChildList.addAll(mesChildList3); + break; + case 3 : + mesChildList.addAll(mesChildList4); + break; + + } + parentVO.setCheckList(mesChildList);//鍙傛暟 + //CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + log.info("鎵ц宸ュ巶MES鏂规硶start锛屼紶鍏ユ暟鎹細{}",parentVO); + HttpResponse execute = HttpRequest.post(Constants.FACTORY_EMS_UAT_RUL+"deviceResultFeedback").body(JSONUtil.toJsonStr(parentVO)).execute(); + log.info("鎵ц宸ュ巶MES鏂规硶end锛岃繑鍥炴暟鎹細{}",execute.body()); + } + } + }); + } + }catch (Exception e) { + log.error(e.getMessage()); + throw new RuntimeException(e); + } + return result; + } + + /** + * 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, device) + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)); + if (CollUtil.isNotEmpty(list)){ + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(1).build()); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build()); + } + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build()); + log.info("璇诲彇鍒板伐浣峽},娴嬭瘯璁惧杩斿洖鐨勬暟鎹煡璇笉鍒帮紝鐢佃姱鐮佷负锛歿}",device,cellCode); + } + return flag; + } + /** + * 030宸ヤ綅杩斿洖ocv娴嬭瘯缁撴灉 + * @param thoroughfare + * @param device + * @throws Exception + */ + private boolean OCVResultFeedBack(String thoroughfare, String device) throws Exception { + boolean flag = true; + Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_1").getValue(); + if (ObjectUtil.isNotNull(value1)){ + String cellCode = value1.toString(); + List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() + .eq(DaTestDeviceInterfaceTemp::getStationCode, device) + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)); + if (CollUtil.isNotEmpty(list)){ + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(1).build()); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build()); + } + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + } + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build()); + log.info("璇诲彇鍒板伐浣峽},PLC娌℃湁缁欑數鑺爜",device); + } + Object value2 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_2").getValue(); + if (ObjectUtil.isNotNull(value2)){ + String cellCode = value2.toString(); + List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() + .eq(DaTestDeviceInterfaceTemp::getStationCode, device) + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)); + if (CollUtil.isNotEmpty(list)){ + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(1).build()); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(2).build()); + } + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + } + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(2).build()); + log.info("璇诲彇鍒板伐浣峽},PLC娌℃湁缁欑數鑺爜",device); + } + + Object value3 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_3").getValue(); + if (ObjectUtil.isNotNull(value3)){ + String cellCode = value3.toString(); + List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() + .eq(DaTestDeviceInterfaceTemp::getStationCode, device) + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)); + if (CollUtil.isNotEmpty(list)){ + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(1).build()); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(2).build()); + } + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + } + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(2).build()); + log.info("璇诲彇鍒板伐浣峽},PLC娌℃湁缁欑數鑺爜",device); + } + + Object value4 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_4").getValue(); + if (ObjectUtil.isNotNull(value4)){ + String cellCode = value4.toString(); + List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() + .eq(DaTestDeviceInterfaceTemp::getStationCode, device) + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)); + if (CollUtil.isNotEmpty(list)){ + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(1).build()); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(2).build()); + } + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + } + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(2).build()); + log.info("璇诲彇鍒板伐浣峽},PLC娌℃湁缁欑數鑺爜",device); + } + + return flag; + } + + } -- Gitblit v1.9.3