查询统计分析软件
一、 开发要求
软件环境
用途
类型
名称及版本
开发
开发工具
Myeclipse6及以上版本
开发语言
Java
数据库设计工具
Sql server2000及更高版本都要支持
数据库
Sql server2000及更高版本都要支持
服务器
tomcat6.0JDK1.5
浏览器
搜狗,ie9及更高版本,火狐,360
生产
浏览器
搜狗,ie9及更高版本,火狐,360
服务器
Windows XP/7/8 windows2003\windows2008Windows系列、tomcat6.0JDK1.5
数据库
Sql server2000及更高版本都要支持
二、 其他非功能需求
性能需求
1. 响应时间<=2s
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. 查询条件
查询条件
详细说明
设备选择
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、数据服务网关名字:
crv参数
表格编号
001
功能描述
数据服务网关ID、数据服务网关名字
数据库表名
LockInfosGroupInfosDSGComputer
字段名
LockInfosLockId(锁ID
GroupInfosGroupId(分组ID
DSGComputerDSGid(网关ID)、DSGName(网关名称)
查询条件说明
1. 首先按查询条件中所选择的LockId2022限号查询 今天查相应的GroupID
2. 根据GroupIDGroupInfos表里查相应的DSGid
3. 再根据DSGidDSGComputer表里查相应的DSGName
4. 显示相应的DSGidDSGName
备注
门锁ID、门锁名字:
表格编号
002
功能描述
门锁ID、门锁名字
数据库表名
LockInfos
字段名
LockInfosLockId(锁ID)、LockName(锁名称)
查询条件说明
1. 在查询条件中所选择的依次查LockIdLockName
2. 显示LockIdLockName
备注
最后一次父节点ID、父节点名称:
表格编号
003
功能描述
获取最后一次父节点ID、父节点名称
数据库表名
DeviceEventTypeLockInfosGroupInfosSubsInfos
字段名
LockInfosLockId(锁ID
GroupInfosGroupId(分组ID)、GroupName(分组名称)
SubsInfosSubId(分支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.FatherTypeFatherID未保存;
2. TimeStampDSGDLL协议内有个时间簇字段,在数据库内会存储,按照这个时间来查询
门锁在线数:
表格编号
004
功能描述
查出条件时间内每把锁的在线总数
数据库表名
HardWareEventsLockInfos
字段名
LockInfosLockId(锁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
功能描述
查出条件时间内每把锁的离线总数
数据库表名
HardWareEventsLockInfos
字段名
LockInfosLockId(锁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
功能描述
查出条件时间内每把锁的第一条在线数据的时间
数据库表名
HardWareEventsLockInfos
字段名
LockInfosLockId(锁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条电压值
数据库表名
DeviceStatusDetailLockInfos
字段名
LockInfosLockId(锁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字段里的值。
备注
状态KeyStatusKey = 3(电池电压)
压降:
帝豪ex8
表格编号
008
功能描述
条件时间内最大时间的电压值与最小时间的电压值的差
数据库表名
DeviceStatusDetailLockInfos
字段名
LockInfosLockId(锁ID
DeviceStatusDetailDeviceId(设备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次数: