refactor(sales): 重构销售订单查询逻辑

- 移除不必要的列表分割操作
- 优化去重逻辑,使用 Set集合
- 将销售订单转换为 Map 集合,提高查询效率
- 简化代码结构,提高可读性和维护性
This commit is contained in:
liuy 2024-10-22 11:44:56 +08:00
parent ee5d86e78d
commit 14ec5bfa68
1 changed files with 59 additions and 32 deletions

View File

@ -2400,41 +2400,57 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> allHeaderDetailsDtoArrayList = new ArrayList<>();
try {
if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) {
List<List<HeaderDetailsDto>> splitListByCount = SplitListByCountUtil.splitListByCount(headerDetailsDtoList, 100);
for (int i = 0; i < splitListByCount.size(); i++) {
List<HeaderDetailsDto> headerDetailsDtos = splitListByCount.get(i);
Set<String> refOrderCodeSet = new HashSet<>();
// List<List<HeaderDetailsDto>> splitListByCount = SplitListByCountUtil.splitListByCount(headerDetailsDtoList, 100);
// for (int i = 0; i < splitListByCount.size(); i++) {
// List<HeaderDetailsDto> headerDetailsDtos = splitListByCount.get(i);
// }
//可以完成去重
Set<String> refOrderCodeSet = new HashSet<>();
// StringBuffer stringBuffer = new StringBuffer();
if (headerDetailsDtos != null && headerDetailsDtos.size() > 0) {
for (int j = 0; j < headerDetailsDtos.size(); j++) {
HeaderDetailsDto headerDetailsDto = headerDetailsDtos.get(j);
HeaderDto header = headerDetailsDto.getHeader();
List<DetailsDto> details = headerDetailsDto.getDetails();
for (int k = 0; k < details.size(); k++) {
DetailsDto detailsDto = details.get(k);
//考虑refOrderCode去除重复提升查询的效率
// stringBuffer.append("'");
// if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) {
// }
for (int j = 0; j < headerDetailsDtoList.size(); j++) {
HeaderDetailsDto headerDetailsDto = headerDetailsDtoList.get(j);
HeaderDto header = headerDetailsDto.getHeader();
List<DetailsDto> details = headerDetailsDto.getDetails();
for (int k = 0; k < details.size(); k++) {
DetailsDto detailsDto = details.get(k);
//考虑refOrderCode去除重复提升查询的效率
// stringBuffer.append("'");
// stringBuffer.append(detailsDto.getRefOrderCode());
// stringBuffer.append("'");
// stringBuffer.append(",");
refOrderCodeSet.add(detailsDto.getRefOrderCode());
}
if (detailsDto.getRefOrderCode() != null && !"".equals(detailsDto.getRefOrderCode())) {
refOrderCodeSet.add(detailsDto.getRefOrderCode().trim());
}
}
if (refOrderCodeSet.size() > 0) {
//转换为逗号
StringJoiner joiner = new StringJoiner(",");
for (String str : refOrderCodeSet) {
joiner.add(str);
}
// String substring = stringBuffer.substring(0, stringBuffer.length());
}
if (refOrderCodeSet.size() > 0) {
//Set集合转List集合
List<String> stringList = refOrderCodeSet.stream().collect(Collectors.toList());
List<List<String>> lists = SplitListByCountUtil.splitListByCount(stringList, 100);
for (int i = 0; i < lists.size(); i++) {
List<String> strings = lists.get(i);
String result = strings.stream().map(s -> s.trim()).collect(Collectors.joining(","));
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoArrayList = new ArrayList<>();
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
queryOfsSoSaleOutVo.setCode(joiner.toString());
queryOfsSoSaleOutVo.setCode(result);
ofsStandardUtil.getOfsSaleOrder(queryOfsSoSaleOutVo, headerDetailsDtoArrayList, 1L);
allHeaderDetailsDtoArrayList.addAll(headerDetailsDtoArrayList);
}
//转换为逗号
// StringJoiner joiner = new StringJoiner(",");
// for (String str : refOrderCodeSet) {
// joiner.add(str);
// }
// String substring = stringBuffer.substring(0, stringBuffer.length());
// List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoArrayList = new ArrayList<>();
// QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
// queryOfsSoSaleOutVo.setCode(joiner.toString());
// ofsStandardUtil.getOfsSaleOrder(queryOfsSoSaleOutVo, headerDetailsDtoArrayList, 1L);
// allHeaderDetailsDtoArrayList.addAll(headerDetailsDtoArrayList);
}
}
} catch (Exception e) {
@ -2453,6 +2469,14 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
private void findMatchingOfsOrder(List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> ofsSaleOrder, List<com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto> ofsSaleOutOrder) throws Exception {
if (ofsSaleOrder != null && ofsSaleOutOrder != null && ofsSaleOrder.size() > 0 && ofsSaleOutOrder.size() > 0) {
try {
//把OFS销售订单转换为Map集合key为codevalue为OFS销售订单集合对象如果code为null则会抛出异常所以先赋值为""
ofsSaleOrder.forEach(dto -> {
if (dto.getHeader() != null && dto.getHeader().getCode() == null) {
dto.getHeader().setCode("");
}
});
Map<String, com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> stringHeaderDetailsDtoMap = ofsSaleOrder.stream().collect(Collectors.toMap(dto -> dto.getHeader().getCode(), dto -> dto));
for (int i = 0; i < ofsSaleOutOrder.size(); i++) {
HeaderDetailsDto headerDetailsDto = ofsSaleOutOrder.get(i);
HeaderDto header = headerDetailsDto.getHeader();
@ -2461,14 +2485,17 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
for (int j = 0; j < details.size(); j++) {
DetailsDto detailsDto = details.get(j);
String refOrderCode = detailsDto.getRefOrderCode();
for (int k = 0; k < ofsSaleOrder.size(); k++) {
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto1 = ofsSaleOrder.get(k);
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto1.getHeader();
// List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.DetailsDto> details1 = headerDetailsDto1.getDetails();
if (header1.getCode().equals(refOrderCode)) {
detailsDto.setHeaderDetailsDto(headerDetailsDto1);
}
// for (int k = 0; k < ofsSaleOrder.size(); k++) {
// com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto1 = ofsSaleOrder.get(k);
// com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto1.getHeader();
//// List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.DetailsDto> details1 = headerDetailsDto1.getDetails();
// if (header1.getCode().equals(refOrderCode)) {
// detailsDto.setHeaderDetailsDto(headerDetailsDto1);
// }
// }
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto1 = stringHeaderDetailsDtoMap.get(refOrderCode);
if (headerDetailsDto1 != null) {
detailsDto.setHeaderDetailsDto(headerDetailsDto1);
}
}
// String targetRefOrderCode = header.getRefOrderCode();