Esempio n. 1
0
        /// <summary>
        /// 设置指令的缓存
        /// </summary>
        /// <param name="cmdCode"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public static CmdConfig GetCachCmdConfig(string cmdCode, int model)
        {
            string    key = "cmd_" + cmdCode + model;
            CmdConfig cmd = GetCache(key) as CmdConfig;

            if (cmd == null)
            {
                cmd = CmdLogic.GetCmdConfigByCode(cmdCode, model);
            }
            SetCache(key, cmd, 3600);//一个小时过期
            return(cmd);
        }
Esempio n. 2
0
        /// <summary>
        /// 下发指令
        /// </summary>
        /// <param name="cmdCode">指令code</param>
        /// <param name="deviceId">设备id</param>
        /// <returns></returns>
        public JsonResult AjaxSendCmd(string cmdCode, int deviceId, string param, int min)
        {
            BaseResult res = new BaseResult();
            Device     d   = DeviceLogic.GetDeviceById(deviceId);
            CmdConfig  cmd = CmdLogic.GetCmdConfigByCode(cmdCode, d.APIDeviceModel.Value);

            if ((d.APIDeviceModel ?? 0) <= 0)
            {
                res.Message = "指令下发失败,设备型号为空!";
                res.State   = State.Falid;
                return(Json(res));
            }
            CmdLog log = new CmdLog();

            log.CmdCode       = cmdCode;
            log.CmdName       = cmd.CmdName;
            log.Imei          = d.Imei;
            log.Param         = param;
            log.IsSucess      = false;
            log.SendLoginName = AuthUser.LoginName;
            //是否立即下发,不是的加入队列
            if ((cmd.IsNowSend ?? true) == false)//设置主动上传间隔
            {
                log.SendDate = DateTime.Now;
                if (min > 0)
                {
                    CmdQueue queue = new CmdQueue();
                    queue.APIDeviceId  = d.APIDeviceId;
                    queue.Model        = d.APIDeviceModel.Value;
                    queue.CmdCode      = cmdCode;
                    queue.Created      = DateTime.Now;
                    queue.LastExecTime = DateTime.Now;
                    queue.Param        = param;
                    queue.ExceTime     = min;
                    queue.IMEI         = d.Imei;
                    queue.Notice       = AuthUser.LoginName;
                    CmdLogic.SaveCmdQueue(queue);
                    SaveUserLog(AuthUser.LoginName + "设置了设备" + d.Imei + cmd.CmdName + ":" + min + "分钟", LogLevel.Info, AuthUser.LoginName, "AjaxSendCmd", "下发指令");
                }
                else
                {
                    CmdLogic.DelCmdQueue(cmdCode, d.APIDeviceId.Value);
                }
                log.CmdName = cmd.CmdName + ":" + min + "分钟";

                res.State   = State.Success;
                res.Message = "设置成功," + min + "分钟";
                //return Json(res);
            }
            else if (d != null)
            {
                log.SendDate = DateTime.Now;
                SendCmdModel model = DeviceData.SendCmd(cmdCode, d.APIDeviceId ?? 0, d.APIDeviceModel ?? 0, CacheHelper.GetToken(d.UserId), param);

                if (model.State != 0)
                {
                    res.State   = State.Falid;
                    res.Message = model.Content + ":" + model.Message;
                    SaveUserLog(AuthUser.LoginName + "下发设备" + d.Imei + "的" + cmd.CmdName + "指令失败:" + res.Message, LogLevel.Sensitive, AuthUser.LoginName, "AjaxSendCmd", "下发指令");
                }
                else
                {
                    log.IsSucess = true;
                    res.State    = State.Success;
                    res.Message  = model.Content;
                    SaveUserLog(AuthUser.LoginName + "下发设备" + d.Imei + "的" + cmd.CmdName + "指令:" + res.Message, LogLevel.Info, AuthUser.LoginName, "AjaxSendCmd", "下发指令");
                    //WriteLog( + res.Message);
                }
                log.Response     = model.State + "|" + res.Message;
                log.ResponseTime = DateTime.Now;
            }
            else
            {
                res.State   = State.NotFind;
                res.Message = "设备不存在";
                WriteLog(AuthUser.LoginName + "下发设备" + d.Imei + "的" + cmd + "指令失败:" + res.Message);
            }
            //保存指令下发记录
            CmdLogic.SaveCmdLog(log);
            if (res.Message.StartsWith("Off"))
            {
                res.Message = "设备不线,指令离线下发";
            }
            return(Json(res));
        }