From 3e870a218efe18db4eeb099632aac12a947a9e92 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期二, 24 六月 2025 17:41:21 +0800
Subject: [PATCH] 优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs |  114 +++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 75 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..dfba0f1 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)
+            {
+                FindEndcolByLocListLock(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)
                         //{
@@ -2877,6 +2862,57 @@
         }
 
         /// <summary>
+        /// 鎵剧粓鐐圭┖璐т綅璁$畻鎺掗攣
+        /// </summary>
+        /// <param name="locations"></param>
+        /// <returns></returns>
+        internal static Location FindEndcolByLocListLock(List<Location> locations)
+        {
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+                Location end = null;
+                //鏍规嵁缁堢偣璐т綅鎵剧┖闂茶揣浣�+                var rows = locations.Select(a => a.N_ROW).Distinct().ToList();
+                for (int i = 0; i < rows.Count; i++)
+                {
+                    var rowList = locations.Where(r => r.N_ROW == rows[i]).ToList();
+                    if (rowList.Count(a => a.S_LOCK_STATE != "鏃�) == 0 && rowList.Count(a => a.N_CURRENT_NUM == 0) > 0)
+                    {
+                        Location other = null;
+                        //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆
+                        //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴浣嶈涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�+                        var full = rowList.OrderByDescending(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 1).FirstOrDefault();
+                        if (full == null)
+                        {
+                            //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�+                            other = rowList.OrderBy(a => a.N_COL).FirstOrDefault();
+                        }
+                        else
+                        {
+                            other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_COL > full.N_COL).FirstOrDefault();
+                        }
+                    
+                        if (other != null)
+                        {
+                            end = other;
+                            break;
+
+                        }
+
+                    }
+                }
+                return end;
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+
+        }
+
+        /// <summary>
         /// 鎵捐捣鐐规弧璐т綅
         /// </summary>
         /// <param name="locations"></param>

--
Gitblit v1.9.1