Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-product
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-product
Commits
a3ab5a57
Commit
a3ab5a57
authored
Dec 12, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
572963f9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
91 additions
and
46 deletions
+91
-46
yd-product-api/src/main/java/com/yd/product/api/service/impl/ApiAnnouncementCommissionRatioServiceImpl.java
+91
-46
No files found.
yd-product-api/src/main/java/com/yd/product/api/service/impl/ApiAnnouncementCommissionRatioServiceImpl.java
View file @
a3ab5a57
...
@@ -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
*/
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment