From 9556c5fc2168b71e5aba4bd5353fcd70e681ee46 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期一, 09 十二月 2024 01:54:25 +0800
Subject: [PATCH] 调用U9C接口生成入库单更新

---
 Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs                |    2 
 Tiger.Business.MES/iERP/MES_U9C.cs                                |  136 ++++++--------
 Tiger.Business.MES/Transaction/InStoreOrderNo.cs                  |  268 +++++++++++++++++++++++------
 Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs       |    2 
 Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs |   93 ++++++++++
 Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs                |    4 
 6 files changed, 367 insertions(+), 138 deletions(-)

diff --git a/Tiger.Business.MES/Transaction/InStoreOrderNo.cs b/Tiger.Business.MES/Transaction/InStoreOrderNo.cs
index f4ee422..78bb79d 100644
--- a/Tiger.Business.MES/Transaction/InStoreOrderNo.cs
+++ b/Tiger.Business.MES/Transaction/InStoreOrderNo.cs
@@ -17,6 +17,9 @@
 using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
 using System.Drawing.Printing;
 using Tiger.Model.Entitys.MES.Position;
+using System.Drawing.Drawing2D;
+using static Microsoft.CodeAnalysis.CSharp.SyntaxTokenParser;
+using Tiger.Model.Minsun;
 
 namespace Tiger.Business.MES.Transaction
 {
@@ -34,6 +37,8 @@
             ApiHost = apiHost;
             OrgCode = input.OrgCode;
             pageSize = input.pageSize;
+            _GetScannedList();
+            CurBatchNo = !inStoreInfos.IsNullOrEmpty() && inStoreInfos.InStoreScanInfos.Count>0? InStoreScanInfos[0].BATCH_NO: DateTime.Now.ToString("yyyyMMddHHmmss");
             Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
             return this;
         }
@@ -44,20 +49,26 @@
         public long UserId { get; set; }
         public string OrgCode { get; set; }
         public string CurSN { get; set; }
+        public string CurBatchNo { get; set; }
         public int pageSize { get; set; }
         public RcvRptDocCreateInput RcvRptInput { get; set; } = new RcvRptDocCreateInput();
         public List<ProdInBatch> ProdInBatchs { get; set; } = new List<ProdInBatch>();
         public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; } = new List<BIZ_ERP_PROD_IN_BTH>();
+        public List<BIZ_ERP_PROD_IN> ErpProdIns { get; set; } = new List<BIZ_ERP_PROD_IN>();
         /// <summary>
         /// 鎵弿鍒楄〃 
         /// </summary>
         public List<InStoreScanInfo> InStoreScanInfos { get; set; } = new List<InStoreScanInfo>();
         public List<BIZ_ERP_PROD_IN_SN> ErpProdInSns { get; set; } = new List<BIZ_ERP_PROD_IN_SN>();
+        public InStoreInfos inStoreInfos { get; set; }
 
         #endregion Propertys & Variables
 
         #region Functions
 
+        public ApiAction<InStoreInfos> GetInStoreInfos() {
+            return new() { Data= inStoreInfos };
+        }
         /// <summary>
         /// 鎵弿鏉$爜
         /// </summary>
