From 51eb318f6df9ebc7d1ff47522e33b2ee7cea1ba8 Mon Sep 17 00:00:00 2001 From: hdy <1105738590@qq.com> Date: 星期日, 09 三月 2025 16:30:44 +0800 Subject: [PATCH] 修改 --- billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java | 158 +++++++++-------- billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java | 22 - billion-main/pom.xml | 6 billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java | 3 billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java | 3 billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java | 9 billion-main/src/main/java/com/billion/main/plcServer/util/TimeUtil.java | 139 +++++++++++++++ billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml | 2 billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java | 16 + billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java | 3 billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java | 17 - billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java | 103 ++++++----- 12 files changed, 324 insertions(+), 157 deletions(-) diff --git a/billion-main/pom.xml b/billion-main/pom.xml index b049ba9..1117525 100644 --- a/billion-main/pom.xml +++ b/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> \ No newline at end of file diff --git a/billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java b/billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java index c6a4121..240f1df 100644 --- a/billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java +++ b/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) { - } } diff --git a/billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java b/billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java index 4da6f86..d5bcce0 100644 --- a/billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java +++ b/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; diff --git a/billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java b/billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java index 08dadb0..f298d40 100644 --- a/billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java +++ b/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 diff --git a/billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java b/billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java index d2e301c..176d4a1 100644 --- a/billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java +++ b/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; diff --git a/billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java b/billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java index 461b93c..b00837b 100644 --- a/billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java +++ b/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; } diff --git a/billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java b/billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java index 750c239..9d67aa0 100644 --- a/billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java +++ b/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 */ diff --git a/billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java b/billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java index ff9edec..d009222 100644 --- a/billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java +++ b/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); } diff --git a/billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java b/billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java index d8e94c3..6b332b3 100644 --- a/billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java +++ b/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"); diff --git a/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java b/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java index 00ed36a..8d3663b 100644 --- a/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java +++ b/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()); } } diff --git a/billion-main/src/main/java/com/billion/main/plcServer/util/TimeUtil.java b/billion-main/src/main/java/com/billion/main/plcServer/util/TimeUtil.java new file mode 100644 index 0000000..665be5b --- /dev/null +++ b/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 { + // 瑙f瀽鏃ユ湡鏃堕棿瀛楃涓� + 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); // 璁剧疆涓嶅鏉撅紝浠ヤ弗鏍煎尮閰嶆牸寮� + + // 瑙f瀽鏃ユ湡瀛楃涓� + 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 = ""; + // 鍒涘缓涓�涓猄impleDateFormat瀵硅薄鏉ヨВ鏋愯緭鍏ョ殑鏃ユ湡瀛楃涓诧紙鍋囪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(); + } + + // 鍒涘缓涓�涓猄impleDateFormat瀵硅薄鏉ユ牸寮忓寲鏃ユ湡涓篣TC鏃堕棿 + SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + outputFormat.setTimeZone(TimeZone.getTimeZone("UTC")); // 璁剧疆涓篣TC鏃跺尯 + + // 鏍煎紡鍖栨棩鏈� + if (date != null) { + str = outputFormat.format(date); + } + return str; + } + + + +} diff --git a/billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml b/billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml index 2198107..a5f1a13 100644 --- a/billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml +++ b/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> -- Gitblit v1.9.3