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