src/main/java/org/springblade/modules/licence/controller/LicencePaperController.java
@@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * @author zhongrj @@ -159,6 +161,21 @@ } /** * 详情 * @param licencePaper 许可证信息对象 */ @GetMapping("/details") @ApiOperation(value = "详情", notes = "传入licencePaper") public R details(LicencePaper licencePaper) { Map<String, Object> map = new HashMap<>(); LicencePaper detail = licencePaperService.getOne(Condition.getQueryWrapper(licencePaper)); if (null!=detail){ map.put("url",detail.getUrl()); } return R.data(map); } /** * 查询分公司的许可证信息(包含总公司) * @param licencePaper 许可证信息对象 */ src/main/java/org/springblade/modules/securityapply/controller/SecurityApplyController.java
New file @@ -0,0 +1,158 @@ package org.springblade.modules.securityapply.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.securityapply.entity.SecurityApply; import org.springblade.modules.securityapply.service.SecurityApplyService; import org.springblade.modules.securityapply.vo.SecurityApplyVO; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; /** * 保安员证申诉控制器 * @author zhongrj * @since 2022-03-03 */ @RestController @AllArgsConstructor @RequestMapping("/securityApply") public class SecurityApplyController extends BladeController { private final SecurityApplyService securityApplyService; /** * 详情 * @param securityApply * @return */ @GetMapping("/detail") public R<SecurityApply> detail(SecurityApply securityApply) { SecurityApply detail = securityApplyService.getOne(Condition.getQueryWrapper(securityApply)); return R.data(detail); } /** * 分页 * @param query * @param securityApply * @return */ @GetMapping("/list") public R<IPage<SecurityApply>> list(SecurityApply securityApply, Query query) { IPage<SecurityApply> pages = securityApplyService.page(Condition.getPage(query), Condition.getQueryWrapper(securityApply)); return R.data(pages); } /** * 自定义分页 * @param securityApply * @param query * @return */ @GetMapping("/page") public R<IPage<SecurityApplyVO>> page(SecurityApplyVO securityApply, Query query) { IPage<SecurityApplyVO> pages = securityApplyService.selectSecurityApplyPage(Condition.getPage(query), securityApply); return R.data(pages); } /** * 新增 * @param securityApply * @return */ @PostMapping("/save") public R save(@RequestBody SecurityApply securityApply) { //判断是否已经申请过(审核通过,待审核) SecurityApply securityApply1 = new SecurityApply(); securityApply1.setAuditStatus(1); securityApply1.setNumber(securityApply.getNumber()); securityApply1.setUserId(securityApply.getUserId()); List<SecurityApply> list1 = securityApplyService.list(Condition.getQueryWrapper(securityApply1)); if (list1.size()>0){ throw new ServiceException("当前人员已经提交申请,审核已通过,请勿重复申请!"); } SecurityApply securityApply2 = new SecurityApply(); securityApply2.setAuditStatus(3); securityApply2.setNumber(securityApply.getNumber()); securityApply2.setUserId(securityApply.getUserId()); List<SecurityApply> list2 = securityApplyService.list(Condition.getQueryWrapper(securityApply2)); if (list2.size()>0){ throw new ServiceException("当前人员已经提交申请,待审核中,请勿重复申请!"); } //设置时间 securityApply.setCreateTime(new Date()); //待审核 securityApply.setAuditStatus(3); //返回 return R.data(securityApplyService.save(securityApply)); } /** * 修改 * @param securityApply * @return */ @PostMapping("/update") public R update(@RequestBody SecurityApply securityApply) { //修改并返回 return R.data(securityApplyService.updateById(securityApply)); } /** * 新增或修改 * @param securityApply * @return */ @PostMapping("/submit") public R submit(@RequestBody SecurityApply securityApply) { return R.status(securityApplyService.saveOrUpdate(securityApply)); } /** * 删除 */ @PostMapping("/remove") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(securityApplyService.removeByIds(Func.toLongList(ids))); } /** * 审核 * @param securityApply * @return */ @PostMapping("/audit") public R audit(@RequestBody SecurityApply securityApply) { securityApply.setAuditTime(new Date()); //修改并返回 return R.data(securityApplyService.audit(securityApply)); } /** * 批量审核 * @param securityApply * @return */ @PostMapping("/batchAudit") public R batchAudit(@RequestBody SecurityApplyVO securityApply) { securityApply.setAuditTime(new Date()); //修改并返回 return R.data(securityApplyService.batchAudit(securityApply)); } } src/main/java/org/springblade/modules/securityapply/entity/SecurityApply.java
New file @@ -0,0 +1,81 @@ package org.springblade.modules.securityapply.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; /** * 保安员证申诉实体类 * * @author zhongrj * @since 2020-03-03 */ @Data @TableName("sys_security_apply") public class SecurityApply implements Serializable { private static final long serialVersionUID = 1L; /** * 主键id */ @TableId(value = "id",type = IdType.AUTO) private Long id; /** * 用户id */ private Long userId; /** * 保安证编号 */ private String number; /** * 保安证图片 url */ private String url; /** * 申请理由 */ private String applyReason; /** * 申请人id */ private Long createUser; /** * 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 审核状态 1:通过 2:不通过 3:待审核 */ private Integer auditStatus; /** * 审核明细 */ private String auditDetail; /** * 审核时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date auditTime; } src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.java
New file @@ -0,0 +1,28 @@ package org.springblade.modules.securityapply.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import org.springblade.modules.securityapply.entity.SecurityApply; import org.springblade.modules.securityapply.vo.SecurityApplyVO; import java.util.List; /** * 保安员证申诉Mapper 接口 * * @author zhongrj * @since 2022-03-03 */ public interface SecurityApplyMapper extends BaseMapper<SecurityApply> { /** * 自定义分页 * * @param page * @param securityApply * @return */ List<SecurityApplyVO> selectSecurityApplyPage(IPage<SecurityApplyVO> page, @Param("securityApply") SecurityApplyVO securityApply); } src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.xml
New file @@ -0,0 +1,41 @@ <?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="org.springblade.modules.securityapply.mapper.SecurityApplyMapper"> <!--自定义查询保安员证申诉分页数据--> <select id="selectSecurityApplyPage" resultType="org.springblade.modules.securityapply.vo.SecurityApplyVO"> select ssa.*, bu.real_name realName,IF(mod(SUBSTR(bu.cardid,17,1),2),1,2) sex,bu.cardid, bd.dept_name deptName, bu1.real_name applyName from sys_security_apply ssa left join blade_user bu on bu.id = ssa.user_id left join blade_dept bd on bd.id = bu.dept_id left join blade_user bu1 on bu1.id = ssa.create_user where 1=1 <if test="securityApply.realName!=null and securityApply.realName!=''"> and bu.real_name like concat('%',#{securityApply.realName},'%') </if> <if test="securityApply.cardid!=null and securityApply.cardid!=''"> and bu.cardid like concat('%',#{securityApply.cardid},'%') </if> <if test="securityApply.number!=null and securityApply.number!=''"> and ssa.number like concat('%',#{securityApply.number},'%') </if> <if test="securityApply.deptName!=null and securityApply.deptName!=''"> and bd.dept_name like concat('%',#{securityApply.deptName},'%') </if> <if test="securityApply.auditStatus!=null"> and ssa.audit_status = #{securityApply.auditStatus} </if> <if test="securityApply.startTime!=null and securityApply.startTime!=''"> and date_format(ssa.create_time,'%Y-%m-%d')>=#{securityApply.startTime} </if> <if test="securityApply.endTime!=null and securityApply.endTime!=''"> and date_format(ssa.create_time,'%Y-%m-%d')<=#{securityApply.endTime} </if> order by ssa.id desc </select> </mapper> src/main/java/org/springblade/modules/securityapply/service/SecurityApplyService.java
New file @@ -0,0 +1,40 @@ package org.springblade.modules.securityapply.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.apache.ibatis.annotations.Param; import org.springblade.modules.securityapply.entity.SecurityApply; import org.springblade.modules.securityapply.vo.SecurityApplyVO; /** * 保安员证申诉服务类 * * @author zhongrj * @since 2022-03-03 */ public interface SecurityApplyService extends IService<SecurityApply> { /** * 自定义分页 * * @param page * @param securityApplyVO * @return */ IPage<SecurityApplyVO> selectSecurityApplyPage(IPage<SecurityApplyVO> page, @Param("securityApplyVO") SecurityApplyVO securityApplyVO); /** * 审核 * @param securityApply * @return */ Object audit(SecurityApply securityApply); /** * 批量审核 * @param securityApply * @return */ Object batchAudit(SecurityApplyVO securityApply); } src/main/java/org/springblade/modules/securityapply/service/impl/SecurityApplyServiceImpl.java
New file @@ -0,0 +1,134 @@ package org.springblade.modules.securityapply.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.common.utils.DesensitizedUtil; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springblade.modules.FTP.MyAsyncService; import org.springblade.modules.securityapply.entity.SecurityApply; import org.springblade.modules.securityapply.mapper.SecurityApplyMapper; import org.springblade.modules.securityapply.service.SecurityApplyService; import org.springblade.modules.securityapply.vo.SecurityApplyVO; import org.springblade.modules.securitypaper.entity.SecurityPaper; import org.springblade.modules.securitypaper.service.SecurityPaperService; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 保安员证申诉服务实现类 * * @author zhongrj * @since 2022-03-03 */ @Service public class SecurityApplyServiceImpl extends ServiceImpl<SecurityApplyMapper, SecurityApply> implements SecurityApplyService { @Autowired private MyAsyncService myAsyncService; @Autowired private IUserService userService; @Autowired private SecurityPaperService securityPaperService; /** * 自定义分页查询保安员证申诉数据 * @param page * @param securityApply * @return */ @Override public IPage<SecurityApplyVO> selectSecurityApplyPage(IPage<SecurityApplyVO> page, SecurityApplyVO securityApply) { return page.setRecords(baseMapper.selectSecurityApplyPage(page, securityApply)); } /** * 审核 * @param securityApply * @return */ @Override public Object audit(SecurityApply securityApply) { //查询用户信息 SecurityApply apply = this.getById(securityApply.getId()); User user = userService.getById(apply.getUserId()); //判断审核状态 if (securityApply.getAuditStatus().equals(1)){ //审核通过,判断是否为重复审核通过,即查询保安证编号库是否已存在该编号,如果已存在,则不新增,否则则新增,同时修改改保安员的保安证编号 //1.1 查询该编号是否已在存储库存在 SecurityPaper securityPaper = new SecurityPaper(); securityPaper.setNumber(apply.getNumber()); List<SecurityPaper> list = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); if (list.size()>0){ //判断该编号对应的人员是否为同一人 for (SecurityPaper paper : list) { if (!paper.getIdCardNo().equals(user.getCardid())){ //其他人员已占用该编号 throw new ServiceException("保安证编号:["+ apply.getNumber() +"] 已存在"); } } }else { //新增 SecurityPaper securityPaper1 = new SecurityPaper(); securityPaper1.setNumber(apply.getNumber()); securityPaper1.setCreateTime(new Date()); securityPaper1.setIdCardNo(user.getCardid()); securityPaper1.setUserId(user.getId()); securityPaper1.setExamId(apply.getId()); securityPaper1.setPeopleName(user.getRealName()); securityPaper1.setSource(2); //插入保安证存储库 securityPaperService.save(securityPaper1); //用户保安证编号更新 user.setHold("1"); user.setSecuritynumber(apply.getNumber()); user.setUpdateTime(new Date()); boolean status = userService.updateById(user); if (status) { //外网数据同步 String s1 = "update blade_user set hold = " + user.getHold() + ",securitynumber = " + "'" + DesensitizedUtil.desensitizedSecurityNumber(user.getSecuritynumber()) + "'" + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(user.getUpdateTime()) + "'" + " " + "where id = " + "'" + user.getId() + "'"; myAsyncService.FTP(s1); } } } //证件核实申请更新并返回 return this.updateById(securityApply); } /** * 批量审核 * @param securityApply * @return */ @Override public Object batchAudit(SecurityApplyVO securityApply) { //取出id List<String> list = Arrays.asList(securityApply.getIds().split(",")); //遍历 for (String s : list) { SecurityApply securityApply1 = new SecurityApply(); securityApply1.setAuditTime(securityApply.getAuditTime()); securityApply1.setAuditStatus(securityApply.getAuditStatus()); securityApply1.setId(Long.parseLong(s)); //审核 audit(securityApply1); } //返回 return null; } } src/main/java/org/springblade/modules/securityapply/vo/SecurityApplyVO.java
New file @@ -0,0 +1,55 @@ package org.springblade.modules.securityapply.vo; import lombok.Data; import org.springblade.modules.securityapply.entity.SecurityApply; /** * 保安员证申诉视图实体类 * @author zhongrj * @since 2022-03-03 */ @Data public class SecurityApplyVO extends SecurityApply { private static final long serialVersionUID = 1L; /** * 保安员姓名 */ private String realName; /** * 申请人姓名 */ private String applyName; /** * 身份证号 */ private String cardid; /** * 性别 */ private String sex; /** * 企业名称 */ private String deptName; /** * 开始时间 */ private String startTime; /** * 截止时间 */ private String endTime; /** * ids */ private String ids; } src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -393,4 +393,14 @@ return R.data(list); } /** * 查询保安员信息 * @param user * @return */ @GetMapping("/getSecurityInfoByIdCardNo") public R getSecurityInfoByIdCardNo(User user){ return R.data(userService.getSecurityInfoByIdCardNo(user)); } } src/main/java/org/springblade/modules/system/mapper/UserMapper.java
@@ -25,6 +25,7 @@ import org.springblade.modules.system.excel.SecurityExcel; import org.springblade.modules.system.excel.UserExcel; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.vo.UserDTO; import org.springblade.modules.system.vo.UserVO; import org.springframework.boot.autoconfigure.quartz.QuartzDataSource; @@ -135,4 +136,11 @@ * @return */ Integer getSecurityPaperCount(@Param("pre") String pre); /** * 查询保安员信息 * @param user * @return */ UserDTO getSecurityInfoByIdCardNo(@Param("user")User user); } src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -556,4 +556,20 @@ select ifnull(max(0+RIGHT(securitynumber,5)),0) from blade_user where securitynumber like concat('%',#{pre},'%') </select> <!--查询保安员信息--> <select id="getSecurityInfoByIdCardNo" resultType="org.springblade.modules.system.vo.UserDTO"> select bu.real_name realName, bd.dept_name as deptName, if(bu.sex=1,'男','女') sex, bu.cardid from blade_user bu left join blade_dept bd on bu.dept_id = bd.id where bu.is_deleted = 0 and role_id = '1412226235153731586' and bu.status = 1 and bu.cardid = #{user.cardid} </select> </mapper> src/main/java/org/springblade/modules/system/service/IUserService.java
@@ -27,6 +27,7 @@ import org.springblade.modules.system.entity.UserOauth; import org.springblade.modules.system.excel.SecurityExcel; import org.springblade.modules.system.excel.UserExcel; import org.springblade.modules.system.vo.UserDTO; import org.springblade.modules.system.vo.UserVO; import java.util.List; @@ -267,4 +268,11 @@ * @return */ Integer getSecurityPaperCount(String pre); /** * 查询保安员信息 * @param user * @return */ UserDTO getSecurityInfoByIdCardNo(User user); } src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -48,6 +48,7 @@ import org.springblade.modules.system.service.IUserDeptService; import org.springblade.modules.system.service.IUserOauthService; import org.springblade.modules.system.service.IUserService; import org.springblade.modules.system.vo.UserDTO; import org.springblade.modules.system.vo.UserVO; import org.springblade.modules.system.wrapper.UserWrapper; import org.springframework.stereotype.Service; @@ -530,4 +531,14 @@ public Integer getSecurityPaperCount(String pre) { return baseMapper.getSecurityPaperCount(pre); } /** * 查询保安员信息 * @param user * @return */ @Override public UserDTO getSecurityInfoByIdCardNo(User user) { return baseMapper.getSecurityInfoByIdCardNo(user); } } src/main/java/org/springblade/modules/system/vo/UserDTO.java
New file @@ -0,0 +1,55 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.system.vo; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; /** * 视图实体类 * * @author Chill */ @Data public class UserDTO implements Serializable { private static final long serialVersionUID = 1L; /** * 部门名 */ private String deptName; /** * 性名 */ private String realName; /** * 性别 */ private String sex; /** * 性别 */ private String cardid; } src/main/resources/application.yml
@@ -197,6 +197,8 @@ skip-url: - /blade-test/** - /readFile - /blade-user/getSecurityInfoByIdCardNo - /licencePaper/details # - /liveLocation/** # - /locus/** # - /examScore/**