Commit a88e5d5f by 梁辉

优化了签章功能,给自行选择签章,检测报告详情会删除旧的下载完成的检测报告

parent 96ee6467
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;
}
...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import me.zhengjie.modules.system.domain.vo.DeptVo; import me.zhengjie.modules.system.domain.vo.DeptVo;
import me.zhengjie.modules.system.domain.vo.SysUserVo; import me.zhengjie.modules.system.domain.vo.SysUserVo;
import me.zhengjie.modules.system.domain.vo.signature.SignatureVo;
/** /**
* 车检报告签章接口请求vo * 车检报告签章接口请求vo
...@@ -12,12 +13,15 @@ import me.zhengjie.modules.system.domain.vo.SysUserVo; ...@@ -12,12 +13,15 @@ import me.zhengjie.modules.system.domain.vo.SysUserVo;
@Data @Data
public class CarSignatureReqVo { public class CarSignatureReqVo {
@ApiModelProperty("签章部门vo")
private DeptVo deptVo;
@ApiModelProperty("检测报告vo") @ApiModelProperty("检测报告vo")
private ReportPdfVo reportPdfVo; private ReportPdfVo reportPdfVo;
@ApiModelProperty("签章用户vo") @ApiModelProperty("授权人签章")
private SysUserVo sysUserVo; private SignatureVo signature1;
@ApiModelProperty("批准人签章")
private SignatureVo signature2;
@ApiModelProperty("公章签章")
private SignatureVo signature3;
} }
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;
}
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;
}
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;
}
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.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -16,24 +17,34 @@ import java.util.Date; ...@@ -16,24 +17,34 @@ import java.util.Date;
@ApiModel("签名Vo") @ApiModel("签名Vo")
@TableName("t_signature") @TableName("t_signature")
@Data @Data
public class Signature { public class SignatureVo {
@ApiModelProperty("自增ID") @ApiModelProperty("自增ID")
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Integer id; private Integer id;
@ApiModelProperty("签名名称") @ApiModelProperty("秘钥盘序号")
private String name; private String snKey;
@ApiModelProperty("签名文件存放根路径") @ApiModelProperty("签章密码")
private String path; private String snPassword;
@ApiModelProperty("用户ID") @ApiModelProperty("章名称")
private Integer userId; private String snName;
@ApiModelProperty("部门id")
private Long deptId;
@ApiModelProperty("是否启用 0不启用 1启用")
private Integer state;
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
private Date createTime; private Date createTime;
@ApiModelProperty("更新时间") @ApiModelProperty("更新时间")
private Date updateTime; private Date updateTime;
@TableField(exist = false)
@ApiModelProperty("所属部门名称")
private String deptName;
} }
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> {
}
...@@ -6,6 +6,8 @@ import io.swagger.annotations.Api; ...@@ -6,6 +6,8 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import me.zhengjie.base.ResultVo; import me.zhengjie.base.ResultVo;
import me.zhengjie.modules.system.domain.vo.report.*; 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.modules.system.service.ReportService;
import me.zhengjie.utils.AssertUtil; import me.zhengjie.utils.AssertUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -32,6 +35,13 @@ public class ReportController { ...@@ -32,6 +35,13 @@ public class ReportController {
this.reportService = reportService; this.reportService = reportService;
} }
@ApiOperation("获取当前用户部门下所有启用的签章")
@GetMapping("/signatureList")
public ResultVo<List<SignatureVo>> signatureList(){
return ResultVo.success(reportService.findCurrentDeptSignature());
}
@ApiOperation("上传报告") @ApiOperation("上传报告")
@PostMapping("/upload") @PostMapping("/upload")
public ResultVo uploadReport(ReportUploadReqVo reqVo, @RequestParam(name = "files")MultipartFile[] files){ public ResultVo uploadReport(ReportUploadReqVo reqVo, @RequestParam(name = "files")MultipartFile[] files){
...@@ -42,10 +52,13 @@ public class ReportController { ...@@ -42,10 +52,13 @@ public class ReportController {
} }
@ApiOperation("签章检测报告") @ApiOperation("签章检测报告")
@GetMapping("/signature/{reportPdfId}") @PostMapping("/signature")
public ResultVo<ReportPdfVo> signature(@PathVariable Integer reportPdfId){ public ResultVo<ReportPdfVo> signature(@RequestBody SignReportVo signReportVo){
AssertUtil.isTrue(reportPdfId!=null && reportPdfId >0,"缺少参数检测报告详情Id"); AssertUtil.isTrue(signReportVo.getReportPdfId()!=null && signReportVo.getReportPdfId() >0,"缺少参数检测报告详情Id");
return ResultVo.success(reportService.signature(reportPdfId)); AssertUtil.isNotBlank(signReportVo.getSnName1(),"请选择授权人签名");
AssertUtil.isNotBlank(signReportVo.getSnName2(),"请选择批准人签名");
AssertUtil.isNotBlank(signReportVo.getSnName3(),"请选择公章");
return ResultVo.success(reportService.signature(signReportVo));
} }
@PostMapping("/details") @PostMapping("/details")
......
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));
}
}
...@@ -3,7 +3,6 @@ package me.zhengjie.modules.system.service; ...@@ -3,7 +3,6 @@ package me.zhengjie.modules.system.service;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
...@@ -14,12 +13,13 @@ import me.zhengjie.exception.BusinessException; ...@@ -14,12 +13,13 @@ import me.zhengjie.exception.BusinessException;
import me.zhengjie.modules.system.domain.vo.DeptVo; import me.zhengjie.modules.system.domain.vo.DeptVo;
import me.zhengjie.modules.system.domain.vo.SysUserVo; import me.zhengjie.modules.system.domain.vo.SysUserVo;
import me.zhengjie.modules.system.domain.vo.report.*; 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.DeptMapper;
import me.zhengjie.modules.system.repository.ReportPdfMapper; import me.zhengjie.modules.system.repository.ReportPdfMapper;
import me.zhengjie.modules.system.repository.UserMapper; import me.zhengjie.modules.system.repository.UserMapper;
import me.zhengjie.modules.system.util.CarReportUtil; import me.zhengjie.modules.system.util.CarReportUtil;
import me.zhengjie.utils.AssertUtil; import me.zhengjie.utils.AssertUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
...@@ -30,11 +30,9 @@ import org.springframework.security.core.Authentication; ...@@ -30,11 +30,9 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
...@@ -58,16 +56,19 @@ public class ReportService { ...@@ -58,16 +56,19 @@ public class ReportService {
private final ReportPdfMapper reportPdfMapper; private final ReportPdfMapper reportPdfMapper;
private final SignatureService signatureService;
private final RestTemplate restTemplate; private final RestTemplate restTemplate;
private static List<TestReportVo> reportVoList; private static List<TestReportVo> reportVoList;
@Autowired @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.userMapper = userMapper;
this.deptMapper = deptMapper; this.deptMapper = deptMapper;
this.carReportUtil = carReportUtil; this.carReportUtil = carReportUtil;
this.reportPdfMapper = reportPdfMapper; this.reportPdfMapper = reportPdfMapper;
this.signatureService = signatureService;
this.restTemplate = restTemplate; this.restTemplate = restTemplate;
} }
...@@ -85,6 +86,15 @@ public class ReportService { ...@@ -85,6 +86,15 @@ public class ReportService {
); );
} }
/**
* 获取当前用户部门下所有签章
* @return
*/
public List<SignatureVo> findCurrentDeptSignature(){
return signatureService.findCurrentDeptSignature();
}
/** /**
* 上传检测报告以及其他文件到公安 * 上传检测报告以及其他文件到公安
...@@ -121,7 +131,7 @@ public class ReportService { ...@@ -121,7 +131,7 @@ public class ReportService {
* 报告签章 * 报告签章
* @return * @return
*/ */
public ReportPdfVo signature(Integer reportPdfId){ public ReportPdfVo signature(SignReportVo signReportVo){
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
AssertUtil.isNotNull(authentication,"登录身份已失效请重新登录"); AssertUtil.isNotNull(authentication,"登录身份已失效请重新登录");
UserDetails userDetails = (UserDetails) authentication.getPrincipal(); UserDetails userDetails = (UserDetails) authentication.getPrincipal();
...@@ -129,18 +139,29 @@ public class ReportService { ...@@ -129,18 +139,29 @@ public class ReportService {
String username = userDetails.getUsername(); String username = userDetails.getUsername();
SysUserVo sysUserVo = userMapper.selectOne(new QueryWrapper<SysUserVo>().lambda().eq(SysUserVo::getUsername, username)); SysUserVo sysUserVo = userMapper.selectOne(new QueryWrapper<SysUserVo>().lambda().eq(SysUserVo::getUsername, username));
AssertUtil.isNotNull(sysUserVo,"登录身份已失效请重新登录"); 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,"不存在该报告详情,请刷新页面后重试"); AssertUtil.isNotNull(reportPdfVo,"不存在该报告详情,请刷新页面后重试");
DeptVo deptVo = deptMapper.selectById(sysUserVo.getDeptId());
AssertUtil.isNotNull(deptVo,"当前用户部门信息不存在");
//开始签章 //开始签章
CarSignatureReqVo carSignatureReqVo = new CarSignatureReqVo(); CarSignatureReqVo carSignatureReqVo = new CarSignatureReqVo();
carSignatureReqVo.setReportPdfVo(reportPdfVo); carSignatureReqVo.setReportPdfVo(reportPdfVo);
carSignatureReqVo.setSysUserVo(sysUserVo); carSignatureReqVo.setSignature1(signatureVo1);
carSignatureReqVo.setDeptVo(deptVo); carSignatureReqVo.setSignature2(signatureVo2);
carSignatureReqVo.setSignature3(signatureVo3);
//reportPdfVo = signatureUtil.electronicGM(reportPdfVo, sysUserVo); //reportPdfVo = signatureUtil.electronicGM(reportPdfVo, sysUserVo);
HttpEntity<CarSignatureReqVo> httpEntity = new HttpEntity<>(carSignatureReqVo); HttpEntity<CarSignatureReqVo> httpEntity = new HttpEntity<>(carSignatureReqVo);
ResponseEntity<ResultVo> responseEntity = this.restTemplate.exchange( ResponseEntity<ResultVo> responseEntity = this.restTemplate.exchange(
...@@ -167,9 +188,9 @@ public class ReportService { ...@@ -167,9 +188,9 @@ public class ReportService {
ReportPdfVo reportPdfVo = reportPdfMapper.selectOne(new QueryWrapper<ReportPdfVo>() ReportPdfVo reportPdfVo = reportPdfMapper.selectOne(new QueryWrapper<ReportPdfVo>()
.lambda().eq(ReportPdfVo::getReportNum, detailsReqVo.getReportNum())); .lambda().eq(ReportPdfVo::getReportNum, detailsReqVo.getReportNum()));
//如果已经下载保存过PDF了则直接返回给前端 //如果已经下载保存过PDF了则删除旧的pdf
if(reportPdfVo != null && StrUtil.isNotBlank(reportPdfVo.getPath())){ if(reportPdfVo != null && StrUtil.isNotBlank(reportPdfVo.getPath())){
return reportPdfVo; FileUtil.del(reportPdfVo.getPath());
} }
//获取当前用户的部门 //获取当前用户的部门
......
...@@ -5,7 +5,7 @@ spring: ...@@ -5,7 +5,7 @@ spring:
freemarker: freemarker:
check-template-location: false check-template-location: false
profiles: profiles:
active: dev active: prod
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8
data: data:
......
...@@ -340,7 +340,7 @@ CREATE TABLE `sys_menu` ( ...@@ -340,7 +340,7 @@ CREATE TABLE `sys_menu` (
`i_frame` bit(1) DEFAULT NULL COMMENT '是否外链', `i_frame` bit(1) DEFAULT NULL COMMENT '是否外链',
`cache` bit(1) DEFAULT b'0' COMMENT '缓存', `cache` bit(1) DEFAULT b'0' COMMENT '缓存',
`hidden` 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 '创建者', `create_by` varchar(255) DEFAULT NULL COMMENT '创建者',
`update_by` varchar(255) DEFAULT NULL COMMENT '更新者', `update_by` varchar(255) DEFAULT NULL COMMENT '更新者',
`create_time` datetime DEFAULT NULL COMMENT '创建日期', `create_time` datetime DEFAULT NULL COMMENT '创建日期',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment