Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
civil-bigdata
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
civil
civil-bigdata
Commits
18a10678
Commit
18a10678
authored
Jan 29, 2023
by
wqc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
app数据修改
parent
9060fe45
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
2862 additions
and
2770 deletions
+2862
-2770
api-server/src/main/java/com/zq/api/controller/ApiController.java
+149
-149
api-server/src/main/java/com/zq/api/feign/PortalFeign.java
+79
-76
api-server/src/main/java/com/zq/api/service/ApiService.java
+139
-139
api-server/src/main/java/com/zq/api/service/IApiLogic.java
+120
-117
api-server/src/main/java/com/zq/api/service/impl/ApiV100Logic.java
+197
-192
portal-server/src/main/java/com/zq/portal/controller/app/HyStatsController.java
+47
-41
portal-server/src/main/java/com/zq/portal/dao/HyStatsDao.java
+79
-72
portal-server/src/main/java/com/zq/portal/entity/VMarriageStats.java
+98
-98
portal-server/src/main/java/com/zq/portal/manager/PortalCacheKeys.java
+151
-147
portal-server/src/main/java/com/zq/portal/service/HyStatsService.java
+434
-393
portal-server/src/main/java/com/zq/portal/vo/HYVo.java
+184
-184
portal-server/src/main/java/com/zq/portal/vo/SearchReqVo.java
+29
-25
portal-server/src/main/resources/mapper/CjStatsMapper.xml
+159
-157
portal-server/src/main/resources/mapper/HyStatsMapper.xml
+194
-179
portal-server/src/main/resources/mapper/ShjzStatsDao.xml
+242
-242
resource-server/src/main/java/com/zq/resource/controller/DeptController.java
+86
-84
sys-server/src/main/java/com/zq/system/modules/system/service/VerifyService.java
+43
-43
sys-server/src/main/java/com/zq/system/modules/system/service/impl/UserServiceImpl.java
+432
-432
No files found.
api-server/src/main/java/com/zq/api/controller/ApiController.java
View file @
18a10678
package
com
.
zq
.
api
.
controller
;
import
cn.hutool.core.exceptions.ExceptionUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.extra.servlet.ServletUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.zq.api.constant.ApiCodeEnum
;
import
com.zq.api.constant.ApiMethod
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
import
com.zq.api.service.ApiService
;
import
com.zq.api.service.IApiLogic
;
import
com.zq.api.utils.ApiUtils
;
import
com.zq.common.utils.ThrowableUtil
;
import
com.zq.common.vo.ResultVo
;
import
feign.FeignException
;
import
io.swagger.annotations.Api
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.core.annotation.AnnotationUtils
;
import
org.springframework.web.bind.annotation.RequestHeader
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Method
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Api
(
tags
=
"API接口"
)
@RestController
@RequiredArgsConstructor
@RequestMapping
(
"/api"
)
public
class
ApiController
{
private
final
ApiService
apiService
;
/**
* 获取信息入口
* <p>
* 2016年10月3日 下午1:38:27
*/
@RequestMapping
(
"/action"
)
public
ApiResp
action
(
@RequestHeader
(
required
=
false
)
String
appId
,
@RequestHeader
(
required
=
false
)
String
appSecret
,
@RequestHeader
(
required
=
false
)
String
Authorization
,
HttpServletRequest
request
)
{
long
start
=
System
.
currentTimeMillis
();
ApiForm
form
=
ServletUtil
.
toBean
(
request
,
ApiForm
.
class
,
true
);
// 不处理Request Method:OPTIONS的请求
if
(
request
.
getMethod
().
equals
(
"OPTIONS"
))
{
return
ApiUtils
.
getSuccessResp
(
form
);
}
form
.
setType
(
2
);
String
method
=
form
.
getMethod
();
if
(
StrUtil
.
isBlank
(
method
))
{
method
=
request
.
getParameter
(
"method"
);
form
.
setMethod
(
method
);
}
String
stackTrace
=
""
;
ApiResp
resp
;
try
{
// 身份验证
resp
=
apiService
.
auth
(
form
,
appId
,
appSecret
,
Authorization
);
if
(
resp
.
isSuccess
())
{
//解析业务参数
if
(!
form
.
parseBizContent
())
{
return
ApiUtils
.
getParamError
(
form
);
}
// 调用接口方法
resp
=
apiService
.
action
(
form
);
}
}
catch
(
Exception
e
)
{
stackTrace
=
ThrowableUtil
.
getStackTrace
(
e
);
// 判断指定异常是否来自或者包含指定异常
if
(
ExceptionUtil
.
isFromOrSuppressedThrowable
(
e
,
FeignException
.
Unauthorized
.
class
))
{
resp
=
ApiUtils
.
toApiResp
(
form
,
ResultVo
.
fail
(
401
,
"Unauthorized"
));
}
else
if
(
stackTrace
.
contains
(
"Load balancer does not have available server for client"
))
{
resp
=
ApiUtils
.
getServiceNotAvailableError
(
form
);
}
else
if
(
stackTrace
.
contains
(
"Connection refused: connect executing"
))
{
resp
=
ApiUtils
.
getServiceNotAvailableError
(
form
);
}
else
{
resp
=
ApiUtils
.
getMethodHandlerError
(
form
);
}
}
// 没有数据输出空
resp
=
resp
==
null
?
new
ApiResp
(
form
)
:
resp
;
String
logType
=
resp
.
isSuccess
()
?
"INFO"
:
"400"
.
equals
(
resp
.
getCode
())
?
"WARN"
:
"ERROR"
;
// 如果是500错误, 服务会返回错误的堆栈信息
if
(
resp
.
getCode
().
equals
(
ApiCodeEnum
.
SERVER_ERROR
.
code
()))
{
stackTrace
=
resp
.
getMsg
();
resp
.
setMsg
(
ApiCodeEnum
.
SERVER_ERROR
.
msg
());
}
// 调试日志
if
(
ApiUtils
.
DEBUG
)
{
System
.
out
.
println
(
"API DEBUG ACTION \n[from="
+
form
+
"]"
+
"\n[resp="
+
JSON
.
toJSONString
(
resp
)
+
"]"
+
"\n[time="
+
(
System
.
currentTimeMillis
()
-
start
)
+
"ms]"
);
}
String
clientIP
=
ServletUtil
.
getClientIP
(
request
);
apiService
.
addLog
(
form
,
clientIP
,
logType
,
resp
.
getMsg
(),
stackTrace
,
System
.
currentTimeMillis
()
-
start
);
return
resp
;
}
/**
* 开关调试日志
* <p>
* 2016年10月3日 下午5:47:46
*/
@RequestMapping
(
"/debug"
)
public
ApiResp
debug
(
HttpServletRequest
request
)
{
ApiForm
from
=
ServletUtil
.
toBean
(
request
,
ApiForm
.
class
,
true
);
ApiUtils
.
DEBUG
=
!
ApiUtils
.
DEBUG
;
return
new
ApiResp
(
from
).
setData
(
ApiUtils
.
DEBUG
);
}
@RequestMapping
(
"/method"
)
public
ApiResp
getAllMethod
(
@RequestParam
(
required
=
false
)
String
service
,
@RequestParam
(
required
=
false
)
String
name
)
{
List
<
Map
<
String
,
Object
>>
methodList
=
new
ArrayList
<>();
Method
[]
methods
=
IApiLogic
.
class
.
getMethods
();
for
(
Method
method
:
methods
)
{
Class
<?>[]
params
=
method
.
getParameterTypes
();
if
(
params
.
length
==
1
&&
(
params
[
0
]
==
ApiForm
.
class
))
{
ApiMethod
apiMethod
=
AnnotationUtils
.
getAnnotation
(
method
,
ApiMethod
.
class
);
if
(
StrUtil
.
isNotBlank
(
service
))
{
if
(
apiMethod
==
null
||
!
apiMethod
.
service
().
equals
(
service
))
{
continue
;
}
}
if
(
StrUtil
.
isNotBlank
(
name
))
{
if
((
apiMethod
==
null
||
!
apiMethod
.
value
().
contains
(
name
))
&&
!
method
.
getName
().
toLowerCase
().
contains
(
name
.
toLowerCase
()))
{
continue
;
}
}
Map
<
String
,
Object
>
data
=
new
HashMap
<>();
data
.
put
(
"value"
,
method
.
getName
());
data
.
put
(
"name"
,
apiMethod
==
null
?
""
:
apiMethod
.
value
());
data
.
put
(
"service"
,
apiMethod
==
null
?
""
:
apiMethod
.
service
());
methodList
.
add
(
data
);
}
}
return
ApiUtils
.
toApiResp
(
new
ApiForm
(),
ResultVo
.
success
(
methodList
));
}
}
package
com
.
zq
.
api
.
controller
;
import
cn.hutool.core.exceptions.ExceptionUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.extra.servlet.ServletUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.zq.api.constant.ApiCodeEnum
;
import
com.zq.api.constant.ApiMethod
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
import
com.zq.api.service.ApiService
;
import
com.zq.api.service.IApiLogic
;
import
com.zq.api.utils.ApiUtils
;
import
com.zq.common.utils.ThrowableUtil
;
import
com.zq.common.vo.ResultVo
;
import
feign.FeignException
;
import
io.swagger.annotations.Api
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.core.annotation.AnnotationUtils
;
import
org.springframework.web.bind.annotation.RequestHeader
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Method
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Api
(
tags
=
"API接口"
)
@RestController
@RequiredArgsConstructor
@RequestMapping
(
"/api"
)
public
class
ApiController
{
private
final
ApiService
apiService
;
/**
* 获取信息入口
* <p>
* 2016年10月3日 下午1:38:27
*/
@RequestMapping
(
"/action"
)
public
ApiResp
action
(
@RequestHeader
(
required
=
false
)
String
appId
,
@RequestHeader
(
required
=
false
)
String
appSecret
,
@RequestHeader
(
required
=
false
)
String
Authorization
,
HttpServletRequest
request
)
{
long
start
=
System
.
currentTimeMillis
();
ApiForm
form
=
ServletUtil
.
toBean
(
request
,
ApiForm
.
class
,
true
);
// 不处理Request Method:OPTIONS的请求
if
(
request
.
getMethod
().
equals
(
"OPTIONS"
))
{
return
ApiUtils
.
getSuccessResp
(
form
);
}
form
.
setType
(
1
);
String
method
=
form
.
getMethod
();
if
(
StrUtil
.
isBlank
(
method
))
{
method
=
request
.
getParameter
(
"method"
);
form
.
setMethod
(
method
);
}
String
stackTrace
=
""
;
ApiResp
resp
;
try
{
// 身份验证
resp
=
apiService
.
auth
(
form
,
appId
,
appSecret
,
Authorization
);
if
(
resp
.
isSuccess
())
{
//解析业务参数
if
(!
form
.
parseBizContent
())
{
return
ApiUtils
.
getParamError
(
form
);
}
// 调用接口方法
resp
=
apiService
.
action
(
form
);
}
}
catch
(
Exception
e
)
{
stackTrace
=
ThrowableUtil
.
getStackTrace
(
e
);
// 判断指定异常是否来自或者包含指定异常
if
(
ExceptionUtil
.
isFromOrSuppressedThrowable
(
e
,
FeignException
.
Unauthorized
.
class
))
{
resp
=
ApiUtils
.
toApiResp
(
form
,
ResultVo
.
fail
(
401
,
"Unauthorized"
));
}
else
if
(
stackTrace
.
contains
(
"Load balancer does not have available server for client"
))
{
resp
=
ApiUtils
.
getServiceNotAvailableError
(
form
);
}
else
if
(
stackTrace
.
contains
(
"Connection refused: connect executing"
))
{
resp
=
ApiUtils
.
getServiceNotAvailableError
(
form
);
}
else
{
resp
=
ApiUtils
.
getMethodHandlerError
(
form
);
}
}
// 没有数据输出空
resp
=
resp
==
null
?
new
ApiResp
(
form
)
:
resp
;
String
logType
=
resp
.
isSuccess
()
?
"INFO"
:
"400"
.
equals
(
resp
.
getCode
())
?
"WARN"
:
"ERROR"
;
// 如果是500错误, 服务会返回错误的堆栈信息
if
(
resp
.
getCode
().
equals
(
ApiCodeEnum
.
SERVER_ERROR
.
code
()))
{
stackTrace
=
resp
.
getMsg
();
resp
.
setMsg
(
ApiCodeEnum
.
SERVER_ERROR
.
msg
());
}
// 调试日志
if
(
ApiUtils
.
DEBUG
)
{
System
.
out
.
println
(
"API DEBUG ACTION \n[from="
+
form
+
"]"
+
"\n[resp="
+
JSON
.
toJSONString
(
resp
)
+
"]"
+
"\n[time="
+
(
System
.
currentTimeMillis
()
-
start
)
+
"ms]"
);
}
String
clientIP
=
ServletUtil
.
getClientIP
(
request
);
apiService
.
addLog
(
form
,
clientIP
,
logType
,
resp
.
getMsg
(),
stackTrace
,
System
.
currentTimeMillis
()
-
start
);
return
resp
;
}
/**
* 开关调试日志
* <p>
* 2016年10月3日 下午5:47:46
*/
@RequestMapping
(
"/debug"
)
public
ApiResp
debug
(
HttpServletRequest
request
)
{
ApiForm
from
=
ServletUtil
.
toBean
(
request
,
ApiForm
.
class
,
true
);
ApiUtils
.
DEBUG
=
!
ApiUtils
.
DEBUG
;
return
new
ApiResp
(
from
).
setData
(
ApiUtils
.
DEBUG
);
}
@RequestMapping
(
"/method"
)
public
ApiResp
getAllMethod
(
@RequestParam
(
required
=
false
)
String
service
,
@RequestParam
(
required
=
false
)
String
name
)
{
List
<
Map
<
String
,
Object
>>
methodList
=
new
ArrayList
<>();
Method
[]
methods
=
IApiLogic
.
class
.
getMethods
();
for
(
Method
method
:
methods
)
{
Class
<?>[]
params
=
method
.
getParameterTypes
();
if
(
params
.
length
==
1
&&
(
params
[
0
]
==
ApiForm
.
class
))
{
ApiMethod
apiMethod
=
AnnotationUtils
.
getAnnotation
(
method
,
ApiMethod
.
class
);
if
(
StrUtil
.
isNotBlank
(
service
))
{
if
(
apiMethod
==
null
||
!
apiMethod
.
service
().
equals
(
service
))
{
continue
;
}
}
if
(
StrUtil
.
isNotBlank
(
name
))
{
if
((
apiMethod
==
null
||
!
apiMethod
.
value
().
contains
(
name
))
&&
!
method
.
getName
().
toLowerCase
().
contains
(
name
.
toLowerCase
()))
{
continue
;
}
}
Map
<
String
,
Object
>
data
=
new
HashMap
<>();
data
.
put
(
"value"
,
method
.
getName
());
data
.
put
(
"name"
,
apiMethod
==
null
?
""
:
apiMethod
.
value
());
data
.
put
(
"service"
,
apiMethod
==
null
?
""
:
apiMethod
.
service
());
methodList
.
add
(
data
);
}
}
return
ApiUtils
.
toApiResp
(
new
ApiForm
(),
ResultVo
.
success
(
methodList
));
}
}
api-server/src/main/java/com/zq/api/feign/PortalFeign.java
View file @
18a10678
package
com
.
zq
.
api
.
feign
;
import
com.zq.api.config.FeignConfig
;
import
com.zq.common.vo.ResultVo
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Map
;
@FeignClient
(
name
=
"PORTAL-SERVER"
,
configuration
=
FeignConfig
.
class
)
//指定调用哪个微服务
@RequestMapping
(
"/portal/app"
)
public
interface
PortalFeign
{
@GetMapping
(
"/area/getChildAreaList"
)
ResultVo
getChildAreaList
(
@RequestParam
String
areaCode
);
@PostMapping
(
"/stats/getMarriageStats"
)
ResultVo
getMarriageStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaUnderMarriageStatsList"
)
ResultVo
getAreaUnderMarriageStatsList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getFivesYearMarriageLine"
)
ResultVo
getFivesYearMarriageLine
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaDisabledIssueStats"
)
ResultVo
getAreaDisabledIssueStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getYearDisabledIssueStats"
)
ResultVo
getYearDisabledIssueStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaShjzStats"
)
ResultVo
getAreaShjzStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getFivesYearShjzAchieveStats"
)
ResultVo
getFivesYearShjzAchieveStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getFivesYearShjzProvideStats"
)
ResultVo
getFivesYearShjzProvideStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getSoorganStats"
)
ResultVo
getSoorganStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaUnderSoorganStatsList"
)
ResultVo
getAreaUnderSoorganStatsList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAppMapStats"
)
ResultVo
getAppMapStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/gatherSearch"
)
ResultVo
gatherSearch
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAgencyChildStats"
)
ResultVo
getAgencyChildStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAgencyChildStatsList"
)
ResultVo
getAgencyChildStatsList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getCremationStats"
)
ResultVo
getCremationStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getCremationStatsList"
)
ResultVo
getCremationStatsList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getCremationStatsById"
)
ResultVo
getCremationStatsById
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaUnderNumStats"
)
ResultVo
getAreaUnderNumStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getEnjoySubsidyStats"
)
ResultVo
getEnjoySubsidyStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getEnjoySumStatsData"
)
ResultVo
getEnjoySumStatsData
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
}
package
com
.
zq
.
api
.
feign
;
import
com.zq.api.config.FeignConfig
;
import
com.zq.common.vo.ResultVo
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Map
;
@FeignClient
(
name
=
"PORTAL-SERVER"
,
configuration
=
FeignConfig
.
class
)
//指定调用哪个微服务
@RequestMapping
(
"/portal/app"
)
public
interface
PortalFeign
{
@GetMapping
(
"/area/getChildAreaList"
)
ResultVo
getChildAreaList
(
@RequestParam
String
areaCode
);
@PostMapping
(
"/stats/getMarriageStats"
)
ResultVo
getMarriageStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getYearMarriedCouple"
)
ResultVo
getYearMarriedCouple
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaUnderMarriageStatsList"
)
ResultVo
getAreaUnderMarriageStatsList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getFivesYearMarriageLine"
)
ResultVo
getFivesYearMarriageLine
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaDisabledIssueStats"
)
ResultVo
getAreaDisabledIssueStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getYearDisabledIssueStats"
)
ResultVo
getYearDisabledIssueStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaShjzStats"
)
ResultVo
getAreaShjzStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getFivesYearShjzAchieveStats"
)
ResultVo
getFivesYearShjzAchieveStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getFivesYearShjzProvideStats"
)
ResultVo
getFivesYearShjzProvideStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getSoorganStats"
)
ResultVo
getSoorganStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaUnderSoorganStatsList"
)
ResultVo
getAreaUnderSoorganStatsList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAppMapStats"
)
ResultVo
getAppMapStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/gatherSearch"
)
ResultVo
gatherSearch
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAgencyChildStats"
)
ResultVo
getAgencyChildStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAgencyChildStatsList"
)
ResultVo
getAgencyChildStatsList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getCremationStats"
)
ResultVo
getCremationStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getCremationStatsList"
)
ResultVo
getCremationStatsList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getCremationStatsById"
)
ResultVo
getCremationStatsById
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getAreaUnderNumStats"
)
ResultVo
getAreaUnderNumStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getEnjoySubsidyStats"
)
ResultVo
getEnjoySubsidyStats
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
"/stats/getEnjoySumStatsData"
)
ResultVo
getEnjoySumStatsData
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
}
api-server/src/main/java/com/zq/api/service/ApiService.java
View file @
18a10678
package
com
.
zq
.
api
.
service
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.codec.Base64
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.URLUtil
;
import
com.zq.api.dao.ApiLogDao
;
import
com.zq.api.entity.ApiLog
;
import
com.zq.api.entity.ApiUser
;
import
com.zq.api.feign.SysFeign
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
import
com.zq.api.utils.ApiUtils
;
import
com.zq.api.utils.ReflectionUtils
;
import
com.zq.common.config.redis.RedisUtils
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.common.vo.ResultVo
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
java.lang.reflect.Method
;
import
java.nio.charset.StandardCharsets
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* @author wilmiam
* @since 2021-09-28 15:44
*/
@Slf4j
@Service
@RequiredArgsConstructor
public
class
ApiService
{
private
final
ApiLogDao
apiLogDao
;
private
final
SysFeign
sysFeign
;
private
final
RedisUtils
redisUtils
;
/**
* 允许用户未登录状态下执行的方法名
*/
private
final
String
[]
allowMethod
=
{
"sendCode"
,
"resetPassword"
,
"phoneLogin"
,
"passwdLogin"
,
"getAppVersion"
,
"cremationSearch"
,
"marriageSearch"
,
"naturalPersonSearch"
};
private
static
final
List
<
String
>
METHOD_LIST
;
static
{
METHOD_LIST
=
methodList
();
}
public
IApiLogic
getApiLogic
(
ApiForm
form
)
{
IApiLogic
apiLogic
=
ApiUtils
.
getApiLogic
(
form
);
return
apiLogic
;
}
public
static
List
<
String
>
methodList
()
{
List
<
String
>
methodList
=
new
ArrayList
<>();
Method
[]
methods
=
IApiLogic
.
class
.
getMethods
();
for
(
Method
method
:
methods
)
{
Class
<?>[]
params
=
method
.
getParameterTypes
();
if
(
params
.
length
==
1
&&
(
params
[
0
]
==
ApiForm
.
class
))
{
methodList
.
add
(
method
.
getName
());
}
}
return
methodList
;
}
public
ApiResp
action
(
ApiForm
form
)
throws
Exception
{
if
(!
METHOD_LIST
.
contains
(
form
.
getMethod
()))
{
return
ApiUtils
.
getMethodError
(
form
);
}
// 调用接口方法,利用反射更简洁
IApiLogic
apiLogic
=
getApiLogic
(
form
);
return
(
ApiResp
)
ReflectionUtils
.
invokeMethod
(
apiLogic
,
form
.
getMethod
(),
new
Class
<?>[]{
ApiForm
.
class
},
new
Object
[]{
form
});
}
/**
* 身份验证
*
* @param form
* @param appId
* @param appSecret
* @return
*/
public
ApiResp
auth
(
ApiForm
form
,
String
appId
,
String
appSecret
,
String
token
)
{
boolean
contains
=
Arrays
.
asList
(
allowMethod
).
contains
(
form
.
getMethod
());
if
(
contains
)
{
return
ApiUtils
.
getSuccessResp
(
form
);
}
else
if
(
StrUtil
.
isBlank
(
token
))
{
return
ApiUtils
.
getLoginValidError
(
form
);
}
ResultVo
resultVo
=
sysFeign
.
getApiUserByAppId
(
appId
,
appSecret
);
if
(!
resultVo
.
isSuccess
()
||
resultVo
.
getData
()
==
null
)
{
return
ApiUtils
.
getAppIdValidError
(
form
);
}
// 认证签名
String
key
=
redisUtils
.
getStr
(
"civil.apiKey."
+
token
);
String
sign
=
ApiUtils
.
getSign
(
form
.
getSignStr
(
key
==
null
?
""
:
key
));
if
(!
sign
.
equals
(
form
.
getSign
()))
{
return
ApiUtils
.
getCheckSignValidError
(
form
);
}
ApiUser
apiUser
=
BeanUtil
.
copyProperties
(
resultVo
.
getData
(),
ApiUser
.
class
);
ApiTokenVo
apiTokenVo
=
ApiTokenVo
.
builder
()
.
userId
(
apiUser
.
getId
())
.
name
(
apiUser
.
getName
())
.
roleLevel
(
apiUser
.
getRoleLevel
())
.
build
();
form
.
setUserId
(
apiUser
.
getId
()
==
null
?
null
:
apiUser
.
getId
().
toString
());
form
.
setAppId
(
apiUser
.
getAppId
());
form
.
setApiTokenVo
(
apiTokenVo
);
return
ApiUtils
.
getSuccessResp
(
form
);
}
@Async
public
void
addLog
(
ApiForm
form
,
String
ip
,
String
logType
,
String
respMsg
,
String
errorInfo
,
Long
timeCost
)
{
apiLogDao
.
insert
(
ApiLog
.
builder
()
.
appId
(
form
.
getAppId
())
.
userId
(
form
.
getUserId
())
.
method
(
form
.
getMethod
())
.
version
(
form
.
getVersion
())
.
bizContent
(
form
.
getBizContent
())
.
ip
(
ip
)
.
logType
(
logType
)
.
respMsg
(
respMsg
)
.
stackTrace
(
errorInfo
)
.
timeCost
(
timeCost
)
.
createTime
(
DateUtil
.
date
().
toJdkDate
())
.
build
());
}
}
package
com
.
zq
.
api
.
service
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.codec.Base64
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.URLUtil
;
import
com.zq.api.dao.ApiLogDao
;
import
com.zq.api.entity.ApiLog
;
import
com.zq.api.entity.ApiUser
;
import
com.zq.api.feign.SysFeign
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
import
com.zq.api.utils.ApiUtils
;
import
com.zq.api.utils.ReflectionUtils
;
import
com.zq.common.config.redis.RedisUtils
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.common.vo.ResultVo
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
java.lang.reflect.Method
;
import
java.nio.charset.StandardCharsets
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* @author wilmiam
* @since 2021-09-28 15:44
*/
@Slf4j
@Service
@RequiredArgsConstructor
public
class
ApiService
{
private
final
ApiLogDao
apiLogDao
;
private
final
SysFeign
sysFeign
;
private
final
RedisUtils
redisUtils
;
/**
* 允许用户未登录状态下执行的方法名
*/
private
final
String
[]
allowMethod
=
{
"sendCode"
,
"resetPassword"
,
"phoneLogin"
,
"passwdLogin"
,
"getAppVersion"
,
"cremationSearch"
,
"marriageSearch"
,
"naturalPersonSearch"
};
private
static
final
List
<
String
>
METHOD_LIST
;
static
{
METHOD_LIST
=
methodList
();
}
public
IApiLogic
getApiLogic
(
ApiForm
form
)
{
IApiLogic
apiLogic
=
ApiUtils
.
getApiLogic
(
form
);
return
apiLogic
;
}
public
static
List
<
String
>
methodList
()
{
List
<
String
>
methodList
=
new
ArrayList
<>();
Method
[]
methods
=
IApiLogic
.
class
.
getMethods
();
for
(
Method
method
:
methods
)
{
Class
<?>[]
params
=
method
.
getParameterTypes
();
if
(
params
.
length
==
1
&&
(
params
[
0
]
==
ApiForm
.
class
))
{
methodList
.
add
(
method
.
getName
());
}
}
return
methodList
;
}
public
ApiResp
action
(
ApiForm
form
)
throws
Exception
{
if
(!
METHOD_LIST
.
contains
(
form
.
getMethod
()))
{
return
ApiUtils
.
getMethodError
(
form
);
}
// 调用接口方法,利用反射更简洁
IApiLogic
apiLogic
=
getApiLogic
(
form
);
return
(
ApiResp
)
ReflectionUtils
.
invokeMethod
(
apiLogic
,
form
.
getMethod
(),
new
Class
<?>[]{
ApiForm
.
class
},
new
Object
[]{
form
});
}
/**
* 身份验证
*
* @param form
* @param appId
* @param appSecret
* @return
*/
public
ApiResp
auth
(
ApiForm
form
,
String
appId
,
String
appSecret
,
String
token
)
{
boolean
contains
=
Arrays
.
asList
(
allowMethod
).
contains
(
form
.
getMethod
());
if
(
contains
)
{
return
ApiUtils
.
getSuccessResp
(
form
);
}
else
if
(
StrUtil
.
isBlank
(
token
))
{
return
ApiUtils
.
getLoginValidError
(
form
);
}
ResultVo
resultVo
=
sysFeign
.
getApiUserByAppId
(
appId
,
appSecret
);
if
(!
resultVo
.
isSuccess
()
||
resultVo
.
getData
()
==
null
)
{
return
ApiUtils
.
getAppIdValidError
(
form
);
}
// 认证签名
String
key
=
redisUtils
.
getStr
(
"civil.apiKey."
+
token
);
String
sign
=
ApiUtils
.
getSign
(
form
.
getSignStr
(
key
==
null
?
""
:
key
));
if
(!
sign
.
equals
(
form
.
getSign
()))
{
return
ApiUtils
.
getCheckSignValidError
(
form
);
}
ApiUser
apiUser
=
BeanUtil
.
copyProperties
(
resultVo
.
getData
(),
ApiUser
.
class
);
ApiTokenVo
apiTokenVo
=
ApiTokenVo
.
builder
()
.
userId
(
apiUser
.
getId
())
.
name
(
apiUser
.
getName
())
.
roleLevel
(
apiUser
.
getRoleLevel
())
.
build
();
form
.
setUserId
(
apiUser
.
getId
()
==
null
?
null
:
apiUser
.
getId
().
toString
());
form
.
setAppId
(
apiUser
.
getAppId
());
form
.
setApiTokenVo
(
apiTokenVo
);
return
ApiUtils
.
getSuccessResp
(
form
);
}
@Async
public
void
addLog
(
ApiForm
form
,
String
ip
,
String
logType
,
String
respMsg
,
String
errorInfo
,
Long
timeCost
)
{
apiLogDao
.
insert
(
ApiLog
.
builder
()
.
appId
(
form
.
getAppId
())
.
userId
(
form
.
getUserId
())
.
method
(
form
.
getMethod
())
.
version
(
form
.
getVersion
())
.
bizContent
(
form
.
getBizContent
())
.
ip
(
ip
)
.
logType
(
logType
)
.
respMsg
(
respMsg
)
.
stackTrace
(
errorInfo
)
.
timeCost
(
timeCost
)
.
createTime
(
DateUtil
.
date
().
toJdkDate
())
.
build
());
}
}
api-server/src/main/java/com/zq/api/service/IApiLogic.java
View file @
18a10678
package
com
.
zq
.
api
.
service
;
import
com.zq.api.constant.ApiMethod
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
/**
* api实现接口
* <p>
* 2016年9月29日 上午11:45:08
*/
public
interface
IApiLogic
extends
IApiCommon
{
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓SYS APP接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod
(
name
=
"获取用户信息"
,
service
=
"SYS-SERVER"
)
ApiResp
getUserInfo
(
ApiForm
form
);
@ApiMethod
(
name
=
"发送验证码"
,
service
=
"SYS-SERVER"
)
ApiResp
sendCode
(
ApiForm
form
);
@ApiMethod
(
name
=
"重置密码"
,
service
=
"SYS-SERVER"
)
ApiResp
resetPassword
(
ApiForm
form
);
@ApiMethod
(
name
=
"用户手机号登录"
,
service
=
"SYS-SERVER"
)
ApiResp
phoneLogin
(
ApiForm
form
);
@ApiMethod
(
name
=
"密码登录"
,
service
=
"SYS-SERVER"
)
ApiResp
passwdLogin
(
ApiForm
form
);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓门户接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod
(
name
=
"获取婚姻统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getMarriageStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取区域下的婚姻统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaUnderMarriageStatsList
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取近5年婚姻走势"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getFivesYearMarriageLine
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取区域残疾发放统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaDisabledIssueStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"近五年发放人数和金额统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getYearDisabledIssueStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取在享补贴统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getEnjoySubsidyStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取区域统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaShjzStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取区域社会救助统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaUnderNumStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取近五年城市农村低保发放人数统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getFivesYearShjzAchieveStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取近五年城市农村低保发放金额统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getFivesYearShjzProvideStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"修改登录密码"
,
service
=
"PORTAL-SERVER"
)
ApiResp
modifyPasswd
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取App最新版本"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAppVersion
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取子区域列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getChildAreaList
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取社会机构统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getSoorganStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取地区下面社会机构统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaUnderSoorganStatsList
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取App首页地图数据"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAppMapStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"汇总搜索"
,
service
=
"PORTAL-SERVER"
)
ApiResp
gatherSearch
(
ApiForm
form
);
@ApiMethod
(
name
=
"指定区域下的儿童福利数据统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAgencyChildStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"指定区域下级区域的儿童福利数据统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAgencyChildStatsList
(
ApiForm
form
);
@ApiMethod
(
name
=
"火化量统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getCremationStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"火化量统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getCremationStatsList
(
ApiForm
form
);
@ApiMethod
(
name
=
"殡仪馆火化量统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getCremationStatsById
(
ApiForm
form
);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓SYS单点登录接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod
(
name
=
"获取单点登录用户信息"
,
service
=
"SYS-SERVER"
)
ApiResp
getSsoUserInfo
(
ApiForm
form
);
@ApiMethod
(
name
=
"单点登出"
,
service
=
"SYS-SERVER"
)
ApiResp
ssoLogout
(
ApiForm
form
);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓开放接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod
(
name
=
"婚姻搜索接口"
,
service
=
"OPEN-SERVER"
)
ApiResp
marriageSearch
(
ApiForm
form
);
@ApiMethod
(
name
=
"自然人搜索接口"
,
service
=
"OPEN-SERVER"
)
ApiResp
naturalPersonSearch
(
ApiForm
form
);
@ApiMethod
(
name
=
"火化搜索接口"
,
service
=
"OPEN-SERVER"
)
ApiResp
cremationSearch
(
ApiForm
form
);
}
package
com
.
zq
.
api
.
service
;
import
com.zq.api.constant.ApiMethod
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
/**
* api实现接口
* <p>
* 2016年9月29日 上午11:45:08
*/
public
interface
IApiLogic
extends
IApiCommon
{
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓SYS APP接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod
(
name
=
"获取用户信息"
,
service
=
"SYS-SERVER"
)
ApiResp
getUserInfo
(
ApiForm
form
);
@ApiMethod
(
name
=
"发送验证码"
,
service
=
"SYS-SERVER"
)
ApiResp
sendCode
(
ApiForm
form
);
@ApiMethod
(
name
=
"重置密码"
,
service
=
"SYS-SERVER"
)
ApiResp
resetPassword
(
ApiForm
form
);
@ApiMethod
(
name
=
"用户手机号登录"
,
service
=
"SYS-SERVER"
)
ApiResp
phoneLogin
(
ApiForm
form
);
@ApiMethod
(
name
=
"密码登录"
,
service
=
"SYS-SERVER"
)
ApiResp
passwdLogin
(
ApiForm
form
);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓门户接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod
(
name
=
"获取婚姻统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getMarriageStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取1年结婚离婚对数"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getYearMarriedCouple
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取区域下的婚姻统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaUnderMarriageStatsList
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取近5年婚姻走势"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getFivesYearMarriageLine
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取区域残疾发放统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaDisabledIssueStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"近五年发放人数和金额统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getYearDisabledIssueStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取在享补贴统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getEnjoySubsidyStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取区域统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaShjzStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取区域社会救助统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaUnderNumStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取近五年城市农村低保发放人数统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getFivesYearShjzAchieveStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取近五年城市农村低保发放金额统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getFivesYearShjzProvideStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"修改登录密码"
,
service
=
"PORTAL-SERVER"
)
ApiResp
modifyPasswd
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取App最新版本"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAppVersion
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取子区域列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getChildAreaList
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取社会机构统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getSoorganStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取地区下面社会机构统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAreaUnderSoorganStatsList
(
ApiForm
form
);
@ApiMethod
(
name
=
"获取App首页地图数据"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAppMapStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"汇总搜索"
,
service
=
"PORTAL-SERVER"
)
ApiResp
gatherSearch
(
ApiForm
form
);
@ApiMethod
(
name
=
"指定区域下的儿童福利数据统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAgencyChildStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"指定区域下级区域的儿童福利数据统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getAgencyChildStatsList
(
ApiForm
form
);
@ApiMethod
(
name
=
"火化量统计"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getCremationStats
(
ApiForm
form
);
@ApiMethod
(
name
=
"火化量统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getCremationStatsList
(
ApiForm
form
);
@ApiMethod
(
name
=
"殡仪馆火化量统计列表"
,
service
=
"PORTAL-SERVER"
)
ApiResp
getCremationStatsById
(
ApiForm
form
);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓SYS单点登录接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod
(
name
=
"获取单点登录用户信息"
,
service
=
"SYS-SERVER"
)
ApiResp
getSsoUserInfo
(
ApiForm
form
);
@ApiMethod
(
name
=
"单点登出"
,
service
=
"SYS-SERVER"
)
ApiResp
ssoLogout
(
ApiForm
form
);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓开放接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod
(
name
=
"婚姻搜索接口"
,
service
=
"OPEN-SERVER"
)
ApiResp
marriageSearch
(
ApiForm
form
);
@ApiMethod
(
name
=
"自然人搜索接口"
,
service
=
"OPEN-SERVER"
)
ApiResp
naturalPersonSearch
(
ApiForm
form
);
@ApiMethod
(
name
=
"火化搜索接口"
,
service
=
"OPEN-SERVER"
)
ApiResp
cremationSearch
(
ApiForm
form
);
}
api-server/src/main/java/com/zq/api/service/impl/ApiV100Logic.java
View file @
18a10678
package
com
.
zq
.
api
.
service
.
impl
;
import
com.zq.api.feign.OpenFeign
;
import
com.zq.api.feign.PortalFeign
;
import
com.zq.api.feign.SysFeign
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
import
com.zq.api.service.IApiLogic
;
import
com.zq.api.utils.ApiUtils
;
import
com.zq.common.config.security.ApiTokenUtils
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.common.vo.ResultVo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Map
;
@Component
public
class
ApiV100Logic
extends
BaseApiLogic
implements
IApiLogic
{
@Autowired
private
SysFeign
sysFeign
;
@Autowired
private
PortalFeign
portalFeign
;
@Autowired
private
OpenFeign
openFeign
;
@Override
public
ApiResp
getUserInfo
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
ResultVo
.
success
(
ApiTokenUtils
.
getAppTokenVo
(
form
.
getToken
())));
}
@Override
public
ApiResp
sendCode
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
sendCode
(
form
.
getString
(
"phone"
)));
}
@Override
public
ApiResp
resetPassword
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
resetPassword
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
phoneLogin
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
phoneLogin
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
passwdLogin
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
passwdLogin
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
modifyPasswd
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
modifyPasswd
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAppVersion
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
getAppVersion
(
form
.
getString
(
"appName"
)));
}
@Override
public
ApiResp
getChildAreaList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getChildAreaList
(
form
.
getString
(
"areaCode"
)));
}
@Override
public
ApiResp
getMarriageStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getMarriageStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaUnderMarriageStatsList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaUnderMarriageStatsList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getFivesYearMarriageLine
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getFivesYearMarriageLine
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaDisabledIssueStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaDisabledIssueStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getYearDisabledIssueStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getYearDisabledIssueStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getEnjoySubsidyStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getEnjoySubsidyStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaShjzStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaShjzStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaUnderNumStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaUnderNumStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getFivesYearShjzAchieveStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getFivesYearShjzAchieveStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getFivesYearShjzProvideStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getFivesYearShjzProvideStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getSoorganStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getSoorganStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaUnderSoorganStatsList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaUnderSoorganStatsList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAppMapStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAppMapStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
gatherSearch
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
gatherSearch
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAgencyChildStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAgencyChildStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAgencyChildStatsList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAgencyChildStatsList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getCremationStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getCremationStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getCremationStatsList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getCremationStatsList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getCremationStatsById
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getCremationStatsById
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getSsoUserInfo
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
getSsoUserInfo
(
form
.
getAppId
()));
}
@Override
public
ApiResp
ssoLogout
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
ssoLogout
());
}
@Override
public
ApiResp
marriageSearch
(
ApiForm
form
)
{
Map
<
String
,
Object
>
paramsMap
=
form
.
getParamsMap
();
ApiTokenVo
apiTokenVo
=
form
.
getApiTokenVo
();
if
(
apiTokenVo
!=
null
&&
apiTokenVo
.
getRoleLevel
()
==
1
)
{
paramsMap
.
put
(
"queryType"
,
1
);
}
return
ApiUtils
.
toApiResp
(
form
,
openFeign
.
marriageSearch
(
paramsMap
));
}
@Override
public
ApiResp
naturalPersonSearch
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
openFeign
.
naturalPersonSearch
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
cremationSearch
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
openFeign
.
cremationSearch
(
form
.
getParamsMap
()));
}
}
package
com
.
zq
.
api
.
service
.
impl
;
import
com.zq.api.feign.OpenFeign
;
import
com.zq.api.feign.PortalFeign
;
import
com.zq.api.feign.SysFeign
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
import
com.zq.api.service.IApiLogic
;
import
com.zq.api.utils.ApiUtils
;
import
com.zq.common.config.security.ApiTokenUtils
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.common.vo.ResultVo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Map
;
@Component
public
class
ApiV100Logic
extends
BaseApiLogic
implements
IApiLogic
{
@Autowired
private
SysFeign
sysFeign
;
@Autowired
private
PortalFeign
portalFeign
;
@Autowired
private
OpenFeign
openFeign
;
@Override
public
ApiResp
getUserInfo
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
ResultVo
.
success
(
ApiTokenUtils
.
getAppTokenVo
(
form
.
getToken
())));
}
@Override
public
ApiResp
sendCode
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
sendCode
(
form
.
getString
(
"phone"
)));
}
@Override
public
ApiResp
resetPassword
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
resetPassword
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
phoneLogin
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
phoneLogin
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
passwdLogin
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
passwdLogin
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
modifyPasswd
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
modifyPasswd
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAppVersion
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
getAppVersion
(
form
.
getString
(
"appName"
)));
}
@Override
public
ApiResp
getChildAreaList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getChildAreaList
(
form
.
getString
(
"areaCode"
)));
}
@Override
public
ApiResp
getMarriageStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getMarriageStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getYearMarriedCouple
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getYearMarriedCouple
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaUnderMarriageStatsList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaUnderMarriageStatsList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getFivesYearMarriageLine
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getFivesYearMarriageLine
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaDisabledIssueStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaDisabledIssueStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getYearDisabledIssueStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getYearDisabledIssueStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getEnjoySubsidyStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getEnjoySubsidyStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaShjzStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaShjzStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaUnderNumStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaUnderNumStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getFivesYearShjzAchieveStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getFivesYearShjzAchieveStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getFivesYearShjzProvideStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getFivesYearShjzProvideStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getSoorganStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getSoorganStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAreaUnderSoorganStatsList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAreaUnderSoorganStatsList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAppMapStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAppMapStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
gatherSearch
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
gatherSearch
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAgencyChildStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAgencyChildStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAgencyChildStatsList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getAgencyChildStatsList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getCremationStats
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getCremationStats
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getCremationStatsList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getCremationStatsList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getCremationStatsById
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
portalFeign
.
getCremationStatsById
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getSsoUserInfo
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
getSsoUserInfo
(
form
.
getAppId
()));
}
@Override
public
ApiResp
ssoLogout
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
sysFeign
.
ssoLogout
());
}
@Override
public
ApiResp
marriageSearch
(
ApiForm
form
)
{
Map
<
String
,
Object
>
paramsMap
=
form
.
getParamsMap
();
ApiTokenVo
apiTokenVo
=
form
.
getApiTokenVo
();
if
(
apiTokenVo
!=
null
&&
apiTokenVo
.
getRoleLevel
()
==
1
)
{
paramsMap
.
put
(
"queryType"
,
1
);
}
return
ApiUtils
.
toApiResp
(
form
,
openFeign
.
marriageSearch
(
paramsMap
));
}
@Override
public
ApiResp
naturalPersonSearch
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
openFeign
.
naturalPersonSearch
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
cremationSearch
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
openFeign
.
cremationSearch
(
form
.
getParamsMap
()));
}
}
portal-server/src/main/java/com/zq/portal/controller/app/HyStatsController.java
View file @
18a10678
package
com
.
zq
.
portal
.
controller
.
app
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.portal.entity.VMarriageStats
;
import
com.zq.portal.service.HyStatsService
;
import
com.zq.portal.vo.StatsReqVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Api
(
tags
=
"婚姻相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/portal/app/stats"
)
public
class
HyStatsController
{
public
final
HyStatsService
hyStatsService
;
@ApiOperation
(
"获取结婚离婚人数"
)
@PostMapping
(
value
=
"/getMarriageStats"
)
public
ResultVo
<
VMarriageStats
>
getMarriageStats
(
@RequestBody
StatsReqVo
vo
)
{
return
ResultVo
.
success
(
hyStatsService
.
getCacheMarriageStats
(
vo
));
}
@ApiOperation
(
"获取地区下面婚姻统计列表"
)
@PostMapping
(
value
=
"/getAreaUnderMarriageStatsList"
)
public
ResultVo
getAreaUnderMarriageStatsList
(
@RequestBody
StatsReqVo
vo
)
{
return
ResultVo
.
success
(
hyStatsService
.
getCacheAreaUnderMarriageStatsList
(
vo
));
}
@ApiOperation
(
"获取近5年结婚离婚走势"
)
@PostMapping
(
value
=
"/getFivesYearMarriageLine"
)
public
ResultVo
getFivesYearMarriageLine
(
@RequestBody
StatsReqVo
vo
)
{
return
ResultVo
.
success
(
hyStatsService
.
getCacheFivesYearMarriageLine
(
vo
));
}
}
package
com
.
zq
.
portal
.
controller
.
app
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.portal.entity.VMarriageStats
;
import
com.zq.portal.service.HyStatsService
;
import
com.zq.portal.vo.StatsReqVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Api
(
tags
=
"婚姻相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/portal/app/stats"
)
public
class
HyStatsController
{
public
final
HyStatsService
hyStatsService
;
@ApiOperation
(
"获取结婚离婚人数"
)
@PostMapping
(
value
=
"/getMarriageStats"
)
public
ResultVo
<
VMarriageStats
>
getMarriageStats
(
@RequestBody
StatsReqVo
vo
)
{
return
ResultVo
.
success
(
hyStatsService
.
getCacheMarriageStats
(
vo
));
}
@ApiOperation
(
"获取地区下面婚姻统计列表"
)
@PostMapping
(
value
=
"/getAreaUnderMarriageStatsList"
)
public
ResultVo
getAreaUnderMarriageStatsList
(
@RequestBody
StatsReqVo
vo
)
{
return
ResultVo
.
success
(
hyStatsService
.
getCacheAreaUnderMarriageStatsList
(
vo
));
}
@ApiOperation
(
"获取近5年结婚离婚走势"
)
@PostMapping
(
value
=
"/getFivesYearMarriageLine"
)
public
ResultVo
getFivesYearMarriageLine
(
@RequestBody
StatsReqVo
vo
)
{
return
ResultVo
.
success
(
hyStatsService
.
getCacheFivesYearMarriageLine
(
vo
));
}
@ApiOperation
(
"获取1年结婚离婚对数"
)
@PostMapping
(
value
=
"/getYearMarriedCouple"
)
public
ResultVo
getYearMarriedCouple
(
@RequestBody
StatsReqVo
vo
)
{
return
ResultVo
.
success
(
hyStatsService
.
getCacheYearMarriedCouple
(
vo
));
}
}
portal-server/src/main/java/com/zq/portal/dao/HyStatsDao.java
View file @
18a10678
package
com
.
zq
.
portal
.
dao
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.zq.common.constant.DBName
;
import
com.zq.portal.vo.SearchReqVo
;
import
com.zq.portal.vo.StatsReqVo
;
import
com.zq.portal.vo.StatsVo
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Map
;
@DS
(
DBName
.
GXHY
)
@Repository
public
interface
HyStatsDao
{
/**
* 获取近5年的折线
*
* @return
*/
List
<
StatsVo
>
getFivesYearMarriageLine
(
StatsReqVo
vo
);
/**
* 月统计折线
*
* @return
*/
List
<
StatsVo
>
getMonthMarriageLine
(
StatsReqVo
vo
);
/**
* 获取结婚离婚人数
*
* @param vo
* @return
*/
List
<
StatsVo
>
getMarriageStats
(
StatsReqVo
vo
);
/**
* 获取下级区域婚姻统计列表
*
* @param vo
* @return
*/
List
<
StatsVo
>
getAreaUnderMarriageStatsList
(
StatsReqVo
vo
);
/**
* 获取跨地结婚离婚人数
*
* @param vo
* @return
*/
List
<
StatsVo
>
getCrossMarriageStats
(
StatsReqVo
vo
);
// 获取结婚人数
StatsVo
getMarryNum
(
StatsReqVo
vo
);
// 获取离婚中的人数
StatsVo
getInDivorceNum
(
StatsReqVo
vo
);
// 获取每月冷静期数据
List
<
StatsVo
>
getMonthDivorceCoolingData
(
StatsReqVo
vo
);
/**
* 搜索
*
* @param vo
* @return
*/
List
<
Map
<
String
,
Object
>>
search
(
SearchReqVo
vo
);
}
package
com
.
zq
.
portal
.
dao
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.zq.common.constant.DBName
;
import
com.zq.portal.vo.SearchReqVo
;
import
com.zq.portal.vo.StatsReqVo
;
import
com.zq.portal.vo.StatsVo
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Map
;
@DS
(
DBName
.
GXHY
)
@Repository
public
interface
HyStatsDao
{
/**
* 获取近5年的折线
*
* @return
*/
List
<
StatsVo
>
getFivesYearMarriageLine
(
StatsReqVo
vo
);
/**
* 月统计折线
*
* @return
*/
List
<
StatsVo
>
getMonthMarriageLine
(
StatsReqVo
vo
);
/**
* 获取结婚离婚人数
*
* @param vo
* @return
*/
List
<
StatsVo
>
getMarriageStats
(
StatsReqVo
vo
);
/**
* 获取下级区域婚姻统计列表
*
* @param vo
* @return
*/
List
<
StatsVo
>
getAreaUnderMarriageStatsList
(
StatsReqVo
vo
);
/**
* 获取跨地结婚离婚人数
*
* @param vo
* @return
*/
List
<
StatsVo
>
getCrossMarriageStats
(
StatsReqVo
vo
);
// 获取结婚人数
StatsVo
getMarryNum
(
StatsReqVo
vo
);
// 获取离婚中的人数
StatsVo
getInDivorceNum
(
StatsReqVo
vo
);
// 获取每月冷静期数据
List
<
StatsVo
>
getMonthDivorceCoolingData
(
StatsReqVo
vo
);
/**
* 搜索
*
* @param vo
* @return
*/
List
<
Map
<
String
,
Object
>>
search
(
SearchReqVo
vo
);
/**
* 获取结婚离婚对数
*
* @param vo
* @return
*/
List
<
StatsVo
>
getYearMarriedCouple
(
StatsReqVo
vo
);
}
portal-server/src/main/java/com/zq/portal/entity/VMarriageStats.java
View file @
18a10678
package
com
.
zq
.
portal
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 地区婚姻统计(VMarriageStats)实体类
*
* @author makejava
* @since 2021-06-24 11:57:43
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"v_marriage_stats"
)
public
class
VMarriageStats
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 区域码
*/
@ApiModelProperty
(
"区域码"
)
private
String
areaCode
;
/**
* 区域名
*/
@ApiModelProperty
(
"区域名"
)
private
String
areaName
;
/**
* 年份
*/
@ApiModelProperty
(
"年份"
)
private
Integer
year
;
/**
* 结婚人数
*/
@ApiModelProperty
(
"结婚人数"
)
private
Integer
marryNum
;
/**
* 申请离婚人数
*/
@ApiModelProperty
(
"申请离婚人数"
)
private
Integer
inDivorceNum
;
/**
* 离婚成功
*/
@ApiModelProperty
(
"离婚成功"
)
private
Integer
divorceNum
;
/**
* 跨地区结婚人数
*/
@ApiModelProperty
(
"跨地区结婚人数"
)
private
Integer
crossMarryNum
;
/**
* 跨地区离婚人数
*/
@ApiModelProperty
(
"跨地区离婚人数"
)
private
Integer
crossDivorceNum
;
/**
* 跨地区结婚人数
*/
@ApiModelProperty
(
"补领结婚证人数"
)
private
Integer
patchMarryCaNum
;
/**
* 补领离婚证人数
*/
@ApiModelProperty
(
"补领离婚证人数"
)
private
Integer
patchDivorceCaNum
;
/**
* createTime
*/
private
Date
createTime
;
}
package
com
.
zq
.
portal
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 地区婚姻统计(VMarriageStats)实体类
*
* @author makejava
* @since 2021-06-24 11:57:43
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"v_marriage_stats"
)
public
class
VMarriageStats
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 区域码
*/
@ApiModelProperty
(
"区域码"
)
private
String
areaCode
;
/**
* 区域名
*/
@ApiModelProperty
(
"区域名"
)
private
String
areaName
;
/**
* 年份
*/
@ApiModelProperty
(
"年份"
)
private
Integer
year
;
/**
* 结婚人数
*/
@ApiModelProperty
(
"结婚人数"
)
private
Integer
marryNum
;
/**
* 申请离婚人数
*/
@ApiModelProperty
(
"申请离婚人数"
)
private
Integer
inDivorceNum
;
/**
* 离婚成功
*/
@ApiModelProperty
(
"离婚成功"
)
private
Integer
divorceNum
;
/**
* 跨地区结婚人数
*/
@ApiModelProperty
(
"跨地区结婚人数"
)
private
Integer
crossMarryNum
;
/**
* 跨地区离婚人数
*/
@ApiModelProperty
(
"跨地区离婚人数"
)
private
Integer
crossDivorceNum
;
/**
* 跨地区结婚人数
*/
@ApiModelProperty
(
"补领结婚证人数"
)
private
Integer
patchMarryCaNum
;
/**
* 补领离婚证人数
*/
@ApiModelProperty
(
"补领离婚证人数"
)
private
Integer
patchDivorceCaNum
;
/**
* createTime
*/
private
Date
createTime
;
}
portal-server/src/main/java/com/zq/portal/manager/PortalCacheKeys.java
View file @
18a10678
package
com
.
zq
.
portal
.
manager
;
import
com.zq.portal.vo.StatsReqVo
;
public
abstract
class
PortalCacheKeys
{
public
static
final
String
PREFIX
=
"portal."
;
// 获取婚姻统计列表key
public
static
String
getAreaUnderMarriageStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaUnderMarriageStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取婚姻统计key
public
static
String
getMarriageStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getMarriageStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取近5年结婚离婚走势key
public
static
String
getFivesYearMarriageLineKey
(
String
areaCode
)
{
return
PREFIX
+
"getFivesYearMarriageLine."
+
areaCode
;
}
// 获取近一年每个月结婚离婚走势key
public
static
String
getMonthMarriageLineKey
(
String
areaCode
)
{
return
PREFIX
+
"getMonthMarriageLine."
+
areaCode
;
}
// 获取社会机构统计
public
static
String
getSoorganStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getSoorganStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取社会机构统计
public
static
String
getSoorganStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getSoorganStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取社会机构区域占比统计
public
static
String
getSoorganPercentageStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getSoorganPercentageStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 儿童机构福利统计列表
public
static
String
getAgencyChildStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAgencyChildStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 儿童机构福利统计
public
static
String
getAgencyChildStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAgencyChildStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 区域机构占比
public
static
String
getAgencyPercentageStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAgencyPercentageStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取福利院下的儿童统计
public
static
String
getAgencyUnderChildStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAgencyUnderChildStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 残疾等级统计
public
static
String
getDisabledLevelStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getDisabledLevelStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 统计年发放人数和金额
public
static
String
getYearDisabledIssueStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getYearDisabledIssueStats."
+
vo
.
getAreaCode
();
}
// 获取区域残疾统计
public
static
String
getAreaDisabledIssueStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaDisabledIssueStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
public
static
String
getEnjoySubsidyStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getEnjoySubsidyStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取区域养老院统计列表
public
static
String
getAreaNursingStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaNursingStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
()
+
"."
+
vo
.
getType
();
}
// 殡葬火化量统计列表
public
static
String
getCremationStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getCremationStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
//殡葬火化量殡仪馆数据统计
public
static
String
getCremationStatsByIdKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getCremationStatsById."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 区域火化率占比
public
static
String
getCremationRateStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getCremationRateStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 火化量汇总Key
public
static
String
getCremationStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getCremationStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取App首页地图
public
static
String
getAppMapStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAppMapStats."
+
vo
.
getAreaCode
();
}
// 聚合搜索
public
static
String
gatherSearchKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"gatherSearch."
+
vo
.
getKeyword
();
}
// 社会组织搜索
public
static
String
soorganSearchKey
()
{
return
PREFIX
+
"soorganSearch."
;
}
// 低保 获取当前享受低保人数
public
static
String
getEnjoyEnbuzNumKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getEnjoyEnbuzNum."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 低保 获取指定区域下的人数统计
public
static
String
getAreaUnderEnbuzNumStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaUnderEnbuzNumStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 低保 获取近5年折线图
public
static
String
getFivesYearEnbuzEnjoyStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getFivesYearEnbuzEnjoyStats."
+
vo
.
getAreaCode
();
}
// 获取区域下的救助统计
public
static
String
getAreaShjzStats
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaShjzStats."
+
vo
.
getAreaCode
();
}
//获取两项补贴统计
public
static
String
getEnjoySumStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getEnjoySumStats."
+
vo
.
getAreaCode
();
}
}
package
com
.
zq
.
portal
.
manager
;
import
com.zq.portal.vo.StatsReqVo
;
public
abstract
class
PortalCacheKeys
{
public
static
final
String
PREFIX
=
"portal."
;
// 获取婚姻统计列表key
public
static
String
getAreaUnderMarriageStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaUnderMarriageStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取婚姻统计key
public
static
String
getMarriageStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getMarriageStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取近5年结婚离婚走势key
public
static
String
getFivesYearMarriageLineKey
(
String
areaCode
)
{
return
PREFIX
+
"getFivesYearMarriageLine."
+
areaCode
;
}
// 获取近一年每个月结婚离婚走势key
public
static
String
getMonthMarriageLineKey
(
String
areaCode
)
{
return
PREFIX
+
"getMonthMarriageLine."
+
areaCode
;
}
// 获取社会机构统计
public
static
String
getSoorganStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getSoorganStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取社会机构统计
public
static
String
getSoorganStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getSoorganStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取社会机构区域占比统计
public
static
String
getSoorganPercentageStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getSoorganPercentageStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 儿童机构福利统计列表
public
static
String
getAgencyChildStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAgencyChildStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 儿童机构福利统计
public
static
String
getAgencyChildStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAgencyChildStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 区域机构占比
public
static
String
getAgencyPercentageStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAgencyPercentageStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取福利院下的儿童统计
public
static
String
getAgencyUnderChildStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAgencyUnderChildStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 残疾等级统计
public
static
String
getDisabledLevelStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getDisabledLevelStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 统计年发放人数和金额
public
static
String
getYearDisabledIssueStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getYearDisabledIssueStats."
+
vo
.
getAreaCode
();
}
// 获取区域残疾统计
public
static
String
getAreaDisabledIssueStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaDisabledIssueStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
public
static
String
getEnjoySubsidyStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getEnjoySubsidyStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取区域养老院统计列表
public
static
String
getAreaNursingStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaNursingStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
()
+
"."
+
vo
.
getType
();
}
// 殡葬火化量统计列表
public
static
String
getCremationStatsListKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getCremationStatsList."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
//殡葬火化量殡仪馆数据统计
public
static
String
getCremationStatsByIdKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getCremationStatsById."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 区域火化率占比
public
static
String
getCremationRateStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getCremationRateStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 火化量汇总Key
public
static
String
getCremationStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getCremationStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 获取App首页地图
public
static
String
getAppMapStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAppMapStats."
+
vo
.
getAreaCode
();
}
// 聚合搜索
public
static
String
gatherSearchKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"gatherSearch."
+
vo
.
getKeyword
();
}
// 社会组织搜索
public
static
String
soorganSearchKey
()
{
return
PREFIX
+
"soorganSearch."
;
}
// 低保 获取当前享受低保人数
public
static
String
getEnjoyEnbuzNumKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getEnjoyEnbuzNum."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 低保 获取指定区域下的人数统计
public
static
String
getAreaUnderEnbuzNumStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaUnderEnbuzNumStats."
+
vo
.
getAreaCode
()
+
"."
+
vo
.
getYear
();
}
// 低保 获取近5年折线图
public
static
String
getFivesYearEnbuzEnjoyStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getFivesYearEnbuzEnjoyStats."
+
vo
.
getAreaCode
();
}
// 获取区域下的救助统计
public
static
String
getAreaShjzStats
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getAreaShjzStats."
+
vo
.
getAreaCode
();
}
//获取两项补贴统计
public
static
String
getEnjoySumStatsKey
(
StatsReqVo
vo
)
{
return
PREFIX
+
"getEnjoySumStats."
+
vo
.
getAreaCode
();
}
public
static
String
getYearMarriedCoupleKey
()
{
return
PREFIX
+
"getYearMarriedCouple"
;
}
}
portal-server/src/main/java/com/zq/portal/service/HyStatsService.java
View file @
18a10678
package
com
.
zq
.
portal
.
service
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.NumberUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zq.common.config.redis.RedisUtils
;
import
com.zq.common.utils.PagingUtils
;
import
com.zq.common.utils.StringUtils
;
import
com.zq.portal.dao.AreaDao
;
import
com.zq.portal.dao.HyStatsDao
;
import
com.zq.portal.dao.VMarriageStatsDao
;
import
com.zq.portal.entity.SystemArea
;
import
com.zq.portal.entity.VMarriageStats
;
import
com.zq.portal.manager.PortalCacheKeys
;
import
com.zq.portal.vo.LineDataVo
;
import
com.zq.portal.vo.SearchReqVo
;
import
com.zq.portal.vo.StatsReqVo
;
import
com.zq.portal.vo.StatsVo
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
@Service
@RequiredArgsConstructor
public
class
HyStatsService
{
private
final
HyStatsDao
hyStatsDao
;
private
final
AreaDao
areaDao
;
private
final
VMarriageStatsDao
vMarriageStatsDao
;
private
final
RedisUtils
redisUtils
;
/**
* 获取缓存婚姻统计
*
* @param vo
* @return
*/
public
VMarriageStats
getCacheMarriageStats
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getMarriageStatsKey
(
vo
));
if
(
obj
!=
null
)
{
return
(
VMarriageStats
)
obj
;
}
return
getMarriageStats
(
vo
);
}
/**
* 婚姻统计
*
* @param vo
* @return
*/
public
VMarriageStats
getMarriageStats
(
StatsReqVo
vo
)
{
if
(
StringUtils
.
isBlank
(
vo
.
getAreaCode
()))
{
vo
.
setAreaCode
(
"450000000000"
);
}
SystemArea
area
=
areaDao
.
getAreaByCode
(
vo
.
getAreaCode
());
vo
.
setSubAreaCode
(
area
.
subAreaCode
());
// 统计实体
VMarriageStats
build
=
VMarriageStats
.
builder
()
.
areaCode
(
area
.
getCode
())
.
areaName
(
area
.
getName
())
.
year
(
vo
.
getYear
())
.
createTime
(
DateUtil
.
parseDate
(
DateUtil
.
today
()))
.
build
();
// 结婚 离婚 补领结婚证 补领离婚证
List
<
StatsVo
>
marriageStatsList
=
hyStatsDao
.
getMarriageStats
(
vo
);
for
(
StatsVo
statsVo
:
marriageStatsList
)
{
if
(
"IA"
.
equals
(
statsVo
.
getType
()))
{
build
.
setMarryNum
(
statsVo
.
getNum
());
}
else
if
(
"IB"
.
equals
(
statsVo
.
getType
()))
{
build
.
setDivorceNum
(
statsVo
.
getNum
());
}
else
if
(
"ICA"
.
equals
(
statsVo
.
getType
()))
{
build
.
setPatchMarryCaNum
(
statsVo
.
getNum
());
}
else
if
(
"ICB"
.
equals
(
statsVo
.
getType
()))
{
build
.
setPatchDivorceCaNum
(
statsVo
.
getNum
());
}
}
// 获取离婚中的人数
StatsVo
inDivorceNum
=
hyStatsDao
.
getInDivorceNum
(
vo
);
build
.
setInDivorceNum
(
inDivorceNum
.
getNum
());
// 获取跨地结婚离婚人数
List
<
StatsVo
>
crossMarriageStats
=
hyStatsDao
.
getCrossMarriageStats
(
vo
);
for
(
StatsVo
crossMarriageStat
:
crossMarriageStats
)
{
if
(
"IA"
.
equals
(
crossMarriageStat
.
getType
()))
{
build
.
setCrossMarryNum
(
crossMarriageStat
.
getNum
());
}
else
if
(
"IB"
.
equals
(
crossMarriageStat
.
getType
()))
{
build
.
setCrossDivorceNum
(
crossMarriageStat
.
getNum
());
}
}
// 放进缓存
redisUtils
.
setObj
(
PortalCacheKeys
.
getMarriageStatsKey
(
vo
),
build
);
// 放进数据库 有时间条件的不存库
VMarriageStats
marriageStats
=
vMarriageStatsDao
.
selectOne
(
Wrappers
.
lambdaQuery
(
VMarriageStats
.
builder
().
year
(
vo
.
getYear
()
==
null
?
0
:
vo
.
getYear
()).
areaCode
(
area
.
getCode
()).
createTime
(
DateUtil
.
parseDate
(
DateUtil
.
today
())).
build
()));
if
(
marriageStats
==
null
)
{
vMarriageStatsDao
.
insert
(
build
);
}
else
{
build
.
setId
(
marriageStats
.
getId
());
vMarriageStatsDao
.
updateById
(
build
);
}
return
build
;
}
/**
* 获取缓存区域下的结婚离婚数据
*
* @param vo
* @return
*/
public
Object
getCacheAreaUnderMarriageStatsList
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getAreaUnderMarriageStatsListKey
(
vo
));
if
(
obj
!=
null
)
{
return
obj
;
}
return
getAreaUnderMarriageStatsList
(
vo
);
}
/**
* 获取区域下的结婚离婚数据
*
* @param vo
* @return
*/
public
Object
getAreaUnderMarriageStatsList
(
StatsReqVo
vo
)
{
String
cacheKey
=
PortalCacheKeys
.
getAreaUnderMarriageStatsListKey
(
vo
);
SystemArea
area
=
areaDao
.
selectById
(
vo
.
getAreaCode
());
vo
.
setSubAreaCode
(
area
.
subAreaCode
());
vo
.
setSize
(
SystemArea
.
getNextLevelLength
(
area
.
getType
()));
List
<
VMarriageStats
>
returnData
=
new
ArrayList
<>();
// List<StatsVo> statsList = hyStatsDao.getAreaUnderMarriageStatsList(vo);
// statsList:
// for (StatsVo stats : statsList) {
// if ("IA".equals(stats.getType())) {
// for (VMarriageStats marriageStats : returnData) {
// if (marriageStats.getAreaCode().startsWith(stats.getCode())) {
// marriageStats.setMarryNum(stats.getNum());
// continue statsList;// 继续下一个统计
// }
// }
//
// SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(stats.getCode()));
// VMarriageStats build = VMarriageStats.builder()
// .areaCode(systemArea.getCode())
// .areaName(systemArea.getName())
// .year(vo.getYear())
// .marryNum(stats.getNum())
// .build();
// returnData.add(build);
// } else if ("IB".equals(stats.getType())) {
// for (VMarriageStats marriageStats : returnData) {
// if (marriageStats.getAreaCode().startsWith(stats.getCode())) {
// marriageStats.setDivorceNum(stats.getNum());
// continue statsList;// 继续下一个统计
// }
// }
//
// SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(stats.getCode()));
// VMarriageStats build = VMarriageStats.builder()
// .areaCode(systemArea.getCode())
// .areaName(systemArea.getName())
// .year(vo.getYear())
// .marryNum(stats.getNum())
// .build();
// returnData.add(build);
// }
// }
// returnData.sort(Comparator.comparing(VMarriageStats::getAreaCode));
List
<
SystemArea
>
systemAreaList
=
areaDao
.
selectList
(
Wrappers
.
lambdaQuery
(
SystemArea
.
builder
().
parentId
(
vo
.
getAreaCode
()).
build
()));
for
(
SystemArea
systemArea
:
systemAreaList
)
{
vo
.
setAreaCode
(
systemArea
.
getCode
());
VMarriageStats
marriageStats
=
getCacheMarriageStats
(
vo
);
returnData
.
add
(
marriageStats
);
}
List
<
String
>
cityList
=
new
ArrayList
<>();
List
<
String
>
iaList
=
new
ArrayList
<>();
List
<
String
>
ibList
=
new
ArrayList
<>();
for
(
VMarriageStats
marriageStats
:
returnData
)
{
cityList
.
add
(
marriageStats
.
getAreaName
());
iaList
.
add
(
NumberUtil
.
toStr
(
marriageStats
.
getMarryNum
(),
"0"
));
ibList
.
add
(
NumberUtil
.
toStr
(
marriageStats
.
getDivorceNum
(),
"0"
));
}
Map
<
String
,
Object
>
returnMap
=
new
HashMap
<>();
returnMap
.
put
(
"cityList"
,
cityList
);
returnMap
.
put
(
"iaList"
,
iaList
);
returnMap
.
put
(
"ibList"
,
ibList
);
returnMap
.
put
(
"statsList"
,
returnData
);
redisUtils
.
setObj
(
cacheKey
,
returnMap
);
return
returnMap
;
}
/**
* 获取冷静期和真正离婚的折线图数据
*
* @param vo
* @return
*/
public
Object
getDivorceCoolingLine
(
StatsReqVo
vo
)
{
// 获取冷静期
List
<
StatsVo
>
statsVoList
=
hyStatsDao
.
getMonthDivorceCoolingData
(
vo
);
return
null
;
}
/**
* 缓存获取近5年结婚离婚走势
*
* @param vo
* @return
*/
public
Object
getCacheFivesYearMarriageLine
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getFivesYearMarriageLineKey
(
vo
.
getAreaCode
()));
if
(
obj
!=
null
)
{
return
obj
;
}
return
getFivesYearMarriageLine
(
vo
);
}
/**
* 获取近5年结婚离婚走势
*
* @param vo
* @return
*/
public
Object
getFivesYearMarriageLine
(
StatsReqVo
vo
)
{
if
(
StringUtils
.
isBlank
(
vo
.
getAreaCode
()))
{
vo
.
setAreaCode
(
"450000000000"
);
}
SystemArea
area
=
areaDao
.
getAreaByCode
(
SystemArea
.
patchZero
(
vo
.
getAreaCode
()));
vo
.
setSubAreaCode
(
area
.
subAreaCode
());
vo
.
setType
(
"IA"
);
List
<
StatsVo
>
ia
=
hyStatsDao
.
getFivesYearMarriageLine
(
vo
);
ia
.
sort
(
Comparator
.
comparing
(
StatsVo:
:
getYear
));
List
<
String
>
iaDateList
=
new
ArrayList
<>();
List
<
String
>
iaAmountList
=
new
ArrayList
<>();
ia
.
forEach
(
statsVo
->
{
iaDateList
.
add
(
statsVo
.
getYear
());
iaAmountList
.
add
(
String
.
valueOf
(
statsVo
.
getNum
()));
});
LineDataVo
iaLineData
=
LineDataVo
.
builder
().
dateList
(
iaDateList
).
amountList
(
iaAmountList
).
build
();
vo
.
setType
(
"IB"
);
List
<
StatsVo
>
ib
=
hyStatsDao
.
getFivesYearMarriageLine
(
vo
);
ib
.
sort
(
Comparator
.
comparing
(
StatsVo:
:
getYear
));
List
<
String
>
ibDateList
=
new
ArrayList
<>();
List
<
String
>
ibAmountList
=
new
ArrayList
<>();
ib
.
forEach
(
statsVo
->
{
ibDateList
.
add
(
statsVo
.
getYear
());
ibAmountList
.
add
(
String
.
valueOf
(
statsVo
.
getNum
()));
});
LineDataVo
ibLineData
=
LineDataVo
.
builder
().
dateList
(
ibDateList
).
amountList
(
ibAmountList
).
build
();
// 结婚总对数
int
iaTotalNum
=
0
;
for
(
String
num
:
iaAmountList
)
{
iaTotalNum
+=
Integer
.
parseInt
(
num
);
}
// 后台管理数据
Map
<
String
,
Object
>
adminData
=
new
HashMap
<>();
adminData
.
put
(
"iaLineData"
,
iaLineData
);
adminData
.
put
(
"ibLineData"
,
ibLineData
);
adminData
.
put
(
"iaTotalNum"
,
iaTotalNum
);
//App数据
Map
<
String
,
Object
>
appData
=
new
HashMap
<>();
appData
.
put
(
"categories"
,
iaDateList
);
Map
<
String
,
Object
>
iaLine
=
new
HashMap
<>();
iaLine
.
put
(
"name"
,
"结婚对数"
);
iaLine
.
put
(
"data"
,
iaAmountList
);
Map
<
String
,
Object
>
ibLine
=
new
HashMap
<>();
ibLine
.
put
(
"name"
,
"离婚对数"
);
ibLine
.
put
(
"data"
,
ibAmountList
);
List
<
Map
<
String
,
Object
>>
seriesList
=
new
ArrayList
<>();
seriesList
.
add
(
iaLine
);
seriesList
.
add
(
ibLine
);
appData
.
put
(
"series"
,
seriesList
);
Map
<
String
,
Object
>
returnData
=
new
HashMap
<>();
returnData
.
put
(
"admin"
,
adminData
);
returnData
.
put
(
"app"
,
appData
);
redisUtils
.
setObj
(
PortalCacheKeys
.
getFivesYearMarriageLineKey
(
vo
.
getAreaCode
()),
returnData
);
return
returnData
;
}
/**
* 获取缓存月统计折线
*
* @param vo
* @return
*/
public
Object
getCacheMonthMarriageLine
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getMonthMarriageLineKey
(
vo
.
getAreaCode
()));
if
(
obj
!=
null
)
{
return
obj
;
}
return
getMonthMarriageLine
(
vo
);
}
/**
* 月统计折线
*
* @param vo
* @return
*/
public
Object
getMonthMarriageLine
(
StatsReqVo
vo
)
{
if
(
StringUtils
.
isBlank
(
vo
.
getAreaCode
()))
{
vo
.
setAreaCode
(
"450000000000"
);
}
SystemArea
area
=
areaDao
.
getAreaByCode
(
vo
.
getAreaCode
());
vo
.
setSubAreaCode
(
area
.
subAreaCode
());
vo
.
setType
(
"IA"
);
List
<
StatsVo
>
ia
=
hyStatsDao
.
getMonthMarriageLine
(
vo
);
ia
.
sort
(
Comparator
.
comparing
(
StatsVo:
:
getMonth
));
List
<
String
>
iaDateList
=
new
ArrayList
<>();
List
<
String
>
iaAmountList
=
new
ArrayList
<>();
ia
.
forEach
(
statsVo
->
{
iaDateList
.
add
(
statsVo
.
getMonth
());
iaAmountList
.
add
(
String
.
valueOf
(
statsVo
.
getNum
()));
});
LineDataVo
iaLineData
=
LineDataVo
.
builder
().
dateList
(
iaDateList
).
amountList
(
iaAmountList
).
build
();
vo
.
setType
(
"IB"
);
List
<
StatsVo
>
ib
=
hyStatsDao
.
getMonthMarriageLine
(
vo
);
ib
.
sort
(
Comparator
.
comparing
(
StatsVo:
:
getMonth
));
List
<
String
>
ibDateList
=
new
ArrayList
<>();
List
<
String
>
ibAmountList
=
new
ArrayList
<>();
ib
.
forEach
(
statsVo
->
{
ibDateList
.
add
(
statsVo
.
getMonth
());
ibAmountList
.
add
(
String
.
valueOf
(
statsVo
.
getNum
()));
});
LineDataVo
ibLineData
=
LineDataVo
.
builder
().
dateList
(
ibDateList
).
amountList
(
ibAmountList
).
build
();
// 后台管理数据
Map
<
String
,
Object
>
adminData
=
new
HashMap
<>();
adminData
.
put
(
"iaLineData"
,
iaLineData
);
adminData
.
put
(
"ibLineData"
,
ibLineData
);
//App数据
Map
<
String
,
Object
>
appData
=
new
HashMap
<>();
appData
.
put
(
"categories"
,
iaDateList
);
Map
<
String
,
Object
>
iaLine
=
new
HashMap
<>();
iaLine
.
put
(
"name"
,
"结婚对数"
);
iaLine
.
put
(
"data"
,
iaAmountList
);
Map
<
String
,
Object
>
ibLine
=
new
HashMap
<>();
ibLine
.
put
(
"name"
,
"离婚对数"
);
ibLine
.
put
(
"data"
,
ibAmountList
);
List
<
Map
<
String
,
Object
>>
seriesList
=
new
ArrayList
<>();
seriesList
.
add
(
iaLine
);
seriesList
.
add
(
ibLine
);
appData
.
put
(
"series"
,
seriesList
);
Map
<
String
,
Object
>
returnData
=
new
HashMap
<>();
returnData
.
put
(
"admin"
,
adminData
);
returnData
.
put
(
"app"
,
appData
);
redisUtils
.
setObj
(
PortalCacheKeys
.
getMonthMarriageLineKey
(
vo
.
getAreaCode
()),
returnData
);
return
returnData
;
}
/**
* 搜索
*
* @param vo
* @return
*/
public
Object
marriageSearch
(
SearchReqVo
vo
)
{
if
(
StrUtil
.
isBlank
(
vo
.
getKeyword
()))
{
SystemArea
systemArea
=
areaDao
.
selectById
(
vo
.
getAreaCode
());
vo
.
setSubAreaCode
(
systemArea
.
subAreaCode
());
}
return
PagingUtils
.
paging
(
vo
,
hyStatsDao:
:
search
);
}
}
package
com
.
zq
.
portal
.
service
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.NumberUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zq.common.config.redis.RedisUtils
;
import
com.zq.common.utils.PagingUtils
;
import
com.zq.common.utils.StringUtils
;
import
com.zq.portal.dao.AreaDao
;
import
com.zq.portal.dao.HyStatsDao
;
import
com.zq.portal.dao.VMarriageStatsDao
;
import
com.zq.portal.entity.SystemArea
;
import
com.zq.portal.entity.VMarriageStats
;
import
com.zq.portal.manager.PortalCacheKeys
;
import
com.zq.portal.vo.LineDataVo
;
import
com.zq.portal.vo.SearchReqVo
;
import
com.zq.portal.vo.StatsReqVo
;
import
com.zq.portal.vo.StatsVo
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
@Service
@RequiredArgsConstructor
public
class
HyStatsService
{
private
final
HyStatsDao
hyStatsDao
;
private
final
AreaDao
areaDao
;
private
final
VMarriageStatsDao
vMarriageStatsDao
;
private
final
RedisUtils
redisUtils
;
/**
* 获取缓存婚姻统计
*
* @param vo
* @return
*/
public
VMarriageStats
getCacheMarriageStats
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getMarriageStatsKey
(
vo
));
if
(
obj
!=
null
)
{
return
(
VMarriageStats
)
obj
;
}
return
getMarriageStats
(
vo
);
}
/**
* 婚姻统计
*
* @param vo
* @return
*/
public
VMarriageStats
getMarriageStats
(
StatsReqVo
vo
)
{
if
(
StringUtils
.
isBlank
(
vo
.
getAreaCode
()))
{
vo
.
setAreaCode
(
"450000000000"
);
}
SystemArea
area
=
areaDao
.
getAreaByCode
(
vo
.
getAreaCode
());
vo
.
setSubAreaCode
(
area
.
subAreaCode
());
// 统计实体
VMarriageStats
build
=
VMarriageStats
.
builder
()
.
areaCode
(
area
.
getCode
())
.
areaName
(
area
.
getName
())
.
year
(
2022
)
.
createTime
(
DateUtil
.
parseDate
(
DateUtil
.
today
()))
.
build
();
// 结婚 离婚 补领结婚证 补领离婚证
List
<
StatsVo
>
marriageStatsList
=
hyStatsDao
.
getMarriageStats
(
vo
);
for
(
StatsVo
statsVo
:
marriageStatsList
)
{
if
(
"IA"
.
equals
(
statsVo
.
getType
()))
{
build
.
setMarryNum
(
statsVo
.
getNum
());
}
else
if
(
"IB"
.
equals
(
statsVo
.
getType
()))
{
build
.
setDivorceNum
(
statsVo
.
getNum
());
}
else
if
(
"ICA"
.
equals
(
statsVo
.
getType
()))
{
build
.
setPatchMarryCaNum
(
statsVo
.
getNum
());
}
else
if
(
"ICB"
.
equals
(
statsVo
.
getType
()))
{
build
.
setPatchDivorceCaNum
(
statsVo
.
getNum
());
}
}
// 获取离婚中的人数
StatsVo
inDivorceNum
=
hyStatsDao
.
getInDivorceNum
(
vo
);
build
.
setInDivorceNum
(
inDivorceNum
.
getNum
());
// 获取跨地结婚离婚人数
List
<
StatsVo
>
crossMarriageStats
=
hyStatsDao
.
getCrossMarriageStats
(
vo
);
for
(
StatsVo
crossMarriageStat
:
crossMarriageStats
)
{
if
(
"IA"
.
equals
(
crossMarriageStat
.
getType
()))
{
build
.
setCrossMarryNum
(
crossMarriageStat
.
getNum
());
}
else
if
(
"IB"
.
equals
(
crossMarriageStat
.
getType
()))
{
build
.
setCrossDivorceNum
(
crossMarriageStat
.
getNum
());
}
}
// 放进缓存
redisUtils
.
setObj
(
PortalCacheKeys
.
getMarriageStatsKey
(
vo
),
build
);
// 放进数据库 有时间条件的不存库
// VMarriageStats marriageStats = vMarriageStatsDao.selectOne(Wrappers.lambdaQuery(VMarriageStats.builder().year(vo.getYear() == null ? 0 : vo.getYear()).areaCode(area.getCode()).createTime(DateUtil.parseDate(DateUtil.today())).build()));
VMarriageStats
marriageStats
=
vMarriageStatsDao
.
selectOne
(
Wrappers
.
lambdaQuery
(
VMarriageStats
.
builder
().
year
(
2022
).
areaCode
(
area
.
getCode
()).
createTime
(
DateUtil
.
parseDate
(
DateUtil
.
today
())).
build
()));
if
(
marriageStats
==
null
)
{
vMarriageStatsDao
.
insert
(
build
);
}
else
{
build
.
setId
(
marriageStats
.
getId
());
vMarriageStatsDao
.
updateById
(
build
);
}
return
build
;
}
/**
* 获取缓存区域下的结婚离婚数据
*
* @param vo
* @return
*/
public
Object
getCacheAreaUnderMarriageStatsList
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getAreaUnderMarriageStatsListKey
(
vo
));
if
(
obj
!=
null
)
{
return
obj
;
}
return
getAreaUnderMarriageStatsList
(
vo
);
}
/**
* 获取区域下的结婚离婚数据
*
* @param vo
* @return
*/
public
Object
getAreaUnderMarriageStatsList
(
StatsReqVo
vo
)
{
String
cacheKey
=
PortalCacheKeys
.
getAreaUnderMarriageStatsListKey
(
vo
);
SystemArea
area
=
areaDao
.
selectById
(
vo
.
getAreaCode
());
vo
.
setSubAreaCode
(
area
.
subAreaCode
());
vo
.
setSize
(
SystemArea
.
getNextLevelLength
(
area
.
getType
()));
List
<
VMarriageStats
>
returnData
=
new
ArrayList
<>();
// List<StatsVo> statsList = hyStatsDao.getAreaUnderMarriageStatsList(vo);
// statsList:
// for (StatsVo stats : statsList) {
// if ("IA".equals(stats.getType())) {
// for (VMarriageStats marriageStats : returnData) {
// if (marriageStats.getAreaCode().startsWith(stats.getCode())) {
// marriageStats.setMarryNum(stats.getNum());
// continue statsList;// 继续下一个统计
// }
// }
//
// SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(stats.getCode()));
// VMarriageStats build = VMarriageStats.builder()
// .areaCode(systemArea.getCode())
// .areaName(systemArea.getName())
// .year(vo.getYear())
// .marryNum(stats.getNum())
// .build();
// returnData.add(build);
// } else if ("IB".equals(stats.getType())) {
// for (VMarriageStats marriageStats : returnData) {
// if (marriageStats.getAreaCode().startsWith(stats.getCode())) {
// marriageStats.setDivorceNum(stats.getNum());
// continue statsList;// 继续下一个统计
// }
// }
//
// SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(stats.getCode()));
// VMarriageStats build = VMarriageStats.builder()
// .areaCode(systemArea.getCode())
// .areaName(systemArea.getName())
// .year(vo.getYear())
// .marryNum(stats.getNum())
// .build();
// returnData.add(build);
// }
// }
// returnData.sort(Comparator.comparing(VMarriageStats::getAreaCode));
List
<
SystemArea
>
systemAreaList
=
areaDao
.
selectList
(
Wrappers
.
lambdaQuery
(
SystemArea
.
builder
().
parentId
(
vo
.
getAreaCode
()).
build
()));
for
(
SystemArea
systemArea
:
systemAreaList
)
{
vo
.
setAreaCode
(
systemArea
.
getCode
());
VMarriageStats
marriageStats
=
getCacheMarriageStats
(
vo
);
returnData
.
add
(
marriageStats
);
}
List
<
String
>
cityList
=
new
ArrayList
<>();
List
<
String
>
iaList
=
new
ArrayList
<>();
List
<
String
>
ibList
=
new
ArrayList
<>();
for
(
VMarriageStats
marriageStats
:
returnData
)
{
cityList
.
add
(
marriageStats
.
getAreaName
());
iaList
.
add
(
NumberUtil
.
toStr
(
marriageStats
.
getMarryNum
(),
"0"
));
ibList
.
add
(
NumberUtil
.
toStr
(
marriageStats
.
getDivorceNum
(),
"0"
));
}
Map
<
String
,
Object
>
returnMap
=
new
HashMap
<>();
returnMap
.
put
(
"cityList"
,
cityList
);
returnMap
.
put
(
"iaList"
,
iaList
);
returnMap
.
put
(
"ibList"
,
ibList
);
returnMap
.
put
(
"statsList"
,
returnData
);
redisUtils
.
setObj
(
cacheKey
,
returnMap
);
return
returnMap
;
}
/**
* 获取冷静期和真正离婚的折线图数据
*
* @param vo
* @return
*/
public
Object
getDivorceCoolingLine
(
StatsReqVo
vo
)
{
// 获取冷静期
List
<
StatsVo
>
statsVoList
=
hyStatsDao
.
getMonthDivorceCoolingData
(
vo
);
return
null
;
}
/**
* 缓存获取近5年结婚离婚走势
*
* @param vo
* @return
*/
public
Object
getCacheFivesYearMarriageLine
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getFivesYearMarriageLineKey
(
vo
.
getAreaCode
()));
if
(
obj
!=
null
)
{
return
obj
;
}
return
getFivesYearMarriageLine
(
vo
);
}
/**
* 获取近5年结婚离婚走势
*
* @param vo
* @return
*/
public
Object
getFivesYearMarriageLine
(
StatsReqVo
vo
)
{
if
(
StringUtils
.
isBlank
(
vo
.
getAreaCode
()))
{
vo
.
setAreaCode
(
"450000000000"
);
}
SystemArea
area
=
areaDao
.
getAreaByCode
(
SystemArea
.
patchZero
(
vo
.
getAreaCode
()));
vo
.
setSubAreaCode
(
area
.
subAreaCode
());
vo
.
setType
(
"IA"
);
List
<
StatsVo
>
ia
=
hyStatsDao
.
getFivesYearMarriageLine
(
vo
);
ia
.
sort
(
Comparator
.
comparing
(
StatsVo:
:
getYear
));
List
<
String
>
iaDateList
=
new
ArrayList
<>();
List
<
String
>
iaAmountList
=
new
ArrayList
<>();
ia
.
forEach
(
statsVo
->
{
iaDateList
.
add
(
statsVo
.
getYear
());
iaAmountList
.
add
(
String
.
valueOf
(
statsVo
.
getNum
()));
});
LineDataVo
iaLineData
=
LineDataVo
.
builder
().
dateList
(
iaDateList
).
amountList
(
iaAmountList
).
build
();
vo
.
setType
(
"IB"
);
List
<
StatsVo
>
ib
=
hyStatsDao
.
getFivesYearMarriageLine
(
vo
);
ib
.
sort
(
Comparator
.
comparing
(
StatsVo:
:
getYear
));
List
<
String
>
ibDateList
=
new
ArrayList
<>();
List
<
String
>
ibAmountList
=
new
ArrayList
<>();
ib
.
forEach
(
statsVo
->
{
ibDateList
.
add
(
statsVo
.
getYear
());
ibAmountList
.
add
(
String
.
valueOf
(
statsVo
.
getNum
()));
});
LineDataVo
ibLineData
=
LineDataVo
.
builder
().
dateList
(
ibDateList
).
amountList
(
ibAmountList
).
build
();
// 结婚总对数
int
iaTotalNum
=
0
;
for
(
String
num
:
iaAmountList
)
{
iaTotalNum
+=
Integer
.
parseInt
(
num
);
}
// 后台管理数据
Map
<
String
,
Object
>
adminData
=
new
HashMap
<>();
adminData
.
put
(
"iaLineData"
,
iaLineData
);
adminData
.
put
(
"ibLineData"
,
ibLineData
);
adminData
.
put
(
"iaTotalNum"
,
iaTotalNum
);
//App数据
Map
<
String
,
Object
>
appData
=
new
HashMap
<>();
appData
.
put
(
"categories"
,
iaDateList
);
Map
<
String
,
Object
>
iaLine
=
new
HashMap
<>();
iaLine
.
put
(
"name"
,
"结婚对数"
);
iaLine
.
put
(
"data"
,
iaAmountList
);
Map
<
String
,
Object
>
ibLine
=
new
HashMap
<>();
ibLine
.
put
(
"name"
,
"离婚对数"
);
ibLine
.
put
(
"data"
,
ibAmountList
);
List
<
Map
<
String
,
Object
>>
seriesList
=
new
ArrayList
<>();
seriesList
.
add
(
iaLine
);
seriesList
.
add
(
ibLine
);
appData
.
put
(
"series"
,
seriesList
);
Map
<
String
,
Object
>
returnData
=
new
HashMap
<>();
returnData
.
put
(
"admin"
,
adminData
);
returnData
.
put
(
"app"
,
appData
);
redisUtils
.
setObj
(
PortalCacheKeys
.
getFivesYearMarriageLineKey
(
vo
.
getAreaCode
()),
returnData
);
return
returnData
;
}
/**
* 获取缓存月统计折线
*
* @param vo
* @return
*/
public
Object
getCacheMonthMarriageLine
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getMonthMarriageLineKey
(
vo
.
getAreaCode
()));
if
(
obj
!=
null
)
{
return
obj
;
}
return
getMonthMarriageLine
(
vo
);
}
/**
* 月统计折线
*
* @param vo
* @return
*/
public
Object
getMonthMarriageLine
(
StatsReqVo
vo
)
{
if
(
StringUtils
.
isBlank
(
vo
.
getAreaCode
()))
{
vo
.
setAreaCode
(
"450000000000"
);
}
SystemArea
area
=
areaDao
.
getAreaByCode
(
vo
.
getAreaCode
());
vo
.
setSubAreaCode
(
area
.
subAreaCode
());
vo
.
setType
(
"IA"
);
List
<
StatsVo
>
ia
=
hyStatsDao
.
getMonthMarriageLine
(
vo
);
ia
.
sort
(
Comparator
.
comparing
(
StatsVo:
:
getMonth
));
List
<
String
>
iaDateList
=
new
ArrayList
<>();
List
<
String
>
iaAmountList
=
new
ArrayList
<>();
ia
.
forEach
(
statsVo
->
{
iaDateList
.
add
(
statsVo
.
getMonth
());
iaAmountList
.
add
(
String
.
valueOf
(
statsVo
.
getNum
()));
});
LineDataVo
iaLineData
=
LineDataVo
.
builder
().
dateList
(
iaDateList
).
amountList
(
iaAmountList
).
build
();
vo
.
setType
(
"IB"
);
List
<
StatsVo
>
ib
=
hyStatsDao
.
getMonthMarriageLine
(
vo
);
ib
.
sort
(
Comparator
.
comparing
(
StatsVo:
:
getMonth
));
List
<
String
>
ibDateList
=
new
ArrayList
<>();
List
<
String
>
ibAmountList
=
new
ArrayList
<>();
ib
.
forEach
(
statsVo
->
{
ibDateList
.
add
(
statsVo
.
getMonth
());
ibAmountList
.
add
(
String
.
valueOf
(
statsVo
.
getNum
()));
});
LineDataVo
ibLineData
=
LineDataVo
.
builder
().
dateList
(
ibDateList
).
amountList
(
ibAmountList
).
build
();
// 后台管理数据
Map
<
String
,
Object
>
adminData
=
new
HashMap
<>();
adminData
.
put
(
"iaLineData"
,
iaLineData
);
adminData
.
put
(
"ibLineData"
,
ibLineData
);
//App数据
Map
<
String
,
Object
>
appData
=
new
HashMap
<>();
appData
.
put
(
"categories"
,
iaDateList
);
Map
<
String
,
Object
>
iaLine
=
new
HashMap
<>();
iaLine
.
put
(
"name"
,
"结婚对数"
);
iaLine
.
put
(
"data"
,
iaAmountList
);
Map
<
String
,
Object
>
ibLine
=
new
HashMap
<>();
ibLine
.
put
(
"name"
,
"离婚对数"
);
ibLine
.
put
(
"data"
,
ibAmountList
);
List
<
Map
<
String
,
Object
>>
seriesList
=
new
ArrayList
<>();
seriesList
.
add
(
iaLine
);
seriesList
.
add
(
ibLine
);
appData
.
put
(
"series"
,
seriesList
);
Map
<
String
,
Object
>
returnData
=
new
HashMap
<>();
returnData
.
put
(
"admin"
,
adminData
);
returnData
.
put
(
"app"
,
appData
);
redisUtils
.
setObj
(
PortalCacheKeys
.
getMonthMarriageLineKey
(
vo
.
getAreaCode
()),
returnData
);
return
returnData
;
}
/**
* 搜索
*
* @param vo
* @return
*/
public
Object
marriageSearch
(
SearchReqVo
vo
)
{
if
(
StrUtil
.
isBlank
(
vo
.
getKeyword
()))
{
SystemArea
systemArea
=
areaDao
.
selectById
(
vo
.
getAreaCode
());
vo
.
setSubAreaCode
(
systemArea
.
subAreaCode
());
}
return
PagingUtils
.
paging
(
vo
,
hyStatsDao:
:
search
);
}
/**
* 获取缓存年统计结婚对数
*
* @param vo
* @return
*/
public
Object
getCacheYearMarriedCouple
(
StatsReqVo
vo
)
{
Object
obj
=
redisUtils
.
getObj
(
PortalCacheKeys
.
getYearMarriedCoupleKey
());
if
(
obj
!=
null
)
{
return
obj
;
}
return
getYearMarriedCouple
(
vo
);
}
/**
* 年统计结婚离婚对数
*
* @param vo
* @return
*/
private
Object
getYearMarriedCouple
(
StatsReqVo
vo
)
{
Integer
iaCount
=
null
;
Integer
ibCount
=
null
;
Map
<
String
,
Object
>
returnData
=
new
HashMap
<>();
List
<
StatsVo
>
yearMarriedCouple
=
hyStatsDao
.
getYearMarriedCouple
(
vo
);
for
(
StatsVo
statsVo:
yearMarriedCouple
)
{
if
(
"IA"
.
equals
(
statsVo
.
getType
()))
{
iaCount
=
statsVo
.
getNum
();
}
else
if
(
"IB"
.
equals
(
statsVo
.
getType
()))
{
ibCount
=
statsVo
.
getNum
();
}
}
returnData
.
put
(
"结婚对数"
,
iaCount
);
returnData
.
put
(
"离婚对数"
,
ibCount
);
return
returnData
;
}
}
portal-server/src/main/java/com/zq/portal/vo/HYVo.java
View file @
18a10678
package
com
.
zq
.
portal
.
vo
;
import
lombok.*
;
/**
* @author 婚姻
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
HYVo
{
private
String
id
;
private
String
bookId
;
/**
* IA或C 结婚 IB 离婚
*/
private
String
opType
;
private
String
marryType
;
private
String
redoType
;
private
String
deptCode
;
private
String
deptName
;
private
String
nameMan
;
private
String
nameWoman
;
private
String
birthMan
;
private
String
birthWoman
;
private
String
idTypeMan
;
private
String
idTypeWoman
;
private
String
certTypeMan
;
private
String
certTypeWoman
;
private
String
certNumMan
;
private
String
certNumWoman
;
private
String
nationMan
;
private
String
nationWoman
;
private
String
folkMan
;
private
String
folkWoman
;
private
String
jobMan
;
private
String
jobWoman
;
private
String
degreeMan
;
private
String
degreeWoman
;
private
String
marryStatusMan
;
private
String
marryStatusWoman
;
private
String
registypeMan
;
private
String
registypeWoman
;
private
String
regSjMan
;
private
String
regSjWoman
;
private
String
regDsMan
;
private
String
regDsWoman
;
private
String
regQxMan
;
private
String
regQxWoman
;
private
String
regJxMan
;
private
String
regJxWoman
;
private
String
regDetailMan
;
private
String
regDetailWoman
;
private
String
printNumMan
;
private
String
printNumWoman
;
private
String
picIdMan
;
private
String
picIdWoman
;
private
String
certProofMan
;
private
String
certProofWoman
;
private
String
oldCertNo
;
private
String
oldDeptId
;
private
String
oldDeptCode
;
private
String
oldDeptName
;
private
String
oldOpDate
;
private
String
certNo
;
private
String
opDate
;
private
String
operator
;
private
String
operatorId
;
private
String
checkCode
;
private
String
checkData
;
private
String
renewFlag
;
private
String
remedyFlag
;
private
String
cohabitDate
;
private
String
cancelProof
;
private
String
dataSource
;
private
String
docCode
;
private
String
docYear
;
private
String
docPageNum
;
private
String
docNo
;
private
String
divorceReason
;
private
String
redoReason
;
private
String
applyMan
;
private
String
applyDate
;
private
String
delegateFlag
;
private
String
delegateType
;
private
String
delegatedName
;
private
String
delegatedCertType
;
private
String
delegatedCertNo
;
private
String
linkKindMan
;
private
String
linkKindWoman
;
private
String
addressNowMan
;
private
String
addressNowWoman
;
private
String
remark
;
private
String
validFlag
;
private
String
printRemark
;
private
String
nameManEn
;
private
String
nameWomanEn
;
}
package
com
.
zq
.
portal
.
vo
;
import
lombok.*
;
/**
* @author 婚姻
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
HYVo
{
private
String
id
;
private
String
bookId
;
/**
* IA或C 结婚 IB 离婚
*/
private
String
opType
;
private
String
marryType
;
private
String
redoType
;
private
String
deptCode
;
private
String
deptName
;
private
String
nameMan
;
private
String
nameWoman
;
private
String
birthMan
;
private
String
birthWoman
;
private
String
idTypeMan
;
private
String
idTypeWoman
;
private
String
certTypeMan
;
private
String
certTypeWoman
;
private
String
certNumMan
;
private
String
certNumWoman
;
private
String
nationMan
;
private
String
nationWoman
;
private
String
folkMan
;
private
String
folkWoman
;
private
String
jobMan
;
private
String
jobWoman
;
private
String
degreeMan
;
private
String
degreeWoman
;
private
String
marryStatusMan
;
private
String
marryStatusWoman
;
private
String
registypeMan
;
private
String
registypeWoman
;
private
String
regSjMan
;
private
String
regSjWoman
;
private
String
regDsMan
;
private
String
regDsWoman
;
private
String
regQxMan
;
private
String
regQxWoman
;
private
String
regJxMan
;
private
String
regJxWoman
;
private
String
regDetailMan
;
private
String
regDetailWoman
;
private
String
printNumMan
;
private
String
printNumWoman
;
private
String
picIdMan
;
private
String
picIdWoman
;
private
String
certProofMan
;
private
String
certProofWoman
;
private
String
oldCertNo
;
private
String
oldDeptId
;
private
String
oldDeptCode
;
private
String
oldDeptName
;
private
String
oldOpDate
;
private
String
certNo
;
private
String
opDate
;
private
String
operator
;
private
String
operatorId
;
private
String
checkCode
;
private
String
checkData
;
private
String
renewFlag
;
private
String
remedyFlag
;
private
String
cohabitDate
;
private
String
cancelProof
;
private
String
dataSource
;
private
String
docCode
;
private
String
docYear
;
private
String
docPageNum
;
private
String
docNo
;
private
String
divorceReason
;
private
String
redoReason
;
private
String
applyMan
;
private
String
applyDate
;
private
String
delegateFlag
;
private
String
delegateType
;
private
String
delegatedName
;
private
String
delegatedCertType
;
private
String
delegatedCertNo
;
private
String
linkKindMan
;
private
String
linkKindWoman
;
private
String
addressNowMan
;
private
String
addressNowWoman
;
private
String
remark
;
private
String
validFlag
;
private
String
printRemark
;
private
String
nameManEn
;
private
String
nameWomanEn
;
}
portal-server/src/main/java/com/zq/portal/vo/SearchReqVo.java
View file @
18a10678
package
com
.
zq
.
portal
.
vo
;
import
com.zq.common.vo.PageReqVo
;
import
com.zq.portal.entity.SystemArea
;
import
lombok.*
;
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
SearchReqVo
extends
PageReqVo
{
@Builder
.
Default
private
String
areaCode
=
"450000000000"
;
private
String
subAreaCode
;
private
String
keyword
;
public
String
getAreaCode
()
{
return
SystemArea
.
patchZero
(
areaCode
);
}
}
package
com
.
zq
.
portal
.
vo
;
import
com.zq.common.vo.PageReqVo
;
import
com.zq.portal.entity.SystemArea
;
import
lombok.*
;
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
SearchReqVo
extends
PageReqVo
{
@Builder
.
Default
private
String
areaCode
=
"450000000000"
;
private
String
subAreaCode
;
private
String
keyword
;
private
String
IAcount
;
private
String
IBcount
;
public
String
getAreaCode
()
{
return
SystemArea
.
patchZero
(
areaCode
);
}
}
portal-server/src/main/resources/mapper/CjStatsMapper.xml
View file @
18a10678
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.zq.portal.dao.CjStatsDao"
>
<select
id=
"getPeopleAmountStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', SUM( SUBSIDY_STANDARD_MONEY ) 'amount', `YEAR` 'year'
FROM `cjrjz_application`
WHERE CHECK_STATUS = 1
AND `STATUS` = 0
AND APPROVE_DATE IS NOT NULL
GROUP BY `YEAR`
ORDER BY `YEAR` DESC LIMIT 5
</select>
<select
id=
"getDisabledLevelStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT ENSURE_LEVEL_ID 'type', COUNT( 1 ) 'num'
FROM `cjrjz_proposer`
WHERE ENSURE_LEVEL_ID IS NOT NULL
<if
test=
"type != null"
>
AND ENSURE_LEVEL_ID = #{type}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"year != null"
>
AND LEFT(CREATE_DATE, 4) = #{year}
</if>
GROUP BY ENSURE_LEVEL_ID
</select>
<!--获取近年重度残疾人数-->
<select
id=
"getYearSevereDisabledStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT ( CREATE_DATE, 4 ) 'year',
COUNT( 1 ) 'num'
FROM
`cjrjz_proposer`
WHERE
ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (1,2)
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"year != null"
>
AND LEFT(CREATE_DATE, 4) = #{year}
</if>
GROUP BY LEFT ( CREATE_DATE, 4 )
ORDER BY LEFT ( CREATE_DATE, 4 ) DESC
LIMIT #{size}
</select>
<select
id=
"getSeverePeopleNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 ) 'num'
FROM
`cjrjz_proposer`
WHERE
ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (1,2)
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"year != null"
>
AND LEFT(CREATE_DATE, 4) = #{year}
</if>
</select>
<select
id=
"getDifficultPeopleNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 ) 'num'
FROM
`cjrjz_proposer`
WHERE
ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (3,4)
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"year != null"
>
AND LEFT(CREATE_DATE, 4) = #{year}
</if>
</select>
<select
id=
"getAreaIssueStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT LEFT(UNIT_ID, #{size}) 'code', APPLY_TYPE_ID 'type', GRANT_YEAR 'year', COUNT_PEOPLE 'num', SUM_MONEY
'amount'
FROM `statics_grant`
WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM statics_grant ORDER BY create_time DESC LIMIT 1)
AND CHAR_LENGTH (LEFT ( UNIT_ID, #{size} )) = #{size}
<if
test=
"year != null"
>
AND GRANT_YEAR = #{year}
</if>
<if
test=
"type != null"
>
AND APPLY_TYPE_ID = #{type}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
GROUP BY LEFT(UNIT_ID, #{size})
</select>
<select
id=
"getAreaSubsidyStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT LEFT(AREACODE, #{size}) 'code', FF_DATE 'month',SUM(FF_ZD_PC ) 'hlnum', SUM(FF_ZD_MC) 'hlamount',SUM(FF_KUN_PC) 'shnum', SUM(FF_KUN_MC) 'shamount'
FROM `ff_data_jm`
WHERE
CHAR_LENGTH (LEFT ( AREACODE, #{size} )) = #{size}
AND FF_DATE = DATE_FORMAT(NOW(),'%Y-%m')
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND AREACODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
GROUP BY LEFT(AREACODE, #{size})
</select>
<select
id=
"getEnjoySumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT SUM(S_PC) 'num' , SUM(S_MC) 'amount'
FROM ff_data_jm
WHERE FF_DATE = DATE_FORMAT(NOW(),'%Y-%m')
</select>
<select
id=
"getYearIssueStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT APPLY_TYPE_ID 'type', GRANT_YEAR 'year', SUM( COUNT_PEOPLE ) 'num', SUM( SUM_MONEY ) 'amount'
FROM `statics_grant`
WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM statics_grant
ORDER BY create_time DESC LIMIT 1)
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND UNIT_ID LIKE CONCAT( #{subAreaCode}, '%' )
</if>
<if
test=
"type != null"
>
AND APPLY_TYPE_ID = #{type}
</if>
GROUP BY GRANT_YEAR
ORDER BY GRANT_YEAR DESC LIMIT #{size}
</select>
<select
id=
"getYearList"
resultType=
"java.lang.String"
>
SELECT GRANT_YEAR 'year'
FROM `statics_grant`
GROUP BY GRANT_YEAR
ORDER BY GRANT_YEAR DESC LIMIT 5
</select>
<select
id=
"search"
resultType=
"java.util.Map"
>
SELECT NAME 'name', CARD_CODE 'idCard',MARRY_TYPE_ID 'marryType', REGISTER_ADDRESS_NAME
'addressName',ENSURE_LEVEL_ID 'levelId', CREATE_DATE 'createTime'
FROM
cjrjz_proposer
WHERE 1=1
<if
test=
"keyword != null and keyword != ''"
>
AND (NAME =#{keyword} OR CARD_CODE =#{keyword})
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
ORDER BY CREATE_DATE DESC
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.zq.portal.dao.CjStatsDao"
>
<select
id=
"getPeopleAmountStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', SUM( SUBSIDY_STANDARD_MONEY ) 'amount', `YEAR` 'year'
FROM `cjrjz_application`
WHERE CHECK_STATUS = 1
AND `STATUS` = 0
AND APPROVE_DATE IS NOT NULL
GROUP BY `YEAR`
ORDER BY `YEAR` DESC LIMIT 5
</select>
<select
id=
"getDisabledLevelStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT ENSURE_LEVEL_ID 'type', COUNT( 1 ) 'num'
FROM `cjrjz_proposer`
WHERE ENSURE_LEVEL_ID IS NOT NULL
<if
test=
"type != null"
>
AND ENSURE_LEVEL_ID = #{type}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"year != null"
>
AND LEFT(CREATE_DATE, 4) = #{year}
</if>
GROUP BY ENSURE_LEVEL_ID
</select>
<!--获取近年重度残疾人数-->
<select
id=
"getYearSevereDisabledStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT ( CREATE_DATE, 4 ) 'year',
COUNT( 1 ) 'num'
FROM
`cjrjz_proposer`
WHERE
ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (1,2)
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"year != null"
>
AND LEFT(CREATE_DATE, 4) = #{year}
</if>
GROUP BY LEFT ( CREATE_DATE, 4 )
ORDER BY LEFT ( CREATE_DATE, 4 ) DESC
LIMIT #{size}
</select>
<select
id=
"getSeverePeopleNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 ) 'num'
FROM
`cjrjz_proposer`
WHERE
ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (1,2)
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"year != null"
>
AND LEFT(CREATE_DATE, 4) = #{year}
</if>
</select>
<select
id=
"getDifficultPeopleNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 ) 'num'
FROM
`cjrjz_proposer`
WHERE
ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (3,4)
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"year != null"
>
AND LEFT(CREATE_DATE, 4) = #{year}
</if>
</select>
<select
id=
"getAreaIssueStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT LEFT(UNIT_ID, #{size}) 'code', APPLY_TYPE_ID 'type', GRANT_YEAR 'year', COUNT_PEOPLE 'num', SUM_MONEY
'amount'
FROM `statics_grant`
WHERE
# DATE_FORMAT(create_time, '%Y-%m-%d') = (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM statics_grant ORDER BY create_time DESC LIMIT 1)
CHAR_LENGTH (LEFT ( UNIT_ID, #{size} )) = #{size}
<if
test=
"year != null"
>
AND GRANT_YEAR = #{year}
</if>
<if
test=
"type != null"
>
AND APPLY_TYPE_ID = #{type}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
GROUP BY LEFT(UNIT_ID, #{size})
</select>
<select
id=
"getAreaSubsidyStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT LEFT(AREACODE, #{size}) 'code', FF_DATE 'month',SUM(FF_ZD_PC ) 'hlnum', SUM(FF_ZD_MC) 'hlamount',SUM(FF_KUN_PC) 'shnum', SUM(FF_KUN_MC) 'shamount'
FROM `ff_data_jm`
WHERE
CHAR_LENGTH (LEFT ( AREACODE, #{size} )) = #{size}
AND FF_DATE = DATE_FORMAT(NOW(),'%Y-%m')
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND AREACODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
GROUP BY LEFT(AREACODE, #{size})
</select>
<select
id=
"getEnjoySumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT SUM(S_PC) 'num' , SUM(S_MC) 'amount'
FROM ff_data_jm
WHERE FF_DATE = DATE_FORMAT(NOW(),'%Y-%m')
</select>
<select
id=
"getYearIssueStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT APPLY_TYPE_ID 'type', GRANT_YEAR 'year', SUM( COUNT_PEOPLE ) 'num', SUM( SUM_MONEY ) 'amount'
FROM `statics_grant`
WHERE 1=1
# DATE_FORMAT(create_time, '%Y-%m-%d') = (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM statics_grant
# ORDER BY create_time DESC LIMIT 1)
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND UNIT_ID LIKE CONCAT( #{subAreaCode}, '%' )
</if>
<if
test=
"type != null"
>
AND APPLY_TYPE_ID = #{type}
</if>
GROUP BY GRANT_YEAR
ORDER BY GRANT_YEAR DESC LIMIT #{size}
</select>
<select
id=
"getYearList"
resultType=
"java.lang.String"
>
SELECT GRANT_YEAR 'year'
FROM `statics_grant`
GROUP BY GRANT_YEAR
ORDER BY GRANT_YEAR DESC LIMIT 5
</select>
<select
id=
"search"
resultType=
"java.util.Map"
>
SELECT NAME 'name', CARD_CODE 'idCard',MARRY_TYPE_ID 'marryType', REGISTER_ADDRESS_NAME
'addressName',ENSURE_LEVEL_ID 'levelId', CREATE_DATE 'createTime'
FROM
cjrjz_proposer
WHERE 1=1
<if
test=
"keyword != null and keyword != ''"
>
AND (NAME =#{keyword} OR CARD_CODE =#{keyword})
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if>
ORDER BY CREATE_DATE DESC
</select>
</mapper>
portal-server/src/main/resources/mapper/HyStatsMapper.xml
View file @
18a10678
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.zq.portal.dao.HyStatsDao"
>
<select
id=
"getFivesYearMarriageLine"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', m.AIAX0001 'type', DATE_FORMAT( m.AIAX0048, "%Y" ) 'year'
FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND DATE_FORMAT(m.AIAX0048, "%Y")
<
= YEAR(NOW())
AND m.AIAX0001 = #{type}
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
GROUP BY DATE_FORMAT(m.AIAX0048, "%Y")
ORDER BY DATE_FORMAT(m.AIAX0048, "%Y") DESC LIMIT 5
</select>
<select
id=
"getMonthMarriageLine"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', m.AIAX0001 'type', DATE_FORMAT( m.AIAX0048, "%Y-%m" ) 'month'
FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND m.AIAX0001 = #{type}
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
GROUP BY DATE_FORMAT(m.AIAX0048, '%Y-%m')
ORDER BY DATE_FORMAT(m.AIAX0048, '%Y-%m') DESC LIMIT 12
</select>
<select
id=
"getMarriageStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 ) 'num',
m.AIAX0001 'type'
FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE
m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
GROUP BY
m.AIAX0001
</select>
<!--获取下级区域婚姻统计列表-->
<select
id=
"getAreaUnderMarriageStatsList"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT ( t.YAB003, #{size} ) 'code',
m.AIAX0001 'type' ,
COUNT( 1 ) 'num'
FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE
m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND CHAR_LENGTH (LEFT ( t.YAB003, #{size} )) = #{size}
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"type != null and type != ''"
>
AND m.AIAX0001 = #{type}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT( #{subAreaCode}, '%' )
</if>
GROUP BY
LEFT ( t.YAB003, #{size} ), m.AIAX0001
</select>
<!--获取跨地婚姻统计-->
<select
id=
"getCrossMarriageStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 ) 'num',
m.AIAX0001 'type'
FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE
m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND LEFT(m.AIAP0013,4) != LEFT(t.YAB003,4)
AND LEFT(m.AIAP0014,4) != LEFT(t.YAB003,4)
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
GROUP BY
m.AIAX0001
</select>
<!--获取离婚中的人数-->
<select
id=
"getInDivorceNum"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', m.AIAX0001 'type'
FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0001 = 'IB'
AND m.BIAX0075 = '1'
AND m.AIAX0072 != '1'
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
</select>
<!--获取结婚人数-->
<select
id=
"getMarryNum"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', m.AIAX0001 'type'
FROM mrcase m JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0001 = 'IA'
AND m.BIAX0075 = '1'
AND m.AIAX0072 = '1'
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
</select>
<select
id=
"getMonthDivorceCoolingData"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT (m.AIAX0048, 10),
COUNT (1) 'num'
FROM
mrcheck m
LEFT JOIN mrcheckappend ma
ON m.BIAX0069 = ma.BIAX0069
WHERE
m.AIAX0001 = 'IB'
AND m.AIAX0072 = '1'
AND m.BIAX0015 = '6'
AND ma.COLEENDTIME
<
CURDATE()
GROUP BY LEFT (m.AIAX0048, 10)
</select>
<!-- <select id="search" resultType="java.util.Map">-->
<!-- SELECT m.AIAX0001 'businessType', m.AIAP0005 'manName', m.AIAP0006 'girlName', m.AIAP0013 'manIdCard', m.AIAP0014-->
<!-- 'girlIdCard',-->
<!-- m.AIAP0015 'manNationality', m.AIAP0016 'girlNationality', m.AIAP0023 'manState', m.AIAP0024 'girlState',-->
<!-- m.AIAP0027-->
<!-- 'manDomicile', m.AIAP0028 'girlDomicile', m.AIAX0035 'manContact', m.AIAX0036 'girlContact', m.AIAX0059-->
<!-- 'archiveYear',-->
<!-- LEFT (m.AIAX0048, 10) 'registerDate', m.AIAE0004 'orgName'-->
<!-- FROM `mrcase` m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID-->
<!-- WHERE 1=1-->
<!-- <if test="keyword != null and keyword != ''">-->
<!-- AND (m.AIAP0005 = #{keyword} OR AIAP0006 = #{keyword} OR AIAP0013 = #{keyword} OR AIAP0014 = #{keyword})-->
<!-- </if>-->
<!-- <if test="subAreaCode != null and subAreaCode != ''">-->
<!-- AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')-->
<!-- </if>-->
<!-- ORDER BY m.AIAX0048 DESC-->
<!-- </select>-->
<select
id=
"search"
resultType=
"java.util.Map"
>
SELECT businessType, manName, girlName, manIdCard, girlIdCard,
manNationality, girlNationality, manState, girlState, manDomicile,
girlDomicile, manContact, girlContact, archiveYear, registerDate, orgName, areaCode
FROM `search_data`
WHERE 1=1
<if
test=
"keyword != null and keyword != ''"
>
AND (manName = #{keyword} OR girlName = #{keyword} OR manIdCard = #{keyword} OR girlIdCard = #{keyword})
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND areaCode LIKE CONCAT(#{subAreaCode},'%')
</if>
ORDER BY registerDate DESC
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.zq.portal.dao.HyStatsDao"
>
<select
id=
"getFivesYearMarriageLine"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', m.AIAX0001 'type', DATE_FORMAT( m.AIAX0048, "%Y" ) 'year'
FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND DATE_FORMAT(m.AIAX0048, "%Y")
<
= YEAR(NOW())
AND m.AIAX0001 = #{type}
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
GROUP BY DATE_FORMAT(m.AIAX0048, "%Y")
ORDER BY DATE_FORMAT(m.AIAX0048, "%Y") DESC LIMIT 5
</select>
<select
id=
"getMonthMarriageLine"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', m.AIAX0001 'type', DATE_FORMAT( m.AIAX0048, "%Y-%m" ) 'month'
FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND m.AIAX0001 = #{type}
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
GROUP BY DATE_FORMAT(m.AIAX0048, '%Y-%m')
ORDER BY DATE_FORMAT(m.AIAX0048, '%Y-%m') DESC LIMIT 12
</select>
<select
id=
"getMarriageStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 ) 'num',
m.AIAX0001 'type'
FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE
m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
GROUP BY
m.AIAX0001
</select>
<!--获取下级区域婚姻统计列表-->
<select
id=
"getAreaUnderMarriageStatsList"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT ( t.YAB003, #{size} ) 'code',
m.AIAX0001 'type' ,
COUNT( 1 ) 'num'
FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE
m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND CHAR_LENGTH (LEFT ( t.YAB003, #{size} )) = #{size}
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"type != null and type != ''"
>
AND m.AIAX0001 = #{type}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT( #{subAreaCode}, '%' )
</if>
GROUP BY
LEFT ( t.YAB003, #{size} ), m.AIAX0001
</select>
<!--获取跨地婚姻统计-->
<select
id=
"getCrossMarriageStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 ) 'num',
m.AIAX0001 'type'
FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE
m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND LEFT(m.AIAP0013,4) != LEFT(t.YAB003,4)
AND LEFT(m.AIAP0014,4) != LEFT(t.YAB003,4)
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
GROUP BY
m.AIAX0001
</select>
<!--获取离婚中的人数-->
<select
id=
"getInDivorceNum"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', m.AIAX0001 'type'
FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0001 = 'IB'
AND m.BIAX0075 = '1'
AND m.AIAX0072 != '1'
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
</select>
<!--获取结婚人数-->
<select
id=
"getMarryNum"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT COUNT(1) 'num', m.AIAX0001 'type'
FROM mrcase m JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0001 = 'IA'
AND m.BIAX0075 = '1'
AND m.AIAX0072 = '1'
<if
test=
"year != null"
>
AND m.AIAX0059 = #{year}
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if>
</select>
<select
id=
"getMonthDivorceCoolingData"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT (m.AIAX0048, 10),
COUNT (1) 'num'
FROM
mrcheck m
LEFT JOIN mrcheckappend ma
ON m.BIAX0069 = ma.BIAX0069
WHERE
m.AIAX0001 = 'IB'
AND m.AIAX0072 = '1'
AND m.BIAX0015 = '6'
AND ma.COLEENDTIME
<
CURDATE()
GROUP BY LEFT (m.AIAX0048, 10)
</select>
<!-- <select id="search" resultType="java.util.Map">-->
<!-- SELECT m.AIAX0001 'businessType', m.AIAP0005 'manName', m.AIAP0006 'girlName', m.AIAP0013 'manIdCard', m.AIAP0014-->
<!-- 'girlIdCard',-->
<!-- m.AIAP0015 'manNationality', m.AIAP0016 'girlNationality', m.AIAP0023 'manState', m.AIAP0024 'girlState',-->
<!-- m.AIAP0027-->
<!-- 'manDomicile', m.AIAP0028 'girlDomicile', m.AIAX0035 'manContact', m.AIAX0036 'girlContact', m.AIAX0059-->
<!-- 'archiveYear',-->
<!-- LEFT (m.AIAX0048, 10) 'registerDate', m.AIAE0004 'orgName'-->
<!-- FROM `mrcase` m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID-->
<!-- WHERE 1=1-->
<!-- <if test="keyword != null and keyword != ''">-->
<!-- AND (m.AIAP0005 = #{keyword} OR AIAP0006 = #{keyword} OR AIAP0013 = #{keyword} OR AIAP0014 = #{keyword})-->
<!-- </if>-->
<!-- <if test="subAreaCode != null and subAreaCode != ''">-->
<!-- AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')-->
<!-- </if>-->
<!-- ORDER BY m.AIAX0048 DESC-->
<!-- </select>-->
<select
id=
"search"
resultType=
"java.util.Map"
>
SELECT businessType, manName, girlName, manIdCard, girlIdCard,
manNationality, girlNationality, manState, girlState, manDomicile,
girlDomicile, manContact, girlContact, archiveYear, registerDate, orgName, areaCode
FROM `search_data`
WHERE 1=1
<if
test=
"keyword != null and keyword != ''"
>
AND (manName = #{keyword} OR girlName = #{keyword} OR manIdCard = #{keyword} OR girlIdCard = #{keyword})
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND areaCode LIKE CONCAT(#{subAreaCode},'%')
</if>
ORDER BY registerDate DESC
</select>
<select
id=
"getYearMarriedCouple"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
COUNT( 1 )
FROM
MRCASE m
WHERE
1=1
<if
test=
"type != null and type != ''"
>
AND m.AIAX0001 = #{type}
</if>
AND BIAX0075 = '1'
AND AIAX0072 = '1'
AND DATE_FORMAT(AIAX0048,'%Y%m') >= '202201'
AND DATE_FORMAT(AIAX0048,'%Y%m')
<
= '202212'
</select>
</mapper>
portal-server/src/main/resources/mapper/ShjzStatsDao.xml
View file @
18a10678
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.zq.portal.dao.ShjzStatsDao"
>
<!-- <select id="search" resultType="java.util.Map">-->
<!-- SELECT AXDF0002 'name', AXDF0004 'mainIdCard', AXDF0011 'phone',AXDF0008 'address', AXAA2701 'unitCode'-->
<!-- ,UPDATETIME 'createTime'-->
<!-- FROM-->
<!-- baf01-->
<!-- WHERE 1 = 1-->
<!-- <choose>-->
<!-- <when test="keyword != null and keyword != ''">-->
<!-- AND (AXDF0002 = #{keyword}-->
<!-- OR AXDF0004 = #{keyword})-->
<!-- </when>-->
<!-- <otherwise>-->
<!-- ORDER BY UPDATETIME DESC LIMIT 20-->
<!-- </otherwise>-->
<!-- </choose>-->
<!-- </select>-->
<select
id=
"search"
resultType=
"java.util.Map"
>
SELECT
REPLACE(address, '广西壮族自治区-', '') 'address',
NAME 'name',
id_card 'idCard',
help_type 'helpType',
help_amount 'helpAmount',
provide_state 'provideState',
start_provide_date 'startProvideDate',
end_provide_date 'endProvideDate'
FROM
`gw_temptable_20210630`
WHERE 1 = 1
<if
test=
"keyword != null and keyword != ''"
>
AND (NAME = #{keyword}
OR id_card = #{keyword})
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND id_card LIKE CONCAT(#{subAreaCode},'%')
</if>
ORDER BY start_provide_date DESC
</select>
<select
id=
"getEnjoyNum"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
( CASE h.ISCITY
WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" )
<
= #{date}
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= #{date}
GROUP BY
ISCITY
</select>
<select
id=
"getTemporaryNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT(h.UNIT_ID, 4) 'code',
SUM(h.SURE_POPULATION ) 'num'
FROM
tem_home_his h
WHERE
h.VP_STATE = 4
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
<choose>
<when
test=
"year != null"
>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = #{year}
</when>
<otherwise>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = DATE_FORMAT(NOW(), "%Y" )
</otherwise>
</choose>
</select>
<select
id=
"getBorderNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT(h.UNIT_ID, #{size}) 'code',
sum( h.SURE_POPULATION ) 'num'
FROM
border_region_home h
WHERE h.VP_STATE = 4
AND h.ISCITY = 8
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
<choose>
<when
test=
"year != null"
>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = #{year}
</when>
<otherwise>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = DATE_FORMAT(NOW(), "%Y" )
</otherwise>
</choose>
</select>
<select
id=
"getAreaUnderNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT(h.UNIT_ID, #{size}) 'code',
h.ISCITY 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM
ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
AND LEFT(h.UNIT_ID, #{size}) IS NOT NULL
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"type != null and type != ''"
>
AND h.ISCITY = #{type}
</if>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" )
<
= '2021-12-01'
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= '2021-12-01'
GROUP BY
LEFT(h.UNIT_ID, #{size}),
type
</select>
<select
id=
"getAreaTotalNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
h.ISCITY 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM
ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" )
<
= '2021-12-01'
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= '2021-12-01'
AND h.ISCITY IN(0,1)
GROUP BY
type
</select>
<!--
SELECT DATE_FORMAT(h.PERMIT_DATE, "%Y-%m") 'date',
( CASE h.ISCITY
WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
AND h.ISCITY IN(0, 1)
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) > DATE_FORMAT(NOW(), "%Y" ) - 5
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) <= DATE_FORMAT(NOW(), "%Y" )
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ) <= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), "%Y-%m")
AND h.UNIT_ID LIKE CONCAT('45', '%')
GROUP BY
DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ),
ISCITY
-->
<select
id=
"getFivesYearEnjoyStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT LEFT(date, 4) 'year', type, SUM(num) 'num' FROM ( SELECT DATE_FORMAT(h.PERMIT_DATE, "%Y-%m") 'date',
( CASE h.ISCITY
WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
AND h.ISCITY IN(0, 1)
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) > DATE_FORMAT(NOW(), "%Y" ) - 5
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" )
<
= DATE_FORMAT(NOW(), "%Y" )
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
GROUP BY
DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ),
ISCITY) t
WHERE type IN("城市低保","农村低保")
GROUP BY
LEFT(date, 4),
type
</select>
<select
id=
"getPeopleNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT ( a.area_code, #{size} ) 'code',
a.type 'type',
SUM(a.people_num) 'num'
FROM city_coutry
_2021 a
WHERE
CHAR_LENGTH (LEFT ( a.area_code, #{size} )) = #{size}
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND a.area_code LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"type != null and type != ''"
>
AND a.type = #{type}
</if>
GROUP BY
LEFT ( a.area_code, #{size} ),
a.type
</select>
<!-- iscity = 1 是城市 0是农村 -->
<select
id=
"getMonyNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT(p.unit_id, #{size}) 'code',
p.iscity 'type',
SUM( p.money ) 'amount'
FROM
mon_pay p
WHERE
p.pay_state = 2
AND p.vp_state = 4
AND DATE_FORMAT( p.pmonth, "%Y-%m-%d" ) >= '2021-12-01'
AND DATE_FORMAT( p.pmonth, "%Y-%m-%d" )
<
= '2021-12-01'
AND CHAR_LENGTH (LEFT ( p.unit_id, #{size} )) = #{size}
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND p.unit_id LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"type != null and type != ''"
>
AND p.iscity = #{type}
</if>
GROUP BY
LEFT(p.unit_id, #{size}),
p.iscity
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.zq.portal.dao.ShjzStatsDao"
>
<!-- <select id="search" resultType="java.util.Map">-->
<!-- SELECT AXDF0002 'name', AXDF0004 'mainIdCard', AXDF0011 'phone',AXDF0008 'address', AXAA2701 'unitCode'-->
<!-- ,UPDATETIME 'createTime'-->
<!-- FROM-->
<!-- baf01-->
<!-- WHERE 1 = 1-->
<!-- <choose>-->
<!-- <when test="keyword != null and keyword != ''">-->
<!-- AND (AXDF0002 = #{keyword}-->
<!-- OR AXDF0004 = #{keyword})-->
<!-- </when>-->
<!-- <otherwise>-->
<!-- ORDER BY UPDATETIME DESC LIMIT 20-->
<!-- </otherwise>-->
<!-- </choose>-->
<!-- </select>-->
<select
id=
"search"
resultType=
"java.util.Map"
>
SELECT
REPLACE(address, '广西壮族自治区-', '') 'address',
NAME 'name',
id_card 'idCard',
help_type 'helpType',
help_amount 'helpAmount',
provide_state 'provideState',
start_provide_date 'startProvideDate',
end_provide_date 'endProvideDate'
FROM
`gw_temptable_20210630`
WHERE 1 = 1
<if
test=
"keyword != null and keyword != ''"
>
AND (NAME = #{keyword}
OR id_card = #{keyword})
</if>
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND id_card LIKE CONCAT(#{subAreaCode},'%')
</if>
ORDER BY start_provide_date DESC
</select>
<select
id=
"getEnjoyNum"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
( CASE h.ISCITY
WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" )
<
= #{date}
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= #{date}
GROUP BY
ISCITY
</select>
<select
id=
"getTemporaryNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT(h.UNIT_ID, 4) 'code',
SUM(h.SURE_POPULATION ) 'num'
FROM
tem_home_his h
WHERE
h.VP_STATE = 4
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
<choose>
<when
test=
"year != null"
>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = #{year}
</when>
<otherwise>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = DATE_FORMAT(NOW(), "%Y" )
</otherwise>
</choose>
</select>
<select
id=
"getBorderNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT(h.UNIT_ID, #{size}) 'code',
sum( h.SURE_POPULATION ) 'num'
FROM
border_region_home h
WHERE h.VP_STATE = 4
AND h.ISCITY = 8
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
<choose>
<when
test=
"year != null"
>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = #{year}
</when>
<otherwise>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = DATE_FORMAT(NOW(), "%Y" )
</otherwise>
</choose>
</select>
<select
id=
"getAreaUnderNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT(h.UNIT_ID, #{size}) 'code',
h.ISCITY 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM
ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
AND LEFT(h.UNIT_ID, #{size}) IS NOT NULL
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"type != null and type != ''"
>
AND h.ISCITY = #{type}
</if>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" )
<
= '2021-12-01'
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= '2021-12-01'
GROUP BY
LEFT(h.UNIT_ID, #{size}),
type
</select>
<select
id=
"getAreaTotalNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
h.ISCITY 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM
ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" )
<
= '2021-12-01'
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= '2021-12-01'
AND h.ISCITY IN(0,1)
GROUP BY
type
</select>
<!--
SELECT DATE_FORMAT(h.PERMIT_DATE, "%Y-%m") 'date',
( CASE h.ISCITY
WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
AND h.ISCITY IN(0, 1)
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) > DATE_FORMAT(NOW(), "%Y" ) - 5
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) <= DATE_FORMAT(NOW(), "%Y" )
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ) <= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), "%Y-%m")
AND h.UNIT_ID LIKE CONCAT('45', '%')
GROUP BY
DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ),
ISCITY
-->
<select
id=
"getFivesYearEnjoyStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT LEFT(date, 4) 'year', type, SUM(num) 'num' FROM ( SELECT DATE_FORMAT(h.PERMIT_DATE, "%Y-%m") 'date',
( CASE h.ISCITY
WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4
AND h.ISCITY IN(0, 1)
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) > DATE_FORMAT(NOW(), "%Y" ) - 5
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" )
<
= DATE_FORMAT(NOW(), "%Y" )
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if>
GROUP BY
DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ),
ISCITY) t
WHERE type IN("城市低保","农村低保")
GROUP BY
LEFT(date, 4),
type
</select>
<select
id=
"getPeopleNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT ( a.area_code, #{size} ) 'code',
a.type 'type',
SUM(a.people_num) 'num'
FROM city_coutry
a
WHERE
CHAR_LENGTH (LEFT ( a.area_code, #{size} )) = #{size}
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND a.area_code LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"type != null and type != ''"
>
AND a.type = #{type}
</if>
GROUP BY
LEFT ( a.area_code, #{size} ),
a.type
</select>
<!-- iscity = 1 是城市 0是农村 -->
<select
id=
"getMonyNumStats"
resultType=
"com.zq.portal.vo.StatsVo"
>
SELECT
LEFT(p.unit_id, #{size}) 'code',
p.iscity 'type',
SUM( p.money ) 'amount'
FROM
mon_pay p
WHERE
p.pay_state = 2
AND p.vp_state = 4
AND DATE_FORMAT( p.pmonth, "%Y-%m-%d" ) >= '2021-12-01'
AND DATE_FORMAT( p.pmonth, "%Y-%m-%d" )
<
= '2021-12-01'
AND CHAR_LENGTH (LEFT ( p.unit_id, #{size} )) = #{size}
<if
test=
"subAreaCode != null and subAreaCode != ''"
>
AND p.unit_id LIKE CONCAT(#{subAreaCode}, '%')
</if>
<if
test=
"type != null and type != ''"
>
AND p.iscity = #{type}
</if>
GROUP BY
LEFT(p.unit_id, #{size}),
p.iscity
</select>
</mapper>
resource-server/src/main/java/com/zq/resource/controller/DeptController.java
View file @
18a10678
package
com
.
zq
.
resource
.
controller
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.vo.IdVo
;
import
com.zq.common.vo.PageVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.resource.entity.OrgDept
;
import
com.zq.resource.service.DeptService
;
import
com.zq.resource.vo.OrgDeptFindVo
;
import
com.zq.resource.vo.OrgDeptVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @author wilmiam
* @since 2021/8/19 14:33
*/
@Api
(
tags
=
"机构部门相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/resource/dept"
)
public
class
DeptController
{
private
final
DeptService
deptService
;
@ApiOperation
(
"获取机构列表"
)
@PostMapping
(
value
=
"/getDeptList"
)
public
ResultVo
<
PageVo
<
OrgDept
>>
getDeptList
(
@RequestBody
OrgDeptFindVo
vo
)
{
vo
.
setState
(
1
);
return
ResultVo
.
success
(
deptService
.
getDeptList
(
vo
));
}
@ApiOperation
(
"获取机构信息"
)
@GetMapping
(
value
=
"/getDeptInfo/{deptId}"
)
public
ResultVo
<
OrgDeptVo
>
getDeptInfo
(
@PathVariable
String
deptId
)
{
AssertUtils
.
notNull
(
deptId
,
"缺少机构ID"
);
return
ResultVo
.
success
(
deptService
.
getDeptInfo
(
deptId
));
}
@ApiOperation
(
"根据部门PID查询子机构"
)
@GetMapping
(
value
=
"/getDeptByPid/{parentId}"
)
public
ResultVo
<
List
<
OrgDept
>>
getDeptByPid
(
@PathVariable
String
parentId
)
{
return
ResultVo
.
success
(
deptService
.
getDeptByPid
(
parentId
));
}
@ApiOperation
(
"添加机构"
)
@PostMapping
(
value
=
"/addDept"
)
public
ResultVo
addDept
(
@RequestBody
OrgDept
vo
)
{
AssertUtils
.
hasText
(
vo
.
getDeptName
(),
"缺少机构名称"
);
AssertUtils
.
hasText
(
vo
.
getCreditCode
(),
"缺少部门的统一信用代码"
);
deptService
.
addDept
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"修改机构"
)
@PostMapping
(
value
=
"/modifyDept"
)
public
ResultVo
modifyDept
(
@RequestBody
OrgDept
vo
)
{
AssertUtils
.
hasText
(
vo
.
getId
(),
"ID不能为空"
);
deptService
.
modifyDept
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"获取机构树"
)
@GetMapping
(
value
=
"/getDeptTree"
)
public
ResultVo
getDeptTree
()
{
return
ResultVo
.
success
(
deptService
.
getDeptTree
());
}
@ApiOperation
(
"机构注册"
)
@PostMapping
(
value
=
"/share/registerDept"
)
public
ResultVo
registerDept
(
@RequestBody
IdVo
vo
)
{
AssertUtils
.
notEmpty
(
vo
.
getIds
(),
"至少选择一项"
);
deptService
.
registerDept
(
vo
.
getIds
());
return
ResultVo
.
success
();
}
}
package
com
.
zq
.
resource
.
controller
;
import
com.zq.common.annotation.AnonymousAccess
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.vo.IdVo
;
import
com.zq.common.vo.PageVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.resource.entity.OrgDept
;
import
com.zq.resource.service.DeptService
;
import
com.zq.resource.vo.OrgDeptFindVo
;
import
com.zq.resource.vo.OrgDeptVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @author wilmiam
* @since 2021/8/19 14:33
*/
@Api
(
tags
=
"机构部门相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/resource/dept"
)
public
class
DeptController
{
private
final
DeptService
deptService
;
@ApiOperation
(
"获取机构列表"
)
@PostMapping
(
value
=
"/getDeptList"
)
public
ResultVo
<
PageVo
<
OrgDept
>>
getDeptList
(
@RequestBody
OrgDeptFindVo
vo
)
{
vo
.
setState
(
1
);
return
ResultVo
.
success
(
deptService
.
getDeptList
(
vo
));
}
@ApiOperation
(
"获取机构信息"
)
@GetMapping
(
value
=
"/getDeptInfo/{deptId}"
)
public
ResultVo
<
OrgDeptVo
>
getDeptInfo
(
@PathVariable
String
deptId
)
{
AssertUtils
.
notNull
(
deptId
,
"缺少机构ID"
);
return
ResultVo
.
success
(
deptService
.
getDeptInfo
(
deptId
));
}
@ApiOperation
(
"根据部门PID查询子机构"
)
@GetMapping
(
value
=
"/getDeptByPid/{parentId}"
)
public
ResultVo
<
List
<
OrgDept
>>
getDeptByPid
(
@PathVariable
String
parentId
)
{
return
ResultVo
.
success
(
deptService
.
getDeptByPid
(
parentId
));
}
@ApiOperation
(
"添加机构"
)
@PostMapping
(
value
=
"/addDept"
)
public
ResultVo
addDept
(
@RequestBody
OrgDept
vo
)
{
AssertUtils
.
hasText
(
vo
.
getDeptName
(),
"缺少机构名称"
);
AssertUtils
.
hasText
(
vo
.
getCreditCode
(),
"缺少部门的统一信用代码"
);
deptService
.
addDept
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"修改机构"
)
@PostMapping
(
value
=
"/modifyDept"
)
public
ResultVo
modifyDept
(
@RequestBody
OrgDept
vo
)
{
AssertUtils
.
hasText
(
vo
.
getId
(),
"ID不能为空"
);
deptService
.
modifyDept
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"获取机构树"
)
@GetMapping
(
value
=
"/getDeptTree"
)
public
ResultVo
getDeptTree
()
{
return
ResultVo
.
success
(
deptService
.
getDeptTree
());
}
@ApiOperation
(
"机构注册"
)
@PostMapping
(
value
=
"/share/registerDept"
)
@AnonymousAccess
public
ResultVo
registerDept
(
@RequestBody
IdVo
vo
)
{
AssertUtils
.
notEmpty
(
vo
.
getIds
(),
"至少选择一项"
);
deptService
.
registerDept
(
vo
.
getIds
());
return
ResultVo
.
success
();
}
}
sys-server/src/main/java/com/zq/system/modules/system/service/VerifyService.java
View file @
18a10678
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
zq
.
system
.
modules
.
system
.
service
;
import
com.zq.system.modules.tools.domain.vo.EmailVo
;
/**
* @author Zheng Jie
* @date 2018-12-26
*/
public
interface
VerifyService
{
/**
* 发送验证码
*
* @param email /
* @param key /
* @return /
*/
EmailVo
sendEmail
(
String
email
,
String
key
);
/**
* 验证
*
* @param code /
* @param key /
*/
void
validated
(
String
key
,
String
code
);
}
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
zq
.
system
.
modules
.
system
.
service
;
import
com.zq.system.modules.tools.domain.vo.EmailVo
;
/**
* @author Zheng Jie
* @date 2018-12-26
*/
public
interface
VerifyService
{
/**
* 发送验证码
*
* @param email /
* @param key /
* @return /
*/
EmailVo
sendEmail
(
String
email
,
String
key
);
/**
* 验证
*
* @param code /
* @param key /
*/
void
validated
(
String
key
,
String
code
);
}
sys-server/src/main/java/com/zq/system/modules/system/service/impl/UserServiceImpl.java
View file @
18a10678
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
zq
.
system
.
modules
.
system
.
service
.
impl
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zq.common.config.redis.RedisUtils
;
import
com.zq.common.config.security.ApiTokenUtils
;
import
com.zq.common.constant.SystemName
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.StringUtils
;
import
com.zq.common.utils.UploadUtils
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.system.config.CacheKeys
;
import
com.zq.system.config.FileProperties
;
import
com.zq.system.exception.EntityExistException
;
import
com.zq.system.exception.EntityNotFoundException
;
import
com.zq.system.modules.system.dao.PfuserDao
;
import
com.zq.system.modules.system.domain.Job
;
import
com.zq.system.modules.system.domain.Role
;
import
com.zq.system.modules.system.domain.User
;
import
com.zq.system.modules.system.domain.vo.LoginVo
;
import
com.zq.system.modules.system.entity.Pfuser
;
import
com.zq.system.modules.system.repository.DeptRepository
;
import
com.zq.system.modules.system.repository.JobRepository
;
import
com.zq.system.modules.system.repository.RoleRepository
;
import
com.zq.system.modules.system.repository.UserRepository
;
import
com.zq.system.modules.system.service.OnlineUserService
;
import
com.zq.system.modules.system.service.UserCacheClean
;
import
com.zq.system.modules.system.service.UserService
;
import
com.zq.system.modules.system.service.dto.JobSmallDto
;
import
com.zq.system.modules.system.service.dto.RoleSmallDto
;
import
com.zq.system.modules.system.service.dto.UserDto
;
import
com.zq.system.modules.system.service.dto.UserQueryCriteria
;
import
com.zq.system.modules.system.service.mapstruct.UserMapper
;
import
com.zq.system.utils.*
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.constraints.NotBlank
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author Zheng Jie
* @date 2018-11-23
*/
@Slf4j
@Service
@RequiredArgsConstructor
@CacheConfig
(
cacheNames
=
"user"
)
public
class
UserServiceImpl
implements
UserService
{
private
final
UserRepository
userRepository
;
private
final
UserMapper
userMapper
;
private
final
FileProperties
properties
;
private
final
RedisUtils
redisUtils
;
private
final
UserCacheClean
userCacheClean
;
private
final
OnlineUserService
onlineUserService
;
private
final
PfuserDao
pfuserDao
;
private
final
PasswordEncoder
passwordEncoder
;
private
final
DeptRepository
deptRepository
;
private
final
RoleRepository
roleRepository
;
private
final
JobRepository
jobRepository
;
@Override
public
Object
queryAll
(
UserQueryCriteria
criteria
,
Pageable
pageable
)
{
Page
<
User
>
page
=
userRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
);
return
PageUtil
.
toPage
(
page
.
map
(
userMapper:
:
toDto
));
}
@Override
public
List
<
UserDto
>
queryAll
(
UserQueryCriteria
criteria
)
{
List
<
User
>
users
=
userRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
));
return
userMapper
.
toDto
(
users
);
}
@Override
@Cacheable
(
key
=
"'id:' + #p0"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
UserDto
findById
(
long
id
)
{
User
user
=
userRepository
.
findById
(
id
).
orElseGet
(
User:
:
new
);
ValidationUtil
.
isNull
(
user
.
getId
(),
"User"
,
"id"
,
id
);
return
userMapper
.
toDto
(
user
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
create
(
User
resources
)
{
if
(
userRepository
.
findByUsername
(
resources
.
getUsername
())
!=
null
)
{
throw
new
EntityExistException
(
User
.
class
,
"username"
,
resources
.
getUsername
());
}
if
(
StringUtils
.
isNotBlank
(
resources
.
getEmail
())
&&
userRepository
.
findByEmail
(
resources
.
getEmail
())
!=
null
)
{
throw
new
EntityExistException
(
User
.
class
,
"email"
,
resources
.
getEmail
());
}
if
(
userRepository
.
findByPhone
(
resources
.
getPhone
())
!=
null
)
{
throw
new
EntityExistException
(
User
.
class
,
"phone"
,
resources
.
getPhone
());
}
userRepository
.
save
(
resources
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
User
resources
)
throws
Exception
{
User
user
=
userRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
User:
:
new
);
ValidationUtil
.
isNull
(
user
.
getId
(),
"User"
,
"id"
,
resources
.
getId
());
User
user1
=
userRepository
.
findByUsername
(
resources
.
getUsername
());
User
user2
=
userRepository
.
findByEmail
(
resources
.
getEmail
());
User
user3
=
userRepository
.
findByPhone
(
resources
.
getPhone
());
if
(
user1
!=
null
&&
!
user
.
getId
().
equals
(
user1
.
getId
()))
{
throw
new
EntityExistException
(
User
.
class
,
"username"
,
resources
.
getUsername
());
}
if
(
user2
!=
null
&&
!
user
.
getId
().
equals
(
user2
.
getId
()))
{
throw
new
EntityExistException
(
User
.
class
,
"email"
,
resources
.
getEmail
());
}
if
(
user3
!=
null
&&
!
user
.
getId
().
equals
(
user3
.
getId
()))
{
throw
new
EntityExistException
(
User
.
class
,
"phone"
,
resources
.
getPhone
());
}
// 如果用户的角色改变
if
(!
resources
.
getRoles
().
equals
(
user
.
getRoles
()))
{
redisUtils
.
del
(
CacheKey
.
DATA_USER
+
resources
.
getId
());
redisUtils
.
del
(
CacheKey
.
MENU_USER
+
resources
.
getId
());
redisUtils
.
del
(
CacheKey
.
ROLE_AUTH
+
resources
.
getId
());
}
// 如果用户被禁用,则清除用户登录信息
if
(!
resources
.
getEnabled
())
{
onlineUserService
.
kickOutForUsername
(
resources
.
getUsername
());
}
user
.
setUsername
(
resources
.
getUsername
());
user
.
setEmail
(
resources
.
getEmail
());
user
.
setEnabled
(
resources
.
getEnabled
());
user
.
setRoles
(
resources
.
getRoles
());
user
.
setDept
(
resources
.
getDept
());
user
.
setJobs
(
resources
.
getJobs
());
user
.
setPhone
(
resources
.
getPhone
());
user
.
setNickName
(
resources
.
getNickName
());
user
.
setGender
(
resources
.
getGender
());
userRepository
.
save
(
user
);
// 清除缓存
delCaches
(
user
.
getId
(),
user
.
getUsername
());
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateCenter
(
User
resources
)
{
User
user
=
userRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
User:
:
new
);
User
user1
=
userRepository
.
findByPhone
(
resources
.
getPhone
());
if
(
user1
!=
null
&&
!
user
.
getId
().
equals
(
user1
.
getId
()))
{
throw
new
EntityExistException
(
User
.
class
,
"phone"
,
resources
.
getPhone
());
}
user
.
setNickName
(
resources
.
getNickName
());
user
.
setPhone
(
resources
.
getPhone
());
user
.
setGender
(
resources
.
getGender
());
userRepository
.
save
(
user
);
// 清理缓存
delCaches
(
user
.
getId
(),
user
.
getUsername
());
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Set
<
Long
>
ids
)
{
for
(
Long
id
:
ids
)
{
// 清理缓存
UserDto
user
=
findById
(
id
);
delCaches
(
user
.
getId
(),
user
.
getUsername
());
}
userRepository
.
deleteAllByIdIn
(
ids
);
}
@Override
public
UserDto
findByName
(
String
userName
)
{
User
user
=
userRepository
.
findByUsername
(
userName
);
if
(
user
==
null
)
{
throw
new
EntityNotFoundException
(
User
.
class
,
"name"
,
userName
);
}
else
{
return
userMapper
.
toDto
(
user
);
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updatePass
(
String
username
,
String
pass
)
{
userRepository
.
updatePass
(
username
,
pass
,
new
Date
());
flushCache
(
username
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Map
<
String
,
String
>
updateAvatar
(
MultipartFile
multipartFile
)
{
User
user
=
userRepository
.
findByUsername
(
SecurityUtils
.
getCurrentUsername
());
String
oldPath
=
user
.
getAvatarPath
();
String
imaUrl
=
UploadUtils
.
saveImg
(
multipartFile
,
SystemName
.
SYS
);
user
.
setAvatarPath
(
imaUrl
);
user
.
setAvatarName
(
imaUrl
);
userRepository
.
save
(
user
);
if
(
StringUtils
.
isNotBlank
(
oldPath
))
{
FileUtil
.
del
(
oldPath
);
}
@NotBlank
String
username
=
user
.
getUsername
();
flushCache
(
username
);
return
new
HashMap
<
String
,
String
>(
1
)
{{
put
(
"avatar"
,
imaUrl
);
}};
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateEmail
(
String
username
,
String
email
)
{
userRepository
.
updateEmail
(
username
,
email
);
flushCache
(
username
);
}
@Override
public
void
download
(
List
<
UserDto
>
queryAll
,
HttpServletResponse
response
)
throws
IOException
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
for
(
UserDto
userDTO
:
queryAll
)
{
List
<
String
>
roles
=
userDTO
.
getRoles
().
stream
().
map
(
RoleSmallDto:
:
getName
).
collect
(
Collectors
.
toList
());
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"用户名"
,
userDTO
.
getUsername
());
map
.
put
(
"角色"
,
roles
);
map
.
put
(
"部门"
,
userDTO
.
getDept
().
getName
());
map
.
put
(
"岗位"
,
userDTO
.
getJobs
().
stream
().
map
(
JobSmallDto:
:
getName
).
collect
(
Collectors
.
toList
()));
map
.
put
(
"邮箱"
,
userDTO
.
getEmail
());
map
.
put
(
"状态"
,
userDTO
.
getEnabled
()
?
"启用"
:
"禁用"
);
map
.
put
(
"手机号码"
,
userDTO
.
getPhone
());
map
.
put
(
"修改密码的时间"
,
userDTO
.
getPwdResetTime
());
map
.
put
(
"创建日期"
,
userDTO
.
getCreateTime
());
list
.
add
(
map
);
}
FileUtil
.
downloadExcel
(
list
,
response
);
}
/**
* 清理缓存
*
* @param id /
*/
public
void
delCaches
(
Long
id
,
String
username
)
{
redisUtils
.
del
(
CacheKey
.
USER_ID
+
id
);
flushCache
(
username
);
}
/**
* 清理 登陆时 用户缓存信息
*
* @param username /
*/
private
void
flushCache
(
String
username
)
{
userCacheClean
.
cleanUserCache
(
username
);
}
@Override
public
void
sendCode
(
String
phone
)
{
User
user
=
userRepository
.
findByUsername
(
phone
);
if
(
user
==
null
)
{
Pfuser
pfuser
=
pfuserDao
.
selectOne
(
Wrappers
.
lambdaQuery
(
Pfuser
.
builder
().
phone
(
phone
).
build
()));
AssertUtils
.
notNull
(
pfuser
,
"手机号不存在"
);
}
String
code
=
RandomUtil
.
randomNumbers
(
6
);
String
content
=
"您的验证码为:"
+
code
+
"(5分钟内有效)。为了保障信息安全,如非本人操作请忽略本短信。"
;
boolean
sendMsg
=
MobileSmsUtils
.
sendMsg
(
phone
,
content
);
log
.
info
(
">> phone: {}, sendCode: {}, success: {}"
,
phone
,
code
,
sendMsg
);
redisUtils
.
setStr
(
CacheKeys
.
authCodeKey
(
phone
),
code
,
5
);
}
@Override
public
void
resetPassword
(
LoginVo
vo
)
{
verificationCode
(
vo
.
getPhone
(),
vo
.
getVerifyCode
());
User
user
=
userRepository
.
findByUsername
(
vo
.
getPhone
());
if
(
user
==
null
)
{
user
=
addUser
(
vo
.
getPhone
());
}
AssertUtils
.
notNull
(
user
,
"手机号不存在"
);
updatePass
(
user
.
getUsername
(),
passwordEncoder
.
encode
(
vo
.
getPasswd
()));
}
/**
* 保存用户
*
* @param phone
* @return
*/
private
User
addUser
(
String
phone
)
{
Pfuser
pfuser
=
pfuserDao
.
selectOne
(
Wrappers
.
lambdaQuery
(
Pfuser
.
builder
().
phone
(
phone
).
build
()));
if
(
pfuser
==
null
)
{
return
null
;
}
User
user
=
userRepository
.
findByUsername
(
phone
);
if
(
user
==
null
)
{
user
=
new
User
();
List
<
Role
>
roleList
=
roleRepository
.
findAllById
(
Collections
.
singletonList
(
2L
));
user
.
setRoles
(
new
HashSet
<>(
roleList
));
List
<
Job
>
jobList
=
jobRepository
.
findAllById
(
Collections
.
singletonList
(
13L
));
user
.
setJobs
(
new
HashSet
<>(
jobList
));
deptRepository
.
findById
(
8L
).
ifPresent
(
user:
:
setDept
);
user
.
setUsername
(
phone
);
user
.
setNickName
(
pfuser
.
getUsername
());
user
.
setGender
(
pfuser
.
getSex
()
==
null
?
"未知"
:
pfuser
.
getSex
()
==
0
?
"男"
:
"女"
);
user
.
setPhone
(
phone
);
user
.
setEmail
(
pfuser
.
getSourcemail
());
user
.
setPassword
(
passwordEncoder
.
encode
(
"gxmz!23"
));
user
.
setIsAdmin
(
false
);
user
.
setEnabled
(
true
);
user
.
setCreateBy
(
"admin"
);
user
.
setUpdatedBy
(
"admin"
);
user
.
setCreateTime
(
DateUtil
.
date
().
toTimestamp
());
user
.
setUpdateTime
(
DateUtil
.
date
().
toTimestamp
());
create
(
user
);
}
return
user
;
}
/**
* 判断验证码
*
* @param phone
* @param code
*/
public
void
verificationCode
(
String
phone
,
String
code
)
{
String
cacheCode
=
redisUtils
.
getStr
(
CacheKeys
.
authCodeKey
(
phone
));
AssertUtils
.
isTrue
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
cacheCode
)
&&
cacheCode
.
equalsIgnoreCase
(
code
),
"验证码错误"
);
redisUtils
.
deleteStr
(
CacheKeys
.
authCodeKey
(
phone
));
}
@Override
public
void
modifyPasswd
(
LoginVo
vo
)
{
verificationCode
(
vo
.
getPhone
(),
vo
.
getVerifyCode
());
User
user
=
userRepository
.
findByUsername
(
vo
.
getPhone
());
AssertUtils
.
notNull
(
user
,
"手机号不存在"
);
updatePass
(
user
.
getUsername
(),
passwordEncoder
.
encode
(
vo
.
getPasswd
()));
}
@Override
public
ApiTokenVo
phoneLogin
(
LoginVo
vo
)
{
User
user
=
userRepository
.
findByUsername
(
vo
.
getPhone
());
if
(
user
==
null
)
{
user
=
addUser
(
vo
.
getPhone
());
}
AssertUtils
.
notNull
(
user
,
"手机号不存在"
);
verificationCode
(
vo
.
getPhone
(),
vo
.
getVerifyCode
());
AssertUtils
.
isTrue
(
user
.
getEnabled
(),
"账号已禁用"
);
return
getApiToken
(
user
);
}
/**
* 获取ApiToken
*
* @param user
* @return
*/
private
ApiTokenVo
getApiToken
(
User
user
)
{
ApiTokenVo
tokenVo
=
ApiTokenVo
.
builder
()
.
userId
(
user
.
getId
())
.
phone
(
user
.
getPhone
())
.
username
(
user
.
getUsername
())
.
name
(
user
.
getNickName
())
.
nickname
(
user
.
getNickName
())
.
sex
(
user
.
getGender
())
.
avatar
(
user
.
getAvatarPath
())
.
build
();
String
token
=
ApiTokenUtils
.
createToken
(
tokenVo
,
CacheKeys
.
APP_TOKEN_EXPIRE_MINUTES
);
tokenVo
.
setToken
(
token
);
// 重新登录删除前一个token实现单机登录
String
cacheToken
=
redisUtils
.
getStr
(
CacheKeys
.
liveAppTokenKey
(
user
.
getId
().
toString
()));
redisUtils
.
deleteObj
(
CacheKeys
.
appTokenKey
(
cacheToken
));
redisUtils
.
deleteStr
(
CacheKeys
.
liveAppTokenKey
(
user
.
getId
().
toString
()));
// 缓存登录用户
redisUtils
.
setObj
(
CacheKeys
.
appTokenKey
(
token
),
tokenVo
,
CacheKeys
.
APP_TOKEN_EXPIRE_MINUTES
);
// 用户ID作为key保存token, 再次登录可以找出该用户的token
redisUtils
.
setStr
(
CacheKeys
.
liveAppTokenKey
(
user
.
getId
().
toString
()),
token
,
CacheKeys
.
APP_TOKEN_EXPIRE_MINUTES
);
return
tokenVo
;
}
@Override
public
ApiTokenVo
passwdLogin
(
LoginVo
vo
)
{
User
user
=
userRepository
.
findByUsername
(
vo
.
getPhone
());
AssertUtils
.
notNull
(
user
,
"手机号不存在"
);
AssertUtils
.
hasText
(
user
.
getPassword
(),
"未设置密码"
);
AssertUtils
.
isTrue
(
passwordEncoder
.
matches
(
vo
.
getPasswd
(),
user
.
getPassword
()),
"密码错误"
);
AssertUtils
.
isTrue
(
user
.
getEnabled
(),
"账号已禁用"
);
return
getApiToken
(
user
);
}
}
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
zq
.
system
.
modules
.
system
.
service
.
impl
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zq.common.config.redis.RedisUtils
;
import
com.zq.common.config.security.ApiTokenUtils
;
import
com.zq.common.constant.SystemName
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.StringUtils
;
import
com.zq.common.utils.UploadUtils
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.system.config.CacheKeys
;
import
com.zq.system.config.FileProperties
;
import
com.zq.system.exception.EntityExistException
;
import
com.zq.system.exception.EntityNotFoundException
;
import
com.zq.system.modules.system.dao.PfuserDao
;
import
com.zq.system.modules.system.domain.Job
;
import
com.zq.system.modules.system.domain.Role
;
import
com.zq.system.modules.system.domain.User
;
import
com.zq.system.modules.system.domain.vo.LoginVo
;
import
com.zq.system.modules.system.entity.Pfuser
;
import
com.zq.system.modules.system.repository.DeptRepository
;
import
com.zq.system.modules.system.repository.JobRepository
;
import
com.zq.system.modules.system.repository.RoleRepository
;
import
com.zq.system.modules.system.repository.UserRepository
;
import
com.zq.system.modules.system.service.OnlineUserService
;
import
com.zq.system.modules.system.service.UserCacheClean
;
import
com.zq.system.modules.system.service.UserService
;
import
com.zq.system.modules.system.service.dto.JobSmallDto
;
import
com.zq.system.modules.system.service.dto.RoleSmallDto
;
import
com.zq.system.modules.system.service.dto.UserDto
;
import
com.zq.system.modules.system.service.dto.UserQueryCriteria
;
import
com.zq.system.modules.system.service.mapstruct.UserMapper
;
import
com.zq.system.utils.*
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.constraints.NotBlank
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author Zheng Jie
* @date 2018-11-23
*/
@Slf4j
@Service
@RequiredArgsConstructor
@CacheConfig
(
cacheNames
=
"user"
)
public
class
UserServiceImpl
implements
UserService
{
private
final
UserRepository
userRepository
;
private
final
UserMapper
userMapper
;
private
final
FileProperties
properties
;
private
final
RedisUtils
redisUtils
;
private
final
UserCacheClean
userCacheClean
;
private
final
OnlineUserService
onlineUserService
;
private
final
PfuserDao
pfuserDao
;
private
final
PasswordEncoder
passwordEncoder
;
private
final
DeptRepository
deptRepository
;
private
final
RoleRepository
roleRepository
;
private
final
JobRepository
jobRepository
;
@Override
public
Object
queryAll
(
UserQueryCriteria
criteria
,
Pageable
pageable
)
{
Page
<
User
>
page
=
userRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
);
return
PageUtil
.
toPage
(
page
.
map
(
userMapper:
:
toDto
));
}
@Override
public
List
<
UserDto
>
queryAll
(
UserQueryCriteria
criteria
)
{
List
<
User
>
users
=
userRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
));
return
userMapper
.
toDto
(
users
);
}
@Override
@Cacheable
(
key
=
"'id:' + #p0"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
UserDto
findById
(
long
id
)
{
User
user
=
userRepository
.
findById
(
id
).
orElseGet
(
User:
:
new
);
ValidationUtil
.
isNull
(
user
.
getId
(),
"User"
,
"id"
,
id
);
return
userMapper
.
toDto
(
user
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
create
(
User
resources
)
{
if
(
userRepository
.
findByUsername
(
resources
.
getUsername
())
!=
null
)
{
throw
new
EntityExistException
(
User
.
class
,
"username"
,
resources
.
getUsername
());
}
if
(
StringUtils
.
isNotBlank
(
resources
.
getEmail
())
&&
userRepository
.
findByEmail
(
resources
.
getEmail
())
!=
null
)
{
throw
new
EntityExistException
(
User
.
class
,
"email"
,
resources
.
getEmail
());
}
if
(
userRepository
.
findByPhone
(
resources
.
getPhone
())
!=
null
)
{
throw
new
EntityExistException
(
User
.
class
,
"phone"
,
resources
.
getPhone
());
}
userRepository
.
save
(
resources
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
User
resources
)
throws
Exception
{
User
user
=
userRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
User:
:
new
);
ValidationUtil
.
isNull
(
user
.
getId
(),
"User"
,
"id"
,
resources
.
getId
());
User
user1
=
userRepository
.
findByUsername
(
resources
.
getUsername
());
User
user2
=
userRepository
.
findByEmail
(
resources
.
getEmail
());
User
user3
=
userRepository
.
findByPhone
(
resources
.
getPhone
());
if
(
user1
!=
null
&&
!
user
.
getId
().
equals
(
user1
.
getId
()))
{
throw
new
EntityExistException
(
User
.
class
,
"username"
,
resources
.
getUsername
());
}
if
(
user2
!=
null
&&
!
user
.
getId
().
equals
(
user2
.
getId
()))
{
throw
new
EntityExistException
(
User
.
class
,
"email"
,
resources
.
getEmail
());
}
if
(
user3
!=
null
&&
!
user
.
getId
().
equals
(
user3
.
getId
()))
{
throw
new
EntityExistException
(
User
.
class
,
"phone"
,
resources
.
getPhone
());
}
// 如果用户的角色改变
if
(!
resources
.
getRoles
().
equals
(
user
.
getRoles
()))
{
redisUtils
.
del
(
CacheKey
.
DATA_USER
+
resources
.
getId
());
redisUtils
.
del
(
CacheKey
.
MENU_USER
+
resources
.
getId
());
redisUtils
.
del
(
CacheKey
.
ROLE_AUTH
+
resources
.
getId
());
}
// 如果用户被禁用,则清除用户登录信息
if
(!
resources
.
getEnabled
())
{
onlineUserService
.
kickOutForUsername
(
resources
.
getUsername
());
}
user
.
setUsername
(
resources
.
getUsername
());
user
.
setEmail
(
resources
.
getEmail
());
user
.
setEnabled
(
resources
.
getEnabled
());
user
.
setRoles
(
resources
.
getRoles
());
user
.
setDept
(
resources
.
getDept
());
user
.
setJobs
(
resources
.
getJobs
());
user
.
setPhone
(
resources
.
getPhone
());
user
.
setNickName
(
resources
.
getNickName
());
user
.
setGender
(
resources
.
getGender
());
userRepository
.
save
(
user
);
// 清除缓存
delCaches
(
user
.
getId
(),
user
.
getUsername
());
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateCenter
(
User
resources
)
{
User
user
=
userRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
User:
:
new
);
User
user1
=
userRepository
.
findByPhone
(
resources
.
getPhone
());
if
(
user1
!=
null
&&
!
user
.
getId
().
equals
(
user1
.
getId
()))
{
throw
new
EntityExistException
(
User
.
class
,
"phone"
,
resources
.
getPhone
());
}
user
.
setNickName
(
resources
.
getNickName
());
user
.
setPhone
(
resources
.
getPhone
());
user
.
setGender
(
resources
.
getGender
());
userRepository
.
save
(
user
);
// 清理缓存
delCaches
(
user
.
getId
(),
user
.
getUsername
());
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Set
<
Long
>
ids
)
{
for
(
Long
id
:
ids
)
{
// 清理缓存
UserDto
user
=
findById
(
id
);
delCaches
(
user
.
getId
(),
user
.
getUsername
());
}
userRepository
.
deleteAllByIdIn
(
ids
);
}
@Override
public
UserDto
findByName
(
String
userName
)
{
User
user
=
userRepository
.
findByUsername
(
userName
);
if
(
user
==
null
)
{
throw
new
EntityNotFoundException
(
User
.
class
,
"name"
,
userName
);
}
else
{
return
userMapper
.
toDto
(
user
);
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updatePass
(
String
username
,
String
pass
)
{
userRepository
.
updatePass
(
username
,
pass
,
new
Date
());
flushCache
(
username
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Map
<
String
,
String
>
updateAvatar
(
MultipartFile
multipartFile
)
{
User
user
=
userRepository
.
findByUsername
(
SecurityUtils
.
getCurrentUsername
());
String
oldPath
=
user
.
getAvatarPath
();
String
imaUrl
=
UploadUtils
.
saveImg
(
multipartFile
,
SystemName
.
SYS
);
user
.
setAvatarPath
(
imaUrl
);
user
.
setAvatarName
(
imaUrl
);
userRepository
.
save
(
user
);
if
(
StringUtils
.
isNotBlank
(
oldPath
))
{
FileUtil
.
del
(
oldPath
);
}
@NotBlank
String
username
=
user
.
getUsername
();
flushCache
(
username
);
return
new
HashMap
<
String
,
String
>(
1
)
{{
put
(
"avatar"
,
imaUrl
);
}};
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateEmail
(
String
username
,
String
email
)
{
userRepository
.
updateEmail
(
username
,
email
);
flushCache
(
username
);
}
@Override
public
void
download
(
List
<
UserDto
>
queryAll
,
HttpServletResponse
response
)
throws
IOException
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
for
(
UserDto
userDTO
:
queryAll
)
{
List
<
String
>
roles
=
userDTO
.
getRoles
().
stream
().
map
(
RoleSmallDto:
:
getName
).
collect
(
Collectors
.
toList
());
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"用户名"
,
userDTO
.
getUsername
());
map
.
put
(
"角色"
,
roles
);
map
.
put
(
"部门"
,
userDTO
.
getDept
().
getName
());
map
.
put
(
"岗位"
,
userDTO
.
getJobs
().
stream
().
map
(
JobSmallDto:
:
getName
).
collect
(
Collectors
.
toList
()));
map
.
put
(
"邮箱"
,
userDTO
.
getEmail
());
map
.
put
(
"状态"
,
userDTO
.
getEnabled
()
?
"启用"
:
"禁用"
);
map
.
put
(
"手机号码"
,
userDTO
.
getPhone
());
map
.
put
(
"修改密码的时间"
,
userDTO
.
getPwdResetTime
());
map
.
put
(
"创建日期"
,
userDTO
.
getCreateTime
());
list
.
add
(
map
);
}
FileUtil
.
downloadExcel
(
list
,
response
);
}
/**
* 清理缓存
*
* @param id /
*/
public
void
delCaches
(
Long
id
,
String
username
)
{
redisUtils
.
del
(
CacheKey
.
USER_ID
+
id
);
flushCache
(
username
);
}
/**
* 清理 登陆时 用户缓存信息
*
* @param username /
*/
private
void
flushCache
(
String
username
)
{
userCacheClean
.
cleanUserCache
(
username
);
}
@Override
public
void
sendCode
(
String
phone
)
{
User
user
=
userRepository
.
findByUsername
(
phone
);
if
(
user
==
null
)
{
Pfuser
pfuser
=
pfuserDao
.
selectOne
(
Wrappers
.
lambdaQuery
(
Pfuser
.
builder
().
phone
(
phone
).
build
()));
AssertUtils
.
notNull
(
pfuser
,
"手机号不存在"
);
}
String
code
=
RandomUtil
.
randomNumbers
(
6
);
String
content
=
"您的验证码为:"
+
code
+
"(5分钟内有效)。为了保障信息安全,如非本人操作请忽略本短信。"
;
boolean
sendMsg
=
MobileSmsUtils
.
sendMsg
(
phone
,
content
);
log
.
info
(
">> phone: {}, sendCode: {}, success: {}"
,
phone
,
code
,
sendMsg
);
redisUtils
.
setStr
(
CacheKeys
.
authCodeKey
(
phone
),
code
,
5
);
}
@Override
public
void
resetPassword
(
LoginVo
vo
)
{
verificationCode
(
vo
.
getPhone
(),
vo
.
getVerifyCode
());
User
user
=
userRepository
.
findByUsername
(
vo
.
getPhone
());
if
(
user
==
null
)
{
user
=
addUser
(
vo
.
getPhone
());
}
AssertUtils
.
notNull
(
user
,
"手机号不存在"
);
updatePass
(
user
.
getUsername
(),
passwordEncoder
.
encode
(
vo
.
getPasswd
()));
}
/**
* 保存用户
*
* @param phone
* @return
*/
private
User
addUser
(
String
phone
)
{
Pfuser
pfuser
=
pfuserDao
.
selectOne
(
Wrappers
.
lambdaQuery
(
Pfuser
.
builder
().
phone
(
phone
).
build
()));
if
(
pfuser
==
null
)
{
return
null
;
}
User
user
=
userRepository
.
findByUsername
(
phone
);
if
(
user
==
null
)
{
user
=
new
User
();
List
<
Role
>
roleList
=
roleRepository
.
findAllById
(
Collections
.
singletonList
(
2L
));
user
.
setRoles
(
new
HashSet
<>(
roleList
));
List
<
Job
>
jobList
=
jobRepository
.
findAllById
(
Collections
.
singletonList
(
13L
));
user
.
setJobs
(
new
HashSet
<>(
jobList
));
deptRepository
.
findById
(
8L
).
ifPresent
(
user:
:
setDept
);
user
.
setUsername
(
phone
);
user
.
setNickName
(
pfuser
.
getUsername
());
user
.
setGender
(
pfuser
.
getSex
()
==
null
?
"未知"
:
pfuser
.
getSex
()
==
0
?
"男"
:
"女"
);
user
.
setPhone
(
phone
);
user
.
setEmail
(
pfuser
.
getSourcemail
());
user
.
setPassword
(
passwordEncoder
.
encode
(
"gxmz!23"
));
user
.
setIsAdmin
(
false
);
user
.
setEnabled
(
true
);
user
.
setCreateBy
(
"admin"
);
user
.
setUpdatedBy
(
"admin"
);
user
.
setCreateTime
(
DateUtil
.
date
().
toTimestamp
());
user
.
setUpdateTime
(
DateUtil
.
date
().
toTimestamp
());
create
(
user
);
}
return
user
;
}
/**
* 判断验证码
*
* @param phone
* @param code
*/
public
void
verificationCode
(
String
phone
,
String
code
)
{
String
cacheCode
=
redisUtils
.
getStr
(
CacheKeys
.
authCodeKey
(
phone
));
AssertUtils
.
isTrue
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
cacheCode
)
&&
cacheCode
.
equalsIgnoreCase
(
code
),
"验证码错误"
);
redisUtils
.
deleteStr
(
CacheKeys
.
authCodeKey
(
phone
));
}
@Override
public
void
modifyPasswd
(
LoginVo
vo
)
{
verificationCode
(
vo
.
getPhone
(),
vo
.
getVerifyCode
());
User
user
=
userRepository
.
findByUsername
(
vo
.
getPhone
());
AssertUtils
.
notNull
(
user
,
"手机号不存在"
);
updatePass
(
user
.
getUsername
(),
passwordEncoder
.
encode
(
vo
.
getPasswd
()));
}
@Override
public
ApiTokenVo
phoneLogin
(
LoginVo
vo
)
{
User
user
=
userRepository
.
findByUsername
(
vo
.
getPhone
());
if
(
user
==
null
)
{
user
=
addUser
(
vo
.
getPhone
());
}
AssertUtils
.
notNull
(
user
,
"手机号不存在"
);
verificationCode
(
vo
.
getPhone
(),
vo
.
getVerifyCode
());
AssertUtils
.
isTrue
(
user
.
getEnabled
(),
"账号已禁用"
);
return
getApiToken
(
user
);
}
/**
* 获取ApiToken
*
* @param user
* @return
*/
private
ApiTokenVo
getApiToken
(
User
user
)
{
ApiTokenVo
tokenVo
=
ApiTokenVo
.
builder
()
.
userId
(
user
.
getId
())
.
phone
(
user
.
getPhone
())
.
username
(
user
.
getUsername
())
.
name
(
user
.
getNickName
())
.
nickname
(
user
.
getNickName
())
.
sex
(
user
.
getGender
())
.
avatar
(
user
.
getAvatarPath
())
.
build
();
String
token
=
ApiTokenUtils
.
createToken
(
tokenVo
,
CacheKeys
.
APP_TOKEN_EXPIRE_MINUTES
);
tokenVo
.
setToken
(
token
);
// 重新登录删除前一个token实现单机登录
String
cacheToken
=
redisUtils
.
getStr
(
CacheKeys
.
liveAppTokenKey
(
user
.
getId
().
toString
()));
redisUtils
.
deleteObj
(
CacheKeys
.
appTokenKey
(
cacheToken
));
redisUtils
.
deleteStr
(
CacheKeys
.
liveAppTokenKey
(
user
.
getId
().
toString
()));
// 缓存登录用户
redisUtils
.
setObj
(
CacheKeys
.
appTokenKey
(
token
),
tokenVo
,
CacheKeys
.
APP_TOKEN_EXPIRE_MINUTES
);
// 用户ID作为key保存token, 再次登录可以找出该用户的token
redisUtils
.
setStr
(
CacheKeys
.
liveAppTokenKey
(
user
.
getId
().
toString
()),
token
,
CacheKeys
.
APP_TOKEN_EXPIRE_MINUTES
);
return
tokenVo
;
}
@Override
public
ApiTokenVo
passwdLogin
(
LoginVo
vo
)
{
User
user
=
userRepository
.
findByUsername
(
vo
.
getPhone
());
AssertUtils
.
notNull
(
user
,
"手机号不存在"
);
AssertUtils
.
hasText
(
user
.
getPassword
(),
"未设置密码"
);
AssertUtils
.
isTrue
(
passwordEncoder
.
matches
(
vo
.
getPasswd
(),
user
.
getPassword
()),
"密码错误"
);
AssertUtils
.
isTrue
(
user
.
getEnabled
(),
"账号已禁用"
);
return
getApiToken
(
user
);
}
}
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