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 bc2f042e..c5d0f279 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 @@ -566,7 +566,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { // List headerDetailsDtoList1 = new ArrayList<>(); List allTocofsSaleoutDetailedEntityList = new ArrayList<>(); if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) { - List> splitListByCount = SplitListByCountUtil.splitListByCount(headerDetailsDtoList, 800); + List> splitListByCount = SplitListByCountUtil.splitListByCount(headerDetailsDtoList, 1000); for (int i = 0; i < splitListByCount.size(); i++) { List headerDetailsDtoList2 = splitListByCount.get(i); String idStr = commaConcatenatedPrimaryKeyStock(headerDetailsDtoList2); @@ -4082,7 +4082,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { } //通过「O销售出库单表头」匹配「底表O销售出库单明细行」 - List tocofsSaleoutDetailedEntitiesAll = new ArrayList<>(); +// List tocofsSaleoutDetailedEntitiesAll = new ArrayList<>(); if (allTocofsSaleoutEntityList.size() > 0) { Map> stringListMap = convertToMap(tocofsSaleoutDetailedEntityList); @@ -4096,7 +4096,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { // } // } List tocofsSaleoutDetailedEntities = stringListMap.get(tocofsSaleoutEntity.getId()); - tocofsSaleoutDetailedEntitiesAll.addAll(tocofsSaleoutDetailedEntities); +// tocofsSaleoutDetailedEntitiesAll.addAll(tocofsSaleoutDetailedEntities); tocofsSaleoutEntity.setTocofsSaleoutDetailedEntityList(tocofsSaleoutDetailedEntities); } } diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java index bf8563d7..4ff594f1 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; import com.hzya.frame.base.PluginBaseEntity; import com.hzya.frame.beanutil.BeanUtil; import com.hzya.frame.plugin.lets.constant.OverallConstant; @@ -471,7 +472,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { // List headerDetailsDtoList1 = new ArrayList<>(); List tocofsReturngoodsDetailedEntityList = new ArrayList<>(); if (returnGoodHeaderDetailsDataDtoArrayList != null && returnGoodHeaderDetailsDataDtoArrayList.size() > 0) { - List> splitListByCount = SplitListByCountUtil.splitListByCount(returnGoodHeaderDetailsDataDtoArrayList, 800); + List> splitListByCount = SplitListByCountUtil.splitListByCount(returnGoodHeaderDetailsDataDtoArrayList, 1000); for (int i = 0; i < splitListByCount.size(); i++) { List stockinOrderList = splitListByCount.get(i); String idStr = commaConcatenatedPrimaryKeyStock(stockinOrderList); @@ -3114,13 +3115,16 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { List allTocofsReturngoodsEntityList = new ArrayList<>(); //底表O售后入库单明细行 List tocofsReturngoodsDetailedEntityList = iTocofsReturngoodsDetailedDao.query(tocofsReturngoodsDetailedEntity); - if (tocofsReturngoodsDetailedEntityList != null && tocofsReturngoodsDetailedEntityList.size() > 0) { - List> splitListByCount = SplitListByCountUtil.splitListByCount(tocofsReturngoodsDetailedEntityList, 1000); + Set mainTableIdSet = tocofsReturngoodsDetailedEntityList.stream().map(TocofsReturngoodsDetailedEntity::getMaintableid).collect(Collectors.toSet()); + List mainTableIdList = Lists.newArrayList(mainTableIdSet); + + List> splitListByCount = SplitListByCountUtil.splitListByCount(mainTableIdList, 1000); +// List> splitListByCount = SplitListByCountUtil.splitListByCount(tocofsReturngoodsDetailedEntityList, 1000); for (int i = 0; i < splitListByCount.size(); i++) { - List tocofsReturngoodsDetailedEntityList1 = splitListByCount.get(i); - Set mainTableIdSet = tocofsReturngoodsDetailedEntityList1.stream().map(TocofsReturngoodsDetailedEntity::getMaintableid).collect(Collectors.toSet()); - String mainTableIds = mainTableIdSet.stream().map(id -> "'" + id + "'").collect(Collectors.joining(",")); + List strings = splitListByCount.get(i); +// Set mainTableIdSet = tocofsReturngoodsDetailedEntityList1.stream().map(TocofsReturngoodsDetailedEntity::getMaintableid).collect(Collectors.toSet()); + String mainTableIds = strings.stream().map(id -> "'" + id + "'").collect(Collectors.joining(",")); //查询对应的O售后入库单表头 TocofsReturngoodsEntity tocofsReturngoodsEntity = new TocofsReturngoodsEntity(); tocofsReturngoodsEntity.setIds(mainTableIds); @@ -3131,16 +3135,20 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { //通过「O售后入库单表头」匹配「O售后入库单明细」 if (allTocofsReturngoodsEntityList.size() > 0) { + Map> stringListMap = convertToMap(tocofsReturngoodsDetailedEntityList); for (int i = 0; i < allTocofsReturngoodsEntityList.size(); i++) { TocofsReturngoodsEntity tocofsReturngoodsEntity = allTocofsReturngoodsEntityList.get(i); - List tocofsReturngoodsDetailedEntityList1 = new ArrayList<>(); - for (int j = 0; j < tocofsReturngoodsDetailedEntityList.size(); j++) { - TocofsReturngoodsDetailedEntity tocofsReturngoodsDetailedEntity1 = tocofsReturngoodsDetailedEntityList.get(j); - if (tocofsReturngoodsDetailedEntity1.getMaintableid().equals(tocofsReturngoodsEntity.getId())) { - tocofsReturngoodsDetailedEntityList1.add(tocofsReturngoodsDetailedEntity1); - } - } - tocofsReturngoodsEntity.setTocofsReturngoodsDetailedEntityList(tocofsReturngoodsDetailedEntityList1); + //性能太差了,使用Map搜索 +// List tocofsReturngoodsDetailedEntityList1 = new ArrayList<>(); +// for (int j = 0; j < tocofsReturngoodsDetailedEntityList.size(); j++) { +// TocofsReturngoodsDetailedEntity tocofsReturngoodsDetailedEntity1 = tocofsReturngoodsDetailedEntityList.get(j); +// if (tocofsReturngoodsDetailedEntity1.getMaintableid().equals(tocofsReturngoodsEntity.getId())) { +// tocofsReturngoodsDetailedEntityList1.add(tocofsReturngoodsDetailedEntity1); +// } +// } +// tocofsReturngoodsEntity.setTocofsReturngoodsDetailedEntityList(tocofsReturngoodsDetailedEntityList1); + List tocofsReturngoodsDetailedEntities = stringListMap.get(tocofsReturngoodsEntity.getId()); + tocofsReturngoodsEntity.setTocofsReturngoodsDetailedEntityList(tocofsReturngoodsDetailedEntities); } } @@ -3175,4 +3183,18 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { } return returnGoodHeaderDetailsDataDtoArrayList; } + + /** + * 存在相同Maintableid汇总在一起 + * + * @author liuyang + */ + public static Map> convertToMap(List tocofsReturngoodsDetailedEntityList) { + Map> map = new HashMap<>(); + for (TocofsReturngoodsDetailedEntity entity : tocofsReturngoodsDetailedEntityList) { + String maintableid = entity.getMaintableid(); + map.computeIfAbsent(maintableid, k -> new ArrayList<>()).add(entity); + } + return map; + } } \ No newline at end of file diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToBTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToBTest.java index f72fd2a8..6a6ce447 100644 --- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToBTest.java +++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToBTest.java @@ -89,7 +89,7 @@ public class SoSaleOutPluginInitializerToBTest { // soSaleOutPluginInitializerToB.startImplementByStockTime("2024-10-31 14:48:41", "2024-10-31 14:48:41"); - soSaleOutPluginInitializerToB.startImplementByCode("LETS-SH2025011400029405", "stock"); + soSaleOutPluginInitializerToB.startImplementByCode("LETS-SH2024122000040612", "stock"); // soSaleOutPluginInitializerToB.startImplementByStockTime("2024-11-08 19:18:02", "2024-11-08 19:18:02"); diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToCTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToCTest.java index 9d4f850c..4bd49ce4 100644 --- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToCTest.java +++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToCTest.java @@ -1,6 +1,7 @@ package com.hzya.frame.plugin.lets.plugin.sales; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.UUID; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -133,7 +134,7 @@ class SoSaleOutPluginInitializerToCTest { // soSaleOutPluginInitializerToC.sendU8CTOCOrder("123446"); try { - soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2025011400029405", "stock"); +// soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2025011400029405", "stock"); // soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2025011300024220", "tran"); // soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2025012300026949", "tran"); @@ -144,5 +145,30 @@ class SoSaleOutPluginInitializerToCTest { } catch (Exception e) { e.printStackTrace(); } + + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + Thread currentThread = Thread.currentThread(); + try { + while (true) { + Thread.currentThread().sleep(1000); + + long start = System.currentTimeMillis(); + currentThread.setName("线程名称:" + UUID.fastUUID()); + long end = System.currentTimeMillis(); + System.out.println("耗时:" + (end - start)); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }, "线程1"); + thread.start(); + + while (true) { + Thread.currentThread().sleep(1000); + System.out.println(thread.getName()); + } } } \ No newline at end of file