From b57fb8b61bd053601035694470ac4e79fbf99bf8 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 12 四月 2025 17:52:56 +0800
Subject: [PATCH] 雅达-优化收货单处理逻辑及参数结构

---
 Tiger.Business.WMS/ERP/WMS_U9C.cs |  235 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 172 insertions(+), 63 deletions(-)

diff --git a/Tiger.Business.WMS/ERP/WMS_U9C.cs b/Tiger.Business.WMS/ERP/WMS_U9C.cs
index fe07018..cb5c19d 100644
--- a/Tiger.Business.WMS/ERP/WMS_U9C.cs
+++ b/Tiger.Business.WMS/ERP/WMS_U9C.cs
@@ -1,5 +1,4 @@
-锘縰sing Tiger.Model;
-using SqlSugar;
+锘縰sing SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq.Expressions;
@@ -10,17 +9,7 @@
 using System.Linq;
 using Newtonsoft.Json;
 using Tiger.IBusiness;
-using Microsoft.AspNetCore.Http;
-using Tiger.Model.Minsun;
-using Org.BouncyCastle.Asn1.Tsp;
-using Tiger.Model.Entitys.MES.Position;
-using Apache.NMS.ActiveMQ.Commands;
-using System.Security.Cryptography;
-using System.Diagnostics;
 using Tiger.Model.Entitys.MES.U9C;
