From 790032df98d586627a771159d5b6c7646e3fff35 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 07 十二月 2024 23:18:29 +0800
Subject: [PATCH] 入库单更新

---
 Tiger.Model.Net/Entitys/MES/ParameterEntity/BizPrintInstoreDocParameter.cs |    8 
 Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs                         |   41 ++-
 Tiger.Business.MES/iERP/MES_U9C.cs                                         |   40 +--
 Tiger.Business.MES/Transaction/InStoreOrderNo.cs                           |  261 ++++++++++++++++++++++++-
 Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs                |   30 +-
 Tiger.Business.MES/BIZ/BIZ_MES_WO.cs                                       |   13 -
 Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_SN.cs                          |    5 
 Tiger.Business.MES/BIZ/BizPrintInstoreDoc.cs                               |    2 
 Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs          |  151 +++++++++++++++
 Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs                                 |    4 
 Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs                         |    8 
 11 files changed, 478 insertions(+), 85 deletions(-)

diff --git a/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs b/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
index 83c7f2b..163aa8c 100644
--- a/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
+++ b/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
@@ -724,21 +724,12 @@
                     ErpProdInBth= new() { 
                         WORK_ORDER = wo.ORDER_NO,
                         BATCH_NO = woSns[0].BATCH_NO,
-                        ITEM_CODE = wo.ITEM_CODE,
-                        ITEM_NAME = wo.ItemInfo?.ITEM_DESC,
-                        SCAN_QTY = woSns.Count
-                    },
-                    ProdInBatch = new()
-                    {
-                        WORK_ORDER = wo.ORDER_NO,
                         SALES_ORDER = wo.SALES_ORDER,
-                        BATCH_NO = woSns[0].BATCH_NO,
                         ITEM_CODE = wo.ITEM_CODE,
-                        SapCode = wo.ItemInfo?.ExtInfo?.SapCode,
                         ITEM_NAME = wo.ItemInfo?.ITEM_DESC,
-                        PLAN_QTY = wo.PLAN_QTY,
+                        SapCode = wo.ItemInfo?.ExtInfo?.SapCode,
                         SCAN_QTY = woSns.Count,
-                        STATUS = "N" //Y-宸茬敓鎴愶紝N-鏈敓鎴愶紝F-澶辫触
+                        IS_HANDLED = "N" //Y-宸茬敓鎴愶紝N-鏈敓鎴愶紝F-澶辫触
                     },
                     InStoreScanInfo = new() { 
                         SN = cartonSn,
diff --git a/Tiger.Business.MES/BIZ/BizPrintInstoreDoc.cs b/Tiger.Business.MES/BIZ/BizPrintInstoreDoc.cs
index c9eedba..3dabf0c 100644
--- a/Tiger.Business.MES/BIZ/BizPrintInstoreDoc.cs
+++ b/Tiger.Business.MES/BIZ/BizPrintInstoreDoc.cs
@@ -63,7 +63,7 @@
                             }
                             if (item.VAR_NAME.StartsWith("BoxQty"))
                             {
-                                item.Value = v.PLAN_QTY.ToString();
+                                item.Value = v.CartonQty.ToString();
                             }
                             if (item.VAR_NAME.StartsWith("InQty"))
                             {
diff --git a/Tiger.Business.MES/Transaction/InStoreOrderNo.cs b/Tiger.Business.MES/Transaction/InStoreOrderNo.cs
index 40f52ea..f4ee422 100644
--- a/Tiger.Business.MES/Transaction/InStoreOrderNo.cs
+++ b/Tiger.Business.MES/Transaction/InStoreOrderNo.cs
@@ -11,6 +11,12 @@
 using Tiger.Model;
 using Tiger.Model.Sharetronic.Shelf;
 using System.ComponentModel;
+using Tiger.Model.Entitys.MES.U9C;
+using ProdInBatch = Tiger.Model.ProdInBatch;
+using Org.BouncyCastle.Ocsp;
+using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
+using System.Drawing.Printing;
+using Tiger.Model.Entitys.MES.Position;
 
 namespace Tiger.Business.MES.Transaction
 {
@@ -20,12 +26,14 @@
     public class InStoreOrderNo : MESTransactionBase, IInStoreOrderNo
     {
         private readonly IMES_U9C _IMES_U9C = DI.Resolve<IMES_U9C>();
-        public IInStoreOrderNo Init(string id, string userCode, string apiHost, string orgCode)
+        private readonly IBIZ_MES_WO _IBIZ_MES_WO = DI.Resolve<IBIZ_MES_WO>();
+        public IInStoreOrderNo Init(string id, string apiHost, InstoreDocInput input)
         {
             TransID = id;
-            UserCode = userCode;
+            UserCode = input.UserCode;
             ApiHost = apiHost;
-            OrgCode = orgCode;
+            OrgCode = input.OrgCode;
+            pageSize = input.pageSize;
             Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
             return this;
         }
@@ -35,40 +43,265 @@
         public string UserCode { get; set; }
         public long UserId { get; set; }
         public string OrgCode { get; set; }
-        public string CurSmtCode { get; set; }
-        public string CurrSlotNo { get; set; }
+        public string CurSN { 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>();
+        /// <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>();
 
         #endregion Propertys & Variables
 
         #region Functions
 
         /// <summary>
-        /// 鎵弿鏉$爜涓婃枡
+        /// 鎵弿鏉$爜
         /// </summary>
-        /// <param name="input"></param>
+        /// <param name="code"></param>
         /// <returns></returns>
-        public async Task<ApiAction<SmtLoadingReturn>> ScanItem(SmtLoadingInput input)
+        public async Task<ApiAction<InStoreInfos>> Submit(string code)
         {
-            var action = new ApiAction<SmtLoadingReturn>();
+            var action = new ApiAction<InStoreInfos>();
             try
             {
-                if (input.Code.IsNullOrEmpty())
+                if (code.IsNullOrEmpty())
                 {
                     action.IsSuccessed = false;
-                    //action.LocaleMsg = Biz.L($"{EnumHelper.GetEnum<Step_Types>(input.Step).GetDesc()}涓嶈兘涓虹┖");
+                    action.LocaleMsg = Biz.L($"鏉$爜涓嶈兘涓虹┖");
                     return action;
                 }
+                var apiAction = await _IBIZ_MES_WO.GetErpProdInBth(code);
+                if (!apiAction.IsSuccessed)
+                {
+                    return action;
+                }
+                CurSN = code.Split('|')[0];
+                InStoreInfo Info = apiAction.Data;
+                //瑕佸瓨鍏ョ殑鎵规鍏ュ簱鍗曟暟鎹� 
+                int n = InStoreScanInfos.Where(q => q.WORK_ORDER == Info.ErpProdInBth.WORK_ORDER).Count();
+                if (!ErpProdInBths.Any(q => q.WORK_ORDER == Info.ErpProdInBth.WORK_ORDER))
+                {
+                    Info.ErpProdInBth.AUTH_ORG = OrgCode;
+                    Info.ErpProdInBth.CREATE_USER = UserCode;
+                    Info.ErpProdInBth.CREATE_TIME = DateTime.Now;
+                    Info.ErpProdInBth.SCANED_DATE = DateTime.Now;
+                    Info.ErpProdInBth.HANDLED_DATE = DateTime.Now;
+                    Info.ErpProdInBth.IS_SCANED = "Y";
+                    Info.ErpProdInBth.ORDER_NO = UserCode;
+                    Info.ErpProdInBth.IS_HANDLED = "N";
+                    Info.ErpProdInBth.CartonQty = n == 0 ? 1 : n;
+                    ErpProdInBths.Add(Info.ErpProdInBth);
+                }
+                else
+                {
+                    if (!InStoreScanInfos.Any(q => q.WORK_ORDER == Info?.ErpProdInBth.WORK_ORDER && q.SN == CurSN))
+                    {
+                        var erpbth = ErpProdInBths.Where(q => q.WORK_ORDER == Info.ErpProdInBth.WORK_ORDER).FirstOrDefault();
+                        if (!erpbth.IsNullOrEmpty())
+                        {
+                            erpbth.SCAN_QTY += Info.InStoreScanInfo.SCAN_QTY.ToDouble();
+                            Info.ErpProdInBth.CartonQty++;
+                        }
+                    }
+                }
 
-               
+                //鐢熸垚鎵撳嵃瀹炰綋
+                if (RcvRptInput.PrintJsons.Count == 0)
+                {
+                    RcvRptInput.PrintJsons.Add(new()
+                    {
+                        ID = Guid.NewGuid().ToString("N"),
+                        Items = new() {
+                            Info.ErpProdInBth
+                        }
+                    });
+                }
+                else
+                {
+                    //鎷煎垎椤�
+                    bool isAdded = false;
+                    foreach (var item in RcvRptInput.PrintJsons)
+                    {
+                        if (!item.Items.Any(q => q.WORK_ORDER == Info.ErpProdInBth.WORK_ORDER))
+                        {
+                            if (item.Items.Count < pageSize)
+                            {
+                                item.Items.Add(Info.ErpProdInBth);
+                                isAdded = true;
+                            }
+                        }
+                        else
+                        {
+                            isAdded = true;
+                        }
+                    }
+                    if (isAdded)
+                    {
+                        RcvRptInput.PrintJsons.Add(new()
+                        {
+                            ID = Guid.NewGuid().ToString("N"),
+                            Items = new() {
+                            Info.ErpProdInBth
+                        }
+                        });
+                    }
+                }
+
+                //鏆傚瓨鎵爜鏁版嵁
+                if (!InStoreScanInfos.Any(q => q.WORK_ORDER == Info?.ErpProdInBth.WORK_ORDER && q.SN == CurSN))
+                {
+                    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))
+                {
+                    var scanResult = new BIZ_ERP_PROD_IN_SN
+                    {
+                        ID = Guid.NewGuid().ToString(),
+                        CARTONNO = CurSN,
+                        SN = item.SN,
+                        BUSINESSCODE = UserCode,
+                        ITEM_CODE = item.ITEM_CODE,
+                        Qty = item.QTY.ToDecimal(),
+                        SOURCECODE = Info?.ErpProdInBth.WORK_ORDER,
+                        STATUS = WMS_ITEM.STATUSs.Counted.GetValue(),
+                        CREATE_USER = UserCode,
+                        CREATE_TIME = DateTime.Now,
+                        UPDATE_USER = UserCode,
+                        UPDATE_TIME = DateTime.Now,
+                    };
+                    ErpProdInSns.Add(scanResult);
+                }
+
+                //淇濆瓨鏁版嵁搴�
+                var db = Business.Biz.Db;
+                var dbTran = db.UseTran(() =>
+                {
+                    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)
+                {
+                    Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
+                    this.Close(!dbTran.IsSuccess);
+                    throw dbTran.ErrorException;
+                }
+                action.Data = new() { 
+                    ErpProdInBths = ErpProdInBths,
+                    InStoreScanInfos = InStoreScanInfos,
+                };
             }
             catch (Exception ex)
             {
-                action.CatchExceptionWithLog(ex, $"鎵弿鐗╂枡[{input.Code}]澶嶆牳寮傚父");
+                action.CatchExceptionWithLog(ex, $"鎵弿鏉$爜[{code}]澶嶆牳寮傚父");
             }
             return action;
         }
 
-        
+        /// <summary>
+        /// 璋冪敤U9C鎺ュ彛鐢熸垚鍏ュ簱鍗�
+        /// </summary>
+        /// <param name="code"></param>
+        /// <returns></returns>
+        public async Task<ApiAction<RcvRptDocCreateInput>> GenerateInStoreOrder(RcvRptDocCreateInput input)
+        {
+            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(() =>
+                {
+                    //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)
+                {
+                    Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
+                    this.Close(!dbTran.IsSuccess);
+                    throw dbTran.ErrorException;
+                }
+
+            }
+            catch (Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, $"璋冪敤U9C鎺ュ彛鐢熸垚鍏ュ簱鍗曞紓甯�");
+            }
+            return action;
+        }
+
+        /// <summary>
+        /// 鏌ヨ瀵瑰簲鐨勬潯鐮�
+        /// </summary>
+        /// <returns></returns>
+        public async Task<ApiAction<RcvRptDocCreateInput>> GetScannedBarcodes()
+        {
+            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();
+            }
+            catch (Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, $"鏌ヨ瀵瑰簲鐨勬潯鐮佸紓甯�");
+            }
+            return action;
+        }
 
         #endregion Functions
 
diff --git a/Tiger.Business.MES/iERP/MES_U9C.cs b/Tiger.Business.MES/iERP/MES_U9C.cs
index f173244..15eac1f 100644
--- a/Tiger.Business.MES/iERP/MES_U9C.cs
+++ b/Tiger.Business.MES/iERP/MES_U9C.cs
@@ -47,21 +47,6 @@
             {
                 //鍏堜繚瀛樻暟鎹�
                 bool IsSuccessed = true;
-                var db = Biz.Db;
-                var dbTran = db.UseTran(() =>
-                {
-                    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();
-                });
-                if (!dbTran.IsSuccess)
-                {
-                    action.CatchExceptionWithLog(dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
-                    Logger.Interface.Error(action.Message);
-                    IsSuccessed = false;
-                }
 
                 //淇濆瓨鎴愬姛锛岃皟鐢║9C鎺ュ彛-娴嬭瘯鐢�
                 //int i = 1;
@@ -93,9 +78,9 @@
                 //{
                 //    _db.Updateable(ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE }).ExecuteCommand();
                 //});
-                //if (!dbTran.IsSuccess)
+                //if (!_dbTran.IsSuccess)
                 //{
-                //    action.CatchExceptionWithLog(dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
+                //    action.CatchExceptionWithLog(_dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
                 //    Logger.Interface.Error(action.Message);
                 //    IsSuccessed = false;
                 //}
@@ -149,11 +134,11 @@
                                     }
                                     foreach (var p in input.PrintJsons)
                                     {
-                                        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.STATUS != "P").FirstOrDefault();
+                                        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.STATUS = "Y";
+                                            d.IS_HANDLED = "Y";
                                         }
                                     }
                                     Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曟垚鍔�");
@@ -172,11 +157,11 @@
                                     }
                                     foreach (var p in input.PrintJsons)
                                     {
-                                        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.STATUS != "P").FirstOrDefault();
+                                        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.STATUS = "F";
+                                            d.IS_HANDLED = "F";
                                         }
                                     }
                                     Logger.Interface.Info($"鐢熸垚鍏ュ簱鍗曞け璐�:{result.Data[0].m_errorMsg}");
