From 138cac5008689fadaa96ecac116a2297bb69bc1c Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Fri, 04 Mar 2022 10:45:40 +0800
Subject: [PATCH] 1. 电子围栏基本接口新增 2. 保安员证核查申请记录基本接口新增,审批,批量审批接口编写 3. 保安员证档案库新增字段 source 来源,保安员证生成修改

---
 src/main/java/org/springblade/modules/electronrail/entity/ElectronRail.java                        |   68 ++++
 src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.xml                 |   41 ++
 src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java                          |   15 
 src/main/java/org/springblade/modules/securityapply/controller/SecurityApplyController.java        |  158 +++++++++
 src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.java                |   28 +
 src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java       |   31 +
 src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java                  |    1 
 src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java          |  100 ++++++
 src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java                |   27 +
 src/main/java/org/springblade/modules/securityapply/service/impl/SecurityApplyServiceImpl.java     |  133 ++++++++
 src/main/resources/application-test.yml                                                            |    3 
 src/main/java/org/springblade/modules/securityapply/service/SecurityApplyService.java              |   40 ++
 src/main/java/org/springblade/modules/securitypaper/entity/SecurityPaper.java                      |    7 
 src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml                   |   20 +
 src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java |    4 
 src/main/java/org/springblade/modules/securityapply/entity/SecurityApply.java                      |   81 +++++
 src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java                  |   28 +
 src/main/java/org/springblade/modules/securitypaper/service/impl/SecurityPaperServiceImpl.java     |    1 
 src/main/java/org/springblade/modules/securityapply/vo/SecurityApplyVO.java                        |   55 +++
 src/main/java/org/springblade/modules/securitypaper/vo/SecurityPaperVo.java                        |    3 
 src/main/java/org/springblade/modules/exam/service/impl/ScoreAuditRecordsServiceImpl.java          |   14 
 src/main/java/org/springblade/modules/system/controller/UserController.java                        |   80 ++--
 src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java                     |    2 
 23 files changed, 895 insertions(+), 45 deletions(-)

