From 9b015b21e39bb427c8fcfdcbda795d3a3c450d52 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期五, 30 五月 2025 17:27:56 +0800
Subject: [PATCH] 合肥佳通修改

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs |  147 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 131 insertions(+), 16 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 8d12ee2..2246125 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -11,8 +11,11 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection.Emit;
+using System.ServiceModel;
 using System.Threading;
 using System.Threading.Tasks;
+using System.Web.UI.WebControls;
 using static HH.WCS.JiaTong.api.ApiModel;
 using static HH.WCS.JiaTong.api.OtherModel;
 using static HH.WCS.JiaTong.LISTA.process.HttpModel;
@@ -155,6 +158,7 @@
                 }
                 else if (taskData.taskType == 2)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛岃捣鐐归渶瑕佹湁鎵樼洏
                 {
+                    note = "鍏ュ簱";
                     startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
                     if (startloc != null)
                     {
@@ -173,12 +177,7 @@
                         }
 
                     }
-                    //鍒ゆ柇鏄惁鏄┖鎵樺洖搴�-                    var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == CntrCode).First();
-                    if (CntrItem == null)
-                    {
-                        note = "绌烘墭鍥炲簱";//浜曟澗绌烘墭鍥炲簱锛岄渶瑕佷笌鍙犵洏鏈哄畨鍏ㄤ氦浜�-                    }
+
                     endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
                     if (endloc != null)
                     {
@@ -194,8 +193,8 @@
                 }
                 else if (taskData.taskType == 3)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛�                 {
+                    note = "鍑哄簱";
                     //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
-
                     startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
                     if (startloc != null)
                     {
@@ -388,6 +387,7 @@
                 //鏆傚瓨浣嶅洖搴�                 else if (taskData.taskType == 6)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟
                 {
+                    note = "鍏ュ簱";
                     //鏍规嵁鎵樼洏鍙锋壘璐т綅
                     var CntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == partData.rfid).First();
                     if (CntrRel != null)
@@ -806,6 +806,7 @@
                         result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
                         LogHelper.Info($"Putin==> {result.msg}");
                         AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                        return result;
                     }
 
                     //鍒ゆ柇鏈夋棤鐩稿悓鐗╂枡鎺�@@ -826,6 +827,7 @@
                         result.msg = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�;
                         LogHelper.Info($"Putin==> {result.msg}");
                         AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                        return result;
                     }
                 }
                 else
@@ -835,6 +837,7 @@
                     result.msg = $"浠诲姟璧风偣:{Start}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
                     LogHelper.Info($"Putin==> {result.msg}");
                     AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                    return result;
                 }
                 #endregion
 
@@ -939,6 +942,7 @@
                     result.msg = $"鏍规嵁鏈哄彴缂栫爜锛歿model.WorkCenter}鏈壘鍒板搴旇揣浣�;
                     LogHelper.Info($"Putin==> {result.msg}");
                     AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                    return result;
                 }
                 //鏍规嵁浠撳簱 璁$畻搴撳尯
                 var whcode = Settings.wareLoc.Where(a => a.AreaCode == locJt.S_WH_CODE).FirstOrDefault();
@@ -973,6 +977,7 @@
                     result.msg = $"鏍规嵁缁堢偣搴撳尯浠撳簱缂栫爜锛歿locJt.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
                     LogHelper.Info($"Putin==> {result.msg}");
                     AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                    return result;
                 }
                 #endregion
 
@@ -991,6 +996,14 @@
                     {
                         End = Endloc.S_CODE;
                     }
+                    else
+                    {
+                        result.code = "1";
+                        result.msg = $"Computeloc==銆嬫牴鎹満鍙扮紪鐮侊細{model.WorkCenter},宸ヨ绫诲瀷锛歿cntrType} 鏈壘鍒扮┖璐т綅鏁版嵁锛岃妫�煡璐т綅琛�;
+                        LogHelper.Info($"ItemBack锛歿result.msg}");
+                        AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                        return result;
+                    }
                 }
                 else
                 {
@@ -999,6 +1012,7 @@
                     result.msg = $"浠诲姟鐗╂枡:{itemcode}鎵句笉鍒板搴斿簱瀛�;
                     LogHelper.Info($"ItemBack锛歿result.msg}");
                     AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                    return result;
                 }
                 #endregion
 
