From 5fbc7a423b6d51716695ff8317337fc40719e2a6 Mon Sep 17 00:00:00 2001 From: cl <418351270@qq.com> Date: 星期一, 15 七月 2024 10:39:42 +0800 Subject: [PATCH] 修改参数采集 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 160 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 118 insertions(+), 42 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 05cade1..801adc5 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 @@ -123,7 +123,7 @@ if (ObjectUtil.isNotNull(value1)){ String cellCode = value1.toString(); //鍙嶉鐢佃姱ocv妫�娴嬬粨鏋� - boolean b = OCVResultFeedBack(thoroughfare, device,cellCode); + boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//瀵规浛鎹㈢數鑺牎楠� //鍥涗釜鐢佃姱鐨勭姸鎬� if (b){ scanResult = 11; @@ -146,7 +146,7 @@ //1:鍛婄煡MES鎵樼洏宸插埌绔欙紝璇锋眰涓嬪彂杩涚珯鐘舵�� if (Constants.OP030.equals(device)){ //鍙嶉鐢佃姱ocv妫�娴嬬粨鏋� - boolean b = OCVResultFeedBack(thoroughfare, device); + boolean b = OCVResultFeedBack(thoroughfare, device);//杩涚珯瀵�4涓數鑺牎楠� //鍥涗釜鐢佃姱鐨勭姸鎬� if (b){ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); @@ -160,9 +160,10 @@ 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); + receivingWorkOrders(thoroughfare, device,materialCode); }); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); @@ -198,7 +199,7 @@ }else{ result = savePassingStation(thoroughfare, device,cellCodeList);//淇濆瓨杩囩珯 if(result == 21) { - result = saveParamCollection(thoroughfare, device,cellCodeList);//淇濆瓨鍙傛暟锛屽彂閫佸伐鍘侻ES + result = saveParamCollection(device,cellCodeList);//淇濆瓨鍙傛暟锛屽彂閫佸伐鍘侻ES } } miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build()); @@ -207,16 +208,24 @@ WebSocketUsers.sendMessageToUserByText(map.get(device), "END"); } else { Integer result = 21; - Object productTypeObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".ProductType").getValue();//浜у搧绫诲瀷 + //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 + Object stationStatusObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus").getValue();//绔欑姸鎬佸湴鍧� + if (ObjectUtil.isNotNull(stationStatusObjcet)){ + String stationStatus = stationStatusObjcet.toString(); + result = savePassingStation(thoroughfare, device,moduleCode,stationStatus);//淇濆瓨杩囩珯 + if(result == 21) { + result = saveParamCollection(device,moduleCode,stationStatus);//淇濆瓨鍙傛暟锛屽彂閫佸伐鍘侻ES + } + }else{ + result = 23; + log.info("璇诲彇鍒板伐浣峽}StationStatus鏁版嵁锛歿},杩斿洖RecordDataDone鐨勫�间负{}",device,"IS NULL锛�",result); } + } miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build()); log.info("鍐欏叆鍒板伐浣峽}鐨凴ecordDataDone鏁版嵁锛歿}",device,result); @@ -227,7 +236,7 @@ log.error(e.getMessage()); } } - public void receivingWorkOrders(String thoroughfare ,String device) { +/* public void receivingWorkOrders(String thoroughfare ,String device) { String paramProductNum = ""; try { @@ -240,7 +249,7 @@ 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(productNum).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(orderNum).build()); //miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(1).build()); //鏇存柊宸ュ崟鐘舵�佷负鎵ц涓� @@ -252,21 +261,23 @@ //灏嗕骇鍝丼N鍙戦�佸埌鍓嶅彴 productNum = "productNum,"+ productNum; WebSocketUsers.sendMessageToUserByText(map.get(device), productNum); - }/*else{ + }*//*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) + public void receivingWorkOrders(String thoroughfare ,String device ,String materialCode) { String paramProductNum = ""; try { // 鏌ヨ鏈�鏂扮殑宸ュ崟淇℃伅 OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder(); - String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100"); + + log.info("璇锋眰宸ュ巶MES宸ュ崟锛氬叆鍙俤evice{},materialCode锛歿}", device, materialCode); + String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode); JSONObject jsonObject = new JSONObject(orderJsonString); // 浠嶫SONObject涓幏鍙杁ata瀵硅薄 JSONObject dataObject = jsonObject.getJSONObject("data"); @@ -278,10 +289,11 @@ omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum")); omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum")); omProductionOrdeInfo.setStationCode(dataObject.getStr("stationCode")); - omProductionOrdeInfo.setMaterialCode(dataObject.getStr("materialCode")); + omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode")); + omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity"))); omProductionOrdeInfo.setOnlineCompletionMark("0"); omProductionOrdeInfo.setSfResult("0"); - omProductionOrdeInfo.setProductCode(dataObject.getStr("model")); + omProductionOrdeInfo.setProductModel(dataObject.getStr("model")); omProductionOrdeInfo.setCreateTime(new Date()); omProductionOrdeInfo.setCreateUser("宸ュ巶MES"); omProductionOrdeInfoService.save(omProductionOrdeInfo); @@ -290,14 +302,14 @@ 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()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(dataObject.getStr("productNum")).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(dataObject.getStr("productionOrderNum")).build()); } } catch (Exception e) { throw new RuntimeException(e); } - }*/ + } /** * 璇诲彇鐢佃姱鐮� @@ -337,10 +349,11 @@ * @param thoroughfare 閫氶亾 * @param device 宸ヤ綅 * @param moduleCode 妯$粍鍙� + * @param stationStatus 绔欑姸鎬� * @return list * @throws Exception e */ - private static Integer savePassingStation(String thoroughfare, String device,String moduleCode){ + private static Integer savePassingStation(String thoroughfare, String device,String moduleCode,String stationStatus){ Integer result = 21; try { @@ -352,20 +365,6 @@ }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; } @@ -450,13 +449,13 @@ /** * 淇濆瓨鍙傛暟鏁版嵁鍜屽彂閫佸伐鍘侻ES - * @param thoroughfare 閫氶亾 * @param device 宸ヤ綅 * @param moduleCode 妯$粍鍙� + * @param stationStatus 绔欑姸鎬� * @return list * @throws Exception e */ - private static Integer saveParamCollection(String thoroughfare, String device,String moduleCode){ + private static Integer saveParamCollection(String device,String moduleCode,String stationStatus){ Integer result = 21;//杩斿洖缁撴灉 String sendMes = ""; @@ -484,6 +483,8 @@ paramValue = readWriteEntityList.get(i).getValue().toString();//鍙傛暟鍊� if("DATE".equals(list.get(i).getCollectParameterType()) && !paramValue.isEmpty()){ paramValue = format.parse(TimeUtil.test(TimeUtil.stringProcessing(paramValue))).toString(); + }else if("MODEL".equals(list.get(i).getCollectParameterType()) && !paramValue.isEmpty()){ + paramValue = Constants.materialMap.get(paramValue); } } daParamCollection.setParamValue(paramValue);//鍙傛暟鍊� @@ -505,18 +506,33 @@ CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { //鎻掑叆鍙傛暟閲囬泦琛� daParamCollectionService.insertBatch(collectionList); + + //濡傛灉220宸ヤ綅锛岃繘琛屾姤宸� + if("M1OP220".equals(device)) { + RestfulService.getWorkReportResultFeedback(moduleCode, "M1OP220", format.format(new Date())); + } + //涓婁紶鍒板伐鍘俶es ParentVO parentVO = new ParentVO(); parentVO.setStationCode(device);//宸ヤ綅 parentVO.setSiteCode("3983"); parentVO.setRecordId(UUID.randomUUID().toString()); - parentVO.setTotalResult("1"); + if("2".equals(stationStatus)){//宸ョ珯鐘舵�� + parentVO.setTotalResult("0"); + }else { + parentVO.setTotalResult("1"); + } parentVO.setProductNum(moduleCode); + + //娣诲姞鍩虹鏁版嵁 + List<ChildVO> basicList = getCollectParamBasicData(device); + mesList.addAll(basicList); + parentVO.setCheckList(mesList); log.info("鎵ц宸ュ巶MES鏂规硶start锛屽伐浣嶅彿{} 浼犲叆鏁版嵁锛歿}",device ,parentVO); - HttpResponse execute = HttpRequest.post(Constants.FACTORY_EMS_UAT_RUL+"deviceResultFeedback").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锛屽伐浣嶅彿{} 杩斿洖鏁版嵁锛歿}",device,execute.body()); }); @@ -529,13 +545,12 @@ /** * 淇濆瓨鍙傛暟鏁版嵁鍜屽彂閫佸伐鍘侻ES - * @param thoroughfare 閫氶亾 * @param device 宸ヤ綅 * @param cellCodeList 鐢佃姱鐮侀泦鍚� * @return list * @throws Exception e */ - private static Integer saveParamCollection(String thoroughfare, String device,List<String> cellCodeList){ + private static Integer saveParamCollection(String device,List<String> cellCodeList){ Integer result = 21;//杩斿洖缁撴灉 List<ChildVO> mesChildList1 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist1 List<ChildVO> mesChildList2 = new ArrayList<>();//灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist2 @@ -753,10 +768,15 @@ break; } + + //娣诲姞鍩虹鏁版嵁 + List<ChildVO> basicList = getCollectParamBasicData(device); + mesChildList.addAll(basicList); + 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(); + HttpResponse execute = HttpRequest.post(Constants.FACTORY_EMS_UAT_GET_RUL+"deviceResultFeedback").body(JSONUtil.toJsonStr(parentVO)).execute(); log.info("鎵ц宸ュ巶MES鏂规硶end锛岃繑鍥炴暟鎹細{}",execute.body()); } } @@ -896,5 +916,61 @@ return flag; } + /** + * AMES鎶ュ伐缁撴灉鍥炰紶 + * @param productNum + * @param stationCode + * @param confirmTime + * @return + */ + //{"code":"success","data":{"productNum":"LCV123456P0600036","stationCode":"1HZ01","resultCode":"S","resultText":"鎶ュ伐鎴愬姛"},"message":"API璋冪敤鎴愬姛"} + public static String getWorkReportResultFeedback(String productNum,String stationCode,String confirmTime) + { + String result = ""; + try { + String url = Constants.FACTORY_EMS_UAT_GET_RUL + "workReportResultFeedback?siteCode="+Constants.FACTORY_EMS_SITE_CODE+"&stationCode="+stationCode+"&productNum="+productNum+"&confirmTime="+confirmTime; + HttpResponse response = HttpRequest.get(url).execute(); + HttpRequest httpRequest = HttpRequest.get(url); + result = response.body(); + }catch (Exception e){ + throw new RuntimeException(e); + }finally { + return result; + } + } + + + /** + * 鑾峰彇閲囬泦鍙傛暟鍩虹鏁版嵁 + * @param stationCode + * @return list + */ + public static List<ChildVO> getCollectParamBasicData(String stationCode) { + List<ChildVO> basicList = new ArrayList<>(); + try { + //鏌ヨ鍙傛暟閰嶇疆琛� + List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() + .eq(DaCollectionParamConf::getProcessesCode, stationCode)//宸ヤ綅 + .eq(DaCollectionParamConf::getCollectParameterType, "BASIC")//閲囬泦鍙傛暟绫诲瀷 + ); + if (CollUtil.isNotEmpty(list)){ + for(DaCollectionParamConf conf:list){ + ChildVO childVO = new ChildVO(); + childVO.setItemCode(conf.getCollectParameterId());//鍙傛暟 + childVO.setItemType(conf.getItemType()); + childVO.setItemValue(conf.getParamCentral());//鍙傛暟鍊� + childVO.setItemText(conf.getCollectParameterName()); + childVO.setCheckResult("1"); + childVO.setCheckTime(format.format(new Date())); + basicList.add(childVO); + } + } + return basicList; + }catch (Exception e) { + throw new RuntimeException(e); + } + } + + } -- Gitblit v1.9.3