billion-main/pom.xml
@@ -83,6 +83,12 @@ <version>3.5.13</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.33</version> <scope>compile</scope> </dependency> </dependencies> </project> billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java
@@ -1,10 +1,10 @@ package com.billion.main.bs.domain; import com.billion.common.annotation.Excel; import com.billion.main.common.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** @@ -14,7 +14,7 @@ * @date 2024-11-25 */ @Data public class BsBomChildInfo public class BsBomChildInfo extends BaseEntity { private static final long serialVersionUID = 1L; @@ -47,7 +47,7 @@ /** åè */ @Excel(name = "åè") private BigDecimal costQty; private String costQty; /** åä½ */ @Excel(name = "åä½") @@ -83,7 +83,4 @@ private Date updateTime; public void setCostQty(String count) { } } billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.billion.common.annotation.Excel; import com.billion.main.common.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -14,7 +15,7 @@ * @date 2024-11-25 */ @Data public class BsBomInfo public class BsBomInfo extends BaseEntity { private static final long serialVersionUID = 1L; billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java
@@ -1,25 +1,19 @@ package com.billion.main.da.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.billion.common.annotation.Log; import com.billion.common.core.controller.BaseController; import com.billion.common.core.domain.AjaxResult; import com.billion.common.core.page.TableDataInfo; import com.billion.common.enums.BusinessType; import com.billion.common.utils.poi.ExcelUtil; import com.billion.main.da.domain.DaMaterialCollection; import com.billion.main.da.service.IDaMaterialCollectionService; import com.billion.common.utils.poi.ExcelUtil; import com.billion.common.core.page.TableDataInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * ç©æééController billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java
@@ -1,7 +1,6 @@ package com.billion.main.da.domain; import com.billion.common.annotation.Excel; import com.billion.main.common.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -14,7 +13,7 @@ * @date 2025-02-12 */ @Data public class DaStationCollection extends BaseEntity public class DaStationCollection { private static final long serialVersionUID = 1L; billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java
@@ -57,6 +57,20 @@ /** å½å订åå·²ä¸çº¿æ°é */ @Excel(name = "å½å订åå·²ä¸çº¿æ°é") private Long nowQty; private String nowQty; /** å建è */ private String createBy; /** å建æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** æ´æ°è */ private String updateBy; /** æ´æ°æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; } billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.billion.common.annotation.Excel; import com.billion.main.common.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -14,7 +15,7 @@ * @date 2024-11-20 */ @Data public class OmProductionOrderInfo public class OmProductionOrderInfo extends BaseEntity { @TableId /** 主é®id */ billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java
@@ -3,10 +3,7 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.billion.common.core.domain.entity.SysUser; import com.billion.common.core.domain.model.LoginUser; import com.billion.common.exception.ServiceException; import com.billion.common.utils.SecurityUtils; import com.billion.main.om.domain.OmOrderScheduling; import com.billion.main.om.mapper.OmOrderSchedulingMapper; import com.billion.main.om.service.IOmOrderSchedulingService; @@ -66,12 +63,12 @@ if (CollUtil.isNotEmpty(list)){ throw new ServiceException(MessageFormat.format("å·²åå¨æ»æåºåå·ä¸º{0}çæ°æ®",omOrderScheduling.getSfcCode())); } LoginUser loginUser = SecurityUtils.getLoginUser(); SysUser user = loginUser.getUser(); // LoginUser loginUser = SecurityUtils.getLoginUser(); // SysUser user = loginUser.getUser(); omOrderScheduling.setCreateTime(new Date()); omOrderScheduling.setUpdateTime(new Date()); omOrderScheduling.setCreateBy(user.getUserName()); omOrderScheduling.setUpdateBy(user.getUserName()); // omOrderScheduling.setCreateBy(user.getUserName()); // omOrderScheduling.setUpdateBy(user.getUserName()); return omOrderSchedulingMapper.insertOmOrderScheduling(omOrderScheduling); } @@ -90,10 +87,10 @@ if (CollUtil.isNotEmpty(list)){ throw new ServiceException(MessageFormat.format("å·²åå¨æ»æåºåå·ä¸º{0}çæ°æ®",omOrderScheduling.getSfcCode())); } LoginUser loginUser = SecurityUtils.getLoginUser(); SysUser user = loginUser.getUser(); // LoginUser loginUser = SecurityUtils.getLoginUser(); // SysUser user = loginUser.getUser(); omOrderScheduling.setUpdateTime(new Date()); omOrderScheduling.setUpdateBy(user.getUserName()); // omOrderScheduling.setUpdateBy(user.getUserName()); return omOrderSchedulingMapper.updateOmOrderScheduling(omOrderScheduling); } billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java
@@ -22,13 +22,10 @@ public class CustomRunner implements ApplicationRunner { @Autowired private MiloService miloService; @Autowired public IDaParamCollectionService daParamCollectionService; @Autowired public IDaStationCollectionService daStationCollectionService; @Autowired public IOmProductionOrderInfoService omProductionOrderInfoService; @Autowired @@ -50,7 +47,6 @@ Constants.PLC1.add(Constants.C020); Constants.PLC1.add(Constants.C030); Constants.PLC1.add(Constants.C050); Constants.PLC1.add(Constants.C060); //PLC2设å¤//ææ¥ä¸ä¸çº¿ Constants.PLC2.add(Constants.OP005); Constants.PLC2.add(Constants.OP010); @@ -114,7 +110,7 @@ Constants.ONLINE.add(Constants.C005); Constants.ONLINE.add(Constants.OP005); //ä¸çº¿å·¥ä½ Constants.OFFLINE.add(Constants.C070); Constants.OFFLINE.add(Constants.C060); Constants.OFFLINE.add(Constants.OP310); OPCUaSubscription OPCUaSubscription = new OPCUaSubscription(miloService, @@ -135,77 +131,87 @@ public List<String> getList(){ List<String> lists = new ArrayList<>(); //PLC1 lists.add("PLC1.C005.RecordData"); lists.add("PLC1.C005.WorkOrderRequest");//请æ±å·¥å lists.add("PLC1.C010.RecordData"); lists.add("PLC1.C020.RecordData"); lists.add("PLC1.C030.RecordData"); lists.add("PLC1.C050.RecordData"); lists.add("PLC1.C060.RecordData"); lists.add("PLC1.C070.RecordData"); //PLC2 lists.add("PLC2.OP005.RecordData"); lists.add("PLC2.OP010.WorkOrderRequest");//请æ±å·¥å lists.add("PLC2.OP020.RecordData"); lists.add("PLC2.OP040.RecordData"); lists.add("PLC2.OP045.RecordData"); lists.add("PLC2.OP060.RecordData"); lists.add("PLC2.OP070.RecordData"); lists.add("PLC2.OP075.RecordData"); lists.add("PLC2.OP080.RecordData"); lists.add("PLC2.OP090.RecordData"); lists.add("PLC2.OP095-1.RecordData"); lists.add("PLC2.OP095-2.RecordData"); lists.add("PLC2.OP100-1.RecordData"); lists.add("PLC2.OP100-2.RecordData"); lists.add("PLC2.OP120.RecordData"); lists.add("PLC2.P010.RecordData"); lists.add("PLC2.P010.WorkOrderRequest");//请æ±å·¥å //PLC3 lists.add("PLC3.OP130.RecordData"); lists.add("PLC3.OP145-1.RecordData"); lists.add("PLC3.OP145-2.RecordData"); lists.add("PLC3.OP150-1.RecordData"); lists.add("PLC3.OP150-2.RecordData"); lists.add("PLC3.OP160.RecordData"); lists.add("PLC3.OP165-1.RecordData"); lists.add("PLC3.OP165-2.RecordData"); lists.add("PLC3.OP170-1.RecordData"); lists.add("PLC3.OP170-2.RecordData"); lists.add("PLC3.OP180.RecordData"); lists.add("PLC3.OP190-1.RecordData"); lists.add("PLC3.OP190-2.RecordData"); lists.add("PLC3.OP200-1.RecordData"); lists.add("PLC3.OP200-2.RecordData"); lists.add("PLC3.OP210-1.RecordData"); lists.add("PLC3.OP210-2.RecordData"); lists.add("PLC3.OP220-1.RecordData"); lists.add("PLC3.OP220-2.RecordData"); lists.add("PLC3.OP230-1.RecordData"); lists.add("PLC3.OP230-2.RecordData"); lists.add("PLC3.OP240-1.RecordData"); lists.add("PLC3.OP240-2.RecordData"); lists.add("PLC3.OP250-1.RecordData"); lists.add("PLC3.OP250-2.RecordData"); lists.add("PLC3.OP260-1.RecordData"); lists.add("PLC3.OP260-2.RecordData"); lists.add("PLC3.OP270-1.RecordData"); lists.add("PLC3.OP270-2.RecordData"); lists.add("PLC3.OP275.RecordData"); lists.add("PLC3.OP280.RecordData"); lists.add("PLC3.OP290-1.RecordData"); lists.add("PLC3.OP290-2.RecordData"); lists.add("PLC3.OP295.RecordData"); lists.add("PLC3.OP300.RecordData"); lists.add("PLC3.OP310.RecordData"); //PLC4 lists.add("PLC4.C040.RecordData"); lists.add("PLC4.OP030.RecordData"); lists.add("PLC4.OP050.RecordData"); lists.add("PLC4.OP070.RecordData"); lists.add("PLC3.OP110.RecordData"); lists.add("PLC3.OP140.RecordData"); // //PLC1 // lists.add("PLC1.C005.RecordData"); // lists.add("PLC1.C005.WorkOrderRequest");//请æ±å·¥å // lists.add("PLC1.C010.RecordData"); // lists.add("PLC1.C020.RecordData"); // lists.add("PLC1.C030.RecordData"); // lists.add("PLC1.C050.RecordData"); // lists.add("PLC1.C060.RecordData"); // //PLC2 // lists.add("PLC2.OP005.RecordData"); // lists.add("PLC2.OP010.WorkOrderRequest");//请æ±å·¥å // lists.add("PLC2.OP020.RecordData"); // lists.add("PLC2.OP040.RecordData"); // lists.add("PLC2.OP045.RecordData"); // lists.add("PLC2.OP060.RecordData"); // lists.add("PLC2.OP070.RecordData"); // lists.add("PLC2.OP075.RecordData"); // lists.add("PLC2.OP080.RecordData"); // lists.add("PLC2.OP090.RecordData"); // lists.add("PLC2.OP095-1.RecordData"); // lists.add("PLC2.OP095-2.RecordData"); // lists.add("PLC2.OP100-1.RecordData"); // lists.add("PLC2.OP100-2.RecordData"); // lists.add("PLC2.OP120.RecordData"); // lists.add("PLC2.P010.RecordData"); // lists.add("PLC2.P010.WorkOrderRequest");//请æ±å·¥å // //PLC3 // lists.add("PLC3.OP130.RecordData"); // lists.add("PLC3.OP145-1.RecordData"); // lists.add("PLC3.OP145-2.RecordData"); // lists.add("PLC3.OP150-1.RecordData"); // lists.add("PLC3.OP150-2.RecordData"); // lists.add("PLC3.OP160.RecordData"); // lists.add("PLC3.OP165-1.RecordData"); // lists.add("PLC3.OP165-2.RecordData"); // lists.add("PLC3.OP170-1.RecordData"); // lists.add("PLC3.OP170-2.RecordData"); // lists.add("PLC3.OP180.RecordData"); // lists.add("PLC3.OP190-1.RecordData"); // lists.add("PLC3.OP190-2.RecordData"); // lists.add("PLC3.OP200-1.RecordData"); // lists.add("PLC3.OP200-2.RecordData"); // lists.add("PLC3.OP210-1.RecordData"); // lists.add("PLC3.OP210-2.RecordData"); // lists.add("PLC3.OP220-1.RecordData"); // lists.add("PLC3.OP220-2.RecordData"); // lists.add("PLC3.OP230-1.RecordData"); // lists.add("PLC3.OP230-2.RecordData"); // lists.add("PLC3.OP240-1.RecordData"); // lists.add("PLC3.OP240-2.RecordData"); // lists.add("PLC3.OP250-1.RecordData"); // lists.add("PLC3.OP250-2.RecordData"); // lists.add("PLC3.OP260-1.RecordData"); // lists.add("PLC3.OP260-2.RecordData"); // lists.add("PLC3.OP270-1.RecordData"); // lists.add("PLC3.OP270-2.RecordData"); // lists.add("PLC3.OP275.RecordData"); // lists.add("PLC3.OP280.RecordData"); // lists.add("PLC3.OP290-1.RecordData"); // lists.add("PLC3.OP290-2.RecordData"); // lists.add("PLC3.OP295.RecordData"); // lists.add("PLC3.OP300.RecordData"); // lists.add("PLC3.OP310.RecordData"); // //PLC4 // lists.add("PLC4.C040.RecordData"); // lists.add("PLC4.OP030.RecordData"); // lists.add("PLC4.OP050.RecordData"); // lists.add("PLC4.OP070.RecordData"); // lists.add("PLC3.OP110.RecordData"); // lists.add("PLC3.OP140.RecordData"); //TEST lists.add("TEST.C005.RecordData"); lists.add("TEST.C005.WorkOrderRequest"); lists.add("TEST.C060.RecordData"); lists.add("TEST.OP005.RecordData"); lists.add("TEST.OP005.WorkOrderRequest"); lists.add("TEST.OP010.RecordData"); lists.add("TEST.OP310.RecordData"); lists.add("TEST.P010.RecordData"); lists.add("TEST.P010.WorkOrderRequest"); billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -1,7 +1,6 @@ package com.billion.main.plcServer.sub; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.billion.common.utils.StringUtils; import com.billion.main.bs.domain.BsBomChildInfo; import com.billion.main.bs.service.IBsBomChildInfoService; import com.billion.main.constant.Constants; @@ -24,7 +23,9 @@ import com.kangaroohy.milo.service.MiloService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import com.billion.main.plcServer.util.TimeUtil; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -33,6 +34,8 @@ @Slf4j @Component public class OPCUaSubscription implements SubscriptionCallback { public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static MiloService miloService; public IDaParamCollectionService daParamCollectionService; public IDaStationCollectionService daStationCollectionService; @@ -89,12 +92,12 @@ if (Constants.RecordData.equals(tab)){ //å·¥ç«äº¤äºåå§å if (Constants.ZERO.equals(valueString)){ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("0").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(0).build()); //请æ±è¿ç« } else if (Constants.ONE.equals(valueString)){ //1.1//é¦å·¥ç« if(Constants.ONLINE.contains(device)){ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); } //é¤é¦å·¥ç«ææå·¥ç« else if(Constants.PLC1.contains(device) || @@ -106,7 +109,7 @@ //æ ¡éªSFCCodeæ¯å¦åå¨ Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue(); if (SFCCode == null ) { miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("23").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(23).build()); } else { OmOrderScheduling omOrderScheduling = new OmOrderScheduling(); List<OmOrderScheduling> resultList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling); @@ -116,7 +119,7 @@ bsbomChildInfo.setBomCode(resultList.get(0).getWorkOrderNo()); //ä¸åé æ¹ formula(thoroughfare, device, bsbomChildInfo); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); } } //åºç«ä¿åæ°æ® @@ -129,7 +132,7 @@ Object workOrderNumber = miloService.readFromOpcUa(thoroughfare + "." + device + ".WorkOrderNumber").getValue(); Object nowQty = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue(); omOrderScheduling.setWorkOrderNo(workOrderNumber.toString()); omOrderScheduling.setNowQty((Long) nowQty); omOrderScheduling.setNowQty(nowQty.toString()); omOrderScheduling.setSfcCode(SFCCode.toString()); //æçç»å®SFCCodeåå·¥åå产线 if(Constants.OP005.equals(device)){ @@ -140,7 +143,7 @@ } omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling); }else if(Constants.OFFLINE.contains(device)){ if(Constants.C070.equals(device)){ if(Constants.C060.equals(device)){ omOrderScheduling.setRemarks("Head"); omOrderScheduling.setSfcCode(SFCCode.toString()); List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling); @@ -175,7 +178,7 @@ Object workOrderNumber = miloService.readFromOpcUa(thoroughfare + "." + device + ".WorkOrderNumber").getValue(); Object nowQty = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue(); omOrderScheduling.setWorkOrderNo(workOrderNumber.toString()); omOrderScheduling.setNowQty((Long) nowQty); omOrderScheduling.setNowQty(nowQty.toString()); omOrderScheduling.setSfcCode(SFCCode.toString()); omOrderScheduling.setRemarks("Pre"); omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling); @@ -194,50 +197,54 @@ //æ¥è¯¢descriptiveå段çäº1çéé项ä¿åå°æ«ç ä¿åå°da_material_collection表é DaCollectionParamConf daCollectionParamConf1 = new DaCollectionParamConf(); daCollectionParamConf1.setProcessesCode(device); daCollectionParamConf1.setDescriptive("1"); daCollectionParamConf1.setDescriptive("3"); List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1); for (DaCollectionParamConf conf : daCollectionParamConfList1) { String gatherAddress = conf.getGatherAddress(); Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // è·ååå§å¼å¯¹è±¡â:ml-citation{ref="4" data="citationList"} if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) { log.warn("ééå°å{}è¿å空å¼ï¼è·³è¿åå¨", gatherAddress); continue; // ç»æ¢å½å循ç¯è¿ä»£â:ml-citation{ref="1,2" data="citationList"} if (valueObj != null ) { DaMaterialCollection materialCollection = new DaMaterialCollection(); materialCollection.setSfcCode(SFCCode.toString()); materialCollection.setLocationCode(device); materialCollection.setParamName(conf.getParameterSetName()); materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue()); materialCollection.setCollectTime(new Date()); daMaterialCollectionService.insertDaMaterialCollection(materialCollection); } DaMaterialCollection materialCollection = new DaMaterialCollection(); materialCollection.setSfcCode(SFCCode.toString()); materialCollection.setLocationCode(device); materialCollection.setParamName(conf.getParameterSetName()); materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue()); materialCollection.setCollectTime(new Date()); daMaterialCollectionService.insertDaMaterialCollection(materialCollection); } //æ¥è¯¢descriptiveå段çäº2çéé项ä¿åå°æ«ç ä¿åå°da_param_collection表é DaCollectionParamConf daCollectionParamConf2 = new DaCollectionParamConf(); daCollectionParamConf2.setProcessesCode(device); daCollectionParamConf2.setDescriptive("2"); daCollectionParamConf2.setDescriptive("4"); List<DaCollectionParamConf> daCollectionParamConfList2 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf2); for (DaCollectionParamConf conf : daCollectionParamConfList2) { String gatherAddress = conf.getGatherAddress(); Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // è·ååå§å¼å¯¹è±¡â:ml-citation{ref="4" data="citationList"} if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) { log.warn("ééå°å{}è¿å空å¼ï¼è·³è¿åå¨", gatherAddress); continue; // ç»æ¢å½å循ç¯è¿ä»£â:ml-citation{ref="1,2" data="citationList"} if (valueObj != null ) { DaParamCollection paramCollection = new DaParamCollection(); paramCollection.setSfcCode(SFCCode.toString()); paramCollection.setLocationCode(device); paramCollection.setParamName(conf.getParameterSetName()); paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue()); paramCollection.setCollectionTime(new Date()); daParamCollectionService.insertDaParamCollection(paramCollection); } DaParamCollection paramCollection = new DaParamCollection(); paramCollection.setSfcCode(SFCCode.toString()); paramCollection.setLocationCode(device); paramCollection.setParamName(conf.getParameterSetName()); paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue()); paramCollection.setCollectionTime(new Date()); daParamCollectionService.insertDaParamCollection(paramCollection); } DaStationCollection daStationCollection = new DaStationCollection(); daStationCollection.setLocationCode(device); daStationCollection.setSfcCode(SFCCode.toString()); daStationCollection.setInboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime").getValue()); daStationCollection.setOutboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime").getValue()); Object StationStatus = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus").getValue(); Date startTime = new Date(); ReadWriteEntity startTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime");//è¿ç«æ¶é´ startTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(startTimeRead.getValue().toString()))); daStationCollection.setInboundTime( startTime); Date stopTime = new Date(); ReadWriteEntity stopTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//è¿ç«æ¶é´ stopTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(stopTimeRead.getValue().toString()))); daStationCollection.setOutboundTime( stopTime); daStationCollection.setStatus(StationStatus.toString()); daStationCollectionService.insertDaStationCollection(daStationCollection); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("21").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build()); } } } @@ -251,7 +258,7 @@ try { if (Constants.WorkOrderRequest.equals(tab)) { if (Constants.ZERO.equals(valueString)) { miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("0").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(0).build()); }else if (Constants.ONE.equals(valueString)){ if (Constants.OP005.equals(device)){ // æ¥è¯¢æ°æ®åºè·å符åæ¡ä»¶ç订åä¿¡æ¯ @@ -260,7 +267,6 @@ //å¤æå½åä¸åæ°éæ¯å¦æ»¡è¶³è®¡åæ°é //æ´æ°å·¥åç¶æ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getBodyOrder.getWorkOrderNo()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getBodyOrder.getPlanQty())).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getBodyOrder.getEngineType()).build()); //çæsnç SysCount serialNumber = sysCountService.getSerialNumber(); @@ -300,9 +306,12 @@ if (Objects.equals(getBodyOrder2.getBodyQty(), getBodyOrder2.getPlanQty())){ omProductionOrderInfoService.updateBodyStatus2(); } miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getBodyOrder2.getBodyQty()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getBodyOrder2.getBodyQty()).build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build()); } else{ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build()); } } else if (Constants.C005.equals(device)) { // æ¥è¯¢æ°æ®åºè·å符åæ¡ä»¶ç订åä¿¡æ¯ OmProductionOrderInfo getHeadOrder = omProductionOrderInfoService.getHeadOrder(); @@ -310,7 +319,6 @@ //å¤æå½åä¸åæ°éæ¯å¦æ»¡è¶³è®¡åæ°é //æ´æ°å·¥åç¶æ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getHeadOrder.getWorkOrderNo()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getHeadOrder.getPlanQty())).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getHeadOrder.getEngineType()).build()); //çæsnç SysCount headNumber = sysCountService.getHeadNumber(); @@ -350,8 +358,11 @@ if (Objects.equals(getHeadOrder2.getHeadQty(), getHeadOrder2.getPlanQty())){ omProductionOrderInfoService.updateHeadStatus2(); } miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getHeadOrder2.getHeadQty()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getHeadOrder2.getHeadQty()).build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build()); } else{ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build()); } } else if (Constants.P010.equals(device)) { // æ¥è¯¢æ°æ®åºè·å符åæ¡ä»¶ç订åä¿¡æ¯ @@ -360,7 +371,6 @@ //å¤æå½åä¸åæ°éæ¯å¦æ»¡è¶³è®¡åæ°é //æ´æ°å·¥åç¶æ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getPreOrder.getWorkOrderNo()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getPreOrder.getPlanQty())).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getPreOrder.getEngineType()).build()); //çæsnç SysCount preNumber = sysCountService.getPreNumber(); @@ -399,8 +409,11 @@ if (Objects.equals(getPreOrder2.getPreQty(), getPreOrder2.getPlanQty())){ omProductionOrderInfoService.updatePreStatus2(); } miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getPreOrder2.getPreQty()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getPreOrder2.getPreQty()).build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build()); } else{ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build()); } } } @@ -415,9 +428,9 @@ List<BsBomChildInfo> bomChildList = bsBomChildInfoService.selectBsBomChildInfoList(bsbomChildInfo); for (int i = 1; i <= bomChildList.size(); i++) { // çæ MaterialCode èç¹ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material1Code"+ i).value(bomChildList.get(i-1).getMaterialCode()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material"+ i +"Code").value(bomChildList.get(i-1).getMaterialCode()).build()); // çæ MaterialNumber èç¹ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material1Number"+ i).value(bomChildList.get(i-1).getCostQty()).build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material"+ i +"Number").value(Integer.parseInt(bomChildList.get(i-1).getCostQty())).build()); } } billion-main/src/main/java/com/billion/main/plcServer/util/TimeUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,139 @@ package com.billion.main.plcServer.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.TimeZone; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TimeUtil { public static void main(String[] args) { String dateString = "Tue May 14 18:25:18 CST 2024"; // System.out.println(test(dateString)); // String str = "OP330"; // System.out.println(str.substring(0,5)); // String tightenData = "[9.077463,12.0,OK,OK]"; // tightenData = tightenData.replace("[", "").replace("]", "").replace(" ", ""); // String[] tightenDataParts = tightenData.split(","); // for (int i = 0; i < tightenDataParts.length; i++) { // System.out.println(tightenDataParts[i]); // } String originalString = "[3.6,7.8,OK,OK]"; String modifiedString = originalString.replaceFirst("OK", "NG"); System.out.println(modifiedString); // è¾åº: [3.6,7.8,NG,OK] // System.out.println(isNumberInRange(7.7, 7.5, 8.5)); // System.out.println(test( stringProcessing("DateTime{utcTime=133601559184960000, javaDate=Tue May 14 18:25:18 CST 2024}"))); } public static String replaceNumber(String input) { String regex = ",(\\d+),"; String replacement = ",NG,"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); return matcher.replaceAll(replacement); } // æ£æ¥ä¸ä¸ªæ°æ¯å¦å¨ä¸¤ä¸ªæ°å®ä¹çåºé´å ï¼ä¸å å«è¾¹çï¼ public static boolean isNumberInRange(Double number, Double start, Double end) { return number >= start && number <= end; } public static String stringProcessing(String dateTimeStr){ String result = ""; // æ¾å° "javaDate=" çä½ç½® int javaDateIndex = dateTimeStr.indexOf("javaDate="); if (javaDateIndex != -1) { // ä» "javaDate=" åé¢å¼å§æªå javaDateIndex += "javaDate=".length(); // æ¾å°æ¥ææ¶é´å符串ç»æçä½ç½®ï¼è¿éå设æ¯å符串çç»å°¾æè ç©ºæ ¼çä½ç½® int endIndex = dateTimeStr.indexOf('}', javaDateIndex); if (endIndex == -1) { // å¦æ没ææ¾å°ç©ºæ ¼ï¼å°±åå°å符串çæ«å°¾ endIndex = dateTimeStr.length(); } // ä½¿ç¨ substring æ¹æ³æªåæ¥ææ¶é´é¨å String dateTimePart = dateTimeStr.substring(javaDateIndex, endIndex); result = dateTimePart; } else { System.out.println("javaDate= not found in the string."); } return result; } public static String getTimestamp(String param){ String result = ""; // å®ä¹æ¥ææ¶é´æ ¼å¼åæ¶åº SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // CSTé常表示ä¸å½æ åæ¶é´ï¼å³ä¸å «åº try { // 解ææ¥ææ¶é´å符串 Date date = sdf.parse("Mon Jan 01 17:05:23 CST 2024"); // è·åæ¶é´æ³ï¼æ¯«ç§ï¼ long timestamp = date.getTime(); // è¾åº13ä½æ¶é´æ³ result = String.valueOf(timestamp); } catch (ParseException e) { e.printStackTrace(); } return result; } public static String getYyyyDdMm(String inputDate){ String outputPattern = "yyyy-MM-dd HH:mm:ss"; // å®ä¹ä¸ä¸ªè§£æå¨ï¼ç¨äºå¿½ç¥æ¶åºï¼ä» ä½ä¸ºç¤ºä¾ï¼å¯è½éè¦è°æ´ä»¥å¤çä¸åçè¾å ¥ï¼ SimpleDateFormat parser = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); parser.setLenient(false); // 设置ä¸å®½æ¾ï¼ä»¥ä¸¥æ ¼å¹é æ ¼å¼ // 解ææ¥æå符串 Date date = null; try { date = parser.parse(inputDate); } catch (ParseException e) { e.printStackTrace(); } // å®ä¹ä¸ä¸ªæ ¼å¼åå¨ï¼ç¨äºè¾åºæéçæ ¼å¼ SimpleDateFormat formatter = new SimpleDateFormat(outputPattern); // æ ¼å¼åæ¥æ String outputDate = formatter.format(date); return outputDate; } public static String test(String param){ String str = ""; // å建ä¸ä¸ªSimpleDateFormat对象æ¥è§£æè¾å ¥çæ¥æå符串ï¼å设CST为ä¸å½æ åæ¶é´ï¼ SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); inputFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置为ä¸å½æ¶åº Date date = null; try { date = inputFormat.parse(param); } catch (ParseException e) { e.printStackTrace(); } // å建ä¸ä¸ªSimpleDateFormat对象æ¥æ ¼å¼åæ¥æ为UTCæ¶é´ SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); outputFormat.setTimeZone(TimeZone.getTimeZone("UTC")); // 设置为UTCæ¶åº // æ ¼å¼åæ¥æ if (date != null) { str = outputFormat.format(date); } return str; } } billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml
@@ -37,7 +37,7 @@ <if test="parameterSetName != null and parameterSetName != ''"> and parameter_set_name like concat('%', #{parameterSetName}, '%')</if> <if test="productCode != null and productCode != ''"> and product_code like concat('%', #{productCode}, '%')</if> <if test="gatherAddress != null and gatherAddress != ''"> and gather_address like concat('%', #{gatherAddress}, '%')</if> <if test="descriptive != null and descriptive != ''"> and descriptive like concat('%', #{descriptive}, '%')</if> </where> </select>