From d42ad8b01195def2a9309930e14f90ff13ad47b1 Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期四, 19 六月 2025 17:24:28 +0800 Subject: [PATCH] 印尼佳通出入库策略优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 235 insertions(+), 0 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs new file mode 100644 index 0000000..49e4e08 --- /dev/null +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs @@ -0,0 +1,235 @@ +锘縰sing HH.WCS.Mobox3.FJJT.models.other; +using HH.WCS.Mobox3.FJJT.util; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static HH.WCS.Mobox3.FJJT.dispatch.NDC; +using static HH.WCS.Mobox3.FJJT.util.ExcetionHelper; + +namespace HH.WCS.Mobox3.FJJT.wms { + /// <summary> + /// 瀹瑰櫒甯姪绫�+ /// </summary> + internal class ContainerHelper { + internal static string GenerateCntrNo() { + var id = SYSHelper.GetSerialNumber("鎵樼洏鍙�, "TP"); + var date = DateTime.Now.ToString("yyMMdd"); + return $"TP{date}{id.ToString().PadLeft(4, '0')}"; + } + + /// <summary> + /// TN_ContainerHelper.test("4L澶╃劧姘寸瑁�鍏�, 50, "335ml涓滄柟鏍戝彾15鍏�, 30); + /// </summary> + /// <param name="item1"></param> + /// <param name="qty1"></param> + /// <param name="item2"></param> + /// <param name="qty2"></param> + //internal static void test(string item1, int qty1, string item2, int qty2) { + // var db = new SqlHelper<object>().GetInstance(); + // var cntr = db.Queryable<TN_Container>().Includes(a => a.CntrItemRelList). + // Where(a => a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item1 && int.Parse(b.F_QTY) > qty1) > 0 + // && a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item2 && int.Parse(b.F_QTY) > qty2) > 0).First(); + //} + + /// <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 CntrItemRel { S_CNTR_CODE = cntrCode, S_ITEM_CODE = itemCode }; + try { + db.BeginTran(); + + db.Insertable<Container>(TN_Container).ExecuteCommand(); + db.Insertable<CntrItemRel>(cntrItemRel).ExecuteCommand(); + + db.CommitTran(); + res = true; + } + catch (Exception ex) { + db.RollbackTran(); + + } + return res; + }*/ + + internal static bool AddCntr(string cntrCode ,int detallCount = 0) + { + var res = false; + var db = new SqlHelper<object>().GetInstance(); + var TN_Container = new Container { S_CODE = cntrCode ,N_DETAIL_COUNT = detallCount }; + try + { + var container = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == cntrCode).First(); + if (container == null) + { + res = db.Insertable<Container>(TN_Container).ExecuteCommand() > 0; + } + } + catch (Exception ex) + { + WMSHelper.addAlarmRecord("绯荤粺閿欒", "楂�, $"娣诲姞瀹瑰櫒閿欒锛岄敊璇師鍥狅細{ex.Message}"); + throw new BusinessException($"娣诲姞瀹瑰櫒閿欒锛岄敊璇師鍥狅細{ex.Message}"); + } + return res; + } + + internal static bool AddContainer(string cntrCode,int cntrType ,int detallCount = 0) + { + var res = false; + var db = new SqlHelper<object>().GetInstance(); + var TN_Container = new Container { S_CODE = cntrCode, N_TYPE = cntrType,S_TYPE = Container.GetCntrType(cntrType),N_DETAIL_COUNT = detallCount }; + try + { + db.BeginTran(); + var container = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == cntrCode).First(); + if (container == null) + { + db.Insertable<Container>(TN_Container).ExecuteCommand(); + } + else + { + container.N_DETAIL_COUNT = detallCount; + container.N_E_STATE = 0; + db.Updateable<Container>(container).ExecuteCommand(); + } + db.CommitTran(); + res = true; + } + catch (Exception ex) + { + db.RollbackTran(); + WMSHelper.addAlarmRecord("绯荤粺閿欒", "楂�, $"娣诲姞瀹瑰櫒閿欒锛岄敊璇師鍥狅細{ex.Message}"); + throw new BusinessException($"娣诲姞瀹瑰櫒閿欒锛岄敊璇師鍥狅細{ex.Message}"); + } + return res; + } + + /// <summary> + /// 鏍规嵁瀹瑰櫒鍙疯幏鍙栧鍣ㄤ俊鎭�+ /// </summary> + /// <param name="cntr"></param> + /// <param name="create"></param> + /// <returns></returns> + internal static Container GetCntr(string cntr, bool create = false) { + //1.0 鏌ヨ揣浣嶅鍣ㄨ〃 + var db = new SqlHelper<object>().GetInstance(); + var old = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == cntr).First(); + if (old == null && create) { + var model = new Container { S_CODE = cntr }; + if (db.Insertable(model).ExecuteCommand() > 0) { + old = model; + } + } + return old; + } + + /// <summary> + /// 鏍规嵁瀹瑰櫒鑾峰彇鐗╂枡淇℃伅 + /// </summary> + /// <param name="cntr"></param> + /// <returns></returns> + internal static List<CntrItemRel> GetCntrItemRel(string cntr) { + var db = new SqlHelper<object>().GetInstance(); + var list = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ToList(); + return list; + } + + /// <summary> + /// 鏇存柊瀹瑰櫒鐗╂枡淇℃伅 + /// </summary> + /// <param name="cntrItem"></param> + /// <returns></returns> + internal static bool updateCntrItemRel(CntrItemRel cntrItem) + { + var db = new SqlHelper<object>().GetInstance(); + return db.Updateable(cntrItem).ExecuteCommand()>0; + } + + /// <summary> + /// 鐗╂枡淇℃伅缁戝畾鍒版弧瀹瑰櫒涓�+ /// </summary> + /// <param name="cntrCode"></param> + /// <param name="itemCode"></param> + /// <param name="batchNo"></param> + /// <param name="qty"></param> + /// <returns></returns> + internal static bool BindCntrItem(Container cntr, string itemCode, string batchNo, float qty) { + var res = false; + var db = new SqlHelper<object>().GetInstance(); + try { + db.BeginTran(); + //1.鏌ョ湅鏄惁鏈夌浉鍚岀墿鏂欐壒娆$殑淇℃伅锛屽鏋滄湁瑕佺疮鍔狅紝涓嶅悓鎵规鐨勫彲浠ュ垎寮�+ var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == itemCode && a.S_BATCH_NO == batchNo).First(); + if (cir != null) { + cir.F_QTY += qty; + db.Updateable(cir).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + } + else { + //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉锛�+ cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), S_BATCH_NO = batchNo, F_QTY = qty, S_ITEM_CODE = itemCode }; + db.Insertable<CntrItemRel>(cir).ExecuteCommand(); + } + var count = db.Queryable<CntrItemRel>().Count(a => a.S_CNTR_CODE == cntr.S_CODE); + cntr.N_DETAIL_COUNT = count; + cntr.C_ENABLE = "N";//鐮佺洏鍚庡皢鎵樼洏璁剧疆涓轰笉鍙敤鐘舵�锛屽叆搴撳悗鍙樻垚鍙敤 + db.Updateable(cntr).UpdateColumns(it => new { it.N_DETAIL_COUNT, it.C_ENABLE}).ExecuteCommand(); + + db.CommitTran(); + res = true; + } + catch (Exception ex) { + db.RollbackTran(); + Console.WriteLine(ex.Message); + } + + return res; + } + + + + + + internal static bool UpdateCntr(Container container) + { + var db = new SqlHelper<object>().GetInstance(); + return db.Updateable(container).ExecuteCommand()>0; + } + + + + + /// <summary> + /// + /// </summary> + /// <param name="cntrCode"></param> + /// <param name="state">鎵樼洏寮傚父鐘舵� 0.姝e父 1.寮傚父</param> + /// <returns></returns> + internal static bool UpdateCntrState(string cntrCode, int state) { + var res = false; + var db = new SqlHelper<object>().GetInstance(); + var models = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == cntrCode).ToList(); + if (models.Count > 0) { + models.ForEach(a => { + a.N_E_STATE = state; + db.Updateable(a).UpdateColumns(it => new { it.N_E_STATE }).ExecuteCommand(); + }); + res = true; + } + return res; + } + } +} -- Gitblit v1.9.1