From e2670e7912ea7316d1f9fb518d980b8a4ef94055 Mon Sep 17 00:00:00 2001 From: hdy <1105738590@qq.com> Date: 星期四, 18 四月 2024 10:23:28 +0800 Subject: [PATCH] 点位订阅 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 111 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 91 insertions(+), 20 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 411e780..5dd407c 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,6 +2,7 @@ import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jcdm.framework.websocket.WebSocketUsers; @@ -11,8 +12,11 @@ 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.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.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; import com.kangaroohy.milo.service.MiloService; @@ -27,6 +31,8 @@ @Component public class OPCUaSubscription implements SubscriptionCallback { + + public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //鑷姩宸ヤ綅 public List<String> automaticList = Arrays.asList("OP300","OP280", "OP320", "OP340", "OP350", "OP360","OP370", "OP390", "OP470", "OP530", "OP540"); @@ -48,15 +54,18 @@ public static IDaParamCollectionService daParamCollectionService; + public static IOmProductionOrdeInfoService omProductionOrdeInfoService; + public OPCUaSubscription(MiloService miloService, IDaPassingStationCollectionService daPassingStationCollectionService, IDaCollectionParamConfService collectionParamConfService, - IDaParamCollectionService daParamCollectionService) { + IDaParamCollectionService daParamCollectionService, + IOmProductionOrdeInfoService omProductionOrdeInfoService) { OPCUaSubscription.miloService = miloService; this.daPassingStationCollectionService = daPassingStationCollectionService; OPCUaSubscription.collectionParamConfService = collectionParamConfService; OPCUaSubscription.daParamCollectionService = daParamCollectionService; - + OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService; } @@ -88,28 +97,44 @@ String recordDataDoneValue = ""; if("1".equals(tabVlaue)){ - recordDataDoneValue = "11"; - //鏍¢獙鍏ョ珯鏄惁鍙互宸ヤ綔 + //璇锋眰宸ュ崟 +// if(device.equals("OP230")){ +// getFactoryOrder("OP230"); +// } + + //鑷姩宸ヤ綅 //plc缁欐垜浠竴涓猵ack鐮侊紝鎷縫ack鐮佹牎楠屽嚭鍨嬪彿 if(moduleCodeList.stream().anyMatch(s -> s.equals(device))){ //璇绘ā缁勭爜 String moduleCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue().toString(); String productTye = thoroughfare + "." + device + ".ProductType"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(productTye).value(Integer.valueOf(moduleCode.substring(7,8))).build()); - } - //杩涚珯淇濆瓨鏁版嵁 -// inSaveDate(thoroughfare,device) - //璁板綍鏁版嵁瀹屾垚 - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + if(null!=moduleCode && moduleCode.length() == 24){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(productTye).value(Integer.valueOf(moduleCode.substring(7,8))).build()); + //杩涚珯淇濆瓨鏁版嵁 +// inSaveDate(thoroughfare,device) + //璁板綍鏁版嵁瀹屾垚 + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); - if(automaticList.stream().noneMatch(s -> s.equals(device))){ - //缁欏墠绔彂宸ヤ欢鍒颁綅淇″彿 - WebSocketUsers.sendMessageToUserByText(map.get(device), "IN"); + + //璇锋眰宸ュ崟 + }else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); + } + }else { + //鎵嬪姩宸ヤ綅澶勭悊閫昏緫 +// if(automaticList.stream().noneMatch(s -> s.equals(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))){ @@ -180,16 +205,32 @@ if(null == snCode || "".equals(snCode)){ result = "22"; }else{ - //1銆佹洿鏂板伐鍗曚俊鎭� - //updateOrderInfo(); - //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� - String workOrderNo = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "WorkOrderNumber").getValue().toString(); - String productCode = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "ProductType").getValue().toString(); + String workOrderNo = ""; + String productCode = ""; + //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� +// String workOrderNo = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "WorkOrderNumber").getValue().toString(); +// String productCode = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "ProductType").getValue().toString(); + Object orderNumberObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "WorkOrderNumber").getValue(); + if(orderNumberObject!=null){ + workOrderNo = orderNumberObject.toString(); + } + + Object productCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "ProductType").getValue(); + if(productCodeObject!=null){ + productCode = productCodeObject.toString(); + } saveStationInfo(snCode,thoroughfare,device,workOrderNo,productCode); //3銆佷繚瀛樺弬鏁伴噰闆嗘暟鎹� SaveParamData(snCode,thoroughfare,device,workOrderNo,productCode); + + //濡傛灉鏄湯灏惧伐绔欒鎶ュ伐 + if(device.equals("OP500")){ + RestfulService.getWorkReportResultFeedback(snCode,device,format.format(new Date())); + //1銆佹洿鏂板伐鍗曚俊鎭� + updateOrderInfo(snCode); + } result = "21"; @@ -269,6 +310,11 @@ if(!nodeIdList.isEmpty()){ List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(nodeIdList); + for (int i = 0; i < readWriteEntityList.size(); i++) { + if(readWriteEntityList.get(i).getValue() == null){ + readWriteEntityList.get(i).setValue(" "); + } + } List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); for(int i=0;i<nodeIdList.size();i++){ if(!readWriteEntityList.get(i).getValue().toString().equals("0.0")){ @@ -326,4 +372,29 @@ }); daParamCollectionService.insertBatch(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); + } + } -- Gitblit v1.9.3