@@ -86,6 +97,7 @@
                 if (!ErpProdInBths.Any(q => q.WORK_ORDER == Info.ErpProdInBth.WORK_ORDER))
                 {
                     Info.ErpProdInBth.AUTH_ORG = OrgCode;
+                    Info.ErpProdInBth.BATCH_NO = CurBatchNo;
                     Info.ErpProdInBth.CREATE_USER = UserCode;
                     Info.ErpProdInBth.CREATE_TIME = DateTime.Now;
                     Info.ErpProdInBth.SCANED_DATE = DateTime.Now;
@@ -94,7 +106,19 @@
                     Info.ErpProdInBth.ORDER_NO = UserCode;
                     Info.ErpProdInBth.IS_HANDLED = "N";
                     Info.ErpProdInBth.CartonQty = n == 0 ? 1 : n;
+                    BIZ_ERP_PROD_IN prodIn = new()
+                    {
+                        AUTH_ORG = OrgCode,
+                        BILLCODE = UserCode,
+                        BILLDATE = DateTime.Now,
+                        STATUS = 0,
+                        HANDLED = -1,
+                        WAREHOUSECODE = "",
+                        SOURCECODE = Info.ErpProdInBth.WORK_ORDER,
+                        HANDLED_DATE = DateTime.Now,
+                    };
                     ErpProdInBths.Add(Info.ErpProdInBth);
+                    ErpProdIns.Add(prodIn);
                 }
                 else
                 {
@@ -104,7 +128,7 @@
                         if (!erpbth.IsNullOrEmpty())
                         {
                             erpbth.SCAN_QTY += Info.InStoreScanInfo.SCAN_QTY.ToDouble();
-                            Info.ErpProdInBth.CartonQty++;
+                            erpbth.CartonQty = n + 1;
                         }
                     }
                 }
@@ -139,7 +163,7 @@
                             isAdded = true;
                         }
                     }
