From ad24a5e99eeff9f1779d0ea0bd3a67af35f00ea5 Mon Sep 17 00:00:00 2001
From: liuy <37787198+LiuyCodes@users.noreply.github.com>
Date: Fri, 27 Dec 2024 15:48:22 +0800
Subject: [PATCH] =?UTF-8?q?refactor(sales):=20=E9=87=8D=E6=9E=84=E4=B8=9A?=
 =?UTF-8?q?=E5=8A=A1=E6=97=A5=E6=9C=9F=E7=94=9F=E6=88=90=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- 修改 createGenerateBusinessDateTran 方法,增加 SonDetailsDto 参数
- 从明细行获取交易成功时间,而非头部
- 更新错误日志,增加明细行主键信息
- 在 implementTran 方法中调用更新后的 createGenerateBusinessDateTran
---
 .../sales/SoSaleOutPluginInitializerToC.java  | 27 +++++++++++--------
 1 file changed, 16 insertions(+), 11 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 b1f115f8..2ae178c9 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
@@ -1353,28 +1353,32 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
      *
      * @author liuyang
      */
-    private String createGenerateBusinessDateTran(com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto header) {
+    private String createGenerateBusinessDateTran(com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto header, SonDetailsDto sonDetailsDto) {
+        //O出库单单号
         String code = null;
         if (header != null && header.getCode() != null) {
             code = header.getCode();
         }
-        //测试
-//        header.setTradeSuccessAt("2024-10-24 14:46:28");
-        if (header != null && header.getTradeSuccessAt() != null) {
+        //O出库单明细行主键
+        String detailedId = null;
+        if (sonDetailsDto != null && sonDetailsDto.getId() != null) {
+            detailedId = sonDetailsDto.getId();
+        }
+        if (sonDetailsDto != null && sonDetailsDto.getTradeSuccessAt() != null) {
             //TOC以出库日期作为业务日期
-            String tradeSuccessAt = header.getTradeSuccessAt();
+            String tradeSuccessAt = sonDetailsDto.getTradeSuccessAt();
             String businessFormat = null;
             try {
                 Date dbill = DateUtil.parse(tradeSuccessAt);
                 businessFormat = DateUtil.format(dbill, "yyyy-MM-dd");
             } catch (Exception e) {
-                logger.error("业务日期生成失败tradeSuccessAt(O交易成功时间)解析异常:{} O销售出库单编码:{}", e.getMessage(), code);
-                Assert.state(false, "业务日期生成失败tradeSuccessAt(O交易成功时间)解析异常:{} O销售出库单编码:{}", e.getMessage(), code);
+                logger.error("业务日期生成失败tradeSuccessAt(O交易成功时间)解析异常:{} O销售出库单编码:{} 明细主键:{}", e.getMessage(), code, detailedId);
+                Assert.state(false, "业务日期生成失败tradeSuccessAt(O交易成功时间)解析异常:{} O销售出库单编码:{} 明细主键:{}", e.getMessage(), code, detailedId);
             }
             return businessFormat;
         } else {
-            logger.error("业务日期生成失败tradeSuccessAt(O交易成功时间)不能为空! O销售出库单编码:{}", code);
-            Assert.state(false, "业务日期生成失败tradeSuccessAt(O交易成功时间)不能为空! O销售出库单编码:{}", code);
+            logger.error("业务日期生成失败tradeSuccessAt(O交易成功时间,取明细行)不能为空! O销售出库单编码:{} 明细主键:{}", code, detailedId);
+            Assert.state(false, "业务日期生成失败tradeSuccessAt(O交易成功时间,取明细行)不能为空! O销售出库单编码:{} 明细主键:{}", code, detailedId);
             return null;
         }
     }
@@ -2137,6 +2141,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
      * 库存同步,代码同步逻辑
      *
      * @param headerDetailsDtos 查询得到的O出库单对象
+     * @param pushScenarioType  阶段纬度标识
      * @author liuyang
      */
     private void implementTran(List<com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto> headerDetailsDtos, String pushScenarioType) throws Exception {
@@ -2215,7 +2220,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
 //                            checkArchives(oldValue.get(0));
 //                                checkAllFail(oldValue, newState2, "1");
                                 //取交易成功时间,生成业务日期
-                                String generateBusinessDate = createGenerateBusinessDateTran(header);
+                                String generateBusinessDate = createGenerateBusinessDateTran(header, oldValue.get(0));
 
                                 SaleorderRequestDto saleorderRequestDto = new SaleorderRequestDto();
                                 SaleorderRequestParentDto saleorderRequestParentDto = new SaleorderRequestParentDto();
@@ -2504,7 +2509,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
                                 //验证数据完整性
 //                                checkAllFail(oldValue, newState3, "2");
                                 //取交易成功时间,生成业务日期
-                                String generateBusinessDate = createGenerateBusinessDateTran(header);
+                                String generateBusinessDate = createGenerateBusinessDateTran(header, oldValue.get(0));
 
                                 SaleorderRequestDto saleorderRequestDto = new SaleorderRequestDto();
                                 SaleorderRequestParentDto saleorderRequestParentDto = new SaleorderRequestParentDto();