111
lss
5 天以前 79db8fda0f71b65dfe1e1c72f307b29efc565126
HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -6,6 +6,7 @@
using HH.WCS.JiaTong.wms;
using Newtonsoft.Json;
using NLog.Fluent;
using NModbus;
using S7.Net;
using SqlSugar;
using System;
@@ -39,7 +40,7 @@
        public static object _lockCreateItem = new object();
        public static object _lockCreateTask = new object();
        /// <summary>
        /// 立库任务下发=》创建任务
        /// </summary>
@@ -883,7 +884,6 @@
                        return result;
                    }
                    #region 创建任务
                    if (endloc != null && startloc != null)
                    {
@@ -931,7 +931,7 @@
                                }
                            }
                            LogHelper.Info("创建任务成功");
                        }
                        else
@@ -2226,18 +2226,8 @@
                if (startloc != null)
                {
                    Start = model.InitialLocation;
                    var CntrRel = LocationHelper.GetLocCntrRel(startloc.S_CODE).FirstOrDefault();
                    if (CntrRel != null)
                    {
                        CntrCode = CntrRel.S_CNTR_CODE;
                    }
                    else
                    {
                        result.code = "1";
                        result.msg = $"创建任务失败,根据起点{model.InitialLocation}未找到对应货位绑定托盘托盘";
                        AddErrorInfo("查找托盘失败", result.msg, Source);
                        return result;
                    }
                }
                endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == model.TargetLocation).First();
                if (endloc != null)
@@ -2738,8 +2728,8 @@
            var db = new SqlHelper<HangChaAGV>().GetInstance();
            DeviceInfoModel device = new DeviceInfoModel();
           // List<DeviceInfos> deviceInfos = new List<DeviceInfos>();//叠盘机报错信息
                                                                    // List<AgvInfos> agvInfos = new List<AgvInfos>();//agv报错信息
            // List<DeviceInfos> deviceInfos = new List<DeviceInfos>();//叠盘机报错信息
            // List<AgvInfos> agvInfos = new List<AgvInfos>();//agv报错信息
            //获取内存中叠盘机的报错信息
            //foreach (var dpjInfo in DeviceProcess.DpjInfoDirectory)
@@ -2748,20 +2738,52 @@
            //}
            //  device.DeviceInfos = deviceInfos;
            //获取车辆报警信息
            var agvDeviceInfo = db.Queryable<HangChaAGV>().ToList();
            if (agvDeviceInfo.Count > 0)
            var agvDeviceInfos = db.Queryable<HangChaAGV>().ToList();
            if (agvDeviceInfos.Count > 0)
            {
                device.AgvQty = agvDeviceInfo.Count;
                device.AgvErrorQty = agvDeviceInfo.FindAll(a => a.agvErrCode != "0" || int.Parse(a.errCode2) > 1 || int.Parse(a.faildCode) > 1).Count;
                device.AgvChargeQty = agvDeviceInfo.FindAll(a => a.errCode2 == "1").Count;
                device.AgvRunQty = agvDeviceInfo.FindAll(a => a.agvErrCode == "0" && a.errCode2 == "0" && a.faildCode == "1").Count;
                int chargeQty = 0;
                int runQty = 0;
                int Errorqty = 0;
                foreach (var item in agvDeviceInfos)
                {
                    string[] battery = item.agvBattery.Split(',').ToArray();
                    LogHelper.Info($"车辆信息上报 车号:{item.agvNo},battery:{JsonConvert.SerializeObject(battery)},错误码:{item.agvErrCode}、{item.errCode2}、{item.faildCode}");
                    if (battery.Count() > 3)
                    {
                        if (battery[1] == "1")
                        { runQty++; }
                        if (battery[2] == "1")
                        { chargeQty++; }
                        if (!string.IsNullOrEmpty(item.agvErrCode) && int.Parse(item.agvErrCode) > 1)
                        {
                            Errorqty++;
                            break;
                        }
                        if (!string.IsNullOrEmpty(item.errCode2) && int.Parse(item.errCode2) > 1)
                        {
                            Errorqty++;
                            break;
                        }
                        if (!string.IsNullOrEmpty(item.faildCode) && int.Parse(item.faildCode) > 1)
                        {
                            Errorqty++;
                            break;
                        }
                    }
                }
                device.AgvQty = agvDeviceInfos.Count;
                device.AgvErrorQty = Errorqty;
                device.AgvChargeQty = chargeQty;
                device.AgvRunQty = runQty;
                //foreach (var agv in agvDeviceInfo)
                //{
                //    string agvErrorInfo = GetAgvAlarmSendCodeTwo(agv.agvNo, agv.agvErrCode, agv.errCode2, agv.faildCode);
                //    deviceInfos.Add(new DeviceInfos() { AgvNo = agv.agvNo, AgvInfo = agvErrorInfo });
                //}
            }
          //  device.DeviceInfos = deviceInfos;
            //  device.DeviceInfos = deviceInfos;
            return device;
        }
@@ -3302,16 +3324,16 @@
        /// </summary>
        /// <param name="forkliftNo"></param>
        /// <param name="battery"></param>
        /// <param name="agvCurrTaskInfo"></param>
        /// <param name="errCode"></param>
        /// <param name="errCode2"></param>
        /// <param name="faildCode"></param>
        internal static void AGVDeviceReceiveSet(string forkliftNo, string battery, string errCode, string errCode2, string faildCode)
        {
            lock (AGVDeviceReceiveLock)
            try
            {
                var db = new SqlHelper<HangChaAGV>().GetInstance();
                var agvDeviceInfo = db.Queryable<HangChaAGV>().Where(a => a.agvNo.Trim() == forkliftNo).First();
                var agvDeviceInfo = db.Queryable<HangChaAGV>().Where(a => a.agvNo.Trim() == forkliftNo.Trim()).First();
                if (agvDeviceInfo == null)
                {
                    var agvInfo = new HangChaAGV()
@@ -3327,11 +3349,7 @@
                }
                else
                {
                    //判断中间表信息有无变化,无变化不更新中间表
                    if (agvDeviceInfo.agvErrCode == errCode && agvDeviceInfo.errCode2 == errCode2 && agvDeviceInfo.faildCode == faildCode)
                    {
                        return;
                    }
                    agvDeviceInfo.agvBattery = battery;
                    //  agvDeviceInfo.agvCurrTaskInfo = agvCurrTaskInfo;
                    agvDeviceInfo.agvErrCode = errCode;
@@ -3342,9 +3360,16 @@
                    //if (int.Parse(agvDeviceInfo.agvBattery) >= 1000) 
                    //    agvDeviceInfo.agvRunStatus = "";
                    db.Updateable(agvDeviceInfo).UpdateColumns(a => new
                    { a.agvBattery, a.agvCurrTaskInfo, a.agvErrCode, a.errCode2, a.faildCode, a.agvRunStatus }).ExecuteCommand();
                    { a.agvBattery, a.agvErrCode, a.errCode2, a.faildCode }).ExecuteCommand();
                }
            }
            catch (Exception ex)
            {
                LogHelper.Info($"AGVDeviceReceiveSet:Error:{ex}");
            }
        }
        #region 数据模型