From dacafac0449f8df3ef7637a7ed05fa6270964f16 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Fri, 29 Apr 2022 16:19:45 +0800
Subject: [PATCH] ftp 修改,新增保安员培训报名校验,新增押运员批量导入校验,批量导入保安员优化
---
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml | 2
src/main/java/org/springblade/modules/FTP/FtpUtil.java | 19 +
src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java | 99 ++++-
src/main/java/org/springblade/modules/FTP/DataHandler.java | 4
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java | 761 ++++++++++++++++++++++++++++----------------
src/main/java/org/springblade/modules/system/service/MyAsyncService.java | 8
src/main/java/org/springblade/modules/FTP/Result.java | 8
src/main/java/org/springblade/modules/FTP/Monitor.java | 77 ++++
src/main/java/org/springblade/modules/system/controller/UserController.java | 1
9 files changed, 669 insertions(+), 310 deletions(-)
diff --git a/src/main/java/org/springblade/modules/FTP/DataHandler.java b/src/main/java/org/springblade/modules/FTP/DataHandler.java
index b9631a8..e9320d1 100644
--- a/src/main/java/org/springblade/modules/FTP/DataHandler.java
+++ b/src/main/java/org/springblade/modules/FTP/DataHandler.java
@@ -51,6 +51,7 @@
*/
public static Result handlerList(String json, String uuid) {
Map map = JSON.parseObject(json, Map.class);
+ System.out.println("map = " + map);
//获取结果
Object o = map.get(uuid);
System.out.println("o = " + o);
@@ -164,6 +165,9 @@
user1.setNativeplace("");
user1.setEducation("");
user1.setPoliticaloutlook("");
+ user1.setMyPicture("");
+ user1.setHeight("");
+ user1.setRtime(null);
//返回
return user1;
}
diff --git a/src/main/java/org/springblade/modules/FTP/FtpUtil.java b/src/main/java/org/springblade/modules/FTP/FtpUtil.java
index 0ff9d5e..aa2bd4f 100644
--- a/src/main/java/org/springblade/modules/FTP/FtpUtil.java
+++ b/src/main/java/org/springblade/modules/FTP/FtpUtil.java
@@ -340,4 +340,23 @@
FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, "/", "l"+response1+".json", in1);
MysqlCenlint.deletess("l"+response1+".json");
}
+
+ /**
+ * 报名信息查验
+ * @param map
+ */
+ public static void objectFileUploadListUserId(Map<String, Object> map){
+ String json1 = JSON.toJSONString(map);
+ System.out.println("json1 = " + json1);
+ String response1 = String.valueOf((new Date()).getTime());
+ OutJson.createJsonFile(json1, localPath, "t"+response1);
+ FileInputStream in1 = null;
+ try {
+ in1 = new FileInputStream(new File(localPath + "t"+response1+".json"));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, "/", "t"+response1+".json", in1);
+ MysqlCenlint.deletess("t"+response1+".json");
+ }
}
diff --git a/src/main/java/org/springblade/modules/FTP/Monitor.java b/src/main/java/org/springblade/modules/FTP/Monitor.java
index 51be943..866a150 100644
--- a/src/main/java/org/springblade/modules/FTP/Monitor.java
+++ b/src/main/java/org/springblade/modules/FTP/Monitor.java
@@ -108,7 +108,7 @@
}
/**
- * 读取文件(对象)
+ * 读取文件(对象)用户批量操作返回
* @param uuid 随机数
* @return
*/
@@ -183,6 +183,81 @@
}
/**
+ * 读取文件(对象)报名返回
+ * @param uuid 随机数
+ * @return
+ */
+ public static Result getFtpDataByUuidListTrain(String uuid) {
+ //创建 ftp 对象
+ FTPClient ftp = new FTPClient();
+ boolean flag = false;
+ try {
+ //连接
+ ftp.connect(ftpHost, ftpPort);
+ // 登陆
+ ftp.login(ftpUserName, ftpPassword);
+ // 检验登陆操作的返回码是否正确
+ if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
+ ftp.disconnect();
+ return new Result(400,null,"ftp 连接失败",null);
+ }
+
+ ftp.enterLocalActiveMode();
+
+ // 设置文件类型为二进制,与ASCII有区别
+ ftp.setFileType(FTP.BINARY_FILE_TYPE);
+
+ // 设置编码格式
+ ftp.setControlEncoding("GBK");
+
+ // 检验文件是否存在
+ ftp.changeWorkingDirectory(ftpPath);
+ FTPFile[] files = ftp.listFiles();
+ if (files.length==0){
+ return new Result(400,null,"未读取到文件",null);
+ } else {
+ for (FTPFile file : files){
+ String fileName = file.getName();
+ InputStream is = ftp.retrieveFileStream(new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
+ String substring1 = fileName.substring(0, 2);
+ if (substring1.equals("nt")){
+ //把文件下载到本地
+ FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);
+ // 解析数据
+ String s = OutJson.TestJson(fileName);
+ //数据处理
+ Result result = DataHandler.handlerList(s,uuid);
+ //匹配上了删除文件
+ if (result.getCode()==200) {
+ //删除本地文件
+ MysqlCenlint.deletess(fileName);
+ //删除 ftp 文件
+ FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, fileName);
+ //返回
+ return result;
+ }
+ is.close();
+ ftp.completePendingCommand();
+ }
+ }
+ return new Result(400,null,"未读取到对应的文件",null);
+ }
+ } catch (Exception e) {
+ System.out.println("ftp连接失败");
+ e.printStackTrace();
+ } finally {
+ if (ftp != null) {
+ try {
+ ftp.disconnect();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return new Result(400,null,"失败",null);
+ }
+
+ /**
* 读取内外推送的文件,每30秒读取一次
* @return
*/
diff --git a/src/main/java/org/springblade/modules/FTP/Result.java b/src/main/java/org/springblade/modules/FTP/Result.java
index 9bac2c0..5742483 100644
--- a/src/main/java/org/springblade/modules/FTP/Result.java
+++ b/src/main/java/org/springblade/modules/FTP/Result.java
@@ -21,20 +21,12 @@
private User user;
- private Result result;
-
private List<Result> data;
public Result(Integer code, String msg, List<Result> data) {
this.code = code;
this.msg = msg;
this.data = data;
- }
-
- public Result(Integer code, String msg, Result result) {
- this.code = code;
- this.msg = msg;
- this.result = result;
}
public Result() {
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 92a2f75..349c544 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -1133,6 +1133,7 @@
@GetMapping("/security-apply-tree")
public R<List<TreeNode>> securityApplyTree(UserVO user) {
List<TreeNode> tree = userService.getSecurityApplyTree(user);
+ System.out.println("tree = " + tree);
return R.data(tree);
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
index c8aee5a..176b471 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -555,7 +555,7 @@
select #{user.deptId} as id,
'全部' as name,
0 as parentId
- from blade_user
+ from blade_user limit 1
)
union all
diff --git a/src/main/java/org/springblade/modules/system/service/MyAsyncService.java b/src/main/java/org/springblade/modules/system/service/MyAsyncService.java
index ea7a260..3456245 100644
--- a/src/main/java/org/springblade/modules/system/service/MyAsyncService.java
+++ b/src/main/java/org/springblade/modules/system/service/MyAsyncService.java
@@ -175,4 +175,12 @@
public void FTPObjectList(Map<String, Object> map) {
FtpUtil.objectFileUploadList(map);
}
+
+ /**
+ * 存入集合
+ * @param map
+ */
+ public void FTPObjectListUserId(Map<String, Object> map) {
+ FtpUtil.objectFileUploadListUserId(map);
+ }
}
diff --git a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
index a189068..59109f9 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -1385,12 +1385,13 @@
//如果返回true,就退处
if (result.getCode() == 200) {
break;
- }else {
- count++;
- if (count == 30) {
- break;
- }
}
+// else {
+// count++;
+// if (count == 60) {
+// break;
+// }
+// }
}
}
@@ -1401,7 +1402,10 @@
for (Result result1 : data1) {
// 取出 Msg ,此 msg 存的对应的 uuid
String uuid = result1.getMsg();
- // 从redis 中获取对应的用户信息
+ //从redis 中获取用户数据
+ Object o1 = redisTemplate.opsForValue().get(uuid);
+ User user0 = JSON.parseObject(o1.toString(), User.class);
+ // 从redis 中获取对应的用户信息,脱敏处理过
User user = handlerUserInfo(uuid);
if (result1.getCode()==200){
user.setId(result1.getUserId());
@@ -1419,22 +1423,22 @@
if (result1.getCode()==202){
status.set(false);
//已在其他单位存在
- errorList.add(user.getCardid());
+ errorList.add(user0.getCardid());
}
if (result1.getCode()==203){
securityInvalidStatus.set(false);
//保安证编号不匹配
- securityInvalidList.add(user.getCardid());
+ securityInvalidList.add(user0.getCardid());
}
}
- //批量插入
- if (addList.size()>0){
- baseMapper.batchUserList(addList);
- }
- //批量更新
- if (updateList.size()>0){
- baseMapper.batchUpdateUserList(updateList);
- }
+// //批量插入
+// if (addList.size()>0){
+// baseMapper.batchUserList(addList);
+// }
+// //批量更新
+// if (updateList.size()>0){
+// baseMapper.batchUpdateUserList(updateList);
+// }
}
}
@@ -1488,6 +1492,10 @@
user1.setNativeplace("");
user1.setEducation("");
user1.setPoliticaloutlook("");
+ user1.setMyPicture("");
+ user1.setHeight("");
+ user1.setRtime(null);
+ user1.setGuncode("");
//返回
return user1;
}
@@ -1500,19 +1508,22 @@
*/
@Override
public void importSecurityYy(List<SecurityYyExcel> data, Boolean isCovered, String deptId) {
+ //uuidList
+ List<String> uuidList = new ArrayList<>();
//将不能导入的保安员账号存起来
List<String> errorList = new ArrayList<>();
- //将需要新增的保安员信息存入集合
+ //年龄不符的保安员信息存入集合
List<String> ageErrorList = new ArrayList<>();
//保安员证编号不符的保安员信息存入集合
List<String> securityInvalidList = new ArrayList<>();
- //将需要更新的保安员信息存入集合
- List<User> updateList = new ArrayList<>();
+ //需要推送内网的保安员信息集合
+ List<User> userList = new ArrayList<>();
//导入状态,默认为true ,如果有一个出现问题则为 false
AtomicBoolean status = new AtomicBoolean(true);
AtomicBoolean agetStatus = new AtomicBoolean(true);
AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
- data.forEach(userExcel -> {
+ //遍历
+ for (SecurityYyExcel userExcel : data) {
User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
//设置部门id
String deptIds = userDeptService.selectIn(user.getDeptId());
@@ -1528,7 +1539,7 @@
throw new ServiceException("导入失败!公司名:["+user.getDeptId()+"]不存在!");
}
- //身份证号码校验
+ //身份证校验
if (null==user.getCardid() || user.getCardid().equals("")){
throw new ServiceException("导入失败!身份证号码不能为空!");
}
@@ -1546,269 +1557,130 @@
}else {
agetStatus.set(false);
ageErrorList.add(user.getCardid());
-// throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!");
- //forEach 只能使用 return 跳出本次循环
- return;
+ continue;
}
}
- //判断当前用户是否已在本单位,如果是的更新数据
- User user1 = new User();
- user1.setAccount(user.getCardid());
- user1.setIsDeleted(0);
- user1.setStatus(1);
- user1.setGuncode(user.getGuncode());
- User user2 = this.getOne(Condition.getQueryWrapper(user1));
- if (null==user2){
- //用户不存在,去新增
- // 设置租户ID
- user.setTenantId("000000");
- //默认在职
- user.setStatus(1);
- user.setIsDeleted(0);
- //判断是否持证
- if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
- user.setHold("1");
- //校验保安员证编号是否合规
- SecurityPaper securityPaper = new SecurityPaper();
- securityPaper.setIdCardNo(userExcel.getCardid());
- List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
- if (securityPaperList.size()>0){
- boolean state = false;
- //遍历
- for (SecurityPaper paper : securityPaperList) {
- if (paper.getNumber().equals(user.getSecuritynumber())){
- state = true;
- }
- }
- if (!state){
- user.setHold("2");
- user.setSecuritynumber(null);
- securityInvalidList.add(userExcel.getCardid());
- securityInvalidStatus.set(false);
- }
- }else {
- user.setHold("2");
- user.setSecuritynumber(null);
- securityInvalidList.add(userExcel.getCardid());
- securityInvalidStatus.set(false);
- }
+
+ // 设置租户ID
+ user.setTenantId("000000");
+ //默认在职
+ user.setStatus(1);
+ user.setIsDeleted(0);
+ //分配保安角色
+ Role role = new Role();
+ role.setRoleAlias("保安");
+ Role oneRole = roleService.getOne(Condition.getQueryWrapper(role));
+ user.setRoleId(oneRole.getId().toString());
+
+ if (null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
+ user.setHold("1");
+ }else {
+ user.setHold("2");
+ }
+
+ //性别
+ if (null != userExcel.getSex()) {
+ if (userExcel.getSex().equals("男")) {
+ user.setSex(1);
+ }else if (userExcel.getSex().equals("女")) {
+ user.setSex(2);
}else {
- user.setHold("2");
+ user.setSex(1);
}
- //分配保安角色
- Role role = new Role();
- role.setRoleAlias("保安");
- Role oneRole = roleService.getOne(Condition.getQueryWrapper(role));
- user.setRoleId(oneRole.getId().toString());
-
- //性别
- if (null != userExcel.getSex()) {
- if (userExcel.getSex().equals("男")) {
- user.setSex(1);
- }
- if (userExcel.getSex().equals("女")) {
- user.setSex(2);
- }
- }
-
- //设置账号
- user.setAccount(user.getCardid());
- //获取默认密码配置
- user.setPassword(user.getCardid().substring(user.getCardid().length() - 6));
- //加密
- if (Func.isNotEmpty(user.getPassword())) {
- user.setPassword(DigestUtil.encrypt(user.getPassword()));
- }
- Integer userCount = baseMapper.selectCountAccount(user.getAccount());
- if (userCount > 0 && Func.isEmpty(user.getId())) {
- throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
- }
- user.setCreateTime(new Date());
- //新增
- this.save(user);
- //qfqk 推送
- myAsyncService.qfqkUserSave(user);
-
- //从业记录新增
- Experience experience = new Experience();
- experience.setCardid(user.getCardid());
- experience.setSecurityid(user.getId().toString());
- experience.setCompanyname(userExcel.getDeptId());
- experience.setName(user.getRealName());
- experience.setPost("保安员");
- experience.setEntrytime(new Date());
- experienceService.save(experience);
-
- //内网同步
- String s = "insert into blade_user(" +
- "id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," +
- "role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," +
- "politicaloutlook,healstats,height,address,registered," +
- "securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,create_time,guncode) " +
- "values(" + "'" + user.getId() + "'" +
- "," + "'" + user.getTenantId() + "'" +
- "," + "'" + user.getAccount() + "'" +
- "," + "'" + user.getPassword() + "'" +
- "," + "'" + user.getName() + "'" +
- "," + "'" + user.getRealName() + "'" +
- "," + "'" + user.getAvatar() + "'" +
- "," + "'" + user.getEmail() + "'" +
- "," + "'" + user.getPhone() + "'" +
- "," + "'" + user.getSex() + "'" +
- "," + "'" + user.getRoleId() + "'" +
- "," + "'" + user.getDeptId() + "'" +
- "," + "'" + user.getCardid() + "'" +
- "," + "'" + user.getNativeplace() + "'" +
- "," + "'" + user.getNation() + "'" +
- "," + "'" + user.getFingerprint() + "'" +
- "," + "'" + user.getEducation() + "'" +
- "," + "'" + user.getPoliticaloutlook() + "'" +
- "," + "'" + user.getHealstats() + "'"+
- "," + "'" + user.getHeight() + "'" +
- "," + "'" + user.getAddress() + "'" +
- "," + "'" + user.getRegistered() + "'" +
- "," + "'" + user.getSecuritynumber() + "'" +
- "," + "'" + user.getHold() + "'" +
- "," + "'" + user.getJurisdiction() + "'" +
- "," + "'" + user.getExaminationType() + "'" +
- "," + "'" + user.getStatus() + "'" +
- "," + "'" + user.getIsDeleted() + "'" +
- "," + "'" + user.getDispatch() + "'" +
- "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" +
- "," + "'" + user.getGuncode() + "'" + ");"+
- "insert into sys_experience(id,name,post,entryTime," +
- "cardId,companyname,securityId) " +
- "values(" + "'" + experience.getId() + "'" + "," +
- "'" + experience.getName() + "'" + "," +
- "'" + experience.getPost() + "'" + "," +
- "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
- "," + "'" + experience.getCardid() + "'" +
- "," + "'" + experience.getCompanyname() + "'" +
- "," + "'" + experience.getSecurityid() + "'"
- + ")";
- //FtpUtil.sqlFileUpload(s);
- myAsyncService.FTP(s);
+ }else {
+ user.setSex(1);
}
- else {
- //匹配组织机构是否一致,如果不一致
- if(!user2.getDeptId().equals(user.getDeptId())){
- Dept dept = deptService.getById(user2.getDeptId());
- Dept dept1 = deptService.getById(user.getDeptId());
- //如果是南昌总公司分公司导入的
- if (dept.getId().equals(1432626178757275649L) && dept1.getParentId().equals(1432626178757275649L)){
- user2.setDeptId(dept1.getId().toString());
- //判断是否持证
- if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
- user2.setHold("1");
- user2.setSecuritynumber(user.getSecuritynumber());
- //校验保安员证编号是否合规
- SecurityPaper securityPaper = new SecurityPaper();
- securityPaper.setIdCardNo(userExcel.getCardid());
- List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
- if (securityPaperList.size()>0){
- boolean state = false;
- //遍历
- for (SecurityPaper paper : securityPaperList) {
- if (paper.getNumber().equals(user.getSecuritynumber())){
- state = true;
- }
- }
- if (!state){
- user2.setHold("2");
- user2.setSecuritynumber(null);
- securityInvalidList.add(userExcel.getCardid());
- securityInvalidStatus.set(false);
- }
- }else {
- user2.setHold("2");
- user2.setSecuritynumber(null);
- securityInvalidList.add(userExcel.getCardid());
- securityInvalidStatus.set(false);
- }
- }else {
- user2.setHold("2");
- }
- if (null!=userExcel.getRegistered()){
- user2.setRegistered(userExcel.getRegistered());
- }else {
- user2.setRegistered("");
- }
- user2.setUpdateTime(new Date());
- //更新用户数据
- this.updateById(user2);
- //qfqk 推送
- myAsyncService.updateUserByQfqk(user);
- String s1 =
- "update blade_user set hold = " + "'" + user2.getHold() + "'"
- + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'"
- + ",dept_id = " + "'" + user2.getDeptId() + "'"
- + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
- + ",registered = " + "'" + user2.getRegistered() + "'"
- + " " + "where id = " + "'" + user2.getId() + "'";
- //FtpUtil.sqlFileUpload(s1);
- myAsyncService.FTP(s1);
- }else {
+ //设置账号
+ user.setAccount(user.getRealName());
+ //加密
+ user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6)));
+ user.setCreateTime(new Date());
+ user.setUpdateTime(new Date());
+ user.setDispatch("1");
+ //待审查
+ user.setExaminationType("2");
+
+ //推送内网的数据
+ User user0 = user;
+
+ //生成随机数
+ String uuid = UUID.randomUUID().toString();
+ //将 user 存入 redis
+ redisTemplate.opsForValue().set(uuid, JSON.toJSONString(user));
+ //user0 临时设置uuid 到 reason_for_leav 离职原因字段
+ user0.setReasonForLeav(uuid);
+ //加入集合
+ userList.add(user0);
+ uuidList.add(uuid);
+ }
+
+ Result result = new Result();
+ //用户批量插入
+ if (userList.size()>0) {
+ //生成随机数
+ String uuid = UUID.randomUUID().toString();
+ //数据推送
+ Map<String, Object> map = new HashMap<>(1);
+ map.put(uuid, userList);
+ myAsyncService.FTPObjectList(map);
+
+ int count = 0;
+ //调用ftp获取返回数据
+ while (true){
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ //调用ftp获取返回数据
+ result = Monitor.getFtpDataByUuidList(uuid);
+ //如果返回true,就退处
+ if (result.getCode() == 200) {
+ break;
+ }
+ }
+ }
+
+ if (null!=result){
+ //获取 result
+ List<Result> data1 = result.getData();
+ if (data1.size()>0){
+ for (Result result1 : data1) {
+ // 取出 Msg ,此 msg 存的对应的 uuid
+ String uuid = result1.getMsg();
+ //从redis 中获取用户数据
+ Object o1 = redisTemplate.opsForValue().get(uuid);
+ User user0 = JSON.parseObject(o1.toString(), User.class);
+ // 从redis 中获取对应的用户信息,脱敏处理过
+ User user = handlerUserInfo(uuid);
+ if (result1.getCode()==200){
+ user.setId(result1.getUserId());
+ this.save(user);
+ //加入新增集合
+// addList.add(user);
+ }
+ if (result1.getCode()==201){
+ user.setId(result1.getUserId());
+ user.setCreateTime(null);
+ this.updateById(user);
+ //加入更新集合
+// updateList.add(user);
+ }
+ if (result1.getCode()==202){
status.set(false);
- //加入集合
- errorList.add(user.getCardid());
- //forEach 只能使用 return 跳出本次循环
- return;
+ //已在其他单位存在
+ errorList.add(user0.getCardid());
}
- }else {
- //如果是一致,则更新用户数据
- if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
- user2.setHold("1");
- user2.setSecuritynumber(user.getSecuritynumber());
- //校验保安员证编号是否合规
- SecurityPaper securityPaper = new SecurityPaper();
- securityPaper.setIdCardNo(userExcel.getCardid());
- List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
- if (securityPaperList.size()>0){
- boolean state = false;
- //遍历
- for (SecurityPaper paper : securityPaperList) {
- if (paper.getNumber().equals(user.getSecuritynumber())){
- state = true;
- }
- }
- if (!state){
- user2.setHold("2");
- user2.setSecuritynumber(null);
- securityInvalidList.add(userExcel.getCardid());
- securityInvalidStatus.set(false);
- }
- }else {
- user2.setHold("2");
- user2.setSecuritynumber(null);
- securityInvalidList.add(userExcel.getCardid());
- securityInvalidStatus.set(false);
- }
- }else {
- user2.setHold("2");
+ if (result1.getCode()==203){
+ securityInvalidStatus.set(false);
+ //保安证编号不匹配
+ securityInvalidList.add(user0.getCardid());
}
- if (null!=userExcel.getRegistered()){
- user2.setRegistered(userExcel.getRegistered());
- }else {
- user2.setRegistered("");
- }
- user2.setUpdateTime(new Date());
- //更新用户数据
- this.updateById(user2);
- //qfqk 推送
- myAsyncService.updateUserByQfqk(user);
-
- String s1 =
- "update blade_user set hold = " + "'" + user2.getHold() + "'"
- + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'"
- + ",registered = " + "'" + user2.getRegistered() + "'"
- + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
- + " " + "where id = " + "'" + user2.getId() + "'";
- //FtpUtil.sqlFileUpload(s1);
- myAsyncService.FTP(s1);
}
}
- });
+ }
+
//如果所有数据导入有一个异常
StringBuilder errorBuilder = new StringBuilder();
if (!status.get()){
@@ -1817,11 +1689,12 @@
}
if (!agetStatus.get()){
String errorAccount = StringUtils.join(ageErrorList, "\\\n");
- errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
+ errorBuilder.append("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!");
}
if (!securityInvalidStatus.get()){
String errorAccount = StringUtils.join(securityInvalidList, "\\\n");
- errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+ errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!");
+// errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
}
//抛出异常
if (errorBuilder.length()>0){
@@ -1830,6 +1703,344 @@
}
+///**
+// * 保安员导入(押运人员导入)
+// * @param data
+// * @param isCovered
+// * @param deptId
+// */
+// @Override
+// public void importSecurityYy(List<SecurityYyExcel> data, Boolean isCovered, String deptId) {
+// //将不能导入的保安员账号存起来
+// List<String> errorList = new ArrayList<>();
+// //将需要新增的保安员信息存入集合
+// List<String> ageErrorList = new ArrayList<>();
+// //保安员证编号不符的保安员信息存入集合
+// List<String> securityInvalidList = new ArrayList<>();
+// //将需要更新的保安员信息存入集合
+// List<User> updateList = new ArrayList<>();
+// //导入状态,默认为true ,如果有一个出现问题则为 false
+// AtomicBoolean status = new AtomicBoolean(true);
+// AtomicBoolean agetStatus = new AtomicBoolean(true);
+// AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
+// data.forEach(userExcel -> {
+// User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
+// //设置部门id
+// String deptIds = userDeptService.selectIn(user.getDeptId());
+// if (null!=deptIds && !deptIds.equals("")) {
+// if (null != deptId && !deptId.equals("")) {
+// if (!deptId.equals(deptIds)) {
+// throw new ServiceException("导入失败!不能导入不是本公司的保安员数据!");
+// }
+// }
+// user.setDeptId(deptIds);
+// }else {
+// //如果deptIds 为空,则说明还没有改公司
+// throw new ServiceException("导入失败!公司名:["+user.getDeptId()+"]不存在!");
+// }
+//
+// //身份证号码校验
+// if (null==user.getCardid() || user.getCardid().equals("")){
+// throw new ServiceException("导入失败!身份证号码不能为空!");
+// }
+// //身份证住址校验
+// if (null==user.getRegistered() || user.getRegistered().equals("")){
+// throw new ServiceException("导入失败!身份证住址不能为空!");
+// }
+// if (null!=user.getCardid() && !user.getCardid().equals("")){
+// //去除所有空格
+// String cardid = user.getCardid().replaceAll(" ", "");
+// //校验
+// boolean b = IdCardNoUtil.checkIdCardNo(cardid);
+// if(b){
+// user.setCardid(cardid);
+// }else {
+// agetStatus.set(false);
+// ageErrorList.add(user.getCardid());
+//// throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!");
+// //forEach 只能使用 return 跳出本次循环
+// return;
+// }
+// }
+// //判断当前用户是否已在本单位,如果是的更新数据
+// User user1 = new User();
+// user1.setAccount(user.getCardid());
+// user1.setIsDeleted(0);
+// user1.setStatus(1);
+// user1.setGuncode(user.getGuncode());
+// User user2 = this.getOne(Condition.getQueryWrapper(user1));
+// if (null==user2){
+// //用户不存在,去新增
+// // 设置租户ID
+// user.setTenantId("000000");
+// //默认在职
+// user.setStatus(1);
+// user.setIsDeleted(0);
+// //判断是否持证
+// if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
+// user.setHold("1");
+// //校验保安员证编号是否合规
+// SecurityPaper securityPaper = new SecurityPaper();
+// securityPaper.setIdCardNo(userExcel.getCardid());
+// List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+// if (securityPaperList.size()>0){
+// boolean state = false;
+// //遍历
+// for (SecurityPaper paper : securityPaperList) {
+// if (paper.getNumber().equals(user.getSecuritynumber())){
+// state = true;
+// }
+// }
+// if (!state){
+// user.setHold("2");
+// user.setSecuritynumber(null);
+// securityInvalidList.add(userExcel.getCardid());
+// securityInvalidStatus.set(false);
+// }
+// }else {
+// user.setHold("2");
+// user.setSecuritynumber(null);
+// securityInvalidList.add(userExcel.getCardid());
+// securityInvalidStatus.set(false);
+// }
+// }else {
+// user.setHold("2");
+// }
+// //分配保安角色
+// Role role = new Role();
+// role.setRoleAlias("保安");
+// Role oneRole = roleService.getOne(Condition.getQueryWrapper(role));
+// user.setRoleId(oneRole.getId().toString());
+//
+// //性别
+// if (null != userExcel.getSex()) {
+// if (userExcel.getSex().equals("男")) {
+// user.setSex(1);
+// }
+// if (userExcel.getSex().equals("女")) {
+// user.setSex(2);
+// }
+// }
+//
+// //设置账号
+// user.setAccount(user.getCardid());
+// //获取默认密码配置
+// user.setPassword(user.getCardid().substring(user.getCardid().length() - 6));
+// //加密
+// if (Func.isNotEmpty(user.getPassword())) {
+// user.setPassword(DigestUtil.encrypt(user.getPassword()));
+// }
+// Integer userCount = baseMapper.selectCountAccount(user.getAccount());
+// if (userCount > 0 && Func.isEmpty(user.getId())) {
+// throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
+// }
+// user.setCreateTime(new Date());
+// //新增
+// this.save(user);
+// //qfqk 推送
+// myAsyncService.qfqkUserSave(user);
+//
+// //从业记录新增
+// Experience experience = new Experience();
+// experience.setCardid(user.getCardid());
+// experience.setSecurityid(user.getId().toString());
+// experience.setCompanyname(userExcel.getDeptId());
+// experience.setName(user.getRealName());
+// experience.setPost("保安员");
+// experience.setEntrytime(new Date());
+// experienceService.save(experience);
+//
+// //内网同步
+// String s = "insert into blade_user(" +
+// "id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," +
+// "role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," +
+// "politicaloutlook,healstats,height,address,registered," +
+// "securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,create_time,guncode) " +
+// "values(" + "'" + user.getId() + "'" +
+// "," + "'" + user.getTenantId() + "'" +
+// "," + "'" + user.getAccount() + "'" +
+// "," + "'" + user.getPassword() + "'" +
+// "," + "'" + user.getName() + "'" +
+// "," + "'" + user.getRealName() + "'" +
+// "," + "'" + user.getAvatar() + "'" +
+// "," + "'" + user.getEmail() + "'" +
+// "," + "'" + user.getPhone() + "'" +
+// "," + "'" + user.getSex() + "'" +
+// "," + "'" + user.getRoleId() + "'" +
+// "," + "'" + user.getDeptId() + "'" +
+// "," + "'" + user.getCardid() + "'" +
+// "," + "'" + user.getNativeplace() + "'" +
+// "," + "'" + user.getNation() + "'" +
+// "," + "'" + user.getFingerprint() + "'" +
+// "," + "'" + user.getEducation() + "'" +
+// "," + "'" + user.getPoliticaloutlook() + "'" +
+// "," + "'" + user.getHealstats() + "'"+
+// "," + "'" + user.getHeight() + "'" +
+// "," + "'" + user.getAddress() + "'" +
+// "," + "'" + user.getRegistered() + "'" +
+// "," + "'" + user.getSecuritynumber() + "'" +
+// "," + "'" + user.getHold() + "'" +
+// "," + "'" + user.getJurisdiction() + "'" +
+// "," + "'" + user.getExaminationType() + "'" +
+// "," + "'" + user.getStatus() + "'" +
+// "," + "'" + user.getIsDeleted() + "'" +
+// "," + "'" + user.getDispatch() + "'" +
+// "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" +
+// "," + "'" + user.getGuncode() + "'" + ");"+
+// "insert into sys_experience(id,name,post,entryTime," +
+// "cardId,companyname,securityId) " +
+// "values(" + "'" + experience.getId() + "'" + "," +
+// "'" + experience.getName() + "'" + "," +
+// "'" + experience.getPost() + "'" + "," +
+// "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
+// "," + "'" + experience.getCardid() + "'" +
+// "," + "'" + experience.getCompanyname() + "'" +
+// "," + "'" + experience.getSecurityid() + "'"
+// + ")";
+// //FtpUtil.sqlFileUpload(s);
+// myAsyncService.FTP(s);
+// }
+// else {
+// //匹配组织机构是否一致,如果不一致
+// if(!user2.getDeptId().equals(user.getDeptId())){
+// Dept dept = deptService.getById(user2.getDeptId());
+// Dept dept1 = deptService.getById(user.getDeptId());
+// //如果是南昌总公司分公司导入的
+// if (dept.getId().equals(1432626178757275649L) && dept1.getParentId().equals(1432626178757275649L)){
+// user2.setDeptId(dept1.getId().toString());
+// //判断是否持证
+// if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
+// user2.setHold("1");
+// user2.setSecuritynumber(user.getSecuritynumber());
+// //校验保安员证编号是否合规
+// SecurityPaper securityPaper = new SecurityPaper();
+// securityPaper.setIdCardNo(userExcel.getCardid());
+// List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+// if (securityPaperList.size()>0){
+// boolean state = false;
+// //遍历
+// for (SecurityPaper paper : securityPaperList) {
+// if (paper.getNumber().equals(user.getSecuritynumber())){
+// state = true;
+// }
+// }
+// if (!state){
+// user2.setHold("2");
+// user2.setSecuritynumber(null);
+// securityInvalidList.add(userExcel.getCardid());
+// securityInvalidStatus.set(false);
+// }
+// }else {
+// user2.setHold("2");
+// user2.setSecuritynumber(null);
+// securityInvalidList.add(userExcel.getCardid());
+// securityInvalidStatus.set(false);
+// }
+// }else {
+// user2.setHold("2");
+// }
+// if (null!=userExcel.getRegistered()){
+// user2.setRegistered(userExcel.getRegistered());
+// }else {
+// user2.setRegistered("");
+// }
+// user2.setUpdateTime(new Date());
+// //更新用户数据
+// this.updateById(user2);
+// //qfqk 推送
+// myAsyncService.updateUserByQfqk(user);
+//
+// String s1 =
+// "update blade_user set hold = " + "'" + user2.getHold() + "'"
+// + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'"
+// + ",dept_id = " + "'" + user2.getDeptId() + "'"
+// + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
+// + ",registered = " + "'" + user2.getRegistered() + "'"
+// + " " + "where id = " + "'" + user2.getId() + "'";
+// //FtpUtil.sqlFileUpload(s1);
+// myAsyncService.FTP(s1);
+// }else {
+// status.set(false);
+// //加入集合
+// errorList.add(user.getCardid());
+// //forEach 只能使用 return 跳出本次循环
+// return;
+// }
+// }else {
+// //如果是一致,则更新用户数据
+// if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
+// user2.setHold("1");
+// user2.setSecuritynumber(user.getSecuritynumber());
+// //校验保安员证编号是否合规
+// SecurityPaper securityPaper = new SecurityPaper();
+// securityPaper.setIdCardNo(userExcel.getCardid());
+// List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+// if (securityPaperList.size()>0){
+// boolean state = false;
+// //遍历
+// for (SecurityPaper paper : securityPaperList) {
+// if (paper.getNumber().equals(user.getSecuritynumber())){
+// state = true;
+// }
+// }
+// if (!state){
+// user2.setHold("2");
+// user2.setSecuritynumber(null);
+// securityInvalidList.add(userExcel.getCardid());
+// securityInvalidStatus.set(false);
+// }
+// }else {
+// user2.setHold("2");
+// user2.setSecuritynumber(null);
+// securityInvalidList.add(userExcel.getCardid());
+// securityInvalidStatus.set(false);
+// }
+// }else {
+// user2.setHold("2");
+// }
+// if (null!=userExcel.getRegistered()){
+// user2.setRegistered(userExcel.getRegistered());
+// }else {
+// user2.setRegistered("");
+// }
+// user2.setUpdateTime(new Date());
+// //更新用户数据
+// this.updateById(user2);
+// //qfqk 推送
+// myAsyncService.updateUserByQfqk(user);
+//
+// String s1 =
+// "update blade_user set hold = " + "'" + user2.getHold() + "'"
+// + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'"
+// + ",registered = " + "'" + user2.getRegistered() + "'"
+// + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
+// + " " + "where id = " + "'" + user2.getId() + "'";
+// //FtpUtil.sqlFileUpload(s1);
+// myAsyncService.FTP(s1);
+// }
+// }
+// });
+// //如果所有数据导入有一个异常
+// StringBuilder errorBuilder = new StringBuilder();
+// if (!status.get()){
+// String errorAccount = StringUtils.join(errorList, "\\\n");
+// errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
+// }
+// if (!agetStatus.get()){
+// String errorAccount = StringUtils.join(ageErrorList, "\\\n");
+// errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
+// }
+// if (!securityInvalidStatus.get()){
+// String errorAccount = StringUtils.join(securityInvalidList, "\\\n");
+// errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+// }
+// //抛出异常
+// if (errorBuilder.length()>0){
+// throw new ServiceException(errorBuilder.toString());
+// }
+// }
+
+
/**
* 根据保安员编码查询保安信息
*
diff --git a/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java b/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
index ac2cd9e..77bd835 100644
--- a/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
+++ b/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
@@ -1,5 +1,6 @@
package org.springblade.modules.training.controller;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -20,6 +21,8 @@
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.FTP.FtpUtil;
+import org.springblade.modules.FTP.Monitor;
+import org.springblade.modules.FTP.Result;
import org.springblade.modules.apply.entity.Apply;
import org.springblade.modules.exam.entity.ExamPaper;
import org.springblade.modules.exam.service.ExamPaperService;
@@ -35,6 +38,7 @@
import org.springblade.modules.vip.service.UserVipService;
import org.springblade.modules.vip.service.VipTopicService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -65,6 +69,8 @@
private final VipTopicService vipTopicService;
private final MyAsyncService myAsyncService;
+
+ private final RedisTemplate redisTemplate;
/**
@@ -310,16 +316,69 @@
@PostMapping("/batchTrain")
public R batchApply(@RequestBody TrainingRegistrationVo trainingRegistration){
List<String> list = Arrays.asList(trainingRegistration.getUserIds().split(","));
- AtomicInteger count = new AtomicInteger();
- //创建年龄部分对象集合
+ //将集合推送内网,判断年龄是否符合要求,得到返回的结果,结果需包含userId,及年龄是否符合的状态
+ //生成随机数
+ String uuid = UUID.randomUUID().toString();
+ //数据推送
+ Map<String, Object> map = new HashMap<>(1);
+ map.put(uuid, list);
+ myAsyncService.FTPObjectListUserId(map);
+
+ Result result = new Result();
+ int count = 0;
+ //调用ftp获取返回数据
+ while (true){
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ //调用ftp获取返回数据
+ result = Monitor.getFtpDataByUuidListTrain(uuid);
+ //如果返回true,就退处
+ if (result.getCode() == 200) {
+ break;
+ }else {
+ count++;
+ if (count == 30) {
+ break;
+ }
+ }
+ }
+
+ //创建集合,存年龄符合要求
+ List<String> ageList = new ArrayList<>();
+ //创建年龄不符合集合
List<String> errorList = new ArrayList<>();
-// AtomicReference<StringBuilder> builder = new AtomicReference<>(new StringBuilder());
- //遍历
- list.forEach(userId ->{
- User user = userService.getUserById(userId);
- UserVO userVO = userService.getUserAgeById(Long.parseLong(userId));
- //判断年龄
- if (userVO.getAge()>=18 && userVO.getAge()<=60) {
+ AtomicInteger number = new AtomicInteger();
+ if (null!=result){
+ //获取 result
+ List<Result> data1 = result.getData();
+ if (data1.size()>0){
+ for (Result result1 : data1) {
+ // 取出 Msg ,此 msg 存的对应的 uuid
+ Long userId = result1.getUserId();
+ if (result1.getCode()==200){
+ //加入新增集合
+ ageList.add(userId.toString());
+ }
+ //年龄不符合要求
+ if (result1.getCode()==201){
+ //number ++
+ number.getAndIncrement();
+ //查询用户信息
+ User user = userService.getById(userId);
+ //加入更新集合
+ errorList.add(user.getRealName());
+ }
+ }
+ }
+ }
+
+ if (ageList.size()>0) {
+ //遍历
+ ageList.forEach(userId -> {
+ User user = userService.getUserById(userId);
//未报名的新增,已报名的不做处理
if (null == user.getIsTrain()) {
TrainingRegistration trainingRegistration1 = new TrainingRegistration();
@@ -337,8 +396,7 @@
userService.updateById(user);
//数据同步
- saveTrainingRegistration(trainingRegistration1,user);
-// builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get()));
+ saveTrainingRegistration(trainingRegistration1, user);
} else {
if (user.getIsTrain() != 1) {
TrainingRegistration trainingRegistration1 = new TrainingRegistration();
@@ -356,23 +414,14 @@
userService.updateById(user);
//数据同步
- saveTrainingRegistration(trainingRegistration1,user);
-// builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get()));
+ saveTrainingRegistration(trainingRegistration1, user);
}
}
- }else {
- //count ++
- count.getAndIncrement();
- //放入集合
- errorList.add(user.getCardid());
- }
- });
-// //同步
-// if (builder.get().length()>0) {
-// FtpSyncUtil.slqSync(builder.get());
-// }
+ });
+ }
+
//如果存在年龄不符的,则抛出异常
- if (count.get()>0){
+ if (number.get()>0){
String errorAccount = StringUtils.join(errorList, "\\\n");
throw new ServiceException("保安员:[" + errorAccount + "]报名失败!年龄不符,报名年龄为[18-60]周岁!");
}
--
Gitblit v1.9.3