-using Newtonsoft.Json.Linq;
-using System.Security.Policy;
-using NetTaste;
 
 namespace Tiger.Business.WMS
 {
@@ -29,22 +18,47 @@
         public static string U9CAuthLoginUrl { get; set; } = ApiConfig.IsTestServer ? Cache.SysParam["U9CAuthLoginUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["U9CAuthLoginUrl", "U9CUrl"].PARAM_VALUE; // "http://172.16.80.20/U9C/webapi/OAuth2/AuthLogin?"; 娴嬭瘯
         //public static string U9CAuthLoginUrl { get; set; } = Cache.SysParam["U9CAuthLoginUrl", "U9CUrl"].PARAM_VALUE; //姝e紡
         public static string secret = "&entcode=02&orgcode=101&clientid=mes&clientsecret=12c8ee7e9bb74ad2a6a0fb3315c8af20";
+        /// <summary>
+        /// 瀹℃牳浜�
+        /// </summary>
+        public static string Reviewer = Cache.SysParam["Reviewer", "U9CUrl"].PARAM_VALUE; 
         public static string CreateRcvBySrcASNUrl
-        { get; set; } = ApiConfig.IsTestServer ? Cache.SysParam["CreateRcvBySrcASNUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateRcvBySrcASNUrl", "U9CUrl"].PARAM_VALUE;  //"http://172.16.80.20/U9C/webapi/Receivement/CreateRcvBySrcASN"; 娴嬭瘯
+        { get; set; } = "http://172.16.80.20/U9C/webapi/Receivement/CreateRcvBySrcASN"; //ApiConfig.IsTestServer ? Cache.SysParam["CreateRcvBySrcASNUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateRcvBySrcASNUrl", "U9CUrl"].PARAM_VALUE;  //"http://172.16.80.20/U9C/webapi/Receivement/CreateRcvBySrcASN"; 娴嬭瘯
         public static string CreateReceivementUrl
-        { get; set; } = ApiConfig.IsTestServer ? Cache.SysParam["CreateReceivementUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateReceivementUrl", "U9CUrl"].PARAM_VALUE;  //"http://172.16.80.20/U9C/webapi/Receivement/CreateReceivement"; 娴嬭瘯
+        { get; set; } = "http://172.16.80.20/U9C/webapi/Receivement/CreateReceivement"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateReceivementUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateReceivementUrl", "U9CUrl"].PARAM_VALUE;  //"http://172.16.80.20/U9C/webapi/Receivement/CreateReceivement"; 娴嬭瘯
+        public static string SubmitLineUrl
+        { get; set; } = "http://172.16.80.20/u9c/webapi/Receivement/SubmitLine";  // ApiConfig.IsTestServer ? Cache.SysParam["SubmitLineUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["SubmitLineUrl", "U9CUrl"].PARAM_VALUE;  //http://172.16.80.20/u9c/webapi/Receivement/SubmitLine; 娴嬭瘯
+        public static string ApproveLineUrl
+        { get; set; } = "http://172.16.80.20/u9c/webapi/Receivement/ApproveLine"; // ApiConfig.IsTestServer ? Cache.SysParam["ApproveLineUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["ApproveLineUrl", "U9CUrl"].PARAM_VALUE;  //http://172.16.80.20/u9c/webapi/Receivement/ApproveLine; 娴嬭瘯
+        /// <summary>
+        /// 鍒涘缓鐢熶骇閫�鏂欏崟-鎸夎閫�鏂�
+        /// </summary>
+        public static string CreateProdReturnOrderNewUrl
+        { get; set; } = "http://172.16.80.20/u9c/webapi/IssueDoc/CreateRecedeIssueDocNew"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateProdReturnOrderUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateProdReturnOrderUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/IssueDoc/CreateRecedeIssueDocNew
+        /// <summary>
+        /// 鍒涘缓濮斿鐢熶骇閫�鏂欏崟
+        /// </summary>
+        public static string CreateOutProdReturnOrderUrl
+        { get; set; } = "http://172.16.80.20/u9c/webapi/PMIssueDoc/CreateRecedeIssueDoc"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateOutProdReturnOrderUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateOutProdReturnOrderUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/PMIssueDoc/CreateRecedeIssueDoc
+        /// <summary>
+        /// 鍒涘缓璋冨叆鍗�
+        /// </summary>
+        public static string CreateTransferInUrl
+        { get; set; } = "http://172.16.80.20/u9c/webapi/TransferIn/Create"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateTransferInUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateTransferInUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/TransferIn/Create
 
+        
         /// <summary>
         /// 鏂板鏀惰揣鍗�-鏉ユ簮ASN鍗曟帴鍙�
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<ApiAction<CreateRcvBySrcASNInput>> CreateRcvBySrcASN(CreateRcvBySrcASNInput input)
+        public async Task<ApiAction<List<U9CReturnData2>>> CreateRcvBySrcASN(CreateRcvBySrcASNInput input)
         {
             Logger.Interface.Info($"/**\r\n *杩涘叆鏂板鏀惰揣鍗�-鏉ユ簮ASN鍗曟帴鍙�....\r\n */\r\n"); //鍥哄畾鍐欐硶
-            var action = new ApiAction<CreateRcvBySrcASNInput>();
+            var action = new ApiAction<List<U9CReturnData2>>();
             try
             {
+                //濡傛灉宸茬粡鐧诲綍鍒欎笉闇�瑕佸啀娆$櫥褰曪紝鐩存帴浣跨敤浼犲叆鐨則oken
                 if (input.IsLogin)
                 {
                     var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={input.userId}{secret}");
@@ -54,40 +68,24 @@
                         Logger.Interface.Info($"U9C鐧诲綍token: {input.token}");
                     }
                 }
-                List<CreateRcvBySrcASNParam> param = new() {
-                     new() {
-                        aSNToRcvTransDTOs = new(){
-                            new(){
-                                TransQty=new() {
-                                    m_amount1= input.CurRevQty,
-                                    m_uOM1 = new() {
-                                        UOMMain = "1002212260110007",
-                                        UOMMain_SKey=new(){
-                                            ID="1002212260110007",
-                                        },
-                                        UOMSub_SKey = new(){
-                                            ID="1002212260110007",
-                                        }
-                                    },
-                                },
-                                ASNLineKey=input.ASNLineKey,
-                            }
-                        }
-                     }
-                };
+                List<CreateRcvBySrcASNParam> param = new();
+                param.Add(input.CreateRcvBySrcASNParam);
                 var response = await HttpHelper.PostAsync(CreateRcvBySrcASNUrl, JsonConvert.SerializeObject(param), new Dictionary<string, string>() { { "token", input.token } });
+                //var response = new ApiAction("{\"ResCode\":0,\"Success\":true,\"ResMsg\":null,\"Data\":[{\"IsSucess\":true,\"U9CVersion\":null,\"OtherID\":\"WMS\",\"ID\":1002503210000100,\"Code\":\"YDRC250300003\",\"ErrorMsg\":null}]}");
+
                 var result = JsonConvert.DeserializeObject<U9CResult2>(response.Message);
                 if (result != null)
                 {
                     if (result.Success && result.Data[0].IsSucess)
                     {
-                        Logger.Interface.Info($"鏂板鏀惰揣鍗�-鏉ユ簮ASN鍗曟帴鍙f彁浜son: {JsonConvert.SerializeObject(param)}锛岃繑鍥濲son: {response.Message}");
+                        action.Data = result.Data;
+                       Logger.Interface.Info($"鏂板鏀惰揣鍗�-鏉ユ簮ASN鍗曟帴鍙f彁浜son: {JsonConvert.SerializeObject(param)}锛岃繑鍥濲son: {response.Message}");
                     }
                     else
                     {
                         action.IsSuccessed = false;
                         action.LocaleMsg = new($"{action.Message}; {result.Data[0].ErrorMsg}");
-                        Logger.Interface.Info($"鏂板鏀惰揣鍗�-鏉ユ簮ASN鍗曞け璐�:{result.Data[0].ErrorMsg}");
+                        Logger.Interface.Info($"鏂板鏀惰揣鍗�-鏉ユ簮ASN鍗曞け璐ワ紝鎻愪氦Json: {JsonConvert.SerializeObject(param)}锛岄敊璇俊鎭�:{result.Data[0].ErrorMsg}");
                     }
                 }
             }
@@ -99,12 +97,18 @@
             return action;
         }
 
-        public async Task<ApiAction<CreateReceivementInput>> CreateReceivement(CreateReceivementInput input)
+        /// <summary>
+        /// 鏂板鏀惰揣鍗�-鏃犳潵婧愭帴鍙�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<ApiAction<List<U9CReturnData2>>> CreateReceivement(CreateReceivementInput input)
         {
             Logger.Interface.Info($"/**\r\n *杩涘叆鏂板鏀惰揣鍗�-鏃犳潵婧愭帴鍙�....\r\n */\r\n"); //鍥哄畾鍐欐硶
-            var action = new ApiAction<CreateReceivementInput>();
+            var action = new ApiAction<List<U9CReturnData2>>();
             try
             {
+                //濡傛灉宸茬粡鐧诲綍鍒欎笉闇�瑕佸啀娆$櫥褰曪紝鐩存帴浣跨敤浼犲叆鐨則oken
                 if (input.IsLogin)
                 {
                     var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={input.userId}{secret}");
@@ -114,46 +118,151 @@
                         Logger.Interface.Info($"U9C鐧诲綍token: {input.token}");
                     }
                 }
-                CreateReceivementParam param = new()
-                {
-                    rcvDTO = new()
-                    {
-                        BusinessDate = DateTime.Now,
-                        Supplier = new() { m_code = "C.9999" },
-                        RcvDocType = new() { m_code = "RCV01" },
-                        RcvLines= new() { 
-                        
-                        },
-                        IsRcvByChangeable =true,
-                        IsPriceListChangeable = true,
-                        IsConfirmTermChangeable = true,
-                        IsPaymentTermChangeable = true,
-                        IsLineApprove= true,
-                    },
-                    OtherID = "WMS"
-                };
-                var response = await HttpHelper.PostAsync(CreateReceivementUrl, JsonConvert.SerializeObject(param), new Dictionary<string, string>() { { "token", input.token } });
+
+                var response = await HttpHelper.PostAsync(CreateReceivementUrl, JsonConvert.SerializeObject(input.CreateReceivementParam), new Dictionary<string, string>() { { "token", input.token } });
                 var result = JsonConvert.DeserializeObject<U9CResult2>(response.Message);
                 if (result != null)
                 {
                     if (result.Success && result.Data[0].IsSucess)
                     {
-                        Logger.Interface.Info($"鏂板鏀惰揣鍗�-鏃犳潵婧愭帴鍙f彁浜son: {JsonConvert.SerializeObject(param)}锛岃繑鍥濲son: {response.Message}");
+                        action.Data = result.Data;
+                        Logger.Interface.Info($"鏂板鏀惰揣鍗�-鏃犳潵婧愭帴鍙f彁浜son: {JsonConvert.SerializeObject(input.CreateReceivementParam)}锛岃繑鍥濲son: {response.Message}");
                     }
                     else
                     {
                         action.IsSuccessed = false;
                         action.LocaleMsg = new($"{action.Message}; {result.Data[0].ErrorMsg}");
-                        Logger.Interface.Info($"鏂板鏀惰揣-鍗曟棤鏉ユ簮澶辫触:{result.Data[0].ErrorMsg}");
+                        Logger.Interface.Info($"鏂板鏀惰揣-鍗曟棤鏉ユ簮澶辫触锛屾彁浜son: {JsonConvert.SerializeObject(input.CreateReceivementParam)}锛岄敊璇俊鎭�:{result.Data[0].ErrorMsg}");
                     }
                 }
             }
             catch (System.Exception ex)
             {
-                action.CatchExceptionWithLog(ex, "鏂板鏀惰揣鍗�-鏃犳潵婧愬紓甯�");
+                action.CatchExceptionWithLog(ex, $"鏂板鏀惰揣鍗�-鏃犳潵婧愬紓甯革紝鎻愪氦Json: {JsonConvert.SerializeObject(input.CreateReceivementParam)}");
             }
             Logger.Interface.Info($"/* 鏂板鏀惰揣鍗�-鏃犳潵婧愭帴鍙g粨鏉� */\r\n"); //鍥哄畾鍐欐硶
             return action;
         }