-                    if (isAdded)
+                    if (!isAdded)
                     {
                         RcvRptInput.PrintJsons.Add(new()
                         {
@@ -154,14 +178,16 @@
                 //鏆傚瓨鎵爜鏁版嵁
                 if (!InStoreScanInfos.Any(q => q.WORK_ORDER == Info?.ErpProdInBth.WORK_ORDER && q.SN == CurSN))
                 {
+                    Info.InStoreScanInfo.BATCH_NO = CurBatchNo;
                     InStoreScanInfos.Add(Info.InStoreScanInfo);
                 }
                 var wipPkgs = Biz.Db.Ado.UseStoredProcedure().SqlQuery<MES_WIP_PKG>("SP_MES_GET_ITEM_PKG", new SugarParameter("root", CurSN));
                 int maxLevel = wipPkgs.Max(p => p.LEVEL);
-                foreach (var item in wipPkgs.Where(q=> q.LEVEL == maxLevel))
+                foreach (var item in wipPkgs.Where(q => q.LEVEL == maxLevel))
                 {
                     var scanResult = new BIZ_ERP_PROD_IN_SN
                     {
+                        AUTH_ORG = OrgCode,
                         ID = Guid.NewGuid().ToString(),
                         CARTONNO = CurSN,
                         SN = item.SN,
@@ -200,10 +226,16 @@
                     this.Close(!dbTran.IsSuccess);
                     throw dbTran.ErrorException;
                 }
-                action.Data = new() { 
+                RcvRptInput.RcvRptDocBases = new();
+                RcvRptInput.labels = new();
+                RcvRptInput.ErpProdInBths = ErpProdInBths;
+                RcvRptInput.userId = UserCode;
+                inStoreInfos= new()
+                {
                     ErpProdInBths = ErpProdInBths,
                     InStoreScanInfos = InStoreScanInfos,
                 };
+                action.Data = inStoreInfos;
             }
             catch (Exception ex)
             {
@@ -217,48 +249,88 @@
         /// </summary>
         /// <param name="code"></param>
         /// <returns></returns>
-        public async Task<ApiAction<RcvRptDocCreateInput>> GenerateInStoreOrder(RcvRptDocCreateInput input)
+        public async Task<ApiAction<RcvRptDocCreateInput>> GenerateInStoreOrder()
         {
             var action = new ApiAction<RcvRptDocCreateInput>();
             try
             {
-                //input.RcvRptDocBases = new()
-                //{
-                //    new(){
-                //    WorkOrder = item.WORK_ORDER,
-                //    ItemCode = item.ITEM_CODE,
-                //    WhCode = "10105",
-                //    PkgQty = item.SCAN_QTY,
-                //    CompleteQty = item.SCAN_QTY,
-                //    OutputType = 0,
-                //    StorageType = 4,
-                //    DocState = 1,
-                //    Status = "N"
-                //    }
-                //};
-                action = await _IMES_U9C.RcvRptDocCreate(input);
-
-                //淇濆瓨鏁版嵁搴�
-                var db = Business.Biz.Db;
-                var dbTran = db.UseTran(() =>
+                //濡傛灉鎵弿璁板綍涓�0
+                if (!RcvRptInput.ErpProdInBths.Any(q => q.IS_HANDLED == "N"))
                 {
-                    //var x = db.Storageable(ErpProdInBths, $"InStoreOrderNo_{UserCode}")
-                    //         .WhereColumns(t => new { t.ORDER_NO, t.WORK_ORDER, t.GHOST_ROW })
-                    //         .ToStorage();
-                    //x.AsInsertable.ExecuteCommand();
-                    //x.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
-
-                    //var s = db.Storageable(ErpProdInSns, $"InStoreOrderNo_{UserCode}")
-                    //            .WhereColumns(t => new { t.CARTONNO, t.SN, t.GHOST_ROW })
-                    //            .ToStorage();
-                    //s.AsInsertable.ExecuteCommand();
-                    //s.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
-                });
-                if (!dbTran.IsSuccess)
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"娌℃湁瑕佸叆搴撶殑浜у搧鏁版嵁锛岃鎵弿鍖呰瀹屾垚鐨勭浜岀淮鐮侀噸鏂扮敓鎴愬叆搴撳崟鎹紒");
+                    return action;
+                }
+                if (RcvRptInput.RcvRptDocBases.IsNullOrEmpty() || RcvRptInput.RcvRptDocBases.Count == 0)
                 {
-                    Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
-                    this.Close(!dbTran.IsSuccess);
-                    throw dbTran.ErrorException;
+                    foreach (var item in RcvRptInput.ErpProdInBths)
+                    {
+                        var DocBase = new RcvRptDocBase()
+                        {
+                            WorkOrder = item.WORK_ORDER,
+                            ItemCode = item.ITEM_CODE,
+                            WhCode = "10105",
+                            PkgQty = item.SCAN_QTY.ToInt32(),
+                            CompleteQty = item.SCAN_QTY.ToInt32(),
+                            OutputType = 0,
+                            StorageType = 4,
+                            DocState = 1,
+                            Status = "N"
+                        };
+                        if (!RcvRptInput.RcvRptDocBases.Any(q => q.WorkOrder == item.WORK_ORDER))
+                        {
+                            RcvRptInput.RcvRptDocBases.Add(DocBase);
+                        }
+                    }
+                }
+                else
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"鏈夊瓨鍦ㄦ湭鎻愪氦鐨勫叆搴撳崟锛屼笉鑳界敓鎴愬叆搴撳崟");
+                    return action;
+                }
+                action = await _IMES_U9C.RcvRptDocCreate(RcvRptInput);
+                if (action.IsSuccessed)
+                {
+                    foreach (var sn in ErpProdInSns)
+                    {
+                        var d = action.Data.ErpProdInBths.Where(q=> q.WORK_ORDER == sn.SOURCECODE).FirstOrDefault();
+                        if (!d.IsNullOrEmpty())
+                        {
+                            sn.BUSINESSCODE = d.ORDER_NO;
+                            sn.UPDATE_USER = UserCode;
+                            sn.UPDATE_TIME = DateTime.Now;
+                        }
+                    }
+                    foreach (var p in ErpProdIns)
+                    {
+                        var d = action.Data.ErpProdInBths.Where(q => q.WORK_ORDER == p.SOURCECODE).FirstOrDefault();
+                        if (!d.IsNullOrEmpty())
+                        {
+                            p.BILLCODE = d.ORDER_NO;
+                            p.UPDATE_USER = UserCode;
+                            p.UPDATE_TIME = DateTime.Now;
+                            p.HANDLED = 0;
+                        }
+                    }
+                    //淇濆瓨鏁版嵁搴�
+                    var db = Business.Biz.Db;
+                    var dbTran = db.UseTran(() =>
+                    {
+                        db.Updateable(ErpProdInSns, $"InStoreOrderNo_{UserCode}").UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.BUSINESSCODE }).ExecuteCommand();
+
+                        var x = db.Storageable(ErpProdIns, $"InStoreOrderNo_{UserCode}")
+                                 .WhereColumns(t => new { t.BILLCODE, t.SOURCECODE, t.GHOST_ROW })
+                                 .ToStorage();
+                        x.AsInsertable.ExecuteCommand();
+                        x.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
+                    });
+                    if (!dbTran.IsSuccess)
+                    {
+                        Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
+                        this.Close(!dbTran.IsSuccess);
+                        throw dbTran.ErrorException;
+                    }
                 }
 
             }
