From 089984eda48375109083903548770dd92b2f8465 Mon Sep 17 00:00:00 2001
From: 钟日健 <5689795+arsn@user.noreply.gitee.com>
Date: Wed, 27 Apr 2022 15:19:14 +0800
Subject: [PATCH] 新增保安员编号校验,身份证读卡器校验
---
src/main/java/org/springblade/modules/FTP/DataHanlder.java | 216 +++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 196 insertions(+), 20 deletions(-)
diff --git a/src/main/java/org/springblade/modules/FTP/DataHanlder.java b/src/main/java/org/springblade/modules/FTP/DataHanlder.java
index 8f96acb..cc6ab6b 100644
--- a/src/main/java/org/springblade/modules/FTP/DataHanlder.java
+++ b/src/main/java/org/springblade/modules/FTP/DataHanlder.java
@@ -5,16 +5,22 @@
import liquibase.pro.packaged.M;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
+import org.springblade.modules.dispatcher.entity.Dispatcher;
+import org.springblade.modules.dispatcher.service.IDispatcherService;
+import org.springblade.modules.experience.entity.Experience;
+import org.springblade.modules.experience.service.IExperienceService;
+import org.springblade.modules.securitypaper.entity.SecurityPaper;
+import org.springblade.modules.securitypaper.service.SecurityPaperService;
+import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
@Component
public class DataHanlder {
@@ -25,6 +31,21 @@
//声明对象
private static DataHanlder hanlder;
+ @Autowired
+ private SecurityPaperService securityPaperService;
+
+ @Autowired
+ private IExperienceService experienceService;
+
+ @Autowired
+ private IDispatcherService dispatcherService;
+
+ @Autowired
+ private MyAsyncService myAsyncService;
+
+ @Autowired
+ private IDeptService iDeptService;
+
/**
* 初始化
*/
@@ -32,6 +53,11 @@
public void init(){
hanlder = this;
hanlder.userService = this.userService;
+ hanlder.securityPaperService = this.securityPaperService;
+ hanlder.experienceService = this.experienceService;
+ hanlder.myAsyncService = this.myAsyncService;
+ hanlder.dispatcherService = this.dispatcherService;
+ hanlder.iDeptService = this.iDeptService;
}
@@ -56,22 +82,45 @@
Result result1 = new Result();
if (result.getCode()==200){
user1.setReasonForLeav("");
+ //校验保安员证编号
+ Result result2 = hanlder.checkSecurityNumber(user1);
//去新增
- hanlder.userService.save(user1);
- //设置返回结果
- result1.setCode(200);
- result1.setUserId(user1.getId());
- result1.setMsg("新增成功");
+ hanlder.userService.save(result2.getUser());
+
+ if (result2.getCode()==200){
+ //设置返回结果
+ result1.setCode(200);
+ result1.setUserId(user1.getId());
+ result1.setMsg("新增成功");
+ }else {
+ //设置返回结果
+ result1.setCode(203);
+ result1.setUserId(user1.getId());
+ result1.setMsg(result2.getMsg());
+ }
+
}else if (result.getCode()==201){
//去修改
user1.setReasonForLeav("");
User data = result.getUser();
user1.setId(data.getId());
- hanlder.userService.updateById(user1);
+ //校验保安员证编号
+ Result result2 = hanlder.checkSecurityNumber(user1);
+ User user2 = result2.getUser();
+ user2.setId(data.getId());
+
+ hanlder.userService.updateById(user2);
//设置返回结果
- result1.setCode(201);
- result1.setUserId(user1.getId());
- result1.setMsg("修改成功");
+ if (result2.getCode()==200) {
+ result1.setCode(201);
+ result1.setUserId(user1.getId());
+ result1.setMsg("修改成功");
+ }else {
+ //设置返回结果
+ result1.setCode(204);
+ result1.setUserId(user1.getId());
+ result1.setMsg(result2.getMsg());
+ }
}else {
//不新增,不修改
//设置返回结果
@@ -79,7 +128,6 @@
result1.setUserId(null);
result1.setMsg(result.getMsg());
}
- System.out.println("result1 = " + result1);
Map<String, Object> map1 = new HashMap<>(1);
map1.put(uuid,result1);
//向外网发送数据
@@ -91,7 +139,7 @@
* 用户校验
* @param user
*/
- private static Result userCheckOut(User user) {
+ public static Result userCheckOut(User user) {
//1. 校验是否有重复导入
User user1 = new User();
user1.setCardid(user.getCardid());
@@ -101,18 +149,146 @@
if (null!=one){
//判断单位是否一致
if (!one.getDeptId().equals(user.getDeptId())){
+ //判断是否为机读身份证录入
+ if (null!=user.getCell() && !user.getCell().equals("")){
+ if (user.getCell().equals("2")){
+ // cell 2为机读录入
+ //先将原有人员离职
+ one.setStatus(2);
+ one.setUpdateTime(new Date());
+ //离职
+ hanlder.userService.updateById(one);
+ //内网同步
+ String s1 = "update blade_user set status = " + one.getStatus() +
+ ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(one.getUpdateTime()) + "'" +
+ " where id = " + "'" + one.getId() + "'";
+ hanlder.myAsyncService.FTP(s1);
+
+ //人员离职后修改派遣记录,修改从业记录
+ hanlder.updateUserDispatcherExp(one);
+ }
+ }
return new Result(400,null,user.getRealName() + "已在其他单位导入");
}else {
return new Result(201,"已在本单位导入",one);
}
}
-
- //2.保安证编号校验
-
-
-
return new Result(200,null,"");
}
+ /**
+ * 修改派遣记录,修改从业记录
+ *
+ * @param user
+ */
+ private void updateUserDispatcherExp(User user) {
+ //修改派遣状态
+ user.setDispatch("1");
+ //同时将派遣记录中的派遣状态修改
+ //查询派遣记录(还在派遣中的)
+ Dispatcher dispatcher = new Dispatcher();
+ dispatcher.setUserIds(user.getId().toString());
+ dispatcher.setStatus(0);
+ List<Dispatcher> dispatcherList = dispatcherService.list(Condition.getQueryWrapper(dispatcher));
+ if (dispatcherList.size() > 0) {
+ dispatcherList.forEach(dispatcher1 -> {
+ dispatcher1.setStatus(1);
+ dispatcher1.setUpdateTime(new Date());
+ String s1 =
+ "update sys_dispatcher set status = " + "'" + dispatcher1.getStatus() + "'"
+ + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dispatcher1.getUpdateTime()) + "'"
+ + " " + "where id = " + "'" + dispatcher1.getId() + "'";
+ myAsyncService.FTP(s1);
+ });
+ }
+
+ //查询当前用户是否有从业记录,没有的话新增,有就更新
+ //根据公司名查询单位
+ Dept dept = iDeptService.getById(user.getDeptId());
+ Experience experience = new Experience();
+ experience.setCompanyname(dept.getDeptName());
+ //按id降序
+ List<Experience> list = experienceService.list(Condition.getQueryWrapper(experience).orderByDesc("id"));
+ if (list.size() > 0) {
+ //如果有多条取第一条更新
+ Experience experience1 = list.get(0);
+ //设置离职时间
+ experience1.setDeparturetime(new Date());
+ //更新从业记录信息
+ experienceService.updateById(experience1);
+ //数据同步
+ String s1 =
+ "update sys_experience set departureTime = " + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience1.getDeparturetime()) + "'"
+ + " " + "where id = " + "'" + experience1.getId() + "'";
+ myAsyncService.FTP(s1);
+ } else {
+ //新增
+ if (null != user.getRtime()) {
+ experience.setEntrytime(user.getRtime());
+ } else {
+ experience.setEntrytime(new Date());
+ }
+ experience.setDeparturetime(new Date());
+ experience.setName(user.getRealName());
+ if (null != user.getReasonForLeav() && !user.getReasonForLeav().equals("")) {
+ experience.setLeaving(user.getReasonForLeav());
+ }
+ experience.setCardid(user.getCardid());
+ experience.setSecurityid(user.getId().toString());
+ //新增
+ experienceService.save(experience);
+
+ //内网同步
+ String s = "insert into sys_experience(id,name,entryTime,departureTime,leaving,cardId,companyname,securityId) " +
+ "values(" + "'" + experience.getId() + "'" + "," +
+ "'" + experience.getName() + "'" + "," +
+ "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
+ "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getDeparturetime()) + "'" +
+ "," + "'" + experience.getLeaving() + "'" +
+ "," + "'" + experience.getCardid() + "'" +
+ "," + "'" + experience.getCompanyname() + "'" +
+ "," + "'" + experience.getSecurityid() + "'"
+ + ")";
+ myAsyncService.FTP(s);
+ }
+ }
+
+ /**
+ * 保安员证编号校验
+ * @param user
+ * @return
+ */
+ public Result checkSecurityNumber(User user){
+ //2.保安证编号校验
+ //判断是否持证
+ boolean states = false;
+ if (user.getHold().equals("1") && null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
+ //持证,校验保安证编号是否合法
+ SecurityPaper securityPaper = new SecurityPaper();
+ securityPaper.setIdCardNo(user.getCardid());
+ List<SecurityPaper> securityPaperList = hanlder.securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+ if (securityPaperList.size()>0){
+ //遍历
+ for (SecurityPaper paper : securityPaperList) {
+ if (paper.getNumber().equals(user.getSecuritynumber())){
+ states = true;
+ }
+ }
+ if (!states){
+ user.setHold("2");
+ }
+ }else {
+ states = false;
+ user.setHold("2");
+ }
+ }
+
+ if (!states) {
+ return new Result(201,null,"保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!",user);
+ }
+
+ return new Result(200,null,"",user);
+ }
+
}
--
Gitblit v1.9.3