From 14ec5bfa681c52a4429d86dee78dfb4f72b28307 Mon Sep 17 00:00:00 2001 From: liuy <37787198+LiuyCodes@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:44:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sales):=20=E9=87=8D=E6=9E=84=E9=94=80?= =?UTF-8?q?=E5=94=AE=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除不必要的列表分割操作 - 优化去重逻辑,使用 Set集合 - 将销售订单转换为 Map 集合,提高查询效率 - 简化代码结构,提高可读性和维护性 --- .../sales/SoSaleOutPluginInitializerToC.java | 91 ++++++++++++------- 1 file changed, 59 insertions(+), 32 deletions(-) diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java index 8d411135..4f754136 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java @@ -2400,41 +2400,57 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { List allHeaderDetailsDtoArrayList = new ArrayList<>(); try { if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) { - List> splitListByCount = SplitListByCountUtil.splitListByCount(headerDetailsDtoList, 100); - for (int i = 0; i < splitListByCount.size(); i++) { - List headerDetailsDtos = splitListByCount.get(i); - - Set refOrderCodeSet = new HashSet<>(); +// List> splitListByCount = SplitListByCountUtil.splitListByCount(headerDetailsDtoList, 100); +// for (int i = 0; i < splitListByCount.size(); i++) { +// List headerDetailsDtos = splitListByCount.get(i); +// } + //可以完成去重 + Set 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 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 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 stringList = refOrderCodeSet.stream().collect(Collectors.toList()); + List> lists = SplitListByCountUtil.splitListByCount(stringList, 100); + for (int i = 0; i < lists.size(); i++) { + List strings = lists.get(i); + String result = strings.stream().map(s -> s.trim()).collect(Collectors.joining(",")); + List 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 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 ofsSaleOrder, List 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 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 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 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();