@@ -270,39 +342,115 @@
         }
 
         /// <summary>
-        /// 鏌ヨ瀵瑰簲鐨勬潯鐮�
+        /// 鏌ヨ宸叉壂鎻忓垪琛�
         /// </summary>
         /// <returns></returns>
-        public async Task<ApiAction<RcvRptDocCreateInput>> GetScannedBarcodes()
+        public async Task<ApiAction<RcvRptDocCreateInput>> GetScannedList()
         {
             var action = new ApiAction<RcvRptDocCreateInput>();
             try
             {
-                //var query = await Biz.Db.Queryable<BIZ_ERP_RECEIPT_SN, BAS_ITEM>((t, m) =>
-                //                        new JoinQueryInfos(
-                //                            JoinType.Left, t.ITEM_CODE == m.ITEM_CODE
-                //                            ))
-                //    .Where((t, m) => t.CREATE_USER == UserCode
-                //        //&& t.WAREHOUSECODE.ToUpper() == WarehouseCode.ToUpper()
-                //        && t.STATUS == WMS_ITEM.STATUSs.Counted.GetValue()
-                //        && t.ITEM_CODE.ToUpper() == MaterialCode.ToUpper()
-                //        && t.BILLCODE == UserCode
-                //        && t.AUTH_ORG == OrgCode)
-                //    .Select((t, m) => new Model.Minsun.CustSupplyCheckDetail
-                //    {
-                //        Barcode = t.SN,
-                //        BarcodeQty = t.SCANQTY,
-                //        Unit = m.UNIT
-                //    })
-                //    .ToListAsync();
+                action.Data = _GetScannedList();
             }
             catch (Exception ex)
             {
-                action.CatchExceptionWithLog(ex, $"鏌ヨ瀵瑰簲鐨勬潯鐮佸紓甯�");
+                action.CatchExceptionWithLog(ex, $"鏌ヨ宸叉壂鎻忓垪琛ㄥ紓甯�");
             }
             return action;
         }
 
