From 09faed7bf8c78c83bffac978e8a2cfe10d2aa261 Mon Sep 17 00:00:00 2001 From: George Date: Wed, 4 Mar 2026 09:09:34 +0800 Subject: [PATCH] =?UTF-8?q?20260304:=E4=BF=AE=E5=A4=8Dbug=EF=BC=9A?= =?UTF-8?q?=E7=BD=91=E5=85=B3=E4=BA=A7=E5=93=81=E4=BF=AE=E6=94=B9=E5=AD=90?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E4=BB=8E=E6=9C=BA=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ProductSubGatewayServiceImpl.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ProductSubGatewayServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ProductSubGatewayServiceImpl.java index 13ca9793..be52cb0d 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ProductSubGatewayServiceImpl.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ProductSubGatewayServiceImpl.java @@ -3,6 +3,7 @@ package com.fastbee.iot.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fastbee.common.exception.ServiceException; import com.fastbee.common.utils.SecurityUtils; import com.fastbee.iot.domain.ModbusParams; import com.fastbee.iot.domain.ProductModbusJob; @@ -176,25 +177,28 @@ public class ProductSubGatewayServiceImpl extends ServiceImpl productSubGatewayList = baseMapper.selectList(queryWrapper); Map productSubGatewayMap = productSubGatewayList.stream().collect(Collectors.toMap(ProductSubGateway::getSubProductId, ProductSubGateway::getSlaveId)); List editList = list.stream().filter(i -> !i.getSlaveId().equals(productSubGatewayMap.get(i.getSubProductId()))).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(editList)) { + throw new ServiceException("地址已修改,请勿重复修改!"); + } baseMapper.updateBatch(list, list.size()); List editSubProductIdList = editList.stream().map(ProductSubGateway::getSubProductId).collect(Collectors.toList()); Map oldEdidMap = productSubGatewayList.stream().filter(i -> editSubProductIdList.contains(i.getSubProductId())).collect(Collectors.toList()) .stream().collect(Collectors.toMap(ProductSubGateway::getSubProductId, Function.identity())); - LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); - queryWrapper1.in(ProductModbusJob::getProductId, editSubProductIdList); - List modbusJobList = productModbusJobMapper.selectList(queryWrapper1); + LambdaQueryWrapper modbusJobQueryWrapper = new LambdaQueryWrapper<>(); + modbusJobQueryWrapper.in(ProductModbusJob::getProductId, editSubProductIdList); + List modbusJobList = productModbusJobMapper.selectList(modbusJobQueryWrapper); Map> oldMap = new HashMap<>(2); if (CollectionUtils.isNotEmpty(modbusJobList)) { oldMap = modbusJobList.stream().collect(Collectors.groupingBy(ProductModbusJob::getProductId)); } - LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.in(ModbusParams::getProductId, editSubProductIdList); - List modbusParamsList = modbusParamsMapper.selectList(queryWrapper2); + LambdaQueryWrapper modbusParamsQueryWrapper = new LambdaQueryWrapper<>(); + modbusParamsQueryWrapper.in(ModbusParams::getProductId, editSubProductIdList); + List modbusParamsList = modbusParamsMapper.selectList(modbusParamsQueryWrapper); for (ProductSubGateway productSubGateway : editList) { Integer slaveId = productSubGateway.getSlaveId(); ProductSubGateway oldProductSubGateway = oldEdidMap.get(productSubGateway.getSubProductId()); int subIndex = String.valueOf(oldProductSubGateway.getSlaveId()).length() == 1 ? 2 : String.valueOf(oldProductSubGateway.getSlaveId()).length(); - List productModbusJobList = oldMap.get(productSubGateway.getSubProductId()); + List productModbusJobList = oldMap.getOrDefault(productSubGateway.getSubProductId(), Collections.emptyList()); for (ProductModbusJob productModbusJob : productModbusJobList) { String oldCommand = productModbusJob.getCommand(); String substring = oldCommand.substring(subIndex);