refactor(sales): 重构销售订单查询逻辑
- 移除不必要的列表分割操作 - 优化去重逻辑,使用 Set集合 - 将销售订单转换为 Map 集合,提高查询效率 - 简化代码结构,提高可读性和维护性
This commit is contained in:
parent
ee5d86e78d
commit
14ec5bfa68
|
@ -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为code,value为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();
|
||||
|
|
Loading…
Reference in New Issue