@@ -186,11 +171,11 @@
                         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(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)
+                        if (!_dbTran.IsSuccess)
                         {
-                            action.CatchExceptionWithLog(dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
+                            action.CatchExceptionWithLog(_dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
                             Logger.Interface.Error(action.Message);
                             IsSuccessed = false;
                         }
@@ -208,14 +193,15 @@
             return action;
         }
 
-        private List<BAS_LABEL_TEMP> GetLabels(List<InStorePrintJson> printJsons) {
+        private List<BAS_LABEL_TEMP> GetLabels(List<InStorePrintJson> printJsons)
+        {
             List<BAS_LABEL_TEMP> labels = new List<BAS_LABEL_TEMP>();
             int i = 1;
             int j = 1;
             foreach (var p in printJsons)
             {
                 BAS_LABEL_TEMP label = Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == "InstoreTemplate").IncludesAllFirstLayer().First();
-                foreach (var v in p.Items.Where(q => q.STATUS != "F" && q.STATUS != "P"))
+                foreach (var v in p.Items.Where(q => q.IS_HANDLED != "F" && q.IS_HANDLED != "P"))
                 {
                     foreach (var item in label.Variables)
                     {
@@ -253,7 +239,7 @@
                         }
                         if (item.VAR_NAME == $"BoxQty{j}")
                         {
-                            item.Value = v.PLAN_QTY.ToString();
+                            item.Value = v.CartonQty.ToString();
                         }
                         if (item.VAR_NAME == $"InQty{j}")
                         {
diff --git a/Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs b/Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs
new file mode 100644
index 0000000..16f3892
--- /dev/null
+++ b/Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs
@@ -0,0 +1,151 @@
+锘縰sing Autofac;
+using Microsoft.AspNetCore.Mvc;
+using Rhea.Common;
+using SqlSugar;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using Tiger.Api.iBiz;
+using Tiger.IBusiness;
+using Tiger.Model;
+using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
+using Tiger.Model.Entitys.MES.Position;
+
+namespace Tiger.Api.Controllers.MES
+{
+    public partial class MESController : ControllerBase
+    {
+        /// <summary>
+        /// GetTransaction(ApiAction(Data:InstoreDocInput))
+        /// </summary>
+        /// <param name="action"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("api/[controller]/InStoreOrderNo/GetTransaction")]
+        public IActionResult InStoreOrderNo_GetTransaction([FromBody] ApiAction<InstoreDocInput> action)
+        {
+            ApiAction response;
+            IInStoreOrderNo trans = null;
+            try
+            {
+                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
+                {
+                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IInStoreOrderNo;
+                }
+                else
+                {
+                    trans = AutoFacContainer.Instance.Resolve<IInStoreOrderNo>().Init(action.ID, Request.Host.Value,  action.Data);
+                    iBiz.MES.Context.NewTransaction(HttpContext, trans);
+                }
+
+                response = action.GetResponse();
+            }
+            catch (System.IO.InvalidDataException ex)
+            {
+                response = action.GetResponse();
+                response.IsSuccessed = false;
+                response.LocaleMsg = new(ex.Message, ex.InnerException.Message.Split('|', System.StringSplitOptions.RemoveEmptyEntries));
+            }
+            catch (System.Exception ex)
+            {
+                response = action.GetResponse().CatchExceptionWithLog(ex);
+            }
+            trans?.AddHistory(Request, action);
+            return Ok(response);
+        }
+
+        /// <summary>
+        /// CloseTransaction(ApiAction)
+        /// 鍏抽棴浜嬪姟
+        /// </summary>
+        /// <param name="action"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("api/[controller]/InStoreOrderNo/CloseTransaction")]
+        public IActionResult InStoreOrderNo_CloseTransaction([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(trans.Close());
+                        }
+                        else
+                        {
+                            lock (trans.TransLock) { response = action.GetResponse(trans.Close()); }
+                        }
+                        response.Message = $"鍏ュ簱鍗曚簨鍔ID:{action.ID}]鍏抽棴{(response.IsSuccessed ? "鎴愬姛" : "澶辫触")}";
+                    }
+                    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>
+        /// Submit(ApiAction(Data:{SubmitInput}))
+        /// 鍏ュ簱鍗曪細鎻愪氦鎿嶄綔鏁版嵁
+        /// </summary>
+        /// <param name="action"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("api/[controller]/InStoreOrderNo/Submit")]
+        public async Task<IActionResult> InStoreOrderNo_SubmitAsync([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.Submit(action.Data?.ToString()));
+                        }
+                        else
+                        {
+                            lock (trans.TransLock) { response = action.GetResponse(trans.Submit(action.Data?.ToString()).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 9b11a8e..db27594 100644
--- a/Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs
+++ b/Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs
@@ -1,14 +1,18 @@
-锘縰sing System;
+锘縰sing Rhea.Common;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using Tiger.Model;
+using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
 
 namespace Tiger.IBusiness
 {
     public interface IInStoreOrderNo : IMESTransaction
     {
-        public IInStoreOrderNo Init(string id, string userCode, string apiHost, string orgCode);
+        public IInStoreOrderNo Init(string id, string apiHost, InstoreDocInput input);
+        public Task<ApiAction<InStoreInfos>> Submit(string code);
 
         public bool Close(bool needSaveHistoryLog = false);
     }
diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs
index 7110e09..c3ebbaf 100644
--- a/Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs
+++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs
@@ -148,10 +148,12 @@
         #region 铏氭嫙灞炴��
         /*渚嬪瓙
 		[SugarColumn(IsIgnore = true)]
-		public string FieldName { get; set; }
+		public string FieldName { get; set; } LEVEL
 		*/
         [SugarColumn(IsIgnore = true)]
         public string FLOW_SN { get; set; }
+        [SugarColumn(IsIgnore = true)]
+        public int LEVEL { get; set; }
         #endregion
 
         #region 澶栭敭灞炴��
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/BizPrintInstoreDocParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/BizPrintInstoreDocParameter.cs
index 6cc8931..9b17806 100644
--- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/BizPrintInstoreDocParameter.cs
+++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/BizPrintInstoreDocParameter.cs
@@ -13,4 +13,12 @@
         public List<InStorePrintJson> printJsons { get; set; }
 
     }
+
+    public class InstoreDocInput
+    {
+        public string UserCode { get; set; }
+        public string OrgCode { get; set; }
+        public int pageSize { get; set; } = 10;
+
+    }
 }
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
index cc170b5..250bcdc 100644
--- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
+++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
@@ -40,7 +40,7 @@
     {
         public List<RcvRptDocBase> RcvRptDocBases { get; set; }
         public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; }
-        public List<InStorePrintJson> PrintJsons { get; set; }
+        public List<InStorePrintJson> PrintJsons { get; set; } = new List<InStorePrintJson>();
         public List<BAS_LABEL_TEMP> labels { get; set; }
         public string userId { get; set; }
     }
@@ -48,22 +48,22 @@
     public class InStorePrintJson
     {
         public string ID { get; set; }
-        public List<ProdInBatch> Items { get; set; }
+        public List<BIZ_ERP_PROD_IN_BTH> Items { get; set; }
     }
 
-    public class ProdInBatch
-    {
-        public string ORDER_NO { get; set; }
-        public string SALES_ORDER { get; set; }
-        public string STATUS { get; set; }
-        public string BATCH_NO { get; set; }
-        public string WORK_ORDER { get; set; }
-        public string ITEM_CODE { get; set; }
-        public string SapCode { get; set; }
-        public string ITEM_NAME { get; set; }
-        public double PLAN_QTY { get; set; }
-        public double SCAN_QTY { get; set; }
-    }
+    //public class ProdInBatch
+    //{
+    //    public string ORDER_NO { get; set; }
+    //    public string SALES_ORDER { get; set; }
+    //    public string STATUS { get; set; }
+    //    public string BATCH_NO { get; set; }
+    //    public string WORK_ORDER { get; set; }
+    //    public string ITEM_CODE { get; set; }
+    //    public string SapCode { get; set; }
+    //    public string ITEM_NAME { get; set; }
+    //    public double PLAN_QTY { get; set; }
+    //    public double SCAN_QTY { get; set; }
+    //}
 
     public class RcvRptDocBase
     {
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 0ae1b36..2b1dee9 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
@@ -98,17 +98,24 @@
 		/// </summary>
 		[DisplayName("备注")]
 		public string REMARK { get; set; }
-		#endregion
+        #endregion
 
-		#region 虚拟属性
-		/*例子
+        #region 虚拟属性
+        /*例子
 		[SugarColumn(IsIgnore = true)]
 		public string FieldName { get; set; }
 		*/
-		#endregion
 
-		#region 外键属性
-		/*例子
+        [SugarColumn(IsIgnore = true)]
+        public string SALES_ORDER { get; set; }
+        [SugarColumn(IsIgnore = true)]
+        public string SapCode { get; set; }
+        [SugarColumn(IsIgnore = true)]
+        public int CartonQty { get; set; }
+        #endregion
+
+        #region 外键属性
+        /*例子
 		//一对一外键导航
 		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_ERP_PROD_IN_BTH类里面的外键ID字段
 		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
@@ -119,10 +126,10 @@
 		[Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_ERP_PROD_IN_BTHId), nameof(MappingClass.ClassAId))]//注意顺序
 		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
 		*/
-		#endregion
+        #endregion
 
-		#region 枚举变量
-		/*例子
+        #region 枚举变量
+        /*例子
 		public enum FieldNames
 		{
 			[Description("枚举描述0")]
@@ -131,13 +138,13 @@
 			Enum1,
 		}
 		*/
-		#endregion
+        #endregion
 
-		#region 公共方法
+        #region 公共方法
 
-		#endregion
+        #endregion
 
-	}//endClass
+    }//endClass
 
 	public class ProdInBatch
     {
@@ -205,7 +212,13 @@
 
 	public class InStoreInfo { 
 		public BIZ_ERP_PROD_IN_BTH ErpProdInBth { get; set; }
-        public ProdInBatch ProdInBatch { get; set; }
+        //public ProdInBatch ProdInBatch { get; set; }
         public InStoreScanInfo InStoreScanInfo { get; set; }
     }
+
+    public class InStoreInfos
+    {
+        public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; }
+        public List<InStoreScanInfo> InStoreScanInfos { get; set; }
+    }
 }
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_SN.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_SN.cs
index 71e0d4e..e33e035 100644
--- a/Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_SN.cs
+++ b/Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_SN.cs
@@ -77,6 +77,11 @@
 		[SugarColumn(IsIgnore = true)]
 		public string FieldName { get; set; }
 		*/
+
+        [SugarColumn(IsIgnore = true)]
+        public string SALES_ORDER { get; set; }
+        [SugarColumn(IsIgnore = true)]
+        public string BATCH_NO { get; set; }
         #endregion
 
         #region 澶栭敭灞炴��

--
Gitblit v1.9.3