+        /// <summary>
+        /// 浠庢暟鎹簱璇诲洖鎿嶄綔鑰呭師鏈搷浣滅殑璁板綍
+        /// </summary>
+        /// <returns></returns>
+        private RcvRptDocCreateInput _GetScannedList()
+        {
+            RcvRptInput.RcvRptDocBases = new();
+            RcvRptInput.PrintJsons = new();
+            RcvRptInput.labels = new();
+            RcvRptInput.userId = UserCode;
+            if (RcvRptInput.ErpProdInBths.Count == 0)
+            {
+                RcvRptInput.ErpProdInBths = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>()
+                    .Where(q => q.BATCH_NO == SqlFunc.Subqueryable<BIZ_ERP_PROD_IN_BTH>().Where(s => s.ORDER_NO == UserCode).Select(s => s.BATCH_NO))
+                    .IncludesAllFirstLayer().ToList();
+                foreach (var item in RcvRptInput.ErpProdInBths)
+                {
+                    var values = item.ProdInSns.GroupBy(x => x.CARTONNO)
+                        .Select(g => new InStoreScanInfo() { SN = g.Key, SALES_ORDER = item.SALES_ORDER, BATCH_NO = item.BATCH_NO, WORK_ORDER = item.WORK_ORDER, SCAN_QTY = g.Sum(x => x.Qty).ToDouble() });
+                    foreach (var t in values)
+                    {
+                        InStoreScanInfos.Add(t);
+                    }
+                    item.CartonQty = values.Count();
+
+                    BIZ_ERP_PROD_IN prodIn = new()
+                    {
+                        AUTH_ORG = OrgCode,
+                        BILLCODE = UserCode,
+                        BILLDATE = DateTime.Now,
+                        STATUS = 0,
+                        HANDLED = -1,
+                        WAREHOUSECODE = "",
+                        SOURCECODE = item.WORK_ORDER,
+                        HANDLED_DATE = DateTime.Now,
+                    };
+                    ErpProdIns.Add(prodIn);
+                    ErpProdInSns.AddRange(item.ProdInSns);
+
+                    //鐢熸垚鎵撳嵃瀹炰綋
+                    if (RcvRptInput.PrintJsons.Count == 0)
+                    {
+                        RcvRptInput.PrintJsons.Add(new()
+                        {
+                            ID = Guid.NewGuid().ToString("N"),
+                            Items = new() {
+                            item
+                        }
+                        });
+                    }
+                    else
+                    {
+                        //鎷煎垎椤�
+                        bool isAdded = false;
+                        foreach (var p in RcvRptInput.PrintJsons)
+                        {
+                            if (!p.Items.Any(q => q.WORK_ORDER == item.WORK_ORDER))
+                            {
+                                if (p.Items.Count < pageSize)
+                                {
+                                    p.Items.Add(item);
+                                    isAdded = true;
+                                }
+                            }
+                            else
+                            {
+                                isAdded = true;
+                            }
+                        }
+                        if (!isAdded)
+                        {
+                            RcvRptInput.PrintJsons.Add(new()
+                            {
+                                ID = Guid.NewGuid().ToString("N"),
+                                Items = new() {
+                            item
+                        }
+                            });
+                        }
+                    }
+                }
+                ErpProdInBths = RcvRptInput.ErpProdInBths;
+            }
+            
+            inStoreInfos = new()
+            {
+                ErpProdInBths = ErpProdInBths,
+                InStoreScanInfos = InStoreScanInfos,
+            };
+            return RcvRptInput;
+        }
+
         #endregion Functions
 
         public override bool Close(bool needSaveHistoryLog = false)
