From f2518583da4cc3d3737986e112b92154535aea4d Mon Sep 17 00:00:00 2001 From: pengmn <pmn@HanInfo> Date: 星期四, 29 五月 2025 17:32:48 +0800 Subject: [PATCH] 1 --- HH.WCS.Mobox3.HangYang/wms/ContainerHelper.cs | 510 ++------------------------------------------------------ 1 files changed, 24 insertions(+), 486 deletions(-) diff --git a/HH.WCS.Mobox3.HangYang/wms/ContainerHelper.cs b/HH.WCS.Mobox3.HangYang/wms/ContainerHelper.cs index a2053d2..af119f9 100644 --- a/HH.WCS.Mobox3.HangYang/wms/ContainerHelper.cs +++ b/HH.WCS.Mobox3.HangYang/wms/ContainerHelper.cs @@ -21,160 +21,7 @@ var date = DateTime.Now.ToString("yyMMdd"); return $"TP{date}{id.ToString().PadLeft(4, '0')}"; } - /// <summary> - /// 鏍规嵁瀹瑰櫒绫诲瀷銆佺洰鐨勫湴銆佺姸鎬佹煡璇㈠鍣�- /// </summary> - /// <param name="dest"></param> - /// <param name="cntrType"></param> - /// <param name="state"></param> - /// <returns></returns> - internal static List<Container> GetCntrListByPurpose(string dest, string cntrType, int state) - { - //1.0 鏌ヨ揣浣嶅鍣ㄨ〃 - var db = new SqlHelper<object>().GetInstance(); - var list = db.Queryable<Container>().Where(a => a.S_DEST == dest && a.S_TYPE == cntrType && a.N_B_STATE == state).ToList(); - return list; - } - /// <summary> - /// 鍒涘缓鎵樼洏鐗╂枡缁戝畾鍏崇郴 - /// </summary> - /// <param name="loc"></param> - /// <param name="cntr"></param> - /// <param name="itemcode"></param> - /// <returns></returns> - internal static bool CreateCntrItem(string loc, string cntr, string itemcode, string itemname, string itemtype, string cntrtype, string batch, int weight, string unit) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - try - { - var location = db.Queryable<Location>().Where(a => a.S_CODE == loc).First(); - if (location != null) - { - LogHelper.Info($"鎵樼洏{cntr}锛氭坊鍔犺揣浣峽loc}缁戝畾鍏崇郴锛屾坊鍔犲鍣ㄨ揣鍝佽〃"); - db.BeginTran(); - var con = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == cntr).First(); - if (con == null) - { - var container = new Container { S_CODE = cntr, S_TYPE = cntrtype }; - db.Insertable<Container>(container).ExecuteCommand(); - } - - var cntritem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntr).First(); - if (cntritem == null) - { - var cir = new CntrItemDetail { S_CNTR_CODE = cntr, S_ITEM_CODE = itemcode, S_ITEM_NAME = itemname, S_ITEM_SPEC = itemtype, S_WU = unit, F_NET_WEIGHT = weight, S_BATCH_NO = batch }; - db.Insertable<CntrItemDetail>(cir).ExecuteCommand(); - } - - var loctp = new LocCntrRel { S_LOC_CODE = loc, S_CNTR_CODE = cntr }; - - - db.Insertable<LocCntrRel>(loctp).ExecuteCommand(); - location.N_CURRENT_NUM = location.N_CURRENT_NUM + 1; - - - db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM }).ExecuteCommand(); - db.Ado.CommitTran(); - res = true; - } - - } - catch (Exception ex) - { - LogHelper.Info($"CreateCntrItem => erro锛氭墭鐩榹cntr}娣诲姞澶辫触" + ex.Message.ToString()); - db.Ado.RollbackTran(); - } - - return res; - } - - /// <summary> - /// 鍒涘缓鎵樼洏鐗╂枡缁戝畾鍏崇郴 - /// </summary> - /// <param name="loc"></param> - /// <param name="cntr"></param> - /// <param name="itemcode"></param> - /// <returns></returns> - internal static bool CreateCntrItem(string cntr, string itemcode, string itemname, string batch, string weight) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - try - { - LogHelper.Info($"鎵樼洏{cntr}锛氭坊鍔犵墿鏂檣itemcode}缁戝畾鍏崇郴"); - db.BeginTran(); - var cntritem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntr).First(); - if (cntritem == null) - { - var cir = new CntrItemDetail { S_CNTR_CODE = cntr, S_ITEM_CODE = itemcode, S_ITEM_NAME = itemname, F_NET_WEIGHT = float.Parse(weight), S_BATCH_NO = batch }; - db.Insertable<CntrItemDetail>(cir).ExecuteCommand(); - } - else - { - cntritem.S_ITEM_CODE = itemcode; - cntritem.S_ITEM_NAME = itemname; - cntritem.F_NET_WEIGHT = float.Parse(weight); - cntritem.S_BATCH_NO = batch; - db.Updateable<CntrItemDetail>(cntritem).ExecuteCommand(); - } - var con = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == cntr).First(); - if (con == null) - { - var container = new Container { S_CODE = cntr }; - db.Insertable<Container>(container).ExecuteCommand(); - } - db.Ado.CommitTran(); - res = true; - - - } - catch (Exception ex) - { - LogHelper.Info($"CreateCntrItem => erro锛氭墭鐩榹cntr}娣诲姞澶辫触" + ex.Message.ToString()); - db.Ado.RollbackTran(); - } - - return res; - } - - /// <summary> - /// 鍒ゆ柇瀹瑰櫒鏄惁鏈夌墿鏂欎俊鎭�- /// </summary> - /// <param name="cntr"></param> - /// <returns></returns> - internal static bool CheckEmpty(string cntr) - { - //1.0 鏌ヨ揣浣嶅鍣ㄨ〃 - var db = new SqlHelper<object>().GetInstance(); - return db.Queryable<LocCntrRel>().Count(a => a.S_LOC_CODE.Trim() == cntr) == 0; - - } - - internal static bool AddCntr(string cntrCode, string itemCode) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var TN_Container = new Container { S_CODE = cntrCode }; - var cntrItemRel = new CntrItemDetail { S_CNTR_CODE = cntrCode, S_ITEM_CODE = itemCode }; - try - { - db.BeginTran(); - - db.Insertable<Container>(TN_Container).ExecuteCommand(); - db.Insertable<CntrItemDetail>(cntrItemRel).ExecuteCommand(); - - db.CommitTran(); - res = true; - } - catch (Exception ex) - { - db.RollbackTran(); - - } - return res; - } /// <summary> /// 鏍规嵁瀹瑰櫒鍙疯幏鍙栧鍣ㄤ俊鎭�@@ -208,335 +55,6 @@ var db = new SqlHelper<object>().GetInstance(); var list = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntr).ToList(); return list; - } - - /// <summary> - /// 鏍规嵁鐗╂枡鑾峰彇瀹瑰櫒淇℃伅 - /// </summary> - /// <param name="cntr"></param> - /// <returns></returns> - internal static List<CntrItemDetail> GetItemCntrRel(string itemcode) - { - var db = new SqlHelper<object>().GetInstance(); - var list = db.Queryable<CntrItemDetail>().Where(a => a.S_ITEM_CODE.Trim() == itemcode.Trim()).ToList(); - return list; - } - - /// <summary> - /// 鐗╂枡淇℃伅缁戝畾鍒版弧瀹瑰櫒涓�- /// </summary> - /// <param name="cntrCode"></param> - /// <param name="itemCode"></param> - /// <param name="batchNo"></param> - /// <param name="qty"></param> - /// <param name="purpose">瀹瑰櫒鐢ㄩ�锛岀敤浜庡摢涓嚎杈硅繕鏄洰鐨勭偣</param> - /// <returns></returns> - internal static bool BindCntrItemSingle(Container cntr, string itemCode, string batchNo, float qty) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - try - { - db.BeginTran(); - db.Updateable(cntr).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand(); - //1.灏嗗師鏈夊鍣ㄧ墿鏂欎俊鎭垹闄�- db.Deleteable<CntrItemDetail>().Where(it => it.S_CNTR_CODE == cntr.S_CODE.Trim()).ExecuteCommand(); - //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉锛�- var cir = new CntrItemDetail { S_CNTR_CODE = cntr.S_CODE.Trim(), S_BATCH_NO = batchNo, F_QTY = qty, S_ITEM_CODE = itemCode }; - db.Insertable<CntrItemDetail>(cir).ExecuteCommand(); - - db.CommitTran(); - res = true; - } - catch (Exception ex) - { - db.RollbackTran(); - } - - return res; - } - /// <summary> - /// 鏍规嵁瀹瑰櫒鏉ユ簮鍜岀姸鎬佽幏鍙栨墭鐩�- /// </summary> - /// <param name="src"></param> - /// <param name="state"></param> - /// <returns></returns> - internal static List<Container> GetCntr(string dest, int state, string cntrType = "") - { - var db = new SqlHelper<object>().GetInstance(); - if (cntrType == "") - { - return db.Queryable<Container>().Where(a => a.S_DEST == dest && a.N_B_STATE == state).ToList(); - } - else - { - return db.Queryable<Container>().Where(a => a.S_DEST == dest && a.N_B_STATE == state && a.S_TYPE == cntrType).ToList(); - } - } - internal static bool UpdateCntr(List<string> cntrs, string dest, int state) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList(); - if (models.Count > 0) - { - models.ForEach(a => - { - a.S_DEST = dest; a.N_B_STATE = state; - db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.N_B_STATE }).ExecuteCommand(); - }); - res = true; - } - return res; - } - internal static bool UpdateCntrDest(List<string> cntrs, string dest) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList(); - if (models.Count > 0) - { - models.ForEach(a => - { - a.S_DEST = dest; - db.Updateable(a).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand(); - }); - res = true; - } - return res; - } - /// <summary> - /// 鏇存柊鎵樼洏鏉ユ簮 - /// </summary> - /// <param name="cntr"></param> - /// <param name="src"></param> - /// <returns></returns> - internal static bool UpdateCntrSrc(string cntr, string src) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var model = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First(); - if (model != null) - { - model.S_SRC = src; - model.T_MODIFY = DateTime.Now; - res = db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.T_MODIFY }).ExecuteCommand() > 0; - } - return res; - } - internal static bool UpdateCntrState(List<string> cntrs, int state) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList(); - if (models.Count > 0) - { - models.ForEach(a => - { - a.N_B_STATE = state; - db.Updateable(a).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); - }); - res = true; - } - return res; - } - - internal static bool UpdateCntr(List<string> cntrs, string src, string dest, int state) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList(); - if (models.Count > 0) - { - models.ForEach(a => - { - a.S_DEST = dest; a.N_B_STATE = state; a.S_SRC = src; - db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.N_B_STATE, it.S_SRC }).ExecuteCommand(); - }); - res = true; - } - return res; - } - public static bool ClearCntrInfo(string cntr) - { - - var db = new SqlHelper<object>().GetInstance(); - var model = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First(); - if (model != null) - { - model.S_SRC = ""; - model.S_DEST = ""; - model.N_B_STATE = 0; - model.T_MODIFY = DateTime.Now; - - } - db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.S_DEST, it.N_B_STATE, it.T_MODIFY }).ExecuteCommand(); - return db.Deleteable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntr.Trim()).ExecuteCommand() > 0; - } - internal static List<Container> GetCntrBySrc(string src, int state, string cntrType = "") - { - var db = new SqlHelper<object>().GetInstance(); - if (cntrType == "") - { - return db.Queryable<Container>().Where(a => a.S_SRC == src && a.N_B_STATE == state).ToList(); - } - else - { - return db.Queryable<Container>().Where(a => a.S_SRC == src && a.N_B_STATE == state && a.S_TYPE == cntrType).ToList(); - } - } - /// <summary> - /// enable 璁╂墭鐩樺厑璁歌鍑哄簱璁$畻鍒帮紝鍚屾椂澧炲姞閲忚〃鏁版嵁 - /// </summary> - /// <param name="cntr"></param> - internal static void Enable(string cntr, string loc) - { - var db = new SqlHelper<object>().GetInstance(); - var cntrInfo = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First(); - //鑾峰彇浠撳簱閲忚〃 - //鑾峰彇鐗╃悊搴撳尯 - //鑾峰彇閫昏緫搴撳尯 - if (cntrInfo != null) - { - try - { - db.BeginTran(); - //闃叉鎺ュ彛閲嶅璋冪敤锛岄噺琛ㄩ噸澶嶅鍔�- if (cntrInfo.C_ENABLE == "N") - { - cntrInfo.C_ENABLE = "Y"; - db.Updateable(cntrInfo).UpdateColumns(a => new { a.C_ENABLE, a.T_MODIFY }).ExecuteCommand(); - var cirList = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == cntr).ToList(); - if (cirList.Count > 0) - { - cirList.ForEach(a => - { - var wh = db.Queryable<WHInventory>().Where(b => b.S_ITEM_CODE == a.S_ITEM_CODE).First(); - if (wh != null) - { - //鏇存柊浠撳簱閲忚〃 - wh.F_QTY += a.F_QTY; - wh.T_MODIFY = DateTime.Now; - db.Updateable(wh).UpdateColumns(it => new { it.F_QTY, it.T_MODIFY }).ExecuteCommand(); - } - else - { - //鏂板浠撳簱閲忚〃 - wh = new WHInventory { F_QTY = a.F_QTY, S_ITEM_CODE = a.S_ITEM_CODE }; - db.Insertable(wh).ExecuteCommand(); - } - //鍐欏叆绗笁鏂逛腑闂磋〃 - //濡傛灉瑕佺粺璁″垎鎷d腑锛屽垎鎷e洖鐨勯噺锛屾棤娉曡窡韪墭鐩橈紝闄ら潪瀵规墭鐩樺姞鏍囪瘑锛屽睘浜庡摢涓簱鍖恒� - //鍙﹀鍒嗘嫞鍥炲彲鑳藉幓鍒殑宸烽亾锛屽埆鐨勯�杈戝簱鍖猴紝閫昏緫搴撳尯鐨勯噺鎺у埗鏇村鏉傦紝涓嶈兘璁$畻鍒嗘嫞涓拰鍒嗘嫞鍥炪�鎵�互搴撳尯閲忚〃鏈」鐩殏涓嶈�铏�- /* - //鑾峰彇璐т綅鐨勭墿鐞嗗簱鍖哄拰鎵�湁閫昏緫搴撳尯 - var location = db.Queryable<Location>().Where(l => l.S_CODE == loc).First(); - if (location != null) { - var az = db.Queryable<AZInventory>().Where(b => b.S_ITEM_CODE == a.S_ITEM_CODE && b.S_AREA_CODE == location.S_AREA_CODE).First(); - if (az != null) { - //鏇存柊搴撳尯閲忚〃 - az.F_QTY += a.F_QTY; - az.T_MODIFY = DateTime.Now; - db.Updateable(az).UpdateColumns(it => new { it.F_QTY, it.T_MODIFY }).ExecuteCommand(); - } - else { - //鏂板搴撳尯閲忚〃 - az = new AZInventory { F_QTY = a.F_QTY, S_ITEM_CODE = a.S_ITEM_CODE, S_AREA_CODE = location.S_AREA_CODE }; - db.Insertable(az).ExecuteCommand(); - } - - } - //閫昏緫搴撳尯鐨勯噺琛�- var zoneList = db.Queryable<ZoneLoc>().Where(l => l.S_LOC_CODE == loc).ToList(); - if (zoneList.Count > 0) { - zoneList.ForEach(z => { - var az = db.Queryable<AZInventory>().Where(b => b.S_ITEM_CODE == a.S_ITEM_CODE && b.S_AREA_CODE == z.S_ZONE_CODE).First(); - if (az != null) { - //鏇存柊搴撳尯閲忚〃 - az.F_QTY += a.F_QTY; - az.T_MODIFY = DateTime.Now; - db.Updateable(az).UpdateColumns(it => new { it.F_QTY, it.T_MODIFY }).ExecuteCommand(); - } - else { - //鏂板搴撳尯閲忚〃 - az = new AZInventory { F_QTY = a.F_QTY, S_ITEM_CODE = a.S_ITEM_CODE, S_AREA_CODE = z.S_ZONE_CODE, C_IS_LOGIC_AREA = "Y" }; - db.Insertable(az).ExecuteCommand(); - } - }); - } - */ - - }); - } - } - db.CommitTran(); - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); - db.RollbackTran(); - - } - } - } - - /// <summary> - /// 缁戝畾璐т綅瀹瑰櫒琛�- /// </summary> - /// <param name="cntr"></param> - /// <returns></returns> - internal static bool BindLocCntrs(string loc, string cntr, string itemCode, string itemName) - { - bool result = true; - List<string> list = new List<string>(cntr.Split(',')); - var db = new SqlHelper<object>().GetInstance(); - for (int i = 0; i < list.Count; i++) - { - if (!string.IsNullOrEmpty(list[i])) - { - string cntrCode = list[i]; - if (db.Queryable<LocCntrRel>().Count(a => a.S_CNTR_CODE.Trim() == cntrCode) == 0) - { - var cir = new LocCntrRel { S_LOC_CODE = loc, S_CNTR_CODE = cntrCode }; - var con = new Container { S_CODE = cntrCode,N_DETAIL_COUNT = 1 }; - db.Insertable<LocCntrRel>(cir).ExecuteCommand(); - db.Insertable<Container>(con).ExecuteCommand(); - if (!string.IsNullOrEmpty(itemCode)) - { - ContainerHelper.BindCntrItem(cntrCode, itemCode, itemName); - } - } - } - } - //1.0 鏌ヨ揣浣嶅鍣ㄨ〃 - return result; - } - - /// <summary> - /// 缁戝畾瀹瑰櫒鐗╂枡琛�- /// </summary> - /// <param name="itemCode"></param> - /// <param name="batchNo"></param> - /// <param name="qty"></param> - /// <returns></returns> - internal static bool BindCntrItem(string trayCode, string itemCode, string itemName) - { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - try - { - db.BeginTran(); - var cir = new CntrItemDetail { S_CNTR_CODE = trayCode, S_ITEM_CODE = itemCode, S_ITEM_NAME = itemName }; - db.Insertable<CntrItemDetail>(cir).ExecuteCommand(); - - db.Ado.CommitTran(); - res = true; - } - catch (Exception ex) - { - db.Ado.RollbackTran(); - } - return res; } #region 鏉哀璐т綅瀹瑰櫒鐗╂枡甯姪鏂规硶 @@ -593,9 +111,9 @@ { var db = new SqlHelper<object>().GetInstance(); var model = db.Queryable<Location>().LeftJoin<LocCntrRel>((p, m) => p.S_CODE == m.S_LOC_CODE) - .Where((p,m)=>p.S_AREA_CODE == areaCode && p.S_LOCK_STATE == "鏃�) - .Where((p,m)=>m.S_ACTION_SRC == abouts) - .Select((p,m)=>m) + .Where((p, m) => p.S_AREA_CODE == areaCode && p.S_LOCK_STATE == "鏃�) + .Where((p, m) => m.S_ACTION_SRC == abouts) + .Select((p, m) => m) .ToList(); return model; } @@ -603,10 +121,30 @@ internal static LocCntrRel GetCntrLoc(string trayCode) { var db = new SqlHelper<object>().GetInstance(); - var model = db.Queryable<LocCntrRel>().Where(s=>s.S_CNTR_CODE == trayCode).First(); + var model = db.Queryable<LocCntrRel>().Where(s => s.S_CNTR_CODE == trayCode).First(); return model; } + internal static LocCntrRel GetLocCntr(string loc) + { + var db = new SqlHelper<object>().GetInstance(); + var model = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == loc).First(); + return model; + } + + internal static bool GetLocItemRel(string loc) + { + bool result = false; + var db = new SqlHelper<object>().GetInstance(); + var model = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == loc).First(); + if (model != null) + { + var list = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.S_CNTR_CODE).ToList(); + result = list.Any() ? false : true; + } + return result; + } + #endregion -- Gitblit v1.9.1