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