查询统计分析软件
一、 开发要求
软件环境
用途 | 类型 | 名称及版本 |
开发 | 开发工具 | Myeclipse6及以上版本 |
开发语言 | Java | |
数据库设计工具 | Sql server2000及更高版本都要支持 | |
数据库 | Sql server2000及更高版本都要支持 | |
服务器 | tomcat6.0、JDK1.5 | |
浏览器 | 搜狗,ie9及更高版本,火狐,360 | |
生产 | 浏览器 | 搜狗,ie9及更高版本,火狐,360 |
服务器 | Windows XP/7/8 windows2003\windows2008等Windows系列、tomcat6.0、JDK1.5 | |
数据库 | Sql server2000及更高版本都要支持 | |
二、 其他非功能需求
性能需求
2. 并发支持:10
安全措施需求
1. 应对用户进行严格的访问控制,确保相关信息特别是重要数据信息的安全访问。
2. 应采用防火墙等安全保障手段进行边界保护,防止对网络和服务器的恶意攻击。
质量需求
1. 正确性:保证交付的源码满足用户需求。
2. 兼容性:客户端浏览器需兼容搜狗,ie9及更高版本,火狐,360
3. 分辨率自适应
4. 健壮性:系统对数据的处理要求有完善的效验方式,不可以因为用户操作错误而出现程序错误。
5. 代码共用性:
6. 可扩展性:当需求中出现页面定制无法满足的页面功能时,可以编写专门对应该需求的模块来解决这个问题。
7. 系统可根据需要定制同外部系统的通讯接口:包括Webservice、数据库接口。
三、 需求概述
查询对象:sql-server数据库
1. 数据服务网关:DSGComputers
2. 分组:GroupInfos;
3. 分支 :SubsInfos;
4. 门锁 :LockInfos;
5. 下发白名单:Lock_DataSwitchTab;
6. 上传信息:PassInfo;
7. 数据服务网关在线信息:HardWareEvents;
8. 门锁状态信息:DeviceStatusDetail;
9. 硬件事件类型表:DeviceEventType。
主要功能
1. 一键统计;
2. 图形分析;
3. 获取客户数据库。
数据库内目标设备
1. 数据服务网关多个;
2. 分组多个;
3. 分支多个;
4. 门锁多个;
设备关联图:
说明: 1. 数据服务网关的下级只能是分组,且一个数据服务网关可以带多个分组;
2. 分组的下级可能是分支也可能直接就是门锁,一个分组可以带多个分支和门锁;
3. 分支的下级可能还是分支也可能是门锁,一个分支可以带多个分支和门锁。
查询统计分析结果可excel导出和导入;
1. 查询结果可导出Excel格式的文件。
2. 可将excel格式的统计结果导入,进行显示。
四、 具体需求
一键查询统计
查询条件 | 详细说明 |
设备选择 | 1. 整个架构树形结构显示;可任意选择树形结构内设备; 2. 设备类型: 数据服务网关:显示名称(DSGComputers) 分组:显示名称(GroupInfos) 分支:显示名称(SubsInfos) 门锁:显示名称(LockInfos) 3. 默认:全部选择 |
起始时间 | 年、月、日、时、分、秒 默认:2015-11-01 00:00:00 |
结束时间 | 年、月、日、时、分、秒 默认:当前时间; |
备注 | |
2. 查询结果:
A. 门锁工作状态明细表
结果效果图如下:
数据服务网关ID | 数据服务网关名称 | 门锁ID | 门锁名 | 最后一次父节点ID | 最后一次父节点名称 | 紧急报警次数 | 平均每天刷双卡总数 | 平均每天刷巡更卡总数 | 平均每天刷非法卡总数 | 平均每天刷卡总数 | 平均每天使用常开常闭开关次数 | 平均每天锁动作次数 | 开门信号质量平均值 | 关门信号质量 平均值 | … | … | … | … | …. | 等等 |
1 | 名字1 | 1 | 门锁1 | |||||||||||||||||
1 | 名字1 | 2 | 门锁2 | |||||||||||||||||
2 | 3 | |||||||||||||||||||
… … | … … | |||||||||||||||||||
N | 名字N | N | 门锁N | |||||||||||||||||
说明1.选择的控件支持字段名排序;
2.查询结果要有进度条;
3.列行数较多,设置为可左右拖动的形式;
4.可以设置每页显示多少行。默认显示500行。
5.所涉及的次数和数值都写在配置文件内。
门锁工作状态明细查方法如下(每把锁都具有的工作状态):
● 数据服务网关ID、数据服务网关名字:
表格编号 | 001 |
功能描述 | 数据服务网关ID、数据服务网关名字 |
数据库表名 | LockInfos、GroupInfos、DSGComputer |
字段名 | LockInfos表:LockId(锁ID) GroupInfos表:GroupId(分组ID) DSGComputer表:DSGid(网关ID)、DSGName(网关名称) |
查询条件说明 | 1. 首先按查询条件中所选择的LockId2022限号查询 今天查相应的GroupID; 2. 根据GroupID在GroupInfos表里查相应的DSGid; 3. 再根据DSGid在DSGComputer表里查相应的DSGName; 4. 显示相应的DSGid和DSGName。 |
备注 | |
● 门锁ID、门锁名字:
表格编号 | 002 |
功能描述 | 门锁ID、门锁名字 |
数据库表名 | LockInfos |
字段名 | LockInfos表:LockId(锁ID)、LockName(锁名称) |
查询条件说明 | 1. 在查询条件中所选择的依次查LockId和LockName; 2. 显示LockId和LockName。 |
备注 | |
● 最后一次父节点ID、父节点名称:
表格编号 | 003 |
功能描述 | 获取最后一次父节点ID、父节点名称 |
数据库表名 | DeviceEventType、LockInfos、GroupInfos、SubsInfos、 |
字段名 | LockInfos表:LockId(锁ID) GroupInfos表:GroupId(分组ID)、GroupName(分组名称) SubsInfos表:SubId(分支ID)、SubName(分支名称) DeviceEventType表: DeviceId(设备ID)、FatherType(父节点类型)、FatherID(设备ID)、MidFKID(上传数据唯一标识)、TimeStamp(时间戳) |
查询条件说明 | 1. 首先按查询条件中所选择的LockId依次查; 2. 其次根据distinct(MidFKID)将DeviceEventType表的内容进行去重并按照MidFKID排正序获取最后1条父节点; 3. 从数据库里查此字段,LockId对应DeviceId 4. 根据FatherType到父节点类型(分组/分支) 5. 再到相应类型的表(GroupInfos/第十五届成都国际车展SubsInfos)内根据(GroupId / SubId)= FatherID到设备名称,即(GroupName/ SubName); 6. 显示父节点的ID和名称。 |
备注 | 1.FatherType、FatherID未保存; 2. TimeStamp:DSG和DLL协议内有个时间簇字段,在数据库内会存储,按照这个时间来查询 |
● 门锁在线数:
表格编号 | 004 |
功能描述 | 查出条件时间内每把锁的在线总数 |
数据库表名 | HardWareEvents、LockInfos |
字段名 | LockInfos表:LockId(锁ID) HardWareEvents表: HWClient_StatusIDcm125(状态生成时编号)、HW_id(从属设备ID)、HW_Type(设备类型)、HW_Event_Type(事件类型)、HW_Event_Status(事件状态)、HW_Event_Time(时间戳) |
查询条件说明 | 1. 首先按查询条件中所选择的LockId依次查; 2. 其次根据distinct(HWClient_StatusID)将HardWareEvents表的内容进行去重; 3. 然后根据HW_Event_Time查出条件时间内每把锁的在线总数; 4. 即当满足 (LockId = HW_id ) and (HW_Type = 7) and (HW_Event_Type = 3) and ( HW_Event_Status = 1) 时表示门锁在线。 |
备注 | 事件类型:HW_Event_Type = 3(心跳) 事件状态:HW_Event_Status = 1(在线) 设备类型:HW_Type = 7(公寓锁) |
● 门锁离线数:
表格编号 | 005 |
功能描述 | 查出条件时间内每把锁的离线总数 |
数据库表名 | HardWareEvents、LockInfos |
字段名 | LockInfos表:LockId(锁ID) HardWareEvents表: HWClient_StatusID(状态生成时编号)、HW_id(从属设备ID)、HW_Type(设备类型)、HW_Event_Type(事件类型)、HW_Event_Status(事件状态)、HW_Event_Time(时间戳) |
查询条件说明 | 1. 首先按查询条件中所选择的LockId依次查; 2. 其次根据distinct(HWClient_StatusID)将HardWareEvents表的内容进行去重; 3. 然后根据HW_Event_Time查出条件时间内每把锁的离线总数; 4. 即当满足 (LockId = HW_id ) and (HW_Type = 7) and (HW_Event_Type = 3) and ( HW_Event_Status = 0) 时表示门锁离线。 |
备注 | 事件类型:HW_Event_Type = 3(心跳) 事件状态:HW_Event_Status = 0(离线) 设备类型:HW_Type = 7(公寓锁) |
● 首次工作时间:
表格编号 | 006 |
功能描述 | 查出条件时间内每把锁的第一条在线数据的时间 |
数据库表名 | HardWareEvents、LockInfos |
字段名 | LockInfos表:LockId(锁ID) HardWareEvents表: HWClient_StatusID(状态生成时编号)、HW_id(从属设备ID)、HW_Type(设备类型)、HW_Event_Type(事件类型)、HW_Event_Status(事件状态)、HW_Event_Time(时间戳) |
查询条件说明 | 1. 首先按查询条件中所选择的LockId依次查; 2. 其次根据distinct(HWClient_StatusID)将HardWareEvents表的内容进行去重; 3. 然后根据HW_Event_Time查出条件时间内每把锁的第一条在线数据的时间; 4. 当满足 (LockId = HW_id ) and (HW_Type = 7) and (HW_Event_Type = 3) and ( HW_Event_Status =1) 时表示门锁在线。 |
备注 | 事件类型:HW_Event_Type = 3(心跳) 事件状态:HW_Event_Status = 0(离线) 设备类型:HW_Type = 7(公寓锁) 时间格式:如:2015-10-14 18:31:30 |
● 电压值:
表格编号 | 007 |
功能描述 | 查出这段时间内最后1条电压值 |
数据库表名 | DeviceStatusDetail、LockInfos |
字段名 | LockInfos表:LockId(锁ID) DeviceStatusDetail表汉兰达改装图片:DeviceId(设备ID)、DeviceType(设备类型)、StatusKey(状态Key)、RecordTime(时间戳)、StatusValue_Detail(电压值) |
查询条件说明 | 1. 首先按查询条件中所选择的LockId依次查; 2. 其次根据RecordTime查出条件时间内每把锁的最后一条电压值; 3. 即当满足 (LockInfos表.LockId = DeviceStatusDetail表. DeviceId) and (DeviceType = 7) and (StatusKey = 3) 且在条件时间内最大时间的StatusValue_Detail字段里的值。 |
备注 | 状态Key:StatusKey = 3(电池电压) |
● 压降:
表格编号 | 008 |
功能描述 | 条件时间内最大时间的电压值与最小时间的电压值的差 |
数据库表名 | DeviceStatusDetail、LockInfos |
字段名 | LockInfos表:LockId(锁ID) DeviceStatusDetail表:DeviceId(设备ID)、DeviceType(设备类型)、StatusKey(状态Key)、RecordTime(时间戳)、StatusValue_Detail(电压值) |
查询条件说明 | 1. 首先按查询条件中所选择的LockId依次查; 2. 其次根据RecordTime查出条件时间内每把锁的第一条和最后一条电压值; 3. 即当满足 (LockInfos表.LockId = DeviceStatusDetail表. DeviceId) and (DeviceType = 7) and (StatusKey = 3) 且在条件时间内最小时间和最大时间的StatusValue_Detail字段里的值。 4. 最后将(最小时间的StatusValue_Detail的值---最大时间的StatusValue_Detail的值); 5. 结果保留1位小数 |
备注 | (说明:指令内收到的70代表7V); 举例:100天内最后1条电压值为75;第一条电压值为80; 压降:8V-7.5V = 0.5V 异常情况:如果最后1条电压值大于第一条电压值则压降为0; |
● 电压值为1.4V次数:
发布评论