From 7781ad27ef7654976517a7792a7fe90a7e014094 Mon Sep 17 00:00:00 2001 From: qiezi <15576055375@163.com> Date: Wed, 10 Jul 2024 14:43:32 +0800 Subject: [PATCH] 2024-06-21 --- .../cdc/controller/CollectController.java | 9 ++++ .../impl/CollectRecordServiceImpl.java | 16 +++++--- .../modules/cdc/utils/CollectUtils.java | 41 +++++++++++++++++++ .../modules/cdc/vo/CollectRecordVo.java | 14 +++++++ .../service/impl/CodeDrawingServiceImpl.java | 3 ++ .../impl/CodeItemValueServiceImpl.java | 13 ++++++ src/main/resources/application-dev.yml | 1 + 7 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/spring/modules/cdc/vo/CollectRecordVo.java diff --git a/src/main/java/com/spring/modules/cdc/controller/CollectController.java b/src/main/java/com/spring/modules/cdc/controller/CollectController.java index 4929e994..696a32ed 100644 --- a/src/main/java/com/spring/modules/cdc/controller/CollectController.java +++ b/src/main/java/com/spring/modules/cdc/controller/CollectController.java @@ -6,6 +6,7 @@ import com.spring.common.utils.R; import com.spring.modules.cdc.entity.Collect; import com.spring.modules.cdc.service.ICollectService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,6 +21,9 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/collect/info") public class CollectController { + + @Value("${collect.time}") + private int time; @Autowired private ICollectService collectService; @@ -32,6 +36,11 @@ public class CollectController { return R.ok().put("rows", list); } + @PostMapping("/base") + public R base(){ + return R.ok().put("time", time); + } + /** * 新增采菊数据定义 */ diff --git a/src/main/java/com/spring/modules/cdc/service/impl/CollectRecordServiceImpl.java b/src/main/java/com/spring/modules/cdc/service/impl/CollectRecordServiceImpl.java index c618bf02..36c692a5 100644 --- a/src/main/java/com/spring/modules/cdc/service/impl/CollectRecordServiceImpl.java +++ b/src/main/java/com/spring/modules/cdc/service/impl/CollectRecordServiceImpl.java @@ -7,6 +7,7 @@ import com.spring.modules.cdc.entity.Device; import com.spring.modules.cdc.mapper.CollectRecordMapper; import com.spring.modules.cdc.service.ICollectRecordService; import com.spring.modules.cdc.service.ICollectService; +import com.spring.modules.cdc.vo.CollectRecordVo; import com.spring.modules.cdc.vo.DeviceVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -76,23 +77,25 @@ public class CollectRecordServiceImpl extends ServiceImpl> map = deviceVoList.stream().collect(Collectors.groupingBy(DeviceVo::getCollectId)); Map> collect = collectService.lambdaQuery().in(Collect::getCollectId, map.keySet()).list().stream().collect(Collectors.groupingBy(Collect::getCollectId)); - - // 设备信息集合 - List list = new ArrayList<>(); for (String collectId : map.keySet()) { List deviceVos = map.get(collectId); List collects = collect.get(collectId); + // 设备信息集合 + List list = new ArrayList<>(); for (DeviceVo deviceVo : deviceVos) { - CollectRecord collectRecord = getCollectRecord(deviceVo, collects, deviceVo.getValue()); + CollectRecordVo collectRecord = getCollectRecord(deviceVo, collects, deviceVo.getValue()); list.add(collectRecord); updateCollectCurrentValue(collectRecord); save(collectRecord); } + // 处理 短信 + + // 处理 邮件 } } - private static CollectRecord getCollectRecord(DeviceVo device, List c1, BigDecimal i) { - CollectRecord collectRecord = new CollectRecord(); + private static CollectRecordVo getCollectRecord(DeviceVo device, List c1, BigDecimal i) { + CollectRecordVo collectRecord = new CollectRecordVo(); collectRecord.setDeviceNo(device.getDeviceNo()); collectRecord.setCollectId(c1.get(0).getCollectId()); collectRecord.setItemValue(i); @@ -100,6 +103,7 @@ public class CollectRecordServiceImpl extends ServiceImpl getReadS7XMZValueList(List deviceList,String IP,BigDecimal defaultValue){ + S7Connector s7Connector = S7ConnectorFactory + .buildTCPConnector() + .withHost(IP) + .withRack(0) + .withSlot(1) + .build(); + List deviceVoList = new ArrayList<>(); + try { + log.info("IP:{} 连接成功!!!", IP); + for (DeviceVo device : deviceList) { + int i = readS7XMZValue(s7Connector, device.getDeviceIp()); + deviceVoList.add(new DeviceVo(device, new BigDecimal(i),device.getCollectId())); + log.info("设备:{} 读取值:{}", device.getDeviceDesc(), i); + } + }catch (Exception e){ + log.info("IP:{} 连接失败!!!", IP); + log.info("设置默认值:{}",defaultValue); + deviceList.forEach(device -> { + deviceVoList.add(new DeviceVo(device, new BigDecimal(0),device.getCollectId())); + }); + } + return deviceVoList; + } + + private static int readS7XMZValue(S7Connector s7Connector, String address) { + String[] addressArray = address.split("\\."); + int dbNumber = Integer.parseInt(addressArray[0].replace("DB","")); + int startAddress = Integer.parseInt(addressArray[1].replace("DBW","")); + int size = 2; // INT 类型是 2 个字节 + byte[] buffer = s7Connector.read(DaveArea.DB, dbNumber, size,startAddress ); + + // 将字节数组转换为整数 + return ByteBuffer.wrap(buffer).order(ByteOrder.BIG_ENDIAN).getShort(); + } + /** * 获取三菱设备信息 读取数据 * @param deviceList 设备信息集合 diff --git a/src/main/java/com/spring/modules/cdc/vo/CollectRecordVo.java b/src/main/java/com/spring/modules/cdc/vo/CollectRecordVo.java new file mode 100644 index 00000000..73a725c1 --- /dev/null +++ b/src/main/java/com/spring/modules/cdc/vo/CollectRecordVo.java @@ -0,0 +1,14 @@ +package com.spring.modules.cdc.vo; + +import com.spring.modules.cdc.entity.CollectRecord; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectRecordVo extends CollectRecord { + + private String deviceDesc; + +} diff --git a/src/main/java/com/spring/modules/code/service/impl/CodeDrawingServiceImpl.java b/src/main/java/com/spring/modules/code/service/impl/CodeDrawingServiceImpl.java index 50c0f9c2..60bb31be 100644 --- a/src/main/java/com/spring/modules/code/service/impl/CodeDrawingServiceImpl.java +++ b/src/main/java/com/spring/modules/code/service/impl/CodeDrawingServiceImpl.java @@ -64,6 +64,9 @@ public class CodeDrawingServiceImpl extends ServiceImpl detailList = codeConditionDetailService.lambdaQuery().eq(CodeConditionDetail::getSQLStatementExecuteValueItemNo, codeItemValue.getValueItemNo()).list(); + if (detailList.isEmpty()){ + StringBuilder str = new StringBuilder("元素已被条件序号为:("); + for (CodeConditionDetail detail : detailList) { + str.append(detail.getConditionId()).append(","); + } + if (str.length() > 0) { + str.deleteCharAt(str.length() - 1); + } + str.append(")引用"); + throw new RuntimeException(str.toString()); + } lambdaUpdate() .eq(CodeItemValue::getItemNo, codeItemValue.getItemNo()) .eq(CodeItemValue::getSite, codeItemValue.getSite().trim()) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index eb1faaed..69d356ae 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -83,6 +83,7 @@ task: login-token-url: 'http://192.168.1.160:8881/#/login-token' collect: + time: 30 data: line1: 192.168.3.2 line2: 192.168.3.39