예제 #1
0
        public ActionResult Detail(string code)
        {
            //WebsocketService.SendMessage();
            var model = new SmokeDetailModel();

            model.DetectorInfo = SmokeDetectorServices.LoadSmokeDetail(code);
            if (model.DetectorInfo == null ||
                (CurrUser.CompanySysNo > 0 && CurrUser.CompanySysNo != model.DetectorInfo.CompanySysNo))
            {
                model.HasError     = true;
                model.ErrorMessage = "设备信息不存在";
            }
            else
            {
                ClientFilter cFilter = new ClientFilter {
                    SmokeDetectorCode = code, PageIndex = 0, PageSize = int.MaxValue
                };
                if (CurrUser != null && CurrUser.CompanySysNo > 0)
                {
                    cFilter.CompanySysNo = CurrUser.CompanySysNo;
                }
                model.ClientList = ClientService.QueryClientList(cFilter).data;
                //model.LogList = SmokeDetectorServices.QueryDeviceNoticeList(code);
            }
            return(View(model));
        }
예제 #2
0
        public ActionResult QueryDeviceList(int pageIndex, UISmokeDetectorStatus?uiStatus)
        {
            QueryResult <QR_SmokeDetector> list = new QueryResult <QR_SmokeDetector>();

            if (curentUser.UserType == UserType.Installer)
            {
                QF_SmokeDetector filter = new QF_SmokeDetector();
                filter.InstallerSysNo = curentUser.ManagerSysNo.Value;
                filter.Status         = uiStatus;
                filter.PageIndex      = pageIndex;
                filter.PageSize       = 10;
                filter.SortFields     = "status desc,InstalledTime desc";
                list = SmokeDetectorServices.QuerySmokeDetectorList(filter);
            }
            else
            {
                QF_UserDetector filter = new QF_UserDetector();
                filter.PageIndex   = pageIndex;
                filter.PageSize    = 10;
                filter.ClientSysNo = curentUser.UserSysNo;
                filter.Status      = uiStatus;
                list = SmokeDetectorServices.LoadUserSmokeDeletetorList(filter);
            }
            return(PartialView("~/Views/Smoke/_DeviceItem.cshtml", list.data));
        }
예제 #3
0
        public ActionResult AjaxQueryDeviceNoticeInfo()
        {
            QF_SmokeDetectorStatusLog filter = BuildQueryFilterEntity <QF_SmokeDetectorStatusLog>();
            var resul = SmokeDetectorServices.QueryDeviceNoticeList(filter);

            return(AjaxGridJson(resul));
        }
예제 #4
0
        public ActionResult SendEmergencyMessage(string SerID)
        {
            if (string.IsNullOrEmpty(SerID))
            {
                throw new BusinessException("请传入设备Code");
            }
            var smoke = SmokeDetectorServices.LoadSmokeDetail(SerID);

            if (smoke == null || string.IsNullOrEmpty(smoke.AddressCode))
            {
                throw new BusinessException("当前设备还未安装入网");
            }
            DevicesWarningTemplateTemplate devicesWarningTemplate = new DevicesWarningTemplateTemplate
            {
                SerID       = SerID,
                DeviceName  = "烟感器报警",
                Type        = "感应报警",
                WarningTime = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),
                Memo        = $"此设备地址为{smoke.AddressName}",
                // Url = "http://tfs-code2.chinacloudapp.cn/Smoke/Notice",
                MasterID = SerID,
                DateStr  = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),//短信通知时间
                Address  = smoke.AddressName,
            };

            if (smoke.InstallerSysNo.HasValue && smoke.InstallerSysNo < 0)
            {
                devicesWarningTemplate.Address = smoke.Position;
                devicesWarningTemplate.Memo    = smoke.Position;
            }
            SendMessageService.SendMessage(devicesWarningTemplate, SerID);
            return(Json(new AjaxResult {
                Success = true
            }));
        }
예제 #5
0
        public ActionResult AjaxQueryDeviceUserNoticeInfo()
        {
            QF_SmokeDetectorMessage filter = BuildQueryFilterEntity <QF_SmokeDetectorMessage>();

            filter.MasterName = "SmokeDetector";
            var resul = SmokeDetectorServices.QuerySmokeDetectorMessage(filter);

            return(AjaxGridJson(resul));
        }
예제 #6
0
        public ActionResult UpdateSmokeInfo(string code, string newDeviceID, string addressSysNo, string position)
        {
            if (addressSysNo == null)
            {
                throw new BusinessException("位置信息错误,请重新选择后再试。");
            }
            int sysNo = int.Parse(addressSysNo);

            if (sysNo == 0)
            {
                throw new BusinessException("位置信息错误,请重新选择后再试。");
            }
            Address address = AddressService.LoadAddress(sysNo);

            if (address == null)
            {
                throw new BusinessException("位置信息错误,请重新选择后再试。");
            }
            if (string.IsNullOrWhiteSpace(newDeviceID))
            {
                throw new BusinessException("请填写ONENET编号!。");
            }
            SmokeDetector result = SmokeDetectorServices.LoadSmokeDetectorByDeviceID(newDeviceID);

            if (result != null && result.Code != code)
            {
                throw new BusinessException("已存在该ONENET编号!。");
            }
            SmokeDetector smoke = SmokeDetectorServices.IsUniquenessCode(code);

            if (smoke != null)
            {
                //List<Address> addressList = AddressService.LoadSubsetAddressByAddressSysNo(smoke.CompanySysNo, sysNo);
                //if (addressList != null && addressList.Count > 0)
                //{
                //    throw new BusinessException("请选择详细地址!。");
                //}
                smoke.DeviceId    = newDeviceID;
                smoke.AddressCode = address.Code;
                smoke.AddressName = address.PathName;
                smoke.Position    = position;
                SmokeDetectorServices.UpdateSmokeDetector(smoke);
                return(Json(new AjaxResult()
                {
                    Success = true
                }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new AjaxResult()
                {
                    Success = false
                }, JsonRequestBehavior.AllowGet));
            }
        }
