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);