From 971788bf15d4bd58fe5bb6dbb76f16317a25ef7b Mon Sep 17 00:00:00 2001 From: admin <15939171744@163.com> Date: 星期五, 12 七月 2024 09:02:14 +0800 Subject: [PATCH] 工厂MES接口地址优化 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 509 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 338 insertions(+), 171 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 cd2544f..85eec3c 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 @@ -6,8 +6,10 @@ 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.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; @@ -16,9 +18,12 @@ 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.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.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; @@ -27,6 +32,7 @@ import lombok.extern.slf4j.Slf4j; 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; @@ -54,19 +60,23 @@ public static IOmProductionOrdeInfoService omProductionOrdeInfoService; - @Value("${orderLineUrl}") - private static String orderLineUrl; + public static IDaTestDeviceInterfaceTempService daTestDeviceInterfaceTempService; + +/* @Value("${orderLineUrl}") + private static String orderLineUrl;*/ public OPCUaSubscription(MiloService miloService, IDaPassingStationCollectionService daPassingStationCollectionService, IDaCollectionParamConfService collectionParamConfService, IDaParamCollectionService daParamCollectionService, - IOmProductionOrdeInfoService omProductionOrdeInfoService) { + IOmProductionOrdeInfoService omProductionOrdeInfoService, + IDaTestDeviceInterfaceTempService daTestDeviceInterfaceTempService) { OPCUaSubscription.miloService = miloService; OPCUaSubscription.daPassingStationCollectionService = daPassingStationCollectionService; OPCUaSubscription.collectionParamConfService = collectionParamConfService; OPCUaSubscription.daParamCollectionService = daParamCollectionService; OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService; + OPCUaSubscription.daTestDeviceInterfaceTempService = daTestDeviceInterfaceTempService; } @@ -80,131 +90,216 @@ String device = nodes[1];//璁惧 String tab = nodes[2];//鏍囪 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); - //浠呮牎楠岄暱搴︽槸鍚﹀悎鏍� + + CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + subHandle(thoroughfare,device,tab,valueString); + }); + + } + } catch (Exception e) { + log.error(e.getMessage()); + } + } + + 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; // } - } } - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult1").value(scanResult).build()); - log.info("鍐欏叆鍒板伐浣峽}鐨凷canerResult1鏁版嵁锛歿}",device,scanResult); - } - }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<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();//妯$粍鐮� - //涓嬪彂浜у搧妯$粍鐮� - miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MES_ModuleCode").value(productNum).build()); - miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MES_WorkOrderNumber").value(productNum).build()); - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MES_ProductType").value(productNum).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());//娌℃湁瑕佺敓浜х殑宸ュ崟 - } - } - } - }else if (Constants.RECORD_DATA.equals(tab)){//鍑哄叆绔� - if (Constants.ONE.equals(valueString)){//鍏ョ珯 - //1:鍛婄煡MES鎵樼洏宸插埌绔欙紝璇锋眰涓嬪彂杩涚珯鐘舵�� - if (Constants.OP030.equals(device)){ + }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 = true;//OCVResultFeedBack(thoroughfare, device); - + boolean b = OCVResultFeedBack(thoroughfare, device,cellCode); //鍥涗釜鐢佃姱鐨勭姸鎬� if (b){ - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); - log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,11); + scanResult = 11; }else { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); - log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,12); + scanResult = 12; } - } else { + }else { + scanResult = 12; + } + } + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult1").value(scanResult).build()); + log.info("鍐欏叆鍒板伐浣峽}鐨凷canerResult1鏁版嵁锛歿}",device,scanResult); + } + }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 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.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_OP065.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_1.equals(device) || Constants.OP100_2.equals(device)){ + } 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); + }); - WebSocketUsers.sendMessageToUserByText(map.get(device), "END"); - } else { - Integer result = 21; - Object modulCodeObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); - if (ObjectUtil.isNull(modulCodeObjcet) && modulCodeObjcet.toString().trim().isEmpty()){ - 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); + 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()); + } + + }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()); } } - } /*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()); + 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宸ヤ綅鏃犺繃绔欒褰曪紝鍙粰鏀捐淇″彿 + 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) { + }catch (Exception e) { log.error(e.getMessage()); - System.out.println(e.getMessage()); - log.info(e.getMessage()); } } +/* public void receivingWorkOrders(String thoroughfare ,String device) { + String paramProductNum = ""; + try { + List<OmProductionOrdeInfo> orderList = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>() + .eq(OmProductionOrdeInfo::getOrderStatus, Constants.ONE));//宸ュ崟鐘舵�� + if (CollUtil.isNotEmpty(orderList)){ + Long id = orderList.get(0).getId(); + String productNum = orderList.get(0).getProductNum();//妯$粍鐮� + String orderNum = orderList.get(0).getWorkOrderNo(); + //涓嬪彂浜у搧妯$粍鐮� + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(productNum).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(orderNum).build()); + //miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(1).build()); + + //鏇存柊宸ュ崟鐘舵�佷负鎵ц涓� + OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo(); + omProductionOrdeInfo.setId(id); + omProductionOrdeInfo.setOrderStatus("3"); + omProductionOrdeInfoService.updateOmProductionOrdeInfo(omProductionOrdeInfo); + + //灏嗕骇鍝丼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); + } + } /** * 璇诲彇鐢佃姱鐮� @@ -227,9 +322,9 @@ for (ReadWriteEntity readWriteEntity : readWriteEntityList) { if (ObjectUtil.isNotNull(readWriteEntity.getValue()) && !"".equals(readWriteEntity.getValue().toString().trim())){ cellCodeList.add(readWriteEntity.getValue().toString());//灏佽鐢佃姱鐮� - }else{ + }/*else{ cellCodeList.add("");//灏佽鐢佃姱鐮� - } + }*/ } } catch (Exception e) { @@ -365,6 +460,7 @@ */ private static Integer saveParamCollection(String thoroughfare, String device,String moduleCode){ Integer result = 21;//杩斿洖缁撴灉 + String sendMes = ""; try { //鏌ヨ鍙傛暟閰嶇疆琛� @@ -388,6 +484,9 @@ 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);//宸ヤ綅 @@ -401,7 +500,7 @@ childVO.setItemValue(paramValue);//鍙傛暟鍊� childVO.setItemText(list.get(i).getCollectParameterName()); childVO.setCheckResult("1"); - childVO.setCheckTime(new Date().toString()); + childVO.setCheckTime(format.format(new Date())); mesList.add(childVO); } @@ -418,9 +517,9 @@ parentVO.setProductNum(moduleCode); parentVO.setCheckList(mesList); - log.info("鎵ц宸ュ巶MES鏂规硶start锛屼紶鍏ユ暟鎹細{}",parentVO); - HttpResponse execute = HttpRequest.post(orderLineUrl).body(JSONUtil.toJsonStr(parentVO)).execute(); - log.info("鎵ц宸ュ巶MES鏂规硶end锛岃繑鍥炴暟鎹細{}",execute.body()); + log.info("鎵ц宸ュ巶MES鏂规硶start锛屽伐浣嶅彿{} 浼犲叆鏁版嵁锛歿}",device ,parentVO); + HttpResponse execute = HttpRequest.post(Constants.FACTORY_EMS_UAT_GET_RUL+"deviceResultFeedback").body(JSONUtil.toJsonStr(parentVO)).execute(); + log.info("鎵ц宸ュ巶MES鏂规硶end锛屽伐浣嶅彿{} 杩斿洖鏁版嵁锛歿}",device,execute.body()); }); } @@ -440,8 +539,11 @@ */ private static Integer saveParamCollection(String thoroughfare, String device,List<String> cellCodeList){ Integer result = 21;//杩斿洖缁撴灉 - List<List<ChildVO>> mesList = new ArrayList<>();//瀛樺偍4涓數鑺殑鍙戦�佺粰MES鐨勫�� - + 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>() @@ -478,7 +580,6 @@ //绗竴涓數鑺殑鏁版嵁 if (CollUtil.isNotEmpty(paramCollectionList1) && !cellCodeList.get(0).isEmpty()) { - List<ChildVO> mesChildList1 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist1 for (int i = 0; i < paramCollectionList1.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); daParamCollection.setSfcCode(cellCodeList.get(0));//鐢佃姱鐮� @@ -495,18 +596,17 @@ //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 ChildVO childVO = new ChildVO(); - childVO.setItemCode(confColl1.get(i).getCollectParameterName());//鍙傛暟 + childVO.setItemCode(confColl1.get(i).getCollectParameterId());//鍙傛暟 childVO.setItemType(confColl1.get(i).getItemType()); childVO.setItemValue(paramValue);//鍙傛暟鍊� - childVO.setItemText(confColl1.get(i).getParameterSetName()); + childVO.setItemText(confColl1.get(i).getCollectParameterName()); childVO.setCheckResult("1"); - childVO.setCheckTime(new Date().toString()); + childVO.setCheckTime(format.format(new Date())); mesChildList1.add(childVO); } - mesList.add(0, mesChildList1); + } if (CollUtil.isNotEmpty(paramCollectionList2) && !cellCodeList.get(1).isEmpty()) { - List<ChildVO> mesChildList2 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist2 for (int i = 0; i < paramCollectionList2.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); @@ -524,18 +624,16 @@ //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 ChildVO childVO = new ChildVO(); - childVO.setItemCode(confColl2.get(i).getCollectParameterName());//鍙傛暟 + childVO.setItemCode(confColl2.get(i).getCollectParameterId());//鍙傛暟 childVO.setItemType(confColl2.get(i).getItemType()); childVO.setItemValue(paramValue);//鍙傛暟鍊� - childVO.setItemText(confColl2.get(i).getParameterSetName()); + childVO.setItemText(confColl2.get(i).getCollectParameterName()); childVO.setCheckResult("1"); - childVO.setCheckTime(new Date().toString()); + childVO.setCheckTime(format.format(new Date())); mesChildList2.add(childVO); } - mesList.add(1, mesChildList2); } if (CollUtil.isNotEmpty(paramCollectionList3) && !cellCodeList.get(2).isEmpty()) { - List<ChildVO> mesChildList3 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist3 for (int i = 0; i < paramCollectionList3.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); daParamCollection.setSfcCode(cellCodeList.get(2));//鐢佃姱鐮� @@ -552,18 +650,16 @@ //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 ChildVO childVO = new ChildVO(); - childVO.setItemCode(confColl3.get(i).getCollectParameterName());//鍙傛暟 + childVO.setItemCode(confColl3.get(i).getCollectParameterId());//鍙傛暟 childVO.setItemType(confColl3.get(i).getItemType()); childVO.setItemValue(paramValue);//鍙傛暟鍊� - childVO.setItemText(confColl3.get(i).getParameterSetName()); + childVO.setItemText(confColl3.get(i).getCollectParameterName()); childVO.setCheckResult("1"); - childVO.setCheckTime(new Date().toString()); + childVO.setCheckTime(format.format(new Date())); mesChildList3.add(childVO); } - mesList.add(2, mesChildList3); } if (CollUtil.isNotEmpty(paramCollectionList4)&& !cellCodeList.get(3).isEmpty()) { - List<ChildVO> mesChildList4 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist4 for (int i = 0; i < paramCollectionList4.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); daParamCollection.setSfcCode(cellCodeList.get(3));//鐢佃姱鐮� @@ -580,22 +676,20 @@ //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 ChildVO childVO = new ChildVO(); - childVO.setItemCode(confColl4.get(i).getCollectParameterName());//鍙傛暟 + childVO.setItemCode(confColl4.get(i).getCollectParameterId());//鍙傛暟 childVO.setItemType(confColl4.get(i).getItemType()); childVO.setItemValue(paramValue);//鍙傛暟鍊� - childVO.setItemText(confColl4.get(i).getParameterSetName()); + childVO.setItemText(confColl4.get(i).getCollectParameterName()); childVO.setCheckResult("1"); - childVO.setCheckTime(new Date().toString()); + childVO.setCheckTime(format.format(new Date())); mesChildList4.add(childVO); } - mesList.add(3, mesChildList4); } //鍏叡鍙傛暟 if (CollUtil.isNotEmpty(paramCollectionList0)) { for (int i = 0; i < cellCodeList.size(); i++) {//寰幆4涓數鑺� if(!cellCodeList.get(i).isEmpty()){ - List<ChildVO> mesChildList0 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist0 for (int j = 0; j < paramCollectionList0.size(); j++) { DaParamCollection daParamCollection = new DaParamCollection(); daParamCollection.setSfcCode(cellCodeList.get(i));//鐢佃姱鐮� @@ -604,9 +698,9 @@ String paramValue = ""; if (ObjectUtil.isNotNull(paramCollectionList0.get(j).getValue())) { paramValue = paramCollectionList0.get(j).getValue().toString();//鍙傛暟鍊� - } - if(confColl0.get(j).getCollectParameterName().contains("鏃堕棿") && !"".equals(paramValue)){ - paramValue = format.parse(TimeUtil.test(TimeUtil.stringProcessing(paramValue))).toString(); + if("DATE".equals(confColl0.get(j).getCollectParameterType()) && !paramValue.isEmpty()){ + paramValue = TimeUtil.test(TimeUtil.stringProcessing(paramValue)); + } } daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� daParamCollection.setLocationCode(device);//宸ヤ綅 @@ -615,15 +709,14 @@ //鍙戦�佺粰宸ュ巶mes鍙傛暟灏佽 ChildVO childVO = new ChildVO(); - childVO.setItemCode(confColl0.get(j).getCollectParameterName());//鍙傛暟 + childVO.setItemCode(confColl0.get(j).getCollectParameterId());//鍙傛暟 childVO.setItemType(confColl0.get(j).getItemType()); childVO.setItemValue(paramValue);//鍙傛暟鍊� - childVO.setItemText(confColl0.get(j).getParameterSetName()); + childVO.setItemText(confColl0.get(j).getCollectParameterName()); childVO.setCheckResult("1"); - childVO.setCheckTime(new Date().toString()); + childVO.setCheckTime(format.format(new Date())); mesChildList0.add(childVO); } - mesList.add(i, mesChildList0); } //mesList.get(i).addAll(mesChildList0); @@ -645,16 +738,34 @@ for (int i = 0; i < cellCodeList.size(); i++) {//寰幆4涓數鑺� if(!cellCodeList.get(i).isEmpty()){ parentVO.setProductNum(cellCodeList.get(i));//鐢佃姱鐮� - parentVO.setCheckList(mesList.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(orderLineUrl).body(JSONUtil.toJsonStr(parentVO)).execute(); + HttpResponse execute = HttpRequest.post(Constants.FACTORY_EMS_UAT_GET_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; @@ -664,70 +775,126 @@ * 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 string = value1.toString(); - List<QingYanTestInfo> list = qingYanTestInfoService.list(new LambdaQueryWrapper<QingYanTestInfo>() - .eq(QingYanTestInfo::getKeyCode, string)); + 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)){ - QingYanTestInfo qingYanTestInfo = list.get(0); - if (Constants.ONE.equals(qingYanTestInfo.getStatus())){ + 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 string = value2.toString(); - List<QingYanTestInfo> list = qingYanTestInfoService.list(new LambdaQueryWrapper<QingYanTestInfo>() - .eq(QingYanTestInfo::getKeyCode, string)); + 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)){ - QingYanTestInfo qingYanTestInfo = list.get(0); - if (Constants.ONE.equals(qingYanTestInfo.getStatus())){ + 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 string = value3.toString(); - List<QingYanTestInfo> list = qingYanTestInfoService.list(new LambdaQueryWrapper<QingYanTestInfo>() - .eq(QingYanTestInfo::getKeyCode, string)); + 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)){ - QingYanTestInfo qingYanTestInfo = list.get(0); - if (Constants.ONE.equals(qingYanTestInfo.getStatus())){ + 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 string = value4.toString(); - List<QingYanTestInfo> list = qingYanTestInfoService.list(new LambdaQueryWrapper<QingYanTestInfo>() - .eq(QingYanTestInfo::getKeyCode, string)); + 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)){ - QingYanTestInfo qingYanTestInfo = list.get(0); - if (Constants.ONE.equals(qingYanTestInfo.getStatus())){ + 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