| | |
| | | import cn.hutool.json.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.jcdm.common.utils.StringUtils; |
| | | import com.jcdm.framework.websocket.WebSocketUsers; |
| | | import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; |
| | | import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService; |
| | |
| | | //区分pack型号的工位 |
| | | public List<String> packIdList = Arrays.asList("OP280","OP360","OP390","OP470"); |
| | | |
| | | //测试设备手动工位 |
| | | public List<String> testList = Arrays.asList("OP430-1","OP430-2","OP430-3","OP430-4","OP480-1","OP480-2","OP480-3","OP440"); |
| | | |
| | | |
| | | //空的 |
| | | public List<String> nullList = Arrays.asList("OP250","OP260"); |
| | |
| | | String tab = nodes[2];//标记 |
| | | String tabVlaue = value.toString();//地址值 |
| | | |
| | | //请求下发SN号 |
| | | if (("RecordSN").equals(tab) && "1".equals(tabVlaue)) { |
| | | //获取SN号方法 |
| | | String SNCode = getSNCode(); |
| | | |
| | | //下发SN |
| | | String SNCodeAddress = thoroughfare + "." + device + ".SNCode"; |
| | | miloService.writeToOpcChar(ReadWriteEntity.builder().identifier(SNCodeAddress).value(SNCode).build()); |
| | | //下发SN完成 |
| | | String recordSNDoneAddress = thoroughfare + "." + device + ".RecordSNDone"; |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(recordSNDoneAddress).value(1).build()); |
| | | } |
| | | //请求记录数据 |
| | | else if (("RecordData").equals(tab)) { |
| | | if (("RecordData").equals(tab)) { |
| | | String recordDataDoneValue = ""; |
| | | |
| | | if("1".equals(tabVlaue)){ |
| | |
| | | //自动工位 |
| | | if(automaticList.stream().anyMatch(s -> s.equals(device))){ |
| | | //plc给我们一个模组码,拿模组码校验出型号 |
| | | if(distinguishingModules.stream().anyMatch(s -> s.equals(device))) { |
| | | if(moduleCodeList.stream().anyMatch(s -> s.equals(device))) { |
| | | String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; |
| | | //读模组码 |
| | | // String moduleCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue().toString(); |
| | | // String productTye = thoroughfare + "." + device + ".ProductType"; |
| | | // 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"; |
| | | // |
| | | Object moduleCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); |
| | | |
| | | if(moduleCode!=null){ |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); |
| | | // |
| | | // |
| | | // //请求工单 |
| | | // } else { |
| | | // miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); |
| | | // } |
| | | }else { |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); |
| | | } |
| | | }else { |
| | | if(agvId.stream().anyMatch(s -> s.equals(device))){ |
| | | String agvId = miloService.readFromOpcUa(thoroughfare + "." + device + ".AGVID").getValue().toString(); |
| | | String PACKCode = thoroughfare + "." + device + ".MPACKCode"; |
| | | if (null != agvId) { |
| | | OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getTrolleyYard, agvId)); |
| | | String packId = one.getProductNum(); |
| | | miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(PACKCode).value(packId).build()); |
| | | } else { |
| | | Object agvIdObject = miloService.readFromOpcUa(thoroughfare + "." + device + ".AGVID").getValue(); |
| | | //agvId 小车码是否为空 |
| | | if(agvIdObject!=null){ |
| | | String PACKCode = thoroughfare + "." + device + ".MPACKCode"; |
| | | OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getTrolleyYard, agvIdObject.toString())); |
| | | //小车码查找工单是否为空 |
| | | if(one!=null){ |
| | | String packId = one.getProductNum(); |
| | | miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(PACKCode).value(packId).build()); |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); |
| | | }else { |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); |
| | | } |
| | | }else { |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); |
| | | } |
| | | } |
| | | //pack 如果区分型号的话就要处理 |
| | | //记录数据完成 |
| | | String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; |
| | | |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); |
| | | }else { |
| | | String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; |
| | | Object packCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + ".PACKCode").getValue(); |
| | | if(packCodeObject!=null){ |
| | | //pack 如果区分型号的话就要处理 |
| | | //记录数据完成 |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); |
| | | }else { |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); |
| | | } |
| | | |
| | | } |
| | | } |
| | | }else { |
| | | //手动工位处理逻辑 |
| | | // if(automaticList.stream().noneMatch(s -> s.equals(device))){ |
| | | //给前端发工件到位信号 |
| | | WebSocketUsers.sendMessageToUserByText(map.get(device), "IN"); |
| | | // } |
| | | //校验合格不合格如果合格可以进站 |
| | | WebSocketUsers.sendMessageToUserByText(map.get(device), "IN"); |
| | | String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; |
| | | |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); |
| | |
| | | WebSocketUsers.sendMessageToUserByText(map.get(str), "END"); |
| | | }else { |
| | | WebSocketUsers.sendMessageToUserByText(map.get(device), "END"); |
| | | } |
| | | if(testList.stream().anyMatch(s -> s.equals(device))){ |
| | | String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; |
| | | miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(21).build()); |
| | | } |
| | | } |
| | | }else { |
| | |
| | | ParamCollection.setParamCode(list.get(i).getCollectParameterId()); |
| | | ParamCollection.setLocationCode(device); |
| | | if(tt.contains("Time")){ |
| | | String str = TimeUtil.getTimestamp(TimeUtil.stringProcessing(tt)); |
| | | ParamCollection.setParamValue(str); |
| | | // String str = TimeUtil.getTimestamp(TimeUtil.stringProcessing(tt)); |
| | | // ParamCollection.setParamValue(str); |
| | | ParamCollection.setParamValue(TimeUtil.getYyyyDdMm(TimeUtil.stringProcessing(tt))); |
| | | }else { |
| | | ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString()); |
| | | } |
| | | ParamCollection.setSfcCode(packCode); |
| | | if(device.contains("OP360")){ |
| | | String node = nodeIdList.get(i); |
| | | Object value = miloService.readFromOpcUa("PACK.OP360.ModuleSNCode"+node.charAt(node.length()-1)).getValue(); |
| | | if(value!=null){ |
| | | ParamCollection.setModuleCode(value.toString()); |
| | | } |
| | | } |
| | | ParamCollection.setParamName(list.get(i).getCollectParameterName()); |
| | | ParamCollection.setParamUpper(list.get(i).getParamUpper()); |
| | | ParamCollection.setParamLower(list.get(i).getParamLower()); |