From 748b12b405bd5f8e9b6186ae57cd157f2dc9e685 Mon Sep 17 00:00:00 2001
From: liuy <37787198+LiuyCodes@users.noreply.github.com>
Date: Thu, 13 Feb 2025 18:23:26 +0800
Subject: [PATCH] =?UTF-8?q?feat(buildpackage):=20=E6=B7=BB=E5=8A=A0=20BOM?=
 =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=B9=B6=E4=BC=98=E5=8C=96=E9=80=80=E8=B4=A7?=
 =?UTF-8?q?=E6=B1=87=E6=80=BB=E9=80=BB=E8=BE=91-=20=E5=9C=A8=20Consignmach?=
 =?UTF-8?q?iningInBodyDto=20=E4=B8=AD=E6=B7=BB=E5=8A=A0=20BOM=20=E7=89=88?=
 =?UTF-8?q?=E6=9C=AC=E5=AD=97=E6=AE=B5=20-=20=E4=B8=8E=E5=A6=AE=E5=A7=90?=
 =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E5=90=8E=E8=AE=BE=E7=BD=AE=E6=A0=B8=E9=94=80?=
 =?UTF-8?q?=E6=96=B9=E5=BC=8F=E4=B8=BA"=E6=8C=89=20BOM=20=E6=A0=B8?=
 =?UTF-8?q?=E9=94=80"=20-=E4=BC=98=E5=8C=96=20groupSummary=20=E6=96=B9?=
 =?UTF-8?q?=E6=B3=95=EF=BC=8C=E6=94=AF=E6=8C=81=E6=8C=89=E6=8C=87=E5=AE=9A?=
 =?UTF-8?q?=E7=BB=B4=E5=BA=A6=E6=B1=87=E6=80=BB=20-=20=E7=A7=BB=E9=99=A4?=
 =?UTF-8?q?=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E9=94=AE=E5=80=BC=E5=AF=B9?=
 =?UTF-8?q?=EF=BC=8C=E6=8F=90=E9=AB=98=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?=
 =?UTF-8?q?=E6=95=88=E7=8E=87=20-=20=E6=9B=B4=E6=96=B0=E6=B5=8B=E8=AF=95?=
 =?UTF-8?q?=E7=94=A8=E4=BE=8B=E4=BB=A5=E9=80=82=E5=BA=94=E6=96=B0=E7=9A=84?=
 =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../outsourc/ConsignmachiningInReturn.java    |  4 ++
 .../SoSaleReturnPluginInitializerToC.java     | 42 +++++++++++++++++--
 .../u8cdto/ConsignmachiningInBodyDto.java     |  1 +
 .../SoSaleReturnPluginInitializerToCTest.java |  6 +--
 .../frame/deletedata/DeleteU8cDataUtil.java   |  1 +
 5 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInReturn.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInReturn.java
index a50e7119..80cd74b4 100644
--- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInReturn.java
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInReturn.java
@@ -467,8 +467,12 @@ public class ConsignmachiningInReturn extends PluginBaseEntity {
                                 consignmachiningInBodyDto.setVsourcerowno(u8cPoOrderDetail.getCrowno());//来源单据行号
 //                                consignmachiningInBodyDto.setVsourcebillcode(scOrderEntity.getVordercode());//来源单据号
 //                            consignmachiningInBodyDto.setWriteofftype("按备料发料核销");//核销方式,和妮姐已经确认,不用传递
+                                //2025年2月13日 17:36:28 和妮姐电话确认,核销方式永远为按BOM核销,问了2遍
+                                consignmachiningInBodyDto.setWriteofftype("按BOM核销");//核销方式,和妮姐已经确认,不用传递
                                 consignmachiningInBodyDto.setDbizdate(generateBusinessDate);//	入库日期
 //                                consignmachiningInBodyDto.setVdef16(bomVersion.get(0).getVersion());//BOM version
+                                //2025年2月13日 17:35:45 和妮姐电话确认,bom版本永远为1.0,问了3遍
+                                consignmachiningInBodyDto.setBomversion("1.0");//BOM version
                                 consignmachiningInBodyDto.setCsourcebillbid(u8cPoOrderDetail.getCorderBid());//来源明细主键
                                 consignmachiningInBodyDto.setCsourcebillhid(scOrderEntity.getCorderid());//来源表头主键
                                 consignmachiningInBodyDtoArrayList.add(consignmachiningInBodyDto);
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 4ff594f1..236fb374 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
@@ -704,7 +704,9 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
                 String sceneType = "stock";
                 List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType);
                 // 分组汇总
-                Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos);
+                String dimension = null;
+//                dimension = "1001&dy-intoyou&B2CHA20240033&6973391733588&SALES&002";
+                Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension);
                 // 查询U8C业务流程
                 BdBusitypeEntity bdBusitypeEntity = u8cOperationFlow();
                 // 查询销售收发类别
@@ -989,7 +991,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
                 String sceneType = "tran";
                 List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType);
                 // 分组汇总
-                Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos);
+                String dimension = null;
+                Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension);
                 // 查询U8C业务流程
                 BdBusitypeEntity bdBusitypeEntity = u8cOperationFlowV2();
                 //初始化所有存货管理档案对应的结存价+采购价
