|
@@ -31,6 +31,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
+import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -214,24 +215,44 @@ public class ParkingChangeStrategyService {
|
|
|
public void saveChangeStrategyEnt(ParkingChangeStrategyUnitSaveParam param) {
|
|
public void saveChangeStrategyEnt(ParkingChangeStrategyUnitSaveParam param) {
|
|
|
log.info("保存单位分配,param:{}", JSON.toJSONString(param));
|
|
log.info("保存单位分配,param:{}", JSON.toJSONString(param));
|
|
|
|
|
|
|
|
- // 先清空
|
|
|
|
|
- parkingChangeStrategyUnitRepository.deleteByStrategyId(param.getStrategyId());
|
|
|
|
|
|
|
+ // 清空逻辑
|
|
|
|
|
+ if (CollectionUtils.isEmpty(param.getEntIds())) {
|
|
|
|
|
+ parkingChangeStrategyUnitRepository.deleteByStrategyId(param.getStrategyId());
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 校验冲突
|
|
|
|
|
+ List<KwtParkingChargeStrategyUnit> existingRelations = parkingChangeStrategyUnitRepository.queryByStrategyIdAndEnt(param.getStrategyId(), param.getEntIds());
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(existingRelations) && !param.getForceReplace()) {
|
|
|
|
|
+ Set<Long> conflictIds = existingRelations.stream()
|
|
|
|
|
+ .map(KwtParkingChargeStrategyUnit::getEntId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ String conflictNames = conflictIds.stream().map(this::getEntName).collect(Collectors.joining(","));
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, conflictNames + "已存在策略, 是否确认替换?");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- // 如果企业id不为空,构建新列表并批量插入
|
|
|
|
|
- if (CollectionUtils.isNotEmpty(param.getEntIds())) {
|
|
|
|
|
- // 构建关联表实体列表
|
|
|
|
|
- List<KwtParkingChargeStrategyUnit> insertList = param.getEntIds().stream()
|
|
|
|
|
- .map(entId -> {
|
|
|
|
|
- KwtParkingChargeStrategyUnit unit = new KwtParkingChargeStrategyUnit();
|
|
|
|
|
- unit.setStrategyId(param.getStrategyId());
|
|
|
|
|
- unit.setEntId(entId);
|
|
|
|
|
- return unit;
|
|
|
|
|
- })
|
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
-
|
|
|
|
|
- // 批量插入
|
|
|
|
|
- parkingChangeStrategyUnitRepository.saveBatch(insertList);
|
|
|
|
|
|
|
+ // 如果是强制模式,先清理掉旧的关联关系(替换)
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(existingRelations) && param.getForceReplace()) {
|
|
|
|
|
+ Set<Long> conflictIds = existingRelations.stream()
|
|
|
|
|
+ .map(KwtParkingChargeStrategyUnit::getEntId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ // 删除这些单位原本关联的旧策略记录
|
|
|
|
|
+ parkingChangeStrategyUnitRepository.deleteByEntId(conflictIds);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 正常流程
|
|
|
|
|
+ parkingChangeStrategyUnitRepository.deleteByStrategyId(param.getStrategyId());
|
|
|
|
|
+ List<KwtParkingChargeStrategyUnit> insertList = param.getEntIds().stream()
|
|
|
|
|
+ .map(entId -> {
|
|
|
|
|
+ KwtParkingChargeStrategyUnit unit = new KwtParkingChargeStrategyUnit();
|
|
|
|
|
+ unit.setStrategyId(param.getStrategyId());
|
|
|
|
|
+ unit.setEntId(entId);
|
|
|
|
|
+ return unit;
|
|
|
|
|
+ })
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ // 批量插入
|
|
|
|
|
+ parkingChangeStrategyUnitRepository.saveBatch(insertList);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|