Esempio n. 1
0
        /// <summary>
        /// 判断
        /// </summary>ACID 消息记录id
        private static void JudgementAlarm(ReceiveData info, int deviceType, string ACID)
        {
            try
            {
                Utility.WriteLog("开始---------------------------------1--------");
                if (info.Bodydata != null)
                {
                    FireControl_DeviceBLL      buildDeviceBLL = new FireControl_DeviceBLL();
                    FireControl_DevBindUserBLL DevBinBll      = new FireControl_DevBindUserBLL();
                    REG.N6.IFT.TwpFControl.Model.ResultDis <FireControl_Device> resultDevice = null;
                    //1、 根据设备编号 查询设备    //修改
                    resultDevice = buildDeviceBLL.GetDevIDByDevNum(info.IMEI);
                    FireControl_Device buildDevice = new FireControl_Device();
                    if (resultDevice.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                    {
                        Utility.WriteLog("该设备在数据库中存在,设备IMEI为:" + info.IMEI);
                        buildDevice = resultDevice.ResultData;
                    }
                    if (buildDevice != null && !string.IsNullOrEmpty(buildDevice.DevID))
                    {  //警情记录id  同步设备管理系统用
                        string recordID              = string.Empty;
                        string AddressID             = "";
                        FireControl_DeviceBLL DevBLL = new FireControl_DeviceBLL();
                        if (info.Bodydata.AlarmStatus == "01")//判断设备是否报警
                        {
                            Utility.WriteLog("该设备发生报警,设备IMEI为" + info.IMEI);
                            //8燃气 7烟感
                            //查询是否该设备已经有未关闭的报警消息
                            FireControl_WarninsPushBLL pushBll = new FireControl_WarninsPushBLL();
                            var Result = pushBll.SelectNotClose(buildDevice.DevID, Dictoary.Warnin_Warning.ToString());
                            if (Result.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                            {
                                var PushModel = Result.ResultData;
                                if (PushModel != null && !string.IsNullOrWhiteSpace(PushModel.TitleID) && PushModel.WarIn_Type == Dictoary.Warnin_Warning)
                                {
                                    //有报警的消息记录
                                    Utility.WriteLog($"还在报警报警的消息记录id{PushModel.TitleID}---------------------------------2--------");
                                    Utility.WriteLog("//////////////////////////正常结束//////////////////////");
                                    return;
                                }
                            }
                            ///查询该设备是否在报警但消音
                            var SilencingResult = pushBll.SelectNotClose(buildDevice.DevID, Dictoary.Warnin_Silencing.ToString());
                            if (SilencingResult.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                            {
                                var PushModel = SilencingResult.ResultData;
                                if (PushModel != null && !string.IsNullOrWhiteSpace(PushModel.TitleID) && PushModel.WarIn_Type == Dictoary.Warnin_Silencing)
                                {
                                    //有报警的消息记录
                                    Utility.WriteLog($"还在报警但是已经消音了{PushModel.TitleID}---------------------------------2--------");
                                    Utility.WriteLog("把状态改为报警,添加一条处理记录");
                                    //改为报警状态  并增加报警推送记录
                                    PushModel.WarIn_Type = 1;//报警  警情状态 0正常 1报警 2已正常未关闭 3报警但消音
                                    pushBll.ModObj(PushModel.TitleID, "设备报警", "设备继续报警", "0", 1);
                                    Utility.WriteLog("结束");
                                    return;
                                }
                            }
                            //查询设备对应的人员和地址id和地址详细

                            var PeopleResult = DevBinBll.GetDevPeople(buildDevice.DevID);
                            if (PeopleResult.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                            {
                                AddressID = PeopleResult.ResultData.AddressID;
                                var People = PeopleResult.ResultData;
                                if (string.IsNullOrWhiteSpace(People.AddressID))
                                {
                                    Utility.WriteLog("该设备的地址为空人员为:---------------------------------3--------" + People.UserName + People.Phone);
                                    Utility.WriteLog("正常结束");
                                    return;
                                }
                                //给用户发送推送  告警
                                //先获取到消息id
                                var TitleID = CommHelper.CreatePKID("tit");
                                #region 添加主消息记录
                                var PushModel = new REG.N6.IFT.TwpFControl.Model.FireControl_WarninsPush();
                                PushModel.CreateTime   = DateTime.Now;
                                PushModel.PushDate     = DateTime.Now;
                                PushModel.Deleted      = 0;
                                PushModel.CreatedBy    = "0";
                                PushModel.TitleID      = TitleID;
                                PushModel.DevID        = buildDevice.DevID;
                                PushModel.NewContent   = "消息详情";
                                PushModel.NewTitle     = buildDevice.DevName + "发生报警";
                                PushModel.WarInAdress  = People.Address;
                                PushModel.WarIn_Type   = 1;     //消息报警开启
                                PushModel.WarninsState = "1";
                                PushModel.RecordValue  = "100"; //假值 目前只有公司燃气存在浓度
                                PushModel.AddressID    = AddressID;
                                var sp = pushBll.AddObj(PushModel, out recordID);
                                if (sp.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                                {
                                    Utility.WriteLog("主报警消息保存成功---------------------zzzz--------");
                                    //添加敬请消息处理记录 设备报警 推送人员记录
                                    var PeopleName = "";
                                    if (People.PeopleList != null && People.PeopleList.Any())
                                    {
                                        PeopleName = string.Join(",", People.PeopleList.Where(f => f != null).Where(f => !string.IsNullOrWhiteSpace(f.FriendName)).Distinct()?.Select(f => f.FriendName).Distinct().ToList());
                                    }
                                    AddPusUserFirst(recordID, deviceType, People.Address, PeopleName, People.UserName);

                                    FireControl_PushProcess FireControl_PushProcessModel = new FireControl_PushProcess();
                                    FireControl_PushProcessModel.CreateTime = DateTime.Now;
                                    FireControl_PushProcessModel.DevID      = buildDevice.DevID;
                                    FireControl_PushProcessModel.DevName    = buildDevice.DevName;
                                    FireControl_PushProcessModel.isPush     = 0;
                                    FireControl_PushProcessModel.PPID       = CommHelper.CreatePKID("pp");
                                    FireControl_PushProcessModel.TitleID    = TitleID;
                                    FireControl_PushProcessBLL proBll = new FireControl_PushProcessBLL();
                                    var proResult = proBll.AddObj(FireControl_PushProcessModel);
                                    if (proResult.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                                    {
                                        Utility.WriteLog("消息保存推送成功---------------------xxxxx--------");
                                    }
                                    else
                                    {
                                        Utility.WriteLog("保存推送失败-----------------------------");
                                    }
                                    //进行推送 推送
                                    // AlarmPush.Send(People, buildDevice.DevName, recordID, buildDevice.DevID);
                                }
                                else
                                {
                                    Utility.WriteLog("消息保存失败---------------------xxxxx--------");
                                }
                                #endregion
                            }
                            else
                            {
                                Utility.WriteLog("未找到该设备对应的人员---------------------zzzz--------");
                            }
                            #region //同步到设备管理api
                            EMModel eMModel = new EMModel();
                            eMModel.deviceNumber     = buildDevice.DevNum;
                            eMModel.deviceTypeNumber = buildDevice.TypeID;
                            if (!string.IsNullOrEmpty(AddressID))
                            {
                                eMModel.unitID = EMApi.GetCommunityIDByADID(AddressID);
                            }
                            eMModel.recordID = string.IsNullOrEmpty(recordID) ? "1111111111111" : recordID;
                            EMApi.SendEM_Alert(eMModel);
                            #endregion
                        }
                        else if (info.Bodydata.AlarmStatus == "02")
                        {
                            Utility.WriteLog("设备消音----********************************--------");
                        }
                        else if (info.Bodydata.AlarmStatus == "04")
                        {
                            var PeopleResult = DevBinBll.GetDevPeople(buildDevice.DevID);
                            if (PeopleResult.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                            {
                                var People = PeopleResult.ResultData;
                                if (string.IsNullOrWhiteSpace(People.AddressID))
                                {
                                    Utility.WriteLog("该设备的地址为空人员为:---------------------------------3--------" + People.UserName + People.Phone);
                                    Utility.WriteLog("正常结束");
                                    return;
                                }
                                AlarmPush.PublicPush("", People.UserName, "1", People.Address, buildDevice.DevName, "设备故障", $"紧急通知!您的{buildDevice.DevName}发生故障告警,地址{People.Address},请尽快处理!", "", People.UserID, "0", "7");
                            }


                            Utility.WriteLog("设备信号异常----********************************--------");
                        }
                        else if (info.Bodydata.AlarmStatus == "05")
                        {
                            Utility.WriteLog("设备自检----********************************--------");
                        }
                        else
                        {
                            //查询该设备是否有未关闭的消息记录
                            //如果存在未关闭的消息 此时 添加关闭消息记录并 修改该消息状态
                            FireControl_WarninsPushBLL pushBll = new FireControl_WarninsPushBLL();
                            var Result = pushBll.SelectNotClose(buildDevice.DevID, "1");
                            if (Result.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ && Result.ResultData != null)
                            {
                                var PushModel = Result.ResultData;
                                if (PushModel == null || string.IsNullOrWhiteSpace(PushModel.TitleID))
                                {
                                    //没有未关闭的消息
                                    //做什么处理后序添加
                                    Utility.WriteLog("设备一直很正常....");
                                }
                                else
                                {
                                    Utility.WriteLog("设备变正常");
                                    //该设备有未关闭和未消音的消息
                                    PushModel.WarIn_Type = 2;                                     //设备消音
                                    pushBll.ModObj(PushModel.TitleID, "设备已正常", "设备报警解除", "0", 2); //该方法内置添加消息处理操作

                                    #region 修改设备状态  同步到设备管理系统
                                    DevStateModel devState = new DevStateModel();
                                    devState.deviceNumber = buildDevice.DevNum;
                                    devState.recordID     = PushModel.TitleID;

                                    FireControl_DeviceTypeBLL _DeviceTypeBLL = new FireControl_DeviceTypeBLL();
                                    REG.N6.IFT.TwpFControl.Model.ResultDis <FireControl_DeviceType> dis = _DeviceTypeBLL.GetObjByDeviceID(buildDevice.DevID);
                                    if (dis.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                                    {
                                        devState.deviceTypeNumber = dis.ResultData.TypeNum;
                                    }

                                    EMApi.SendEM_UpdateDevState(devState);
                                    #endregion
                                }
                            }
                            else
                            {
                                var ResultXYin = pushBll.SelectNotClose(buildDevice.DevID, "3");//消音过得设备
                                if (Result.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                                {
                                    var PushModel = Result.ResultData;
                                    if (PushModel != null && string.IsNullOrWhiteSpace(PushModel.TitleID))
                                    {
                                        //有设备消音记录
                                        Utility.WriteLog("设备变正常");
                                        //该设备有未关闭和未消音的消息
                                        PushModel.WarIn_Type = 2;                                     //设备消音
                                        pushBll.ModObj(PushModel.TitleID, "设备已正常", "设备报警解除", "0", 2); //该方法内置添加消息处理操作
                                        #region 修改设备状态  同步到设备管理系统
                                        DevStateModel devState = new DevStateModel();
                                        devState.deviceNumber = buildDevice.DevNum;
                                        devState.recordID     = PushModel.TitleID;
                                        FireControl_DeviceTypeBLL _DeviceTypeBLL = new FireControl_DeviceTypeBLL();
                                        REG.N6.IFT.TwpFControl.Model.ResultDis <FireControl_DeviceType> dis = _DeviceTypeBLL.GetObjByDeviceID(buildDevice.DevID);
                                        if (dis.ResultCode == REG.N6.IFT.TwpFControl.Model.ResultCode.Succ)
                                        {
                                            devState.deviceTypeNumber = dis.ResultData.TypeNum;
                                        }
                                        EMApi.SendEM_UpdateDevState(devState);
                                        #endregion
                                    }
                                }
                                else
                                {
                                    Utility.WriteLog("无该设备的报警消息");
                                }
                            }

                            Utility.WriteLog("设备正常未报警");
                        }
                    }
                    else
                    {
                        Utility.WriteLog("没有该设备或设备未入库:" + info.IMEI);
                    }
                }
            }
            catch (Exception ex)
            {
                Utility.WriteLog(ex.Message);
                Utility.WriteLog("//////////////////////////异常结束//////////////////////");
            }
            Utility.WriteLog("//////////////////////////正常结束//////////////////////");
        }