diff --git a/src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java b/src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java
new file mode 100644
index 0000000..b9ad3e0
--- /dev/null
+++ b/src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java
@@ -0,0 +1,100 @@
+
+package org.springblade.modules.electronrail.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.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.electronrail.entity.ElectronRail;
+import org.springblade.modules.electronrail.service.ElectronRailService;
+import org.springblade.modules.electronrail.vo.ElectronRailVO;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+/**
+ * 电子围栏控制器
+ * @author zhongrj
+ * @since 2022-03-03
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/electronRail")
+public class ElectronRailController extends BladeController {
+
+	private final ElectronRailService electronRailService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	public R<ElectronRail> detail(ElectronRail electronRail) {
+		ElectronRail detail = electronRailService.getOne(Condition.getQueryWrapper(electronRail));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页
+	 */
+	@GetMapping("/list")
+	public R<IPage<ElectronRail>> list(ElectronRail electronRail, Query query) {
+		IPage<ElectronRail> pages = electronRailService.page(Condition.getPage(query), Condition.getQueryWrapper(electronRail));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页
+	 */
+	@GetMapping("/page")
+	public R<IPage<ElectronRailVO>> page(ElectronRailVO electronRail, Query query) {
+		IPage<ElectronRailVO> pages = electronRailService.selectElectronRailPage(Condition.getPage(query), electronRail);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增
+	 */
+	@PostMapping("/save")
+	public R save(@RequestBody ElectronRail electronRail) {
+		//设置时间
+		electronRail.setCreateTime(new Date());
+		electronRail.setUpdateTime(new Date());
+		//返回
+		return R.data(electronRailService.save(electronRail));
+	}
+
+
+	/**
+	 * 修改
+	 */
+	@PostMapping("/update")
+	public R update(@RequestBody ElectronRail electronRail) {
+		//设置更新时间
+		electronRail.setUpdateTime(new Date());
+		//修改并返回
+		return R.data(electronRailService.updateById(electronRail));
+	}
+
+	/**
+	 * 新增或修改
+	 */
+	@PostMapping("/submit")
+	public R submit(@RequestBody ElectronRail electronRail) {
+		return R.status(electronRailService.saveOrUpdate(electronRail));
+	}
+
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(electronRailService.removeByIds(Func.toLongList(ids)));
+	}
+
+
+}
diff --git a/src/main/java/org/springblade/modules/electronrail/entity/ElectronRail.java b/src/main/java/org/springblade/modules/electronrail/entity/ElectronRail.java
new file mode 100644
index 0000000..f2ad0de
--- /dev/null
+++ b/src/main/java/org/springblade/modules/electronrail/entity/ElectronRail.java
@@ -0,0 +1,68 @@
+package org.springblade.modules.electronrail.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.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 电子围栏实体类
+ *
+ * @author zhongrj
+ * @since 2020-03-03
+ */
+@Data
+@TableName("sys_electron_rail")
+public class ElectronRail implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键id
+	 */
+	@TableId(value = "id",type = IdType.AUTO)
+	private Long id;
+
+	/**
+	 * 围栏名称
+	 */
+	private String name;
+
+
+	/**
+	 * 类型 1:公司围栏  2:派遣单位围栏
+	 */
+	private Integer type;
+
+
+	/**
+	 * 公司id/派遣单位id
+	 */
+	private Long companyId;
+
+	/**
+	 * 围栏区域空间坐标
+	 */
+	private String coordinate;
+
+	/**
+	 * 创建时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date createTime;
+
+    /**
+	 * 更新时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+  	private Date updateTime;
+
+}
diff --git a/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java b/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java
new file mode 100644
index 0000000..3a0bf8d
--- /dev/null
+++ b/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java
@@ -0,0 +1,28 @@
+
+package org.springblade.modules.electronrail.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.electronrail.entity.ElectronRail;
+import org.springblade.modules.electronrail.vo.ElectronRailVO;
+
+import java.util.List;
+
+/**
+ *  电子围栏Mapper 接口
+ *
+ * @author zhongrj
+ * @since 2022-03-03
+ */
+public interface ElectronRailMapper extends BaseMapper<ElectronRail> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param electronRail
+	 * @return
+	 */
+	List<ElectronRailVO> selectElectronRailPage(IPage<ElectronRailVO> page, @Param("electronRail") ElectronRailVO electronRail);
+}
diff --git a/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml b/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml
new file mode 100644
index 0000000..292d64f
--- /dev/null
+++ b/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml
@@ -0,0 +1,20 @@
+<?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.electronrail.mapper.ElectronRailMapper">
+
+    <!--自定义查询合同分页数据-->
+    <select id="selectElectronRailPage" resultType="org.springblade.modules.electronrail.vo.ElectronRailVO">
+        select * from sys_electron_rail
+        where 1=1
+        <if test="electronRail.name!=null and electronRail.name!=''">
+            and name like concat('%',#{electronRail.name},'%')
+        </if>
+        <if test="electronRail.type!=null">
+            and type = #{electronRail.type}
+        </if>
+        <if test="electronRail.companyId!=null">
+            and company_id = #{electronRail.companyId}
+        </if>
+    </select>
+
+</mapper>
diff --git a/src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java b/src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java
new file mode 100644
index 0000000..7cbcfd5
--- /dev/null
+++ b/src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java
@@ -0,0 +1,27 @@
+
+package org.springblade.modules.electronrail.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.electronrail.entity.ElectronRail;
+import org.springblade.modules.electronrail.vo.ElectronRailVO;
+
+/**
+ *  电子围栏服务类
+ *
+ * @author zhongrj
+ * @since 2022-03-03
+ */
+public interface ElectronRailService extends IService<ElectronRail> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param electronRailVO
+	 * @return
+	 */
+	IPage<ElectronRailVO> selectElectronRailPage(IPage<ElectronRailVO> page, @Param("electronRailVO") ElectronRailVO electronRailVO);
+
+}
diff --git a/src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java b/src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java
new file mode 100644
index 0000000..1be63f8
--- /dev/null
+++ b/src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java
@@ -0,0 +1,31 @@
+
+package org.springblade.modules.electronrail.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.modules.electronrail.entity.ElectronRail;
+import org.springblade.modules.electronrail.mapper.ElectronRailMapper;
+import org.springblade.modules.electronrail.service.ElectronRailService;
+import org.springblade.modules.electronrail.vo.ElectronRailVO;
+import org.springframework.stereotype.Service;
+
+/**
+ *  电子围栏服务实现类
+ *
+ * @author zhongrj
+ * @since 2022-03-03
+ */
+@Service
+public class ElectronRailServiceImpl extends ServiceImpl<ElectronRailMapper, ElectronRail> implements ElectronRailService {
+
+	/**
+	 * 自定义分页查询电子围栏数据
+	 * @param page
+	 * @param electronRail
+	 * @return
+	 */
+	@Override
+	public IPage<ElectronRailVO> selectElectronRailPage(IPage<ElectronRailVO> page, ElectronRailVO electronRail) {
+		return page.setRecords(baseMapper.selectElectronRailPage(page, electronRail));
+	}
+}
diff --git a/src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java b/src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java
new file mode 100644
index 0000000..31df1e7
--- /dev/null
+++ b/src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java
@@ -0,0 +1,15 @@
+
+package org.springblade.modules.electronrail.vo;
+
+import lombok.Data;
+import org.springblade.modules.electronrail.entity.ElectronRail;
+
+/**
+ * 电子围栏视图实体类
+ * @author zhongrj
+ * @since 2022-03-03
+ */
+@Data
+public class ElectronRailVO extends ElectronRail {
+	private static final long serialVersionUID = 1L;
+}
diff --git a/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java b/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
index a45d34b..e35da21 100644
--- a/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
+++ b/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
@@ -60,6 +60,7 @@
 	private final ExamPaperService examPaperService;
 
 	private final SecurityPaperService securityPaperService;
