Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
1ef86aa6
Commit
1ef86aa6
authored
Apr 15, 2024
by
suhuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.需求A071统计需求
parent
4f029726
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
1487 additions
and
1 deletion
+1487
-1
JgBizCountDataBO.java
.../yeejoin/amos/boot/module/jg/api/bo/JgBizCountDataBO.java
+49
-0
JgBizCountDataDto.java
...eejoin/amos/boot/module/jg/api/dto/JgBizCountDataDto.java
+60
-0
ReportAnalysisSearchDTO.java
.../amos/boot/module/jg/api/dto/ReportAnalysisSearchDTO.java
+57
-0
JgInstallationNotice.java
.../amos/boot/module/jg/api/entity/JgInstallationNotice.java
+7
-0
JgMaintainNotice.java
...join/amos/boot/module/jg/api/entity/JgMaintainNotice.java
+6
-0
JgMaintenanceContract.java
...amos/boot/module/jg/api/entity/JgMaintenanceContract.java
+5
-0
JgReformNotice.java
...eejoin/amos/boot/module/jg/api/entity/JgReformNotice.java
+6
-0
JgTransferNotice.java
...join/amos/boot/module/jg/api/entity/JgTransferNotice.java
+7
-0
CommonMapper.java
.../yeejoin/amos/boot/module/jg/api/mapper/CommonMapper.java
+27
-0
IReportAnalysisService.java
...os/boot/module/jg/api/service/IReportAnalysisService.java
+55
-0
JgBizCountBaseVo.java
.../yeejoin/amos/boot/module/jg/api/vo/JgBizCountBaseVo.java
+130
-0
JgBizEquipStateCountVo.java
...in/amos/boot/module/jg/api/vo/JgBizEquipStateCountVo.java
+86
-0
CommonMapper.xml
...-module-jg-api/src/main/resources/mapper/CommonMapper.xml
+468
-0
ReportAnalysisController.java
...ot/module/jg/biz/controller/ReportAnalysisController.java
+105
-0
ApplicationRunnerImpl.java
...n/amos/boot/module/jg/biz/init/ApplicationRunnerImpl.java
+9
-1
ReportAnalysisServiceImpl.java
...module/jg/biz/service/impl/ReportAnalysisServiceImpl.java
+410
-0
No files found.
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/bo/JgBizCountDataBO.java
0 → 100644
View file @
1ef86aa6
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
bo
;
import
lombok.Data
;
/**
* @author Administrator
*/
@Data
public
class
JgBizCountDataBO
{
/**
* 接收机构公司编码
*/
private
String
receiveCompanyCode
;
/**
* 业务类型
*/
private
String
bizType
;
/**
* 流程状态
*/
private
String
status
;
/**
* 数量
*/
private
Long
num
;
/**
* 设备种类
*/
private
String
equList
;
/**
* 设备类别
*/
private
String
equCategory
;
/**
* 设备品种
*/
private
String
equDefine
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/dto/JgBizCountDataDto.java
0 → 100644
View file @
1ef86aa6
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
dto
;
import
lombok.Data
;
import
java.util.Objects
;
/**
* @author Administrator
*/
@Data
public
class
JgBizCountDataDto
{
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
{
return
true
;
}
if
(
o
==
null
||
getClass
()
!=
o
.
getClass
())
{
return
false
;
}
JgBizCountDataDto
that
=
(
JgBizCountDataDto
)
o
;
return
receiveCompanyCode
.
equals
(
that
.
receiveCompanyCode
)
&&
bizType
.
equals
(
that
.
bizType
)
&&
equList
.
equals
(
that
.
equList
)
&&
equCategory
.
equals
(
that
.
equCategory
)
&&
Objects
.
equals
(
equDefine
,
that
.
equDefine
);
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
receiveCompanyCode
,
bizType
,
equList
,
equCategory
,
equDefine
);
}
/**
* 接收机构公司编码
*/
private
String
receiveCompanyCode
;
/**
* 业务类型
*/
private
String
bizType
;
/**
* 设备种类
*/
private
String
equList
;
/**
* 设备类别
*/
private
String
equCategory
;
/**
* 设备品种
*/
private
String
equDefine
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/dto/ReportAnalysisSearchDTO.java
0 → 100644
View file @
1ef86aa6
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
/**
* @author Administrator
*/
@Data
@ApiModel
(
"检索条件"
)
public
class
ReportAnalysisSearchDTO
{
@ApiModelProperty
(
"开始日期"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Date
beginDate
;
@ApiModelProperty
(
"结束日期"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Date
endDate
;
@ApiModelProperty
(
"业务类型"
)
String
bizType
;
@ApiModelProperty
(
"接收机构"
)
String
receiveOrgCode
;
@ApiModelProperty
(
"设备种类code"
)
String
equList
;
@ApiModelProperty
(
"设备类别code"
)
String
equCategory
;
@ApiModelProperty
(
"设备品种code"
)
String
equDefine
;
@ApiModelProperty
(
"排序逗号分开,逗号前字段,逗号后升序或者降序"
)
String
sort
;
public
String
getSortField
(){
return
StringUtils
.
isNotEmpty
(
sort
)
?
sort
.
contains
(
","
)
?
sort
.
split
(
","
)[
0
]
:
""
:
""
;
}
public
String
getSortOrder
(){
if
(
StringUtils
.
isNotEmpty
(
sort
)
&&
sort
.
contains
(
","
)
&&
"ascend"
.
equals
(
sort
.
split
(
","
)[
1
])){
return
"asc"
;
}
return
"desc"
;
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/entity/JgInstallationNotice.java
View file @
1ef86aa6
...
...
@@ -452,4 +452,11 @@ public class JgInstallationNotice extends BaseEntity {
*/
@TableField
(
value
=
"other_accessories"
)
private
String
otherAccessories
;
/**
* 接收机构公司的org_code
*/
@TableField
(
"receive_company_org_code"
)
private
String
receiveCompanyOrgCode
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/entity/JgMaintainNotice.java
View file @
1ef86aa6
...
...
@@ -351,4 +351,10 @@ public class JgMaintainNotice extends BaseEntity {
*/
@TableField
(
value
=
"inform_number"
)
private
String
informNumber
;
/**
* 接收机构公司的org_code
*/
@TableField
(
"receive_company_org_code"
)
private
String
receiveCompanyOrgCode
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/entity/JgMaintenanceContract.java
View file @
1ef86aa6
...
...
@@ -296,4 +296,9 @@ public class JgMaintenanceContract extends BaseEntity {
@TableField
(
value
=
"other_accessories"
)
private
String
otherAccessories
;
/**
* 接收机构公司的org_code
*/
@TableField
(
"receive_company_org_code"
)
private
String
receiveCompanyOrgCode
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/entity/JgReformNotice.java
View file @
1ef86aa6
...
...
@@ -358,4 +358,10 @@ public class JgReformNotice extends BaseEntity {
@TableField
(
value
=
"other_accessories"
,
typeHandler
=
FastjsonTypeHandler
.
class
)
private
List
<
JSONObject
>
otherAccessories
;
/**
* 接收机构公司的org_code
*/
@TableField
(
"receive_company_org_code"
)
private
String
receiveCompanyOrgCode
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/entity/JgTransferNotice.java
View file @
1ef86aa6
...
...
@@ -338,4 +338,11 @@ public class JgTransferNotice extends BaseEntity {
*/
@TableField
(
value
=
"other_accessories"
)
private
String
otherAccessories
;
/**
* 接收机构公司的org_code
*/
@TableField
(
"receive_company_org_code"
)
private
String
receiveCompanyOrgCode
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/mapper/CommonMapper.java
View file @
1ef86aa6
...
...
@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.jg.api.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.module.jg.api.bo.JgBizCountDataBO
;
import
com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory
;
import
org.apache.ibatis.annotations.Param
;
...
...
@@ -61,5 +64,29 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
* @return 地市code
*/
String
selectCityCompanyCode
(
@Param
(
"receiveCompanyCode"
)
String
receiveCompanyCode
,
@Param
(
"exclusionIds"
)
String
[]
exclusionIds
);
/**
* 告知业务统计
* @param reportAnalysisSearchDTO 条件
* @return 过程数据
*/
List
<
JgBizCountDataBO
>
queryForNoticeCountData
(
@Param
(
"param"
)
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
);
List
<
CompanyBo
>
queryJGCompanyCodeName
(
String
orgCode
);
/**
* 维保备案统计数据查询
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountDataBO>
*/
List
<
JgBizCountDataBO
>
queryForMaintenanceCountData
(
@Param
(
"param"
)
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
);
/**
* 登记类统计数据查询
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountDataBO>
*/
List
<
JgBizCountDataBO
>
queryForRegisterCountData
(
@Param
(
"param"
)
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
);
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/service/IReportAnalysisService.java
0 → 100644
View file @
1ef86aa6
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
service
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO
;
import
com.yeejoin.amos.boot.module.jg.api.vo.JgBizCountBaseVo
;
import
com.yeejoin.amos.boot.module.jg.api.vo.JgBizEquipStateCountVo
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
public
interface
IReportAnalysisService
{
/**
* 告知类统计列表
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountBaseVo>
*/
List
<
JgBizCountBaseVo
>
getNoticeCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
);
/**
* 登记类统计列表
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountBaseVo>
*/
List
<
JgBizCountBaseVo
>
getRegisterCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
);
/**
* 维保备案业务办理设备情况统计表
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountBaseVo>
*/
List
<
JgBizCountBaseVo
>
getMaintenanceCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
);
/**
* 设备状态情况统计表
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountBaseVo>
*/
List
<
JgBizEquipStateCountVo
>
getEquipStatusCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
);
/**
* 查询当前登录人的管辖机构树,显示本级级所有下级
* @param selectedOrgInfo 登录人信息
* @return List<CompanyBo>
*/
List
<
CompanyBo
>
getReceiveCompanyTreeWithAuth
(
ReginParams
selectedOrgInfo
);
/**
* 业务类型枚举
* @param groupKey 分组
* @return List<Map<String, Object>>
*/
List
<
Map
<
String
,
Object
>>
getBizTypeList
(
String
groupKey
);
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/vo/JgBizCountBaseVo.java
0 → 100644
View file @
1ef86aa6
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Getter
;
import
java.io.Serializable
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author shg
*/
@Data
@ApiModel
(
"监管业务办理统计基础对象"
)
public
class
JgBizCountBaseVo
implements
Serializable
{
public
JgBizCountBaseVo
()
{
this
.
id
=
UUID
.
randomUUID
().
toString
();
}
private
String
id
;
@ApiModelProperty
(
"业务大类"
)
private
String
bizGroup
;
@ApiModelProperty
(
"业务类型code"
)
private
String
bizType
;
@ApiModelProperty
(
"业务类型名称"
)
private
String
bizTypeName
;
@ApiModelProperty
(
"接收机构"
)
private
String
receiveCompanyName
;
@ApiModelProperty
(
"设备种类"
)
private
String
equListName
;
@ApiModelProperty
(
"设备类别"
)
private
String
equCategoryName
;
@ApiModelProperty
(
"设备品种"
)
private
String
equDefineName
;
@ApiModelProperty
(
"已发起数量"
)
private
Long
launchesNumber
;
@ApiModelProperty
(
"已完成数量"
)
private
Long
finishedNumber
;
@AllArgsConstructor
@Getter
public
enum
BizType
{
/**
* 业务类型枚举
*/
maintainNotice
(
"维修告知"
,
"notice"
),
installNotice
(
"安装告知"
,
"notice"
),
transferNotice
(
"移转告知"
,
"notice"
),
reformNotice
(
"改造告知"
,
"notice"
),
maintenanceContract
(
"电梯维保备案"
,
"maintenance"
),
useRegistration
(
"使用登记"
,
"registrer"
),
reformRegistration
(
"改造变更登记"
,
"registrer"
),
transferRegistration
(
"移转变更登记"
,
"registrer"
),
unitRegistration
(
"单位变更登记"
,
"registrer"
);
/**
* 描述
*/
private
String
name
;
/**
* 组
*/
private
String
group
;
/**
* 按照类型获取枚举
*
* @param group 分组
* @return List<Map < String, String>>
*/
public
static
List
<
Map
<
String
,
Object
>>
getBizTypeListByGroup
(
String
group
)
{
return
Arrays
.
stream
(
BizType
.
values
()).
filter
(
e
->
e
.
group
.
equals
(
group
)).
map
(
e
->
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"key"
,
e
);
map
.
put
(
"name"
,
e
.
getName
());
return
map
;
}).
collect
(
Collectors
.
toList
());
}
}
public
String
getBizTypeName
()
{
for
(
BizType
c
:
BizType
.
values
())
{
if
(
bizType
!=
null
&&
bizType
.
equals
(
c
.
name
()))
{
return
c
.
getName
();
}
}
return
null
;
}
public
static
void
sortList
(
List
<
JgBizCountBaseVo
>
list
,
String
sortByField
,
String
sortOrder
)
{
Comparator
<
JgBizCountBaseVo
>
comparator
;
switch
(
sortByField
)
{
case
"launchesNumber"
:
comparator
=
Comparator
.
comparingLong
(
JgBizCountBaseVo:
:
getLaunchesNumber
);
break
;
case
"finishedNumber"
:
comparator
=
Comparator
.
comparingLong
(
JgBizCountBaseVo:
:
getFinishedNumber
);
break
;
default
:
// 默认按 launchesNumber 字段排序
comparator
=
Comparator
.
comparingLong
(
JgBizCountBaseVo:
:
getLaunchesNumber
);
break
;
}
if
(
"desc"
.
equalsIgnoreCase
(
sortOrder
))
{
comparator
=
comparator
.
reversed
();
}
list
.
sort
(
comparator
);
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/vo/JgBizEquipStateCountVo.java
0 → 100644
View file @
1ef86aa6
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.UUID
;
/**
* @author shg
*/
@Data
@ApiModel
(
"监管业务办理统计基础对象"
)
public
class
JgBizEquipStateCountVo
implements
Serializable
{
public
JgBizEquipStateCountVo
()
{
this
.
id
=
UUID
.
randomUUID
().
toString
();
}
private
String
id
;
@ApiModelProperty
(
"地市管辖机构"
)
private
String
cityManagementUnitName
;
@ApiModelProperty
(
"区县管辖机构"
)
private
String
countyManagementUnitName
;
@ApiModelProperty
(
"直接管辖机构"
)
private
String
managementUnitName
;
@ApiModelProperty
(
"设备种类"
)
private
String
equListName
;
@ApiModelProperty
(
"设备类别"
)
private
String
equCategoryName
;
@ApiModelProperty
(
"设备品种"
)
private
String
equDefineName
;
@ApiModelProperty
(
"总数设备数量"
)
private
Long
totalNumber
;
@ApiModelProperty
(
"在用设备数量"
)
private
Long
inUseNumber
;
@ApiModelProperty
(
"停用设备数量"
)
private
Long
stopUseNumber
;
@ApiModelProperty
(
"报废注销数量"
)
private
Long
scrapCancel
;
public
static
void
sortList
(
List
<
JgBizEquipStateCountVo
>
list
,
String
sortByField
,
String
sortOrder
)
{
Comparator
<
JgBizEquipStateCountVo
>
comparator
;
switch
(
sortByField
)
{
case
"totalNumber"
:
comparator
=
Comparator
.
comparingLong
(
JgBizEquipStateCountVo:
:
getTotalNumber
);
break
;
case
"inUseNumber"
:
comparator
=
Comparator
.
comparingLong
(
JgBizEquipStateCountVo:
:
getInUseNumber
);
break
;
case
"scrapCancel"
:
comparator
=
Comparator
.
comparingLong
(
JgBizEquipStateCountVo:
:
getScrapCancel
);
break
;
case
"stopUseNumber"
:
comparator
=
Comparator
.
comparingLong
(
JgBizEquipStateCountVo:
:
getStopUseNumber
);
break
;
default
:
// 默认按 launchesNumber 字段排序
comparator
=
Comparator
.
comparingLong
(
JgBizEquipStateCountVo:
:
getTotalNumber
);
break
;
}
if
(
"desc"
.
equalsIgnoreCase
(
sortOrder
))
{
comparator
=
comparator
.
reversed
();
}
list
.
sort
(
comparator
);
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/resources/mapper/CommonMapper.xml
View file @
1ef86aa6
...
...
@@ -354,4 +354,472 @@
</foreach>
limit 1
</select>
<sql
id=
"notice-query-where"
>
<where>
n.sequence_nbr = ne.equip_transfer_id
and n.notice_status != '6610'
and n.notice_status != '6615'
<if
test=
"param.beginDate != null"
>
and n.notice_date >= #{param.beginDate}
</if>
<if
test=
"param.endDate != null"
>
and n.notice_date
<![CDATA[ <= ]]>
#{param.endDate}
</if>
<if
test=
"param.receiveOrgCode != null"
>
and n.receive_company_org_code like concat(#{param.receiveOrgCode}, '%')
</if>
</where>
</sql>
<select
id=
"queryForNoticeCountData"
resultType=
"com.yeejoin.amos.boot.module.jg.api.bo.JgBizCountDataBO"
>
select
*
from
(select
'installNotice' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.notice_status as status,
ne.equ_id,
n.receive_org_credit_code as receiveCompanyCode,
n.receive_org_name as receiveCompanyName,
n.notice_date as commitDate
FROM
"tzs_jg_installation_notice" n,
"tzs_jg_installation_notice_eq" ne
<include
refid=
"notice-query-where"
/>
) a,
idx_biz_jg_register_info r
where a.equ_id = r."RECORD") u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
union
select
'maintainNotice' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.notice_status as status,
ne.equ_id,
n.receive_company_code as receiveCompanyCode,
n.receive_org_name as receiveCompanyName,
n.notice_date as commitDate
FROM
"tzs_jg_maintain_notice" n,
"tzs_jg_maintain_notice_eq" ne
<include
refid=
"notice-query-where"
/>
) a,
idx_biz_jg_register_info r
where a.equ_id = r."RECORD") u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
union
select
'reformNotice' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.notice_status as status,
ne.equ_id,
n.receive_company_code as receiveCompanyCode,
n.receive_org_name as receiveCompanyName,
n.notice_date as commitDate
FROM
"tzs_jg_reform_notice" n,
"tzs_jg_reform_notice_eq" ne
<include
refid=
"notice-query-where"
/>
) a,
idx_biz_jg_register_info r
where a.equ_id = r."RECORD") u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
union
select
'transferNotice' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.notice_status as status,
ne.equ_id,
n.receive_company_code as receiveCompanyCode,
n.receive_org_name as receiveCompanyName,
n.notice_date as commitDate
FROM
"tzs_jg_transfer_notice" n,
"tzs_jg_transfer_notice_eq" ne
<include
refid=
"notice-query-where"
/>
) a,
idx_biz_jg_register_info r
where a.equ_id = r."RECORD") u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode")
<where>
<if
test=
"param.bizType != null and param.bizType !=''"
>
and bizType = #{param.bizType}
</if>
<if
test=
"param.equList != null and param.equList !=''"
>
and equList = #{param.equList}
</if>
<if
test=
"param.equCategory != null and param.equCategory !=''"
>
and equCategory = #{param.equCategory}
</if>
<if
test=
"param.equDefine != null and param.equDefine !=''"
>
and equDefine = #{param.equDefine}
</if>
</where>
</select>
<select
id=
"queryJGCompanyCodeName"
resultType=
"com.yeejoin.amos.boot.biz.common.bo.CompanyBo"
>
SELECT
sequence_nbr,
company_name,
company_code,
org_code,
parent_id
FROM "privilege_company"
where
level != 'company'
and is_deleted = false
<if
test=
"orgCode !=null and orgCode != ''"
>
and org_code Like concat(#{orgCode}, '%')
</if>
</select>
<sql
id=
"equ-filter"
>
<if
test=
"param.equList != null and param.equList !=''"
>
and r."EQU_LIST" = #{param.equList}
</if>
<if
test=
"param.equCategory != null and param.equCategory !=''"
>
and r."EQU_CATEGORY" = #{param.equCategory}
</if>
<if
test=
"param.equDefine != null and param.equDefine !=''"
>
and r."EQU_DEFINE" = #{param.equDefine}
</if>
</sql>
<select
id=
"queryForMaintenanceCountData"
resultType=
"com.yeejoin.amos.boot.module.jg.api.bo.JgBizCountDataBO"
>
select
'maintenanceContract' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.status,
ne.equ_id,
n.receive_org_code as receiveCompanyCode,
n.apply_date as commitDate
FROM
"tzs_jg_maintenance_contract" n,
"tzs_jg_maintenance_contract_eq" ne
where
n.sequence_nbr = ne.equip_transfer_id
and n.status != '使用单位待提交'
and n.status != '使用单位已撤回'
<if
test=
"param.beginDate != null"
>
and date_ge(CAST(n.create_date as date), #{param.beginDate})
</if>
<if
test=
"param.endDate != null"
>
and date_le(CAST(n.create_date as date), #{param.endDate})
</if>
<if
test=
"param.receiveOrgCode != null"
>
and n.receive_company_org_code like concat(#{param.receiveOrgCode}, '%')
</if>
) a,
idx_biz_jg_register_info r
where
a.equ_id = r."RECORD"
<include
refid=
"equ-filter"
/>
) u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
</select>
<select
id=
"queryForRegisterCountData"
resultType=
"com.yeejoin.amos.boot.module.jg.api.bo.JgBizCountDataBO"
>
select
*
from (
select
'useRegistration' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.status,
ne.equ_id,
n.receive_company_code as receiveCompanyCode,
n.receive_org_name as receiveCompanyName,
n.reg_date as commitDate
FROM
"tzs_jg_use_registration" n,
"tzs_jg_use_registration_eq" ne
where
n.sequence_nbr = ne.equip_transfer_id
and n.status != '使用单位待提交'
and n.status != '使用单位已撤回'
<if
test=
"param.beginDate != null"
>
and date_ge(CAST(n.reg_date as date), #{param.beginDate})
</if>
<if
test=
"param.endDate != null"
>
and date_le(CAST(n.reg_date as date), #{param.endDate})
</if>
<if
test=
"param.receiveOrgCode != null"
>
and n.receive_company_org_code like concat(#{param.receiveOrgCode}, '%')
</if>
) a,
idx_biz_jg_register_info r
where
a.equ_id = r."RECORD"
<include
refid=
"equ-filter"
/>
) u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
UNION
select
'reformRegistration' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.status,
ne.equ_id,
n.receive_company_code as receiveCompanyCode,
n.receive_org_name as receiveCompanyName,
n.reg_date as commitDate
FROM
"tzs_jg_change_registration_reform" n,
"tzs_jg_change_registration_reform_eq" ne
where
n.sequence_nbr = ne.equip_transfer_id
and n.audit_status != '使用单位待提交'
and n.audit_status != '使用单位已撤回'
<if
test=
"param.beginDate != null"
>
and date_ge(CAST(n.reg_date as date), #{param.beginDate})
</if>
<if
test=
"param.endDate != null"
>
and date_le(CAST(n.reg_date as date), #{param.endDate})
</if>
<if
test=
"param.receiveOrgCode != null"
>
and n.receive_company_org_code like concat(#{param.receiveOrgCode}, '%')
</if>
) a,
idx_biz_jg_register_info r
where a.equ_id = r."RECORD"
<include
refid=
"equ-filter"
/>
) u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
UNION
select
'transferRegistration' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.status,
ne.equ_id,
n.receive_org_code as receiveCompanyCode,
n.receive_org_name as receiveCompanyName,
n.reg_date as commitDate
FROM
"tzs_jg_change_registration_transfer" n,
"tzs_jg_change_registration_transfer_eq" ne
where
n.sequence_nbr = ne.equip_transfer_id
and n.audit_status != '使用单位待提交'
and n.audit_status != '使用单位已撤回'
<if
test=
"param.beginDate != null"
>
and date_ge(CAST(n.reg_date as date), #{param.beginDate})
</if>
<if
test=
"param.endDate != null"
>
and date_le(CAST(n.reg_date as date), #{param.endDate})
</if>
<if
test=
"param.receiveOrgCode != null"
>
and n.receive_company_org_code like concat(#{param.receiveOrgCode}, '%')
</if>
) a,
idx_biz_jg_register_info r
where
a.equ_id = r."RECORD"
<include
refid=
"equ-filter"
/>
) u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
UNION
select
'unitRegistration' as bizType,
count(1) as num,
u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
from
(select
a.sequence_nbr,
a.status,
a.receiveCompanyCode,
r."EQU_LIST" as equList,
r."EQU_CATEGORY" as equCategory,
r."EQU_DEFINE" as equDefine
from
(SELECT
n.sequence_nbr,
n.status,
ne.equ_id,
n.receive_org_code as receiveCompanyCode,
n.receive_org_name as receiveCompanyName,
n.apply_date as commitDate
FROM
"tzs_jg_change_registration_unit" n,
"tzs_jg_change_registration_unit_eq" ne
where
n.sequence_nbr = ne.unit_change_registration_id
and n.status != '使用单位待提交'
and n.status != '使用单位已撤回'
<if
test=
"param.beginDate != null"
>
and date_ge(CAST(n.apply_date as date), #{param.beginDate})
</if>
<if
test=
"param.endDate != null"
>
and date_le(CAST(n.apply_date as date), #{param.endDate})
</if>
<if
test=
"param.receiveOrgCode != null"
>
and n.receive_company_org_code like concat(#{param.receiveOrgCode}, '%')
</if>
) a,
idx_biz_jg_register_info r
where a.equ_id = r."RECORD"
<include
refid=
"equ-filter"
/>
) u
GROUP BY u.status,
u."equList",
u."equCategory",
u."equDefine",
u."receiveCompanyCode"
)
<where>
<if
test=
"param.bizType != null and param.bizType !=''"
>
bizType = #{param.bizType}
</if>
</where>
</select>
</mapper>
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/controller/ReportAnalysisController.java
0 → 100644
View file @
1ef86aa6
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
controller
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO
;
import
com.yeejoin.amos.boot.module.jg.api.service.IReportAnalysisService
;
import
com.yeejoin.amos.boot.module.jg.api.vo.JgBizCountBaseVo
;
import
com.yeejoin.amos.boot.module.jg.api.vo.JgBizEquipStateCountVo
;
import
com.yeejoin.amos.boot.module.ymt.api.common.StringUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author Administrator
*/
@RestController
@RequestMapping
(
value
=
"/report-analysis"
)
@Api
(
tags
=
"报表分析"
)
public
class
ReportAnalysisController
extends
BaseController
{
private
IReportAnalysisService
reportAnalysisService
;
public
ReportAnalysisController
(
IReportAnalysisService
reportAnalysisService
)
{
this
.
reportAnalysisService
=
reportAnalysisService
;
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/notice/count/list"
)
@ApiOperation
(
"告知类业务办理情况统计列表"
)
public
ResponseModel
<
List
<
JgBizCountBaseVo
>>
getNoticeCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
)
{
//设置默认数据权限过滤条件
this
.
setDefaultFilterParam
(
reportAnalysisSearchDTO
);
List
<
JgBizCountBaseVo
>
result
=
reportAnalysisService
.
getNoticeCountList
(
reportAnalysisSearchDTO
);
return
ResponseHelper
.
buildResponse
(
result
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/maintenance/count/list"
)
@ApiOperation
(
"维保备案业务办理情况统计列表"
)
public
ResponseModel
<
List
<
JgBizCountBaseVo
>>
getMaintenanceCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
)
{
//设置默认数据权限过滤条件
this
.
setDefaultFilterParam
(
reportAnalysisSearchDTO
);
List
<
JgBizCountBaseVo
>
result
=
reportAnalysisService
.
getMaintenanceCountList
(
reportAnalysisSearchDTO
);
return
ResponseHelper
.
buildResponse
(
result
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/register/count/list"
)
@ApiOperation
(
"登记类业务办理情况统计列表"
)
public
ResponseModel
<
List
<
JgBizCountBaseVo
>>
getRegisterCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
)
{
//设置默认数据权限过滤条件
this
.
setDefaultFilterParam
(
reportAnalysisSearchDTO
);
List
<
JgBizCountBaseVo
>
result
=
reportAnalysisService
.
getRegisterCountList
(
reportAnalysisSearchDTO
);
return
ResponseHelper
.
buildResponse
(
result
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@GetMapping
(
value
=
"/equip-status/count/list"
)
@ApiOperation
(
"设备状态情况统计列表"
)
public
ResponseModel
<
List
<
JgBizEquipStateCountVo
>>
getEquipStatusCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
)
{
//设置默认数据权限过滤条件
this
.
setDefaultFilterParam
(
reportAnalysisSearchDTO
);
List
<
JgBizEquipStateCountVo
>
result
=
reportAnalysisService
.
getEquipStatusCountList
(
reportAnalysisSearchDTO
);
return
ResponseHelper
.
buildResponse
(
result
);
}
private
void
setDefaultFilterParam
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
){
if
(
StringUtils
.
isEmpty
(
reportAnalysisSearchDTO
.
getReceiveOrgCode
())){
reportAnalysisSearchDTO
.
setReceiveOrgCode
(
getSelectedOrgInfo
().
getCompany
().
getOrgCode
());
}
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/receive-company/tree"
)
@ApiOperation
(
"查询当前登录人的管辖机构树,显示本级及所有下级"
)
public
ResponseModel
<
List
<
CompanyBo
>>
getReceiveCompanyTreeWithAuth
()
{
List
<
CompanyBo
>
result
=
reportAnalysisService
.
getReceiveCompanyTreeWithAuth
(
getSelectedOrgInfo
());
return
ResponseHelper
.
buildResponse
(
result
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/biz-type/list"
)
@ApiOperation
(
"业务类型枚举"
)
public
ResponseModel
<
List
<
Map
<
String
,
Object
>>>
getBizTypeList
(
@RequestParam
String
group
)
{
List
<
Map
<
String
,
Object
>>
result
=
reportAnalysisService
.
getBizTypeList
(
group
);
return
ResponseHelper
.
buildResponse
(
result
);
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/init/ApplicationRunnerImpl.java
View file @
1ef86aa6
...
...
@@ -43,6 +43,8 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
private
JgChangeRegistrationNameServiceImpl
changeRegistrationNameService
;
private
ReportAnalysisServiceImpl
reportAnalysisService
;
public
ApplicationRunnerImpl
(
JgUseRegistrationServiceImpl
useRegistrationService
,
CommonServiceImpl
commonService
,
JgInstallationNoticeServiceImpl
installationNoticeService
,
...
...
@@ -56,7 +58,8 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
JgEnableDisableServiceImpl
jgEnableDisableService
,
JgMaintenanceContractServiceImpl
maintenanceContractService
,
JgScrapCancelServiceImpl
scrapCancelService
,
JgChangeRegistrationNameServiceImpl
changeRegistrationNameService
)
{
JgChangeRegistrationNameServiceImpl
changeRegistrationNameService
,
ReportAnalysisServiceImpl
reportAnalysisService
)
{
this
.
commonService
=
commonService
;
this
.
useRegistrationService
=
useRegistrationService
;
...
...
@@ -84,6 +87,8 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
this
.
scrapCancelService
=
scrapCancelService
;
this
.
changeRegistrationNameService
=
changeRegistrationNameService
;
this
.
reportAnalysisService
=
reportAnalysisService
;
}
...
...
@@ -167,5 +172,8 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
jgChangeRegistrationNames
.
forEach
(
registrationName
->
{
commonService
.
saveExecuteFlowData2Redis
(
registrationName
.
getInstanceId
(),
changeRegistrationNameService
.
buildInstanceRuntimeData
(
registrationName
));
});
// 统计接收机构树 根节点缓存预热
reportAnalysisService
.
initRootOrgReceiveTree2Redis
();
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/ReportAnalysisServiceImpl.java
0 → 100644
View file @
1ef86aa6
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.module.jg.api.bo.JgBizCountDataBO
;
import
com.yeejoin.amos.boot.module.jg.api.common.StringUtil
;
import
com.yeejoin.amos.boot.module.jg.api.dto.JgBizCountDataDto
;
import
com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO
;
import
com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper
;
import
com.yeejoin.amos.boot.module.jg.api.service.IReportAnalysisService
;
import
com.yeejoin.amos.boot.module.jg.api.vo.JgBizCountBaseVo
;
import
com.yeejoin.amos.boot.module.jg.api.vo.JgBizEquipStateCountVo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.lucene.queryparser.classic.QueryParser
;
import
org.elasticsearch.action.search.SearchRequest
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.client.RequestOptions
;
import
org.elasticsearch.client.RestHighLevelClient
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.script.Script
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.aggregations.bucket.terms.Terms
;
import
org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.foundation.utils.Bean
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
javax.annotation.PostConstruct
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author Administrator
*/
@Service
@Slf4j
public
class
ReportAnalysisServiceImpl
implements
IReportAnalysisService
{
private
CommonMapper
commonMapper
;
private
RestHighLevelClient
restHighLevelClient
;
private
Map
<
String
,
String
>
codeNameMap
;
private
Map
<
String
,
String
>
companyCodeNameMap
;
private
Map
<
String
,
String
>
orgCodeNameMap
;
private
RedisUtils
redisUtils
;
private
String
RECEIVE_COUNT_SEARCH_REDIS_KEY
=
"RECEIVE_COUNT_SEARCH_REDIS_KEY"
;
@Value
(
"${sx.province.org.code:50}"
)
private
String
rootOrgCode
;
/**
* 维保备案已发起统计数据范围
*/
private
List
<
String
>
mainLaunchesStatusList
=
Arrays
.
asList
(
"维保单位已撤回"
,
"维保单位已驳回"
,
"维保单位待受理"
,
"监管单位已驳回"
,
"监管单位待受理"
,
"已完成"
);
/**
* 使用登记已发起统计数据范围
*/
private
List
<
String
>
registerLaunchesStatusList
=
Arrays
.
asList
(
"一级待受理"
,
"一级受理已驳回"
,
"一级受理已撤回"
,
"二级待受理"
,
"二级受理已驳回"
,
"二级受理已撤回"
,
"三级待受理"
,
"三级受理已驳回"
,
"已完成"
);
public
ReportAnalysisServiceImpl
(
CommonMapper
commonMapper
,
RestHighLevelClient
restHighLevelClient
,
RedisUtils
redisUtils
)
{
this
.
commonMapper
=
commonMapper
;
this
.
restHighLevelClient
=
restHighLevelClient
;
this
.
redisUtils
=
redisUtils
;
}
@PostConstruct
private
void
init
()
{
// 缓存设备分类信息
initEquipCategoryCache
();
// 缓存公司信息:待优化缓存 保障可以不需要重启
initCompanyCache
();
}
/**
* 缓存根节点的数据的接收机构数据
*/
public
void
initRootOrgReceiveTree2Redis
()
{
getCompanyBos
(
rootOrgCode
);
}
private
void
initEquipCategoryCache
()
{
LambdaQueryWrapper
<
EquipmentCategory
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
select
(
EquipmentCategory:
:
getCode
,
EquipmentCategory:
:
getName
);
List
<
EquipmentCategory
>
equipmentCategoryList
=
commonMapper
.
selectList
(
queryWrapper
);
codeNameMap
=
equipmentCategoryList
.
stream
().
collect
(
Collectors
.
toMap
(
EquipmentCategory:
:
getCode
,
EquipmentCategory:
:
getName
));
}
private
void
initCompanyCache
()
{
List
<
CompanyBo
>
companyBos
=
commonMapper
.
queryJGCompanyCodeName
(
null
);
companyCodeNameMap
=
companyBos
.
stream
().
collect
(
Collectors
.
toMap
(
CompanyBo:
:
getCompanyCode
,
CompanyBo:
:
getCompanyName
,
(
k1
,
k2
)
->
k2
));
orgCodeNameMap
=
companyBos
.
stream
().
collect
(
Collectors
.
toMap
(
CompanyBo:
:
getOrgCode
,
CompanyBo:
:
getCompanyName
,
(
k1
,
k2
)
->
k2
));
}
@Override
public
List
<
JgBizCountBaseVo
>
getNoticeCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
)
{
List
<
JgBizCountDataBO
>
countDataBOList
=
commonMapper
.
queryForNoticeCountData
(
reportAnalysisSearchDTO
);
List
<
JgBizCountBaseVo
>
result
=
combineCountData
(
countDataBOList
);
sortData
(
result
,
reportAnalysisSearchDTO
);
filledCommonCountSummaryRow
(
result
);
return
result
;
}
private
void
sortData
(
List
<
JgBizCountBaseVo
>
countBaseVoList
,
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
)
{
JgBizCountBaseVo
.
sortList
(
countBaseVoList
,
reportAnalysisSearchDTO
.
getSortField
(),
reportAnalysisSearchDTO
.
getSortOrder
());
}
@Override
public
List
<
JgBizCountBaseVo
>
getRegisterCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
)
{
List
<
JgBizCountDataBO
>
countDataBOList
=
commonMapper
.
queryForRegisterCountData
(
reportAnalysisSearchDTO
);
List
<
JgBizCountBaseVo
>
result
=
combineRegisterCountData
(
countDataBOList
);
sortData
(
result
,
reportAnalysisSearchDTO
);
filledCommonCountSummaryRow
(
result
);
return
result
;
}
private
List
<
JgBizCountBaseVo
>
combineCountData
(
List
<
JgBizCountDataBO
>
countDataBOList
)
{
// 去重
Set
<
JgBizCountDataDto
>
countVoSet
=
distinctJgBizCountDataDtos
(
countDataBOList
);
// 已去重行数据为集合,填充每种流程状态下单据的数量及将code->name
return
countVoSet
.
stream
().
map
(
c
->
{
JgBizCountBaseVo
vo
=
new
JgBizCountBaseVo
();
vo
.
setBizGroup
(
"施工告知"
);
vo
.
setBizType
(
c
.
getBizType
());
vo
.
setReceiveCompanyName
(
companyCodeNameMap
.
get
(
c
.
getReceiveCompanyCode
()));
vo
.
setEquListName
(
getEquipCategoryNameByCode
(
c
.
getEquList
()));
vo
.
setEquCategoryName
(
getEquipCategoryNameByCode
(
c
.
getEquCategory
()));
vo
.
setEquDefineName
(
getEquipCategoryNameByCode
(
c
.
getEquDefine
()));
vo
.
setFinishedNumber
(
this
.
countDocumentNum
(
countDataBOList
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
(),
c
));
// 已发起: 已完成 + 待受理
vo
.
setLaunchesNumber
(
this
.
countDocumentNum
(
countDataBOList
,
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
(),
c
)
+
vo
.
getFinishedNumber
());
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
private
Set
<
JgBizCountDataDto
>
distinctJgBizCountDataDtos
(
List
<
JgBizCountDataBO
>
countDataBOList
)
{
return
countDataBOList
.
stream
().
map
(
c
->
{
JgBizCountDataDto
target
=
new
JgBizCountDataDto
();
Bean
.
copyExistPropertis
(
c
,
target
);
return
target
;
}).
collect
(
Collectors
.
toSet
());
}
private
Long
countDocumentNum
(
List
<
JgBizCountDataBO
>
countDataBOList
,
int
code
,
JgBizCountDataDto
c
)
{
return
countDataBOList
.
stream
().
filter
(
d
->
Objects
.
equals
(
d
.
getReceiveCompanyCode
(),
c
.
getReceiveCompanyCode
())
&&
Objects
.
equals
(
d
.
getEquList
(),
c
.
getEquList
())
&&
Objects
.
equals
(
d
.
getEquCategory
(),
c
.
getEquCategory
())
&&
Objects
.
equals
(
d
.
getEquCategory
(),
c
.
getEquCategory
())
&&
Objects
.
equals
(
d
.
getBizType
(),
c
.
getBizType
())
&&
d
.
getStatus
().
equals
(
String
.
valueOf
(
code
))).
mapToLong
(
JgBizCountDataBO:
:
getNum
).
sum
();
}
private
Long
countDocumentNum
(
List
<
JgBizCountDataBO
>
countDataBOList
,
List
<
String
>
statusList
,
JgBizCountDataDto
c
)
{
return
countDataBOList
.
stream
().
filter
(
d
->
Objects
.
equals
(
d
.
getReceiveCompanyCode
(),
c
.
getReceiveCompanyCode
())
&&
Objects
.
equals
(
d
.
getEquList
(),
c
.
getEquList
())
&&
Objects
.
equals
(
d
.
getEquCategory
(),
c
.
getEquCategory
())
&&
Objects
.
equals
(
d
.
getEquCategory
(),
c
.
getEquCategory
())
&&
Objects
.
equals
(
d
.
getBizType
(),
c
.
getBizType
())
&&
statusList
.
contains
(
d
.
getStatus
())).
mapToLong
(
JgBizCountDataBO:
:
getNum
).
sum
();
}
private
String
getEquipCategoryNameByCode
(
String
code
)
{
return
StringUtil
.
isNotEmpty
(
code
)
?
codeNameMap
.
get
(
code
)
:
""
;
}
@Override
public
List
<
JgBizCountBaseVo
>
getMaintenanceCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDTO
)
{
List
<
JgBizCountDataBO
>
countDataBOList
=
commonMapper
.
queryForMaintenanceCountData
(
reportAnalysisSearchDTO
);
List
<
JgBizCountBaseVo
>
result
=
combineMaintenanceCountData
(
countDataBOList
);
sortData
(
result
,
reportAnalysisSearchDTO
);
filledCommonCountSummaryRow
(
result
);
return
result
;
}
private
void
filledCommonCountSummaryRow
(
List
<
JgBizCountBaseVo
>
result
)
{
if
(
result
.
size
()
>
0
)
{
JgBizCountBaseVo
summaryRow
=
new
JgBizCountBaseVo
();
summaryRow
.
setFinishedNumber
(
result
.
stream
().
mapToLong
(
JgBizCountBaseVo:
:
getFinishedNumber
).
sum
());
summaryRow
.
setLaunchesNumber
(
result
.
stream
().
mapToLong
(
JgBizCountBaseVo:
:
getLaunchesNumber
).
sum
());
result
.
add
(
summaryRow
);
}
}
private
List
<
JgBizCountBaseVo
>
combineMaintenanceCountData
(
List
<
JgBizCountDataBO
>
countDataBOList
)
{
// 去重
Set
<
JgBizCountDataDto
>
countVoSet
=
distinctJgBizCountDataDtos
(
countDataBOList
);
// 已去重行数据为集合,填充每种流程状态下单据的数量及将code->name
return
countVoSet
.
stream
().
map
(
c
->
{
JgBizCountBaseVo
vo
=
new
JgBizCountBaseVo
();
vo
.
setBizGroup
(
"维保备案"
);
return
buildJgBizCountBaseVo
(
countDataBOList
,
c
,
vo
,
mainLaunchesStatusList
);
}).
collect
(
Collectors
.
toList
());
}
private
List
<
JgBizCountBaseVo
>
combineRegisterCountData
(
List
<
JgBizCountDataBO
>
countDataBOList
)
{
// 去重
Set
<
JgBizCountDataDto
>
countVoSet
=
distinctJgBizCountDataDtos
(
countDataBOList
);
// 已去重行数据为集合,填充每种流程状态下单据的数量及将code->name
return
countVoSet
.
stream
().
map
(
c
->
{
JgBizCountBaseVo
vo
=
new
JgBizCountBaseVo
();
vo
.
setBizGroup
(
"使用登记"
);
return
buildJgBizCountBaseVo
(
countDataBOList
,
c
,
vo
,
registerLaunchesStatusList
);
}).
collect
(
Collectors
.
toList
());
}
private
JgBizCountBaseVo
buildJgBizCountBaseVo
(
List
<
JgBizCountDataBO
>
countDataBOList
,
JgBizCountDataDto
c
,
JgBizCountBaseVo
vo
,
List
<
String
>
registerLaunchesStatusList
)
{
vo
.
setBizType
(
c
.
getBizType
());
vo
.
setReceiveCompanyName
(
companyCodeNameMap
.
get
(
c
.
getReceiveCompanyCode
()));
vo
.
setEquListName
(
getEquipCategoryNameByCode
(
c
.
getEquList
()));
vo
.
setEquCategoryName
(
getEquipCategoryNameByCode
(
c
.
getEquCategory
()));
vo
.
setEquDefineName
(
getEquipCategoryNameByCode
(
c
.
getEquDefine
()));
vo
.
setFinishedNumber
(
this
.
countDocumentNum
(
countDataBOList
,
Collections
.
singletonList
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
()),
c
));
vo
.
setLaunchesNumber
(
this
.
countDocumentNum
(
countDataBOList
,
registerLaunchesStatusList
,
c
));
return
vo
;
}
@Override
public
List
<
JgBizEquipStateCountVo
>
getEquipStatusCountList
(
ReportAnalysisSearchDTO
reportAnalysisSearchDT
)
{
if
(
StringUtils
.
isEmpty
(
reportAnalysisSearchDT
.
getReceiveOrgCode
()))
{
throw
new
BadRequest
(
"单位不能为空"
);
}
SearchRequest
searchRequest
=
new
SearchRequest
(
"idx_biz_view_jg_all"
);
SearchSourceBuilder
sourceBuilder
=
new
SearchSourceBuilder
();
BoolQueryBuilder
boolMust
=
QueryBuilders
.
boolQuery
();
// 前端筛选条件过滤
this
.
buildRequestSearchParam
(
reportAnalysisSearchDT
,
boolMust
);
// 数据权限过滤
this
.
buildPermissionLimit
(
reportAnalysisSearchDT
,
boolMust
);
// 设备范围过滤
this
.
jgEquipFilterQueryBuild
(
boolMust
);
sourceBuilder
.
query
(
boolMust
);
sourceBuilder
.
size
(
0
);
// 由于java api查询的数据为镶套,非便扁平化数据,故将 设备状态 + 监管机构 + 设备种类 + 设备类别+ 设备品种 ,作为分组条件中间用 | 分割,注意顺序 解析时按照此字段顺序解析
Script
script
=
new
Script
(
Script
.
DEFAULT_SCRIPT_TYPE
,
Script
.
DEFAULT_SCRIPT_LANG
,
"if(doc['EQU_DEFINE_CODE.keyword'].size() != 0){ return doc['EQU_STATE'].value + '|' + doc['ORG_BRANCH_CODE.keyword'].value + '|' + doc['EQU_LIST_CODE'].value + '|' + doc['EQU_CATEGORY_CODE'].value + '|' + doc['EQU_DEFINE_CODE.keyword'].value} else { return doc['EQU_STATE'].value + '|' + doc['ORG_BRANCH_CODE.keyword'].value + '|' + doc['EQU_LIST_CODE'].value + '|' + doc['EQU_CATEGORY_CODE'].value + '|'}"
,
new
HashMap
<>());
TermsAggregationBuilder
aggregation
=
AggregationBuilders
.
terms
(
"result"
).
script
(
script
);
sourceBuilder
.
aggregation
(
aggregation
);
searchRequest
.
source
(
sourceBuilder
);
try
{
SearchResponse
searchResponse
=
restHighLevelClient
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
Terms
terms
=
searchResponse
.
getAggregations
().
get
(
"result"
);
List
<
JgBizCountDataBO
>
jgBizCountDataBOList
=
new
ArrayList
<>();
for
(
Terms
.
Bucket
bucket
:
terms
.
getBuckets
())
{
JgBizCountDataBO
bizCountData
=
esItemToVo
(
bucket
);
jgBizCountDataBOList
.
add
(
bizCountData
);
}
List
<
JgBizEquipStateCountVo
>
result
=
combineEquipStatusCountData
(
jgBizCountDataBOList
);
equipStateSortData
(
result
,
reportAnalysisSearchDT
);
filledEquipStateSummaryRow
(
result
);
return
result
;
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
return
new
ArrayList
<>();
}
private
void
equipStateSortData
(
List
<
JgBizEquipStateCountVo
>
result
,
ReportAnalysisSearchDTO
reportAnalysisSearchDT
)
{
JgBizEquipStateCountVo
.
sortList
(
result
,
reportAnalysisSearchDT
.
getSortField
(),
reportAnalysisSearchDT
.
getSortOrder
());
}
private
void
filledEquipStateSummaryRow
(
List
<
JgBizEquipStateCountVo
>
result
)
{
if
(
result
.
size
()
>
0
)
{
JgBizEquipStateCountVo
summaryRow
=
new
JgBizEquipStateCountVo
();
summaryRow
.
setTotalNumber
(
result
.
stream
().
mapToLong
(
JgBizEquipStateCountVo:
:
getTotalNumber
).
sum
());
summaryRow
.
setInUseNumber
(
result
.
stream
().
mapToLong
(
JgBizEquipStateCountVo:
:
getInUseNumber
).
sum
());
summaryRow
.
setScrapCancel
(
result
.
stream
().
mapToLong
(
JgBizEquipStateCountVo:
:
getScrapCancel
).
sum
());
summaryRow
.
setStopUseNumber
(
result
.
stream
().
mapToLong
(
JgBizEquipStateCountVo:
:
getStopUseNumber
).
sum
());
result
.
add
(
summaryRow
);
}
}
@Override
public
List
<
CompanyBo
>
getReceiveCompanyTreeWithAuth
(
ReginParams
selectedOrgInfo
)
{
return
getCompanyBos
(
selectedOrgInfo
.
getCompany
().
getOrgCode
());
}
@Override
public
List
<
Map
<
String
,
Object
>>
getBizTypeList
(
String
groupKey
)
{
return
JgBizCountBaseVo
.
BizType
.
getBizTypeListByGroup
(
groupKey
);
}
private
List
<
CompanyBo
>
getCompanyBos
(
String
orgCode
)
{
List
<
CompanyBo
>
companyBoList
=
commonMapper
.
queryJGCompanyCodeName
(
orgCode
);
synchronized
(
this
)
{
String
redisKey
=
this
.
buildRedisKey
(
orgCode
);
if
(
redisUtils
.
hasKey
(
redisKey
))
{
return
JSONObject
.
parseArray
(
redisUtils
.
get
(
redisKey
).
toString
(),
CompanyBo
.
class
);
}
else
{
if
(
redisUtils
.
hasKey
(
redisKey
))
{
return
JSONObject
.
parseArray
(
redisUtils
.
get
(
redisKey
).
toString
(),
CompanyBo
.
class
);
}
else
{
return
setComTree2Redis
(
redisKey
,
comList2ComTree
(
companyBoList
,
orgCode
));
}
}
}
}
private
List
<
CompanyBo
>
setComTree2Redis
(
String
redisKey
,
List
<
CompanyBo
>
comList2ComTree
)
{
redisUtils
.
set
(
redisKey
,
JSONObject
.
toJSONString
(
comList2ComTree
),
10
*
60
*
60
);
return
comList2ComTree
;
}
private
String
buildRedisKey
(
String
currentPersonOrgCode
)
{
return
RECEIVE_COUNT_SEARCH_REDIS_KEY
+
":"
+
currentPersonOrgCode
;
}
private
List
<
CompanyBo
>
comList2ComTree
(
List
<
CompanyBo
>
companyBoList
,
String
currentPersonOrgCode
)
{
return
companyBoList
.
stream
().
filter
(
c
->
c
.
getOrgCode
().
equals
(
currentPersonOrgCode
)).
peek
(
c
->
c
.
setChildren
(
this
.
getComChild
(
c
.
getSequenceNbr
(),
companyBoList
))).
collect
(
Collectors
.
toList
());
}
private
List
<
CompanyBo
>
getComChild
(
Long
parentId
,
List
<
CompanyBo
>
companyBoList
)
{
return
companyBoList
.
stream
().
filter
(
c
->
c
.
getParentId
().
equals
(
parentId
)).
peek
(
c
->
c
.
setChildren
(
this
.
getComChild
(
c
.
getSequenceNbr
(),
companyBoList
))).
collect
(
Collectors
.
toList
());
}
private
void
buildRequestSearchParam
(
ReportAnalysisSearchDTO
reportAnalysisSearchDT
,
BoolQueryBuilder
boolMust
)
{
if
(
StringUtils
.
isNotEmpty
(
reportAnalysisSearchDT
.
getEquList
()))
{
boolMust
.
must
(
QueryBuilders
.
termQuery
(
"EQU_LIST_CODE"
,
QueryParser
.
escape
(
reportAnalysisSearchDT
.
getEquList
().
toLowerCase
())));
}
if
(
StringUtils
.
isNotEmpty
(
reportAnalysisSearchDT
.
getEquCategory
()))
{
boolMust
.
must
(
QueryBuilders
.
termQuery
(
"EQU_CATEGORY_CODE"
,
QueryParser
.
escape
(
reportAnalysisSearchDT
.
getEquCategory
().
toLowerCase
())));
}
if
(
StringUtils
.
isNotEmpty
(
reportAnalysisSearchDT
.
getEquDefine
()))
{
boolMust
.
must
(
QueryBuilders
.
termQuery
(
"EQU_DEFINE_CODE.keyword"
,
QueryParser
.
escape
(
reportAnalysisSearchDT
.
getEquDefine
().
toLowerCase
())));
}
}
private
List
<
JgBizEquipStateCountVo
>
combineEquipStatusCountData
(
List
<
JgBizCountDataBO
>
countDataBOList
)
{
// 去重
Set
<
JgBizCountDataDto
>
countVoSet
=
distinctJgBizCountDataDtos
(
countDataBOList
);
// 已去重行数据为集合,填充每种流程状态下单据的数量及将code->name
return
countVoSet
.
stream
().
map
(
c
->
{
JgBizEquipStateCountVo
vo
=
new
JgBizEquipStateCountVo
();
// 此处注意:由于es 存放的org_code 非company_code
vo
.
setManagementUnitName
(
orgCodeNameMap
.
get
(
c
.
getReceiveCompanyCode
()));
filledParentCompanyName
(
c
,
vo
);
vo
.
setEquListName
(
getEquipCategoryNameByCode
(
c
.
getEquList
()));
vo
.
setEquCategoryName
(
getEquipCategoryNameByCode
(
c
.
getEquCategory
()));
vo
.
setEquDefineName
(
getEquipCategoryNameByCode
(
c
.
getEquDefine
()));
// 设备状态: 1在用 2停用 3报废 4注销
vo
.
setTotalNumber
(
this
.
countDocumentNum
(
countDataBOList
,
Arrays
.
asList
(
"1"
,
"2"
),
c
));
vo
.
setInUseNumber
(
this
.
countDocumentNum
(
countDataBOList
,
Collections
.
singletonList
(
"1"
),
c
));
vo
.
setStopUseNumber
(
this
.
countDocumentNum
(
countDataBOList
,
Collections
.
singletonList
(
"2"
),
c
));
vo
.
setScrapCancel
(
this
.
countDocumentNum
(
countDataBOList
,
Arrays
.
asList
(
"3"
,
"4"
),
c
));
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
private
void
filledParentCompanyName
(
JgBizCountDataDto
c
,
JgBizEquipStateCountVo
vo
)
{
// 直接上级(区县)
String
parentOrgCode
=
c
.
getReceiveCompanyCode
().
substring
(
0
,
c
.
getReceiveCompanyCode
().
lastIndexOf
(
"*"
));
vo
.
setCountyManagementUnitName
(
orgCodeNameMap
.
get
(
parentOrgCode
));
// 上上级(地市)
String
parent2OrgCode
=
parentOrgCode
.
substring
(
0
,
parentOrgCode
.
lastIndexOf
(
"*"
));
vo
.
setCityManagementUnitName
(
orgCodeNameMap
.
get
(
parent2OrgCode
));
}
private
JgBizCountDataBO
esItemToVo
(
Terms
.
Bucket
bucket
)
{
// 设备状态 + 监管机构 + 设备种类 + 设备类别+ 设备品种
String
keys
=
bucket
.
getKeyAsString
();
String
[]
bizColumnsData
=
keys
.
split
(
"\\|"
);
JgBizCountDataBO
countDataBO
=
new
JgBizCountDataBO
();
countDataBO
.
setBizType
(
"equipCount"
);
countDataBO
.
setStatus
(
bizColumnsData
[
0
]);
countDataBO
.
setReceiveCompanyCode
(
bizColumnsData
[
1
]);
countDataBO
.
setEquList
(
bizColumnsData
[
2
]);
countDataBO
.
setEquCategory
(
bizColumnsData
[
3
]);
countDataBO
.
setEquDefine
(
bizColumnsData
[
4
]);
countDataBO
.
setNum
(
bucket
.
getDocCount
());
return
countDataBO
;
}
private
void
buildPermissionLimit
(
ReportAnalysisSearchDTO
reportAnalysisSearchDT
,
BoolQueryBuilder
boolMust
)
{
//右模糊查询,上级看本级级下级数据
boolMust
.
must
(
QueryBuilders
.
matchPhrasePrefixQuery
(
"ORG_BRANCH_CODE"
,
reportAnalysisSearchDT
.
getReceiveOrgCode
()));
}
/**
* 过滤设备
*
* @param boolMust 必输条件
*/
private
void
jgEquipFilterQueryBuild
(
BoolQueryBuilder
boolMust
)
{
// 监管类型数据
boolMust
.
must
(
QueryBuilders
.
termQuery
(
"DATA_SOURCE"
,
"jg"
));
// 设备状态存在
boolMust
.
must
(
QueryBuilders
.
existsQuery
(
"EQU_STATE"
));
// 被监管状态: 1在用 2停用 3报废 4注销
boolMust
.
must
(
QueryBuilders
.
rangeQuery
(
"EQU_STATE"
).
gte
(
1
));
}
}
\ 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