From 6a53e63fa18c97232420ab58163a9b79fbb5a228 Mon Sep 17 00:00:00 2001 From: cl <418351270@qq.com> Date: 星期四, 25 七月 2024 18:27:05 +0800 Subject: [PATCH] 1、100工位报工前,先将工单状态改为3执行中 2、手动接收工单,修改为先查表中是否有剩余工单, 3、OP030电芯检测放开 4、接收工单时,将两个工位区分开存工单 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 405 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 295 insertions(+), 110 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 bab480e..5899843 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 @@ -12,6 +12,8 @@ import com.jcdm.common.core.domain.AjaxResult; import com.jcdm.framework.websocket.WebSocketUsers; import com.jcdm.main.constant.Constants; +import com.jcdm.main.da.cellData.domain.DaCellData; +import com.jcdm.main.da.cellData.service.IDaCellDataService; import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService; import com.jcdm.main.da.paramCollection.domain.DaParamCollection; @@ -62,6 +64,8 @@ public static IDaTestDeviceInterfaceTempService daTestDeviceInterfaceTempService; + public static IDaCellDataService daCellDataService; + /* @Value("${orderLineUrl}") private static String orderLineUrl;*/ @@ -70,13 +74,15 @@ IDaCollectionParamConfService collectionParamConfService, IDaParamCollectionService daParamCollectionService, IOmProductionOrdeInfoService omProductionOrdeInfoService, - IDaTestDeviceInterfaceTempService daTestDeviceInterfaceTempService) { + IDaTestDeviceInterfaceTempService daTestDeviceInterfaceTempService, + IDaCellDataService daCellDataService) { OPCUaSubscription.miloService = miloService; OPCUaSubscription.daPassingStationCollectionService = daPassingStationCollectionService; OPCUaSubscription.collectionParamConfService = collectionParamConfService; OPCUaSubscription.daParamCollectionService = daParamCollectionService; OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService; OPCUaSubscription.daTestDeviceInterfaceTempService = daTestDeviceInterfaceTempService; + OPCUaSubscription.daCellDataService = daCellDataService; } @@ -119,11 +125,12 @@ // } } }else if(Constants.OP030.equals(device)){ - Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".Scaner").getValue(); + Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".Scaner").getValue();//鐢佃姱鐮� if (ObjectUtil.isNotNull(value1)){ String cellCode = value1.toString(); - //鍙嶉鐢佃姱ocv妫�娴嬬粨鏋� - boolean b = OCVResultFeedBack(thoroughfare, device,cellCode); + scanResult = 11; + //鍙嶉鐢佃姱ocv妫�娴嬬粨鏋�,杩欓噷涓嶇敤鍐嶈繘琛屾娴嬶紝鍙鐮佹病闂灏卞彲浠ヤ簡 + boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//瀵规浛鎹㈢數鑺牎楠� //鍥涗釜鐢佃姱鐨勭姸鎬� if (b){ scanResult = 11; @@ -142,11 +149,24 @@ 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)){ + if (Constants.ONE.equals(valueString)){//鍏ョ珯 //1:鍛婄煡MES鎵樼洏宸插埌绔欙紝璇锋眰涓嬪彂杩涚珯鐘舵�� + + //OP020 鐢佃姱鎸′綅鏍¢獙 + if (Constants.OP020.equals(device)){ + Integer result = 11; + Object cellGearObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellGear").getValue(); + if (ObjectUtil.isNull(cellGearObjcet)){ + result = 16;//鐢佃姱鎸′綅涓虹┖ + }else{ + String cellGear = cellGearObjcet.toString(); + List<String> cellCodeList = readCellCodeList(thoroughfare, device); + result = checkCellGear(thoroughfare, device,cellCodeList,cellGear);//鏍¢獙鐢佃姱鎸′綅鍜岀粍鍒� + } + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build()); + + }else 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()); @@ -161,17 +181,27 @@ if (ObjectUtil.isNotNull(productTypeObjcet)){ String productType = productTypeObjcet.toString();//浜у搧绫诲瀷 String materialCode = Constants.materialMap.get(productType); + //鎺ユ敹宸ュ崟锛屼繚瀛樺埌鏁版嵁搴�,骞朵笖灏嗗伐鍗曚紶缁橮LC CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { - //璋冪敤宸ュ巶MES锛屼繚瀛樺埌鏁版嵁搴�,骞朵笖灏嗗伐鍗曚紶缁橮LC (鐩墠涓存椂鐢ㄨ鏂规硶锛� receivingWorkOrders(thoroughfare, device,materialCode); }); - 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.OP150.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{ + String productNum = modulCodeObjcet.toString(); + //灏嗕骇鍝丼N鍙戦�佸埌鍓嶅彴 + productNum = "productNum,"+ productNum; + WebSocketUsers.sendMessageToUserByText(map.get(device), productNum); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); + } }else if (Constants.ModuleList.contains(device)){//鏈夋ā缁勭爜鐨勫伐浣� Object modulCodeObjcet = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); if (ObjectUtil.isNull(modulCodeObjcet)){ @@ -194,14 +224,54 @@ Integer result = 21; //璇诲彇鐢佃姱鐮� List<String> cellCodeList = readCellCodeList(thoroughfare, device); - if(ObjectUtil.isNull(cellCodeList) || cellCodeList.size() != 4){ + if(ObjectUtil.isNull(cellCodeList) || cellCodeList.size() != 4 ){ result = 23; }else{ + String cellCode1 = cellCodeList.get(0); + String cellCode2 = cellCodeList.get(1); + String cellCode3 = cellCodeList.get(2); + String cellCode4 = cellCodeList.get(3); + if ((!cellCode1.isEmpty() && cellCode2.isEmpty()) || (cellCode1.isEmpty() && !cellCode2.isEmpty()) + || (!cellCode3.isEmpty() && cellCode4.isEmpty()) || (!cellCode4.isEmpty() && cellCode3.isEmpty())) { + result = 23; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build()); + return; + } + result = savePassingStation(thoroughfare, device,cellCodeList);//淇濆瓨杩囩珯 if(result == 21) { - result = saveParamCollection(thoroughfare, device,cellCodeList);//淇濆瓨鍙傛暟锛屽彂閫佸伐鍘侻ES + if(Constants.OP020.contains(device)){ + if(!cellCode1.isEmpty()){ + daCellDataService.deleteDaCellDataByGbCellCode(cellCode1); + } + if(!cellCode2.isEmpty()){ + daCellDataService.deleteDaCellDataByGbCellCode(cellCode2); + } + if(!cellCode3.isEmpty()){ + daCellDataService.deleteDaCellDataByGbCellCode(cellCode3); + } + if(!cellCode4.isEmpty()){ + daCellDataService.deleteDaCellDataByGbCellCode(cellCode4); + } + }else if(Constants.OP030.contains(device)){ + if(!cellCode1.isEmpty()){ + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode1); + } + if(!cellCode2.isEmpty()){ + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode2); + } + if(!cellCode3.isEmpty()){ + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode3); + } + if(!cellCode4.isEmpty()) { + daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode4); + } + } + result = saveParamCollection(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)){//浜哄伐宸ヤ綅 @@ -214,10 +284,18 @@ 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); @@ -228,45 +306,15 @@ log.error(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) + public synchronized void receivingWorkOrders(String thoroughfare ,String device ,String materialCode) { String paramProductNum = ""; try { // 鏌ヨ鏈�鏂扮殑宸ュ崟淇℃伅 OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder(); + + log.info("璇锋眰宸ュ巶MES宸ュ崟锛氬叆鍙俤evice{},materialCode锛歿}", device, materialCode); String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode); JSONObject jsonObject = new JSONObject(orderJsonString); // 浠嶫SONObject涓幏鍙杁ata瀵硅薄 @@ -278,22 +326,25 @@ 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.setStationCode(device); + 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); - //鍙戦�佺粰鍓嶅彴 - WebSocketUsers.sendMessageToUserByText(map.get(device), dataObject.getStr("productNum")); + String productNum = dataObject.getStr("productNum"); + String orderNum = dataObject.getStr("productionOrderNum"); + //涓嬪彂浜у搧妯$粍鐮� + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(productNum).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(orderNum).build()); - //鍐橮LC - 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()); + //灏嗕骇鍝丼N鍙戦�佸埌鍓嶅彴 + productNum = "productNum,"+ productNum; + WebSocketUsers.sendMessageToUserByText(map.get(device), productNum); } } catch (Exception e) { @@ -320,11 +371,11 @@ try { List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(readList);//鐢佃姱鐮� for (ReadWriteEntity readWriteEntity : readWriteEntityList) { - if (ObjectUtil.isNotNull(readWriteEntity.getValue()) && !"".equals(readWriteEntity.getValue().toString().trim())){ + if (ObjectUtil.isNotNull(readWriteEntity.getValue()) && !readWriteEntity.getValue().toString().trim().isEmpty()){ cellCodeList.add(readWriteEntity.getValue().toString());//灏佽鐢佃姱鐮� - }/*else{ + }else{ cellCodeList.add("");//灏佽鐢佃姱鐮� - }*/ + } } } catch (Exception e) { @@ -339,10 +390,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 { @@ -354,20 +406,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; } @@ -452,13 +490,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 = ""; @@ -486,6 +524,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);//鍙傛暟鍊� @@ -507,14 +547,29 @@ CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { //鎻掑叆鍙傛暟閲囬泦琛� daParamCollectionService.insertBatch(collectionList); + + //濡傛灉220宸ヤ綅锛岃繘琛屾姤宸�,鍥犱负涓婂眰绯荤粺鍙敮鎸�6浣嶏紝鎵�鏈夋姤宸ュ伐浣嶄慨鏀逛负M1P220 + if("M1OP220".equals(device)) { + getWorkReportResultFeedback(moduleCode, "M1P220", 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,moduleCode); + mesList.addAll(basicList); + parentVO.setCheckList(mesList); log.info("鎵ц宸ュ巶MES鏂规硶start锛屽伐浣嶅彿{} 浼犲叆鏁版嵁锛歿}",device ,parentVO); @@ -531,13 +586,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 @@ -732,11 +786,10 @@ 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.setRecordId(UUID.randomUUID().toString()); + parentVO.setTotalResult("1"); parentVO.setProductNum(cellCodeList.get(i));//鐢佃姱鐮� //灏佽缁欏伐鍘侻ES鍙戦�佺殑childlist4 List<ChildVO> mesChildList = new ArrayList<>(mesChildList0); @@ -755,6 +808,11 @@ break; } + + //娣诲姞鍩虹鏁版嵁 + List<ChildVO> basicList = getCollectParamBasicData(device,cellCodeList.get(i)); + mesChildList.addAll(basicList); + parentVO.setCheckList(mesChildList);//鍙傛暟 //CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { log.info("鎵ц宸ュ巶MES鏂规硶start锛屼紶鍏ユ暟鎹細{}",parentVO); @@ -772,6 +830,41 @@ } /** + * OP020鏍¢獙鐢佃姱鎸′綅 + * @param thoroughfare + * @param device + * @throws Exception + */ + private Integer checkCellGear(String thoroughfare, String device,List<String> cellCodeList,String cellGear) throws Exception { + Integer result = 11; + + for(int i = 0; i < cellCodeList.size(); i ++){ + Integer cellStatus = 1; + String cellCode = cellCodeList.get(i); + if(!cellCode.isEmpty()){ + List<DaCellData> list = daCellDataService.list(new LambdaQueryWrapper<DaCellData>() + .eq(DaCellData::getGbCellCode,cellCode)); + if(CollUtil.isNotEmpty(list)){ + DaCellData daCellData = list.get(0); + String cellValue = daCellData.getCellValue();//鏁版嵁搴撲腑鐢佃姱鎸′綅 + String cellSerial = daCellData.getCellSerial();//鏁版嵁搴撲腑鐢佃姱缁勫埆 + if(!cellValue.isEmpty() && cellValue.equals(cellGear)){ + cellStatus = 1; + }else { + cellStatus = 2; + result = 17;//鎸′綅鏍¢獙涓嶅悎鏍� + } + }else { + cellStatus = 2; + result = 17;//鏌ヤ笉鍒拌鏍¢獙鐨勬尅浣� + } + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_"+(i+1)).value(cellStatus).build()); + } + } + return result; + } + + /** * 030宸ヤ綅杩斿洖ocv娴嬭瘯缁撴灉 * @param thoroughfare * @param device @@ -780,22 +873,21 @@ */ 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)); + //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020") + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode) + .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime) + ); if (CollUtil.isNotEmpty(list)){ - DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0); if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){ - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(1).build()); + flag = true; }else { flag = false; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build()); } - daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); }else { flag = false; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build()); log.info("璇诲彇鍒板伐浣峽},娴嬭瘯璁惧杩斿洖鐨勬暟鎹煡璇笉鍒帮紝鐢佃姱鐮佷负锛歿}",device,cellCode); } return flag; @@ -812,42 +904,54 @@ if (ObjectUtil.isNotNull(value1)){ String cellCode = value1.toString(); List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() - .eq(DaTestDeviceInterfaceTemp::getStationCode, device) - .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)); + //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020") + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode) + .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime) + ); if (CollUtil.isNotEmpty(list)){ - DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0); 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); + //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(5).build()); + log.info("璇诲彇鍒板伐浣峽},OP020宸ヤ綅娌℃湁缁欐祴璇曠粨鏋�",device); } }else { flag = false; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(5).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)); + //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020") + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode) + .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime) + ); if (CollUtil.isNotEmpty(list)){ - DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0); 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); + //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(5).build()); + log.info("璇诲彇鍒板伐浣峽},OP020宸ヤ綅娌℃湁缁欐祴璇曠粨鏋�",device); } }else { flag = false; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(2).build()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(5).build()); log.info("璇诲彇鍒板伐浣峽},PLC娌℃湁缁欑數鑺爜",device); } @@ -855,21 +959,27 @@ if (ObjectUtil.isNotNull(value3)){ String cellCode = value3.toString(); List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() - .eq(DaTestDeviceInterfaceTemp::getStationCode, device) - .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)); + //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020") + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode) + .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime) + ); if (CollUtil.isNotEmpty(list)){ - DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0); 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); + //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(5).build()); + log.info("璇诲彇鍒板伐浣峽},OP020宸ヤ綅娌℃湁缁欐祴璇曠粨鏋�",device); } }else { flag = false; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(2).build()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(5).build()); log.info("璇诲彇鍒板伐浣峽},PLC娌℃湁缁欑數鑺爜",device); } @@ -877,26 +987,101 @@ if (ObjectUtil.isNotNull(value4)){ String cellCode = value4.toString(); List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() - .eq(DaTestDeviceInterfaceTemp::getStationCode, device) - .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)); + //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020") + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode) + .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime) + ); if (CollUtil.isNotEmpty(list)){ - DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(list.size()-1); + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0); 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); + //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + }else { + flag = false; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(5).build()); + log.info("璇诲彇鍒板伐浣峽},OP020宸ヤ綅娌℃湁缁欐祴璇曠粨鏋�",device); } }else { flag = false; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(2).build()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(5).build()); log.info("璇诲彇鍒板伐浣峽},PLC娌℃湁缁欑數鑺爜",device); } 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 + * @param sfcCode + * @return list + */ + public static List<ChildVO> getCollectParamBasicData(String stationCode,String sfcCode) { + List<ChildVO> basicList = new ArrayList<>(); + List<DaParamCollection> collectionList = 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); + + DaParamCollection daParamCollection = new DaParamCollection(); + daParamCollection.setSfcCode(sfcCode);//妯$粍鐮� + daParamCollection.setParamCode(conf.getCollectParameterId());//鍙傛暟缂栫爜 + daParamCollection.setParamName(conf.getCollectParameterName());//鍙傛暟鍚嶇О + + daParamCollection.setParamValue(conf.getParamCentral());//鍙傛暟鍊� + daParamCollection.setLocationCode(stationCode);//宸ヤ綅 + daParamCollection.setCollectionTime(new Date());//閲囬泦鏃堕棿 + collectionList.add(daParamCollection);//灏佽鍙傛暟閲囬泦list + } + daParamCollectionService.insertBatch(collectionList); + } + return basicList; + }catch (Exception e) { + throw new RuntimeException(e); + } + } + + } -- Gitblit v1.9.3