Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
device-new-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
device-new-platform
Commits
3dd459fe
Commit
3dd459fe
authored
May 08, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加报表统计
parent
eaa5dfca
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
268 additions
and
54 deletions
+268
-54
device-manager/src/main/java/com/mortals/xhx/common/code/TimeUnitEnum.java
...c/main/java/com/mortals/xhx/common/code/TimeUnitEnum.java
+60
-0
device-manager/src/main/java/com/mortals/xhx/module/device/dao/DeviceStatDao.java
...java/com/mortals/xhx/module/device/dao/DeviceStatDao.java
+15
-7
device-manager/src/main/java/com/mortals/xhx/module/device/dao/ibatis/DeviceStatDaoImpl.java
...rtals/xhx/module/device/dao/ibatis/DeviceStatDaoImpl.java
+24
-12
device-manager/src/main/java/com/mortals/xhx/module/device/service/DeviceStatService.java
.../mortals/xhx/module/device/service/DeviceStatService.java
+14
-11
device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceStatServiceImpl.java
...xhx/module/device/service/impl/DeviceStatServiceImpl.java
+95
-24
device-manager/src/main/resources/sqlmap/module/device/DeviceStatMapperExt.xml
...in/resources/sqlmap/module/device/DeviceStatMapperExt.xml
+60
-0
No files found.
device-manager/src/main/java/com/mortals/xhx/common/code/TimeUnitEnum.java
0 → 100644
View file @
3dd459fe
package
com.mortals.xhx.common.code
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
public
enum
TimeUnitEnum
{
/** 日 */
DAY
(
1
,
"每日"
),
/** 月 */
MONTH
(
2
,
"月"
),
/** 年 */
YEAR
(
3
,
"年"
);
private
int
value
;
private
String
desc
;
TimeUnitEnum
(
int
value
,
String
desc
)
{
this
.
value
=
value
;
this
.
desc
=
desc
;
}
public
int
getValue
()
{
return
this
.
value
;
}
public
String
getDesc
()
{
return
desc
;
}
public
static
TimeUnitEnum
getByValue
(
int
value
)
{
for
(
TimeUnitEnum
yesNo
:
TimeUnitEnum
.
values
())
{
if
(
yesNo
.
getValue
()
==
value
)
{
return
yesNo
;
}
}
return
null
;
}
public
static
Map
<
String
,
String
>
getEnumMap
(
int
...
eItem
)
{
Map
<
String
,
String
>
resultMap
=
new
LinkedHashMap
<
String
,
String
>();
for
(
TimeUnitEnum
item
:
TimeUnitEnum
.
values
())
{
try
{
boolean
hasE
=
false
;
for
(
int
e
:
eItem
){
if
(
item
.
getValue
()==
e
){
hasE
=
true
;
break
;
}
}
if
(!
hasE
){
resultMap
.
put
(
item
.
getValue
()+
""
,
item
.
getDesc
());
}
}
catch
(
Exception
ex
){
}
}
return
resultMap
;
}
}
device-manager/src/main/java/com/mortals/xhx/module/device/dao/DeviceStatDao.java
View file @
3dd459fe
package
com.mortals.xhx.module.device.dao
;
import
com.mortals.framework.dao.ICRUDDao
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.xhx.module.device.model.DeviceStatEntity
;
import
com.mortals.xhx.module.device.model.DeviceStatQuery
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* 设备统计Dao
* 设备统计 DAO接口
*
* @author zxfei
* @date 2022-07-05
*/
public
interface
DeviceStatDao
extends
ICRUDDao
<
DeviceStatEntity
,
Long
>{
* 设备统计Dao
* 设备统计 DAO接口
*
* @author zxfei
* @date 2022-07-05
*/
@Mapper
public
interface
DeviceStatDao
extends
ICRUDDao
<
DeviceStatEntity
,
Long
>
{
String
SQLID_GET_STATLIST
=
"getStatList"
;
List
<
DeviceStatEntity
>
getStatList
(
DeviceStatQuery
query
,
PageInfo
pageInfo
);
}
device-manager/src/main/java/com/mortals/xhx/module/device/dao/ibatis/DeviceStatDaoImpl.java
View file @
3dd459fe
package
com.mortals.xhx.module.device.dao.ibatis
;
import
org.springframework.stereotype.Repository
;
import
com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.ParamDto
;
import
com.mortals.xhx.module.device.dao.DeviceStatDao
;
import
com.mortals.xhx.module.device.model.DeviceStatEntity
;
import
java.util.Date
;
import
com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis
;
import
com.mortals.xhx.module.device.model.DeviceStatQuery
;
import
org.apache.ibatis.session.RowBounds
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* 设备统计DaoImpl DAO接口
*
* @author zxfei
* @date 2022-07-05
*/
* 设备统计DaoImpl DAO接口
*
* @author zxfei
* @date 2022-07-05
*/
@Repository
(
"deviceStatDao"
)
public
class
DeviceStatDaoImpl
extends
BaseCRUDDaoMybatis
<
DeviceStatEntity
,
Long
>
implements
DeviceStatDao
{
public
class
DeviceStatDaoImpl
extends
BaseCRUDDaoMybatis
<
DeviceStatEntity
,
Long
>
implements
DeviceStatDao
{
@Override
public
List
<
DeviceStatEntity
>
getStatList
(
DeviceStatQuery
query
,
PageInfo
pageInfo
)
{
ParamDto
queryParam
=
super
.
getQueryParam
(
query
);
if
(
pageInfo
.
getPrePageResult
()
==
-
1
)
{
return
getSqlSession
().
selectList
(
SQLID_GET_STATLIST
,
queryParam
);
}
else
{
RowBounds
rowBounds
=
new
RowBounds
(
pageInfo
.
getBeginIndex
(),
pageInfo
.
getPrePageResult
());
return
getSqlSession
().
selectList
(
SQLID_GET_STATLIST
,
queryParam
,
rowBounds
);
}
}
}
device-manager/src/main/java/com/mortals/xhx/module/device/service/DeviceStatService.java
View file @
3dd459fe
package
com.mortals.xhx.module.device.service
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.feign.site.ISiteFeign
;
import
com.mortals.xhx.module.device.model.DeviceStatEntity
;
import
org.springframework.beans.factory.annotation.Autowired
;
/**
* DeviceStatService
*
* 设备统计 service接口
*
* @author zxfei
* @date 2022-07-05
*/
public
interface
DeviceStatService
extends
ICRUDService
<
DeviceStatEntity
,
Long
>{
import
java.util.List
;
/**
* DeviceStatService
* <p>
* 设备统计 service接口
*
* @author zxfei
* @date 2022-07-05
*/
public
interface
DeviceStatService
extends
ICRUDService
<
DeviceStatEntity
,
Long
>
{
List
<
DeviceStatEntity
>
getBillInfos
(
Long
siteId
,
Integer
datePattern
,
PageInfo
pageInfo
,
Context
context
);
}
\ No newline at end of file
device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceStatServiceImpl.java
View file @
3dd459fe
package
com.mortals.xhx.module.device.service.impl
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.xhx.common.code.DaySelectEnum
;
import
com.mortals.xhx.common.code.TimeUnitEnum
;
import
com.mortals.xhx.module.device.dao.DeviceStatDao
;
import
com.mortals.xhx.module.device.model.DeviceStatEntity
;
import
com.mortals.xhx.module.device.model.DeviceStatQuery
;
import
com.mortals.xhx.module.device.service.DeviceStatService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* DeviceStatService
* 设备统计 service实现
*
* @author zxfei
* @date 2022-07-05
*/
* DeviceStatService
* 设备统计 service实现
*
* @author zxfei
* @date 2022-07-05
*/
@Service
(
"deviceStatService"
)
public
class
DeviceStatServiceImpl
extends
AbstractCRUDServiceImpl
<
DeviceStatDao
,
DeviceStatEntity
,
Long
>
implements
DeviceStatService
{
// @Autowired
// private ISiteFeign siteFeign;
//
//
// @Override
// protected void findAfter(DeviceStatEntity params, PageInfo pageInfo, Context context, List<DeviceStatEntity> list) throws AppException {
// SitePdu sitePdu = new SitePdu();
// sitePdu.setSize(-1);
// Map<Long, SitePdu> collect = siteFeign.list(sitePdu).getData().getData().stream().collect(Collectors.toMap(x -> x.getId(), y -> y));
//
// list.stream().forEach(item->{
// if(ObjectUtils.isEmpty())
// });
//
//
//
// super.findAfter(params, pageInfo, context, list);
// }
@Override
public
List
<
DeviceStatEntity
>
find
(
DeviceStatEntity
params
,
Context
context
)
throws
AppException
{
return
super
.
find
(
params
,
context
);
}
@Override
public
Result
<
DeviceStatEntity
>
find
(
DeviceStatEntity
query
,
PageInfo
pageInfo
,
Context
context
)
throws
AppException
{
Result
<
DeviceStatEntity
>
deviceStatEntityResult
=
new
Result
<>();
if
(!
ObjectUtils
.
isEmpty
(
query
.
getSelected
()))
{
PageInfo
page
=
new
PageInfo
();
List
<
DeviceStatEntity
>
billInfos
;
//转换日期
switch
(
DaySelectEnum
.
getByValue
(
query
.
getSelected
()))
{
case
今天:
page
.
setPrePageResult
(
1
);
billInfos
=
this
.
getBillInfos
(
query
.
getSiteId
(),
TimeUnitEnum
.
DAY
.
getValue
(),
pageInfo
,
context
);
deviceStatEntityResult
.
setList
(
billInfos
);
deviceStatEntityResult
.
setPageInfo
(
pageInfo
);
break
;
case
近七天:
page
.
setPrePageResult
(
7
);
billInfos
=
this
.
getBillInfos
(
query
.
getSiteId
(),
TimeUnitEnum
.
DAY
.
getValue
(),
pageInfo
,
context
);
deviceStatEntityResult
.
setList
(
billInfos
);
deviceStatEntityResult
.
setPageInfo
(
pageInfo
);
break
;
case
近三十天:
page
.
setPrePageResult
(
30
);
billInfos
=
this
.
getBillInfos
(
query
.
getSiteId
(),
TimeUnitEnum
.
DAY
.
getValue
(),
pageInfo
,
context
);
deviceStatEntityResult
.
setList
(
billInfos
);
deviceStatEntityResult
.
setPageInfo
(
pageInfo
);
break
;
case
近三月:
page
.
setPrePageResult
(
3
);
billInfos
=
this
.
getBillInfos
(
query
.
getSiteId
(),
TimeUnitEnum
.
MONTH
.
getValue
(),
pageInfo
,
context
);
deviceStatEntityResult
.
setList
(
billInfos
);
deviceStatEntityResult
.
setPageInfo
(
pageInfo
);
break
;
case
今年:
page
.
setPrePageResult
(
1
);
billInfos
=
this
.
getBillInfos
(
query
.
getSiteId
(),
TimeUnitEnum
.
YEAR
.
getValue
(),
pageInfo
,
context
);
deviceStatEntityResult
.
setList
(
billInfos
);
deviceStatEntityResult
.
setPageInfo
(
pageInfo
);
break
;
default
:
break
;
}
return
deviceStatEntityResult
;
}
else
{
return
super
.
find
(
query
,
pageInfo
,
context
);
}
}
@Override
public
List
<
DeviceStatEntity
>
getBillInfos
(
Long
siteId
,
Integer
datePattern
,
PageInfo
pageInfo
,
Context
context
)
{
List
<
DeviceStatEntity
>
statList
=
new
ArrayList
<>();
DeviceStatQuery
query
=
new
DeviceStatQuery
();
query
.
setId
(
siteId
);
if
(
datePattern
==
TimeUnitEnum
.
DAY
.
getValue
())
{
query
.
setGroupList
(
Arrays
.
asList
(
"day"
));
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"day"
,
OrderCol
.
DESCENDING
)));
statList
=
this
.
getDao
().
getStatList
(
query
,
pageInfo
);
}
else
if
(
datePattern
==
TimeUnitEnum
.
MONTH
.
getValue
())
{
query
.
setGroupList
(
Arrays
.
asList
(
"month"
));
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"month"
,
OrderCol
.
DESCENDING
)));
statList
=
this
.
getDao
().
getStatList
(
query
,
pageInfo
);
}
else
if
(
datePattern
==
TimeUnitEnum
.
YEAR
.
getValue
())
{
query
.
setGroupList
(
Arrays
.
asList
(
"year"
));
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"year"
,
OrderCol
.
DESCENDING
)));
statList
=
this
.
getDao
().
getStatList
(
query
,
pageInfo
);
}
else
{
throw
new
AppException
(
"不支持当前日期格式查询统计!"
);
}
return
statList
;
}
}
\ No newline at end of file
device-manager/src/main/resources/sqlmap/module/device/DeviceStatMapperExt.xml
0 → 100644
View file @
3dd459fe
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mortals.xhx.module.device.dao.ibatis.DeviceStatDaoImpl"
>
<!-- 获取统计列表 -->
<select
id=
"getStatList"
parameterType=
"paramDto"
resultMap=
"OrderStatisticsEntity-Map"
>
select
<!-- 获取分组字段 -->
<if
test=
"groupList != null and !groupList.isEmpty()"
>
<foreach
collection=
"groupList"
open=
""
close=
""
index=
"index"
item=
"item"
>
${item},
</foreach>
</if>
id,
siteId,
createTime,
<!-- 设备总数-->
max(IFNULL(a.deviceTotalCount, 0)) deviceTotalCount,
<!-- 新增减少设备数量-->
ROUND(avg(IFNULL(a.deviceAddCount,0)),0) deviceAddCount,
<!-- 监控站点数量-->
max(IFNULL(a.siteTotalCount, 0)) siteTotalCount,
<!-- 昨日新增站点数量-->
ROUND(avg(IFNULL(a.siteAddCount,0)),0) siteAddCount,
<!-- 在线设备数量-->
max(IFNULL(a.deviceOnlineCount,0)) deviceOnlineCount,
<!-- 在线率-->
ROUND(avg(IFNULL(a.deviceOnlineRatio,0.00)),2) deviceOnlineRatio,
<!-- 停用设备数量-->
max(IFNULL(a.deviceStopCount,0)) deviceStopCount,
<!-- 停用率-->
ROUND(avg(IFNULL(a.deviceStopRatio,0.00)),2) deviceStopRatio,
<!-- 离线设备数量-->
max(IFNULL(a.deviceOfflineCount,0)) deviceOfflineCount,
<!-- 离线率-->
ROUND(avg(IFNULL(a.deviceOfflineRatio,0.00)),2) deviceOfflineRatio,
<!-- 未激活设备数量-->
max(IFNULL(a.deviceUnActiveCount,0)) deviceUnActiveCount,
<!-- 未激活率-->
ROUND(avg(IFNULL(a.deviceUnActiveRatio,0.00)),2) deviceUnActiveRatio,
<!-- 告警数量-->
sum(IFNULL(a.alarmTotalCount,0)) alarmTotalCount,
ROUND(avg(IFNULL(a.alarmAddCount,0)),0) alarmAddCount,
<!-- 消息推送数量-->
sum(IFNULL(a.pushTotalCount,0)) pushTotalCount,
ROUND(avg(IFNULL(a.pushAddCount,0)),0) pushAddCount,
sum(IFNULL(a.uploadMessageTotalCount,0)) uploadMessageTotalCount,
sum(IFNULL(a.downloadMessageTotalCount,0)) downloadMessageTotalCount
from mortals_xhx_device_stat as a
<trim
suffixOverrides=
"where"
suffix=
""
>
where
<trim
prefixOverrides=
"and"
prefix=
""
>
<include
refid=
"_condition_"
/>
</trim>
</trim>
<include
refid=
"_group_by_"
/>
<include
refid=
"_orderCols_"
/>
</select>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment