|
|
@@ -26,11 +26,13 @@ import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -72,7 +74,7 @@ public class ParkingChangeStrategyService {
|
|
|
Page<KwtParkingChargeStrategy> pageByStatus = parkingChangeStrategyRepository.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
|
|
|
List<KwtParkingChargeStrategy> records = pageByStatus.getRecords();
|
|
|
if (CollectionUtils.isEmpty(records)) {
|
|
|
- log.info("当前收费策略信息");
|
|
|
+ log.info("收费策略信息空");
|
|
|
return PageDataResult.empty(param.getPageNum(), param.getPageSize());
|
|
|
}
|
|
|
List<ParkingChangeStrategyResp> changeStrategyRespList = getChangeStrategyPageResult(records);
|
|
|
@@ -87,7 +89,8 @@ public class ParkingChangeStrategyService {
|
|
|
return Wrappers.<KwtParkingChargeStrategy>lambdaQuery()
|
|
|
.eq(param.getType() != null, KwtParkingChargeStrategy::getType, param.getType())
|
|
|
.like(StringUtils.isNotBlank(param.getStrategyName()), KwtParkingChargeStrategy::getStrategyName, param.getStrategyName())
|
|
|
- .orderByDesc(KwtParkingChargeStrategy::getCreateBy);
|
|
|
+ .eq(KwtParkingChargeStrategy::getDelFlag, 0)
|
|
|
+ .orderByDesc(KwtParkingChargeStrategy::getCreateTime);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -169,18 +172,25 @@ public class ParkingChangeStrategyService {
|
|
|
* 删除收费策略
|
|
|
* @param id
|
|
|
*/
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void deleteChangeStrategy(Long id) {
|
|
|
log.info("删除收费策略,id:{}", id);
|
|
|
- // 新增
|
|
|
+ // 1.s删除
|
|
|
if (id == null) {
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.DRIVER_NOT_FOUND, "id不存在");
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.DRIVER_NOT_FOUND, "id不能为空");
|
|
|
}
|
|
|
KwtParkingChargeStrategy changeStrategy = parkingChangeStrategyRepository.getById(id);
|
|
|
if (changeStrategy == null) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.DRIVER_NOT_FOUND, "收费策略不存在");
|
|
|
}
|
|
|
- changeStrategy.setDelFlag(Global.YES);
|
|
|
- parkingChangeStrategyRepository.updateById(changeStrategy);
|
|
|
+ parkingChangeStrategyRepository.removeById(changeStrategy);
|
|
|
+
|
|
|
+ // 2.删除分配公司
|
|
|
+ List<KwtParkingChargeStrategyUnit> strategyUnitList = parkingChangeStrategyUnitRepository.queryByStrategyId(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(strategyUnitList)) {
|
|
|
+ Set<Long> ids = strategyUnitList.stream().map(KwtParkingChargeStrategyUnit::getId).collect(Collectors.toSet());
|
|
|
+ parkingChangeStrategyUnitRepository.removeBatchByIds(ids);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -202,8 +212,7 @@ public class ParkingChangeStrategyService {
|
|
|
resp.setEntId(unit.getEntId());
|
|
|
|
|
|
// 查询企业名称
|
|
|
- EntCacheResDto entCacheResDto = remoteSystemService.queryEntDetails(unit.getEntId());
|
|
|
- resp.setEntName(entCacheResDto.getFirmName());
|
|
|
+ resp.setEntName(getEntName(unit.getEntId()));
|
|
|
return resp;
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
|
@@ -214,26 +223,61 @@ public class ParkingChangeStrategyService {
|
|
|
*/
|
|
|
public void saveChangeStrategyEnt(ParkingChangeStrategyUnitSaveParam param) {
|
|
|
log.info("保存单位分配,param:{}", JSON.toJSONString(param));
|
|
|
- // 如果企业id为空,删除所以的单位关联关系
|
|
|
+
|
|
|
+ // 清空逻辑
|
|
|
if (CollectionUtils.isEmpty(param.getEntIds())) {
|
|
|
parkingChangeStrategyUnitRepository.deleteByStrategyId(param.getStrategyId());
|
|
|
- } else {
|
|
|
- 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);
|
|
|
+ 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 + "已存在策略, 是否确认替换?");
|
|
|
}
|
|
|
+
|
|
|
+ // 如果是强制模式,先清理掉旧的关联关系(替换)
|
|
|
+ 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);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 通过企业id查询企业名称
|
|
|
+ * @param entId
|
|
|
+ */
|
|
|
+ private String getEntName(Long entId) {
|
|
|
+ // 查询企业名称
|
|
|
+ EntCacheResDto entCacheResDto = remoteSystemService.queryEntDetails(entId);
|
|
|
+ if (entCacheResDto == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return entCacheResDto.getFirmName();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 查询收费策略开关
|
|
|
*/
|
|
|
@@ -244,7 +288,7 @@ public class ParkingChangeStrategyService {
|
|
|
resp.setStatus(Global.NO);
|
|
|
KwtParkingStrategySwitch strategySwitch = parkingStrategySwitchRepository.queryParkingStrategySwitch();
|
|
|
if (strategySwitch == null) {
|
|
|
- return resp;
|
|
|
+ return resp;
|
|
|
}
|
|
|
|
|
|
resp.setId(strategySwitch.getId());
|
|
|
@@ -258,23 +302,19 @@ public class ParkingChangeStrategyService {
|
|
|
* 修改收费策略开关
|
|
|
*/
|
|
|
public void updateSwitch(ParkingStrategySwitchSaveParam param) {
|
|
|
- log.info("修改收费策略开关,param:{}", JSON.toJSONString(param));
|
|
|
+ log.info("修改收费策略开关");
|
|
|
|
|
|
KwtParkingStrategySwitch strategySwitch = parkingStrategySwitchRepository.getById(param.getId());
|
|
|
if (strategySwitch == null) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.DRIVER_NOT_FOUND, "收费策略开关不存在");
|
|
|
}
|
|
|
|
|
|
- if (Objects.equals(param.getStatus(), Global.YES) && param.getDefaultFee() == null) {
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "开关打开后,默认费用不能为空");
|
|
|
+ if (Objects.equals(param.getStatus(), Global.YES) && param.getDefaultFee() == null) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.DRIVER_NOT_FOUND, "开关打开后,默认费用不能为空");
|
|
|
}
|
|
|
- KwtParkingStrategySwitch kwtParkingStrategySwitch = new KwtParkingStrategySwitch();
|
|
|
- kwtParkingStrategySwitch.setId(strategySwitch.getId());
|
|
|
- kwtParkingStrategySwitch.setStatus(param.getStatus());
|
|
|
- kwtParkingStrategySwitch.setDefaultFee(param.getDefaultFee());
|
|
|
- parkingStrategySwitchRepository.updateById(kwtParkingStrategySwitch);
|
|
|
- log.info("收费策略开关修改完成,id:{}, status:{}, defaultFee:{}",
|
|
|
- kwtParkingStrategySwitch.getId(), kwtParkingStrategySwitch.getStatus(), kwtParkingStrategySwitch.getDefaultFee());
|
|
|
+ strategySwitch.setStatus(param.getStatus());
|
|
|
+ strategySwitch.setDefaultFee(param.getDefaultFee());
|
|
|
+ parkingStrategySwitchRepository.updateById(strategySwitch);
|
|
|
}
|
|
|
|
|
|
/**
|