From 531f16f2f15bf792e3e719e00abb57a95356dedd Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期一, 21 四月 2025 12:04:15 +0800 Subject: [PATCH] Merge branch 'master' of http://47.115.28.255:8110/r/TigerClouds-Tech/Server/TigerApi6_2024 --- Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs | 163 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 139 insertions(+), 24 deletions(-) diff --git a/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs b/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs index 12720db..5f5abeb 100644 --- a/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs +++ b/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs @@ -21,6 +21,7 @@ /// </summary> public class In_BIZ_U9_RECEIPT : WmsTask, IIn_BIZ_U9_RECEIPT { + public IIn_BIZ_U9_RECEIPT Init(string id, string userCode, string apiHost, string orgCode) { base.Init(id, userCode, apiHost, orgCode); @@ -29,7 +30,7 @@ } #region Propertys & Variables - + public BIZ_U9_RECEIPT CurOrder { get; set; } #endregion #region Functions @@ -41,23 +42,46 @@ var action = new ApiAction<ScanOutput>(new ScanOutput()); try { - if (input.SN.IsNullOrEmpty()) + if (input.Command == "ScanOrder") { - action.IsSuccessed = false; - //action.LocaleMsg = Biz.L("鏉$爜涓嶈兘涓虹┖"); - action.LocaleMsg = Biz.L("WMS.Default.ScanItem.SnEmptyFailure"); - return SetOutPutMqttMsg(action, input.Locale); + var inputOrder = new BaseInput<BIZ_U9_RECEIPT>(input); + if (inputOrder.Data?.ORDER_NO == null) + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("閫夋嫨鐨勫崟鍙蜂笉鑳戒负绌�"); + action.LocaleMsg = Biz.L("WMS.Default.ScanOrder.OrderNoEmptyFailure"); + return SetOutPutMqttMsg(action, input.Locale); + } + action = await ScanOrder(inputOrder); } - //鍒ゆ柇鎵弿鐨勬槸鍚﹁揣鏋� - var whUnit = await MainDB.Queryable<V_WH_UNIT>().Where(t => (t.SHELF_CODE.ToUpper() == input.SN || t.LOCATION_CODE.ToUpper() == input.SN) && t.AUTH_ORG == OrgCode).IncludesAllFirstLayer().FirstAsync(); - //if (string.IsNullOrEmpty(CurScanShelf?.ShelfCode)) - if (!whUnit.IsNullOrEmpty() || string.IsNullOrEmpty(CurScanShelf?.ShelfCode)) + else { - action = await ScanShelf(input.SN, whUnit); - } - else//鎵弿鐗╂枡骞跺鏍� - { - action = await ScanItem(input); + if (CurOrder.IsNullOrEmpty()) + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("涓婃灦鍓嶈鍏堥�夋嫨闇�瑕佷笂鏋剁殑鏀惰揣鍗�"); + action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanItem.NoScanOrder"); + action.Data.Command = "ScanOrder"; + return SetOutPutMqttMsg(action, input.Locale); + } + 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 whUnit = await MainDB.Queryable<V_WH_UNIT>().Where(t => (t.SHELF_CODE.ToUpper() == input.SN || t.LOCATION_CODE.ToUpper() == input.SN) && t.AUTH_ORG == OrgCode).IncludesAllFirstLayer().FirstAsync(); + //if (string.IsNullOrEmpty(CurScanShelf?.ShelfCode)) + if (!whUnit.IsNullOrEmpty() || string.IsNullOrEmpty(CurScanShelf?.ShelfCode)) + { + action = await ScanShelf(input.SN, whUnit); + } + else//鎵弿鐗╂枡骞跺鏍� + { + action = await ScanItem(input); + } } } catch (Exception ex) @@ -68,6 +92,35 @@ action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.Scan.ScanException", input.SN)); } return SetOutPutMqttMsg(action, input.Locale); + } + + /// <summary> + /// 鎵弿涓嬫灦鍗曟嵁鍙风爜 + /// </summary> + public async Task<ApiAction<ScanOutput>> ScanOrder(BaseInput<BIZ_U9_RECEIPT> input) + { + var action = new ApiAction<ScanOutput>(new ScanOutput()); + try + { + var receipt = await MainDB.Queryable<BIZ_U9_RECEIPT>().Where(q => q.ORDER_NO == input.Data.ORDER_NO).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); + if (receipt.IsNullOrEmpty()) + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("鎵句笉鍒版敹璐у崟[{0}]鐨勪俊鎭紝璇烽噸鏂伴�夋嫨姝g‘鐨勬敹璐у崟"); + action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanOrder.ReceiptNotExists", input.Data.ORDER_NO); + return SetOutPutMqttMsg(action, input.Locale); + } + action.Data.Command = "Normal"; + action.Data.Data = CurOrder = receipt; + } + catch (Exception ex) + { + //鍙栨秷褰撳墠鎿嶄綔 + ResetTrans(); + //action.CatchExceptionWithLog(ex, $"閫夋嫨鏀惰揣鍗曞紓甯�(Data: {0})"); + action.CatchExceptionWithLog(ex, Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanOrderException", input?.Data)); + } + return action; } /// <summary> @@ -106,17 +159,26 @@ action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemCodeNotExistsOrNotActive", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode)); return SetOutPutMqttMsg(action, input.Locale); } + //榛樿鍌ㄤ綅楠岃瘉 + if (!inv.ItemInfo.DEFAULT_LOCATION.IsNullOrEmpty() && inv.ItemInfo.DEFAULT_LOCATION != CurScanShelf.LocationCode) + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("鐗╂枡[{0}]鍙厑璁镐笂鏋跺埌鍌ㄤ綅[{0}]锛岃閲嶆柊鎵弿鍌ㄤ綅"); + action.LocaleMsg = Biz.L("WMS.Default.ScanItem.DefaultLocationError", inv.ItemInfo.ITEM_CODE, inv.ItemInfo.DEFAULT_LOCATION); + return SetOutPutMqttMsg(action, input.Locale); + } + //鍒ゆ柇褰撳墠鏉$爜鏄惁灞炰簬褰撳墠鏀惰揣鍗� + if (CurInvItem.Items.First().TRANS_NO != CurOrder.ORDER_NO) + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("鏉$爜鎵�灞炵殑鍗曟嵁[{0}]涓嶆槸閫夋嫨鐨勬敹璐у崟[{1}]锛岃閲嶆柊鎵弿姝g‘鐨勬潯鐮佹垨閫夋嫨鍏朵粬鏀惰揣鍗�"); + action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanItem.NotCurOrder", CurInvItem.Items.First().TRANS_NO, CurOrder.ORDER_NO); + return SetOutPutMqttMsg(action, input.Locale); + } CurInvItem = inv; } - var receipt = await MainDB.Queryable<BIZ_U9_RECEIPT>().Where(q => q.ORDER_NO == CurInvItem.Items.First().TRANS_NO).IncludesAllFirstLayer().FirstAsync(); - if (receipt.IsNullOrEmpty()) - { - action.IsSuccessed = false; - //action.LocaleMsg = Biz.L("鏀惰揣鍗曚腑鎵句笉鍒版潯鐮佹墍灞炵殑鍗曟嵁[{0}]淇℃伅锛岃閲嶆柊鎵弿鏀惰揣鍗曠殑鏉$爜鎴栭�夋嫨姝g‘鐨勫姛鑳戒笂鏋�"); - action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanItem.ReceiptNotExists", CurInvItem.Items.First().TRANS_NO); - return SetOutPutMqttMsg(action, input.Locale); - } + var receipt = await MainDB.Queryable<BIZ_U9_RECEIPT>().Where(q => q.ORDER_NO == CurOrder.ORDER_NO).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); var receiptDtl = receipt.Details.First(q => q.LINE_NO == CurInvItem.Items.First().TRANS_LINE); if (receiptDtl.STATUS > BIZ_U9_RECEIPT.STATUSs.Storing.GetValue()) { @@ -181,6 +243,7 @@ action.LocaleMsg = Biz.L($"WMS.Default.ScanShelf.ItemAlreadyExistsInLocation", nLocation.LOCATION_CODE, locationData.SN); return SetOutPutMqttMsg(action, input.Locale); } + CurScanShelf.Location = nLocation; CurScanShelf.LocationCode = nLocation.LOCATION_CODE; } else @@ -205,6 +268,8 @@ ResetTrans(); return SetOutPutMqttMsg(action, input.Locale); } + + CurOrder = receipt; //鎵ц涓婃灦鏁版嵁澶勭悊 foreach (var item in CurInvItem.Items) @@ -304,7 +369,18 @@ }); //瀹屾垚鎵�鏈夊鐞嗗悗浣跨敤浜嬪姟淇濆瓨鏁版嵁 - action = DoIfFinish(action, input.Locale); + action = DoIfFinish(action, input.Locale, () => + { + //璁剧疆褰撳墠鐗╂枡鐨勯粯璁ゅ偍浣� + if (CurInvItem.ItemInfo.DEFAULT_LOCATION.IsNullOrEmpty()) + { + SetDefaultLocation(MainDB, CurInvItem.ItemInfo, nLocation); + } + }); + //if (!action.Data.Data.IsNullOrEmpty() && action.Data.Data is DefaultInStoreOutput) + //{ + // (action.Data.Data as DefaultInStoreOutput).OrderInfo = receipt; + //} } catch (Exception ex) { @@ -329,6 +405,13 @@ action.IsSuccessed = false; //action.LocaleMsg = Biz.L("璇疯緭鍏ユ垨鎵弿鏈夋晥鐨勮揣鏋�/鍌ㄤ綅鐮�"); action.LocaleMsg = Biz.L("WMS.Default.ScanShelf.ShelfCanNotEmpty"); + return action; + } + if (!CurOrder.Details.Any(q => q.ItemInfo.DEFAULT_LOCATION.IsNullOrEmpty() || q.ItemInfo.DEFAULT_LOCATION == Code)) + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("褰撳墠鍌ㄤ綅[{0}]涓嶅湪鏀惰揣鍗曢渶瑕佷笂鏋剁殑鍌ㄤ綅鍒楄〃涓細{1}"); + action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanShelf.NoContainLocation", Code, string.Join(", ", CurOrder.Details.Select(q => q.ItemInfo.DEFAULT_LOCATION))); return action; } @@ -445,6 +528,38 @@ return SetOutPutMqttMsg(action, locale); } + /// <summary> + /// 鑾峰彇闇�瑕佷笂鏋剁殑鏀惰揣鍗曞垪琛紙甯﹀垎椤碉級 + /// </summary> + /// <returns></returns> + public async Task<ApiAction<PageAble<BIZ_U9_RECEIPT>>> GetOrderList(BaseInputWithPage input) + { + var action = new ApiAction<PageAble<BIZ_U9_RECEIPT>>(); + var query = Biz.DataSource["YadaU9C"].Client.Queryable<mes_ReturnedDocInfo>().Where(q => q.Status == 3) + .WhereIF(!input.OrderNo.IsNullOrEmpty(), q => q.DocNo.Contains(input.OrderNo) || SqlFunc.Subqueryable<mes_AsnDocInfo>().Where(a => a.AsnId == q.SrcASNDocId && q.DocNo.Contains(input.OrderNo)).Any()) + .OrderBy(q => q.DocNo).Select(q => new { q.DocNo, q.Status, q.StatusName }).Distinct().ToList(); + + action.Data = await MainDB.Queryable<BIZ_U9_RECEIPT>().Where(q => query.Select(o => o.DocNo).Contains(q.ORDER_NO)).ToPageAsync(input.pageIndex, input.pageSize); + foreach (var order in action.Data.data) + { + order.ERP_STATUS_CODE = query.FirstOrDefault(q => q.DocNo == order.ORDER_NO)?.Status.ToString(); + order.ERP_STATUS_NAME = query.FirstOrDefault(q => q.DocNo == order.ORDER_NO)?.StatusName; + } + MainDB.Updateable(action.Data.data, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.ERP_STATUS_CODE, q.ERP_STATUS_NAME }).ExecuteCommand(); + return action; + } + + /// <summary> + /// 鑾峰彇褰撳墠鏀惰揣鍗曚俊鎭� + /// </summary> + /// <returns></returns> + public async Task<ApiAction<BIZ_U9_RECEIPT>> GetCurOrder() + { + var action = new ApiAction<BIZ_U9_RECEIPT>(); + action.Data = CurOrder; + return action; + } + #endregion /// <summary> -- Gitblit v1.9.3