diff --git a/Tiger.Business.MES/iERP/MES_U9C.cs b/Tiger.Business.MES/iERP/MES_U9C.cs
index 15eac1f..5770308 100644
--- a/Tiger.Business.MES/iERP/MES_U9C.cs
+++ b/Tiger.Business.MES/iERP/MES_U9C.cs
@@ -45,30 +45,25 @@
             var action = new ApiAction<RcvRptDocCreateInput>();
             try
             {
-                //鍏堜繚瀛樻暟鎹�
-                bool IsSuccessed = true;
-
                 //淇濆瓨鎴愬姛锛岃皟鐢║9C鎺ュ彛-娴嬭瘯鐢�
                 //int i = 1;
-                //List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths = new List<BIZ_ERP_PROD_IN_BTH>();
                 //foreach (var item in input.RcvRptDocBases.Where(q => q.Status != "Y"))
                 //{
-                //    var ErpProdInBth = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>().Where(q => q.WORK_ORDER == item.WorkOrder).First();
+                //    var ErpProdInBth = input.ErpProdInBths.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();
                 //    item.Status = "Y";
                 //    if (!ErpProdInBth.IsNullOrEmpty())
                 //    {
-                //        ErpProdInBth.ORDER_NO = $"YDRKD241200006";
+                //        ErpProdInBth.ORDER_NO = $"YDRKD24120000{5+i}";
                 //        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 = $"YDRKD241200006";
-                //            d.STATUS = "Y";
+                //            d.ORDER_NO = $"YDRKD24120000{5 + i}";
+                //            d.IS_HANDLED = "Y";
                 //        }
                 //    }
                 //    i++;
@@ -76,7 +71,7 @@
                 //var _db = Biz.Db;
                 //var _dbTran = _db.UseTran(() =>
                 //{
-                //    _db.Updateable(ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE }).ExecuteCommand();
+                //    _db.Updateable(input.ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE, x.UPDATE_USER, x.UPDATE_TIME }).ExecuteCommand();
                 //});
                 //if (!_dbTran.IsSuccess)
                 //{
@@ -84,20 +79,16 @@
                 //    Logger.Interface.Error(action.Message);
                 //    IsSuccessed = false;
                 //}
-                //input.ErpProdInBths = ErpProdInBths;
 
                 //淇濆瓨鎴愬姛锛岃皟鐢║9C鎺ュ彛
-                if (IsSuccessed)
+                var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={input.userId}{secret}");
+                if (u9CLoginResult.Success)
                 {
-                    var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={input.userId}{secret}");
-                    if (u9CLoginResult.Success)
+                    var token = u9CLoginResult.Data;
+                    Logger.Interface.Info($"U9C鐧诲綍token: {token}");
+                    foreach (var item in input.RcvRptDocBases.Where(q => q.Status != "Y"))
                     {
-                        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.Where(q => q.Status != "Y"))
-                        {
-                            List<RcvRptDocCreateParam> param = new() {
+                        List<RcvRptDocCreateParam> param = new() {
                                 new() {
                                     CompleteList = new(){
                                        new CompleteList
@@ -116,70 +107,65 @@
                                     BusinessDate = DateTime.Now,
                                 }
                             };
-                            var response = await HttpHelper.PostAsync(RcvRptDocCreateUrl, JsonConvert.SerializeObject(param), new Dictionary<string, string>() { { "token", token } });
-                            var result = JsonConvert.DeserializeObject<U9CResult>(response.Message);
-                            var ErpProdInBth = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>().Where(q => q.WORK_ORDER == item.WorkOrder).First();
-                            if (result != null)
+                        var response = await HttpHelper.PostAsync(RcvRptDocCreateUrl, JsonConvert.SerializeObject(param), new Dictionary<string, string>() { { "token", token } });
+                        var result = JsonConvert.DeserializeObject<U9CResult>(response.Message);
+                        var ErpProdInBth = input.ErpProdInBths.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();
+                        if (result != null)
+                        {
+                            if (result.Success && result.Data[0].m_isSucess)
                             {
-                                if (result.Success && result.Data[0].m_isSucess)
+                                Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟帴鍙f彁浜son: {JsonConvert.SerializeObject(param)}锛岃繑鍥濲son: {response.Message}");
+                                item.Status = "Y";
+                                if (!ErpProdInBth.IsNullOrEmpty())
                                 {
-                                    Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟帴鍙f彁浜son: {JsonConvert.SerializeObject(param)}锛岃繑鍥濲son: {response.Message}");
-                                    item.Status = "Y";
-                                    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 && q.IS_HANDLED != "P").FirstOrDefault();
-                                        if (!d.IsNullOrEmpty())
-                                        {
-                                            d.ORDER_NO = result.Data[0].m_code;
-                                            d.IS_HANDLED = "Y";
-                                        }
-                                    }
-                                    Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟垚鍔�");
+                                    ErpProdInBth.ORDER_NO = result.Data[0].m_code;
+                                    ErpProdInBth.IS_HANDLED = "Y";
+                                    ErpProdInBth.HANDLED_DATE = DateTime.Now;
                                 }
-                                else
+                                foreach (var p in input.PrintJsons)
                                 {
-                                    action.IsSuccessed = false;
-                                    action.LocaleMsg = new($"{action.Message}; {result.Data[0].m_errorMsg}");
-                                    item.Status = "F";
-                                    if (!ErpProdInBth.IsNullOrEmpty())
+                                    var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault();
+                                    if (!d.IsNullOrEmpty())
                                     {
-                                        ErpProdInBth.REMARK = result.Data[0].m_errorMsg;
-                                        ErpProdInBth.IS_HANDLED = "F";
-                                        ErpProdInBth.HANDLED_DATE = DateTime.Now;
-                                        ErpProdInBths.Add(ErpProdInBth);
+                                        d.ORDER_NO = result.Data[0].m_code;
+                                        d.IS_HANDLED = "Y";
                                     }
-                                    foreach (var p in input.PrintJsons)
-                                    {
-                                        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault();
-                                        if (!d.IsNullOrEmpty())
-                                        {
-                                            d.ORDER_NO = result.Data[0].m_code;
-                                            d.IS_HANDLED = "F";
-                                        }
-                                    }
-                                    Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曞け璐�:{result.Data[0].m_errorMsg}");
                                 }
+                                Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟垚鍔�");
+                            }
+                            else
+                            {
+                                action.IsSuccessed = false;
+                                action.LocaleMsg = new($"{action.Message}; {result.Data[0].m_errorMsg}");
+                                item.Status = "F";
+                                if (!ErpProdInBth.IsNullOrEmpty())
+                                {
+                                    ErpProdInBth.REMARK = result.Data[0].m_errorMsg;
+                                    ErpProdInBth.IS_HANDLED = "F";
+                                    ErpProdInBth.HANDLED_DATE = DateTime.Now;
+                                }
+                                foreach (var p in input.PrintJsons)
+                                {
+                                    var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault();
+                                    if (!d.IsNullOrEmpty())
+                                    {
+                                        d.ORDER_NO = result.Data[0].m_code;
+                                        d.IS_HANDLED = "F";
+                                    }
+                                }
+                                Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曞け璐�:{result.Data[0].m_errorMsg}");
                             }
                         }
-                        var _db = Biz.Db;
-                        var _dbTran = _db.UseTran(() =>
-                        {
-                            _db.Updateable(ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE, x.UPDATE_USER, x.UPDATE_TIME }).ExecuteCommand();
-                        });
-                        if (!_dbTran.IsSuccess)
-                        {
-                            action.CatchExceptionWithLog(_dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
-                            Logger.Interface.Error(action.Message);
-                            IsSuccessed = false;
-                        }
-                        input.ErpProdInBths = ErpProdInBths;
+                    }
+                    var _db = Biz.Db;
+                    var _dbTran = _db.UseTran(() =>
+                    {
+                        _db.Updateable(input.ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE, x.UPDATE_USER, x.UPDATE_TIME }).ExecuteCommand();
+                    });
+                    if (!_dbTran.IsSuccess)
+                    {
+                        action.CatchExceptionWithLog(_dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
+                        Logger.Interface.Error(action.Message);
                     }
                 }
                 input.labels = GetLabels(input.PrintJsons);
diff --git a/Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs b/Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs
index 16f3892..702d093 100644
--- a/Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs
+++ b/Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs
@@ -10,6 +10,7 @@
 using Tiger.Model;
 using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
 using Tiger.Model.Entitys.MES.Position;
+using Tiger.Model.Entitys.MES.U9C;
 
 namespace Tiger.Api.Controllers.MES
 {
@@ -36,9 +37,10 @@
                 {
                     trans = AutoFacContainer.Instance.Resolve<IInStoreOrderNo>().Init(action.ID, Request.Host.Value,  action.Data);
                     iBiz.MES.Context.NewTransaction(HttpContext, trans);
+
                 }
 
-                response = action.GetResponse();
+                response = action.GetResponse(trans.GetInStoreInfos());
             }
             catch (System.IO.InvalidDataException ex)
             {
@@ -147,5 +149,94 @@
             return Ok(response);
         }
 
+        /// <summary>
+        /// 璋冪敤U9C鎺ュ彛鐢熸垚鍏ュ簱鍗�
+        /// </summary>
+        /// <param name="action"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("api/[controller]/InStoreOrderNo/GenerateInStoreOrder")]
+        public async Task<IActionResult> InStoreOrderNo_GenerateInStoreOrderAsync([FromBody] ApiAction<RcvRptDocCreateInput> action)
+        {
+            ApiAction response;
+            IInStoreOrderNo trans = null;
+            try
+            {
+                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
+                {
+                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IInStoreOrderNo;
+                    if (!trans.IsFinished)
+                    {
+                        if (action.IsAsync)
+                        {
+                            response = action.GetResponse(await trans.GenerateInStoreOrder());
+                        }
+                        else
+                        {
+                            lock (trans.TransLock) { response = action.GetResponse(trans.GenerateInStoreOrder().Result); }
+                        }
+                    }
+                    else
+                    {
+                        response = action.GetResponse($"Transaction Error: 鍏ュ簱鍗曚簨鍔ID:{action.ID}]宸茬粡鍏抽棴", false);
+                    }
+                }
+                else
+                {
+                    response = action.GetResponse($"Transaction Error: 鍏ュ簱鍗曚簨鍔ID:{action.ID}]宸茬粡琚叧闂�", false);
+                }
+            }
+            catch (System.Exception ex)
+            {
+                response = action.GetResponse().CatchExceptionWithLog(ex);
+            }
+            trans?.AddHistory(Request, action);
+            return Ok(response);
+        }
+
+        /// <summary>
+        /// 鏌ヨ瀵瑰簲鐨勬潯鐮�
+        /// </summary>
+        /// <param name="action"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("api/[controller]/InStoreOrderNo/GetScannedList")]
+        public async Task<IActionResult> InStoreOrderNo_GetScannedListAsync([FromBody] ApiAction action)
+        {
+            ApiAction response;
+            IInStoreOrderNo trans = null;
+            try
+            {
+                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
+                {
+                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IInStoreOrderNo;
+                    if (!trans.IsFinished)
+                    {
+                        if (action.IsAsync)
+                        {
+                            response = action.GetResponse(await trans.GetScannedList());
+                        }
+                        else
+                        {
+                            lock (trans.TransLock) { response = action.GetResponse(trans.GetScannedList().Result); }
+                        }
+                    }
+                    else
+                    {
+                        response = action.GetResponse($"Transaction Error: 鍏ュ簱鍗曚簨鍔ID:{action.ID}]宸茬粡鍏抽棴", false);
+                    }
+                }
+                else
+                {
+                    response = action.GetResponse($"Transaction Error: 鍏ュ簱鍗曚簨鍔ID:{action.ID}]宸茬粡琚叧闂�", false);
+                }
+            }
+            catch (System.Exception ex)
+            {
+                response = action.GetResponse().CatchExceptionWithLog(ex);
+            }
+            trans?.AddHistory(Request, action);
+            return Ok(response);
+        }
     }
 }