@@ -1192,6 +1206,7 @@
                             result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
                             LogHelper.Info($"Putin==> {result.msg}");
                             AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                            return result;
                         }
                         #endregion
 
@@ -1333,11 +1348,12 @@
                         result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿endloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
                         LogHelper.Info($"Putin==> {result.msg}");
                         AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                        return result;
                     }
 
 
                     //璁$畻鍑哄簱鎵樼洏
-                    startloc = airlift(areacode, itemcode);
+                    startloc = LocationHelper.GetLocByAreacode(areacode);
                     if (startloc != null)
                     {
                         var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == startloc.S_CODE).First();
@@ -1365,7 +1381,7 @@
                     result.msg = $"浠诲姟璧风偣:{End}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
                     LogHelper.Info($"callfixture:{result.msg}");
                     AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
-
+                    return result;
                 }
                 #endregion
 
@@ -1551,7 +1567,8 @@
                             var EndLocs = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == areacode).ToList();
                             if (EndLocs.Count > 0)
                             {
-                                loc = EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0);
+                                //loc =  EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0);
+                                loc = FindEndcolByLocList(EndLocs);
                                 if (loc != null)
                                 {
                                     End = loc.S_CODE;
@@ -1598,6 +1615,7 @@
                         result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
                         LogHelper.Info($"Putin==> {result.msg}");
                         AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                        return result;
                     }
 
                 }
@@ -2133,8 +2151,8 @@
                         if (CntrItem != null)
                         {
 
-                            LocationHelper.UnBindingLoc(loc, new List<string>() { "cntrcode" });
-                            //  db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand();
+                            LocationHelper.UnBindingLoc(loc, new List<string>() { cntrcode });
+                            // db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand();
                             db.Deleteable<CntrItemDetail>().Where(it => it.S_CNTR_CODE.Trim() == cntrcode).ExecuteCommand();
 
                         }
@@ -2169,7 +2187,99 @@
 
             return result;
         }
