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