예제 #7
0
        public ActionResult ExportSmokeDeviceList(string exportType)
        {
            QF_SmokeDetector filter = JsonConvert.DeserializeObject <QF_SmokeDetector>(this.Request["data"]);

            if (filter.CompanySysNo <= 0)
            {
                if (CurrUser.CompanySysNo > 0)
                {
                    filter.CompanySysNo = CurrUser.CompanySysNo;
                }
            }
            // 1=导出当页,2=导出全部,默认导出当前页
            if (exportType == "2")
            {
                filter.PageIndex = 0;
                filter.PageSize  = 10000;
            }
            QueryResult <QR_SmokeDetector>           result         = SmokeDetectorServices.QuerySmokeDetectorList(filter);
            ExcelFileExporter <QR_SmokeDetector>     exporter       = new ExcelFileExporter <QR_SmokeDetector>();
            List <ColumnSetting <QR_SmokeDetector> > columnSettings = new List <ColumnSetting <QR_SmokeDetector> >();

            columnSettings.Add(new ColumnSetting <QR_SmokeDetector>()
            {
                ColumnName = "设备编号", PropertyName = "Code"
            });
            columnSettings.Add(new ColumnSetting <QR_SmokeDetector>()
            {
                ColumnName = "设备状态", PropertyName = "UIStatusStr"
            });
            columnSettings.Add(new ColumnSetting <QR_SmokeDetector>()
            {
                ColumnName = "位置", PropertyName = "PositionAddress"
            });
            columnSettings.Add(new ColumnSetting <QR_SmokeDetector>()
            {
                ColumnName = "ONENET平台编号", PropertyName = "DeviceID"
            });
            columnSettings.Add(new ColumnSetting <QR_SmokeDetector>()
            {
                ColumnName = "安装人员", PropertyName = "InstallerName"
            });
            columnSettings.Add(new ColumnSetting <QR_SmokeDetector>()
            {
                ColumnName = "绑定客户", PropertyName = "ClientName"
            });
            columnSettings.Add(new ColumnSetting <QR_SmokeDetector>()
            {
                ColumnName = "安装时间", PropertyName = "InDateStr"
            });
            string fileName = exporter.Export(result.data, columnSettings, "烟感设备列表");

            fileName = Url.Content(ExcelFileExporterHelper.GetExportFileUrl(fileName));
            return(Content(fileName));
        }
예제 #8
0
        //public ActionResult InstallSmokedetectorList()
        //{
        //    return View();
        //}
        public JsonResult QueryInstallList()
        {
            QF_SmokeDetector filter = JsonConvert.DeserializeObject <QF_SmokeDetector>(this.Request["data"]);

            filter.InstallerSysNo = curentUser.UserSysNo;// curentUser.UserSysNo;
            filter.PageSize       = 7;
            filter.SortFields     = "InstalledTime desc";
            var result = SmokeDetectorServices.QuerySmokeDetectorList(filter);

            return(Json(new AjaxResult {
                Success = true, Data = result
            }));
        }
