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();