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.YNJT_PT/wms/ContainerHelper.cs |  356 +++++++++++------------------------------------------------
 1 files changed, 68 insertions(+), 288 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs
index f365ca7..b3997b9 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs
@@ -1,4 +1,5 @@
-锘縰sing HH.WCS.Mobox3.YNJT_PT.models.other;
+锘縰sing HH.WCS.Mobox3.YNJT_PT.models;
+using HH.WCS.Mobox3.YNJT_PT.models.other;
 using HH.WCS.Mobox3.YNJT_PT.util;
 using System;
 using System.Collections.Generic;
@@ -17,20 +18,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>
         /// TN_ContainerHelper.test("4L澶╃劧姘寸瑁�鍏�, 50, "335ml涓滄柟鏍戝彾15鍏�, 30);
         /// </summary>
@@ -55,6 +43,22 @@
             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)
+        {
+            var res = false;
+            var db = new SqlHelper<object>().GetInstance();
+            var TN_Container = new Container { S_CODE = cntrCode };
+            try
+            {
+                res = db.Insertable<Container>(TN_Container).ExecuteCommand() > 0;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info($"娣诲姞瀹瑰櫒閿欒锛岄敊璇師鍥狅細{ex.Message}", "WMS");
+            }
+            return res;
         }
 
         internal static bool AddCntr(string cntrCode, string itemCode) {
@@ -107,299 +111,75 @@
             var list = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ToList();
             return list;
         }
-        internal static bool BindNewCntrItem(string loc,string cntrCode, string itemCode) {
-            var res = false;
-            var itemName = ItemHelper.GetItemInfo(itemCode).S_ITEM_NAME;
-            var db = new SqlHelper<object>().GetInstance();
-            try {
-                db.BeginTran();
-                var cntr = new Container { S_CODE = cntrCode, N_DETAIL_COUNT = 1 };
-                db.Insertable(cntr).ExecuteCommand();
-                //鑾峰彇鐗╂枡淇℃伅锛屽~鍏呭埌瀹瑰櫒璐у搧鏄庣粏锛屾柟渚夸汉宸ユ煡鐪�-                var cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), F_QTY = 1, S_ITEM_CODE = itemCode, S_ITEM_NAME = itemName };
-                db.Insertable<CntrItemRel>(cir).ExecuteCommand();
-                var lcr = new LocCntrRel { S_CNTR_CODE = cntrCode, S_LOC_CODE = loc };
-                db.Insertable<LocCntrRel>(lcr).ExecuteCommand();
-                db.CommitTran();
-                res = true;
-            }
-            catch (Exception ex) {
-                db.RollbackTran();
-                Console.WriteLine(ex.Message);
-            }
-
-            return res;
-        }
-        /// <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, string putawayNo) {
-            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, S_PUTAWAY_NO = putawayNo };
-                    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, it.S_SRC }).ExecuteCommand();
-
-                db.CommitTran();
-                res = true;
-            }
-            catch (Exception ex) {
-                db.RollbackTran();
-                Console.WriteLine(ex.Message);
-            }
-
-            return res;
-        }
 
         /// <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<CntrItemRel>().Where(it => it.S_CNTR_CODE == cntr.S_CODE.Trim()).ExecuteCommand();
-                //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉锛�-                var 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();
-
-                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;
+        internal static bool deleteCntrItemRelByCntr(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 = src;
-                model.T_MODIFY = DateTime.Now;
-                res = db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.T_MODIFY }).ExecuteCommand() > 0;
+            var container = ContainerHelper.GetCntr(cntr);
+            if(container != null)
+            {
+                db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ExecuteCommand();
+                
+                container.N_DETAIL_COUNT = 0;
+                db.Updateable(container).ExecuteCommand();
             }
-            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;
+            return true;
         }
 
-        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<CntrItemRel>().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) {
+        /// <returns></returns>
+        public static bool addCntrItemRel( string cntrCode,GreenTireInformation info) 
+        {
+            bool res = false;
             var db = new SqlHelper<object>().GetInstance();
-            var cntrInfo = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First();
-            //鑾峰彇浠撳簱閲忚〃
-            //鑾峰彇鐗╃悊搴撳尯
-            //鑾峰彇閫昏緫搴撳尯
-            if (cntrInfo != null) {
-                try {
+            var container = ContainerHelper.GetCntr(cntrCode);
+            if (container != 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<CntrItemRel>().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();
-                                }
-                                //鍐欏叆绗笁鏂逛腑闂磋〃
-                                var di = new DayuanIn
-                                {
-                                    CN_S_ARRIVAL_NO = a.S_PUTAWAY_NO,
-                                    CN_F_QUANTITY = a.F_QTY,
-                                    CN_S_BATCH_NO = a.S_BATCH_NO,
-                                    CN_S_ITEM_CODE = a.S_ITEM_CODE,
-                                };
-                                db.Insertable(di).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();
-                                    }
+                    db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntrCode).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();
-                                        }
-                                    });
-                                }
-                                */
+                    CntrItemRel cntrItemRel = new CntrItemRel()
+                    {
+                        S_CG_ID = info.BARCODE,
+                        S_CNTR_CODE = cntrCode,
+                        S_ITEM_CODE = info.ITEMCODE,
+                        S_CELL_NO = info.TIRECODE,
+                        F_QTY = info.QTY,
+                        S_MCN = info.MCN,
+                        S_OPR = info.OPR,
+                        S_OPR02 = info.OPR02,
+                        S_OPR03 = info.OPR03,
+                        S_OPR04 = info.OPR04,
+                        S_WINDUP = info.WINDUP,
+                        S_TXNDATE = info.TXNDATE,
+                        S_DATE_SHIFT = info.DATE_SHIFT,
+                        S_EFFECTIVE_TIME = info.S_EFFECTIVE_TIME,
+                        S_EXPIRATION_TIME = info.S_EXPIRATION_TIME,
+                        N_URGENT_FLAG = info.N_URGENT_FLAG,
+                    };
 
-                            });
-                        }
-                    }
+                    db.Insertable(cntrItemRel).ExecuteCommand();
+                    container.N_DETAIL_COUNT = 1;
+                    db.Updateable(container).ExecuteCommand();
                     db.CommitTran();
+                    res = true;
                 }
-                catch (Exception ex) {
-                    Console.WriteLine(ex.Message);
+                catch (Exception ex)
+                {
                     db.RollbackTran();
-
                 }
             }
+            return res;
         }
+        
     }
 }

--
Gitblit v1.9.1