| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.commons.net.ftp.FTP; |
| | | import org.apache.commons.net.ftp.FTPClient; |
| | | import org.apache.commons.net.ftp.FTPFile; |
| | | import org.apache.commons.net.ftp.FTPReply; |
| | | import org.springblade.common.utils.DesensitizedUtil; |
| | | import org.springblade.modules.FTP.*; |
| | | import org.springblade.modules.log.entity.HandlerLog; |
| | | import org.springblade.modules.log.service.HandlerLogService; |
| | | import org.springblade.modules.system.entity.User; |
| | | import org.springblade.modules.system.service.IUserService; |
| | | import org.springblade.modules.system.service.MyAsyncService; |
| | |
| | | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.lang.reflect.Array; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | |
| | | |
| | | @Autowired |
| | | private IUserService userService; |
| | | |
| | | @Autowired |
| | | private HandlerLogService handlerLogService; |
| | | |
| | | @Autowired |
| | | private RedisTemplate redisTemplate; |
| | |
| | | return false; |
| | | } |
| | | |
| | | ftp.enterLocalActiveMode(); |
| | | //主动模式 |
| | | // ftp.enterLocalActiveMode(); |
| | | |
| | | // 设置文件类型为二进制,与ASCII有区别 |
| | | ftp.setFileType(FTP.BINARY_FILE_TYPE); |
| | |
| | | // 检验文件是否存在 |
| | | ftp.changeWorkingDirectory(ftpPath); |
| | | |
| | | // Use passive mode as default |
| | | // Use passive mode as default 被动模式 |
| | | ftp.enterLocalPassiveMode(); |
| | | |
| | | FTPFile[] files = ftp.listFiles(); |
| | |
| | | else { |
| | | for (int i = files.length-1; i >=0 ; i--) { |
| | | String fileName = files[i].getName(); |
| | | String substring1 = fileName.substring(0, 2); |
| | | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":读取到文件 = " + fileName); |
| | | if (fileName.contains("nq")) { |
| | | if (substring1.contains("nq")) { |
| | | //把文件下载到本地 |
| | | long l = System.currentTimeMillis(); |
| | | FtpUtil.downloadFtpFile(ftpHost, ftpUserNameIn, ftpPasswordIn, ftpPort, ftpPath, localPath, fileName); |
| | |
| | | return false; |
| | | } |
| | | |
| | | ftp.enterLocalActiveMode(); |
| | | // ftp.enterLocalActiveMode(); |
| | | |
| | | // 设置文件类型为二进制,与ASCII有区别 |
| | | ftp.setFileType(FTP.BINARY_FILE_TYPE); |
| | |
| | | else { |
| | | for (int i = files.length-1; i >=0 ; i--) { |
| | | String fileName = files[i].getName(); |
| | | String substring = fileName.substring(0, 2); |
| | | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":读取到文件 = " + fileName); |
| | | if (fileName.contains("ni")) { |
| | | if (substring.contains("ni")) { |
| | | // InputStream is = ftp.retrieveFileStream(new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING)); |
| | | //把文件下载到本地 |
| | | long l = System.currentTimeMillis(); |
| | |
| | | return false; |
| | | } |
| | | |
| | | ftp.enterLocalActiveMode(); |
| | | // ftp.enterLocalActiveMode(); |
| | | |
| | | // 设置文件类型为二进制,与ASCII有区别 |
| | | ftp.setFileType(FTP.BINARY_FILE_TYPE); |
| | |
| | | else { |
| | | for (int i = files.length-1; i >=0 ; i--) { |
| | | String fileName = files[i].getName(); |
| | | String substring = fileName.substring(0, 2); |
| | | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":读取到文件 = " + fileName); |
| | | if (fileName.contains("nl")) { |
| | | if (substring.contains("nl")) { |
| | | //把文件下载到本地 |
| | | long l = System.currentTimeMillis(); |
| | | FtpUtil.downloadFtpFile(ftpHost, ftpUserNameIn, ftpPasswordIn, ftpPort, ftpPath, localPath, fileName); |
| | |
| | | * 用户集合信息处理 |
| | | * @param result |
| | | */ |
| | | private void userListInfoHandler(Result result) { |
| | | @Async |
| | | public void userListInfoHandler(Result result) { |
| | | //获取 result |
| | | List<Result> data1 = result.getData(); |
| | | System.out.println("批量导入数据 = " + data1); |
| | | 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){ |
| | |
| | | } |
| | | if (result1.getCode()==202){ |
| | | //已在其他单位存在 |
| | | HandlerLog handlerLog = new HandlerLog(); |
| | | handlerLog.setCreateTime(new Date()); |
| | | handlerLog.setDeptId(user.getDeptId()); |
| | | handlerLog.setOperatorTime(user.getCreateTime()); |
| | | handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]已在其他单位存在"); |
| | | handlerLog.setType(2); |
| | | //插入记录 |
| | | handlerLogService.save(handlerLog); |
| | | } |
| | | if (result1.getCode()==203){ |
| | | //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况 |
| | | user.setHold("2"); |
| | | user.setSecuritynumber(""); |
| | | user.setId(result1.getUserId()); |
| | | //先查询当前库是否有改用户? |
| | | User user2 = userService.getById(result1.getUserId()); |
| | | //判断 |
| | | if (null != user2) { |
| | | //修改 |
| | | //数据修改 |
| | | boolean b = userService.updateById(user); |
| | | if (b) { |
| | | //异步同步到群防群控 |
| | | myAsyncService.updateUserByQfqk(user); |
| | | } |
| | | } else { |
| | | //新增 |
| | | boolean save = userService.save(user); |
| | | if (save) { |
| | | //异步同步到群防群控 |
| | | myAsyncService.qfqkUserSave(user); |
| | | } |
| | | } |
| | | //保安证编号不匹配 |
| | | HandlerLog handlerLog = new HandlerLog(); |
| | | handlerLog.setCreateTime(new Date()); |
| | | handlerLog.setDeptId(user.getDeptId()); |
| | | handlerLog.setOperatorTime(user.getCreateTime()); |
| | | handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]保安证编号不匹配,请核实!"); |
| | | handlerLog.setType(2); |
| | | //插入记录 |
| | | handlerLogService.save(handlerLog); |
| | | } |
| | | } |
| | | } |
| | |
| | | return false; |
| | | } |
| | | |
| | | ftp.enterLocalActiveMode(); |
| | | // ftp.enterLocalActiveMode(); |
| | | |
| | | // 设置文件类型为二进制,与ASCII有区别 |
| | | ftp.setFileType(FTP.BINARY_FILE_TYPE); |
| | |
| | | ftp.setControlEncoding("GBK"); |
| | | |
| | | // 检验文件是否存在 |
| | | ftp.changeWorkingDirectory(ftpPath); |
| | | // ftp.changeWorkingDirectory(ftpPath); |
| | | |
| | | // Use passive mode as default |
| | | ftp.enterLocalPassiveMode(); |
| | |
| | | else { |
| | | for (int i = files.length-1; i >=0 ; i--) { |
| | | String fileName = files[i].getName(); |
| | | String substring = fileName.substring(0, 2); |
| | | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":读取到文件 = " + fileName); |
| | | if (fileName.contains("nt")) { |
| | | if (substring.contains("nt")) { |
| | | //把文件下载到本地 |
| | | long l = System.currentTimeMillis(); |
| | | FtpUtil.downloadFtpFile(ftpHost, ftpUserNameIn, ftpPasswordIn, ftpPort, ftpPath, localPath, fileName); |
| | |
| | | * 报名信息处理 |
| | | * @param result |
| | | */ |
| | | private void applyHandler(String uuid,Result result) { |
| | | @Async |
| | | public void applyHandler(String uuid,Result result) { |
| | | //取出培训学校id |
| | | //从redis 中获取用户数据 |
| | | String s = redisTemplate.opsForValue().get(uuid).toString(); |
| | | //删除 |
| | | redisTemplate.delete(uuid); |
| | | if (null!=s && !s.equals("")) { |
| | | //创建集合,存年龄符合要求 |
| | | List<String> ageList = new ArrayList<>(); |
| | | //创建年龄不符合集合 |
| | | List<String> errorList = new ArrayList<>(); |
| | | List<User> errorList = new ArrayList<>(); |
| | | AtomicInteger number = new AtomicInteger(); |
| | | if (null != result) { |
| | | //获取 result |
| | |
| | | //查询用户信息 |
| | | User user = userService.getById(userId); |
| | | //加入更新集合 |
| | | errorList.add(user.getRealName()); |
| | | errorList.add(user); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | //如果存在年龄不符的,则抛出异常 |
| | | if (number.get()>0){ |
| | | String deptId = errorList.get(0).getDeptId(); |
| | | List<String> arrayList = new ArrayList<>(); |
| | | errorList.forEach(user -> { |
| | | arrayList.add(user.getAccount()); |
| | | }); |
| | | //已在其他单位存在 |
| | | HandlerLog handlerLog = new HandlerLog(); |
| | | handlerLog.setCreateTime(new Date()); |
| | | handlerLog.setDeptId(deptId); |
| | | handlerLog.setOperatorTime(new Date()); |
| | | handlerLog.setType(3); |
| | | String errorAccount = StringUtils.join(arrayList, "\\\n"); |
| | | handlerLog.setRemark("保安员:[" + errorAccount + "]报名失败!年龄不符,报名年龄为[18-60]周岁!"); |
| | | //插入记录 |
| | | handlerLogService.save(handlerLog); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | myAsyncService.FTP(sql); |
| | | } |
| | | |
| | | /** |
| | | * 用户审查 |
| | | * @return |
| | | */ |
| | | public void userExamine() { |
| | | System.out.println("用户审查任务发起"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | //查询审查状态为未审查的保安员 |
| | | User user = new User(); |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | | user.setRoleId("1412226235153731586"); |
| | | //未审查 |
| | | user.setExaminationType("2"); |
| | | //查询 |
| | | List<User> users = userService.list(new QueryWrapper<>(user)); |
| | | //遍历 |
| | | if (users.size()>0){ |
| | | users.forEach(user1 -> { |
| | | myAsyncService.userExamineFTP(user1); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | */ |
| | | @Async |
| | | public void userInfoHandler(String uuid, Result result){ |
| | | //从redis 中获取用户数据 |
| | | Object o1 = redisTemplate.opsForValue().get(uuid); |
| | | User user0 = JSON.parseObject(o1.toString(), User.class); |
| | | //用户数处理 |
| | | User users = handlerUserInfo(uuid); |
| | | if (null!=users) { |
| | |
| | | } |
| | | } else if (result.getCode() == 203) { |
| | | //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 用户为新增 |
| | | users.setHold("2"); |
| | | users.setSecuritynumber(""); |
| | | //新增 |
| | | users.setId(result.getUserId()); |
| | | //插入数据库 |
| | |
| | | //异步同步到群防群控 |
| | | myAsyncService.qfqkUserSave(users); |
| | | } |
| | | //保安证编号不匹配 |
| | | HandlerLog handlerLog = new HandlerLog(); |
| | | handlerLog.setCreateTime(new Date()); |
| | | handlerLog.setDeptId(user0.getDeptId()); |
| | | handlerLog.setOperatorTime(user0.getCreateTime()); |
| | | handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]保安证编号不匹配,请核实!"); |
| | | handlerLog.setType(1); |
| | | //插入记录 |
| | | handlerLogService.save(handlerLog); |
| | | } else if (result.getCode() == 204) { |
| | | //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况 |
| | | users.setHold("2"); |
| | | users.setSecuritynumber(""); |
| | | users.setId(result.getUserId()); |
| | | //先查询当前库是否有改用户? |
| | | User user2 = userService.getById(result.getUserId()); |
| | |
| | | myAsyncService.qfqkUserSave(users); |
| | | } |
| | | } |
| | | //保安证编号不匹配 |
| | | HandlerLog handlerLog = new HandlerLog(); |
| | | handlerLog.setCreateTime(new Date()); |
| | | handlerLog.setDeptId(user0.getDeptId()); |
| | | handlerLog.setOperatorTime(user0.getCreateTime()); |
| | | handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]保安证编号不匹配,请核实!"); |
| | | handlerLog.setType(1); |
| | | //插入记录 |
| | | handlerLogService.save(handlerLog); |
| | | }else { |
| | | //已在其他单位存在 |
| | | HandlerLog handlerLog = new HandlerLog(); |
| | | handlerLog.setCreateTime(new Date()); |
| | | handlerLog.setDeptId(user0.getDeptId()); |
| | | handlerLog.setOperatorTime(user0.getCreateTime()); |
| | | handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]已在其他单位存在"); |
| | | handlerLog.setType(1); |
| | | //插入记录 |
| | | handlerLogService.save(handlerLog); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 用户审查 |
| | | * @return |
| | | */ |
| | | public void userExamine() { |
| | | System.out.println("用户审查任务发起"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | //查询审查状态为未审查的保安员 |
| | | User user = new User(); |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | | user.setRoleId("1412226235153731586"); |
| | | //未审查 |
| | | user.setExaminationType("2"); |
| | | //查询 |
| | | List<User> users = userService.list(new QueryWrapper<>(user)); |
| | | //遍历 |
| | | if (users.size()>0){ |
| | | users.forEach(user1 -> { |
| | | myAsyncService.userExamineFTP(user1); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |