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); } 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(); } 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; } } 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; 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 @@ } 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给我们一个pack码,拿pack码校验出型号 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); } } 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({ 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, 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 = "订单信息导入";