Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
        /// <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);
        }
Exemplo n.º 10
0
        /// <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");
        }
Exemplo n.º 11
0
        /// <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);
        }
Exemplo n.º 12
0
        /// <summary>
        /// 模拟设置开锁方式
        /// </summary>
        public void SimSettingType(string id, string locktype)
        {
            string msg = string.Empty;

            RedvelopRecord.GetInstance().InitDoorLockType(out msg, id.ToString(), locktype);
        }
Exemplo n.º 13
0
        /// <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("");
            }
        }
Exemplo n.º 14
0
        /// <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");
        }
Exemplo n.º 15
0
        /// <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);
        }
Exemplo n.º 16
0
        /// <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);
            }
        }
Exemplo n.º 17
0
        /// <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("");
            }
        }