From 644ed3e30bbee9a417dfbe649f2a72df25a7efb1 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 18 May 2022 10:10:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/org/springblade/modules/FTP/DataHanlder.java |  386 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 361 insertions(+), 25 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..0b72586 100644
--- a/src/main/java/org/springblade/modules/FTP/DataHanlder.java
+++ b/src/main/java/org/springblade/modules/FTP/DataHanlder.java
@@ -1,20 +1,23 @@
 package org.springblade.modules.FTP;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import liquibase.pro.packaged.M;
+import org.springblade.common.utils.DesensitizedUtil;
 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 +28,24 @@
 	//声明对象
 	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,8 +53,154 @@
 	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;
 	}
 
+	/**
+	 * 获取保安员证编号
+	 * @param json
+	 */
+	public static void handlerSecurityNumerBit(String json) {
+		Map map = JSON.parseObject(json, Map.class);
+		//取出 key(uuid)
+		String key = map.keySet().toArray()[0].toString();
+		//编号前缀
+		String pre = map.get(key).toString();
+		Integer max = hanlder.userService.getSecurityPaperCount(pre);
+		Result result = new Result(200, null, max.toString(),null);
+		Map<String, Object> map1 = new HashMap<>(1);
+		map1.put(key, result);
+		//向外网发送数据
+		FtpUtil.objectFileUploadSecurityNumberCount(map1);
+	}
+
+	/**
+	 * 培训报名数据处理
+	 * @param json
+	 */
+	public static void handlerListTrain(String json) {
+		Map map = JSON.parseObject(json, Map.class);
+		//取出 key(uuid)
+		String key = map.keySet().toArray()[0].toString();
+		Object users = map.get(key);
+		List<String > userList = JSON.parseArray(users.toString(), String.class);
+		//遍历
+		if (userList.size()>0) {
+			List<Result> resultList = new ArrayList<>();
+			//开始遍历
+			for (String userId : userList) {
+				//校验用户年龄
+				int age = hanlder.userService.getUserAge(Long.parseLong(userId));
+				//创建返回对象
+				Result result1 = new Result();
+				result1.setUserId(Long.parseLong(userId));
+				if (age>=18 && age<=60) {
+					//年龄符合要求
+					result1.setCode(200);
+				} else {
+					//年龄不符合要求
+					result1.setCode(201);
+				}
+				//存入结果集
+				resultList.add(result1);
+			}
+			Result result = new Result(200, "", resultList);
+			Map<String, Object> map1 = new HashMap<>(1);
+			map1.put(key, result);
+			//向外网发送数据
+			FtpUtil.objectFileUploadListTrain(map1);
+		}
+	}
+
+	/**
+	 * 数据处理(集合)
+	 * @param json
+	 */
+	public static void handlerList(String json) {
+		Map map = JSON.parseObject(json, Map.class);
+		//取出 key(uuid)
+		String key = map.keySet().toArray()[0].toString();
+		Object users = map.get(key);
+		List<User> userList = JSON.parseArray(users.toString(), User.class);
+		//遍历
+		if (userList.size()>0) {
+			List<Result> resultList = new ArrayList<>();
+			//创建更新用户集合对象
+			List<User> updateUser = new ArrayList<>();
+			//开始遍历
+			for (User user : userList) {
+				//取出 uuid
+				String uuid = user.getReasonForLeav();
+				//用户数据校验,是否已导入(本单位或其他单位)
+				Result result = userCheckOut(user);
+				//创建返回对象
+				Result result1 = new Result();
+				if (result.getCode() == 200) {
+					user.setReasonForLeav("");
+					//校验保安员证编号
+					Result result2 = hanlder.checkSecurityNumber(user);
+					User user1 = result2.getUser();
+					//去新增
+					boolean save = hanlder.userService.save(user1);
+					if (save) {
+						//异步新增从业记录
+						hanlder.myAsyncService.insertExperience(user1);
+						//异步审查
+						hanlder.myAsyncService.checkUserExamineByCardNo(user1);
+					}
+
+					if (result2.getCode() == 200) {
+						//设置返回结果
+						result1.setCode(200);
+						result1.setUserId(user1.getId());
+					} else {
+						//设置返回结果
+						result1.setCode(203);
+						result1.setUserId(user1.getId());
+					}
+				} else if (result.getCode() == 201) {
+					//去修改
+					user.setReasonForLeav("");
+					User data = result.getUser();
+					user.setId(data.getId());
+					user.setCreateTime(data.getCreateTime());
+					//校验保安员证编号
+					Result result2 = hanlder.checkSecurityNumber(user);
+					User user2 = result2.getUser();
+					user2.setId(data.getId());
+
+					hanlder.userService.updateById(user2);
+					//设置返回结果
+					if (result2.getCode() == 200) {
+						result1.setCode(201);
+						result1.setUserId(user.getId());
+					} else {
+						//设置返回结果
+						result1.setCode(203);
+						result1.setUserId(user.getId());
+					}
+				} else {
+					//不新增,不修改
+					//设置返回结果,以在其他单位存在
+					result1.setCode(202);
+					result1.setUserId(null);
+				}
+				result1.setMsg(uuid);
+				//存入结果集
+				resultList.add(result1);
+			}
+			Result result = new Result(200, "", resultList);
+			Map<String, Object> map1 = new HashMap<>(1);
+			map1.put(key, result);
+			System.out.println("map1 = " + map1);
+			//向外网发送数据
+			FtpUtil.objectFileUploadList(map1);
+		}
+	}
 
 	/**
 	 * 数据处理
@@ -47,31 +214,64 @@
 			Map map = JSON.parseObject(s, Map.class);
 			Object user = map.get("user");
 			User user1 = JSON.parseObject(user.toString(), User.class);
+			System.out.println("user1 = " + user1);
+
 			//获取 uuid
 			String uuid = user1.getReasonForLeav();
 			//用户数据校验
 			Result result = userCheckOut(user1);
-			System.out.println("result = " + result);
 			//创建返回对象
 			Result result1 = new Result();
 			if (result.getCode()==200){
 				user1.setReasonForLeav("");
+				//校验保安员证编号
+				Result result2 = hanlder.checkSecurityNumber(user1);
+				User user2 = result2.getUser();
 				//去新增
-				hanlder.userService.save(user1);
-				//设置返回结果
-				result1.setCode(200);
-				result1.setUserId(user1.getId());
-				result1.setMsg("新增成功");
+				boolean save = hanlder.userService.save(user2);
+				if (save){
+					//异步新增从业记录
+					hanlder.myAsyncService.insertExperience(user2);
+					//异步审查
+					hanlder.myAsyncService.checkUserExamineByCardNo(user2);
+				}
+
+				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);
+				user1.setCreateTime(data.getCreateTime());
+
+				//校验保安员证编号
+				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,9 +279,9 @@
 				result1.setUserId(null);
 				result1.setMsg(result.getMsg());
 			}
-			System.out.println("result1 = " + result1);
 			Map<String, Object> map1 = new HashMap<>(1);
 			map1.put(uuid,result1);
+			System.out.println("用户新增:开始向外网推送数据............");
 			//向外网发送数据
 			FtpUtil.objectFileUpload(map1);
 		}
@@ -91,7 +291,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 +301,154 @@
 		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 cardid = DesensitizedUtil.desensitizedIdNumberBy4(user.getCardid());
+
+			//内网同步
+			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() + "'" +
+				"," + "'" + cardid + "'" +
+				"," + "'" + experience.getCompanyname() + "'" +
+				"," + "'" + experience.getSecurityid() + "'"
+				+ ")";
+			myAsyncService.FTP(s);
+		}
+	}
+
+	/**
+	 * 保安员证编号校验
+	 * @param user
+	 * @return
+	 */
+	public Result checkSecurityNumber(User user){
+		//2.保安证编号校验
+		//判断是否持证
+		boolean states = false;
+		if (null!= user.getHold()
+			&& 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");
+			}
+		}else {
+			states = true;
+		}
+
+		if (!states) {
+			return new Result(201,null,"保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!",user);
+		}
+
+		return new Result(200,null,"",user);
+	}
+
 
 }

--
Gitblit v1.9.3