/// <summary> /// 15,对外接口:修改用户信息 /// </summary> /// <param name="id"></param> /// <param name="username"></param> /// <param name="usersex"></param> /// <param name="userjob"></param> /// <param name="lockMacid"></param> /// <returns></returns> public string ModifyUserInfo(string newname, string username, string usersex, string userjob) { string msg = string.Empty; RedvelopRecord.GetInstance().RegeditUser(out msg, newname, username, usersex, userjob); return(msg); }
/// <summary> /// 16,对外接口:删除指定的门锁 /// </summary> /// <param name="macid"></param> /// <returns></returns> public string DeletUserSetting(string name) { string msg = string.Empty; RedvelopRecord.GetInstance().DeletUserInfoSetting(out msg, name); return(msg); }
/// <summary> /// 13,对外接口:删除指定的门锁 /// </summary> /// <param name="macid"></param> /// <returns></returns> public string DeletLockSetting(string macid) { string msg = string.Empty; RedvelopRecord.GetInstance().DeletlockSetting(out msg, macid); return(msg); }
/// <summary> /// 15,对外接口:设置用户信息 /// </summary> /// <param name="id"></param> /// <param name="username"></param> /// <param name="usersex"></param> /// <param name="userjob"></param> /// <param name="lockMacid"></param> /// <returns></returns> public string RegeditUserInfo(string id, string username, string usersex, string userjob, string lockMacid) { string msg = string.Empty; RedvelopRecord.GetInstance().RegeditUser(out msg, id, username, usersex, userjob, lockMacid); return(msg); }
/// <summary> /// 12,对外接口:设置门锁的信息 /// </summary> /// <param name="macid"></param> /// <param name="modifyname"></param> /// <returns></returns> public string RegeditLockSetting(string macid, string modifyname) { RedvelopRecord.GetInstance().DeletSettingFile(macid); string msg = string.Empty; RedvelopRecord.GetInstance().Regedit2DoorSetting(out msg, macid, modifyname); return(msg); }
/// <summary> /// 删除指定的配置文件 /// </summary> /// <param name="userid"></param> /// <returns></returns> public string DeletLocalSettingType(string userid, string opentype) { if (EventClass.GetInstance()._ConnectBleAddress == "") { MessageBox.Show("尚未连接蓝牙门锁", "系统提示"); return("Error"); } string msg = string.Empty; RedvelopRecord.GetInstance().DeletLocalSettingType(out msg, userid, opentype); return(msg); }
/// <summary> /// 获取开锁方式设置信息 /// </summary> /// <returns></returns> public string GetLockSettingType() { string msg = string.Empty; List <lockSettingType> objlist = RedvelopRecord.GetInstance().lockSettingTypeList(out msg); if (msg != "") { return(""); } string json = JsonConvert.SerializeObject(objlist); return(json); }
/// <summary> /// 14,对外接口:获取用户信息列表 /// </summary> /// <returns></returns> public string GetUserInfo() { string msg = string.Empty; List <userDetails> objlist = RedvelopRecord.GetInstance().getuserDetails(out msg); if (msg != "") { return(""); } string json = JsonConvert.SerializeObject(objlist); return(json); }
/// <summary> /// 删除指定报警记录对象行数 /// </summary> /// <param name="row"></param> /// <returns></returns> public object DelWarningObject(string row) { string msg = string.Empty; RedvelopRecord.GetInstance().DelWarningLog(out msg, row); object obj = new { Status = msg }; string json = JsonConvert.SerializeObject(obj); return(json); }
/// <summary> /// 外部测试数据,模拟开锁数据 /// </summary> /// <param name="id"></param> /// <param name="inData"></param> public void SimDateInTest(string simMac, string id, string inData) { EventClass.GetInstance()._ConnectBleAddress = simMac; RecordDetail recordDetail = new RecordDetail() { _opendatetime = DateTime.Parse(inData.Split(',')[0]).ToString("yyyy/MM/dd HH:mm:ss"), _userOpenType = inData.Split(',')[1] }; string msg = string.Empty; RedvelopRecord.GetInstance().WriteData(out msg, id.ToString(), recordDetail, null, "record"); }
/// <summary> /// 新增开锁方式设置信息配置文件 /// </summary> /// <param name="userid"></param> /// <param name="openlocktype"></param> /// <param name="morningTime"></param> /// <param name="afternoonTime"></param> /// <param name="openlimit"></param> /// <param name="timetype"></param> /// <param name="opentimes"></param> /// <returns></returns> public string RegeditDoorLockType(string loackmac, string userid, string openlocktype, string username, string opentime, string openlimit, string timetype, string opentimes) { int iopenlimit = 0; if (!Int32.TryParse(openlimit, out iopenlimit)) { return("参数openlimit不是标准Int类型数据"); } int iopentimes = 0; if (!Int32.TryParse(opentimes, out iopentimes)) { return("参数iopentimes不是标准Int类型数据"); } if (string.IsNullOrEmpty(openlocktype)) { return("开门类型不能为空"); } if (string.IsNullOrEmpty(loackmac)) { return("门锁MAC不能为空"); } if (string.IsNullOrEmpty(username)) { return("用户姓名不能为空"); } if (string.IsNullOrEmpty(userid)) { return("ID不能为空"); } string msg = string.Empty; RedvelopRecord.GetInstance().RegeditDoorLockType(out msg, loackmac, userid, openlocktype, username, opentime, iopenlimit, timetype, iopentimes); return(msg); }
/// <summary> /// 模拟设置开锁方式 /// </summary> public void SimSettingType(string id, string locktype) { string msg = string.Empty; RedvelopRecord.GetInstance().InitDoorLockType(out msg, id.ToString(), locktype); }
/// <summary> /// 报警对象数据 /// </summary> /// <param name="page"></param> /// <param name="counts"></param> /// <returns></returns> public string GetWarningObject(string page, string counts) { RecordGolable goableData = new RecordGolable(); List <WarningRecordDetails> tempList = new List <WarningRecordDetails>(); goableData = RedvelopRecord.GetInstance().ReadDataToMemory("warning"); int iPage = Int32.Parse(page); int iCounts = Int32.Parse(counts); try { int totalcounts = goableData._warningRecordList.Count; int totalpages = 0; if (totalcounts % Int32.Parse(counts) > 0) { totalpages = totalcounts / Int32.Parse(counts) + 1; } else { totalpages = totalcounts / Int32.Parse(counts); } if (Int32.Parse(page) > totalpages) { //MessageBox.Show("当前输入页数大于总页数", "系统提示"); return("[]"); } for (int i = 0; i < iCounts; i++) { if (((iPage - 1) * iCounts + i) == totalcounts) { break; } if (goableData._warningRecordList[(iPage - 1) * iCounts + i]._warningdatetime != "") { tempList.Add(goableData._warningRecordList[(iPage - 1) * iCounts + i]); } else { break; } RecordLog.GetInstance().WriteLog(Level.Info, string.Format("报警分页返回数据完成,page:[{0}],count:[{1}]", iPage, (iPage - 1) * iCounts + i + 1)); } object obj = new { totalcounts = totalcounts, pagedata = tempList }; string json = JsonConvert.SerializeObject(obj); //string json = JsonConvert.SerializeObject(goableData._recordlogsdatadetailsList); return(json); } catch (Exception ex) { RecordLog.GetInstance().WriteLog(Level.Info, "分页时异常:" + ex.Message); return(""); } }
/// <summary> /// 3,对外接口:连接BLE设备 /// </summary> /// <param name="MacAddress"></param> /// <returns></returns> public string ConnectDevice(string MacAddress) { RecordLog.GetInstance().WriteLog(Level.Info, string.Format("开始配对蓝牙地址,Mac:{0}", MacAddress)); LicenseHelper licenseHelper = new LicenseHelper(); if (!licenseHelper.IsHaveListenersFile()) { MessageBox.Show("授权文件不存在,请联系系统管理员", "系统提示"); return("Error"); } List <string> CheckData = licenseHelper.ReturnCheckData(); if (CheckData.Count == 0) { MessageBox.Show("授权文件信息不存在,请联系系统管理员", "系统提示"); return("Error"); } string name = string.Empty; string mac = string.Empty; string outCheckValue = string.Empty; //连接地址的时候判断授权文件 foreach (var s in EventClass.GetInstance()._dicdeviceAddress) { if (s.Value.ToString().Equals(MacAddress)) { bool res = licenseHelper.EncrptyData(s.Key.ToString(), s.Value.ToString(), out outCheckValue); if (res == true) { bool res2 = licenseHelper.CheckLockDecValue(outCheckValue, CheckData); if (res2 == true) { RecordLog.GetInstance().WriteLog(Level.Info, "开始连接设备: " + MacAddress.ToString()); EventClass.GetInstance()._ConnectBleAddress = MacAddress; //EventClass.GetInstance()._eventDelegate.OnHandlerConnect(); //return "Success"; string msg = string.Empty; List <lockDetail> objlist = RedvelopRecord.GetInstance().GetlockSetting(out msg); if (objlist == null) { MessageBox.Show("系统尚未配置门锁文件", "系统提示"); return("Error"); } foreach (lockDetail lockDetail in objlist) { if (lockDetail._id.Equals(EventClass.GetInstance()._ConnectBleAddress)) { OpenAppDo.GetInstance().ModifyLockTime(lockDetail._modifyName, lockDetail._id, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //OpenAppDo.GetInstance().AddLockMap(lockDetail._modifyName, lockDetail._id, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } } EventClass.GetInstance()._client.Address = Convert.ToInt64(MacAddress, 16); wclBluetoothRadio radio = EventClass.GetInstance()._devices[MacAddress]; if (EventClass.GetInstance()._client.Connect(radio) != 0) { RecordLog.GetInstance().WriteLog(Level.Info, "设备连接失败"); MessageBox.Show("设备连接失败", "提示"); return("Error"); } RecordLog.GetInstance().WriteLog(Level.Info, "设备连接成功"); EventClass.GetInstance()._dicdeviceAddress.Clear(); return("Success"); } else { MessageBox.Show(string.Format("{0}门锁未授权,请联系系统管理员", s.Key.ToString()), "系统提示"); return("Error"); } } else { MessageBox.Show(string.Format("处理授权文件失败,请联系系统管理员"), "系统提示"); return("Error"); } } } MessageBox.Show("未找到适配的蓝牙设备", "系统提示"); return("Error"); }
/// <summary> /// 2,对外接口:查看已经搜索到的所有BLE设备 /// </summary> /// <returns></returns> public string ViewDevice() { List <outParam> outdata = new List <outParam>(); //string outParam = string.Empty; if (EventClass.GetInstance()._processFlags == 1) { RecordLog.GetInstance().WriteLog(Level.Info, "查找结束"); } if (EventClass.GetInstance()._deviceAddress.Count <= 0) { return(""); } RecordDeviceInfo.GetInstance().DeletDeviceInfoFile(); string lastmac = string.Empty; string lastTemp = string.Empty; int status = 0; int ret = OpenAppDo.GetInstance().judelkconnect(out status); if (ret == 0) { if (status != 0) { RecordLog.GetInstance().WriteLog(Level.Info, "发现已经存在蓝牙信息"); List <string> outStrList = EventClass.GetInstance().knowsLock; foreach (string splitparam in EventClass.GetInstance()._deviceAddress) { foreach (string lockInfo in outStrList) { if (lockInfo.Split(',')[1].ToString().Equals(splitparam.Split('|')[1].ToString())) { //mac相同才会显示 outParam temp = new outParam() { Name = lockInfo.Split(',')[0].ToString(), Mac = lockInfo.Split(',')[1].ToString(), SetTime = lockInfo.Split(',')[2].ToString(), }; outdata.Add(temp); if (lastmac == lockInfo.Split(',')[1].ToString()) { continue; } lastmac = temp.Mac; //判断上次地址和当前地址是否一致 EventClass.GetInstance()._dicdeviceAddress.Add(splitparam.Split('|')[0].ToString(), splitparam.Split('|')[1].ToString()); RecordDeviceInfo.GetInstance().WriteLocalInfo(splitparam.Split('|')[0].ToString(), splitparam.Split('|')[1].ToString(), FingerPrint.Value().ToString()); } } } EventClass.GetInstance().knowsLock.Clear(); } else { foreach (string splitparam in EventClass.GetInstance()._deviceAddress) { //记录本次地址 start string msg = string.Empty; if (lastTemp != splitparam.Split('|')[1].ToString()) { RedvelopRecord.GetInstance().RegeditDoorSetting(out msg, splitparam.Split('|')[1].ToString()); lastTemp = splitparam.Split('|')[1].ToString(); } //记录本次地址 end EventClass.GetInstance()._dicdeviceAddress.Add(splitparam.Split('|')[0].ToString(), splitparam.Split('|')[1].ToString()); RecordDeviceInfo.GetInstance().WriteLocalInfo(splitparam.Split('|')[0].ToString(), splitparam.Split('|')[1].ToString(), FingerPrint.Value().ToString()); outParam temp = new outParam() { Name = "", Mac = splitparam.Split('|')[1].ToString(), SetTime = "", }; outdata.Add(temp); } } } //[{"Name":"前门","Mac":"0CAE7DAB5F72","SetTime":"2018-10-16 03:00:45"}] string json = JsonConvert.SerializeObject(outdata); return(json); }
/// <summary> /// 全盘分析 /// </summary> /// <param name="msg"></param> /// <param name="dt"></param> /// <param name="lockname"></param> /// <param name="starttime"></param> /// <param name="endtime"></param> /// <returns></returns> public RecordGolable totalAnalysis(out string msg, DataTable dt, string lockname, string starttime, string endtime) { RecordGolable recordGolable = new RecordGolable(); List <userinfoAnalysis> userinfolist = new List <userinfoAnalysis>(); msg = string.Empty; string _and = " and "; int _yeat = DateTime.Parse(endtime).Year; int _startMonth = DateTime.Parse(starttime).Month; int _endMonth = DateTime.Parse(endtime).Month; try { //所有用户正常次数总和 int normal = 0; //所有用户异常次数总和 int exception = 0; //所有用户次数总和 int total = 0; //读取用户信息 List <userDetails> userDetails = RedvelopRecord.GetInstance().getuserDetails(out msg); if (msg != "") { return(recordGolable); } foreach (userDetails userinfo in userDetails) { List <analysisdata> analysisdataslist = new List <analysisdata>(); if (userinfo._useName == "") { continue; } string username = userinfo._useName; //该用户所有正常次数 int allnormaltimes = 0; //该用户所有异常次数 int allexceptiontimes = 0; //该用户所有次数 int alltotaltimes = 0; //该用户异常次数情况占比(与所有总异常次数比) string abnormaloccupancyrate = string.Empty; //时间节点 for (int m = 1; m <= (_endMonth - _startMonth) + 1; m++) { AnalysisData analysisData = new AnalysisData(); //门锁名称 string sqlstr = string.Empty; if (string.IsNullOrEmpty(lockname)) { MessageBox.Show("未选择门锁", "提示"); msg = "未选择门锁"; return(null); } if (string.IsNullOrEmpty(starttime) || string.IsNullOrEmpty(endtime)) { MessageBox.Show("时间段选择不正确", "提示"); msg = "时间段选择不正确"; return(null); } if (!string.IsNullOrEmpty(lockname)) { sqlstr += "lockmodifyname like '%" + lockname + "%' "; } sqlstr += _and; if (!string.IsNullOrEmpty(starttime) && !string.IsNullOrEmpty(endtime)) { sqlstr += "openlocktime > '" + DateTime.Parse(_yeat + "-" + (_startMonth + m - 1).ToString()) + "' " + _and + " openlocktime < '" + DateTime.Parse(_yeat + "-" + (_startMonth + m).ToString()) + "' "; if (!string.IsNullOrEmpty(username)) { sqlstr += _and; } } if (!string.IsNullOrEmpty(username)) { sqlstr += "username = '******' "; } RecordLog.GetInstance().WriteLog(Level.Info, string.Format("执行sql简化语句:{0}", sqlstr)); DataRow[] drs = dt.Select(sqlstr); analysisdata analysisdata = new analysisdata(); if (drs.Count() != 0) { //开门总次数 int totaltimes = drs.Count(); //异常总次数 int exceptiontimes = 0; foreach (DataRow dw in drs) { if ("异常" == dw[13].ToString()) { exceptiontimes++; } } //正常总次数 int normaltimes = totaltimes - exceptiontimes; //异常率 double ayt = (double)0; if ((double)exception == 0) { ayt = (double)0; } else { ayt = (double)exceptiontimes / (double)totaltimes; } decimal outtemp = Math.Round(Convert.ToDecimal(ayt), 2, MidpointRounding.AwayFromZero); string abnormalityrate = ((int)(outtemp * 100)).ToString() + "%"; analysisdata = new analysisdata { normaltimes = normaltimes, exceptiontimes = exceptiontimes, totaltimes = totaltimes, abnormalityrate = abnormalityrate, }; allnormaltimes += normaltimes; allexceptiontimes += exceptiontimes; alltotaltimes += totaltimes; } analysisdata.month = _startMonth + m - 1; analysisdataslist.Add(analysisdata); } normal += allnormaltimes; exception += allexceptiontimes; total += alltotaltimes; userinfolist.Add(new userinfoAnalysis { name = username, analysisdata = analysisdataslist, allnormaltimes = allnormaltimes, allexceptiontimes = allexceptiontimes, alltotaltimes = alltotaltimes }); } recordGolable._analysisData.normal = normal; recordGolable._analysisData.exception = exception; recordGolable._analysisData.total = total; string abnormaloccupancyrateTmp = string.Empty; foreach (userDetails userinfo in userDetails) { foreach (var user in userinfolist) { if (user.name == userinfo._useName) { double ayt = (double)0; if ((double)exception == 0) { ayt = (double)0; } else { ayt = (double)user.allexceptiontimes / (double)exception; } decimal outtemp = Math.Round(Convert.ToDecimal(ayt), 2, MidpointRounding.AwayFromZero); user.abnormaloccupancyrate = ((int)(outtemp * 100)).ToString() + "%"; recordGolable._analysisData.userinfo.Add(user); } } } msg = "Success"; return(recordGolable); } catch (Exception ex) { RecordLog.GetInstance().WriteLog(Level.Error, "Ecxeption:" + ex.Message); return(null); } }
/// <summary> /// 导入数据分页展示 /// </summary> /// <param name="page"></param> /// <param name="counts"></param> /// <returns></returns> public string GetRecordImportEcxel(string page, string counts) { RecordGolable goableData = new RecordGolable(); List <RecordLogsDataDetails> tempList = new List <RecordLogsDataDetails>(); Task ta = Task.Factory.StartNew(delegate { goableData._recordlogsdatadetailsList = RedvelopRecord.GetInstance().ReadDataTableToMemory(EventClass.GetInstance().tb); }); Task.WaitAny(ta); int iPage = Int32.Parse(page); int iCounts = Int32.Parse(counts); try { int totalcounts = goableData._recordlogsdatadetailsList.Count; int totalpages = 0; if (totalcounts % Int32.Parse(counts) > 0) { totalpages = totalcounts / Int32.Parse(counts) + 1; } else { totalpages = totalcounts / Int32.Parse(counts); } if (Int32.Parse(page) > totalpages) { //MessageBox.Show("当前输入页数大于总页数", "系统提示"); return("[]"); } for (int i = 0; i < iCounts; i++) { if (((iPage - 1) * iCounts + i) == totalcounts) { break; } if (goableData._recordlogsdatadetailsList[(iPage - 1) * iCounts + i].openlocktime != "") { tempList.Add(goableData._recordlogsdatadetailsList[(iPage - 1) * iCounts + i]); } else { break; } //RecordLog.GetInstance().WriteLog(Level.Info, string.Format("查询分页返回数据完成,page:[{0}],count:[{1}]", iPage, (iPage - 1) * iCounts + i + 1)); } object obj = new { totalcounts = totalcounts, pagedata = tempList }; string json = JsonConvert.SerializeObject(obj); //string json = JsonConvert.SerializeObject(goableData._recordlogsdatadetailsList); return(json); } catch (Exception ex) { RecordLog.GetInstance().WriteLog(Level.Info, "分页时异常:" + ex.Message); return(""); } }