From e70fb4b691d0411cb6de676256160255a153cada Mon Sep 17 00:00:00 2001 From: admin <15939171744@163.com> Date: 星期四, 18 四月 2024 09:45:19 +0800 Subject: [PATCH] - --- jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java | 2 jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java | 5 + jcdm-ui/src/views/main/om/productionOrde/index.vue | 12 +++ jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java | 19 +++- jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java | 25 ++++-- jcdm-ui/src/api/main/om/productionOrde/productionOrde.js | 7 + jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java | 6 + jcdm-ui/src/views/main/kb/stationTerminal/index.vue | 2 jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 111 ++++++++++++++++++++++----- 9 files changed, 152 insertions(+), 37 deletions(-) diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java index f9a4362..91899ee 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java @@ -152,12 +152,17 @@ @Override public AjaxResult updateResults(BsFormulaChildInfo bsFormulaChildInfo) { String result = ""; - BsFormulaChildInfo checkInfo = new BsFormulaChildInfo(); - checkInfo.setProcessesCode(bsFormulaChildInfo.getLocationCode()); - checkInfo.setProductCode(bsFormulaChildInfo.getProductCode()); -// checkInfo.setMaterialCode(bsFormulaChildInfo.getScanBarcode()); - bsFormulaChildInfo.setMaterialCode(bsFormulaChildInfo.getScanBarcode().substring(1,2)); - List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(checkInfo); +// BsFormulaChildInfo checkInfo = new BsFormulaChildInfo(); +// checkInfo.setProcessesCode(bsFormulaChildInfo.getLocationCode()); +// checkInfo.setProductCode(bsFormulaChildInfo.getProductCode()); +//// checkInfo.setMaterialCode(bsFormulaChildInfo.getScanBarcode()); +// bsFormulaChildInfo.setMaterialCode(bsFormulaChildInfo.getScanBarcode().substring(1,2)); +// List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(checkInfo); + List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>() + .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getLocationCode()) + .eq(BsFormulaChildInfo::getProductCode, bsFormulaChildInfo.getProductCode()) + .eq(BsFormulaChildInfo::getMaterialCode, bsFormulaChildInfo.getScanBarcode().substring(1, 2)) + ); if(bsFormulaChildInfos.size()>0){ String spareField4 = bsFormulaChildInfos.get(0).getSpareField4(); bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getScanBarcode()); @@ -202,7 +207,7 @@ .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getLocationCode()) .eq(BsFormulaChildInfo::getProductCode, bsFormulaChildInfo.getProductCode())); for (BsFormulaChildInfo info : list) { - info.setSpareField4(""); + info.setCollectData(""); info.setResults(""); bsFormulaChildInfoService.saveOrUpdate(info); } diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java index 3d81a98..99bb2db 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java +++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java @@ -65,4 +65,6 @@ AjaxResult upDownMove(OmProductionOrdeInfo omProductionOrdeInfo); void overrideSaveBatch(List<OmProductionOrdeInfo> omProductionOrdeInfoList); + + AjaxResult receivingWorkOrders(); } diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java index 93729ed..4c0adb0 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java +++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java @@ -9,6 +9,7 @@ import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo; import com.jcdm.main.om.productionOrde.mapper.OmProductionOrdeInfoMapper; import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; +import com.jcdm.main.restful.factoryMes.service.RestfulService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -144,4 +145,9 @@ return; } } + + @Override + public AjaxResult receivingWorkOrders() { + return null; + } } diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java index 5a6836c..d6985a7 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java @@ -4,6 +4,7 @@ import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService; import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService; import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService; +import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; import com.jcdm.main.plcserver.conf.OPCElement; import com.jcdm.main.plcserver.sub.OPCUaSubscription; import com.kangaroohy.milo.service.MiloService; @@ -33,6 +34,9 @@ @Autowired private IDaCollectionParamConfService daCollectionParamConfService; + @Autowired + private IOmProductionOrdeInfoService omProductionOrdeInfoService; + @Override public void run(ApplicationArguments args) throws Exception { @@ -40,7 +44,8 @@ miloService, daPassingStationCollectionService, collectionParamConfService, - daParamCollectionService); + daParamCollectionService, + omProductionOrdeInfoService); List<String> lists = getSubList(); miloService.subscriptionFromOpcUa(lists,opcUaSubscription); @@ -52,18 +57,20 @@ */ public List<String> getSubList(){ List<String> lists = new ArrayList<>(); -// lists.add(OPCElement.PACK_OP010_RecordSN);//璇锋眰涓嬪彂SN鍙� lists.add(OPCElement.PACK_OP230_RecordData);//璇锋眰璁板綍鏁版嵁 -// lists.add(OPCElement.PACK_OP240_RecordData);//璇锋眰璁板綍鏁版嵁. -// lists.add(OPCElement.PACK_OP240_AngleResult);//璇锋眰璁板綍鏁版嵁 -// lists.add(OPCElement.PACK_OP250_RecordData);//璇锋眰璁板綍鏁版嵁 -// lists.add(OPCElement.PACK_OP250_AngleResult);//璇锋眰璁板綍鏁版嵁 -// lists.add(OPCElement.PACK_OP380_RecordData);//璇锋眰璁板綍鏁版嵁 -// lists.add(OPCElement.PACK_OP380_AngleResult);//璇锋眰璁板綍鏁版嵁 + lists.add(OPCElement.PACK_OP240_RecordData);//璇锋眰璁板綍鏁版嵁. + lists.add(OPCElement.PACK_OP240_AngleResult);//璇锋眰璁板綍鏁版嵁 + lists.add(OPCElement.PACK_OP250_RecordData);//璇锋眰璁板綍鏁版嵁 + lists.add(OPCElement.PACK_OP250_AngleResult);//璇锋眰璁板綍鏁版嵁 + lists.add(OPCElement.PACK_OP380_RecordData);//璇锋眰璁板綍鏁版嵁 + lists.add(OPCElement.PACK_OP380_AngleResult);//璇锋眰璁板綍鏁版嵁 lists.add(OPCElement.PACK_OP300_RecordData);//璇锋眰璁板綍鏁版嵁 -// lists.add(OPCElement.PACK_OP300_AngleResult);//璇锋眰璁板綍鏁版嵁 + lists.add(OPCElement.PACK_OP300_AngleResult);//璇锋眰璁板綍鏁版嵁 lists.add(OPCElement.PACK_OP270_RecordData);//璇锋眰璁板綍鏁版嵁 lists.add(OPCElement.PACK_OP270_AngleResult);//璇锋眰璁板綍鏁版嵁 + lists.add(OPCElement.PACK_OP340_RecordData);//璇锋眰璁板綍鏁版嵁 +// lists.add(OPCElement.PACK_OP350_RecordData);//璇锋眰璁板綍鏁版嵁 +// lists.add(OPCElement.PACK_OP360_RecordData);//璇锋眰璁板綍鏁版嵁 // lists.add(OPCElement.PACK_OP370_RecordData);//璇锋眰璁板綍鏁版嵁 return lists; diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java index 170c33b..203a5e6 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java @@ -49,6 +49,10 @@ /** * OP270 */ + public static final String PACK_OP340_RecordData = "PACK.OP340.RecordData";//璇锋眰璁板綍鏁版嵁 + public static final String PACK_OP350_RecordData = "PACK.OP350.RecordData";//璇锋眰璁板綍鏁版嵁 + + public static final String PACK_OP360_RecordData = "PACK.OP360.RecordData";//璇锋眰璁板綍鏁版嵁 public static final String PACK_OP370_RecordData = "PACK.OP370.RecordData";//璇锋眰璁板綍鏁版嵁 @@ -57,4 +61,5 @@ + } \ No newline at end of file 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); + } + } diff --git a/jcdm-ui/src/api/main/om/productionOrde/productionOrde.js b/jcdm-ui/src/api/main/om/productionOrde/productionOrde.js index e9681b9..f7740b3 100644 --- a/jcdm-ui/src/api/main/om/productionOrde/productionOrde.js +++ b/jcdm-ui/src/api/main/om/productionOrde/productionOrde.js @@ -24,6 +24,13 @@ }) } +export function receivingWorkOrders() { + return request({ + url: '/om/productionOrde/receivingWorkOrders', + method: 'get', + }) +} + // 鏌ヨ鐢熶骇宸ュ崟璇︾粏 export function getProductionOrde(id) { return request({ diff --git a/jcdm-ui/src/views/main/kb/stationTerminal/index.vue b/jcdm-ui/src/views/main/kb/stationTerminal/index.vue index e92d432..b4cd486 100644 --- a/jcdm-ui/src/views/main/kb/stationTerminal/index.vue +++ b/jcdm-ui/src/views/main/kb/stationTerminal/index.vue @@ -369,7 +369,7 @@ }, content: '', activeName: 'first', - url: "ws://192.168.1.106:8080/websocket/message/", + url: "ws://192.168.1.101:8080/websocket/message/", message: "", text_content: "", ws: null, diff --git a/jcdm-ui/src/views/main/om/productionOrde/index.vue b/jcdm-ui/src/views/main/om/productionOrde/index.vue index b053002..506292e 100644 --- a/jcdm-ui/src/views/main/om/productionOrde/index.vue +++ b/jcdm-ui/src/views/main/om/productionOrde/index.vue @@ -120,6 +120,15 @@ v-hasPermi="['om:productionOrde:export']" >瀵煎嚭</el-button> </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + @click="receivingWorkOrders" + >鎺ユ敹</el-button> + </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> @@ -362,6 +371,9 @@ this.initWorkshop(); }, methods: { + receivingWorkOrders(){ + + }, /** 瀵煎叆鎸夐挳鎿嶄綔 */ handleImport() { this.upload.title = "璁㈠崟淇℃伅瀵煎叆"; -- Gitblit v1.9.3