+
 	private final MyAsyncService myAsyncService;
 
 	/**
@@ -208,6 +209,7 @@
 					securityPaper.setPeopleName(user1.getRealName());
 					securityPaper.setExamId(Long.parseLong(examScore1.getExamId()));
 					securityPaper.setApplyId(examScore1.getApplyId());
+					securityPaper.setSource(1);
 					//新增保安员证信息
 					securityPaperService.save(securityPaper);
 					//修改为持证保安
diff --git a/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java b/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
index bab329d..74173bb 100644
--- a/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
+++ b/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
@@ -329,6 +329,7 @@
 											securityPaper.setPeopleName(user.getRealName());
 											securityPaper.setExamId(Long.parseLong(examScore.getExamId()));
 											securityPaper.setApplyId(examScore.getApplyId());
+											securityPaper.setSource(1);
 											//新增保安员证信息
 											securityPaperService.save(securityPaper);
 
diff --git a/src/main/java/org/springblade/modules/exam/service/impl/ScoreAuditRecordsServiceImpl.java b/src/main/java/org/springblade/modules/exam/service/impl/ScoreAuditRecordsServiceImpl.java
index 588f6f5..1184f99 100644
--- a/src/main/java/org/springblade/modules/exam/service/impl/ScoreAuditRecordsServiceImpl.java
+++ b/src/main/java/org/springblade/modules/exam/service/impl/ScoreAuditRecordsServiceImpl.java
@@ -188,6 +188,7 @@
 						securityPaper.setPeopleName(user.getRealName());
 						securityPaper.setExamId(Long.parseLong(examScore.getExamId()));
 						securityPaper.setApplyId(examScore.getApplyId());
+						securityPaper.setSource(1);
 						//新增保安员证信息
 						securityPaperService.save(securityPaper);
 
@@ -350,6 +351,19 @@
 							//更新保安数据
 							userService.updateById(user);
 
+							//生成保安证的同时向保安证管理表中插入一条数据
+							SecurityPaper securityPaper = new SecurityPaper();
+							securityPaper.setUserId(user.getId());
+							securityPaper.setNumber(result);
+							securityPaper.setCreateTime(new Date());
+							securityPaper.setIdCardNo(user.getCardid());
+							securityPaper.setPeopleName(user.getRealName());
+							securityPaper.setExamId(Long.parseLong(examScore.getExamId()));
+							securityPaper.setApplyId(examScore.getApplyId());
+							securityPaper.setSource(1);
+							//新增保安员证信息
+							securityPaperService.save(securityPaper);
+
 //						String s1 =
 //							"update blade_user set hold = " + "'" + user.getHold() + "'" +
 //								",securitynumber = " + "'" + user.getSecuritynumber() + "'" +
diff --git a/src/main/java/org/springblade/modules/securityapply/controller/SecurityApplyController.java b/src/main/java/org/springblade/modules/securityapply/controller/SecurityApplyController.java
new file mode 100644
index 0000000..286cf96
--- /dev/null
+++ b/src/main/java/org/springblade/modules/securityapply/controller/SecurityApplyController.java
@@ -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));
+	}
+
+}
diff --git a/src/main/java/org/springblade/modules/securityapply/entity/SecurityApply.java b/src/main/java/org/springblade/modules/securityapply/entity/SecurityApply.java
new file mode 100644
index 0000000..0d16fb7
--- /dev/null
+++ b/src/main/java/org/springblade/modules/securityapply/entity/SecurityApply.java
@@ -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;
+
+}
diff --git a/src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.java b/src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.java
new file mode 100644
index 0000000..b7d8e61
--- /dev/null
+++ b/src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.java
@@ -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);
+}
diff --git a/src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.xml b/src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.xml
new file mode 100644
index 0000000..56866f4
--- /dev/null
+++ b/src/main/java/org/springblade/modules/securityapply/mapper/SecurityApplyMapper.xml
@@ -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')&gt;=#{securityApply.startTime}
+        </if>
+        <if test="securityApply.endTime!=null and securityApply.endTime!=''">
+            and date_format(ssa.create_time,'%Y-%m-%d')&lt;=#{securityApply.endTime}
+        </if>
+        order by ssa.id desc
+    </select>
+
+</mapper>
diff --git a/src/main/java/org/springblade/modules/securityapply/service/SecurityApplyService.java b/src/main/java/org/springblade/modules/securityapply/service/SecurityApplyService.java
new file mode 100644
index 0000000..1cbe53a
--- /dev/null
+++ b/src/main/java/org/springblade/modules/securityapply/service/SecurityApplyService.java
@@ -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);
+}
diff --git a/src/main/java/org/springblade/modules/securityapply/service/impl/SecurityApplyServiceImpl.java b/src/main/java/org/springblade/modules/securityapply/service/impl/SecurityApplyServiceImpl.java
new file mode 100644
index 0000000..7696d2a
--- /dev/null
+++ b/src/main/java/org/springblade/modules/securityapply/service/impl/SecurityApplyServiceImpl.java
@@ -0,0 +1,133 @@
+
+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.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Condition;
+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.springblade.modules.system.service.MyAsyncService;
+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 = " + "'" + 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;
+	}
+}
diff --git a/src/main/java/org/springblade/modules/securityapply/vo/SecurityApplyVO.java b/src/main/java/org/springblade/modules/securityapply/vo/SecurityApplyVO.java
new file mode 100644
index 0000000..4be090b
--- /dev/null
+++ b/src/main/java/org/springblade/modules/securityapply/vo/SecurityApplyVO.java
@@ -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;
+}
diff --git a/src/main/java/org/springblade/modules/securitypaper/entity/SecurityPaper.java b/src/main/java/org/springblade/modules/securitypaper/entity/SecurityPaper.java
index 47007b4..c98e574 100644
--- a/src/main/java/org/springblade/modules/securitypaper/entity/SecurityPaper.java
+++ b/src/main/java/org/springblade/modules/securitypaper/entity/SecurityPaper.java
@@ -69,8 +69,13 @@
 	private Long applyId;
 
 	/**
-	 * 考试id
+	 * 考试id  / 核查申请 id
 	 */
 	@TableField("exam_id")
 	private Long examId;
