From 7afc439ba32e234ebc455c98fa084ae6eef8a621 Mon Sep 17 00:00:00 2001
From: lss <2538410689@qq.com>
Date: 星期四, 03 七月 2025 17:24:04 +0800
Subject: [PATCH] 优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs |  135 ++++++++++++++++++++++++++++++++++++--------
 1 files changed, 109 insertions(+), 26 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 fcf0911..2600909 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -20,6 +20,7 @@
 using static HH.WCS.JiaTong.api.ApiModel;
 using static HH.WCS.JiaTong.api.OtherModel;
 using static HH.WCS.JiaTong.LISTA.process.HttpModel;
+using static HH.WCS.JiaTong.util.Settings;
 
 namespace HH.WCS.JiaTong.api
 {
@@ -312,8 +313,31 @@
                             }
                             else if (startArea.N_FLOOR != endArea.N_FLOOR)
                             {
-                                //妤煎眰鐢垫鍒嗛厤
-                                var elevatorLoc = LocationHelper.GetElevatorLoc();
+                                string deviceName = "鐢垫1";
+                                if (startloc.S_WH_CODE == "103")
+                                {
+                                    deviceName = "鐢垫2";
+                                }
+                                var eleLoc = Settings.deviceInfos.Where(a => a.deviceName.Trim() == deviceName).FirstOrDefault();
+                                if (eleLoc == null)
+                                {
+                                    result.code = "1";
+                                    result.msg = $"鏈壘鍒颁粨搴搟startloc.S_WH_CODE}鎵�搴旂殑鐢垫锛岃妫�煡閰嶇疆鏂囦欢";
+                                    AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                                    return result;
+                                }
+                                //鏍规嵁浠诲姟鏁伴噺鍒ゆ柇閫佸線鍝釜鐢垫 锛堝叿浣撶數姊祦绋嬫牴鎹幇鍦虹數姊暟閲忥級
+                                string[] state = new string[] { "鎵ц涓�, "寮�鍙栬揣", "鍙栬揣瀹屾垚", "寮�鍗歌揣", "鍗歌揣瀹屾垚" };
+
+
+                                var elevatorLoc = db.Queryable<Location>().Where(a => a.S_CODE == eleLoc.TN_Location).First();
+                                if (elevatorLoc == null)
+                                {
+                                    result.code = "1";
+                                    result.msg = $"鏍规嵁鐢垫閰嶇疆鏂囦欢璐т綅锛歿eleLoc.TN_Location}鏈壘鍒板浜庤揣浣嶆暟鎹紝璇锋鏌ヨ揣浣嶈〃";
+                                    AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                                    return result;
+                                }
 
                                 if (elevatorLoc != null)
                                 {  //鍒涘缓wcs鍒嗘浠诲姟
@@ -793,7 +817,7 @@
                 return result;
             }
             var db = new SqlHelper<object>().GetInstance();
-            Location loc = new Location();
+            Location loc = null;
 
             string Start = model.InitialLocation;  //璧风偣璐т綅
             string itemcode = model.PartNumber;    //鐗╂枡缂栫爜
@@ -1335,12 +1359,14 @@
                             loc = StorageCompute(itemcode, areacode);
                             if (loc == null)
                             {
+
                                 result.code = "1";
                                 result.msg = $"搴撳尯锛歿areacode}娌℃湁鍙敤璐т綅";
                                 LogHelper.Info($" {result.msg}");
                                 AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
                                 return result;
                                 // LogHelper.Info($"搴撳尯锛歿areacode}娌℃湁鍙敤璐т綅");
+
                             }
                             //else
                             //{
@@ -2127,35 +2153,49 @@
                     var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == startloc.S_CODE).First();
                     if (cntr == null)
                     {
-
                         result.code = "1";
                         result.msg = $"璧风偣{model.Data.start_loc_code}鏈煡璇㈢粦瀹氭墭鐩�;
                         LogHelper.Info($"callfixture:鍒涘缓绌哄伐瑁呭懠鍙换鍔�=>{result.msg}");
                         AddErrorInfo("鏌ユ壘鎵樼洏澶辫触", result.msg, Source);
                         return result;
                     }
-
-                    // var startArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == startloc.S_AREA_CODE).First();
-                    //var endArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == endloc.S_AREA_CODE).First();
-
-                    //string dtcode = "DT-01";
-                    ////妤煎眰鐢垫鍒嗛厤
-                    //var Diantiloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == dtcode).First();
-                    //if (Diantiloc == null)
-                    //{
-                    //    result.code = "1";
-                    //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹揣浣嶇紪鐮�{dtcode}鏈壘鍒扮數姊揣浣�;
-                    //    AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
-                    //    return result;
-                    //}
-
+                    string deviceName = "鐢垫1";
+                    if (startloc.S_WH_CODE == "103")
+                    {
+                        deviceName = "鐢垫2";
+                    }
+                    var eleLoc = Settings.deviceInfos.Where(a => a.deviceName.Trim() == deviceName).FirstOrDefault();
+                    if (eleLoc == null)
+                    {
+                        result.code = "1";
+                        result.msg = $"鏈壘鍒颁粨搴搟startloc.S_WH_CODE}鎵�搴旂殑鐢垫锛岃妫�煡閰嶇疆鏂囦欢";
+                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                        return result;
+                    }
                     //鏍规嵁浠诲姟鏁伴噺鍒ゆ柇閫佸線鍝釜鐢垫 锛堝叿浣撶數姊祦绋嬫牴鎹幇鍦虹數姊暟閲忥級
-                    var elevatorLoc = LocationHelper.GetElevatorLoc();
+                    string[] state = new string[] { "鎵ц涓�, "寮�鍙栬揣", "鍙栬揣瀹屾垚", "寮�鍗歌揣", "鍗歌揣瀹屾垚" };
 
+
+                    var elevatorLoc = db.Queryable<Location>().Where(a => a.S_CODE == eleLoc.TN_Location).First();
+                    if (elevatorLoc == null)
+                    {
+                        result.code = "1";
+                        result.msg = $"鏍规嵁鐢垫閰嶇疆鏂囦欢璐т綅锛歿eleLoc.TN_Location}鏈壘鍒板浜庤揣浣嶆暟鎹紝璇锋鏌ヨ揣浣嶈〃";
+                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                        return result;
+                    }
+                    int mst = db.Queryable<WCSTask>().Where(a => a.S_TYPE.Contains("鐢垫") && state.Contains(a.S_B_STATE) && (a.S_END_LOC == elevatorLoc.S_CODE || a.S_START_LOC == elevatorLoc.S_CODE)).Count();
+                    if (mst > 0)
+                    {
+                        result.code = "1";
+                        result.msg = $"鐢垫瀛樺湪浠诲姟锛屼笉鍏佽鍒涘缓鐢垫浠诲姟";
+                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                        return result;
+                    }
                     var wcsTask = new WCSTask
                     {
                         S_CODE = WCSHelper.GenerateTaskNo(),
-                        S_TYPE = "鐢垫2",
+                        S_TYPE = "1妤肩數姊惉杩�,
                         S_EQ_NO = model.Data.task_no,
                         S_START_LOC = elevatorLoc.S_CODE,
                         S_END_LOC = endloc.S_CODE,
@@ -2167,7 +2207,8 @@
                         N_SCHEDULE_TYPE = 1,
                         S_CNTR_CODE = cntr.S_CNTR_CODE,
                         N_END_LAYER = 1,
-                        Z_TYPE = 6
+                        Z_TYPE = 6,
+                        S_B_STATE = "鐢垫鎺ㄩ�"
                     };
 
 
@@ -2228,6 +2269,47 @@
 
         }
 
+
+        /// <summary>
+        /// 鐢垫浠诲姟鎺ㄩ�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        internal static Result DT(DTModel model)
+        {
+            Result result = new Result() { code = "200", msg = "鐢垫浠诲姟鎺ㄩ�鎴愬姛" };
+            string Source = "WMS";
+            if (model == null)
+            {
+                result.code = "1";
+                result.msg = "鍙傛暟涓簄ull";
+                AddErrorInfo("鍙傛暟涓虹┖", result.msg, Source);
+                return result;
+            }
+            try
+            {
+                if (model.prepare=="1")
+                {
+                    var db = new SqlHelper<object>().GetInstance();
+                    //淇敼瀵瑰簲鐢垫浠诲姟杩涜鎺ㄩ�
+                    return result;
+                }
+                else
+                {
+                    result.code = "1";
+                    result.msg = $"涓�ゼ鐢垫鎼繍浠诲姟鎺ㄩ�澶辫触 prepare{model.prepare}涓嶄负1";
+                    LogHelper.Info(result.msg);
+                    return result;
+                }     
+            }
+            catch(Exception ex)
+            {
+                result.code = "1";
+                result.msg = $"鐢垫浠诲姟鎺ㄩ�澶辫触 閿欒淇℃伅锛歿ex}";
+                LogHelper.Error("鐐瑰鐐逛换鍔�Error锛� + ex.ToString(), ex);
+                return result;
+            }
+        }
         /// <summary>
         /// 璐т綅淇℃伅涓婁紶
         /// </summary>
@@ -2560,12 +2642,14 @@
 
             // var aaa = db.Deleteable<Location>(a => a.S_ID == "867C567A-183C-413B-9891-15D8F6DE1620").ExecuteCommand();
             // var aaa = db.Deleteable<Location>(a => a.S_ID.Trim() == "867C567A-183C-413B-9891-15D8F6DE1620").ExecuteCommand();
+
             //LogHelper.Info($"鏂规硶锛歋torageCompute");
             var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE == areacode && a.N_LOCK_STATE == 0).ToList();
             // LogHelper.Info($"鍒涘缓绌烘墭鍥炲簱浠诲姟,缁堢偣璐т綅闆嗗悎锛氭牴鎹簱鍖虹紪鐮侊細{areacode}" + list.Count);
             //list.RemoveAll(a => string.IsNullOrEmpty(a.S_CODE.Trim()) || a.S_CODE == null || string.IsNullOrWhiteSpace(a.S_CODE.Trim()));
             // list = list.FindAll(a => a.N_ROW > 0 && a.N_COL > 0);
             //LogHelper.Info("鍒涘缓绌烘墭鍥炲簱浠诲姟,缁堢偣璐т綅闆嗗悎杩囨护锛� + list.Count);
+
             if (list.Count > 0)
             {
                 result = FindEndcolByLocList(list);
@@ -2685,7 +2769,7 @@
             else
             {
                 return ContainerHelper.CreateCntrItem(taskData.pickStation, partData.rfid, partData.partNumber, partData.partDesc, partData.partType, taskData.carrierType, partData.lotNumber, taskData.wmsLot, partData.weight, partData.unit,
-                    taskData.tyreType, taskData.supplier, taskData.receiveLot, taskData.subpool, partData.productionTime, partData.maturityTime, taskData.level);
+                    taskData.tyreType, taskData.supplier, taskData.receiveLot, taskData.subpool, partData.productionTime, partData.maturityTime, taskData.level, partData.qty, partData.qtyCfg);
             }
 
         }
@@ -2791,14 +2875,14 @@
                 {
 
                     var rowList = locations.Where(r => r.N_ROW == rows[i]).ToList();
-                    LogHelper.Info($"褰撳墠鎺�{rows[i]},鑾峰緱璐т綅{JsonConvert.SerializeObject(rowList)}");
+                    //  LogHelper.Info($"褰撳墠鎺�{rows[i]},鑾峰緱璐т綅{JsonConvert.SerializeObject(rowList)}");
                     if (rowList.Count(a => a.N_CURRENT_NUM == 0) > 0)
                     {
                         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 && !string.IsNullOrEmpty(a.S_CODE.Trim()) && !string.IsNullOrWhiteSpace(a.S_CODE.Trim())).FirstOrDefault();
+                        other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).FirstOrDefault();
                         //if (full == null)
                         //{
                         //    //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�@@ -2969,7 +3053,6 @@
         {
             lock (AGVDeviceReceiveLock)
             {
-
                 var db = new SqlHelper<HangChaAGV>().GetInstance();
                 var agvDeviceInfo = db.Queryable<HangChaAGV>().Where(a => a.agvNo.Trim() == forkliftNo).First();
                 if (agvDeviceInfo == null)

--
Gitblit v1.9.1