+        /// <summary>
+        /// 璁惧鐘舵�涓婃姤
+        /// </summary>
+        /// <returns></returns>
+        internal static DeviceInfoModel Device()
+        {
+            var db = new SqlHelper<HangChaAGV>().GetInstance();
+            DeviceInfoModel device = new DeviceInfoModel();
 
+            List<DeviceInfos> deviceInfos = new List<DeviceInfos>();//鍙犵洏鏈烘姤閿欎俊鎭�+            List<AgvInfos> agvInfos = new List<AgvInfos>();//agv鎶ラ敊淇℃伅
+
+            //鑾峰彇鍐呭瓨涓彔鐩樻満鐨勬姤閿欎俊鎭�+            foreach (var dpjInfo in DeviceProcess.DpjInfoDirectory)
+            {
+                deviceInfos.Add(new DeviceInfos() { Device = dpjInfo.Value.DeviceName, DeviceInfo = dpjInfo.Value.ErrorInfo });
+            }
+            device.DeviceInfos = deviceInfos;
+            //鑾峰彇杞﹁締鎶ヨ淇℃伅
+            var agvDeviceInfo = db.Queryable<HangChaAGV>().ToList();
+            if (agvDeviceInfo.Count > 0)
+            {
+                device.AgvQty = agvDeviceInfo.Count;
+                device.AgvErrorQty = agvDeviceInfo.FindAll(a => a.agvErrCode != "0" || a.agvErrCode != "0" || a.faildCode != "0").Count;
+                device.AgvChargeQty = agvDeviceInfo.FindAll(a =>  a.agvErrCode == "1").Count;
+                device.AgvRunQty = agvDeviceInfo.FindAll(a =>  a.agvErrCode == "1").Count;
+                foreach (var agv in agvDeviceInfo)
+                {
+                    string agvErrorInfo = GetAgvAlarmSendCodeTwo(agv.agvErrCode, agv.errCode2, agv.faildCode);
+                    agvInfos.Add(new AgvInfos() { AgvNo = agv.agvNo, AgvInfo = agvErrorInfo });
+                }
+            }
+            device.AgvInfos = agvInfos;
+
+            return device;
+        }
+
+        /// <summary>
+        /// agv灏忚溅鏁呴殰鐮佸鐞�+        /// </summary>
+        /// <param name="errCode1">閿欒鐮�</param>
+        /// <param name="errCode2">閿欒鐮�</param>
+        /// <param name="faildCode">閿欒鐮�</param>
+        /// <returns></returns>
+        private static string GetAgvAlarmSendCodeTwo(string errCode1, string errCode2, string faildCode)
+        {
+            string result = "";
+            //灏嗘姤璀︿俊鎭暣鍚�+            string binSW1 = Convert.ToString(int.Parse(errCode1), 2).PadLeft(22, '0');
+            string binSW2 = Convert.ToString(int.Parse(errCode1), 2).PadLeft(20, '0');
+            string binFc = Convert.ToString(int.Parse(errCode1), 2).PadLeft(16, '0');
+            var arr1 = binSW1.ToArray();
+            var arr2 = binSW2.ToArray();
+            var arr3 = binFc.ToArray();
+
+            for (int i = 0; i <= arr1.Length; i++)
+            {
+                if (arr1[i] == '1')
+                {
+                    var ErrorInfo = Settings.agvErrorCode1.Where(a => a.ErrorCode == i).FirstOrDefault();
+                    if (ErrorInfo != null)
+                    {
+                        result = result + "," + $"{ErrorInfo.ErrorInfo}";
+                    }
+
+                }
+            }
+            for (int i = 0; i <= arr2.Length; i++)
+            {
+                if (arr1[i] == '1')
+                {
+                    var ErrorInfo = Settings.agvErrorCode2.Where(a => a.ErrorCode == i).FirstOrDefault();
+                    if (ErrorInfo != null)
+                    {
+                        result = result + "," + $"{ErrorInfo.ErrorInfo}";
+                    }
+
+                }
+            }
+            for (int i = 0; i <= arr3.Length; i++)
+            {
+                if (arr1[i] == '1')
+                {
+                    var ErrorInfo = Settings.agvFaildCode.Where(a => a.ErrorCode == i).FirstOrDefault();
+                    if (ErrorInfo != null)
+                    {
+                        result = result + "," + $"{ErrorInfo.ErrorInfo}";
+                    }
+
+                }
+            }
+            return result;
+        }
         #endregion
 
         #region 鍚堣偉浣抽�涓氬姟鏂规硶
@@ -2297,7 +2407,12 @@
             #endregion
             var loc = LocationHelper.GetLocByItemCode(areacode, itemcode, level);
             LogHelper.Info($"airlift=>鏍规嵁搴撳尯缂栫爜:{areacode}锛岀墿鏂欑紪鐮�{itemcode},鐗╂枡绛夌骇璁$畻鍑烘湁鎵樼洏璐т綅{JsonConvert.SerializeObject(loc)}");
-            result = FindStartcolByLoclist(loc);
+            // result = FindStartcolByLoclist(loc);
+            if (loc.Count > 0)
+            {
+                result = loc.OrderByDescending(a => a.N_COL).First();
+            }
+
             LogHelper.Info($"airlift=>鍙敤璐т綅涓猴細{JsonConvert.SerializeObject(result)}");
             return result;
         }
@@ -2415,7 +2530,7 @@
         /// </summary>
         /// <param name="locations"></param>
         /// <returns></returns>
-        internal static Location FindEndcolByLocList(List<Location> locations, string itemcode)
+        internal static Location FindEndcolByLocList(List<Location> locations)
         {
             try
             {
@@ -2508,9 +2623,9 @@
             }
 
         }
+
+
         #endregion
-
-
 
         internal static CodeInfo GetCodeInfo(string code, string org)
         {

--
Gitblit v1.9.1