+
+	/**
+	 * 来源 1:考试通过生成 2:核查申请通过插入 3:其他
+	 */
+	private Integer source;
 }
diff --git a/src/main/java/org/springblade/modules/securitypaper/service/impl/SecurityPaperServiceImpl.java b/src/main/java/org/springblade/modules/securitypaper/service/impl/SecurityPaperServiceImpl.java
index 80b009e..296bb3b 100644
--- a/src/main/java/org/springblade/modules/securitypaper/service/impl/SecurityPaperServiceImpl.java
+++ b/src/main/java/org/springblade/modules/securitypaper/service/impl/SecurityPaperServiceImpl.java
@@ -34,6 +34,7 @@
 			securityPaper.setPeopleName(securityPaperExcel.getRealName());
 			securityPaper.setNumber(securityPaperExcel.getSecuritynumber());
 			securityPaper.setCreateTime(new Date());
+			securityPaper.setSource(3);
 			//新增
 			this.save(securityPaper);
 		});
diff --git a/src/main/java/org/springblade/modules/securitypaper/vo/SecurityPaperVo.java b/src/main/java/org/springblade/modules/securitypaper/vo/SecurityPaperVo.java
index 190f22c..841d1d2 100644
--- a/src/main/java/org/springblade/modules/securitypaper/vo/SecurityPaperVo.java
+++ b/src/main/java/org/springblade/modules/securitypaper/vo/SecurityPaperVo.java
@@ -8,9 +8,10 @@
 /**
  * 保安员证管理vo
  * @author zhongrj
- * @since 2021-12-25
+ * @since 2021-12-15
  */
 @Data
 public class SecurityPaperVo extends SecurityPaper implements Serializable {
 
+
 }
