From ef087b8e4add46746a9a63a3b5c21032d9c018ca Mon Sep 17 00:00:00 2001 From: lizhenhua <1075222162@qq.com> Date: Wed, 9 Jul 2025 12:32:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=85=E5=A4=87=E7=AE=A1=E7=90=86=20youhua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../equipment/domain/ConfigEntity.java | 7 +++ .../impl/DeptEquipmentConfigServiceImpl.java | 63 ++++++++++++++++--- .../equipment/DeptEquipmentConfigMapper.xml | 2 +- 3 files changed, 62 insertions(+), 10 deletions(-) diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/ConfigEntity.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/ConfigEntity.java index 20adf90..7120d94 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/ConfigEntity.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/ConfigEntity.java @@ -13,4 +13,11 @@ public class ConfigEntity { private String configurationDescription; + private Long deptId; + + private String remark; + + private String typeId; + + } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/impl/DeptEquipmentConfigServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/impl/DeptEquipmentConfigServiceImpl.java index b842351..f7037cf 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/impl/DeptEquipmentConfigServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/impl/DeptEquipmentConfigServiceImpl.java @@ -1,12 +1,16 @@ package com.bonus.material.equipment.service.impl; +import com.bonus.material.equipment.domain.ConfigEntity; import com.bonus.material.equipment.domain.DeptEquipmentConfig; import com.bonus.material.equipment.mapper.DeptEquipmentConfigMapper; import com.bonus.material.equipment.service.IDeptEquipmentConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; @Service public class DeptEquipmentConfigServiceImpl implements IDeptEquipmentConfigService { @@ -20,15 +24,56 @@ public class DeptEquipmentConfigServiceImpl implements IDeptEquipmentConfigServi } @Override - public int saveBatch(DeptEquipmentConfig configList) { - configList.setTypeId(configList.getEquipmentId()); - configList.setConfigValue(configList.getBasicConfig()); - //直接先删除对应的设备信息 通过公司id 和设备id进行删除 - DeptEquipmentConfig team = new DeptEquipmentConfig(); - team.setDeptId(configList.getDeptId()); - team.setTypeId(configList.getTypeId()); - mapper.deleteByDeptIdAndTypeId(team); + public int saveBatch(DeptEquipmentConfig configList) { + configList.setTypeId(configList.getEquipmentId()); + configList.setConfigValue(configList.getBasicConfig()); + DeptEquipmentConfig team = new DeptEquipmentConfig(); + team.setDeptId(configList.getDeptId()); + team.setTypeId(configList.getTypeId()); + mapper.deleteByDeptIdAndTypeId(team); - return mapper.insertOrUpdateBatch(configList); + List originalConfigs = configList.getConfigs(); + if (originalConfigs == null || originalConfigs.isEmpty()) { + return 1; // 只删除,无新增 + } + // 合并逻辑:以 deptId + typeId + configType 为 key,configValue 累加 + Map mergedMap = new LinkedHashMap<>(); + for (ConfigEntity item : originalConfigs) { + item.setDeptId(configList.getDeptId()); + item.setTypeId(configList.getTypeId()); + item.setRemark(configList.getRemark()); + String key = item.getDeptId() + "_" + item.getTypeId() + "_" + item.getConfigurationType(); + + if (mergedMap.containsKey(key)) { + ConfigEntity existing = mergedMap.get(key); + // configValue 是 String,需转数字再相加 + try { + double newVal = parseDoubleOrZero(item.getBasicConfig()); + double oldVal = parseDoubleOrZero(existing.getBasicConfig()); + double newrateVal = parseDoubleOrZero(item.getConfigurationRate()); + double oldrateVal = parseDoubleOrZero(existing.getConfigurationRate()); + existing.setBasicConfig(String.valueOf(newVal + oldVal)); + existing.setConfigurationRate(String.valueOf(newrateVal+oldrateVal)); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + } else { + mergedMap.put(key, item); + } + } + + configList.setConfigs(new ArrayList<>(mergedMap.values())); + return mapper.insertOrUpdateBatch(configList); + } + private double parseDoubleOrZero(String value) { + if (value == null || value.trim().isEmpty()) { + return 0.0; + } + try { + return Double.parseDouble(value.trim()); + } catch (NumberFormatException e) { + return 0.0; + } } + } diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/DeptEquipmentConfigMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/DeptEquipmentConfigMapper.xml index 5500109..fc6098c 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/DeptEquipmentConfigMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/DeptEquipmentConfigMapper.xml @@ -26,7 +26,7 @@ ( #{deptId}, - #{equipmentId}, + #{typeId}, #{item.configurationType}, #{item.basicConfig}, #{item.configurationRate},