diff --git a/Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs b/Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs
index db27594..48fc340 100644
--- a/Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs
+++ b/Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs
@@ -6,6 +6,7 @@
 using System.Threading.Tasks;
 using Tiger.Model;
 using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
+using Tiger.Model.Entitys.MES.U9C;
 
 namespace Tiger.IBusiness
 {
@@ -13,6 +14,9 @@
     {
         public IInStoreOrderNo Init(string id, string apiHost, InstoreDocInput input);
         public Task<ApiAction<InStoreInfos>> Submit(string code);
+        public Task<ApiAction<RcvRptDocCreateInput>> GenerateInStoreOrder();
+        public Task<ApiAction<RcvRptDocCreateInput>> GetScannedList();
+        public ApiAction<InStoreInfos> GetInStoreInfos();
 
         public bool Close(bool needSaveHistoryLog = false);
     }
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
index 250bcdc..f9d2bea 100644
--- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
+++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
@@ -39,7 +39,7 @@
     public class RcvRptDocCreateInput
     {
         public List<RcvRptDocBase> RcvRptDocBases { get; set; }
-        public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; }
+        public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; } = new List<BIZ_ERP_PROD_IN_BTH>();
         public List<InStorePrintJson> PrintJsons { get; set; } = new List<InStorePrintJson>();
         public List<BAS_LABEL_TEMP> labels { get; set; }
         public string userId { get; set; }
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 98b36f7..0ceba78 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
@@ -204,7 +204,7 @@
         [DisplayName("鏉$爜")]
         public string SN { get; set; }
         public string SALES_ORDER { get; set; }
-        [DisplayName("宸ュ崟鎵规鍙�")]
+        [DisplayName("鎵规鍙�")]
         public string BATCH_NO { get; set; }
         /// <summary>
         /// 宸ュ崟鍙�

--
Gitblit v1.9.3