diff --git a/src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java b/src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java
index 5d4848b..55d4293 100644
--- a/src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java
+++ b/src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java
@@ -105,13 +105,13 @@
 				List<ExamSubjectChoicesVO> radioRandomSubjectList = examPaperService.queryRandomSubjectList(radio,25);
 				List<ExamSubjectChoicesVO> checkboxRandomSubjectList = examPaperService.queryRandomSubjectList(checkbox,10);
 				List<ExamSubjectChoicesVO> judgeRandomSubjectList = examPaperService.queryRandomSubjectList(judge,20);
-//				List<ExamSubjectChoicesVO> sortRandomSubjectList = examPaperService.queryRandomSubjectList(sort,5);
+				List<ExamSubjectChoicesVO> sortRandomSubjectList = examPaperService.queryRandomSubjectList(sort,5);
 
 				//合并集合数据
 				choicesVOList.addAll(radioRandomSubjectList);
 				choicesVOList.addAll(checkboxRandomSubjectList);
 				choicesVOList.addAll(judgeRandomSubjectList);
-//				choicesVOList.addAll(sortRandomSubjectList);
+				choicesVOList.addAll(sortRandomSubjectList);
 
 				//取出考试id
 				List<Long> longList = choicesVOList.stream().map(ExamSubjectChoicesVO::getId).collect(Collectors.toList());
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index cacc138..432472f 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -324,26 +324,26 @@
 		}
 
 		//判断是否持证
-//		if (user.getHold().equals("1") && null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
-//			//持证,校验保安证编号是否合法
-//			SecurityPaper securityPaper = new SecurityPaper();
-//			securityPaper.setIdCardNo(user.getCardid());
-//			List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
-//			if (securityPaperList.size()>0){
-//				boolean status = false;
-//				//遍历
-//				for (SecurityPaper paper : securityPaperList) {
-//					if (paper.getNumber().equals(user.getSecuritynumber())){
-//						status = true;
-//					}
-//				}
-//				if (!status){
-//					throw new ServiceException("保安证编号不匹配,请核实!");
-//				}
-//			}else {
-//				throw new ServiceException("保安证编号不匹配,请核实!");
-//			}
-//		}
+		if (user.getHold().equals("1") && null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
+			//持证,校验保安证编号是否合法
+			SecurityPaper securityPaper = new SecurityPaper();
+			securityPaper.setIdCardNo(user.getCardid());
+			List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+			if (securityPaperList.size()>0){
+				boolean status = false;
+				//遍历
+				for (SecurityPaper paper : securityPaperList) {
+					if (paper.getNumber().equals(user.getSecuritynumber())){
+						status = true;
+					}
+				}
+				if (!status){
+					throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+				}
+			}else {
+				throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+			}
+		}
 
 		//如果是离职
 		if (null != user.getStatus()) {
@@ -1208,26 +1208,26 @@
 		}
 
 		//判断是否持证
-//		if (user.getHold().equals("1")){
-//			//持证,校验保安证编号是否合法
-//			SecurityPaper securityPaper = new SecurityPaper();
-//			securityPaper.setIdCardNo(user.getCardid());
-//			List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
-//			if (securityPaperList.size()>0){
-//				boolean status = false;
-//				//遍历
-//				for (SecurityPaper paper : securityPaperList) {
-//					if (paper.getNumber().equals(user.getSecuritynumber())){
-//						status = true;
-//					}
-//				}
-//				if (!status){
-//					throw new ServiceException("保安证编号不匹配,请核实!");
-//				}
-//			}else {
-//				throw new ServiceException("保安证编号不匹配,请核实!");
-//			}
-//		}
+		if (user.getHold().equals("1")){
+			//持证,校验保安证编号是否合法
+			SecurityPaper securityPaper = new SecurityPaper();
+			securityPaper.setIdCardNo(user.getCardid());
+			List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+			if (securityPaperList.size()>0){
+				boolean status = false;
+				//遍历
+				for (SecurityPaper paper : securityPaperList) {
+					if (paper.getNumber().equals(user.getSecuritynumber())){
+						status = true;
+					}
+				}
+				if (!status){
+					throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+				}
+			}else {
+				throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+			}
+		}
 
 		String url = "";
 		if (null != user.getFingerprint() && !user.getFingerprint().equals("")) {
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index b8151f9..89ac7a4 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -50,7 +50,8 @@
   jsonUrl: E:\\anbao\\
   username: root
   password: ZHba@0112
-  qfqkBaseApiUrl : http://192.168.0.198:83
+#  qfqkBaseApiUrl : http://192.168.0.198:83
+  qfqkBaseApiUrl : http://223.82.109.183:2082/api
 
 #第三方登陆
 social:

--
Gitblit v1.9.3