jcdm-admin/src/main/resources/application-druid.yml
@@ -18,12 +18,12 @@ master: # url: jdbc:sqlserver://192.168.0.189:1433;DataBaseName=Jcdm042-Mes # url: jdbc:sqlserver://183.134.244.158:1433;DataBaseName=Jcdm042-Mes url: jdbc:sqlserver://127.0.0.1:1433;DataBaseName=Jcdm042-Mes url: jdbc:sqlserver://127.0.0.1:1433;DataBaseName=Jcdm042-Mes-module username: sa # password: JCDM@2023 password: admin@123 # password: admin@123 # password: 1!deshine # password: 123456 password: 123456 # ä»åºæ°æ®æº jcdm-admin/src/main/resources/application.yml
@@ -18,7 +18,7 @@ # å¼åç¯å¢é ç½® server: # æå¡å¨çHTTP端å£ï¼é»è®¤ä¸º8080 port: 8080 port: 8085 servlet: # åºç¨ç访é®è·¯å¾ context-path: / @@ -223,4 +223,5 @@ config: default: endpoint: opc.tcp://127.0.0.1:49320 security-policy: none security-policy: none orderLineUrl: "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration" jcdm-main/src/main/java/com/jcdm/main/constant/Constants.java
@@ -4,8 +4,39 @@ public static final String IN_BOUND_TIME_CODE = "PAT_INT"; public static final String OUT_BOUND_TIME_CODE = "PAT_INT"; public static final String SUCCESS = "success"; public static final String NG = "2"; public static final String UN_PASS= "ä¸åæ ¼"; public static final String PASS= "åæ ¼"; public static final String OK= "OK"; public static final Integer USE_ING= 0; public static final String RECORD_CHECK_CODE= "RecordCheckCode"; public static final String RECORD_CHECK_CODE_1= "RecordCheckCode1"; public static final String RECORD_CHECK_CODE_2= "RecordCheckCode2"; public static final String RECORD_DATA= "RecordData"; public static final String RECORD_SN= "RecordSN"; public static final String ONE= "1"; public static final String ZERO= "0"; public static final String TWO= "2"; public static final String OP070= "M1OP070"; public static final String OP110= "M1OP110"; public static final String OP010= "M1OP010"; public static final String OP020= "M1OP020"; public static final String OP030= "M1OP030"; public static final String OP040= "M1OP040"; public static final String OP050= "M1OP050"; public static final String OP060= "M1OP060"; public static final String OP065= "M1OP065"; public static final String OP100_1= "M1OP100-1"; public static final String OP100_2= "M1OP100-2"; public static final Integer INT_ONE= 1; public static final Integer INT_TWO= 2; public static final Integer INT_THREE= 3; public static final Integer INT_FOUR= 4; public static final Integer INT_ZERO= 0; } jcdm-main/src/main/java/com/jcdm/main/da/collectionParamConf/domain/DaCollectionParamConf.java
@@ -2,6 +2,7 @@ import com.jcdm.common.annotation.Excel; import com.jcdm.common.core.domain.BaseEntity; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -11,6 +12,7 @@ * @author ruimin * @date 2023-12-25 */ @Data public class DaCollectionParamConf extends BaseEntity { private static final long serialVersionUID = 1L; @@ -18,6 +20,8 @@ /** 主é®id */ private Long id; private Integer keyNum; /** å·¥åºç¼å· */ @Excel(name = "å·¥åºç¼å·") private String processesCode; jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/domain/DaParamCollection.java
@@ -4,11 +4,8 @@ import com.jcdm.common.annotation.Excel; import com.jcdm.common.core.domain.BaseEntity; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import java.util.Date; import java.util.Objects; /** * 设å¤äº§åè¿ç¨åæ°éé对象 da_param_collection @@ -27,6 +24,8 @@ /** å·¥åç¼å· */ @Excel(name = "å·¥åç¼å·") private String workOrderNo; private String keyCode; /** æ»æåºåå· */ @Excel(name = "æ»æåºåå·") @@ -114,245 +113,4 @@ @TableField(exist = false) private String yzSfcCode; public String getTightenTheArray() { return tightenTheArray; } public void setTightenTheArray(String tightenTheArray) { this.tightenTheArray = tightenTheArray; } public String getProductBarcode() { return productBarcode; } public void setProductBarcode(String productBarcode) { this.productBarcode = productBarcode; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public void setId(Long id) { this.id = id; } public Long getId() { return id; } public void setWorkOrderNo(String workOrderNo) { this.workOrderNo = workOrderNo; } public String getWorkOrderNo() { return workOrderNo; } public void setSfcCode(String sfcCode) { this.sfcCode = sfcCode; } public String getSfcCode() { return sfcCode; } public void setProductCode(String productCode) { this.productCode = productCode; } public String getProductCode() { return productCode; } public void setProductionLine(String productionLine) { this.productionLine = productionLine; } public String getProductionLine() { return productionLine; } public void setLocationCode(String locationCode) { this.locationCode = locationCode; } public String getLocationCode() { return locationCode; } public void setEquipmentNo(String equipmentNo) { this.equipmentNo = equipmentNo; } public String getEquipmentNo() { return equipmentNo; } public void setParamCode(String paramCode) { this.paramCode = paramCode; } public String getParamCode() { return paramCode; } public void setParamValue(String paramValue) { this.paramValue = paramValue; } public String getParamValue() { return paramValue; } public void setParamUpper(String paramUpper) { this.paramUpper = paramUpper; } public String getParamUpper() { return paramUpper; } public void setParamLower(String paramLower) { this.paramLower = paramLower; } public String getParamLower() { return paramLower; } public void setParamStandard(String paramStandard) { this.paramStandard = paramStandard; } public String getParamStandard() { return paramStandard; } public void setCollectionTime(Date collectionTime) { this.collectionTime = collectionTime; } public Date getCollectionTime() { return collectionTime; } public String getModuleCode() { return moduleCode; } public void setModuleCode(String moduleCode) { this.moduleCode = moduleCode; } public void setSpareField2(String spareField2) { this.spareField2 = spareField2; } public String getSpareField2() { return spareField2; } public void setCreateUser(String createUser) { this.createUser = createUser; } public String getCreateUser() { return createUser; } public void setUpdateUser(String updateUser) { this.updateUser = updateUser; } public String getUpdateUser() { return updateUser; } public void setState(String state) { this.state = state; } public String getState() { return state; } public void setParamName(String paramName) { this.paramName = paramName; } public String getParamName() { return paramName; } public void setUnit(String unit) { this.unit = unit; } public String getUnit() { return unit; } public void setType(String type) { this.type = type; } public String getType() { return type; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) .append("workOrderNo", getWorkOrderNo()) .append("sfcCode", getSfcCode()) .append("productCode", getProductCode()) .append("productionLine", getProductionLine()) .append("locationCode", getLocationCode()) .append("equipmentNo", getEquipmentNo()) .append("paramCode", getParamCode()) .append("paramValue", getParamValue()) .append("paramUpper", getParamUpper()) .append("paramLower", getParamLower()) .append("paramStandard", getParamStandard()) .append("collectionTime", getCollectionTime()) .append("spareField2", getSpareField2()) .append("createUser", getCreateUser()) .append("createTime", getCreateTime()) .append("updateUser", getUpdateUser()) .append("updateTime", getUpdateTime()) .append("state", getState()) .append("paramName", getParamName()) .append("unit", getUnit()) .append("type", getType()) .toString(); } } jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java
@@ -9,6 +9,8 @@ import com.jcdm.common.utils.DateUtils; import com.jcdm.common.utils.poi.ExcelUtil; import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; import com.jcdm.main.da.passingStationCollection.query.ProductOrderQuery; import com.jcdm.main.da.passingStationCollection.query.ProductOrderVO; import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -138,4 +140,10 @@ { return toAjax(daPassingStationCollectionService.deleteDaPassingStationCollectionByIds(ids)); } @GetMapping("/queryMessFromLine") public R queryMessFromLine(ProductOrderQuery query){ ProductOrderVO vo = daPassingStationCollectionService.queryMessFromLine(query); return R.ok(vo); } } jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/DaPassingStationCollection.java
@@ -1,9 +1,9 @@ package com.jcdm.main.da.passingStationCollection.domain; import com.baomidou.mybatisplus.annotation.TableField; import com.jcdm.common.annotation.Excel; import com.jcdm.common.core.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import lombok.Data; import java.util.Date; @@ -13,6 +13,7 @@ * @author yyt * @date 2023-12-12 */ @Data public class DaPassingStationCollection extends BaseEntity { private static final long serialVersionUID = 1L; @@ -75,11 +76,11 @@ @Excel(name = "ééæ¶é´") private Date collectionTime; /** é¢çå段1 */ private String spareField1; private String moduleCode; /** é¢çå段2 */ private String spareField2; /** çµè¯ç */ private String keyCode; /** å建ç¨æ· */ private String createUser; @@ -91,212 +92,7 @@ @Excel(name = "èææ¶é´") private String beatTime; @TableField(exist = false) private Long[] ids; public Long[] getIds() { return ids; } public void setIds(Long[] ids) { this.ids = ids; } public void setId(Long id) { this.id = id; } public Long getId() { return id; } public void setWorkOrderNo(String workOrderNo) { this.workOrderNo = workOrderNo; } public String getWorkOrderNo() { return workOrderNo; } public void setSfcCode(String sfcCode) { this.sfcCode = sfcCode; } public String getSfcCode() { return sfcCode; } public void setProductCode(String productCode) { this.productCode = productCode; } public String getProductCode() { return productCode; } public void setProductionLine(String productionLine) { this.productionLine = productionLine; } public String getProductionLine() { return productionLine; } public void setLocationCode(String locationCode) { this.locationCode = locationCode; } public String getLocationCode() { return locationCode; } public void setEquipmentNo(String equipmentNo) { this.equipmentNo = equipmentNo; } public String getEquipmentNo() { return equipmentNo; } public void setInboundTime(Date inboundTime) { this.inboundTime = inboundTime; } public Date getInboundTime() { return inboundTime; } public void setOutboundTime(Date outboundTime) { this.outboundTime = outboundTime; } public Date getOutboundTime() { return outboundTime; } public void setInRsSign(String inRsSign) { this.inRsSign = inRsSign; } public String getInRsSign() { return inRsSign; } public void setInMsgSign(String inMsgSign) { this.inMsgSign = inMsgSign; } public String getInMsgSign() { return inMsgSign; } public void setOutRsSign(String outRsSign) { this.outRsSign = outRsSign; } public String getOutRsSign() { return outRsSign; } public void setOutMsgSign(String outMsgSign) { this.outMsgSign = outMsgSign; } public String getOutMsgSign() { return outMsgSign; } public void setCollectionTime(Date collectionTime) { this.collectionTime = collectionTime; } public Date getCollectionTime() { return collectionTime; } public void setSpareField1(String spareField1) { this.spareField1 = spareField1; } public String getSpareField1() { return spareField1; } public void setSpareField2(String spareField2) { this.spareField2 = spareField2; } public String getSpareField2() { return spareField2; } public void setCreateUser(String createUser) { this.createUser = createUser; } public String getCreateUser() { return createUser; } public void setUpdateUser(String updateUser) { this.updateUser = updateUser; } public String getUpdateUser() { return updateUser; } public void setBeatTime(String beatTime) { this.beatTime = beatTime; } public String getBeatTime() { return beatTime; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) .append("workOrderNo", getWorkOrderNo()) .append("sfcCode", getSfcCode()) .append("productCode", getProductCode()) .append("productionLine", getProductionLine()) .append("locationCode", getLocationCode()) .append("equipmentNo", getEquipmentNo()) .append("inboundTime", getInboundTime()) .append("outboundTime", getOutboundTime()) .append("inRsSign", getInRsSign()) .append("inMsgSign", getInMsgSign()) .append("outRsSign", getOutRsSign()) .append("outMsgSign", getOutMsgSign()) .append("collectionTime", getCollectionTime()) .append("spareField1", getSpareField1()) .append("spareField2", getSpareField2()) .append("createUser", getCreateUser()) .append("createTime", getCreateTime()) .append("updateUser", getUpdateUser()) .append("updateTime", getUpdateTime()) .append("beatTime", getBeatTime()) .toString(); } } jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/query/ProductOrderChild.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.jcdm.main.da.passingStationCollection.query; import lombok.Data; @Data public class ProductOrderChild { private String productNum; private String stationCode; private String materialCode; private String productionOrderNum; private String model; } jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/query/ProductOrderQuery.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.jcdm.main.da.passingStationCollection.query; import lombok.Data; @Data public class ProductOrderQuery { private String siteCode; private String stationCode; private String productNum; } jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/query/ProductOrderVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.jcdm.main.da.passingStationCollection.query; import lombok.Data; @Data public class ProductOrderVO { private String code; private String message; private ProductOrderChild data; } jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java
@@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; import com.jcdm.main.da.passingStationCollection.query.ProductOrderQuery; import com.jcdm.main.da.passingStationCollection.query.ProductOrderVO; import java.util.List; @@ -72,4 +74,8 @@ void insertRepairRecordByIds(DaPassingStationCollection daPassingStationCollection); int jrmAddPassingStationCollection(DaPassingStationCollection daPassingStationCollection); ProductOrderVO queryMessFromLine(ProductOrderQuery query); void insertBatch(List<DaPassingStationCollection> confList); } jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
@@ -1,21 +1,23 @@ package com.jcdm.main.da.passingStationCollection.service.impl; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jcdm.common.utils.DateUtils; //import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling; //import com.jcdm.main.bs.orderScheduling.mapper.BsOrderSchedulingMapper; //import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService; import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper; import com.jcdm.main.da.passingStationCollection.query.ProductOrderQuery; import com.jcdm.main.da.passingStationCollection.query.ProductOrderVO; import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService; import com.jcdm.main.rm.repairRecord.domain.RmRepairRecord; import com.jcdm.main.rm.repairRecord.mapper.RmRepairRecordMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; /** @@ -36,6 +38,9 @@ @Autowired private RmRepairRecordMapper rmRepairRecordMapper; @Value("${orderLineUrl}") private String orderLineUrl; // @Autowired // private BsOrderSchedulingMapper bsOrderSchedulingMapper; // @@ -157,4 +162,31 @@ } return 1; } @Override public ProductOrderVO queryMessFromLine(ProductOrderQuery query){ ProductOrderVO vo = new ProductOrderVO(); String jsonStr = JSONUtil.toJsonStr(query); String url = orderLineUrl + "/productionWorkOrderRequest?siteCode="+query.getSiteCode()+"&stationCode="+query.getStationCode()+"&productNum="+query.getProductNum(); // String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/productionWorkOrderRequest?siteCode=3983&stationCode=OP230&productNum=0RSPB001139E3AE5B0000011"; HttpResponse execute = HttpRequest.get(url).execute(); String body = execute.body(); if (StrUtil.isNotBlank(body)){ // JSONObject jsonObject = new JSONObject(body); vo = JSON.parseObject(body, ProductOrderVO.class); } return vo; } @Override public void insertBatch(List<DaPassingStationCollection> confList){ try{ this.saveBatch(confList); }catch (Exception e){ return; } } } jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
@@ -1,20 +1,27 @@ package com.jcdm.main.plcserver; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jcdm.main.constant.Constants; import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService; import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig; import com.jcdm.main.da.opcuaconfig.service.IDaOpcuaConfigService; 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.jcdm.main.work.service.KeyCodeCheckService; import com.jcdm.main.work.service.KeyCodeRelationService; import com.jcdm.main.work.service.WorkOrderService; import com.kangaroohy.milo.service.MiloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import java.util.ArrayList; import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; @Component public class CustomRunner implements ApplicationRunner { @@ -37,6 +44,18 @@ @Autowired private IOmProductionOrdeInfoService omProductionOrdeInfoService; @Resource private KeyCodeCheckService keyCodeCheckService; @Resource private WorkOrderService workOrderService; @Resource private IDaOpcuaConfigService daOpcuaConfigService; @Resource private KeyCodeRelationService keyCodeRelationService; @Override public void run(ApplicationArguments args) throws Exception { @@ -45,7 +64,10 @@ daPassingStationCollectionService, collectionParamConfService, daParamCollectionService, omProductionOrdeInfoService); omProductionOrdeInfoService, workOrderService, keyCodeCheckService, keyCodeRelationService); List<String> lists = getSubList(); System.out.println("订é å 容ï¼"+lists); @@ -57,61 +79,9 @@ * 订é å 容 */ public List<String> getSubList(){ List<String> lists = new ArrayList<>(); lists.add(OPCElement.PACK_OP230_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP240_RecordData);//请æ±è®°å½æ°æ®. lists.add(OPCElement.PACK_OP240_AngleResult);//请æ±è®°å½æ°æ® // lists.add(OPCElement.PACK_OP2502_RecordData);//请æ±è®°å½æ°æ®. lists.add(OPCElement.PACK_OP2501_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP2502_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP2503_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP260_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP260_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP270_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP270_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP290_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP290_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP300A_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP300B_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP310A_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP310B_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP330A_RecordData);//请æ±è®°å½æ°æ® // lists.add(OPCElement.PACK_OP330B_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP380_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP380_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP400_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP400_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP410_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP410_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP4301_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP4302_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP4303_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP4304_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP440_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP450_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP450_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP460_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP460_AngleResult);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP4801_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP4802_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP4803_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP500_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP500_AngleResult);//请æ±è®°å½æ°æ® // lists.add(OPCElement.PACK_OP280_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP320A_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP320B_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP340A_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP340B_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP350A_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP350B_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP360_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP365_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP370_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP390_RecordData);//请æ±è®°å½æ°æ® lists.add(OPCElement.PACK_OP470_RecordData);//请æ±è®°å½æ°æ® List<String> lists = daOpcuaConfigService.list(new LambdaQueryWrapper<DaOpcuaConfig>() .eq(DaOpcuaConfig::getState, Constants.USE_ING)) .stream().map(DaOpcuaConfig::getNode).collect(Collectors.toList()); return lists; } } jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -2,12 +2,10 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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; @@ -15,16 +13,23 @@ 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.query.ProductOrderChild; import com.jcdm.main.da.passingStationCollection.query.ProductOrderQuery; import com.jcdm.main.da.passingStationCollection.query.ProductOrderVO; 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.jcdm.main.work.domain.KeyCodeRelation; import com.jcdm.main.work.domain.WorkOrder; import com.jcdm.main.work.service.KeyCodeCheckService; import com.jcdm.main.work.service.KeyCodeRelationService; import com.jcdm.main.work.service.WorkOrderService; 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.springframework.stereotype.Component; import javax.websocket.Session; @@ -33,6 +38,7 @@ import java.util.stream.Collectors; @Slf4j @Component public class OPCUaSubscription implements SubscriptionCallback { @@ -73,17 +79,27 @@ public static IDaParamCollectionService daParamCollectionService; public static IOmProductionOrdeInfoService omProductionOrdeInfoService; public static WorkOrderService workOrderService; public static KeyCodeCheckService keyCodeCheckService; public static KeyCodeRelationService keyCodeRelationService; public OPCUaSubscription(MiloService miloService, IDaPassingStationCollectionService daPassingStationCollectionService, IDaCollectionParamConfService collectionParamConfService, IDaParamCollectionService daParamCollectionService, IOmProductionOrdeInfoService omProductionOrdeInfoService) { IOmProductionOrdeInfoService omProductionOrdeInfoService, WorkOrderService workOrderService, KeyCodeCheckService keyCodeCheckService, KeyCodeRelationService keyCodeRelationService) { OPCUaSubscription.miloService = miloService; this.daPassingStationCollectionService = daPassingStationCollectionService; OPCUaSubscription.collectionParamConfService = collectionParamConfService; OPCUaSubscription.daParamCollectionService = daParamCollectionService; OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService; OPCUaSubscription.workOrderService = workOrderService; OPCUaSubscription.keyCodeCheckService = keyCodeCheckService; OPCUaSubscription.keyCodeRelationService = keyCodeRelationService; } @@ -91,124 +107,482 @@ public void onSubscribe(String identifier, Object value) { try { if(null != value && Integer.valueOf(value.toString())!= 0) { if(null != value && !Constants.ZERO.equals(value.toString())) { String[] nodes = identifier.split("[.]"); String thoroughfare = nodes[0];//éé String device = nodes[1];//è®¾å¤ String tab = nodes[2];//æ è®° String tabVlaue = value.toString();//å°åå¼ if (("RecordData").equals(tab)) { String recordDataDoneValue = ""; if("1".equals(tabVlaue)){ //请æ±å·¥å // if(device.equals("OP230")){ // getFactoryOrder("OP230"); // } //èªå¨å·¥ä½ 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(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(); 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()); } }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(11).build()); } }else if("2".equals(tabVlaue)){ if(automaticList.stream().anyMatch(s -> s.equals(device))){ //èªå¨å·¥ä½ //åºç«ä¿åæ°æ® recordDataDoneValue = outSaveDate(thoroughfare,device); //è®°å½æ°æ®å®æ String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf(recordDataDoneValue)).build()); }else { //æå¨å·¥ä½ if(device.contains("OP330")){ String str = device.substring(0,5); 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()); String valueString = value.toString();//å°åå¼ if (Constants.RECORD_CHECK_CODE.equals(tab)){ if (Constants.ONE.equals(valueString)){ Integer scanResult = 11; if (Constants.OP010.equals(device) || Constants.OP030.equals(device)){ //OP010å·¥ä½çµè¯æ¡ç æ ¡éª||OP030å·¥ä½çµè¯æ¡ç æ ¡éª Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".Scaner").getValue(); if (ObjectUtil.isNotNull(value1)){ String keyCode = value1.toString(); log.info("读åå°å·¥ä½{}çScaneræ°æ®ï¼{}",device,keyCode); //ä» æ ¡éªé¿åº¦æ¯å¦åæ ¼ // List<KeyCodeCheck> collect = keyCodeCheckService.list().stream().filter(x -> x.getKeyCode().contains(keyCode)).collect(Collectors.toList()); // if (CollUtil.isNotEmpty(collect)){ // scanResult = 11; // } } } }else { System.out.println("^"); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult1").value(scanResult).build()); log.info("åå ¥å°å·¥ä½{}çScanerResult1æ°æ®ï¼{}",device,scanResult); } } //ä¿åæ§ç´§æ°æ® else if (("AngleResult").equals(tab)) { if("1".equals(tabVlaue)||"2".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); }else if (Constants.RECORD_DATA.equals(tab)){ if (Constants.ONE.equals(valueString)){ //1:åç¥MESæçå·²å°ç«ï¼è¯·æ±ä¸åè¿ç«ç¶æ if (Constants.OP030.equals(device)){ //åé¦çµè¯ocvæ£æµç»æ boolean b = OCVResultFeedBack(thoroughfare, device); if (b){ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); log.info("åå ¥å°å·¥ä½{}çRecordDataDoneæ°æ®ï¼{}",device,11); }else { miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); log.info("åå ¥å°å·¥ä½{}çRecordDataDoneæ°æ®ï¼{}",device,12); } } else { miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); log.info("åå ¥å°å·¥ä½{}çRecordDataDoneæ°æ®ï¼{}",device,11); } 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)); }else if (Constants.TWO.equals(valueString)){ //å段010-065段 List<String> PART1 = new ArrayList<>(); PART1.add(Constants.OP020); PART1.add(Constants.OP030); PART1.add(Constants.OP040); PART1.add(Constants.OP050); PART1.add(Constants.OP060); PART1.add(Constants.OP065); if (Constants.OP010.equals(device)){ //010å·¥ä½æ è¿ç«è®°å½ï¼åªç»æ¾è¡ä¿¡å· miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build()); log.info("åå ¥å°å·¥ä½{}çRecordDataDoneæ°æ®ï¼{}",device,21); }else if (PART1.contains(device)){ //020å·¥ä½ä¿åè¿ç«è®°å½+åæ°æ°æ® List<DaPassingStationCollection> passingList = getDaPassingStationCollections(thoroughfare, device); if (CollUtil.isNotEmpty(passingList)){ daPassingStationCollectionService.insertBatch(passingList); } miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build()); log.info("åå ¥å°å·¥ä½{}çRecordDataDoneæ°æ®ï¼{}",device,21); } else if (Constants.OP100_1.equals(device) || Constants.OP100_2.equals(device)){ //ä¸åå»ç ä¿¡æ¯-为模ç»ç ProductOrderQuery query = new ProductOrderQuery(); query.setSiteCode("3983"); query.setStationCode(device); List<WorkOrder> collect = workOrderService.list().stream() .sorted(Comparator.comparing(WorkOrder::getCreateTime).reversed()) .collect(Collectors.toList()); if (CollUtil.isNotEmpty(collect)){ query.setProductNum(collect.get(0).getProductNum()); } ProductOrderVO vo = daPassingStationCollectionService.queryMessFromLine(query); if (Constants.SUCCESS.equals(vo.getCode())){ WorkOrder workOrder = new WorkOrder(); ProductOrderChild data = vo.getData(); workOrder.setProductNum(data.getProductNum()); workOrder.setProductionOrderNum(data.getProductionOrderNum()); workOrder.setStationCode(data.getStationCode()); workOrder.setMaterialCode(data.getMaterialCode()); workOrder.setModel(data.getModel()); workOrderService.save(workOrder); //åå ¥æ¨¡ç»ç ãå·¥åå·ã产ååå·å°plc log.info("åå ¥æ¨¡ç»ç ãå·¥åå·ã产ååå·å°plc"); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(data.getModel()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(data.getProductionOrderNum()).build()); //è¿éplcå½å ¥ç产ååå·ç±»åæ¯intç±»åï¼å·¥åmesè¿åæ°æ®ä¸æ¯intç±»åï¼å¯è½ä¼åºç°é®é¢ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductType").value(data.getProductNum()).build()); //ç»å®æ¨¡ç»ç åçµè¯ç æ°æ® List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() .eq(DaCollectionParamConf::getProcessesCode, device) .eq(DaCollectionParamConf::getRemarks,Constants.ONE)); List<String> collect3 = list.stream().filter(x -> Constants.INT_ZERO.equals(x.getKeyNum())).map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); List<String> collect1 = list.stream().filter(x -> Constants.INT_ONE.equals(x.getKeyNum())|| Constants.INT_TWO.equals(x.getKeyNum())) .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); // List<String> collect2 = list.stream().filter(x -> Constants.INT_TWO.equals(x.getKeyNum())) // .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); List<ReadWriteEntity> paramCollectionList1 = miloService.readFromOpcUa(collect1); List<ReadWriteEntity> paramCollectionList3 = miloService.readFromOpcUa(collect3); if (CollUtil.isNotEmpty(paramCollectionList1)){ List<KeyCodeRelation> relationList = new ArrayList<>(); for (ReadWriteEntity readWriteEntity : paramCollectionList1) { if (ObjectUtil.isNotNull(readWriteEntity.getValue())){ KeyCodeRelation keyCodeRelation = new KeyCodeRelation(); keyCodeRelation.setModuleCode(data.getModel()); keyCodeRelation.setKeyCode(readWriteEntity.getValue().toString()); keyCodeRelation.setProductionOrderNum(data.getProductionOrderNum()); keyCodeRelation.setProductNum(data.getProductNum()); keyCodeRelation.setCreateTime(new Date()); relationList.add(keyCodeRelation); } } if (CollUtil.isNotEmpty(relationList)){ keyCodeRelationService.insertBatch(relationList); } } if (CollUtil.isNotEmpty(paramCollectionList3)){ QueryPLCData(device,thoroughfare,collect3); } //ä¿åè¿ç«è®°å½ DaPassingStationCollection passingStationCollection = new DaPassingStationCollection(); passingStationCollection.setModuleCode(data.getModel()); passingStationCollection.setLocationCode(device); passingStationCollection.setInboundTime(new Date()); String stationStatus = Constants.PASS; ReadWriteEntity stationStatusRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus"); if (ObjectUtil.isNotNull(stationStatusRead.getValue())){ String string = stationStatusRead.getValue().toString(); log.info("读åå·¥ä½{}StationStatusï¼{}",device,string); if (Constants.TWO.equals(string)){ stationStatus = Constants.UN_PASS; } } passingStationCollection.setOutRsSign(stationStatus); passingStationCollection.setCreateTime(new Date()); daPassingStationCollectionService.save(passingStationCollection); } miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build()); log.info("åå ¥å°å·¥ä½{}çRecordDataDoneæ°æ®ï¼{}",device,21); } else { //2:åç¥MESå·¥ä½å·¥ä½å®æï¼è¯·æ±è®°å½å·¥ä½æ°æ® //ä¿ååæ°ééè®°å½ saveParamPassingData(device,thoroughfare); //ä¿åè¿ç«è®°å½ DaPassingStationCollection passingStationCollection = new DaPassingStationCollection(); Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); String moduleCode = null; if (ObjectUtil.isNotNull(value1)){ moduleCode = value1.toString(); log.info("读åå·¥ä½{}çModuleCodeæ°æ®ï¼{}",device,moduleCode); } passingStationCollection.setModuleCode(moduleCode); passingStationCollection.setLocationCode(device); passingStationCollection.setInboundTime(new Date()); String stationStatus = Constants.PASS; ReadWriteEntity stationStatusRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus"); if (ObjectUtil.isNotNull(stationStatusRead.getValue())){ String string = stationStatusRead.getValue().toString(); if (Constants.TWO.equals(string)){ stationStatus = Constants.UN_PASS; } } passingStationCollection.setOutRsSign(stationStatus); passingStationCollection.setCreateTime(new Date()); daPassingStationCollectionService.save(passingStationCollection); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build()); log.info("åå ¥å°å·¥ä½{}çRecordDataDoneæ°æ®ï¼{}",device,21); } } } else if (Constants.RECORD_SN.equals(tab)){ if (Constants.ONE.equals(valueString)){ if (Constants.OP070.equals(device)){ //OP070ä¸å产å模ç»ç String string = UUID.randomUUID().toString(); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(string).build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(1).build()); } } } else if (Constants.RECORD_CHECK_CODE_1.equals(tab)) { if (Constants.OP100_1.equals(device)){ //é¢å¸¦æ¡ç æ ¡éª--åéç»å·¥åmes miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult11").value(11).build()); } else if (Constants.OP100_2.equals(device)) { //PET带æ¡ç æ ¡éª--åéç»å·¥åmes miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult12").value(11).build()); } } } } catch (Exception e) { System.out.println(e.getMessage()); log.info(e.getMessage()); } } /** * ä¿åçµè¯è¿ç«è®°å½ * @param thoroughfare éé * @param device å·¥ä½ * @return list * @throws Exception e */ private static List<DaPassingStationCollection> getDaPassingStationCollections(String thoroughfare, String device) throws Exception { List<String> readList = new ArrayList<>(); readList.add(thoroughfare + "." + device +".CellCode_1"); readList.add(thoroughfare + "." + device +".CellCode_2"); readList.add(thoroughfare + "." + device +".CellCode_3"); readList.add(thoroughfare + "." + device +".CellCode_4"); List<String> keyCodeList = new ArrayList<>(); List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(readList); List<DaPassingStationCollection> passingList = new ArrayList<>(); for (ReadWriteEntity readWriteEntity : readWriteEntityList) { DaPassingStationCollection passingStationCollection = new DaPassingStationCollection(); passingStationCollection.setLocationCode(device); passingStationCollection.setInboundTime(new Date()); if (ObjectUtil.isNotNull(readWriteEntity.getValue())){ passingStationCollection.setKeyCode(readWriteEntity.getValue().toString()); keyCodeList.add(readWriteEntity.getValue().toString()); } String stationStatus = Constants.PASS; ReadWriteEntity stationStatusRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus"); if (ObjectUtil.isNotNull(stationStatusRead.getValue())){ String string = stationStatusRead.getValue().toString(); if (Constants.TWO.equals(string)){ stationStatus = Constants.UN_PASS; } } passingStationCollection.setOutRsSign(stationStatus); passingStationCollection.setCreateTime(new Date()); passingList.add(passingStationCollection); } //åæ°éé //ä¿ååæ°ééæ°æ® List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() .eq(DaCollectionParamConf::getProcessesCode, device) .eq(DaCollectionParamConf::getRemarks, Constants.ONE)); if (CollUtil.isNotEmpty(list)){ List<DaParamCollection> saveParamList = new ArrayList<>(); List<String> collect1 = list.stream().filter(x -> Constants.INT_ONE.equals(x.getKeyNum())) .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); List<ReadWriteEntity> paramCollectionList1 = miloService.readFromOpcUa(collect1); List<String> collect2 = list.stream().filter(x -> Constants.INT_TWO.equals(x.getKeyNum())) .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); List<ReadWriteEntity> paramCollectionList2 = miloService.readFromOpcUa(collect2); List<String> collect3 = list.stream().filter(x -> Constants.INT_THREE.equals(x.getKeyNum())) .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); List<ReadWriteEntity> paramCollectionList3 = miloService.readFromOpcUa(collect3); List<String> collect4 = list.stream().filter(x -> Constants.INT_FOUR.equals(x.getKeyNum())) .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); List<ReadWriteEntity> paramCollectionList4 = miloService.readFromOpcUa(collect4); List<String> collect0 = list.stream().filter(x -> Constants.INT_ZERO.equals(x.getKeyNum())) .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList()); List<ReadWriteEntity> paramCollectionList0 = miloService.readFromOpcUa(collect0); if (CollUtil.isNotEmpty(paramCollectionList1)){ for (int i = 0; i < paramCollectionList1.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){ daParamCollection.setKeyCode(keyCodeList.get(0)); } daParamCollection.setParamCode(paramCollectionList1.get(i).getIdentifier()); String paramValue = ""; if (ObjectUtil.isNotNull(paramCollectionList1.get(i).getValue())){ paramValue = paramCollectionList1.get(i).getValue().toString(); } daParamCollection.setParamValue(paramValue); daParamCollection.setLocationCode(device); daParamCollection.setCollectionTime(new Date()); saveParamList.add(daParamCollection); } } if (CollUtil.isNotEmpty(paramCollectionList2)){ for (int i = 0; i < paramCollectionList2.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){ daParamCollection.setKeyCode(keyCodeList.get(1)); } daParamCollection.setParamCode(paramCollectionList2.get(i).getIdentifier()); String paramValue = ""; if (ObjectUtil.isNotNull(paramCollectionList2.get(i).getValue())){ paramValue = paramCollectionList2.get(i).getValue().toString(); } daParamCollection.setParamValue(paramValue); daParamCollection.setLocationCode(device); daParamCollection.setCollectionTime(new Date()); saveParamList.add(daParamCollection); } } if (CollUtil.isNotEmpty(paramCollectionList3)){ for (int i = 0; i < paramCollectionList3.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){ daParamCollection.setKeyCode(keyCodeList.get(2)); } daParamCollection.setParamCode(paramCollectionList3.get(i).getIdentifier()); String paramValue = ""; if (ObjectUtil.isNotNull(paramCollectionList3.get(i).getValue())){ paramValue = paramCollectionList3.get(i).getValue().toString(); } daParamCollection.setParamValue(paramValue); daParamCollection.setLocationCode(device); daParamCollection.setCollectionTime(new Date()); saveParamList.add(daParamCollection); } } if (CollUtil.isNotEmpty(paramCollectionList4)){ for (int i = 0; i < paramCollectionList4.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){ daParamCollection.setKeyCode(keyCodeList.get(3)); } daParamCollection.setParamCode(paramCollectionList4.get(i).getIdentifier()); String paramValue = ""; if (ObjectUtil.isNotNull(paramCollectionList4.get(i).getValue())){ paramValue = paramCollectionList4.get(i).getValue().toString(); } daParamCollection.setParamValue(paramValue); daParamCollection.setLocationCode(device); daParamCollection.setCollectionTime(new Date()); saveParamList.add(daParamCollection); } } if (CollUtil.isNotEmpty(paramCollectionList0)){ for (int i = 0; i < paramCollectionList0.size(); i++) { if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){ for (String s : keyCodeList) { DaParamCollection daParamCollection = new DaParamCollection(); daParamCollection.setKeyCode(s); daParamCollection.setParamCode(paramCollectionList0.get(i).getIdentifier()); String paramValue = ""; if (ObjectUtil.isNotNull(paramCollectionList0.get(i).getValue())){ paramValue = paramCollectionList0.get(i).getValue().toString(); } daParamCollection.setParamValue(paramValue); daParamCollection.setLocationCode(device); daParamCollection.setCollectionTime(new Date()); saveParamList.add(daParamCollection); } } } } daParamCollectionService.insertBatch(saveParamList); } return passingList; } /** * 030å·¥ä½è¿åocvæµè¯ç»æ * @param thoroughfare * @param device * @throws Exception */ private boolean OCVResultFeedBack(String thoroughfare, String device) throws Exception { boolean flag = true; Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_1").getValue(); if (ObjectUtil.isNotNull(value1)){ String string = value1.toString(); List<DaParamCollection> list = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>() .eq(DaParamCollection::getKeyCode, string)); if (CollUtil.isNotEmpty(list)){ DaParamCollection daParamCollection = list.get(0); if (Constants.ONE.equals(daParamCollection.getState())){ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(1).build()); }else { flag = false; miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_1").value(2).build()); } } } Object value2 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_2").getValue(); if (ObjectUtil.isNotNull(value2)){ String string = value2.toString(); List<DaParamCollection> list = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>() .eq(DaParamCollection::getKeyCode, string)); if (CollUtil.isNotEmpty(list)){ DaParamCollection paramCollection = list.get(0); if (Constants.ONE.equals(paramCollection.getState())){ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(1).build()); }else { flag = false; miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_2").value(2).build()); } } } Object value3 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_3").getValue(); if (ObjectUtil.isNotNull(value3)){ String string = value3.toString(); List<DaParamCollection> list = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>() .eq(DaParamCollection::getKeyCode, string)); if (CollUtil.isNotEmpty(list)){ DaParamCollection paramCollection = list.get(0); if (Constants.ONE.equals(paramCollection.getState())){ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(1).build()); }else { flag = false; miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_3").value(2).build()); } } } Object value4 = miloService.readFromOpcUa(thoroughfare + "." + device + ".CellCode_4").getValue(); if (ObjectUtil.isNotNull(value4)){ String string = value4.toString(); List<DaParamCollection> list = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>() .eq(DaParamCollection::getKeyCode, string)); if (CollUtil.isNotEmpty(list)){ DaParamCollection paramCollection = list.get(0); if (Constants.ONE.equals(paramCollection.getState())){ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(1).build()); }else { flag = false; miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".CellStatus_4").value(2).build()); } } } return flag; } /** * ä¿åè¿ç«æ°æ®ååæ°ä¿åæ°æ® * @param device å·¥ä½å· * @throws Exception */ private void saveParamPassingData(String device,String thoroughfare) throws Exception { //ä¿ååæ°ééæ°æ® List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() .eq(DaCollectionParamConf::getProcessesCode, device) .eq(DaCollectionParamConf::getRemarks, Constants.ONE)); if (CollUtil.isNotEmpty(list)){ List<String> collect = list.stream().map(DaCollectionParamConf::getGatherAddress) .filter(Objects::nonNull).distinct() .collect(Collectors.toList()); QueryPLCData(device,thoroughfare,collect); } } /** * æ¹éæ¥è¯¢plcç«ç¹æ°æ® * @param device ç«ç¹ * @param collect ç¹ä½ * @throws Exception */ private static void QueryPLCData(String device,String thoroughfare,List<String> collect) throws Exception { List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(collect); if (CollUtil.isNotEmpty(readWriteEntityList)){ List<DaParamCollection> collectionList = new ArrayList<>(); Object value1 = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); String moduleCode = null; if (ObjectUtil.isNotNull(value1)){ moduleCode = value1.toString(); } for (int i = 0; i < readWriteEntityList.size(); i++) { DaParamCollection daParamCollection = new DaParamCollection(); if (StrUtil.isNotBlank(moduleCode)){ daParamCollection.setModuleCode(moduleCode); } daParamCollection.setParamCode(collect.get(i)); String paramValue = ""; if (ObjectUtil.isNotNull(readWriteEntityList.get(i).getValue())){ paramValue = readWriteEntityList.get(i).getValue().toString(); } daParamCollection.setParamValue(paramValue); daParamCollection.setLocationCode(device); daParamCollection.setCollectionTime(new Date()); collectionList.add(daParamCollection); } daParamCollectionService.insertBatch(collectionList); } } /** @@ -399,7 +773,8 @@ map.forEach((key, value) -> { List<DaCollectionParamConf> daCollectionParamConfs = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() .eq(DaCollectionParamConf::getProcessesCode,locationCode) .like(DaCollectionParamConf::getCollectParameterId,key)); .like(DaCollectionParamConf::getCollectParameterId,key) .eq(DaCollectionParamConf::getRemarks,Constants.ONE)); DaParamCollection saveData = new DaParamCollection(); saveData.setWorkOrderNo(workOrderNo); saveData.setProductCode(productCode); jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java
@@ -47,10 +47,41 @@ String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback"; @PostMapping("/deviceResultFeedback") public AjaxResult qinYanDeviceData(@RequestBody ParentVO parentVO){ //ä¿ååæ°æ°æ® String productNum = parentVO.getProductNum(); //åæ°ä¿å List<DaParamCollection> paramCollectionList = new ArrayList<>(); List<ChildVO> checkList = parentVO.getCheckList(); for (ChildVO childVO : checkList) { DaParamCollection daParamCollection = new DaParamCollection(); daParamCollection.setKeyCode(productNum); daParamCollection.setProductCode(parentVO.getProductNum()); daParamCollection.setLocationCode(parentVO.getStationCode()); daParamCollection.setParamCode(childVO.getItemCode()); daParamCollection.setParamValue(childVO.getItemValue()); daParamCollection.setCollectionTime(new Date()); daParamCollection.setParamName(childVO.getItemText()); daParamCollection.setState(childVO.getCheckResult()); paramCollectionList.add(daParamCollection); } if (CollUtil.isNotEmpty(paramCollectionList)){ daParamCollectionService.insertBatch(paramCollectionList); } // HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute(); return AjaxResult.success(); } /** * 导åºç¹æ£ä»»å¡å表 */ @PostMapping("/deviceResultFeedback") @PostMapping("/deviceResultFeedback222") public AjaxResult hdy(@RequestBody ParentVO parentVO) { //ä¿å @@ -63,6 +94,7 @@ DaPassingStationCollection passingStationCollection = new DaPassingStationCollection(); passingStationCollection.setWorkOrderNo(omProductionOrdeInfo.getWorkOrderNo()); passingStationCollection.setSfcCode(productNum); passingStationCollection.setKeyCode(productNum); passingStationCollection.setProductCode(omProductionOrdeInfo.getProductCode()); passingStationCollection.setLocationCode(parentVO.getStationCode()); passingStationCollection.setOutRsSign(parentVO.getTotalResult()); jcdm-main/src/main/java/com/jcdm/main/work/controller/KeyCodeCheckController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.jcdm.main.work.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/keyCodeCheck") public class KeyCodeCheckController { } jcdm-main/src/main/java/com/jcdm/main/work/domain/KeyCodeCheck.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.jcdm.main.work.domain; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data public class KeyCodeCheck { private Long id; private String keyCode; /** å建ç¨æ· */ private String createUser; /** æ´æ¹ç¨æ· */ private String updateUser; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; } jcdm-main/src/main/java/com/jcdm/main/work/domain/KeyCodeRelation.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package com.jcdm.main.work.domain; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data public class KeyCodeRelation { private Long id; private String keyCode; private String moduleCode; private String productionOrderNum; private String productNum; /** å建ç¨æ· */ private String createUser; /** æ´æ¹ç¨æ· */ private String updateUser; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; } jcdm-main/src/main/java/com/jcdm/main/work/domain/WorkOrder.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.jcdm.main.work.domain; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data public class WorkOrder { private Long id; private String productNum; private String stationCode; private String materialCode; private String productionOrderNum; private String model; /** å建ç¨æ· */ private String createUser; /** æ´æ¹ç¨æ· */ private String updateUser; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; private Integer keyNum; private Integer installedKeyNum; private String installedKeyCode; } jcdm-main/src/main/java/com/jcdm/main/work/mapper/KeyCodeCheckMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.jcdm.main.work.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jcdm.main.work.domain.KeyCodeCheck; import org.apache.ibatis.annotations.Mapper; @Mapper public interface KeyCodeCheckMapper extends BaseMapper<KeyCodeCheck> { } jcdm-main/src/main/java/com/jcdm/main/work/mapper/KeyCodeRelationMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.jcdm.main.work.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jcdm.main.work.domain.KeyCodeCheck; import com.jcdm.main.work.domain.KeyCodeRelation; import org.apache.ibatis.annotations.Mapper; @Mapper public interface KeyCodeRelationMapper extends BaseMapper<KeyCodeRelation> { } jcdm-main/src/main/java/com/jcdm/main/work/mapper/WorkOrderMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.jcdm.main.work.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jcdm.main.work.domain.WorkOrder; import org.apache.ibatis.annotations.Mapper; @Mapper public interface WorkOrderMapper extends BaseMapper<WorkOrder> { } jcdm-main/src/main/java/com/jcdm/main/work/service/KeyCodeCheckService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ package com.jcdm.main.work.service; import com.baomidou.mybatisplus.extension.service.IService; import com.jcdm.main.work.domain.KeyCodeCheck; import com.jcdm.main.work.domain.WorkOrder; public interface KeyCodeCheckService extends IService<KeyCodeCheck> { } jcdm-main/src/main/java/com/jcdm/main/work/service/KeyCodeRelationService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.jcdm.main.work.service; import com.baomidou.mybatisplus.extension.service.IService; import com.jcdm.main.work.domain.KeyCodeCheck; import com.jcdm.main.work.domain.KeyCodeRelation; import java.util.List; public interface KeyCodeRelationService extends IService<KeyCodeRelation> { public void insertBatch(List<KeyCodeRelation> confList); } jcdm-main/src/main/java/com/jcdm/main/work/service/WorkOrderService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ package com.jcdm.main.work.service; import com.baomidou.mybatisplus.extension.service.IService; import com.jcdm.main.work.domain.WorkOrder; public interface WorkOrderService extends IService<WorkOrder> { } jcdm-main/src/main/java/com/jcdm/main/work/service/impl/KeyCodeCheckServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.jcdm.main.work.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jcdm.main.work.domain.KeyCodeCheck; import com.jcdm.main.work.mapper.KeyCodeCheckMapper; import com.jcdm.main.work.service.KeyCodeCheckService; import org.springframework.stereotype.Service; @Service public class KeyCodeCheckServiceImpl extends ServiceImpl<KeyCodeCheckMapper, KeyCodeCheck> implements KeyCodeCheckService { } jcdm-main/src/main/java/com/jcdm/main/work/service/impl/KeyCodeRelationServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.jcdm.main.work.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; import com.jcdm.main.work.domain.KeyCodeCheck; import com.jcdm.main.work.domain.KeyCodeRelation; import com.jcdm.main.work.mapper.KeyCodeCheckMapper; import com.jcdm.main.work.mapper.KeyCodeRelationMapper; import com.jcdm.main.work.service.KeyCodeCheckService; import com.jcdm.main.work.service.KeyCodeRelationService; import org.springframework.stereotype.Service; import java.util.List; @Service public class KeyCodeRelationServiceImpl extends ServiceImpl<KeyCodeRelationMapper, KeyCodeRelation> implements KeyCodeRelationService { @Override public void insertBatch(List<KeyCodeRelation> confList){ try{ this.saveBatch(confList); }catch (Exception e){ return; } } } jcdm-main/src/main/java/com/jcdm/main/work/service/impl/WorkOrderServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.jcdm.main.work.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jcdm.main.work.domain.WorkOrder; import com.jcdm.main.work.mapper.WorkOrderMapper; import com.jcdm.main.work.service.WorkOrderService; import org.springframework.stereotype.Service; @Service public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService { } jcdm-main/src/main/resources/mapper/work/KeyCodeCheckMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.jcdm.main.work.mapper.KeyCodeCheckMapper"> </mapper> jcdm-main/src/main/resources/mapper/work/KeyCodeRelationMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.jcdm.main.work.mapper.KeyCodeRelationMapper"> </mapper> jcdm-main/src/main/resources/mapper/work/WorkOrderMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.jcdm.main.work.mapper.WorkOrderMapper"> </mapper> jcdm-ui/vue.config.js
@@ -34,7 +34,7 @@ open: true, proxy: { [process.env.VUE_APP_BASE_API]: { target: `http://localhost:8080`, target: `http://localhost:8085`, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: ''