From 2b29f2810099d2beeb01c7d15d1ae64ce88d17a2 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期二, 24 六月 2025 17:39:01 +0800
Subject: [PATCH] 入库算法优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs |   63 ++++++++++++-------------------
 1 files changed, 24 insertions(+), 39 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
index 3e3a625..9f74766 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -880,6 +880,7 @@
                         return result;
                     }
 
+
                     loc = StorageCompute(itemcode, areacode);
 
                     if (loc != null)
@@ -1024,6 +1025,10 @@
                     {
                         areacode = whcode.PMK;
                         cntrType = "PM";
+                    }
+                    else if (model.PartNumber.StartsWith("32"))
+                    {
+                        areacode = whcode.ZCW2;
                     }
                     else
                     {
@@ -1623,36 +1628,6 @@
                 {
 
 
-
-                    #region 浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�-                    //浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�-                    //msts = WCSHelper.GetTaskBycntrcode(model.Rfid);
-                    //if (msts.Count() > 0)
-                    //{
-                    //    msts.RemoveAll(a => string.IsNullOrEmpty(a.S_CNTR_CODE));
-                    //    mst = msts.OrderByDescending(a => a.T_CREATE).FirstOrDefault();
-                    //}
-                    //if (mst != null)
-                    //{
-                    //    areacode = mst.S_START_AREA;
-                    //}
-                    //else
-                    //{
-                    //    result.code = "1";
-                    //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鏈壘鍒版墭鐩樺嚭搴撲换鍔�;
-                    //    AddErrorInfo("鏌ユ壘浠诲姟澶辫触", result.msg);
-                    //    return result;
-                    //}
-                    //if (string.IsNullOrEmpty(areacode))
-                    //{
-                    //    LogHelper.Info($"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�);
-                    //    result.code = "1";
-                    //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�;
-                    //    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg);
-                    //    return result;
-                    //}
-                    #endregion
-
                     #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�                     var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
                     if (CntrLoc != null)
@@ -1699,17 +1674,18 @@
                                 //    loc = emptyRow(areacode);
                                 //}
                             }
+                            else if (model.PartNumber.StartsWith("32"))
+                            {
+                                areacode = whcode.ZCW2;
+                            }
                             else
                             {
-
-
                                 if (model.PartNumber.StartsWith("3"))
                                 {
                                     areacode = whcode.ZCW;
                                 }
                                 else
                                 {
-
                                     result.code = "1";
                                     result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�;
                                     LogHelper.Info($"ItemBack锛歿result.msg}");
@@ -2568,15 +2544,24 @@
         /// <returns></returns>
         internal static Location StorageCompute(string itemcode, string areacode)
         {
+            //Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).First();
             var db = new SqlHelper<object>().GetInstance();
-            //   Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0 ).First();
-            Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").First();
+            Location result = new Location();
+            var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).ToList();
+            if (list.Count > 0)
+            {
+                FindEndcolByLocList(list);
+
+            }
             //鏌ヨ鎵�湁鏈夋墭鐩樼殑鎺掓病閿佺殑鎺�-            // var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM > 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList();
-            // if (list.Count > 0)
+
+            // var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList();
+            //if (list.Count > 0)
             //{
+
             //    for (int i = 0; i < list.Count; i++)
             //    {
+
             //        LogHelper.Info($"鏈夋墭鐩樻帓鍙穥list[i].N_ROW}锛岀墿鏂欑紪鐮亄itemcode},搴撳尯{areacode}");
             //        //鏌ヨ璐т綅缁戝畾鎵樼洏
             //        var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == list[i].S_CODE).First();
@@ -2839,8 +2824,8 @@
                     {
                         Location other = null;
                         //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆
-                        //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴灞傝涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�-                        /// other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").FirstOrDefault();
+                     
+                        // other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").FirstOrDefault();
                         other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).FirstOrDefault();
                         //if (full == null)
                         //{

--
Gitblit v1.9.1