@@ -1608,7 +1611,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
      *
      * @author liuyang
      */
-    private Map<String, List<GoodsRertunSonDetailsDto>> groupSummary(List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos) {
+    private Map<String, List<GoodsRertunSonDetailsDto>> groupSummary(List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos, String dimension) {
         if (goodsRertunSonDetailsDtos != null && goodsRertunSonDetailsDtos.size() > 0) {
             for (int i = 0; i < goodsRertunSonDetailsDtos.size(); i++) {
                 GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = goodsRertunSonDetailsDtos.get(i);
@@ -1683,12 +1686,43 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
                 goodsRertunSonDetailsDto.setSummaryDimensionStr(summaryDimensionStr.toString());
             }
             logger.info("TOC:{} 个出库单对象需要汇总", goodsRertunSonDetailsDtos.size());
-            return goodsRertunSonDetailsDtos.stream().collect(Collectors.groupingBy(GoodsRertunSonDetailsDto::getSummaryDimensionStr));
+            if (dimension == null) {
+                return goodsRertunSonDetailsDtos.stream().collect(Collectors.groupingBy(GoodsRertunSonDetailsDto::getSummaryDimensionStr));
+            } else {
+                Map<String, List<GoodsRertunSonDetailsDto>> collect = goodsRertunSonDetailsDtos.stream().collect(Collectors.groupingBy(GoodsRertunSonDetailsDto::getSummaryDimensionStr));
+                keepOnlyNeededKeys(collect, dimension);
+                return collect;
+            }
         }
         logger.info("TOC:0个对象需要汇总");
         return null;
     }
 
+    /**
+     * 移除不需要的键
+     *
+     * @author liuyang
+     */
+    private static void keepOnlyNeededKeys(Map<String, List<GoodsRertunSonDetailsDto>> map, String... neededKeys) {
+        Iterator<Map.Entry<String, List<GoodsRertunSonDetailsDto>>> iterator = map.entrySet().iterator();
+        while (iterator.hasNext()) {
+            Map.Entry<String, List<GoodsRertunSonDetailsDto>> entry = iterator.next();
+            // 如果不是需要的键,则移除
+            if (!contains(neededKeys, entry.getKey())) {
+                iterator.remove();
+            }
+        }
+    }
+
+    private static boolean contains(String[] array, String targetValue) {
+        for (String value : array) {
+            if (value.equals(targetValue)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * 2024年8月6日 10:59:03 查询U8C业务流程
      *
diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/ConsignmachiningInBodyDto.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/ConsignmachiningInBodyDto.java
index d7a29940..5ec1b3e3 100644
--- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/ConsignmachiningInBodyDto.java
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/ConsignmachiningInBodyDto.java
@@ -19,6 +19,7 @@ public class ConsignmachiningInBodyDto {
     private String vsourcerowno;
     private String vsourcebillcode;
     private String writeofftype;//核销方式
+    private String bomversion;//BOM版本
     private String dbizdate;
     private String vdef16;
     private String csourcebillbid;//来源明细主键
diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToCTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToCTest.java
index 34862e1e..6c4c3068 100644
--- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToCTest.java
+++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToCTest.java
@@ -50,7 +50,7 @@ public class SoSaleReturnPluginInitializerToCTest {
 
 //            soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025010900002384", "tran");
 
-//            soSaleReturnPluginInitializerToC.startImplementStockByTime("2024-12-24 16:02:17", "2024-12-24 16:02:17", "0");
+            soSaleReturnPluginInitializerToC.startImplementStockByTime("2025-01-31 00:00:00", "2025-01-31 23:59:59", "1");
 
 //            JSONObject jsonObject = new JSONObject();
 //            soSaleReturnPluginInitializerToC.executeBusiness(jsonObject);
@@ -82,7 +82,7 @@ public class SoSaleReturnPluginInitializerToCTest {
 //        BdBusitypeEntity bdBusitypeEntity3 = queryBdBusitypeUtil.queryBdBusitype("TOC确认收入");
 //        System.out.println("TOC确认收入:" + bdBusitypeEntity3.getPkBusitype());
 
-        BdBusitypeEntity bdBusitypeEntity4 = queryBdBusitypeUtil.queryBdBusitype("TOC售后完成");
-        System.out.println("TOC售后完成:" + bdBusitypeEntity4.getPkBusitype());
+//        BdBusitypeEntity bdBusitypeEntity4 = queryBdBusitypeUtil.queryBdBusitype("TOC售后完成");
+//        System.out.println("TOC售后完成:" + bdBusitypeEntity4.getPkBusitype());
     }
 }
\ No newline at end of file
diff --git a/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java b/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java
index fffbba17..e43ba57e 100644
--- a/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java
+++ b/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java
@@ -104,6 +104,7 @@ public class DeleteU8cDataUtil {
 
     /**
      * 销售订单取消签字
+     * 每1000条取消签字,需要236秒,平均0.2秒一条
      */
     public void cancelSignatureSoSaleV2() {
         try {