From 6d313a4a6f9f9d7ea65ec50ab0d4491e595edb97 Mon Sep 17 00:00:00 2001 From: admin <15939171744@163.com> Date: 星期二, 15 十月 2024 09:47:26 +0800 Subject: [PATCH] -打印bug修改 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 565 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 472 insertions(+), 93 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 2434042..da61a5e 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 @@ -1,111 +1,248 @@ package com.jcdm.main.plcserver.sub; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jcdm.common.utils.StringUtils; +import com.jcdm.framework.websocket.WebSocketUsers; +import com.jcdm.main.constant.Constants; import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService; import com.jcdm.main.da.paramCollection.domain.DaParamCollection; 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.plcserver.conf.OPCElement; +import com.jcdm.main.da.testDeviceInterface.service.IDaTestDeviceInterfaceService; +import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo; +import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; +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; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import javax.websocket.Session; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; - +@Slf4j @Component public class OPCUaSubscription implements SubscriptionCallback { + private static final Logger logger = LoggerFactory.getLogger("sys-user"); + + public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //鏂拌嚜鍔ㄥ伐绔� + public List<String> automaticList = Arrays.asList("POP270", "POP281", "POP283", "POP285", "POP286", "POP290","OP365","POP300", "POP320", "POP400"); + + //閲囬泦妯$粍宸ヤ綅 ModuleCode + public List<String> moduleCodeList = Arrays.asList("POP281","POP282","POP283","POP285","OP365", "POP286", "POP284"); + + //鍖哄垎灏忚溅鐮� + public List<String> agvId = Arrays.asList("POP290", "POP320", "POP400","POP270"); + + //娴嬭瘯璁惧鎵嬪姩宸ヤ綅 + public List<String> testList = Arrays.asList("POP360-1","POP360-2","POP360-3","POP360-4","POP410-1","POP410-2","POP410-3","POP370","POP420-1","POP420-2","POP420-3","POP420-4","POP420-5","POP420-6","POP282"); + + //绌虹殑 + public List<String> nullList = Arrays.asList("OP250","OP260"); + +// //鏂拌嚜鍔ㄥ伐绔� +// public List<String> automaticList = Arrays.asList("OP280","OP310A","OP310B", "OP300A","OP300B", "OP320A","OP320B", "OP340A","OP340B", "OP350A","OP350B", "OP360","OP365","OP370", "OP390", "OP470"); +// +// //閲囬泦妯$粍宸ヤ綅 ModuleCode +// public List<String> moduleCodeList = Arrays.asList("OP300A","OP310A","OP310B","OP300B","OP320A","OP320B","OP340A","OP340B","OP365", "OP350A", "OP350B", "OP330"); +// +// //鍖哄垎灏忚溅鐮� +// public List<String> agvId = Arrays.asList("OP360", "OP390", "OP470","OP280"); +// +// //娴嬭瘯璁惧鎵嬪姩宸ヤ綅 +// 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"); + + public static MiloService miloService; + + Map<String, Session> map = WebSocketUsers.getUsers(); public IDaPassingStationCollectionService daPassingStationCollectionService; - public IDaCollectionParamConfService collectionParamConfService; + public static IDaCollectionParamConfService collectionParamConfService; - public IDaParamCollectionService daParamCollectionService; + public static IDaParamCollectionService daParamCollectionService; + + public static IOmProductionOrdeInfoService omProductionOrdeInfoService; + + private static IDaTestDeviceInterfaceService daTestDeviceInterfaceService; + public OPCUaSubscription(MiloService miloService, IDaPassingStationCollectionService daPassingStationCollectionService, IDaCollectionParamConfService collectionParamConfService, - IDaParamCollectionService daParamCollectionService) { + IDaParamCollectionService daParamCollectionService, + IOmProductionOrdeInfoService omProductionOrdeInfoService, + IDaTestDeviceInterfaceService daTestDeviceInterfaceService) { OPCUaSubscription.miloService = miloService; this.daPassingStationCollectionService = daPassingStationCollectionService; - this.collectionParamConfService = collectionParamConfService; - this.daParamCollectionService = daParamCollectionService; - + OPCUaSubscription.collectionParamConfService = collectionParamConfService; + OPCUaSubscription.daParamCollectionService = daParamCollectionService; + OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService; + OPCUaSubscription.daTestDeviceInterfaceService = daTestDeviceInterfaceService; } @Override public void onSubscribe(String identifier, Object value) { + logger.info("鍦板潃锛�"+identifier+"鍊硷細"+value); try { - if(null != value) { + if(null != value && Integer.valueOf(value.toString())!= 0) { String[] nodes = identifier.split("[.]"); String thoroughfare = nodes[0];//閫氶亾 String device = nodes[1];//璁惧 String tab = nodes[2];//鏍囪 String tabVlaue = value.toString();//鍦板潃鍊� - //璇锋眰涓嬪彂SN鍙� - if (("RecordSN").equals(tab) && "1".equals(tabVlaue)) { - //鑾峰彇SN鍙锋柟娉� - String SNCode = getSNCode(); + CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + subHandle(thoroughfare,device,tab,tabVlaue); + }); + } + } catch (Exception e) { + logger.info("璁㈤槄鏂规硶鎶ラ敊:{}"+e.getMessage()); + logger.error("璁㈤槄鏂规硶鎶ラ敊",e); + } + } - //涓嬪彂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)) { - String recordDataDoneValue = ""; + public void subHandle(String thoroughfare,String device,String tab,String tabVlaue){ + try { + String prefix = thoroughfare + "." + device + "."; + if (("RecordData").equals(tab)) { + String recordDataDoneValue = ""; - if("1".equals(tabVlaue)){ - recordDataDoneValue = "11"; + if("1".equals(tabVlaue)){ + //鑷姩宸ヤ綅 + if(automaticList.stream().anyMatch(s -> s.equals(device))){ + //plc缁欐垜浠竴涓ā缁勭爜锛屾嬁妯$粍鐮佹牎楠屽嚭鍨嬪彿 + if(moduleCodeList.stream().anyMatch(s -> s.equals(device))) { + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + //璇绘ā缁勭爜 + Object moduleCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); + if(device.equals("OP365")){ +// Object moduleCodeA = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCodeA").getValue(); +// Object moduleCodeB = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCodeB").getValue(); +// if(moduleCodeA!=null && moduleCodeB!=null){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); +// }else { +// miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); +// } + }else { + if(moduleCode!=null){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); + }else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); + } + } + }else { + if(agvId.stream().anyMatch(s -> s.equals(device))){ + 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(); + String workOrderNo = one.getWorkOrderNo(); + if(!one.getSoftwareVersionCode().equals("") &&one.getSoftwareVersionCode()!=null){ + Integer packModel = Integer.valueOf(one.getSoftwareVersionCode()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(prefix + "MProductType").value(packModel).build()); + } + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(PACKCode).value(packId).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(prefix + "MWorkOrderNumber").value(workOrderNo).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()); + } - //杩涚珯淇濆瓨鏁版嵁 -// inSaveDate(thoroughfare,device) - //璁板綍鏁版嵁瀹屾垚 + }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 { + //鎵嬪姩宸ヤ綅澶勭悊閫昏緫 + WebSocketUsers.sendMessageToUserByText(map.get(device), "IN"); String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(recordDataDoneValue).build()); - - //缁欏墠绔彂宸ヤ欢鍒颁綅淇″彿 - - //璇锋眰宸ュ崟 - - - - - }else if("2".equals(tabVlaue)){ - - //鍑虹珯淇濆瓨鏁版嵁 - recordDataDoneValue = outSaveDate(thoroughfare,device); - //璁板綍鏁版嵁瀹屾垚 - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(recordDataDoneValue).build()); - }else{ - System.out.println("^"); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); } + }else if("2".equals(tabVlaue)){ + if(automaticList.stream().anyMatch(s -> s.equals(device))){ + //鑷姩宸ヤ綅 + //鍑虹珯淇濆瓨鏁版嵁 + outSaveDate(thoroughfare,device); + //璁板綍鏁版嵁瀹屾垚 + /*String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf(recordDataDoneValue)).build());*/ + }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 { + System.out.println("^"); } } - } catch (Exception e) { + //淇濆瓨鎷х揣鏁版嵁 + else if (("TighteningFrequency").equals(tab)) { + if(!"0".equals(tabVlaue)){ + List<String> list = new ArrayList<>(); + String[] suffixes = {"Torque", "Angle", "TorqueResult", "AngleResult"}; + for (String suffix : suffixes) { + String string = thoroughfare + "." + device + "." + suffix; + list.add(string); + } + List<ReadWriteEntity> list1 = miloService.readFromOpcUa(list); + List<Object> collect = list1.stream().map(ReadWriteEntity::getValue).collect(Collectors.toList()); + String joinedString = String.join(",", collect.toString()); + WebSocketUsers.sendMessageToUserByText(map.get(device), TightenTheConversionOkNg(joinedString)); + logger.info("璇诲彇鍒板伐浣峽}鐨凷caner鏁版嵁锛歿}",device,TightenTheConversionOkNg(joinedString)); + } + } + }catch (Exception e){ + logger.error("璁㈤槄鏂规硶鎶ラ敊",e); } } + @@ -117,54 +254,105 @@ return SNCode; } - /** * 鍑虹珯淇濆瓨鏁版嵁 */ - public String outSaveDate(String thoroughfare,String device) { + public void outSaveDate(String thoroughfare,String device) { + String snCode = ""; String result = ""; - try { - //璇诲彇SNCode - String SNCodeAddress = thoroughfare + "." + device + ".SNCode"; - Object SNCodeObject = miloService.readFromOpcUa(SNCodeAddress).getValue(); - if(null == SNCodeObject || "".equals(SNCodeObject)){ - result = "22"; - }else{ - String SNCode = SNCodeObject.toString(); - //1銆佹洿鏂板伐鍗曚俊鎭� - //updateOrderInfo(); - //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� - saveStationInfo(SNCode,thoroughfare,device); - //3銆佷繚瀛樺弬鏁伴噰闆嗘暟鎹� - SaveParamData(SNCode,thoroughfare,device); + String read = thoroughfare + "." + device + "."; - result = "21"; + try { + if(nullList.stream().noneMatch(s -> s.equals(device))){//鍒犻櫎鈥︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�� + if(moduleCodeList.stream().anyMatch(s -> s.equals(device))){ + read = read + "ModuleCode"; + }else { + read = read + "PACKCode"; + } + } + if(device.equals("OP365")){ + try { + saveStationInfo365(thoroughfare,device); + }catch (Exception e){ + e.printStackTrace(); + } + }else { + snCode = miloService.readFromOpcUa(read).getValue().toString(); + + if(null == snCode || "".equals(snCode)){ + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf("22")).build()); + }else{ + + String workOrderNo = ""; + String productCode = ""; + //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� + 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銆佷繚瀛樺弬鏁伴噰闆嗘暟鎹� + List<DaParamCollection> daParamCollectionList = SaveParamData(snCode,thoroughfare,device,workOrderNo,productCode); + + //濡傛灉鏄湯灏惧伐绔欒鎶ュ伐 + if(device.equals("POP430")){ + RestfulService.getWorkReportResultFeedback(snCode,device,format.format(new Date())); + //1銆佹洿鏂板伐鍗曚俊鎭� + updateOrderInfo(snCode); + } + + try{ + daParamCollectionService.automaticWorkstationPushGeelycvMesFeedback(snCode,device,daParamCollectionList); + }catch (Exception e){ + } + } } - }catch (Exception e) { - + logger.error("鍑虹珯淇濆瓨鏁版嵁寮傚父锛�"+e); } - return result; } /** * 淇濆瓨杩囩珯閲囬泦 */ - public void saveStationInfo(String SNCode,String thoroughfare,String device){ + public void saveStationInfo(String packCode,String thoroughfare,String device,String workOrderNo,String productCode) throws Exception { + logger.info("杩涘叆宸ヤ綅{}-鏂规硶saveStationInfo",device); + SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); + sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // CST閫氬父琛ㄧず涓浗鏍囧噯鏃堕棿锛屽嵆涓滃叓鍖� + String prefix = thoroughfare+"."+device+"."; + String startTime = miloService.readFromOpcUa(prefix + "StartTime").getValue().toString(); + String stopTime = miloService.readFromOpcUa(prefix + "StopTime").getValue().toString(); + String stationStatus = miloService.readFromOpcUa(prefix + "StationStatus").getValue().toString(); + DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection(); - daPassingStationCollection.setSfcCode(SNCode); - //daPassingStationCollection.setInboundTime();//鍏ョ珯鏃堕棿 - daPassingStationCollection.setOutboundTime(new Date());//鍑虹珯鏃堕棿 - //daPassingStationCollection.setOutRsSign();//鍑虹珯鏄惁鍚堟牸 + daPassingStationCollection.setSfcCode(packCode); + daPassingStationCollection.setWorkOrderNo(workOrderNo); + daPassingStationCollection.setProductCode(productCode); + daPassingStationCollection.setLocationCode(device); + String strt = TimeUtil.stringProcessing(startTime); + String end = TimeUtil.stringProcessing(stopTime); + daPassingStationCollection.setInboundTime(format.parse(TimeUtil.test(strt)));//鍏ョ珯鏃堕棿 + daPassingStationCollection.setOutboundTime(format.parse(TimeUtil.test(end)));//鍑虹珯鏃堕棿 + daPassingStationCollection.setOutRsSign(stationStatus);//鍑虹珯鏄惁鍚堟牸 daPassingStationCollectionService.insertDaPassingStationCollection(daPassingStationCollection); + logger.info("缁撴潫宸ヤ綅{}-鏂规硶saveStationInfo",device); } - public void SaveParamData(String SNCode,String thoroughfare,String device) throws Exception { + public static List<DaParamCollection> SaveParamData(String packCode,String thoroughfare,String device,String workOrderNo,String productType) throws Exception { + logger.info("杩涘叆宸ヤ綅{}-鏂规硶SaveParamData",device); List<DaCollectionParamConf> list; DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); daCollectionParamConf.setGatherAddress(thoroughfare+ "." + device); list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); + List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); List<String> nodeIdList = list.stream().map(info -> { String nodeid = info.getGatherAddress(); @@ -173,26 +361,217 @@ if(!nodeIdList.isEmpty()){ List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(nodeIdList); - List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); for(int i=0;i<nodeIdList.size();i++){ - DaParamCollection ParamCollection = new DaParamCollection(); - if(!readWriteEntityList.get(i).getValue().toString().equals("0.0")){ - ParamCollection.setParamCode(readWriteEntityList.get(i).getIdentifier().toString().split("[.]")[2]); - ParamCollection.setLocationCode(device); - ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString()); - ParamCollection.setSfcCode(SNCode); - ParamCollection.setParamName(list.get(i).getCollectParameterName()); - ParamCollection.setParamUpper(list.get(i).getParamUpper()); - ParamCollection.setParamLower(list.get(i).getParamLower()); - ParamCollection.setUnit(list.get(i).getCollectParameterUnit()); - //ParamCollection.setState("鍚堟牸"); - ParamCollection.setType(list.get(i).getCollectParameterType()); - ParamCollection.setCollectionTime(new Date()); - daParamCollectionlist.add(ParamCollection); + if(readWriteEntityList.get(i).getValue() == null){ + readWriteEntityList.get(i).setValue(" "); } + String paramValue = readWriteEntityList.get(i).getValue().toString(); + DaParamCollection ParamCollection = new DaParamCollection(); + ParamCollection.setParamCode(list.get(i).getCollectParameterId()); + ParamCollection.setLocationCode(device); + if(paramValue.contains("Time")){ + ParamCollection.setParamValue(TimeUtil.test(TimeUtil.stringProcessing(paramValue))); + }else { + ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString()); + } + ParamCollection.setSfcCode(packCode); + if(device.contains("POP290")){ + String node = nodeIdList.get(i); + Object value = miloService.readFromOpcUa("PACK.POP290.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()); + ParamCollection.setUnit(list.get(i).getCollectParameterUnit()); + ParamCollection.setType(list.get(i).getCollectParameterType()); + ParamCollection.setCollectionTime(new Date()); + ParamCollection.setWorkOrderNo(workOrderNo); + ParamCollection.setProductCode(productType); + daParamCollectionlist.add(ParamCollection); } - //daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); } + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf("21")).build()); + logger.info("缁欏伐浣峽}鍐欎簡21",device); + daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); + List<DaParamCollection> baseDataList = addBaseData(workOrderNo,productType,device,packCode); + for (int i = 0; i < baseDataList.size(); i++){ + daParamCollectionlist.add(baseDataList.get(i)); + } + logger.info("缁撴潫宸ヤ綅{}-鏂规硶SaveParamData",device); + return daParamCollectionlist; + } + + public static List<DaParamCollection> addBaseData(String workOrderNo,String productCode,String locationCode,String packCode){ + Map<String, String> map = new HashMap<>(); + map.put("GC", "鍗楁禂宸ュ巶"); + map.put("CXBH", "Pack绾�"); + map.put("SBBH", "璁惧001"); + map.put("YGBH", "鍛樺伐001"); + List<DaParamCollection> confList = new ArrayList<>(); + map.forEach((key, value) -> { + List<DaCollectionParamConf> daCollectionParamConfs = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() + .eq(DaCollectionParamConf::getProcessesCode,locationCode) + .like(DaCollectionParamConf::getCollectParameterId,key)); + DaParamCollection saveData = new DaParamCollection(); + saveData.setWorkOrderNo(workOrderNo); + saveData.setProductCode(productCode); + saveData.setLocationCode(locationCode); + saveData.setSfcCode(packCode); + saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId()); + saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName()); + saveData.setCollectionTime(new Date()); + saveData.setParamValue(value); + confList.add(saveData); + }); + daParamCollectionService.insertBatch(confList); + return 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); + } + + public static void avgFunction(){ } + + public static String TightenTheConversionOkNg(String param){ + // 鍘婚櫎棣栧熬鐨勬柟鎷彿锛岀劧鍚庢寜鐓ч�楀彿鍒嗗壊瀛楃涓� + String[] parts = param.substring(1, param.length() - 1).split(","); + + // 鍒涘缓涓�涓柊鐨凷tringBuilder鏉ユ瀯寤烘浛鎹㈠悗鐨勫瓧绗︿覆 + StringBuilder sb = new StringBuilder(); + sb.append('['); // 娣诲姞宸︽柟鎷彿 + + for (int i = 0; i < parts.length; i++) { + String part = parts[i].trim(); // 鍘婚櫎鍙兘鐨勭┖鏍� + float value; + try { + value = Float.parseFloat(part); // 灏濊瘯灏嗗瓧绗︿覆杞崲涓烘诞鐐规暟 + String replacement; + if(i<2){ + replacement = part; + }else{ + if (value == 1f) { + replacement = "OK"; + } else{ + replacement = "NG"; + } + } + /* if (value == 1f) { + replacement = "OK"; + } else if (value == 2f) { + replacement = "NG"; + } else { + replacement = part; // 濡傛灉涓嶆槸1鎴�2锛屽垯淇濇寔涓嶅彉 + }*/ + sb.append(replacement); + if (i < parts.length - 1) { + sb.append(','); // 娣诲姞閫楀彿锛堥櫎浜嗘渶鍚庝竴涓厓绱狅級 + } + } catch (NumberFormatException e) { + // 濡傛灉杞崲澶辫触锛屽垯淇濇寔鍘熸牱锛堟垨杩涜鍏朵粬閿欒澶勭悊锛� + sb.append(part); + if (i < parts.length - 1) { + sb.append(','); + } + } + } + sb.append(']'); // 娣诲姞鍙虫柟鎷彿 + return sb.toString(); + } + + + /** + * 鏍¢獙鏄惁瀛樺湪NG + * @param packCode sfcCode + * @return boolean + */ + public boolean checkIsNG(String packCode,String modelCode){ + List<DaPassingStationCollection> list = daPassingStationCollectionService.list(new LambdaQueryWrapper<DaPassingStationCollection>() + .eq(StrUtil.isNotBlank(packCode),DaPassingStationCollection::getSfcCode, packCode) + .eq(DaPassingStationCollection::getOutRsSign, Constants.UN_PASS)); + return CollUtil.isEmpty(list); + } + + /** + * 淇濆瓨杩囩珯閲囬泦 + */ + public void saveStationInfo365(String thoroughfare,String device) throws Exception { + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; +// String prefix = thoroughfare+"."+device+"."; +// List<DaPassingStationCollection> passingStationCollections = new ArrayList<>(); +// String ModuleCodeA = ""; +// String ModuleCodeB = ""; +// String StationStatusA = ""; +// String StationStatusB = ""; +// +// Object objectModuleCodeA = miloService.readFromOpcUa(prefix + "ModuleCodeA").getValue(); +// Object objectModuleCodeB = miloService.readFromOpcUa(prefix + "ModuleCodeB").getValue(); +// Object objectStationStatusA = miloService.readFromOpcUa(prefix + "StationStatusA").getValue(); +// Object objectStationStatusB = miloService.readFromOpcUa(prefix + "StationStatusB").getValue(); +// +// if(ObjectUtil.isNotNull(objectModuleCodeA) && ObjectUtil.isNotNull(objectStationStatusA) && ObjectUtil.isNotNull(objectModuleCodeB) && ObjectUtil.isNotNull(objectStationStatusB)){ +// ModuleCodeA = objectModuleCodeA.toString(); +// ModuleCodeB = objectModuleCodeB.toString(); +// StationStatusA = objectStationStatusA.toString(); +// StationStatusB = objectStationStatusB.toString(); +// +// String[] modeles = {ModuleCodeA,ModuleCodeB}; +// String[] StationStatus = {StationStatusA,StationStatusB}; +// +// String startTime = miloService.readFromOpcUa(prefix + "StartTime").getValue().toString(); +// String stopTime = miloService.readFromOpcUa(prefix + "StopTime").getValue().toString(); +// for (int i = 0; i < 2; i++) { +// DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection(); +// String strt = TimeUtil.stringProcessing(startTime); +// String end = TimeUtil.stringProcessing(stopTime); +// daPassingStationCollection.setInboundTime(format.parse(TimeUtil.test(strt)));//鍏ョ珯鏃堕棿 +// daPassingStationCollection.setOutboundTime(format.parse(TimeUtil.test(end)));//鍑虹珯鏃堕棿 +// daPassingStationCollection.setSfcCode(modeles[i]); +// daPassingStationCollection.setLocationCode(device); +// daPassingStationCollection.setOutRsSign(StationStatus[i]);//鍑虹珯鏄惁鍚堟牸 +// passingStationCollections.add(daPassingStationCollection); +// } +// daPassingStationCollectionService.saveBeachDaPassingStationCollection(passingStationCollections); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(21).build()); +// logger.info("宸ヤ綅{}鍥炲21",device); +// +// }else { +// miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(22).build()); +// } + } + + private static void writeToOpcShort(String identifier, short value) { + try { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(identifier).value(value).build()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } -- Gitblit v1.9.3