Commit a3ab5a57 by zhangxingmin

push

parent 572963f9
...@@ -56,6 +56,10 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen ...@@ -56,6 +56,10 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen
*/ */
@Override @Override
public Result batchSave(ApiAnnouncementCommissionRatioBatchSaveRequest request) { public Result batchSave(ApiAnnouncementCommissionRatioBatchSaveRequest request) {
Result result = checkBatchSaveRequestPram(request.getRatioBatchSaveDtoList());
if (result.getCode() != 200) {
return result;
}
List<String> announcementSpeciesBizIdList = new ArrayList<>(); List<String> announcementSpeciesBizIdList = new ArrayList<>();
announcementSpeciesBizIdList.add(request.getAnnouncementSpeciesBizId()); announcementSpeciesBizIdList.add(request.getAnnouncementSpeciesBizId());
//先删后新增 //先删后新增
...@@ -335,60 +339,101 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen ...@@ -335,60 +339,101 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("发现佣金年限区间重叠的数据,请检查以下数据(只要适用范围有交集就视为相同分组条件):\n\n");
// 按数据索引分组,方便查看每条数据的所有重叠关系
Map<Integer, List<Integer>> overlapMap = new TreeMap<>();
for (OverlapError error : errors) { Set<Integer> set = new HashSet<>();
overlapMap.computeIfAbsent(error.index1, k -> new ArrayList<>()).add(error.index2); if (!CollectionUtils.isEmpty(errors)) {
overlapMap.computeIfAbsent(error.index2, k -> new ArrayList<>()).add(error.index1); errors.stream().forEach(dto -> {
set.add(dto.getIndex1());
set.add(dto.getIndex2());
});
} }
// 构建错误信息 sb.append("发现佣金年限区间重叠的数据,请检查以下行数:\n\n");
for (Map.Entry<Integer, List<Integer>> entry : overlapMap.entrySet()) {
int dataIndex = entry.getKey();
List<Integer> overlapIndices = entry.getValue();
ApiAnnouncementCommissionRatioBatchSaveDto dto = originalList.get(dataIndex);
sb.append("第").append(dataIndex + 1).append("条数据:\n")
.append(" - 费用名称: ").append(dto.getExpenseName()).append("\n")
.append(" - 年限区间: ").append(dto.getStartPeriod()).append(" 至 ").append(dto.getEndPeriod()).append("\n")
.append(" - 适用范围: ").append(dto.getScope()).append("\n")
.append(" - 有效时间: ").append(dto.getEffectiveStart()).append(" 至 ").append(dto.getEffectiveEnd()).append("\n")
.append(" - 汇率影响: ").append(dto.getIsExchangeRate()).append("\n")
.append(" - 结算币种: ").append(dto.getCurrency()).append("\n")
.append(" 与以下数据重叠:\n");
for (int overlapIndex : overlapIndices) {
ApiAnnouncementCommissionRatioBatchSaveDto overlapDto = originalList.get(overlapIndex);
sb.append(" - 第").append(overlapIndex + 1).append("条: ")
.append(overlapDto.getExpenseName())
.append(" [").append(overlapDto.getStartPeriod())
.append("-").append(overlapDto.getEndPeriod()).append("]")
.append(" 适用范围:").append(overlapDto.getScope()).append("\n");
}
sb.append("\n");
}
// 添加通用分组条件说明 // 将行数(索引+1,因为用户从1开始计数)排序并格式化为"第X行"
sb.append("重叠判断规则说明:\n"); String rowNumbers = set.stream()
sb.append("1. 以下条件完全相同的数据才会被比较:\n"); .sorted()
sb.append(" - 费用名称\n"); .map(index -> "第" + (index + 1) + "行")
sb.append(" - 有效开始时间\n"); .collect(Collectors.joining(",")); // 用中文逗号分隔
sb.append(" - 有效结束时间\n");
sb.append(" - 是否受汇率影响\n"); sb.append(rowNumbers);
sb.append(" - 结算币种\n");
sb.append("2. 适用范围只要有一个相同的值(交集)就视为相同分组条件\n");
sb.append("3. 年限区间重叠判断规则:\n");
sb.append(" - 1-3 和 3-5: 算重叠(因为有共同的3)\n");
sb.append(" - 1-3 和 4-7: 不算重叠\n");
sb.append(" - 1-5 和 2-4: 算重叠\n");
return sb.toString(); return sb.toString();
} }
// /**
// * 构建错误消息
// */
// private String buildErrorMessage(List<OverlapError> errors,
// List<ApiAnnouncementCommissionRatioBatchSaveDto> originalList) {
// if (errors.isEmpty()) {
// return "未发现重叠数据";
// }
//
// StringBuilder sb = new StringBuilder();
//
// Set<Integer> set = new HashSet<>();
// if (!CollectionUtils.isEmpty(errors)) {
// errors.stream().forEach(dto -> {
// set.add(dto.getIndex1());
// set.add(dto.getIndex2());
// });
// }
//// sb.append("发现佣金年限区间重叠的数据,请检查以下数据(只要适用范围有交集就视为相同分组条件):\n\n");
// sb.append("发现佣金年限区间重叠的数据,请检查以下行数:\n\n");
// sb.append(String.join("",set))
//// // 按数据索引分组,方便查看每条数据的所有重叠关系
//// Map<Integer, List<Integer>> overlapMap = new TreeMap<>();
////
//// for (OverlapError error : errors) {
//// overlapMap.computeIfAbsent(error.index1, k -> new ArrayList<>()).add(error.index2);
//// overlapMap.computeIfAbsent(error.index2, k -> new ArrayList<>()).add(error.index1);
//// }
////
//// // 构建错误信息
//// for (Map.Entry<Integer, List<Integer>> entry : overlapMap.entrySet()) {
//// int dataIndex = entry.getKey();
//// List<Integer> overlapIndices = entry.getValue();
////
//// ApiAnnouncementCommissionRatioBatchSaveDto dto = originalList.get(dataIndex);
////
//// sb.append("第").append(dataIndex + 1).append("条数据年限区间:\n")
////// .append(" - 费用名称: ").append(dto.getExpenseName()).append("\n")
////// .append(" - 年限区间: ").append(dto.getStartPeriod()).append(" 至 ").append(dto.getEndPeriod()).append("\n")
////// .append(" - 适用范围: ").append(dto.getScope()).append("\n")
////// .append(" - 有效时间: ").append(dto.getEffectiveStart()).append(" 至 ").append(dto.getEffectiveEnd()).append("\n")
////// .append(" - 汇率影响: ").append(dto.getIsExchangeRate()).append("\n")
////// .append(" - 结算币种: ").append(dto.getCurrency()).append("\n")
//// .append(" 与以下数据年限区间有重叠:\n");
////
//// for (int overlapIndex : overlapIndices) {
//// ApiAnnouncementCommissionRatioBatchSaveDto overlapDto = originalList.get(overlapIndex);
//// sb.append(" - 第").append(overlapIndex + 1).append("条: ");
////// .append(overlapDto.getExpenseName())
////// .append(" [").append(overlapDto.getStartPeriod())
////// .append("-").append(overlapDto.getEndPeriod()).append("]")
////// .append(" 适用范围:").append(overlapDto.getScope()).append("\n");
//// }
//// sb.append("\n");
//// }
//
// // 添加通用分组条件说明
//// sb.append("重叠判断规则说明:\n");
//// sb.append("1. 以下条件完全相同的数据才会被比较:\n");
//// sb.append(" - 费用名称\n");
//// sb.append(" - 有效开始时间\n");
//// sb.append(" - 有效结束时间\n");
//// sb.append(" - 是否受汇率影响\n");
//// sb.append(" - 结算币种\n");
//// sb.append("2. 适用范围只要有一个相同的值(交集)就视为相同分组条件\n");
//// sb.append("3. 年限区间重叠判断规则:\n");
//// sb.append(" - 1-3 和 3-5: 算重叠(因为有共同的3)\n");
//// sb.append(" - 1-3 和 4-7: 不算重叠\n");
//// sb.append(" - 1-5 和 2-4: 算重叠\n");
//
// return sb.toString();
// }
/** /**
* 内部类:包含解析后数据的DTO * 内部类:包含解析后数据的DTO
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment