From 9e4d2ea113f6d5631f78aa85bbe39481fd701b72 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期四, 27 二月 2025 10:47:39 +0800 Subject: [PATCH] 雅达-扩展和改进半成品入库和打印标签功能 --- Tiger.IBusiness.WMS/Transaction/IPrintSemiProdLabel.cs | 2 Tiger.IBusiness/iERP/IMES_U9C.cs | 2 Tiger.Api/Language.db | 0 Tiger.Controllers.WMS/Controllers/WMSController.In_SemiProd.cs | 242 ++++++++++++++++++++ Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs | 4 Tiger.IBusiness.WMS/Transaction/IIn_SemiProd.cs | 12 Tiger.Model.Net/Entitys/WMS/Api/RePrint_Entitys.cs | 15 + Tiger.Model.Net/Tiger.Model.Net.csproj | 2 Tiger.Business.WMS/Transaction/PrintSemiProdLabel.cs | 70 ++++- Tiger.Business.WMS/Transaction/In_SemiProd.cs | 166 +++++++++++++ Tiger.Controllers.WMS/Controllers/WMSController.PrintSemiProdLabel.cs | 185 +++++++++++++++ 11 files changed, 668 insertions(+), 32 deletions(-) diff --git a/Tiger.Api/Language.db b/Tiger.Api/Language.db index ca2c5b3..0ac8e81 100644 --- a/Tiger.Api/Language.db +++ b/Tiger.Api/Language.db Binary files differ diff --git a/Tiger.Business.WMS/Transaction/In_SemiProd.cs b/Tiger.Business.WMS/Transaction/In_SemiProd.cs index df193a0..c05caa6 100644 --- a/Tiger.Business.WMS/Transaction/In_SemiProd.cs +++ b/Tiger.Business.WMS/Transaction/In_SemiProd.cs @@ -18,6 +18,7 @@ using System.Diagnostics; using static Microsoft.CodeAnalysis.CSharp.SyntaxTokenParser; using Tiger.Model.Entitys.MES.U9C; +using Tiger.Model.Entitys.MES.BizPrintInstoreDoc; namespace Tiger.Business.WMS.Transaction { @@ -27,12 +28,14 @@ public class In_SemiProd : WMSTransactionBase, IIn_SemiProd { private readonly IMES_U9C _IMES_U9C = DI.Resolve<IMES_U9C>(); - public IIn_SemiProd Init(string id, string userCode, string apiHost, string orgCode) + public IIn_SemiProd Init(string id, string apiHost, InstoreDocInput input) { TransID = id; - UserCode = userCode; + UserCode = input.UserCode; ApiHost = apiHost; - OrgCode = orgCode; + OrgCode = input.OrgCode; + pageSize = input.pageSize; + _GetScannedList(); Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]"); return this; } @@ -60,7 +63,7 @@ /// <summary> /// 鎵弿鍏ュ彛 /// </summary> - public async Task<ApiAction<ScanOutput>> Scan(BaseInput input) + public async Task<ApiAction<ScanOutput>> Submit(BaseInput input) { var action = new ApiAction<ScanOutput>(new ScanOutput()); try @@ -218,7 +221,8 @@ }; action.Data.Data = inStoreInfos; - action.LocaleMsg = Biz.L("WMS.InSemiProd.ScanItem.ScanSuccessed"); //$"宸ュ崟鏉$爜[{input.SN}]鎵弿鎴愬姛锛岃濉叆宸ュ崟鏁伴噺鍚庣偣鎻愪氦" + action.Data.Command = ""; + action.LocaleMsg = Biz.L("WMS.InSemiProd.ScanItem.ScanSuccessed", input.SN); //$"宸ュ崟鏉$爜[{input.SN}]鎵弿鎴愬姛锛岃濉叆宸ュ崟鏁伴噺鍚庣偣鎻愪氦" } catch (Exception ex) { @@ -228,20 +232,123 @@ return SetOutPutMqttMsg(action, input.Locale); } - public async Task<ApiAction<ScanOutput>> ScanItem(BaseInput input) + public ApiAction<InStoreInfos> GetInStoreInfos() { - var action = new ApiAction<ScanOutput>(new ScanOutput()); + return new() { Data = inStoreInfos }; + } + + + /// <summary> + /// 鏌ヨ宸叉壂鎻忓垪琛� + /// </summary> + /// <returns></returns> + public async Task<ApiAction<InStoreInfos>> GetScannedList() + { + var action = new ApiAction<InStoreInfos>(); try { - + _GetScannedList(); + action.Data = inStoreInfos; } catch (Exception ex) { - action.CatchExceptionWithLog(ex, Biz.L("鍗婃垚鍝佸叆搴撳け璐�")); + action.CatchExceptionWithLog(ex, $"鏌ヨ宸叉壂鎻忓垪琛ㄥ紓甯�"); } return action; } + /// <summary> + /// 浠庢暟鎹簱璇诲洖鎿嶄綔鑰呭師鏈搷浣滅殑璁板綍 + /// </summary> + /// <returns></returns> + private RcvRptDocCreateInput _GetScannedList() + { + RcvRptInput.RcvRptDocBases = new(); + RcvRptInput.ErpProdInBths = new(); + RcvRptInput.PrintJsons = new(); + RcvRptInput.labels = new(); + RcvRptInput.userId = UserCode; + ErpProdInSns.Clear(); + ErpProdIns.Clear(); + ErpProdInBths.Clear(); + InStoreScanInfos.Clear(); + 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 && s.GHOST_ROW == false).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(); + + ErpProdIns.Add(new() + { + AUTH_ORG = OrgCode, + BILLCODE = UserCode, + BILLDATE = DateTime.Now, + STATUS = 0, + HANDLED = -1, + WAREHOUSECODE = "", + SOURCECODE = item.WORK_ORDER, + HANDLED_DATE = DateTime.Now, + }); + 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; + } /// <summary> /// 璋冪敤U9C鎺ュ彛鐢熸垚鍏ュ簱鍗� @@ -340,6 +447,47 @@ return action; } + /// <summary> + /// 娓呴櫎 + /// </summary> + /// <returns></returns> + public async Task<ApiAction> Clear() + { + var action = new ApiAction(); + try + { + RcvRptInput = new(); + ProdInBatchs = new() { }; + ErpProdInBths = new() { }; + ErpProdIns = new(); + /// <summary> + /// 鎵弿鍒楄〃 + /// </summary> + InStoreScanInfos = new() { }; + ErpProdInSns = new(); + inStoreInfos = new() { }; + + //淇濆瓨鏁版嵁搴� + var db = Business.Biz.Db; + var dbTran = db.UseTran(() => + { + db.Deleteable<BIZ_ERP_PROD_IN_BTH>().Where(x => x.ORDER_NO == UserCode && x.IS_HANDLED == "N").ExecuteCommand(); + db.Deleteable<BIZ_ERP_PROD_IN_SN>().Where(x => x.BUSINESSCODE == UserCode).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, $"鏌ヨ宸叉壂鎻忓垪琛ㄥ紓甯�"); + } + return action; + } + #endregion public override bool Close(bool needSaveHistoryLog = false) diff --git a/Tiger.Business.WMS/Transaction/PrintSemiProdLabel.cs b/Tiger.Business.WMS/Transaction/PrintSemiProdLabel.cs index 123c645..d5f772b 100644 --- a/Tiger.Business.WMS/Transaction/PrintSemiProdLabel.cs +++ b/Tiger.Business.WMS/Transaction/PrintSemiProdLabel.cs @@ -16,6 +16,8 @@ using Tiger.Model.MES.Yada; using Apache.NMS.ActiveMQ.Commands; using System.Diagnostics; +using static Microsoft.CodeAnalysis.CSharp.SyntaxTokenParser; +using Tiger.Model.Entitys.MES.U9C; namespace Tiger.Business.WMS.Transaction { @@ -24,6 +26,7 @@ /// </summary> public class PrintSemiProdLabel : WMSTransactionBase, IPrintSemiProdLabel { + private readonly IMES_U9C _IMES_U9C = DI.Resolve<IMES_U9C>(); public IPrintSemiProdLabel Init(string id, string userCode, string apiHost, string orgCode) { TransID = id; @@ -59,27 +62,22 @@ } var DocLines = Biz.DataSource["YadaU9C"].Client.Ado.SqlQuery<mes_RcvRptDocLine>($"select * from mes_RcvRptDocLine where DocNo = '{input.SN}'"); - var temps = new List<TemplateInput>(); + var temps = new List<SemiTemplateInput>(); foreach (var item in DocLines) { - var temp = new TemplateInput + var temp = new SemiTemplateInput { - custCode="", - itemCode= item.ItemCode, - itemDesc= item.ItemDescription, - sapItemCode= "", - WoBatch = item.LotCode, - batchQty= item.PackQty.ToDecimal(), - qrCode="", + RcvRptDocId = item.ID.ToString(), + ItemCode= item.ItemCode, + ItemDesc= item.ItemDescription, + SapItemCode= "", + PackQty= item.PackQty.ToDecimal(), + Qty=0, + DocNo= item.DocNo, + WorkOrder= item.Mo }; temps.Add(temp); } - - //var y = Biz.Db.Storageable(DocLines, UserCode) - // .WhereColumns(t => new { t.ItemCode, t.LotCode }) - // .ToStorage(); - //y.AsInsertable.ExecuteCommand(); - //y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand(); action.Data.Data = temps; action.LocaleMsg = Biz.L("WMS.PrintSemiProdLabel.Scan.ScanSuccessed"); @@ -92,6 +90,48 @@ return SetOutPutMqttMsg(action, input.Locale); } + /// <summary> + /// 鎵爜鎻愪氦 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<ApiAction<ScanOutput>> ScanItem(BaseInput input) + { + var action = new ApiAction<ScanOutput>(new ScanOutput()); + try + { + if (input.SN.IsNullOrEmpty()) + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("鏉$爜涓嶈兘涓虹┖"); + action.LocaleMsg = Biz.L("WMS.Default.ScanItem.SnEmptyFailure"); + return SetOutPutMqttMsg(action, input.Locale); + } + var semiTemplate = (input.Data ?? "").JsonToObject<SemiTemplateInput>() ?? new SemiTemplateInput(); + + //鐢熸垚鏉$爜 + BarcodeCreateByAssignQtyInput barcodeCreateInput = new() + { + RevDocId = semiTemplate.RcvRptDocId, + userId = input.AuthOption.UserId, + token = "", + IsLogin = true, + CreateBarCodeItemQty = semiTemplate.PackQty, + LabelQty = semiTemplate.Qty, + }; + + var snList = await _IMES_U9C.U9CCreateBarCodeByAssignQty(barcodeCreateInput); + action.Data.Data = snList; + } + catch (Exception ex) + { + //action.CatchExceptionWithLog(ex, $"鎵弿[{input.SN}]鎻愪氦寮傚父"); + action.CatchExceptionWithLog(ex, Biz.L("WMS.PrintSemiProdLabel.ScanItem.ScanItemException", input.SN)); + + } + return SetOutPutMqttMsg(action, input.Locale); + } + #endregion public override bool Close(bool needSaveHistoryLog = false) diff --git a/Tiger.Controllers.WMS/Controllers/WMSController.In_SemiProd.cs b/Tiger.Controllers.WMS/Controllers/WMSController.In_SemiProd.cs new file mode 100644 index 0000000..31d545a --- /dev/null +++ b/Tiger.Controllers.WMS/Controllers/WMSController.In_SemiProd.cs @@ -0,0 +1,242 @@ +锘縰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; +using Tiger.Model.Entitys.MES.U9C; + +namespace Tiger.Api.Controllers.WMS +{ + public partial class WMSController : ControllerBase + { + /// <summary> + /// GetTransaction(ApiAction(Data:InstoreDocInput)) + /// </summary> + /// <param name="action"></param> + /// <returns></returns> + [HttpPost] + [Route("api/[controller]/In_SemiProd/GetTransaction")] + public IActionResult In_SemiProd_GetTransaction([FromBody] ApiAction<InstoreDocInput> action) + { + ApiAction response; + IIn_SemiProd trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IIn_SemiProd; + } + else + { + trans = AutoFacContainer.Instance.Resolve<IIn_SemiProd>().Init(action.ID, Request.Host.Value, action.Data); + iBiz.WMS.Context.NewTransaction(HttpContext, trans); + + } + + response = action.GetResponse(trans.GetInStoreInfos()); + } + 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]/In_SemiProd/CloseTransaction")] + public IActionResult In_SemiProd_CloseTransaction([FromBody] ApiAction action) + { + ApiAction response; + IIn_SemiProd trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IIn_SemiProd; + 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]/In_SemiProd/Submit")] + public async Task<IActionResult> In_SemiProd_SubmitAsync([FromBody] ApiAction<BaseInput> action) + { + ApiAction response; + IIn_SemiProd trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IIn_SemiProd; + if (!trans.IsFinished) + { + if (action.IsAsync) + { + response = action.GetResponse(await trans.Submit(action.Data)); + } + else + { + lock (trans.TransLock) { response = action.GetResponse(trans.Submit(action.Data).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> + /// 璋冪敤U9C鎺ュ彛鐢熸垚鍏ュ簱鍗� + /// </summary> + /// <param name="action"></param> + /// <returns></returns> + [HttpPost] + [Route("api/[controller]/In_SemiProd/GenerateInStoreOrder")] + public async Task<IActionResult> In_SemiProd_GenerateInStoreOrderAsync([FromBody] ApiAction<RcvRptDocCreateInput> action) + { + ApiAction response; + IIn_SemiProd trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IIn_SemiProd; + 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]/In_SemiProd/Clear")] + public async Task<IActionResult> In_SemiProd_ClearAsync([FromBody] ApiAction action) + { + ApiAction response; + IIn_SemiProd trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IIn_SemiProd; + if (!trans.IsFinished) + { + if (action.IsAsync) + { + response = action.GetResponse(await trans.Clear()); + } + else + { + lock (trans.TransLock) { response = action.GetResponse(trans.Clear().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.Controllers.WMS/Controllers/WMSController.PrintSemiProdLabel.cs b/Tiger.Controllers.WMS/Controllers/WMSController.PrintSemiProdLabel.cs new file mode 100644 index 0000000..ab16c30 --- /dev/null +++ b/Tiger.Controllers.WMS/Controllers/WMSController.PrintSemiProdLabel.cs @@ -0,0 +1,185 @@ +锘縰sing System; +using System.Threading.Tasks; +using Rhea.Common; +using Tiger.Model; +using Tiger.IBusiness; +using Microsoft.AspNetCore.Mvc; +using Tiger.Model.Minsun; +using Autofac; + +namespace Tiger.Api.Controllers.WMS +{ + public partial class WMSController : ControllerBase + { + /// <summary> + /// GetTransaction(ApiAction(Data:UserId)) + /// 鏍规嵁ApiAction鐨刬d杩斿洖涓�涓煡璇㈠偍浣嶈ˉ鍗版潯鐮佷簨鍔� + /// </summary> + /// <param name="action"></param> + /// <returns></returns> + [HttpPost] + [Route("api/[controller]/PrintSemiProdLabel/GetTransaction")] + public IActionResult PrintSemiProdLabel_GetTransaction([FromBody] ApiAction<USER> action) + { + ApiAction response; + IPrintSemiProdLabel trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IPrintSemiProdLabel; + } + else + { + trans = AutoFacContainer.Instance.Resolve<IPrintSemiProdLabel>().Init(action.ID, action.Data?.USER_CODE, Request.Host.Value, action.Data?.ORG_CODE); + iBiz.WMS.Context.NewTransaction(HttpContext, trans); + } + + response = action.GetResponse(); + } + 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]/PrintSemiProdLabel/CloseTransaction")] + public IActionResult PrintSemiProdLabel_CloseTransaction([FromBody] ApiAction action) + { + ApiAction response; + IPrintSemiProdLabel trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IPrintSemiProdLabel; + 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> + /// 鎵弿鍏ュ簱 + /// </summary> + /// <param name="action"></param> + /// <returns></returns> + [HttpPost] + [Route("api/[controller]/PrintSemiProdLabel/Scan")] + public async Task<IActionResult> PrintSemiProdLabel_ScanAsync([FromBody] ApiAction<BaseInput> action) + { + ApiAction response; + IPrintSemiProdLabel trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IPrintSemiProdLabel; + if (!trans.IsFinished) + { + if (action.IsAsync) + { + response = action.GetResponse(await trans.Scan(action.Data)); + } + else + { + lock (trans.TransLock) { response = action.GetResponse(trans.Scan(action.Data).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]/PrintSemiProdLabel/ScanItem")] + public async Task<IActionResult> PrintSemiProdLabel_ScanItemAsync([FromBody] ApiAction<BaseInput> action) + { + ApiAction response; + IPrintSemiProdLabel trans = null; + try + { + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IPrintSemiProdLabel; + if (!trans.IsFinished) + { + if (action.IsAsync) + { + response = action.GetResponse(await trans.Scan(action.Data)); + } + else + { + lock (trans.TransLock) { response = action.GetResponse(trans.ScanItem(action.Data).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); + } + } +} \ No newline at end of file diff --git a/Tiger.IBusiness.WMS/Transaction/IIn_SemiProd.cs b/Tiger.IBusiness.WMS/Transaction/IIn_SemiProd.cs index 54cab8c..0c1888c 100644 --- a/Tiger.IBusiness.WMS/Transaction/IIn_SemiProd.cs +++ b/Tiger.IBusiness.WMS/Transaction/IIn_SemiProd.cs @@ -7,17 +7,19 @@ using System.Text; using System.Threading.Tasks; using Tiger.Model; +using Tiger.Model.Entitys.MES.BizPrintInstoreDoc; +using Tiger.Model.Entitys.MES.U9C; using Tiger.Model.Sharetronic.Shelf; namespace Tiger.IBusiness { public interface IIn_SemiProd : IWMSTransaction { - public IIn_SemiProd Init(string id, string userCode, string apiHost, string orgCode); - public Task<ApiAction<ScanOutput>> Scan(BaseInput input); - public Task<ApiAction<ScanOutput>> ScanItem(BaseInput input); - - + public IIn_SemiProd Init(string id, string apiHost, InstoreDocInput input); + public Task<ApiAction<ScanOutput>> Submit(BaseInput input); + public Task<ApiAction<RcvRptDocCreateInput>> GenerateInStoreOrder(); + public ApiAction<InStoreInfos> GetInStoreInfos(); + public Task<ApiAction> Clear(); public bool Close(bool needSaveHistoryLog = false); } } diff --git a/Tiger.IBusiness.WMS/Transaction/IPrintSemiProdLabel.cs b/Tiger.IBusiness.WMS/Transaction/IPrintSemiProdLabel.cs index 51d120b..3e37c12 100644 --- a/Tiger.IBusiness.WMS/Transaction/IPrintSemiProdLabel.cs +++ b/Tiger.IBusiness.WMS/Transaction/IPrintSemiProdLabel.cs @@ -15,7 +15,7 @@ { public IPrintSemiProdLabel Init(string id, string userCode, string apiHost, string orgCode); public Task<ApiAction<ScanOutput>> Scan(BaseInput input); - //public Task<ApiAction<ScanOutput>> ScanItem(BaseInput input); + public Task<ApiAction<ScanOutput>> ScanItem(BaseInput input); public bool Close(bool needSaveHistoryLog = false); diff --git a/Tiger.IBusiness/iERP/IMES_U9C.cs b/Tiger.IBusiness/iERP/IMES_U9C.cs index be8fe61..6be85d3 100644 --- a/Tiger.IBusiness/iERP/IMES_U9C.cs +++ b/Tiger.IBusiness/iERP/IMES_U9C.cs @@ -13,5 +13,7 @@ public interface IMES_U9C { public Task<ApiAction<RcvRptDocCreateInput>> RcvRptDocCreate(RcvRptDocCreateInput input); + public Task<ApiAction<BarcodeCreateInput>> U9CBarcodeCreate(BarcodeCreateInput input); + public Task<ApiAction<List<string>>> U9CCreateBarCodeByAssignQty(BarcodeCreateByAssignQtyInput input); } } diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs index b9d9f42..55a1c98 100644 --- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs +++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs @@ -126,11 +126,11 @@ /// <summary> /// 鍏ュ簱鍗曡鎬绘暟閲� /// </summary> - public int CreateBarCodeItemQty { get; set; } + public decimal CreateBarCodeItemQty { get; set; } /// <summary> /// 鍖呰瑁呯鏁伴噺 /// </summary> - public int LabelQty { get; set; } + public decimal LabelQty { get; set; } } public class BarcodeCreateByAssignQtyParam diff --git a/Tiger.Model.Net/Entitys/WMS/Api/RePrint_Entitys.cs b/Tiger.Model.Net/Entitys/WMS/Api/RePrint_Entitys.cs index 6482f4f..747ca89 100644 --- a/Tiger.Model.Net/Entitys/WMS/Api/RePrint_Entitys.cs +++ b/Tiger.Model.Net/Entitys/WMS/Api/RePrint_Entitys.cs @@ -22,4 +22,19 @@ public decimal qty { get; set; } public string qrCode { get; set; } } + + public class SemiTemplateInput + { + /// <summary> + /// + /// </summary> + public string RcvRptDocId { get; set; } + public string ItemCode { get; set; } + public string SapItemCode { get; set; } + public string ItemDesc { get; set; } + public string DocNo { get; set; } + public string WorkOrder { get; set; } + public decimal PackQty { get; set; } + public decimal Qty { get; set; } + } } diff --git a/Tiger.Model.Net/Tiger.Model.Net.csproj b/Tiger.Model.Net/Tiger.Model.Net.csproj index 2e2d876..3c4570a 100644 --- a/Tiger.Model.Net/Tiger.Model.Net.csproj +++ b/Tiger.Model.Net/Tiger.Model.Net.csproj @@ -92,11 +92,13 @@ <Compile Include="Entitys\MES\MES_WO_ACT_VAR.cs" /> <Compile Include="Entitys\MES\ParameterEntity\BizPrintInstoreDocParameter.cs" /> <Compile Include="Entitys\BAS\BAS_ITEM_DOC.cs" /> + <Compile Include="Entitys\MES\YadaU9\mes_AsnDocInfo.cs" /> <Compile Include="Entitys\MES\YadaU9\mes_Bin.cs" /> <Compile Include="Entitys\MES\YadaU9\mes_MaterialBarCode.cs" /> <Compile Include="Entitys\MES\YadaU9\mes_MaterialBarCodeByBin.cs" /> <Compile Include="Entitys\MES\YadaU9\mes_RcvRptDocLine.cs" /> <Compile Include="Entitys\MES\YadaU9\mes_RcvRptDoc.cs" /> + <Compile Include="Entitys\MES\YadaU9\mes_ReturnedDocInfo.cs" /> <Compile Include="Entitys\MES\YadaU9\mes_Wh.cs" /> <Compile Include="Entitys\MES\YadaU9\mes_WhLotCodeQtyInfo.cs" /> <Compile Include="Entitys\MQTTEntity.cs" /> -- Gitblit v1.9.3