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<>(); List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> allHeaderDetailsDtoArrayList = new ArrayList<>();
try { try {
if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) { if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) {
List<List<HeaderDetailsDto>> splitListByCount = SplitListByCountUtil.splitListByCount(headerDetailsDtoList, 100); // List<List<HeaderDetailsDto>> splitListByCount = SplitListByCountUtil.splitListByCount(headerDetailsDtoList, 100);
for (int i = 0; i < splitListByCount.size(); i++) { // for (int i = 0; i < splitListByCount.size(); i++) {
List<HeaderDetailsDto> headerDetailsDtos = splitListByCount.get(i); // List<HeaderDetailsDto> headerDetailsDtos = splitListByCount.get(i);
// }
Set<String> refOrderCodeSet = new HashSet<>(); //可以完成去重
Set<String> refOrderCodeSet = new HashSet<>();
// StringBuffer stringBuffer = new StringBuffer(); // StringBuffer stringBuffer = new StringBuffer();
if (headerDetailsDtos != null && headerDetailsDtos.size() > 0) { // if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) {
for (int j = 0; j < headerDetailsDtos.size(); j++) { // }
HeaderDetailsDto headerDetailsDto = headerDetailsDtos.get(j); for (int j = 0; j < headerDetailsDtoList.size(); j++) {
HeaderDto header = headerDetailsDto.getHeader(); HeaderDetailsDto headerDetailsDto = headerDetailsDtoList.get(j);
List<DetailsDto> details = headerDetailsDto.getDetails(); HeaderDto header = headerDetailsDto.getHeader();
for (int k = 0; k < details.size(); k++) { List<DetailsDto> details = headerDetailsDto.getDetails();
DetailsDto detailsDto = details.get(k); for (int k = 0; k < details.size(); k++) {
//考虑refOrderCode去除重复提升查询的效率 DetailsDto detailsDto = details.get(k);
// stringBuffer.append("'"); //考虑refOrderCode去除重复提升查询的效率
// stringBuffer.append("'");
// stringBuffer.append(detailsDto.getRefOrderCode()); // stringBuffer.append(detailsDto.getRefOrderCode());
// stringBuffer.append("'"); // stringBuffer.append("'");
// stringBuffer.append(","); // stringBuffer.append(",");
refOrderCodeSet.add(detailsDto.getRefOrderCode()); if (detailsDto.getRefOrderCode() != null && !"".equals(detailsDto.getRefOrderCode())) {
} refOrderCodeSet.add(detailsDto.getRefOrderCode().trim());
} }
} }
if (refOrderCodeSet.size() > 0) { }
//转换为逗号 if (refOrderCodeSet.size() > 0) {
StringJoiner joiner = new StringJoiner(","); //Set集合转List集合
for (String str : refOrderCodeSet) { List<String> stringList = refOrderCodeSet.stream().collect(Collectors.toList());
joiner.add(str); List<List<String>> lists = SplitListByCountUtil.splitListByCount(stringList, 100);
} for (int i = 0; i < lists.size(); i++) {
// String substring = stringBuffer.substring(0, stringBuffer.length()); 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<>(); List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoArrayList = new ArrayList<>();
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo(); QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
queryOfsSoSaleOutVo.setCode(joiner.toString()); queryOfsSoSaleOutVo.setCode(result);
ofsStandardUtil.getOfsSaleOrder(queryOfsSoSaleOutVo, headerDetailsDtoArrayList, 1L); ofsStandardUtil.getOfsSaleOrder(queryOfsSoSaleOutVo, headerDetailsDtoArrayList, 1L);
allHeaderDetailsDtoArrayList.addAll(headerDetailsDtoArrayList); 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) { } 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 { 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) { if (ofsSaleOrder != null && ofsSaleOutOrder != null && ofsSaleOrder.size() > 0 && ofsSaleOutOrder.size() > 0) {
try { 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++) { for (int i = 0; i < ofsSaleOutOrder.size(); i++) {
HeaderDetailsDto headerDetailsDto = ofsSaleOutOrder.get(i); HeaderDetailsDto headerDetailsDto = ofsSaleOutOrder.get(i);
HeaderDto header = headerDetailsDto.getHeader(); HeaderDto header = headerDetailsDto.getHeader();
@ -2461,14 +2485,17 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
for (int j = 0; j < details.size(); j++) { for (int j = 0; j < details.size(); j++) {
DetailsDto detailsDto = details.get(j); DetailsDto detailsDto = details.get(j);
String refOrderCode = detailsDto.getRefOrderCode(); String refOrderCode = detailsDto.getRefOrderCode();
// for (int k = 0; k < ofsSaleOrder.size(); k++) {
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.HeaderDetailsDto headerDetailsDto1 = ofsSaleOrder.get(k); // com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto1.getHeader();
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto1.getHeader(); //// List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.DetailsDto> details1 = headerDetailsDto1.getDetails();
// List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.DetailsDto> details1 = headerDetailsDto1.getDetails(); // if (header1.getCode().equals(refOrderCode)) {
if (header1.getCode().equals(refOrderCode)) { // detailsDto.setHeaderDetailsDto(headerDetailsDto1);
detailsDto.setHeaderDetailsDto(headerDetailsDto1); // }
} // }
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto1 = stringHeaderDetailsDtoMap.get(refOrderCode);
if (headerDetailsDto1 != null) {
detailsDto.setHeaderDetailsDto(headerDetailsDto1);
} }
} }
// String targetRefOrderCode = header.getRefOrderCode(); // String targetRefOrderCode = header.getRefOrderCode();