lss
2025-05-30 9b015b21e39bb427c8fcfdcbda795d3a3c450d52
HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -2116,23 +2116,7 @@
            }
            return result;
        }
        internal static DeviceInfoModel Device()
        {
            DeviceInfoModel device = new DeviceInfoModel();
            List<DeviceInfos> deviceInfos = new List<DeviceInfos>();//叠盘机报错信息
            AgvInfos gvInfos = new AgvInfos();//agv报错信息
            //获取内存中叠盘机的报错信息
            foreach (var dpjInfo in DeviceProcess.DpjInfoDirectory)
            {
                deviceInfos.Add(new DeviceInfos() { Device = dpjInfo.Value.DeviceName, DeviceInfo = dpjInfo.Value.ErrorInfo });
            }
            device.DeviceInfos = deviceInfos;
            return device;
        }
        /// <summary>
        /// 库位清空
@@ -2203,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">错误码1</param>
        /// <param name="errCode2">错误码2</param>
        /// <param name="faildCode">错误码3</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 合肥佳通业务方法
@@ -2548,30 +2624,8 @@
        }
        /// <summary>
        /// 获取对应错误编码的小车数量
        /// </summary>
        /// <param name="Error1">错误码1</param>
        /// <param name="Error2">错误码2</param>
        /// <param name="faildCode"></param>
        /// <returns></returns>
        internal static int GetAgvQty(string Error1, string Error2 = "0", string faildCode = "0")
        {
            try
            {
                var db = new SqlHelper<HangChaAGV>().GetInstance();
                return db.Queryable<HangChaAGV>().Where(a => a.faildCode == faildCode && a.errCode2 == Error2 && a.agvErrCode == Error1).Count();
            }
            catch (Exception)
            {
                throw;
            }
        }
        #endregion
        internal static CodeInfo GetCodeInfo(string code, string org)
        {