From a9943ed22bd7568924bf98c462139269d873cd8a Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 30 Jun 2022 17:40:45 +0800
Subject: [PATCH] 新增保安员证编号批量导入,保安员新增,从业记录同步sql 修改
---
src/main/java/org/springblade/modules/system/controller/UserController.java | 337 ++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 276 insertions(+), 61 deletions(-)
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 d188787..5fd639c 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -33,16 +33,14 @@
import lombok.AllArgsConstructor;
import net.sf.json.JSONObject;
import org.apache.commons.codec.Charsets;
+import org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.DictCache;
import org.springblade.common.config.FtpConfig;
import org.springblade.common.enums.DictEnum;
import org.springblade.common.excel.CustomCellWriteHeightConfig;
import org.springblade.common.excel.CustomCellWriteWeightConfig;
import org.springblade.common.excel.RowWriteHandler;
-import org.springblade.common.utils.HttpClientUtils;
-import org.springblade.common.utils.HttpReqUtil;
-import org.springblade.common.utils.ImageUtils;
-import org.springblade.common.utils.arg;
+import org.springblade.common.utils.*;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.launch.constant.AppConstant;
@@ -107,11 +105,13 @@
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import static org.springblade.common.config.FtpConfig.*;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
+import static org.springblade.modules.FTP.DataHandler.handlerUserInfo;
/**
* 控制器
@@ -583,7 +583,10 @@
boolean status = userService.updateById(user);
//qfqk 数据推送
if (status) {
- myAsyncService.updateUserByQfqk(user);
+ User user2 = new User();
+ user2.setId(user.getId());
+ //删除
+ myAsyncService.deleteUserByQfqk(user2);
//内网更新
String s1 =
"update blade_user set status = " + "'" + user.getStatus() + "'"
@@ -718,6 +721,129 @@
}
/**
+ * 修改保安员信息
+ */
+ @PostMapping("/updateSecurityInfo")
+ public R updateSecurityInfo(@RequestBody User user) throws Exception {
+ User user1 = userService.getById(user.getId());
+ user.setId(user1.getId());
+ user.setUpdateTime(new Date());
+ user.setPassword(user1.getPassword());
+ //创建更新的字符串
+ StringBuilder builder = new StringBuilder();
+ builder.append("update blade-user set update_time = "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()));
+
+ //姓名
+ if (null != user.getRealName() && !user.getRealName().equals("")) {
+ builder.append(",set real_name = "+user.getRealName());
+ }
+
+ int state = 1;
+ //身份证号码
+ if (null != user.getCardid() && !user.getCardid().equals("")) {
+ //身份证号校验
+ //去除所有空格
+ String cardid = user.getCardid().replaceAll(" ", "");
+ //校验
+ boolean b = IdCardNoUtil.checkIdCardNo(cardid);
+ if(b){
+ user.setCardid(cardid);
+ //账号,密码也修改
+ user.setAccount(user1.getRealName().substring(0,1)+cardid.substring(cardid.length()-4));
+ //获取默认密码配置
+ user.setPassword(user.getCardid().substring(user.getCardid().length() - 6));
+ //加密
+ if (Func.isNotEmpty(user.getPassword())) {
+ user.setPassword(DigestUtil.encrypt(user.getPassword()));
+ }
+ state = 2;
+ builder.append(",set account = "+user.getAccount()+",set cardid = "+user.getCardid()+",set password = "+user.getPassword());
+ }else {
+ throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!");
+ }
+ }
+ //手机号
+ if (null != user.getPhone() && !user.getPhone().equals("")) {
+ builder.append(",set phone = "+user.getPhone());
+ }
+ //指纹url 处理
+ String url = "";
+ if (null != user.getFingerprint() && !user.getFingerprint().equals("")) {
+ if (user.getFingerprint().length() > 100) {
+ //指纹图片上传并返回url
+ String s = uploadBase64String(user);
+ String[] split = s.split(",");
+ user.setFingerprint(split[0]);
+ //内网指纹图片url
+ url = split[1];
+ builder.append(",set fingerprint = "+url);
+ }
+ }
+ //头像
+ if (null != user.getAvatar() && !user.getAvatar().equals("")) {
+ String avatar = FtpConfig.ip +"/"+ user.getAvatar().substring(26);
+ System.out.println("头像上传 url = " + avatar);
+ builder.append(",set fingerprint = "+avatar);
+ }
+
+ //名族
+ if (null != user.getNation() && !user.getNation().equals("")) {
+ builder.append(",set nation = "+user.getNation());
+ }
+ //学历
+ if (null != user.getEducation() && !user.getEducation().equals("")) {
+ builder.append(",set education = "+user.getEducation());
+ }
+ //政治面貌
+ if (null != user.getPoliticaloutlook() && !user.getPoliticaloutlook().equals("")) {
+ builder.append(",set politicaloutlook = "+user.getPoliticaloutlook());
+ }
+ //健康状态
+ if (null != user.getHealstats() && !user.getHealstats().equals("")) {
+ builder.append(",set healstats = "+user.getHealstats());
+ }
+ //身高
+ if (null != user.getHeight() && !user.getHeight().equals("")) {
+ builder.append(",set height = "+user.getHeight());
+ }
+ //联系地址
+ if (null != user.getAddress() && !user.getAddress().equals("")) {
+ builder.append(",set address = "+user.getAddress());
+ }
+ //身份证地址
+ if (null != user.getRegistered() && !user.getRegistered().equals("")) {
+ builder.append(",set registered = "+user.getRegistered());
+ }
+
+ //修改
+// boolean status = userService.updateById(user);
+ boolean status = userService.update(user, Wrappers.<User>update().lambda().in(User::getId,user.getId()));
+
+ if (status) {
+ if (state == 2) {
+ UserDTO userDTO = new UserDTO();
+ userDTO.setAccount(user.getAccount());
+ userDTO.setCardid(user.getCardid());
+ userDTO.setOldCardid(user1.getCardid());
+ userDTO.setPassword(user.getPassword());
+ userDTO.setRealName(user.getRealName());
+ userDTO.setPhone(user.getPhone());
+ userDTO.setSex(user.getSex());
+ userDTO.setAvatar(user.getAvatar());
+ //推送qfqk
+ myAsyncService.updateUserByAccount(userDTO);
+ } else {
+ myAsyncService.updateUserByQfqk(user);
+ }
+ }
+ //拼接最终的sql
+ String sql = builder.append(" where id = " + user.getId()).toString();
+ myAsyncService.FTP(sql);
+ //返回
+ return R.data(200,null,"修改成功!");
+ }
+
+ /**
* 账号修改
* @param user
* @return
@@ -736,15 +862,19 @@
}
//如果不重复,则进行修改操作
//更新用户账户信息
- status = userService.updateById(user);
+ status = userService.update(user, Wrappers.<User>update().lambda().in(User::getId,user.getId()));
+// status = userService.updateById(user);
if (status){
System.out.println("user = " + user);
+ User user2 = userService.getById(user.getId());
UserDTO userDTO = new UserDTO();
userDTO.setAccount(user.getAccount());
- userDTO.setPassword(user.getPassword());
- userDTO.setSecurityId(user.getId().toString());
- userDTO.setPhone(user.getPhone());
- userDTO.setAvatar(user.getAvatar());
+ userDTO.setPassword(user2.getPassword());
+ userDTO.setSecurityId(user2.getId().toString());
+ userDTO.setRealName(user1.getRealName());
+ userDTO.setPhone(user2.getPhone());
+ userDTO.setCardid(user2.getCardid());
+ userDTO.setSex(user1.getSex());
//异步修改群防群控
myAsyncService.updateUserByAccount(userDTO);
}
@@ -859,7 +989,7 @@
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucket).build());
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucket).build());
}
- String newName = "upload/picture/" + UUID.randomUUID().toString().replaceAll("-", "") + ".jpg";
+ String newName = "upload/picture/f" + UUID.randomUUID().toString().replaceAll("-", "") + ".jpg";
InputStream in = new ByteArrayInputStream(b);
String[] split = newName.split("/");
//创建头部信息
@@ -957,7 +1087,7 @@
User user = userService.getById(id);
User user1 = new User();
user1.setId(user.getId());
- user1.setCardid(user.getCardid());
+// user1.setCardid(user.getCardid());
user1.setIsDeleted(1);
//qfqk 同步
myAsyncService.deleteUserByQfqk(user1);
@@ -1523,7 +1653,7 @@
"values(" + "'" + experience.getId() + "'" + "," +
"'" + experience.getName() + "'" + "," +
"'" + experience.getPost() + "'" + "," +
- "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
+ "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
"," + "'" + experience.getCardid() + "'" +
"," + "'" + experience.getCompanyname() + "'" +
"," + "'" + experience.getSecurityid() + "'"
@@ -1592,7 +1722,7 @@
User user1 = Objects.requireNonNull(BeanUtil.copy(user,User.class));
//头像
if (null != user.getAvatar() && !user.getAvatar().equals("")) {
- user1.setAvatar(FtpConfig.ip + user.getAvatar().substring(26));
+ user1.setAvatar(FtpConfig.ip +"/"+ user.getAvatar().substring(26));
}
//指纹
String url = "";
@@ -1618,49 +1748,134 @@
map.put("user",user1);
myAsyncService.FTPObject(map);
- int count = 0;
- int flag = 1;
- Result result = new Result();
- //调用ftp获取返回数据
- while (true){
- System.out.println("用户新增开始接收消息......................");
- Thread.sleep(1000);
- //调用ftp获取返回数据
- result = Monitor.isFTPFileExist(uuid);
- //如果返回true,就退处
- if (result.getCode()==200){
- flag = 1;
- break;
- }else if (result.getCode()==201){
- flag = 2;
- break;
- }else if (result.getCode()==202){
- flag = 3;
- break;
- }else if (result.getCode()==203){
- flag = 4;
- break;
- }else{
- //计数
- count++;
- //如果超过60s 没有读取到,则退出
- if (count == 60) {
- break;
- }
- }
- }
- if (flag==1 || flag==2) {
- //返回
- return R.data(200, null, "新增成功!");
- }else if (flag==3){
- throw new ServiceException(result.getMsg());
- }else if (flag==4){
-// return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
- return R.data(201, null, "保安证编号不匹配,请核实!");
- }else{
- //返回
- return R.data(400, null, "新增失败!");
- }
+// int count = 0;
+// int flag = 1;
+// Result result0 = new Result();
+// //调用ftp获取返回数据
+// while (true){
+// System.out.println("用户新增开始接收消息......................");
+// Thread.sleep(2000);
+// //调用ftp获取返回数据
+// result0 = Monitor.isFTPFileExist(uuid);
+// System.out.println("result0 ftp 返回结果 = " + result0);
+// //如果返回true,就退处
+// if (result0.getCode()==200){
+// break;
+// }else{
+// //计数
+// count++;
+// //如果超过60s 没有读取到,则退出
+// if (count == 20) {
+// break;
+// }
+// }
+// }
+//
+// //将不能导入的保安员账号存起来
+// List<String> errorList = new ArrayList<>();
+// //保安员证编号不符的保安员信息存入集合
+// List<String> securityInvalidList = new ArrayList<>();
+// //导入状态,默认为true ,如果有一个出现问题则为 false
+// AtomicBoolean status = new AtomicBoolean(true);
+// AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
+// if (null!=result0){
+// Result result = result0.getData().get(0);
+// //用户数处理
+// User users = handlerUserInfo(uuid);
+// System.out.println("用户数据处理---------------");
+// System.out.println("用户数据 = " + users);
+// //判断结果
+// if (result.getCode()==200){
+// //新增
+// users.setId(result.getUserId());
+// users.setStatus(1);
+// //插入数据库
+// boolean save = userService.save(users);
+// if (save){
+// //异步同步到群防群控
+// myAsyncService.qfqkUserSave(users);
+// }
+// }else if (result.getCode()==201) {
+// //修改
+// users.setId(result.getUserId());
+// //先查询当前库是否有改用户?
+// User user2 = userService.getById(result.getUserId());
+// if (null!=user2) {
+// //数据修改
+// boolean b = userService.updateById(users);
+// if (b) {
+// //异步同步到群防群控
+// myAsyncService.updateUserByQfqk(users);
+// }
+// }else {
+// //新增
+// boolean save = userService.save(users);
+// if (save){
+// //异步同步到群防群控
+// myAsyncService.qfqkUserSave(users);
+// }
+// }
+// }else if (result.getCode()==203){
+// //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 用户为新增
+// //新增
+// users.setId(result.getUserId());
+// //插入数据库
+// boolean save = userService.save(users);
+// if (save) {
+// //异步同步到群防群控
+// myAsyncService.qfqkUserSave(users);
+// }
+// securityInvalidStatus.set(false);
+// //保安证编号不匹配
+// securityInvalidList.add(user.getCardid());
+// }else if (result.getCode()==204){
+// //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况
+// users.setId(result.getUserId());
+// //先查询当前库是否有改用户?
+// User user2 = userService.getById(result.getUserId());
+// //判断
+// if (null!=user2) {
+// //修改
+// //数据修改
+// boolean b = userService.updateById(users);
+// if (b){
+// //异步同步到群防群控
+// myAsyncService.updateUserByQfqk(users);
+// }
+// }else {
+// //新增
+// boolean save = userService.save(users);
+// if (save){
+// //异步同步到群防群控
+// myAsyncService.qfqkUserSave(users);
+// }
+// }
+// securityInvalidStatus.set(false);
+// //保安证编号不匹配
+// securityInvalidList.add(user.getCardid());
+// }else {
+// status.set(false);
+// //已在其他单位存在
+// errorList.add(user.getCardid());
+// }
+// }
+
+ //如果所有数据导入有一个异常
+// StringBuilder errorBuilder = new StringBuilder();
+// if (!status.get()){
+// String errorAccount = StringUtils.join(errorList, "\\\n");
+// errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
+// }
+// //抛出异常
+// if (errorBuilder.length()>0){
+// throw new org.springblade.core.log.exception.ServiceException(errorBuilder.toString());
+// }
+//
+// if (!securityInvalidStatus.get()){
+//// return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+// return R.data(201, null, "保安证编号不匹配,请核实!");
+// }
+ return R.data(200, null, "新增成功!");
}
/**
@@ -1729,8 +1944,8 @@
//内网同步
String s = "insert into sys_experience(id,name,entryTime,departureTime,leaving,cardId,companyname,securityId) " +
- "values(" + "'" + experience.getId() + "'" + "," +
- "'" + experience.getName() + "'" + "," +
+ "values(" + "'" + experience.getId() + "'" +
+ "," + "'" + experience.getName() + "'" +
"," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
"," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getDeparturetime()) + "'" +
"," + "'" + experience.getLeaving() + "'" +
@@ -1794,7 +2009,7 @@
*/
@GetMapping("export-security-info")
public void exportSecurityInfo(HttpServletResponse response, UserVO user) throws IOException {
- List<SecurityExcel> list = userService.exportSecurityInfo(user);
+ List<ExportSecurityExcel> list = userService.exportSecurityInfo(user);
String fileName = null;
try {
response.setContentType("application/vnd.ms-excel");
@@ -1802,7 +2017,7 @@
fileName = URLEncoder.encode("保安员数据导出" + DateUtil.time(), Charsets.UTF_8.name());
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
//修改单元格格式为文本格式
- EasyExcel.write(response.getOutputStream(), SecurityExcel.class).sheet("保安员数据表").registerWriteHandler(new RowWriteHandler()).doWrite(list);
+ EasyExcel.write(response.getOutputStream(), ExportSecurityExcel.class).sheet("保安员数据表").registerWriteHandler(new RowWriteHandler()).doWrite(list);
} catch (Throwable var6) {
throw var6;
}
--
Gitblit v1.9.3