예제 #9
0
        public ActionResult DeleteDetector(string code, bool isdelete)
        {
            SmokeDetector detector = SmokeDetectorServices.LoadSmokeDetail(code);

            if (detector == null)
            {
                throw new BusinessException(string.Format("编号为【{0}】的设备不存在", code));
            }

            if (isdelete)
            {
                DeleteDeviceRequest send = new DeleteDeviceRequest()
                {
                    DeviceID = detector.DeviceId
                };
                DeleteDviceResponse sendRes = ONENETService.DeleteDevice(send);
                SmokeDetectorServices.DeleteSmokeDetector(detector, CurrUser);
                SmokeDetectorServices.DeleteClientSmokeDetectorBycode(code);
                return(Json(new AjaxResult()
                {
                    Success = true
                }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                DeleteDeviceRequest send = new DeleteDeviceRequest()
                {
                    DeviceID = detector.DeviceId
                };
                DeleteDviceResponse sendRes = ONENETService.DeleteDevice(send);
                if (sendRes.IsSuccess)
                {
                    //更新本地设备状态
                    SmokeDetectorServices.DeleteSmokeDetector(detector, CurrUser);
                    SmokeDetectorServices.DeleteClientSmokeDetectorBycode(code);
                    return(Json(new AjaxResult()
                    {
                        Success = true
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new AjaxResult()
                    {
                        Success = false, Message = "删除失败,ONENET平台返回消息:" + sendRes.msg
                    }, JsonRequestBehavior.AllowGet));
                }
            }
        }
예제 #10
0
 public ActionResult RelieveDetector(List <string> codes)
 {
     if (codes == null || codes.Count == 0)
     {
         return(Json(new AjaxResult()
         {
             Success = false, Message = "请选择设备!"
         }));
     }
     ;
     SmokeDetectorServices.DeleteClientSmokeDetector(codes, curentUser.UserSysNo);
     return(Json(new AjaxResult()
     {
         Success = true
     }));
 }
예제 #11
0
        public ActionResult DeviceDetails(string code)
        {
            DateTime now = DateTime.Now;
            QF_SmokeDetectorStatusLog filter = new QF_SmokeDetectorStatusLog()
            {
                DeviceCode = code,
                PageIndex  = 0,
                PageSize   = 9999
            };

            QueryResult <SmokeDetectorStatusLog> list = SmokeDetectorServices.QueryDeviceNoticeList(filter);
            SmokeDetector info = SmokeDetectorServices.LoadSmokeDetail(code);

            info.MessageList = list.data;
            ViewBag.UserType = curentUser.UserType;
            return(View(info));
        }
예제 #12
0
        public JsonResult DeleteDetector(string code)
        {
            //if (curentUser.UserType != UserType.Installer)
            //{
            //    throw new BusinessException("您不是安装人员,不能删除当前设备");
            //}
            SmokeDetector detector = SmokeDetectorServices.LoadSmokeDetail(code);

            if (detector == null)
            {
                throw new BusinessException(string.Format("编号为【{0}】的设备不存在", code));
            }
            if (curentUser.UserType == UserType.Installer)
            {
                if (detector.InstallerSysNo != curentUser.ManagerSysNo)
                {
                    throw new BusinessException("您没有安装过当前设备,无权删除");
                }
            }
            else
            {
                if (detector.InstallerSysNo != -curentUser.UserSysNo)
                {
                    throw new BusinessException("您没有安装过当前设备,无权删除");
                }
            }

            DeleteDeviceRequest send = new DeleteDeviceRequest()
            {
                DeviceID = detector.DeviceId
            };
            DeleteDviceResponse sendRes = ONENETService.DeleteDevice(send);
            CurrentUser         current = new CurrentUser
            {
                UserSysNo       = curentUser.UserSysNo,
                UserDisplayName = curentUser.UserDisplayName
            };

            SmokeDetectorServices.DeleteSmokeDetector(detector, current);
            SmokeDetectorServices.DeleteClientSmokeDetectorBycode(code);
            return(Json(new AjaxResult()
            {
                Success = true
            }, JsonRequestBehavior.AllowGet));
        }
예제 #13
0
        public ActionResult DeviceList(UISmokeDetectorStatus?uiStatus)
        {
            ViewBag.status = uiStatus;
            DeviceListModel model = new DeviceListModel();

            if (curentUser.UserType == UserType.Installer)
            {
                QF_SmokeDetector filter = new QF_SmokeDetector();
                filter.InstallerSysNo = curentUser.ManagerSysNo.Value;
                filter.Status         = uiStatus;
                filter.PageIndex      = 0;
                filter.PageSize       = 10;
                filter.SortFields     = "InstalledTime desc";
                var allsmks = SmokeDetectorServices.LoadSmokeDetectorsByInstaller(curentUser.ManagerSysNo.Value).Where(e => e.Status != SmokeDetectorStatus.Delete).ToList();
                model.CountInfo = new SmokeDetectorCount
                {
                    ALLSmokeCount = allsmks.Count,
                    OfflineCount  = (allsmks.Where(e => e.UIStatus == UISmokeDetectorStatus.OffLine) ?? new List <SmokeDetector>()).Count(),
                    OnlineCount   = (allsmks.Where(e => e.UIStatus == UISmokeDetectorStatus.Online) ?? new List <SmokeDetector>()).Count(),
                    LowPowerCount = (allsmks.Where(e => e.UIStatus == UISmokeDetectorStatus.LowPowerWarning) ?? new List <SmokeDetector>()).Count(),
                    WarningCount  = (allsmks.Where(e => e.UIStatus == UISmokeDetectorStatus.FireWarning) ?? new List <SmokeDetector>()).Count(),
                };
                //model.CountInfo.OnlineCount = model.CountInfo.ALLSmokeCount - model.CountInfo.OfflineCount;
                var result = SmokeDetectorServices.QuerySmokeDetectorList(filter);
                model.DeviceList = new QueryResult <QR_SmokeDetector>();
                model.DeviceList = result;
            }
            else
            {
                QF_UserDetector filter = new QF_UserDetector();
                filter.PageIndex   = 0;
                filter.PageSize    = 10;
                filter.Status      = uiStatus;
                filter.ClientSysNo = curentUser.UserSysNo;
                model.CountInfo    = SmokeDetectorServices.LoadUserSmokeDetectorCount(curentUser.UserSysNo);
                QueryResult <QR_SmokeDetector> list = SmokeDetectorServices.LoadUserSmokeDeletetorList(filter);
                model.DeviceList = new QueryResult <QR_SmokeDetector>();
                model.DeviceList = list;
            }
            ViewBag.UserType = curentUser.UserType;
            return(View(model));
        }
예제 #14
0
        public ActionResult ScanDevicesQR(string serID)
        {
            if (string.IsNullOrEmpty(serID))
            {
                throw new BusinessException("读取设备id失败,请重新扫描");
            }
            var ClientSmokeDetectorList = ClientSmokeDetectorProcessor.LoadAllBindClientUser(serID);
            var temp = ClientSmokeDetectorList.Find(e => string.Equals(e.ClientSysNo, curentUser.UserSysNo));

            if (temp != null)
            {
                throw new BusinessException("你已绑定过当前设备");
            }
            if (ClientSmokeDetectorList.Count > 0)
            {
                throw new BusinessException($"设备已经绑定到“{ClientSmokeDetectorList.FirstOrDefault().Name}”,不能再次绑定");
            }
            var smoke = SmokeDetectorServices.LoadSmokeDetail(serID);

            if (smoke == null || smoke.Status == SmokeDetectorStatus.Delete)
            {
                return(Json(new AjaxResult {
                    Success = true, Code = 1, Message = "设备还未安装入网,请添加设备,如果您是公司用户,请绑定管理员!"
                }));
                //throw new BusinessException("设备还未安装入网");
            }

            string addr = smoke.AddressName + smoke.Position;

            if (smoke.InstallerSysNo.HasValue && smoke.InstallerSysNo < 0)
            {
                addr = smoke.Position;
            }
            return(Json(new AjaxResult {
                Success = true, Data = addr
            }));
        }
예제 #15
0
        public ActionResult _Modify(string code)
        {
            SmokeDetector detector = SmokeDetectorServices.LoadSmokeDetail(code) ?? new SmokeDetector();

            return(PartialView("_Modify", detector));
        }
예제 #16
0
        public ActionResult CancelWarning(string code)
        {
            SmokeDetector detector = SmokeDetectorServices.LoadSmokeDetail(code);

            if (detector == null)
            {
                throw new BusinessException(string.Format("编号为【{0}】的设备不存在", code));
            }
            if (detector.Status != SmokeDetectorStatus.Warning && detector.Status != SmokeDetectorStatus.TestWarning)
            {
                throw new BusinessException(string.Format("编号为【{0}】的设备不是报警状态", code));
            }

            if (detector.Status == SmokeDetectorStatus.TestWarning)
            {
                //更新本地设备状态
                SmokeDetectorStatusLog lastLog   = SmokeDetectorServices.LoadSmokeDetectorStatusLogByDeviceCode(detector.Code);
                SmokeDetectorStatusLog statusLog = new SmokeDetectorStatusLog()
                {
                    PreStatus         = detector.Status.Value,
                    Status            = SmokeDetectorStatus.CancelWarning,
                    BeginTime         = DateTimeHelper.GetTimeZoneNow(),
                    ReceivedJsonData  = "",
                    SmokeDetectorCode = detector.Code
                };
                detector.Status = SmokeDetectorStatus.CancelWarning;
                if (lastLog != null && statusLog.BeginTime.HasValue && lastLog.BeginTime.HasValue)
                {
                    statusLog.DurationSeconds = (int)(statusLog.BeginTime.Value - lastLog.BeginTime.Value).TotalSeconds;
                }
                //更新本地设备状态
                SmokeDetectorServices.UpdateSmokeDetector(detector);

                //更新首页数据
                (new MapDataService(detector.CompanySysNo)).DataChangeAsync();

                //写设备状态更改日志
                SmokeDetectorServices.InsertSmokeDetectorStatusLog(statusLog);
                return(Json(new AjaxResult()
                {
                    Success = true
                }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                SendCmdRequest send = new SendCmdRequest()
                {
                    Imei = detector.Code
                };
                SendCmdResponse sendRes = ONENETService.SendCmd(send);
                if (sendRes.IsSuccess)
                {
                    //更新本地设备状态
                    SmokeDetectorStatusLog lastLog   = SmokeDetectorServices.LoadSmokeDetectorStatusLogByDeviceCode(detector.Code);
                    SmokeDetectorStatusLog statusLog = new SmokeDetectorStatusLog()
                    {
                        PreStatus         = detector.Status.Value,
                        Status            = SmokeDetectorStatus.CancelWarning,
                        BeginTime         = DateTimeHelper.GetTimeZoneNow(),
                        ReceivedJsonData  = "",
                        SmokeDetectorCode = detector.Code
                    };
                    detector.Status = SmokeDetectorStatus.CancelWarning;
                    if (lastLog != null && statusLog.BeginTime.HasValue && lastLog.BeginTime.HasValue)
                    {
                        statusLog.DurationSeconds = (int)(statusLog.BeginTime.Value - lastLog.BeginTime.Value).TotalSeconds;
                    }
                    //更新本地设备状态
                    SmokeDetectorServices.UpdateSmokeDetector(detector);

                    //更新首页数据
                    (new MapDataService(detector.CompanySysNo)).DataChangeAsync();

                    //写设备状态更改日志
                    SmokeDetectorServices.InsertSmokeDetectorStatusLog(statusLog);
                    return(Json(new AjaxResult()
                    {
                        Success = true
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new AjaxResult()
                    {
                        Success = false, Message = "取消失败!"
                    }, JsonRequestBehavior.AllowGet));
                }
            }
        }
예제 #17
0
        public ActionResult AddDevices()
        {
            Client             user  = ClientService.LoadClient(curentUser.UserSysNo);
            UIAddDetectorModel model = new UIAddDetectorModel();

            model.CompanyList = new List <Company>();
            model.List        = new List <AddDetectorModel>();
            if (user == null)
            {
                UserMgr.Logout();
                throw new BusinessException("登录超时,请退出公众号重新进入。");
            }
            if (user != null && user.ManagerSysNo > 0 && curentUser.UserType == UserType.Installer)
            {
                //model.CompanyList = AddressService.LoadInstallerCompany(user.ManagerSysNo.GetValueOrDefault());
                SystemUserService service    = new SystemUserService();
                SystemUser        systemuser = service.LoadSystemUser(curentUser.ManagerSysNo.GetValueOrDefault(), ConstValue.ApplicationID);
                if (systemuser != null && systemuser.MasterSysNo > 0)
                {
                    model.CompanyList.Add(new Company()
                    {
                        SysNo = systemuser.MasterSysNo.GetValueOrDefault()
                    });
                }
                SmokeDetector info = SmokeDetectorServices.LoadSmokeDetectorByInstaller(curentUser.ManagerSysNo.GetValueOrDefault());
                if (info != null && !string.IsNullOrWhiteSpace(info.AddressCode))
                {
                    List <Address>          list      = AddressService.LoadAddressByAddressCode(info.AddressCode, info.CompanySysNo);
                    string                  code      = info.AddressCode;
                    List <AddDetectorModel> modelList = new List <AddDetectorModel>();
                    string                  scode     = code;

                    for (var i = code.Length - 2; i >= 2; i = i - 2)
                    {
                        AddDetectorModel item  = new AddDetectorModel();
                        string           ncode = code.Substring(0, i);
                        List <Address>   list1 = list.Where(x => x.Code.StartsWith(ncode) && x.Code.Length == i + 2).ToList();
                        item.ItemList   = list1;
                        item.SelectCode = scode;
                        scode           = ncode;
                        modelList.Add(item);
                        if (ncode.Length == 2)
                        {
                            List <Address> list2 = list.Where(x => x.Code == ncode).ToList();
                            model.FirstAddress = list2[0];
                        }
                    }
                    if (code.Length == 2)
                    {
                        model.FirstAddress = list[0];
                    }

                    modelList.Reverse();
                    model.List          = modelList;
                    model.SelectCompany = info.CompanySysNo;
                }
            }
            else
            {
                string sysNo        = ConfigurationManager.AppSettings["DummyCompanySysNo"];
                int    conpanySysNo = 1;
                int.TryParse(sysNo, out conpanySysNo);
                model.CompanyList.Add(new Company()
                {
                    SysNo = conpanySysNo
                });
            }
            return(View(model));
        }
예제 #18
0
        public ActionResult AddSmokeDetector(SmokeDetector entity)
        {
            long deviceCode = 0;

            long.TryParse(entity.Code, out deviceCode);
            if (deviceCode <= 0)
            {
                return(Json(new AjaxResult()
                {
                    Success = false, Message = "请扫描正确的设备二维码。"
                }));
            }
            //if (curentUser.UserType != UserType.Installer)
            //{
            //    return Json(new AjaxResult() { Success = false, Message = "您不是管理员,请绑定管理员账号。" });
            //}
            //if ((entity.AddressSysNo == null || entity.AddressSysNo <= 0) && (entity.Memo == "" || entity.Memo == null))
            //{
            //    return Json(new AjaxResult() { Success = false, Message = "请选择详细地址或者填写备注。" });
            //}
            if ((!entity.AddressSysNo.HasValue || entity.AddressSysNo <= 0) && string.IsNullOrWhiteSpace(entity.Position))
            {
                return(Json(new AjaxResult()
                {
                    Success = false, Message = "请选择地址或填写设备具体位置。"
                }));
            }
            Address address = AddressDA.LoadAddress(entity.AddressSysNo.GetValueOrDefault());

            if (address == null)
            {
                return(Json(new AjaxResult()
                {
                    Success = false, Message = "位置信息错误,请重新选择后再试。"
                }));
            }

            entity.AddressCode = address.Code;
            entity.AddressName = address.PathName;
            if ((address.ParentSysNo == 0 || address.ParentSysNo == null) && (address.PathName == "" || address.PathName == null))
            {
                entity.AddressName = address.Name;
            }
            entity.Status = SmokeDetectorStatus.Offline;
            if (curentUser.UserType == UserType.Installer)
            {
                entity.InstallerSysNo = curentUser.ManagerSysNo;
            }
            else
            {
                entity.InstallerSysNo = -curentUser.UserSysNo;
            }

            entity.InstallerName = HttpUtility.UrlDecode(curentUser.UserID);
            entity.InUserSysNo   = curentUser.UserSysNo;
            entity.InUserName    = HttpUtility.UrlDecode(curentUser.UserID);
            SmokeDetector     smoke      = SmokeDetectorServices.IsUniquenessCode(entity.Code);
            SystemUserService service    = new SystemUserService();
            SystemUser        systemuser = service.LoadSystemUser(curentUser.ManagerSysNo.GetValueOrDefault(), ConstValue.ApplicationID);

            if (systemuser == null)
            {
                UserMgr.Logout();
                return(Json(new AjaxResult()
                {
                    Success = false, Message = "登录超时,请退出公众号重新进入。"
                }));
            }
            //if (smoke != null && smoke.CompanySysNo != systemuser.MasterSysNo)
            //{
            //    return Json(new AjaxResult() { Success = false, Message = "设备已安装,不能再安装。" });
            //}
            //else
            if (smoke != null)
            {
                if (smoke.Status == SmokeDetectorStatus.Delete)
                {
                    entity.Status = SmokeDetectorStatus.Offline;
                }
                else
                {
                    entity.Status = smoke.Status;
                    if (smoke.InstallerSysNo <= 0)
                    {
                        if (smoke.InstallerSysNo != -curentUser.UserSysNo)
                        {
                            return(Json(new AjaxResult()
                            {
                                Success = false, Message = "设备已安装,不能再安装。"
                            }));
                        }
                    }
                    else
                    {
                        if (!(smoke.CompanySysNo == systemuser.MasterSysNo && curentUser.UserType == UserType.Installer))
                        {
                            return(Json(new AjaxResult()
                            {
                                Success = false, Message = "设备已安装,不能再安装。"
                            }));
                        }
                    }
                };
                CreateDeviceRequest reques = new CreateDeviceRequest()
                {
                    IMei     = entity.Code,
                    IMsi     = entity.Code,
                    Desc     = "测试设备",
                    IsOnLine = 1,
                    Observe  = 1,
                    Protocol = "LWM2M",
                    Title    = entity.Code,
                    Tags     = entity.Code + "," + entity.Code
                };
                CreateDeviceResponse result = ONENETService.CreateDevice(reques);
                if (result.IsSuccess)
                {
                    entity.DeviceId = result.DeviceId;
                }
                else
                {
                    entity.DeviceId = smoke.DeviceId;
                }

                entity.SysNo = smoke.SysNo;
                SmokeDetectorServices.UpdateSmokeDetector(entity);
                if (curentUser.UserType != UserType.Installer)
                {
                    Logger.WriteLog("Code:" + entity.Code);
                    BindingDevicesApi(entity.Code);
                }
                return(Json(new AjaxResult()
                {
                    Success = true, Message = "修改成功!"
                }));
                //}
                //else
                //{
                //    return Json(new AjaxResult() { Success = false, Message = "系统异常!" });
                //}
            }
            else
            {
                CreateDeviceRequest reques = new CreateDeviceRequest()
                {
                    IMei     = entity.Code,
                    IMsi     = entity.Code,
                    Desc     = "测试设备",
                    IsOnLine = 1,
                    Observe  = 1,
                    Protocol = "LWM2M",
                    Title    = entity.Code,
                    Tags     = entity.Code + "," + entity.Code
                };
                CreateDeviceResponse result = ONENETService.CreateDevice(reques);
                if (result.IsSuccess)
                {
                    entity.DeviceId = result.DeviceId;
                }
                int i = SmokeDetectorServices.InsertSmokeDetector(entity);
                SmokeDetectorStatusLog statusLog = new SmokeDetectorStatusLog()
                {
                    Status            = entity.Status,
                    BeginTime         = DateTimeHelper.GetTimeZoneNow(),
                    ReceivedJsonData  = "",
                    SmokeDetectorCode = entity.Code
                };
                if (curentUser.UserType != UserType.Installer)
                {
                    Logger.WriteLog("Code:" + entity.Code);
                    BindingDevicesApi(entity.Code);
                }

                return(Json(new AjaxResult()
                {
                    Success = true, Message = "添加成功!"
                }));
            }
        }
예제 #19
0
        public ActionResult QuerySmoke()
        {
            //CreateDeviceRequest request = new CreateDeviceRequest()
            //{
            //    Desc = "创建测试设备描述",
            //    IMei = "1354789845",
            //    IMsi = "1354789845",
            //    IsOnLine = 1,
            //    LocationEle = 0,
            //    LocationLat = 0,
            //    LocationLon = 0,
            //    Observe = 1,
            //    Protocol = "LWM2M",
            //    Tags = "1354789845,147890123331",
            //    Title = "创建测试设备名称"
            //};

            //CreateDeviceResponse create = ONENETService.CreateDevice(request);
            //if (create != null && !string.IsNullOrEmpty(create.DeviceId) && create.IsSuccess)
            //{
            //    UpdateDeviceRequest upRequest = new UpdateDeviceRequest()
            //    {
            //        Desc = "更新测试设备描述",
            //        IMei = "1364789845",
            //        IMsi = "1364789845",
            //        IsOnLine = 1,
            //        LocationEle = 1,
            //        LocationLat = 2,
            //        LocationLon = 3,
            //        Observe = 1,
            //        Protocol = "LWM2M",
            //        Tags = "1364789845,1364789845",
            //        Title = "更新测试设备名称",
            //        DeviceID = create.DeviceId
            //    };
            //    UpdateDeviceResponse upResponse = ONENETService.UpdateDevice(upRequest);
            //    if (upResponse != null && !string.IsNullOrEmpty(upResponse.DeviceId) && upResponse.IsSuccess)
            //    {
            //        SendCmdRequest send = new SendCmdRequest()
            //        {
            //            StrCmd = "008013870005013D58FF",
            //            DeviceID = create.DeviceId
            //        };
            //        SendCmdResponse sendRes = ONENETService.SendCmd(send);
            //        if (sendRes != null && !string.IsNullOrEmpty(sendRes.DeviceId) && sendRes.IsSuccess)
            //        {
            //            DeleteDeviceRequest delete = new DeleteDeviceRequest()
            //            {
            //                DeviceID = sendRes.DeviceId
            //            };
            //            DeleteDviceResponse deleteRes = ONENETService.DeleteDevice(delete);

            //        }
            //    }
            //}

            QF_SmokeDetector filter = BuildQueryFilterEntity <QF_SmokeDetector>();

            if (CurrUser.CompanySysNo > 0)
            {
                filter.CompanySysNo = CurrUser.CompanySysNo;
            }
            var result = SmokeDetectorServices.QuerySmokeDetectorList(filter);

            return(AjaxGridJson(result));
        }
예제 #20
0
        public ActionResult BindingDevicesApi(string serID)
        {
            if (string.IsNullOrEmpty(serID))
            {
                throw new BusinessException("读取设备id失败,请重新扫描");
            }
            var user = ClientService.LoadClient(curentUser.UserSysNo);

            if (user == null)
            {
                UserMgr.Logout();
                throw new BusinessException("登录信息已过期,请退出重新进入公众号");
            }
            var ClientSmokeDetectorList = ClientSmokeDetectorProcessor.LoadAllBindClientUser(serID);

            var temp = ClientSmokeDetectorList.Find(e => string.Equals(e.ClientSysNo, curentUser.UserSysNo));

            if (temp != null)
            {
                throw new BusinessException("你已绑定过当前设备");
            }
            if (ClientSmokeDetectorList.Count > 0)
            {
                throw new BusinessException($"设备已经绑定到“{ClientSmokeDetectorList.FirstOrDefault().Name}”,不能再次绑定");
            }
            var smoke = SmokeDetectorServices.LoadSmokeDetail(serID);

            if (smoke == null || string.IsNullOrEmpty(smoke.AddressCode) || smoke.Status == SmokeDetectorStatus.Delete)
            {
                return(Json(new AjaxResult {
                    Success = true, Code = 1, Message = "设备还未安装入网,请添加设备,如果您是公司用户,请绑定管理员!"
                }));
                // throw new BusinessException("设备还未安装入网");
            }
            if (user != null)
            {
                ClientSmokeDetector clientSmokeDetector = new ClientSmokeDetector
                {
                    ClientSysNo        = user.SysNo,
                    SmokeDetectorCode  = serID,
                    IsDefaultCellPhone = true,
                    CellPhone          = user.CellPhone,
                    CellPhone2         = user.CellPhone2,
                    CellPhone3         = user.CellPhone3
                };
                ClientSmokeDetectorProcessor.InsertClientSmokeDetector(clientSmokeDetector);
                List <MessageCenter.Entity.ReceiverInfo> receivers = new List <MessageCenter.Entity.ReceiverInfo>
                {
                    new MessageCenter.Entity.ReceiverInfo
                    {
                        ReceiverNo = user.AppCustomerID,
                        MsgType    = MessageCenter.Entity.MsgType.WeiXin
                    }
                };
                var cellphone = clientSmokeDetector.CellPhone ?? clientSmokeDetector.CellPhone2 ?? clientSmokeDetector.CellPhone3 ?? null;
                if (!string.IsNullOrEmpty(cellphone))
                {
                    receivers.Add(new MessageCenter.Entity.ReceiverInfo
                    {
                        ReceiverNo = cellphone,
                        MsgType    = MessageCenter.Entity.MsgType.SMS
                    });
                }
                Task.Factory.StartNew(() =>
                {
                    WechatUserBindDevicesTemplate wechatUserBind = new WechatUserBindDevicesTemplate
                    {
                        Title       = $"尊敬的{HttpUtility.UrlDecode(curentUser.UserID)}用户",
                        SerID       = serID,
                        BindResult  = "绑定成功",
                        BindTimeStr = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),
                        Memo        = $"此设备地址为{smoke.AddressName}",
                        //  Url = $"http://tfs-code2.chinacloudapp.cn//Smoke/Notice?code= {serID}",
                        MasterID = serID,
                        DateStr  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),//短信通知时间
                        Address  = smoke.AddressName,
                    };

                    if (smoke.InstallerSysNo.HasValue && smoke.InstallerSysNo < 0)
                    {
                        wechatUserBind.Address = smoke.Position;
                        wechatUserBind.Memo    = smoke.Position;
                    }

                    SendMessageService.SendMessageOnce(wechatUserBind, receivers);
                });
            }
            return(Json(new AjaxResult {
                Success = true
            }));
        }
예제 #21
0
        public ActionResult SmokeList(int sysno)
        {
            var list = SmokeDetectorServices.LoadSmokeDetectorsByClientSysNo(sysno);

            return(PartialView("~/views/client/_smokeList.cshtml", list));
        }
        public HttpResponseMessage SyncDeviceStatus()
        {
            Stream reqstream = HttpContext.Current.Request.InputStream;

            reqstream.Seek(0, System.IO.SeekOrigin.Begin);
            string body = new StreamReader(reqstream).ReadToEnd();

            Logger.WriteLog("API接收数据:" + body);
            List <SyncDeviceStatusRequest> list     = JsonConvert.DeserializeObject <List <SyncDeviceStatusRequest> >(body);
            SyncDeviceStatusResponse       response = new SyncDeviceStatusResponse();

            if (list == null || list.Count <= 0)
            {
                response.IsSuccess = false;
                response.Message   = "参数错误。";
            }
            else
            {
                SyncDeviceStatusRequest request = null;
                foreach (var item in list)
                {
                    if (SMOKE_STATUS_CODE.Contains(item.Status))
                    {
                        request = item;
                        break;
                    }
                }
                if (request == null)
                {
                    response.IsSuccess = false;
                    response.Message   = "参数错误。";
                }
                else
                {
                    SmokeDetector detecor = SmokeDetectorServices.LoadSmokeDetailByDeviceID(request.DeviceID);

                    if (detecor == null)
                    {
                        response.Message = "设备不存在。";
                    }
                    else
                    {
                        SmokeDetectorStatus status = MatchDeviceStatus(request.Status);
                        if (detecor.Status != status)//两次设备状态不一致
                        {
                            SmokeDetectorStatusLog lastLog = SmokeDetectorServices.LoadSmokeDetectorStatusLogByDeviceCode(detecor.Code);

                            #region  更新设备状态,写状态变更日志
                            DateTime dt;
                            DateTime.TryParse(request.CDatetime, out dt);
                            SmokeDetectorStatusLog statusLog = new SmokeDetectorStatusLog()
                            {
                                PreStatus         = detecor.Status.Value,
                                Status            = status,
                                BeginTime         = dt == DateTime.MinValue ? DateTimeHelper.GetTimeZoneNow() : dt,
                                ReceivedJsonData  = body,
                                SmokeDetectorCode = detecor.Code
                            };
                            detecor.Status = status;
                            if (lastLog != null && statusLog.BeginTime.HasValue && lastLog.BeginTime.HasValue)
                            {
                                statusLog.DurationSeconds = (int)(statusLog.BeginTime.Value - lastLog.BeginTime.Value).TotalSeconds;
                            }
                            using (var trans = TransactionManager.Create())
                            {
                                SmokeDetectorServices.InsertSmokeDetectorStatusLog(statusLog);
                                SmokeDetectorServices.UpdateSmokeDetector(detecor);
                                trans.Complete();
                            }
                            #endregion

                            #region 更新首页地图数据缓存

                            (new MapDataService(detecor.CompanySysNo)).DataChangeAsync();

                            #endregion

                            #region 发送消息

                            if (detecor.Status == SmokeDetectorStatus.Warning ||
                                detecor.Status == SmokeDetectorStatus.TestWarning)
                            {
                                Task.Factory.StartNew(() =>//火灾报警
                                {
                                    DevicesWarningTemplateTemplate devicesWarningTemplate = new DevicesWarningTemplateTemplate
                                    {
                                        SerID       = detecor.Code,
                                        DeviceName  = "烟感设备报警",
                                        Type        = "火灾报警",
                                        WarningTime = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),
                                        Memo        = $"此设备地址为{detecor.AddressName}",
                                        MasterID    = detecor.Code,
                                        DateStr     = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),//短信通知时间
                                        Address     = detecor.AddressName
                                    };
                                    if (detecor.InstallerSysNo.HasValue && detecor.InstallerSysNo < 0)
                                    {
                                        devicesWarningTemplate.Address = detecor.Position;
                                        devicesWarningTemplate.Memo    = detecor.Position;
                                    }
                                    SendMessageService.SendMessage(devicesWarningTemplate, detecor.Code);
                                });
                            }
                            else if (detecor.Status == SmokeDetectorStatus.Lost ||
                                     detecor.Status == SmokeDetectorStatus.Offline ||
                                     detecor.Status == SmokeDetectorStatus.OutNet)
                            {
                                Task.Factory.StartNew(() =>//离线报警
                                {
                                    DevicesOfflineTemplateTemplate devicesOfflintTemplate = new DevicesOfflineTemplateTemplate
                                    {
                                        SerID          = detecor.Code,
                                        DeviceName     = "烟感设备离线",
                                        DeviceAddress  = $"此设备地址为{detecor.AddressName}",
                                        OffLineTimeStr = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),
                                        Memo           = "请尽快处理!",
                                        MasterID       = detecor.Code,
                                        DateStr        = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),//短信通知时间
                                        Address        = detecor.AddressName
                                    };
                                    if (detecor.InstallerSysNo.HasValue && detecor.InstallerSysNo < 0)
                                    {
                                        devicesOfflintTemplate.Address = detecor.Position;
                                        devicesOfflintTemplate.Memo    = detecor.Position;
                                    }
                                    SendMessageService.SendMessage(devicesOfflintTemplate, detecor.Code);
                                });
                            }
                            else if (detecor.Status == SmokeDetectorStatus.LowPower)
                            {
                                Task.Factory.StartNew(() =>//低电压报警
                                {
                                    DevicesWarningTemplateTemplate devicesWarningTemplate = new DevicesWarningTemplateTemplate
                                    {
                                        SerID       = detecor.Code,
                                        DeviceName  = "烟感设备电量过低",
                                        Type        = "低电量报警",
                                        WarningTime = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),
                                        Memo        = $"此设备地址为{detecor.AddressName}",
                                        MasterID    = detecor.Code,
                                        DateStr     = DateTimeHelper.GetTimeZoneNow().ToString("yyyy-MM-dd HH:mm:ss"),//短信通知时间
                                        Address     = detecor.AddressName
                                    };
                                    if (detecor.InstallerSysNo.HasValue && detecor.InstallerSysNo < 0)
                                    {
                                        devicesWarningTemplate.Address = detecor.Position;
                                        devicesWarningTemplate.Memo    = detecor.Position;
                                    }
                                    SendMessageService.SendMessage(devicesWarningTemplate, detecor.Code);
                                });
                            }
                            #endregion
                        }
                        response.IsSuccess = true;
                    }
                }
            }
            string result = JsonConvert.SerializeObject(response);
            return(new HttpResponseMessage()
            {
                Content = new StringContent(result, Encoding.UTF8, "application/json")
            });
        }