From 635694c27dc9fc9cbaa44a24b08cb331e51babd8 Mon Sep 17 00:00:00 2001 From: qiezi <15576055375@163.com> Date: Tue, 24 Dec 2024 16:56:15 +0800 Subject: [PATCH] 20241223 --- .../impl/ModbusCommunicateServiceImpl.java | 91 +++++++++++-------- 1 file changed, 52 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java b/src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java index 3dca0358..c8bcab0d 100644 --- a/src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java @@ -134,47 +134,60 @@ public class ModbusCommunicateServiceImpl implements ModbusCommunicateService { log.info("没有维护RS232/RS485的设备信息"); return; } + // 创建线程池 + ExecutorService executor = Executors.newFixedThreadPool(list.size()); + for (EquipmentFolderLocation device : list) { - String IP = device.getIp();//IP - int PORT = device.getPort();//端口 - int unitId = device.getUnitId();// 从站ID - int ref = device.getRegisterAddress();// 开始地址 - int count = device.getRegisterNum();//数量 - String type = device.getRegisterNumColumntype();// 类型 - - EquipmentFolderSortEntity sort = equipmentFolderSortService.lambdaQuery() - .eq(EquipmentFolderSortEntity::getSite, device.getSite()) - .eq(EquipmentFolderSortEntity::getBuNo, device.getBuNo()) - .eq(EquipmentFolderSortEntity::getFileNo, device.getFileNo()) - .one(); - List values = CollectUtil.getValues(IP, PORT, unitId, ref-1, count); - if (values.size() != 2 && "float".equals(type)){ - log.info("获取数据失败"); - continue; - } - float num = registersToFloat(values.get(0), values.get(1)); - if ((num == 0 || num == 0.0) && (Objects.isNull(sort.getValue()) || "0".equalsIgnoreCase(sort.getValue()) || "0.0".equalsIgnoreCase(sort.getValue()))){ - continue; - } - Date createDate = new Date(); - EquipmentDataDetail detail = new EquipmentDataDetail(); - detail.setSite(device.getSite()); - detail.setBuNo(device.getBuNo()); - detail.setFileNo(device.getFileNo()); - detail.setValue0(String.valueOf(num)); - detail.setGroupValue(sort.getBatchNo()); - detail.setCreateDate(createDate); - detail.setEquipmentNo(device.getEquipmentNo()); - equipmentDataDetailService.save(detail); - if (num == 0 || num == 0.0){ - sort.setBatchNo(sort.getBatchNo() + 1); - } - equipmentFolderSortService.lambdaUpdate() - .set(EquipmentFolderSortEntity::getValue, String.valueOf(num)) - .set(EquipmentFolderSortEntity::getBatchNo, sort.getBatchNo()) - .eq(EquipmentFolderSortEntity::getId, sort.getId()) - .update(); + executor.submit(()->{ + try { + getDateByTransparentFlag(device); + }catch (Exception e){ + log.info("获取数据失败:{}", e.getMessage()); + } + }); + } + } + + private void getDateByTransparentFlag(EquipmentFolderLocation device) { + String IP = device.getIp();//IP + int PORT = device.getPort();//端口 + int unitId = device.getUnitId();// 从站ID + int ref = device.getRegisterAddress();// 开始地址 + int count = device.getRegisterNum();//数量 + String type = device.getRegisterNumColumntype();// 类型 + + EquipmentFolderSortEntity sort = equipmentFolderSortService.lambdaQuery() + .eq(EquipmentFolderSortEntity::getSite, device.getSite()) + .eq(EquipmentFolderSortEntity::getBuNo, device.getBuNo()) + .eq(EquipmentFolderSortEntity::getFileNo, device.getFileNo()) + .one(); + List values = CollectUtil.getValues(IP, PORT, unitId, ref-1, count); + if (values.size() != 2 && "float".equals(type)){ + log.info("获取数据失败"); + return; + } + float num = registersToFloat(values.get(0), values.get(1)); + if ((num == 0 || num == 0.0) && (Objects.isNull(sort.getValue()) || "0".equalsIgnoreCase(sort.getValue()) || "0.0".equalsIgnoreCase(sort.getValue()))){ + return; + } + Date createDate = new Date(); + EquipmentDataDetail detail = new EquipmentDataDetail(); + detail.setSite(device.getSite()); + detail.setBuNo(device.getBuNo()); + detail.setFileNo(device.getFileNo()); + detail.setValue0(String.valueOf(num)); + detail.setGroupValue(sort.getBatchNo()); + detail.setCreateDate(createDate); + detail.setEquipmentNo(device.getEquipmentNo()); + equipmentDataDetailService.save(detail); + if (num == 0 || num == 0.0){ + sort.setBatchNo(sort.getBatchNo() + 1); } + equipmentFolderSortService.lambdaUpdate() + .set(EquipmentFolderSortEntity::getValue, String.valueOf(num)) + .set(EquipmentFolderSortEntity::getBatchNo, sort.getBatchNo()) + .eq(EquipmentFolderSortEntity::getId, sort.getId()) + .update(); }