Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
car-reptiles
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
梁辉
car-reptiles
Commits
a88e5d5f
Commit
a88e5d5f
authored
Dec 04, 2020
by
梁辉
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化了签章功能,给自行选择签章,检测报告详情会删除旧的下载完成的检测报告
parent
96ee6467
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
520 additions
and
32 deletions
+520
-32
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/IdListVo.java
+13
-0
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/report/CarSignatureReqVo.java
+9
-5
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/signature/SignReportVo.java
+20
-0
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/signature/SignatureAddVo.java
+24
-0
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/signature/SignaturePageReqVo.java
+35
-0
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/signature/SignatureVo.java
+19
-8
car-reptiles-system/src/main/java/me/zhengjie/modules/system/repository/SignatureMapper.java
+12
-0
car-reptiles-system/src/main/java/me/zhengjie/modules/system/rest/ReportController.java
+17
-4
car-reptiles-system/src/main/java/me/zhengjie/modules/system/rest/SignatureController.java
+85
-0
car-reptiles-system/src/main/java/me/zhengjie/modules/system/service/ReportService.java
+34
-13
car-reptiles-system/src/main/java/me/zhengjie/modules/system/service/SignatureService.java
+250
-0
car-reptiles-system/src/main/resources/config/application.yml
+1
-1
sql/eladmin.sql
+1
-1
No files found.
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/IdListVo.java
0 → 100644
View file @
a88e5d5f
package
me
.
zhengjie
.
modules
.
system
.
domain
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
IdListVo
{
@ApiModelProperty
(
"id集合"
)
private
List
<
Integer
>
ids
;
}
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/report/CarSignatureReqVo.java
View file @
a88e5d5f
...
...
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
me.zhengjie.modules.system.domain.vo.DeptVo
;
import
me.zhengjie.modules.system.domain.vo.SysUserVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignatureVo
;
/**
* 车检报告签章接口请求vo
...
...
@@ -12,12 +13,15 @@ import me.zhengjie.modules.system.domain.vo.SysUserVo;
@Data
public
class
CarSignatureReqVo
{
@ApiModelProperty
(
"签章部门vo"
)
private
DeptVo
deptVo
;
@ApiModelProperty
(
"检测报告vo"
)
private
ReportPdfVo
reportPdfVo
;
@ApiModelProperty
(
"签章用户vo"
)
private
SysUserVo
sysUserVo
;
@ApiModelProperty
(
"授权人签章"
)
private
SignatureVo
signature1
;
@ApiModelProperty
(
"批准人签章"
)
private
SignatureVo
signature2
;
@ApiModelProperty
(
"公章签章"
)
private
SignatureVo
signature3
;
}
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/signature/SignReportVo.java
0 → 100644
View file @
a88e5d5f
package
me
.
zhengjie
.
modules
.
system
.
domain
.
vo
.
signature
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
public
class
SignReportVo
{
@ApiModelProperty
(
"检测报告id"
)
private
Integer
reportPdfId
;
@ApiModelProperty
(
"授权人签名"
)
private
String
snName1
;
@ApiModelProperty
(
"批准人签名"
)
private
String
snName2
;
@ApiModelProperty
(
"公章名称"
)
private
String
snName3
;
}
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/signature/SignatureAddVo.java
0 → 100644
View file @
a88e5d5f
package
me
.
zhengjie
.
modules
.
system
.
domain
.
vo
.
signature
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
public
class
SignatureAddVo
{
@ApiModelProperty
(
"秘钥盘序号"
)
private
String
snKey
;
@ApiModelProperty
(
"签章密码"
)
private
String
snPassword
;
@ApiModelProperty
(
"章名称"
)
private
String
snName
;
@ApiModelProperty
(
"部门id"
)
private
Integer
deptId
;
@ApiModelProperty
(
"是否启用 0不启用 1启用"
)
private
Integer
state
;
}
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/signature/SignaturePageReqVo.java
0 → 100644
View file @
a88e5d5f
package
me
.
zhengjie
.
modules
.
system
.
domain
.
vo
.
signature
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
SignaturePageReqVo
{
@ApiModelProperty
(
"页码"
)
private
Integer
page
;
@ApiModelProperty
(
"每页显示条数 默认8条"
)
private
Integer
size
=
8
;
@ApiModelProperty
(
"秘钥盘序号"
)
private
String
snKey
;
@ApiModelProperty
(
"章名称"
)
private
String
snName
;
@ApiModelProperty
(
"部门id"
)
private
Integer
deptId
;
@ApiModelProperty
(
"是否启用 0不启用 1启用"
)
private
Integer
state
;
@ApiModelProperty
(
"创建起始时间"
)
private
Date
startTime
;
@ApiModelProperty
(
"创建截止时间"
)
private
Date
endTime
;
}
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/
Signature
.java
→
car-reptiles-system/src/main/java/me/zhengjie/modules/system/domain/vo/
signature/SignatureVo
.java
View file @
a88e5d5f
package
me
.
zhengjie
.
modules
.
system
.
domain
.
vo
;
package
me
.
zhengjie
.
modules
.
system
.
domain
.
vo
.
signature
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModel
;
...
...
@@ -16,24 +17,34 @@ import java.util.Date;
@ApiModel
(
"签名Vo"
)
@TableName
(
"t_signature"
)
@Data
public
class
Signature
{
public
class
Signature
Vo
{
@ApiModelProperty
(
"自增ID"
)
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
id
;
@ApiModelProperty
(
"
签名名称
"
)
private
String
name
;
@ApiModelProperty
(
"
秘钥盘序号
"
)
private
String
snKey
;
@ApiModelProperty
(
"签
名文件存放根路径
"
)
private
String
path
;
@ApiModelProperty
(
"签
章密码
"
)
private
String
snPassword
;
@ApiModelProperty
(
"用户ID"
)
private
Integer
userId
;
@ApiModelProperty
(
"章名称"
)
private
String
snName
;
@ApiModelProperty
(
"部门id"
)
private
Long
deptId
;
@ApiModelProperty
(
"是否启用 0不启用 1启用"
)
private
Integer
state
;
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
@TableField
(
exist
=
false
)
@ApiModelProperty
(
"所属部门名称"
)
private
String
deptName
;
}
car-reptiles-system/src/main/java/me/zhengjie/modules/system/repository/SignatureMapper.java
0 → 100644
View file @
a88e5d5f
package
me
.
zhengjie
.
modules
.
system
.
repository
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
me.zhengjie.modules.system.domain.vo.signature.SignatureVo
;
import
org.springframework.stereotype.Repository
;
/**
* t_signature mapper
*/
@Repository
public
interface
SignatureMapper
extends
BaseMapper
<
SignatureVo
>
{
}
car-reptiles-system/src/main/java/me/zhengjie/modules/system/rest/ReportController.java
View file @
a88e5d5f
...
...
@@ -6,6 +6,8 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiOperation
;
import
me.zhengjie.base.ResultVo
;
import
me.zhengjie.modules.system.domain.vo.report.*
;
import
me.zhengjie.modules.system.domain.vo.signature.SignReportVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignatureVo
;
import
me.zhengjie.modules.system.service.ReportService
;
import
me.zhengjie.utils.AssertUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -32,6 +35,13 @@ public class ReportController {
this
.
reportService
=
reportService
;
}
@ApiOperation
(
"获取当前用户部门下所有启用的签章"
)
@GetMapping
(
"/signatureList"
)
public
ResultVo
<
List
<
SignatureVo
>>
signatureList
(){
return
ResultVo
.
success
(
reportService
.
findCurrentDeptSignature
());
}
@ApiOperation
(
"上传报告"
)
@PostMapping
(
"/upload"
)
public
ResultVo
uploadReport
(
ReportUploadReqVo
reqVo
,
@RequestParam
(
name
=
"files"
)
MultipartFile
[]
files
){
...
...
@@ -42,10 +52,13 @@ public class ReportController {
}
@ApiOperation
(
"签章检测报告"
)
@GetMapping
(
"/signature/{reportPdfId}"
)
public
ResultVo
<
ReportPdfVo
>
signature
(
@PathVariable
Integer
reportPdfId
){
AssertUtil
.
isTrue
(
reportPdfId
!=
null
&&
reportPdfId
>
0
,
"缺少参数检测报告详情Id"
);
return
ResultVo
.
success
(
reportService
.
signature
(
reportPdfId
));
@PostMapping
(
"/signature"
)
public
ResultVo
<
ReportPdfVo
>
signature
(
@RequestBody
SignReportVo
signReportVo
){
AssertUtil
.
isTrue
(
signReportVo
.
getReportPdfId
()!=
null
&&
signReportVo
.
getReportPdfId
()
>
0
,
"缺少参数检测报告详情Id"
);
AssertUtil
.
isNotBlank
(
signReportVo
.
getSnName1
(),
"请选择授权人签名"
);
AssertUtil
.
isNotBlank
(
signReportVo
.
getSnName2
(),
"请选择批准人签名"
);
AssertUtil
.
isNotBlank
(
signReportVo
.
getSnName3
(),
"请选择公章"
);
return
ResultVo
.
success
(
reportService
.
signature
(
signReportVo
));
}
@PostMapping
(
"/details"
)
...
...
car-reptiles-system/src/main/java/me/zhengjie/modules/system/rest/SignatureController.java
0 → 100644
View file @
a88e5d5f
package
me
.
zhengjie
.
modules
.
system
.
rest
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
me.zhengjie.base.ResultVo
;
import
me.zhengjie.modules.system.domain.vo.DeptVo
;
import
me.zhengjie.modules.system.domain.vo.IdListVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignatureAddVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignaturePageReqVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignatureVo
;
import
me.zhengjie.modules.system.service.SignatureService
;
import
me.zhengjie.utils.AssertUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Arrays
;
import
java.util.List
;
@RestController
@RequestMapping
(
"/signature"
)
@Api
(
value
=
"SignatureController"
,
tags
=
"签章管理相关Api"
)
public
class
SignatureController
{
private
final
SignatureService
signatureService
;
@Autowired
public
SignatureController
(
SignatureService
signatureService
)
{
this
.
signatureService
=
signatureService
;
}
@ApiOperation
(
"查询全部部门"
)
@GetMapping
(
"/deptAll"
)
public
ResultVo
<
List
<
DeptVo
>>
deptList
(){
return
ResultVo
.
success
(
signatureService
.
deptAllList
());
}
@ApiOperation
(
"根据id批量删除签章"
)
@PostMapping
(
"/deleteByIdList"
)
public
ResultVo
deleteByIdList
(
@RequestBody
IdListVo
idListVo
)
{
AssertUtil
.
isTrue
(
idListVo
.
getIds
().
size
()>
0
,
"请选择至少一条记录"
);
signatureService
.
deleteByIds
(
idListVo
.
getIds
());
return
ResultVo
.
success
();
}
@ApiOperation
(
"根据id删除单个签章"
)
@GetMapping
(
"/delete/{id}"
)
public
ResultVo
deleteById
(
@PathVariable
Integer
id
){
AssertUtil
.
isNotNull
(
id
,
"缺少参数id"
);
signatureService
.
deleteByIds
(
Arrays
.
asList
(
id
));
return
ResultVo
.
success
();
}
@PostMapping
(
"/edit"
)
@ApiOperation
(
"修改签章"
)
public
ResultVo
edit
(
@RequestBody
SignatureVo
signatureVo
){
AssertUtil
.
isNotNull
(
signatureVo
.
getId
(),
"缺少参数id"
);
AssertUtil
.
isNotBlank
(
signatureVo
.
getSnKey
(),
"请输入秘钥盘序号"
);
AssertUtil
.
isNotBlank
(
signatureVo
.
getSnName
(),
"请输入章名称"
);
AssertUtil
.
isNotBlank
(
signatureVo
.
getSnPassword
(),
"请输入签章密码"
);
AssertUtil
.
isNotNull
(
signatureVo
.
getDeptId
(),
"请选择所属部门"
);
AssertUtil
.
isNotNull
(
signatureVo
.
getState
(),
"缺少参数state"
);
signatureService
.
update
(
signatureVo
);
return
ResultVo
.
success
();
}
@PostMapping
(
"/add"
)
@ApiOperation
(
"添加签章"
)
public
ResultVo
add
(
@RequestBody
SignatureAddVo
addVo
){
AssertUtil
.
isNotBlank
(
addVo
.
getSnKey
(),
"请输入秘钥盘序号"
);
AssertUtil
.
isNotBlank
(
addVo
.
getSnName
(),
"请输入章名称"
);
AssertUtil
.
isNotBlank
(
addVo
.
getSnPassword
(),
"请输入签章密码"
);
AssertUtil
.
isNotNull
(
addVo
.
getState
(),
"缺少参数state"
);
signatureService
.
add
(
addVo
);
return
ResultVo
.
success
();
}
@PostMapping
(
"/page"
)
@ApiOperation
(
"分页查询签章列表"
)
public
ResultVo
<
IPage
<
SignatureVo
>>
pageList
(
@RequestBody
SignaturePageReqVo
pageReqVo
)
{
return
ResultVo
.
success
(
signatureService
.
pageList
(
pageReqVo
));
}
}
car-reptiles-system/src/main/java/me/zhengjie/modules/system/service/ReportService.java
View file @
a88e5d5f
...
...
@@ -3,7 +3,6 @@ package me.zhengjie.modules.system.service;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSON
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
...
@@ -14,12 +13,13 @@ import me.zhengjie.exception.BusinessException;
import
me.zhengjie.modules.system.domain.vo.DeptVo
;
import
me.zhengjie.modules.system.domain.vo.SysUserVo
;
import
me.zhengjie.modules.system.domain.vo.report.*
;
import
me.zhengjie.modules.system.domain.vo.signature.SignReportVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignatureVo
;
import
me.zhengjie.modules.system.repository.DeptMapper
;
import
me.zhengjie.modules.system.repository.ReportPdfMapper
;
import
me.zhengjie.modules.system.repository.UserMapper
;
import
me.zhengjie.modules.system.util.CarReportUtil
;
import
me.zhengjie.utils.AssertUtil
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpEntity
;
...
...
@@ -30,11 +30,9 @@ import org.springframework.security.core.Authentication;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
...
...
@@ -58,16 +56,19 @@ public class ReportService {
private
final
ReportPdfMapper
reportPdfMapper
;
private
final
SignatureService
signatureService
;
private
final
RestTemplate
restTemplate
;
private
static
List
<
TestReportVo
>
reportVoList
;
@Autowired
public
ReportService
(
UserMapper
userMapper
,
DeptMapper
deptMapper
,
CarReportUtil
carReportUtil
,
ReportPdfMapper
reportPdfMapper
,
RestTemplate
restTemplate
)
{
public
ReportService
(
UserMapper
userMapper
,
DeptMapper
deptMapper
,
CarReportUtil
carReportUtil
,
ReportPdfMapper
reportPdfMapper
,
SignatureService
signatureService
,
RestTemplate
restTemplate
)
{
this
.
userMapper
=
userMapper
;
this
.
deptMapper
=
deptMapper
;
this
.
carReportUtil
=
carReportUtil
;
this
.
reportPdfMapper
=
reportPdfMapper
;
this
.
signatureService
=
signatureService
;
this
.
restTemplate
=
restTemplate
;
}
...
...
@@ -85,6 +86,15 @@ public class ReportService {
);
}
/**
* 获取当前用户部门下所有签章
* @return
*/
public
List
<
SignatureVo
>
findCurrentDeptSignature
(){
return
signatureService
.
findCurrentDeptSignature
();
}
/**
* 上传检测报告以及其他文件到公安
...
...
@@ -121,7 +131,7 @@ public class ReportService {
* 报告签章
* @return
*/
public
ReportPdfVo
signature
(
Integer
reportPdfId
){
public
ReportPdfVo
signature
(
SignReportVo
signReportVo
){
Authentication
authentication
=
SecurityContextHolder
.
getContext
().
getAuthentication
();
AssertUtil
.
isNotNull
(
authentication
,
"登录身份已失效请重新登录"
);
UserDetails
userDetails
=
(
UserDetails
)
authentication
.
getPrincipal
();
...
...
@@ -129,18 +139,29 @@ public class ReportService {
String
username
=
userDetails
.
getUsername
();
SysUserVo
sysUserVo
=
userMapper
.
selectOne
(
new
QueryWrapper
<
SysUserVo
>().
lambda
().
eq
(
SysUserVo:
:
getUsername
,
username
));
AssertUtil
.
isNotNull
(
sysUserVo
,
"登录身份已失效请重新登录"
);
DeptVo
deptVo
=
deptMapper
.
selectById
(
sysUserVo
.
getDeptId
());
AssertUtil
.
isNotNull
(
deptVo
,
"当前用户部门信息不存在"
);
DeptVo
topDept
=
signatureService
.
getTopDept
(
deptVo
);
ReportPdfVo
reportPdfVo
=
reportPdfMapper
.
selectById
(
reportPdfId
);
SignatureVo
signatureVo1
=
signatureService
.
getByDeptId
(
topDept
.
getDeptId
(),
signReportVo
.
getSnName1
());
SignatureVo
signatureVo2
=
signatureService
.
getByDeptId
(
topDept
.
getDeptId
(),
signReportVo
.
getSnName2
());
SignatureVo
signatureVo3
=
signatureService
.
getByDeptId
(
topDept
.
getDeptId
(),
signReportVo
.
getSnName3
());
AssertUtil
.
isNotNull
(
signatureVo1
,
"当前部门无'"
+
signReportVo
.
getSnName1
()+
"'的签名"
);
AssertUtil
.
isNotNull
(
signatureVo2
,
"当前部门无'"
+
signReportVo
.
getSnName2
()+
"'的签名"
);
AssertUtil
.
isNotNull
(
signatureVo3
,
"当前部门无'"
+
signReportVo
.
getSnName3
()+
"'的公章"
);
ReportPdfVo
reportPdfVo
=
reportPdfMapper
.
selectById
(
signReportVo
.
getReportPdfId
());
AssertUtil
.
isNotNull
(
reportPdfVo
,
"不存在该报告详情,请刷新页面后重试"
);
DeptVo
deptVo
=
deptMapper
.
selectById
(
sysUserVo
.
getDeptId
());
AssertUtil
.
isNotNull
(
deptVo
,
"当前用户部门信息不存在"
);
//开始签章
CarSignatureReqVo
carSignatureReqVo
=
new
CarSignatureReqVo
();
carSignatureReqVo
.
setReportPdfVo
(
reportPdfVo
);
carSignatureReqVo
.
setSysUserVo
(
sysUserVo
);
carSignatureReqVo
.
setDeptVo
(
deptVo
);
carSignatureReqVo
.
setSignature1
(
signatureVo1
);
carSignatureReqVo
.
setSignature2
(
signatureVo2
);
carSignatureReqVo
.
setSignature3
(
signatureVo3
);
//reportPdfVo = signatureUtil.electronicGM(reportPdfVo, sysUserVo);
HttpEntity
<
CarSignatureReqVo
>
httpEntity
=
new
HttpEntity
<>(
carSignatureReqVo
);
ResponseEntity
<
ResultVo
>
responseEntity
=
this
.
restTemplate
.
exchange
(
...
...
@@ -167,9 +188,9 @@ public class ReportService {
ReportPdfVo
reportPdfVo
=
reportPdfMapper
.
selectOne
(
new
QueryWrapper
<
ReportPdfVo
>()
.
lambda
().
eq
(
ReportPdfVo:
:
getReportNum
,
detailsReqVo
.
getReportNum
()));
//如果已经下载保存过PDF了则
直接返回给前端
//如果已经下载保存过PDF了则
删除旧的pdf
if
(
reportPdfVo
!=
null
&&
StrUtil
.
isNotBlank
(
reportPdfVo
.
getPath
())){
return
reportPdfVo
;
FileUtil
.
del
(
reportPdfVo
.
getPath
())
;
}
//获取当前用户的部门
...
...
car-reptiles-system/src/main/java/me/zhengjie/modules/system/service/SignatureService.java
0 → 100644
View file @
a88e5d5f
package
me
.
zhengjie
.
modules
.
system
.
service
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
me.zhengjie.modules.system.domain.vo.DeptVo
;
import
me.zhengjie.modules.system.domain.vo.SysUserVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignatureAddVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignaturePageReqVo
;
import
me.zhengjie.modules.system.domain.vo.signature.SignatureVo
;
import
me.zhengjie.modules.system.repository.DeptMapper
;
import
me.zhengjie.modules.system.repository.SignatureMapper
;
import
me.zhengjie.modules.system.repository.UserMapper
;
import
me.zhengjie.utils.AssertUtil
;
import
me.zhengjie.utils.SecurityUtils
;
import
me.zhengjie.utils.enums.DataScopeEnum
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Service
public
class
SignatureService
{
private
final
SignatureMapper
signatureMapper
;
private
final
DeptMapper
deptMapper
;
private
final
UserMapper
userMapper
;
@Autowired
public
SignatureService
(
SignatureMapper
signatureMapper
,
DeptMapper
deptMapper
,
UserMapper
userMapper
)
{
this
.
signatureMapper
=
signatureMapper
;
this
.
deptMapper
=
deptMapper
;
this
.
userMapper
=
userMapper
;
}
/**
* 查询全部部门信息
* @return
*/
public
List
<
DeptVo
>
deptAllList
(){
return
deptMapper
.
selectList
(
new
QueryWrapper
<
DeptVo
>().
lambda
().
isNull
(
DeptVo:
:
getPid
));
}
/**
* 根据id批量删除签章
* @param ids
*/
public
void
deleteByIds
(
List
<
Integer
>
ids
)
{
signatureMapper
.
deleteBatchIds
(
ids
);
}
/**
* 更改签章
* @param signatureVo
*/
public
void
update
(
SignatureVo
signatureVo
)
{
String
currentUsername
=
SecurityUtils
.
getCurrentUsername
();
AssertUtil
.
isNotBlank
(
currentUsername
,
"登录身份已失效请重新登录"
);
SysUserVo
sysUserVo
=
userMapper
.
selectOne
(
new
QueryWrapper
<
SysUserVo
>().
lambda
().
eq
(
SysUserVo:
:
getUsername
,
currentUsername
));
AssertUtil
.
isNotNull
(
sysUserVo
,
"登录身份已失效请重新登录"
);
DeptVo
deptVo
=
deptMapper
.
selectById
(
sysUserVo
.
getDeptId
());
DeptVo
topDept
=
getTopDept
(
deptVo
);
AssertUtil
.
isNotNull
(
topDept
,
"没有找到当前用户所属部门"
);
SignatureVo
oldVo
=
signatureMapper
.
selectOne
(
new
QueryWrapper
<
SignatureVo
>().
lambda
().
eq
(
SignatureVo:
:
getId
,
signatureVo
.
getId
()));
AssertUtil
.
isNotNull
(
oldVo
,
"当前签章不存在请刷新后重试"
);
if
(!
signatureVo
.
getSnName
().
equals
(
oldVo
.
getSnName
())){
Integer
snNameCount
=
signatureMapper
.
selectCount
(
new
QueryWrapper
<
SignatureVo
>().
lambda
().
eq
(
SignatureVo:
:
getSnName
,
signatureVo
.
getSnName
()).
eq
(
SignatureVo:
:
getDeptId
,
signatureVo
.
getDeptId
()
==
null
?
topDept
.
getDeptId
():
signatureVo
.
getDeptId
()));
AssertUtil
.
isTrue
(
snNameCount
==
0
,
"已存在该章名称"
);
}
signatureVo
.
setUpdateTime
(
DateUtil
.
date
());
signatureMapper
.
updateById
(
signatureVo
);
}
/**
* 根据部门id和签章名称查询单个签章
* @param deptId 部门id
* @param snName 签章名称
* @return
*/
public
SignatureVo
getByDeptId
(
Long
deptId
,
String
snName
){
QueryWrapper
<
SignatureVo
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
and
(
i
->
{
i
.
lambda
().
eq
(
SignatureVo:
:
getDeptId
,
deptId
).
eq
(
SignatureVo:
:
getSnName
,
snName
);
});
return
signatureMapper
.
selectOne
(
queryWrapper
);
}
/**
* 获取当前用户的所属部门下所有启用的签章
* @return
*/
public
List
<
SignatureVo
>
findCurrentDeptSignature
(){
UserDetails
currentUser
=
SecurityUtils
.
getCurrentUser
();
AssertUtil
.
isNotNull
(
currentUser
,
"登录身份已失效请重新登录"
);
SysUserVo
sysUserVo
=
userMapper
.
selectOne
(
new
QueryWrapper
<
SysUserVo
>().
lambda
().
eq
(
SysUserVo:
:
getUsername
,
currentUser
.
getUsername
()));
AssertUtil
.
isNotNull
(
sysUserVo
,
"登录身份已失效请重新登录"
);
AssertUtil
.
isTrue
(
sysUserVo
.
getEnabled
(),
"当前用户已被禁用"
);
DeptVo
deptVo
=
deptMapper
.
getById
(
sysUserVo
.
getDeptId
());
AssertUtil
.
isNotNull
(
deptVo
,
"未查到当前用户部门信息"
);
DeptVo
topDept
=
getTopDept
(
deptVo
);
QueryWrapper
<
SignatureVo
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
and
(
i
->
{
i
.
lambda
().
eq
(
SignatureVo:
:
getDeptId
,
topDept
.
getDeptId
()).
eq
(
SignatureVo:
:
getState
,
1
);
});
return
signatureMapper
.
selectList
(
queryWrapper
);
}
/**
* 获取当前顶级部门
* @param deptVo
* @return
*/
public
DeptVo
getTopDept
(
DeptVo
deptVo
){
if
(
deptVo
.
getPid
()
==
null
){
return
deptVo
;
}
else
{
DeptVo
parentDept
=
deptMapper
.
selectById
(
deptVo
.
getPid
());
if
(
parentDept
.
getPid
()
==
null
){
return
parentDept
;
}
else
{
getTopDept
(
parentDept
);
}
}
return
null
;
}
/**
* 添加签章
* @param addVo
*/
@Transactional
(
rollbackFor
=
Exception
.
class
,
propagation
=
Propagation
.
REQUIRED
)
public
void
add
(
SignatureAddVo
addVo
){
String
currentUsername
=
SecurityUtils
.
getCurrentUsername
();
AssertUtil
.
isNotBlank
(
currentUsername
,
"登录身份已失效请重新登录"
);
SysUserVo
sysUserVo
=
userMapper
.
selectOne
(
new
QueryWrapper
<
SysUserVo
>().
lambda
().
eq
(
SysUserVo:
:
getUsername
,
currentUsername
));
AssertUtil
.
isNotNull
(
sysUserVo
,
"登录身份已失效请重新登录"
);
DeptVo
deptVo
=
deptMapper
.
selectById
(
sysUserVo
.
getDeptId
());
DeptVo
topDept
=
getTopDept
(
deptVo
);
AssertUtil
.
isNotNull
(
topDept
,
"没有找到当前用户所属部门"
);
Integer
snNameCount
=
signatureMapper
.
selectCount
(
new
QueryWrapper
<
SignatureVo
>().
lambda
().
eq
(
SignatureVo:
:
getSnName
,
addVo
.
getSnName
()).
eq
(
SignatureVo:
:
getDeptId
,
addVo
.
getDeptId
()
==
null
?
topDept
.
getDeptId
():
addVo
.
getDeptId
()));
AssertUtil
.
isTrue
(
snNameCount
==
0
,
"已存在该章名称"
);
SignatureVo
signatureVo
=
new
SignatureVo
();
signatureVo
.
setDeptName
(
addVo
.
getSnName
());
signatureVo
.
setDeptId
(
addVo
.
getDeptId
()
==
null
?
topDept
.
getDeptId
():
addVo
.
getDeptId
());
signatureVo
.
setSnKey
(
addVo
.
getSnKey
());
signatureVo
.
setSnPassword
(
addVo
.
getSnPassword
());
signatureVo
.
setSnName
(
addVo
.
getSnName
());
signatureVo
.
setState
(
addVo
.
getState
());
signatureVo
.
setCreateTime
(
DateUtil
.
date
());
signatureVo
.
setUpdateTime
(
DateUtil
.
date
());
signatureMapper
.
insert
(
signatureVo
);
}
/**
* 分页查询签章列表
* @param pageReqVo
* @return
*/
public
IPage
<
SignatureVo
>
pageList
(
SignaturePageReqVo
pageReqVo
){
UserDetails
currentUser
=
SecurityUtils
.
getCurrentUser
();
AssertUtil
.
isNotNull
(
currentUser
,
"登录身份已失效请重新登录"
);
SysUserVo
sysUserVo
=
userMapper
.
selectOne
(
new
QueryWrapper
<
SysUserVo
>().
lambda
().
eq
(
SysUserVo:
:
getUsername
,
currentUser
.
getUsername
()));
AssertUtil
.
isNotNull
(
sysUserVo
,
"登录身份已失效请重新登录"
);
AssertUtil
.
isTrue
(
sysUserVo
.
getEnabled
(),
"当前用户已被禁用"
);
DeptVo
deptVo
=
deptMapper
.
getById
(
sysUserVo
.
getDeptId
());
AssertUtil
.
isNotNull
(
deptVo
,
"未查到当前用户部门信息"
);
DeptVo
topDept
=
getTopDept
(
deptVo
);
QueryWrapper
<
SignatureVo
>
queryWrapper
=
new
QueryWrapper
<>();
//检索所属部门
if
(
pageReqVo
.
getDeptId
()
!=
null
){
queryWrapper
.
lambda
().
and
(
i
->
{
i
.
eq
(
SignatureVo:
:
getDeptId
,
pageReqVo
.
getDeptId
());
});
}
else
{
// 获取当前用户的所有权限
List
<
String
>
elPermissions
=
SecurityUtils
.
getCurrentUser
().
getAuthorities
().
stream
().
map
(
GrantedAuthority:
:
getAuthority
).
collect
(
Collectors
.
toList
());
if
(!
elPermissions
.
contains
(
"admin"
)){
//非超级管理员只能查看自己部门
queryWrapper
.
lambda
().
and
(
i
->
{
i
.
eq
(
SignatureVo:
:
getDeptId
,
topDept
.
getDeptId
());
});
}
}
//检索签章秘钥盘序号
if
(
StrUtil
.
isNotBlank
(
pageReqVo
.
getSnKey
())){
queryWrapper
.
lambda
().
and
(
i
->
{
i
.
eq
(
SignatureVo:
:
getSnKey
,
pageReqVo
.
getSnKey
());
});
}
//检索签章名称
if
(
StrUtil
.
isNotBlank
(
pageReqVo
.
getSnName
())){
queryWrapper
.
lambda
().
and
(
i
->
{
i
.
eq
(
SignatureVo:
:
getSnName
,
pageReqVo
.
getSnName
());
});
}
//是否启用
if
(
pageReqVo
.
getState
()
!=
null
){
queryWrapper
.
lambda
().
and
(
i
->
{
i
.
eq
(
SignatureVo:
:
getState
,
pageReqVo
.
getState
());
});
}
//检索创建时间段
if
(
pageReqVo
.
getStartTime
()
!=
null
&&
pageReqVo
.
getEndTime
()
!=
null
){
queryWrapper
.
lambda
().
and
(
i
->
{
i
.
between
(
SignatureVo:
:
getCreateTime
,
pageReqVo
.
getStartTime
(),
pageReqVo
.
getEndTime
());
});
}
//根据创建时间降序
queryWrapper
.
lambda
().
orderByDesc
(
SignatureVo:
:
getCreateTime
);
Page
<
SignatureVo
>
signatureVoPage
=
signatureMapper
.
selectPage
(
new
Page
<>(
pageReqVo
.
getPage
(),
pageReqVo
.
getSize
()),
queryWrapper
);
signatureVoPage
.
getRecords
().
forEach
(
signatureVo
->
{
DeptVo
curDept
=
deptMapper
.
selectById
(
signatureVo
.
getDeptId
());
if
(
curDept
!=
null
)
signatureVo
.
setDeptName
(
curDept
.
getName
());
});
return
signatureVoPage
;
}
}
car-reptiles-system/src/main/resources/config/application.yml
View file @
a88e5d5f
...
...
@@ -5,7 +5,7 @@ spring:
freemarker
:
check-template-location
:
false
profiles
:
active
:
dev
active
:
prod
jackson
:
time-zone
:
GMT+8
data
:
...
...
sql/eladmin.sql
View file @
a88e5d5f
...
...
@@ -340,7 +340,7 @@ CREATE TABLE `sys_menu` (
`i_frame`
bit
(
1
)
DEFAULT
NULL
COMMENT
'是否外链'
,
`cache`
bit
(
1
)
DEFAULT
b
'0'
COMMENT
'缓存'
,
`hidden`
bit
(
1
)
DEFAULT
b
'0'
COMMENT
'隐藏'
,
`permission`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'
权限
'
,
`permission`
varchar
(
255
)
DEFAULT
NULL
COMMENT
''
,
`create_by`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'创建者'
,
`update_by`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'更新者'
,
`create_time`
datetime
DEFAULT
NULL
COMMENT
'创建日期'
,
...
...
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