+
+        /// <summary>
+        /// 鏀惰揣鍗�-琛屽鏍告�诲叆鍙f帴鍙�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<ApiAction<List<U9CReturnData2>>> ReceivementApproveLine(SubmitLineInput input) {
+            Logger.Interface.Info($"/**\r\n *杩涘叆鏀惰揣鍗�-琛屽鏍告�诲叆鍙f帴鍙�....\r\n */\r\n"); //鍥哄畾鍐欐硶
+            var action = new ApiAction<List<U9CReturnData2>>();
+            try
+            {
+                //action = await SubmitLine(input);
+                //if (action.IsSuccessed) {
+                //    input.IsLogin = false;
+                //    action = await ApproveLine(input);
+                //}
+                action = await ApproveLine(input);
+            }
+            catch (System.Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, "鏀惰揣鍗�-琛屽鏍告�诲叆鍙e紓甯�");
+            }
+            Logger.Interface.Info($"/* 鏀惰揣鍗�-琛屽鏍告�绘柟娉曟帴鍙g粨鏉� */\r\n"); //鍥哄畾鍐欐硶
+            return action;
+        }
+
+        /// <summary>
+        /// 鏀惰揣鍗�-琛屾彁浜�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        private async Task<ApiAction<List<U9CReturnData2>>> SubmitLine(SubmitLineInput input)
+        {
+            Logger.Interface.Info($"/**\r\n *杩涘叆鏀惰揣鍗�-琛屾彁浜ゆ帴鍙�....\r\n */\r\n"); //鍥哄畾鍐欐硶
+            var action = new ApiAction<List<U9CReturnData2>>();
+            try
+            {
+                //濡傛灉宸茬粡鐧诲綍鍒欎笉闇�瑕佸啀娆$櫥褰曪紝鐩存帴浣跨敤浼犲叆鐨則oken
+                if (input.IsLogin)
+                {
+                    var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={input.userId}{secret}");
+                    if (u9CLoginResult.Success)
+                    {
+                        input.token = u9CLoginResult.Data;
+                        Logger.Interface.Info($"U9C鐧诲綍token: {input.token}");
+                    }
+                }
+                var _params = new List<SubmitLineInputParam>();
+                _params.Add(input.param);
+                var response = await HttpHelper.PostAsync(SubmitLineUrl, JsonConvert.SerializeObject(_params), new Dictionary<string, string>() { { "token", input.token } });
+                var result = JsonConvert.DeserializeObject<U9CResult2>(response.Message);
+                if (result != null)
+                {
+                    if (result.Success && result.Data[0].IsSucess)
+                    {
+                        action.Data = result.Data;
+                        Logger.Interface.Info($"鏀惰揣鍗�-琛屾彁浜ゆ帴鍙f彁浜son: {JsonConvert.SerializeObject(_params)}锛岃繑鍥濲son: {response.Message}");
+                    }
+                    else
+                    {
+                        action.IsSuccessed = false;
+                        action.LocaleMsg = new($"鏀惰揣鍗�-琛屾彁浜ゆ帴鍙eけ璐�: {result.Data[0].ErrorMsg}");
+                        Logger.Interface.Info($"鏀惰揣鍗�-琛屾彁浜ゆ帴鍙eけ璐�:{result.Data[0].ErrorMsg}");
+                    }
+                }
+            }
+            catch (System.Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, "鏀惰揣鍗�-琛屾彁浜ゅ紓甯�");
+            }
+            Logger.Interface.Info($"/* 鏀惰揣鍗�-琛屾彁浜ゆ帴鍙g粨鏉� */\r\n"); //鍥哄畾鍐欐硶
+            return action;
+        }
+
+        /// <summary>
+        /// 鏀惰揣鍗�-琛屽鏍�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        private async Task<ApiAction<List<U9CReturnData2>>> ApproveLine(SubmitLineInput input)
+        {
+            Logger.Interface.Info($"/**\r\n *杩涘叆鏀惰揣鍗�-琛屽鏍告帴鍙�....\r\n */\r\n"); //鍥哄畾鍐欐硶
+            var action = new ApiAction<List<U9CReturnData2>>();
+            try
+            {
+                //濡傛灉宸茬粡鐧诲綍鍒欎笉闇�瑕佸啀娆$櫥褰曪紝鐩存帴浣跨敤浼犲叆鐨則oken
+                if (input.IsLogin)
+                {
+                    var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={Reviewer}{secret}");
+                    if (u9CLoginResult.Success)
+                    {
+                        input.token = u9CLoginResult.Data;
+                        Logger.Interface.Info($"U9C鐧诲綍token: {input.token}");
+                    }
+                }
+                var _params = new List<SubmitLineInputParam>();
+                _params.Add(input.param);
+                var response = await HttpHelper.PostAsync(ApproveLineUrl, JsonConvert.SerializeObject(_params), new Dictionary<string, string>() { { "token", input.token } });
+                var result = JsonConvert.DeserializeObject<U9CResult2>(response.Message);
+                if (result != null)
+                {
+                    if (result.Success && result.Data[0].IsSucess)
+                    {
+                        action.Data = result.Data;
+                        Logger.Interface.Info($"鏀惰揣鍗�-琛屽鏍告帴鍙f彁浜son: {JsonConvert.SerializeObject(_params)}锛岃繑鍥濲son: {response.Message}");
+                    }
+                    else
+                    {
+                        action.IsSuccessed = false;
+                        action.LocaleMsg = new($"鏀惰揣鍗� - 琛屽鏍告帴鍙eけ璐�:{result.Data[0].ErrorMsg}");
+                        Logger.Interface.Info($"鏀惰揣鍗�-琛屽鏍告帴鍙f彁浜son: {JsonConvert.SerializeObject(_params)}锛屽け璐�:{result.Data[0].ErrorMsg}");
+                    }
+                }
+            }
+            catch (System.Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, "鏀惰揣鍗�-琛屽鏍稿紓甯�");
+            }
+            Logger.Interface.Info($"/* 鏀惰揣鍗�-琛屽鏍告帴鍙g粨鏉� */\r\n"); //鍥哄畾鍐欐硶
+            return action;
+        }
     }
 }

--
Gitblit v1.9.3