From defffbf6b1410fe0672d8b25ad8e59cbe49f6c9e Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 23 十一月 2024 22:54:31 +0800
Subject: [PATCH] 入库单更新

---
 Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs          |    2 
 Tiger.Business.MES/iERP/MES_U9C.cs                          |  145 ++++++++++++++++++++++++++++++++++--------------
 Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs |   25 ++++++++
 Tiger.Controllers.MES/Controllers/MESController.MES_U9C.cs  |    2 
 Tiger.Business.MES/BIZ/BIZ_MES_WO.cs                        |    2 
 Tiger.IBusiness.MES/iERP/IMES_U9C.cs                        |    2 
 6 files changed, 133 insertions(+), 45 deletions(-)

diff --git a/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs b/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
index a1a6832..ada7107 100644
--- a/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
+++ b/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
@@ -722,6 +722,7 @@
                     ProdInBatch = new()
                     {
                         WORK_ORDER = wo.ORDER_NO,
+                        SALES_ORDER = wo.SALES_ORDER,
                         BATCH_NO = woSns[0].BATCH_NO,
                         ITEM_CODE = wo.ITEM_CODE,
                         ITEM_NAME = wo.ItemInfo?.ITEM_DESC,
@@ -730,6 +731,7 @@
                     },
                     InStoreScanInfo = new() { 
                         SN = code,
+                        SALES_ORDER = wo.SALES_ORDER,
                         WORK_ORDER = wo.ORDER_NO,
                         BATCH_NO = woSns[0].BATCH_NO,
                         SCAN_QTY = woSns.Count
diff --git a/Tiger.Business.MES/iERP/MES_U9C.cs b/Tiger.Business.MES/iERP/MES_U9C.cs
index b8948e9..e1d0e1d 100644
--- a/Tiger.Business.MES/iERP/MES_U9C.cs
+++ b/Tiger.Business.MES/iERP/MES_U9C.cs
@@ -36,65 +36,124 @@
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<ApiAction> RcvRptDocCreate(List<RcvRptDocCreateInput> input)
+        public async Task<ApiAction<List<InStorePrintJson>>> RcvRptDocCreate(RcvRptDocCreateInput input)
         {
             Logger.Interface.Info($"/**\r\n *杩涘叆鍏ュ簱鍗曟帴鍙�....\r\n */\r\n"); //鍥哄畾鍐欐硶
-            var action = new ApiAction();
+            var action = new ApiAction<List<InStorePrintJson>>();
             try
             {
-                List<RcvRptDocCreateParam> param = new List<RcvRptDocCreateParam>();
-                List<CompleteList> CompleteLists = new List<CompleteList>();
-                foreach (var item in input) {
-                    CompleteList completeList = new CompleteList
-                    {
-                        MOKey = new MOKey { DocNo = item.WorkOrder },
-                        Wh = new Wh { Code = item.WhCode },
-                        DescFlexField = new DescFlexField { PrivateDescSeg1 = item.PkgQty.ToString() },
-                        Item = new Item { Code = item.ItemCode },
-                        CompleteQty = item.CompleteQty,
-                        OutputType = item.OutputType,
-                        StorageType = item.StorageType,
-                        DocState = item.DocState,
-                    };
-                    CompleteLists.Add(completeList);
-                }
-                param.Add(new RcvRptDocCreateParam
+                //List<RcvRptDocCreateParam> param = new List<RcvRptDocCreateParam>();
+                //List<CompleteList> CompleteLists = new List<CompleteList>();
+                //param.Add(new RcvRptDocCreateParam
+                //{
+                //    CompleteList = CompleteLists
+                //});
+
+                //鍏堜繚瀛樻暟鎹�
+                bool IsSuccessed = true;
+                var db = Biz.Db;
+                var dbTran = db.UseTran(() =>
                 {
-                    CompleteList = CompleteLists
+                    var s = db.Storageable(input.ErpProdInBths, "U9C_RcvRptDocCreate")
+                                .WhereColumns(t => new { t.ORDER_NO,t.WORK_ORDER, t.GHOST_ROW })
+                                .ToStorage();
+                    s.AsInsertable.ExecuteCommand();
+                    s.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                 });
-
-                var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode=admin{secret}");
-                if (u9CLoginResult.Success)
+                if (!dbTran.IsSuccess)
                 {
-                    var token = u9CLoginResult.Data;
-                    Logger.Interface.Info($"U9C鐧诲綍token: {token}");
-                    var response = await HttpHelper.PostAsync(RcvRptDocCreateUrl, JsonConvert.SerializeObject(param), new Dictionary<string, string>() { { "token", token } });
-                    var result = JsonConvert.DeserializeObject<U9CResult>(response.Message);
-                    if (result != null)
+                    action.CatchExceptionWithLog(dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
+                    Logger.Interface.Error(action.Message);
+                    IsSuccessed = false;
+                }
+                //淇濆瓨鎴愬姛锛岃皟鐢║9C鎺ュ彛
+                //int i = 1;
+                //foreach (var item in input.RcvRptDocBases)
+                //{
+                //    foreach (var p in input.PrintJsons)
+                //    {
+                //        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();
+                //        if (!d.IsNullOrEmpty())
+                //        {
+                //            d.ORDER_NO = $"XX001-{i}";
+                //        }
+                //        i++;
+                //    }
+                //}
+                if (IsSuccessed)
+                {
+                    var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode=admin{secret}");
+                    if (u9CLoginResult.Success)
                     {
-                        if (result.Success)
+                        var token = u9CLoginResult.Data;
+                        Logger.Interface.Info($"U9C鐧诲綍token: {token}");
+                        List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths = new List<BIZ_ERP_PROD_IN_BTH>();
+                        foreach (var item in input.RcvRptDocBases)
                         {
-                            Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟帴鍙f彁浜son: {JsonConvert.SerializeObject(param)}锛岃繑鍥濲son: {response.Message}");
-                            var db = Biz.Db;
-                            var dbTran = db.UseTran(() =>
+                            List<RcvRptDocCreateParam> param = new() {
+                                new() {
+                                    CompleteList = new(){
+                                       new CompleteList
+                                       {
+                                            MOKey = new MOKey { DocNo = item.WorkOrder },
+                                            Wh = new Wh { Code = item.WhCode },
+                                            DescFlexField = new DescFlexField { PrivateDescSeg1 = item.PkgQty.ToString() },
+                                            Item = new Item { Code = item.ItemCode },
+                                            CompleteQty = item.CompleteQty,
+                                            OutputType = item.OutputType,
+                                            StorageType = item.StorageType,
+                                            DocState = item.DocState,
+                                       }
+                                    }
+                                }
+                            };
+                            var response = await HttpHelper.PostAsync(RcvRptDocCreateUrl, JsonConvert.SerializeObject(param), new Dictionary<string, string>() { { "token", token } });
+                            var result = JsonConvert.DeserializeObject<U9CResult>(response.Message);
+                            if (result != null)
                             {
-
-                            });
-                            if (!dbTran.IsSuccess)
-                            {
-                                action.CatchExceptionWithLog(dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
-                                Logger.Interface.Error(action.Message);
+                                if (result.Success)
+                                {
+                                    Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟帴鍙f彁浜son: {JsonConvert.SerializeObject(param)}锛岃繑鍥濲son: {response.Message}");
+                                    var ErpProdInBth = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>().Where(q=> q.WORK_ORDER == item.WorkOrder).First();
+                                    if (!ErpProdInBth.IsNullOrEmpty())
+                                    {
+                                        ErpProdInBth.ORDER_NO = result.Data[0].m_code;
+                                        ErpProdInBth.IS_HANDLED = "Y";
+                                        ErpProdInBth.HANDLED_DATE = DateTime.Now;
+                                        ErpProdInBths.Add(ErpProdInBth);
+                                    }
+                                    foreach (var p in input.PrintJsons)
+                                    {
+                                        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();
+                                        if (!d.IsNullOrEmpty())
+                                        {
+                                            d.ORDER_NO = result.Data[0].m_code;
+                                        }
+                                    }
+                                    Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟垚鍔�");
+                                }
+                                else
+                                {
+                                    action.IsSuccessed = false;
+                                    action.LocaleMsg = new($"{result.Data[0].m_errorMsg}");
+                                    Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曞け璐�:{result.Data[0].m_errorMsg}");
+                                }
                             }
-                            Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟垚鍔�");
                         }
-                        else
+                        var _db = Biz.Db;
+                        var _dbTran = _db.UseTran(() =>
                         {
-                            action.IsSuccessed = false;
-                            action.LocaleMsg = new($"{result.Data[0].m_errorMsg}");
-                            Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曞け璐�:{result.Data[0].m_errorMsg}");
+                            _db.Updateable(ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.IS_HANDLED, x.HANDLED_DATE }).ExecuteCommand();
+                        });
+                        if (!dbTran.IsSuccess)
+                        {
+                            action.CatchExceptionWithLog(dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
+                            Logger.Interface.Error(action.Message);
+                            IsSuccessed = false;
                         }
                     }
                 }
+                action.Data = input.PrintJsons;
             }
             catch (System.Exception ex)
             {
diff --git a/Tiger.Controllers.MES/Controllers/MESController.MES_U9C.cs b/Tiger.Controllers.MES/Controllers/MESController.MES_U9C.cs
index e9c4b0a..016f505 100644
--- a/Tiger.Controllers.MES/Controllers/MESController.MES_U9C.cs
+++ b/Tiger.Controllers.MES/Controllers/MESController.MES_U9C.cs
@@ -21,7 +21,7 @@
         /// <returns></returns>
         [HttpPost]
         [Route("api/[controller]/[action]")]
-        public async Task<IActionResult> RcvRptDocCreate([FromBody] ApiAction<List<RcvRptDocCreateInput>> action)
+        public async Task<IActionResult> RcvRptDocCreate([FromBody] ApiAction<RcvRptDocCreateInput> action)
         {
             ApiAction response = new();
             try
diff --git a/Tiger.IBusiness.MES/iERP/IMES_U9C.cs b/Tiger.IBusiness.MES/iERP/IMES_U9C.cs
index 6221086..3d697f1 100644
--- a/Tiger.IBusiness.MES/iERP/IMES_U9C.cs
+++ b/Tiger.IBusiness.MES/iERP/IMES_U9C.cs
@@ -12,6 +12,6 @@
 {
     public interface IMES_U9C
     {
-        public Task<ApiAction> RcvRptDocCreate(List<RcvRptDocCreateInput> input);
+        public Task<ApiAction<List<InStorePrintJson>>> RcvRptDocCreate(RcvRptDocCreateInput input);
     }
 }
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
index 20fecd6..d120597 100644
--- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
+++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
@@ -38,6 +38,31 @@
     /// </summary>
     public class RcvRptDocCreateInput
     {
+        public List<RcvRptDocBase> RcvRptDocBases { get; set; }
+        public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; }
+        public List<InStorePrintJson> PrintJsons { get; set; }
+    }
+
+    public class InStorePrintJson
+    {
+        public string ID { get; set; }
+        public List<ProdInBatch> Items { get; set; }
+    }
+
+    public class ProdInBatch
+    {
+        public string ORDER_NO { get; set; }
+        public string SALES_ORDER { get; set; }
+        public string BATCH_NO { get; set; }
+        public string WORK_ORDER { get; set; }
+        public string ITEM_CODE { get; set; }
+        public string ITEM_NAME { get; set; }
+        public double PLAN_QTY { get; set; }
+        public double SCAN_QTY { get; set; }
+    }
+
+    public class RcvRptDocBase
+    {
         public string WorkOrder { get; set; }
         public string ItemCode { get; set; }
         public string WhCode { get; set; } = "10105";
diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs
index 38fdd85..dedf9b8 100644
--- a/Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs
+++ b/Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs
@@ -146,6 +146,7 @@
 		/// </summary>
 		[DisplayName("入库单号")]
         public string ORDER_NO { get; set; }
+        public string SALES_ORDER { get; set; }
         /// <summary>
         /// 工单批次号
         /// </summary>
@@ -185,6 +186,7 @@
         /// </summary>
         [DisplayName("条码")]
         public string SN { get; set; }
+        public string SALES_ORDER { get; set; }
         [DisplayName("工单批次号")]
         public string BATCH_NO { get; set; }
         /// <summary>

--
Gitblit v1.9.3