billion-main/src/main/java/com/billion/main/da/service/impl/DaMaterialCollectionServiceImpl.java
@@ -1,6 +1,7 @@ package com.billion.main.da.service.impl; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -71,15 +72,16 @@ public void insertDaMaterialCollection(DaMaterialCollection daMaterialCollection) { String url = "http://172.40.161.71:8890/Interaction/CollectMT"; CollectMT collectMT = new CollectMT(); DaMaterialCollection daMaterialCollection1 = new DaMaterialCollection(); BsBomChildInfo bsBomChildInfo = new BsBomChildInfo(); OmOrderScheduling omOrderScheduling = new OmOrderScheduling(); daMaterialCollection1.setSfcCode(daMaterialCollection.getSfcCode()); daMaterialCollection1.setLocationCode(daMaterialCollection.getLocationCode()); daMaterialCollection1.setParamValue(daMaterialCollection.getParamValue()); daMaterialCollection1.setCollectTime(daMaterialCollection.getCollectTime()); omOrderScheduling.setSfcCode(daMaterialCollection.getSfcCode()); if( Constants.PLC1.contains(daMaterialCollection.getLocationCode()) || Constants.C005.equals(daMaterialCollection.getLocationCode()) || @@ -94,26 +96,20 @@ {omOrderScheduling.setRemarks("Pre");} List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling); String OrderNumber = omOrderSchedulingList.get(0).getWorkOrderNo(); //要改!!!! if(Objects.equals(daMaterialCollection.getLocationCode(), "OP130") || Objects.equals(daMaterialCollection.getLocationCode(), "OP020")){ daMaterialCollection1.setMaterialCode("0"); daMaterialCollection1.setMaterialName("0"); collectMT.setMaterial1("0"); }else{ // bsBomChildInfo.setLocationCode(daMaterialCollection.getLocationCode()); // bsBomChildInfo.setBomCode(OrderNumber); // List<BsBomChildInfo> bsBomChildInfoList = bsBomChildInfoService.selectBsBomChildInfoList(bsBomChildInfo); // String MaterialCode = bsBomChildInfoList.get(0).getMaterialCode(); // String MaterialName = bsBomChildInfoList.get(0).getMaterialName(); // daMaterialCollection1.setMaterialCode(MaterialCode); // daMaterialCollection1.setMaterialName(MaterialName); // collectMT.setMaterial1(MaterialName); daMaterialCollection1.setMaterialCode("0"); daMaterialCollection1.setMaterialName("0"); collectMT.setMaterial1("0"); } bsBomChildInfo.setLocationCode(daMaterialCollection.getLocationCode()); bsBomChildInfo.setBomCode(OrderNumber); String[] parts = daMaterialCollection.getParamValue().split("#"); String targetValue = parts[1]; // 取第二个元素(索引1) bsBomChildInfo.setMaterialCode(targetValue); List<BsBomChildInfo> bsBomChildInfoList = bsBomChildInfoService.selectBsBomChildInfoList(bsBomChildInfo); String MaterialCode = bsBomChildInfoList.get(0).getMaterialCode(); String MaterialName = bsBomChildInfoList.get(0).getMaterialName(); daMaterialCollection1.setMaterialCode(MaterialCode); daMaterialCollection1.setMaterialName(MaterialName); this.save(daMaterialCollection1); collectMT.setMaterial1(MaterialName); collectMT.setOrderNumber(OrderNumber); collectMT.setEngineNumber(daMaterialCollection.getSfcCode()); collectMT.setStationName(daMaterialCollection.getLocationCode()); @@ -131,13 +127,53 @@ } // @Override // public void insertDaMaterialCollectionOP020OP130(DaMaterialCollection DaMaterialCollection) // { // //// this.save(daMaterialCollection); // } // @Override public void plusSave(DaMaterialCollection daMaterialCollection) { String url = "http://172.40.161.71:8890/Interaction/CollectMT"; CollectMT collectMT = new CollectMT(); DaMaterialCollection daMaterialCollection1 = new DaMaterialCollection(); BsBomChildInfo bsBomChildInfo = new BsBomChildInfo(); OmOrderScheduling omOrderScheduling = new OmOrderScheduling(); daMaterialCollection1.setSfcCode(daMaterialCollection.getSfcCode()); daMaterialCollection1.setLocationCode(daMaterialCollection.getLocationCode()); daMaterialCollection1.setParamValue(daMaterialCollection.getParamValue()); daMaterialCollection1.setCollectTime(daMaterialCollection.getCollectTime()); omOrderScheduling.setSfcCode(daMaterialCollection.getSfcCode()); omOrderScheduling.setSfcCode(daMaterialCollection.getSfcCode()); if( Constants.PLC1.contains(daMaterialCollection.getLocationCode()) || Constants.C005.equals(daMaterialCollection.getLocationCode()) || Constants.C060.equals(daMaterialCollection.getLocationCode()) ) {omOrderScheduling.setRemarks("Head");} else if( Constants.PLC2.contains(daMaterialCollection.getLocationCode()) || Constants.OP005.equals(daMaterialCollection.getLocationCode()) || Constants.OP310.equals(daMaterialCollection.getLocationCode())) {omOrderScheduling.setRemarks("Body");} else if(Constants.P010.equals(daMaterialCollection.getLocationCode())) {omOrderScheduling.setRemarks("Pre");} List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling); String OrderNumber = omOrderSchedulingList.get(0).getWorkOrderNo(); String[] parts = daMaterialCollection.getParamValue().split("#"); String targetValue = parts[1]; // 取第二个元素(索引1) daMaterialCollection1.setMaterialCode(targetValue); daMaterialCollection1.setMaterialName(daMaterialCollection.getParamName()); this.save(daMaterialCollection1); collectMT.setMaterial1(daMaterialCollection.getMaterialName()); collectMT.setOrderNumber(OrderNumber); collectMT.setEngineNumber(daMaterialCollection.getSfcCode()); collectMT.setStationName(daMaterialCollection.getLocationCode()); collectMT.setPartsNumber(daMaterialCollection.getParamValue()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); collectMT.setInsertTime(sdf.format(daMaterialCollection.getCollectTime())); try { HttpResponse response = HttpRequest.post(url).body(JSONUtil.toJsonStr(collectMT)).execute(); log.info("推送成功,响应报文: {}", response); } catch (Exception e) { // 记录日志 log.error("推送失败"); } } /** * 修改物料采集 @@ -175,8 +211,4 @@ return daMaterialCollectionMapper.deleteDaMaterialCollectionById(id); } @Override public void plusSave(DaMaterialCollection daMaterialCollection) { this.save(daMaterialCollection); } } billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -132,7 +132,8 @@ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SerialNumber").value(SerialNumber).build()); } //9L发动机涂胶轨迹下发 else if(Constants.OP080.equals(device) && Constants.PLC_4.equals(thoroughfare)){ if(Constants.OP080.equals(device) ){ if(Constants.PLC_4.equals(thoroughfare)){ // 1. 初始化工单对象并查询工单信息 String workOrderNo = resultList.get(0).getWorkOrderNo(); OmProductionOrderInfo queryOrder = new OmProductionOrderInfo(); @@ -168,6 +169,8 @@ } } } } } String getWorkOrderNo = resultList.get(0).getWorkOrderNo(); BsBomChildInfo bsbomChildInfo= new BsBomChildInfo(); @@ -282,56 +285,56 @@ if (Objects.equals(nowQty, getPreOrder2.getPlanQty().toString())){ omProductionOrderInfoService.updatePreStatus2(); } // }else if (Constants.OP020.equals(device)){ // final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // // 遍历 MaterialCode35 到 MaterialCode40 共6组数据 // for (int i = 35; i <= 40; i++) { // 修改循环范围 // // 构建OPC UA节点地址(例如:PLC1.OP020.MaterialCode35) // String nodeId = "PLC2." + device + ".MaterialCode" + i; // // 创建采集对象 // DaMaterialCollection materialCollection = new DaMaterialCollection(); // materialCollection.setSfcCode(SFCCode.toString()); // materialCollection.setLocationCode(device); // // 设置参数名称(活塞1到活塞6) // int pistonNumber = i - 34; // 35→1, 36→2...40→6 // materialCollection.setParamName("活塞" + pistonNumber); // // 通过OPC UA读取参数值 // ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId); // if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), " ")) { // materialCollection.setParamValue(dataRead.getValue().toString()); // Date collectTime = new Date(); // ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间 // collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString()))); // materialCollection.setCollectTime( collectTime); // // 插入数据库 // daMaterialCollectionService.insertDaMaterialCollection(materialCollection); // } else { // log.info("活塞号为空: {}",materialCollection.getParamName() ); // } // } // }else if (Constants.OP130.equals(device)){ // final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // // 遍历 MaterialCode35 到 MaterialCode40 共6组数据 // String nodeId = "PLC3." + device + ".MaterialCode35" ; // // 创建采集对象 // DaMaterialCollection materialCollection = new DaMaterialCollection(); // materialCollection.setSfcCode(SFCCode.toString()); // materialCollection.setLocationCode(device); // materialCollection.setParamName("缸盖码"); // // 通过OPC UA读取参数值 // ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId); // if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), " ")) { // materialCollection.setParamValue(dataRead.getValue().toString()); // Date collectTime = new Date(); // ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间 // collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString()))); // materialCollection.setCollectTime( collectTime); // // 插入数据库 // daMaterialCollectionService.insertDaMaterialCollection(materialCollection); // } else { // log.info("缸盖码为空: {}",materialCollection.getParamName() ); // } } else if (Constants.OP020.equals(device)){ final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 遍历 MaterialCode35 到 MaterialCode40 共6组数据 for (int i = 35; i <= 40; i++) { // 修改循环范围 // 构建OPC UA节点地址(例如:PLC1.OP020.MaterialCode35) String nodeId = "PLC2." + device + ".MaterialCode" + i; // 创建采集对象 DaMaterialCollection materialCollection = new DaMaterialCollection(); materialCollection.setSfcCode(SFCCode.toString()); materialCollection.setLocationCode(device); // 设置参数名称(活塞1到活塞6) int pistonNumber = i - 34; // 35→1, 36→2...40→6 materialCollection.setParamName("活塞" + pistonNumber); // 通过OPC UA读取参数值 ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId); if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), " ")) { materialCollection.setParamValue(dataRead.getValue().toString()); Date collectTime = new Date(); ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间 collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString()))); materialCollection.setCollectTime( collectTime); // 插入数据库 daMaterialCollectionService.plusSave(materialCollection); } else { log.info("活塞号为空: {}",materialCollection.getParamName() ); } } }else if (Constants.OP130.equals(device)){ final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 遍历 MaterialCode35 到 MaterialCode40 共6组数据 String nodeId = "PLC3." + device + ".MaterialCode35" ; // 创建采集对象 DaMaterialCollection materialCollection = new DaMaterialCollection(); materialCollection.setSfcCode(SFCCode.toString()); materialCollection.setLocationCode(device); materialCollection.setParamName("缸盖码"); // 通过OPC UA读取参数值 ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId); if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), " ")) { materialCollection.setParamValue(dataRead.getValue().toString()); Date collectTime = new Date(); ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间 collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString()))); materialCollection.setCollectTime( collectTime); // 插入数据库 daMaterialCollectionService.plusSave(materialCollection); } else { log.info("缸盖码为空: {}",materialCollection.getParamName() ); } } //出站保存 DaStationCollection daStationCollection = new DaStationCollection(); @@ -355,7 +358,6 @@ daCollectionParamConf1.setDescriptive("1"); List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1); for (DaCollectionParamConf conf : daCollectionParamConfList1) { String index = String.valueOf(daCollectionParamConfList1.indexOf(conf)); String gatherAddress = conf.getGatherAddress(); String valueObj = null; ReadWriteEntity entity = miloService.readFromOpcUa(gatherAddress); @@ -365,7 +367,7 @@ valueObj = value.toString(); // 最终赋值 if (!Objects.equals(valueObj, " ")) { DaMaterialCollection materialCollection = new DaMaterialCollection(); materialCollection.setRemark(index); materialCollection.setSfcCode(SFCCode.toString()); materialCollection.setLocationCode(device); materialCollection.setParamName(conf.getParameterSetName()); billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml
@@ -33,7 +33,10 @@ </resultMap> <sql id="selectOmProductionOrderInfoVo"> select id,body_status,head_status,pre_status,body_qty,head_qty,pre_qty,work_order_no, sales_order_code, product_code, line_code, plan_qty, plan_start_time, plan_end_time, order_status, create_time, update_time, create_by, update_by, remarks, del_flag from om_production_order_info select id,body_status,head_status,pre_status,body_qty,head_qty,pre_qty, work_order_no, sales_order_code, product_code, line_code, plan_qty, plan_start_time, plan_end_time, order_status, create_time, update_time, create_by, update_by, remarks, del_flag,engine_type,engine_name,flag from om_production_order_info </sql> <!-- 查询 order_status 为 1 且 plan_start_time 最早的一条记录 --> @@ -128,6 +131,7 @@ <if test="salesOrderCode != null and salesOrderCode != ''"> and sales_order_code = #{salesOrderCode}</if> <if test="productCode != null and productCode != ''"> and product_code = #{productCode}</if> <if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if> <if test="engineName != null and engineName != ''"> and engine_name = #{engineName}</if> and del_flag = 0 </where> </select>