| | |
| | | import org.apache.commons.net.ftp.FTPReply; |
| | | import org.springblade.common.utils.DesensitizedUtil; |
| | | import org.springblade.modules.FTP.*; |
| | | import org.springblade.modules.exam.entity.ExamAnswerRecord; |
| | | import org.springblade.modules.exam.entity.ExamScore; |
| | | import org.springblade.modules.exam.service.ExamAnswerRecordService; |
| | | import org.springblade.modules.exam.service.ExamScoreService; |
| | | import org.springblade.modules.log.entity.HandlerLog; |
| | | import org.springblade.modules.log.service.HandlerLogService; |
| | | import org.springblade.modules.system.entity.User; |
| | |
| | | @Autowired |
| | | private MyAsyncService myAsyncService; |
| | | |
| | | |
| | | @Autowired |
| | | private ExamAnswerRecordService examAnswerRecordService; |
| | | |
| | | @Autowired |
| | | private ExamScoreService examScoreService; |
| | | |
| | | public void testTask(){ |
| | | System.out.println("测试定时任务执行-----------------"); |
| | | } |
| | |
| | | */ |
| | | public boolean readFile() { |
| | | FTPClient ftp = new FTPClient(); |
| | | String fileName = null; |
| | | try { |
| | | //设置传输超时时间为60秒 |
| | | ftp.setDataTimeout(10000); |
| | |
| | | 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(); |
| | | if (files.length==0){ |
| | | ftp.logout(); |
| | | return false; |
| | | } |
| | | else { |
| | | for (int i = files.length-1; i >=0 ; i--) { |
| | | String fileName = files[i].getName(); |
| | | 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 (substring1.contains("nq")) { |
| | |
| | | } |
| | | } |
| | | //关闭流 |
| | | ftp.completePendingCommand(); |
| | | ftp.logout(); |
| | | // ftp.completePendingCommand(); |
| | | // ftp.logout(); |
| | | } |
| | | } catch (Exception e) { |
| | | System.out.println("ftp连接失败"); |
| | | //发生异常删除文件,有可能是空文件 |
| | | FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserNameIn, ftpPasswordIn, ftpPath, fileName); |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | ftp.logout(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (ftp.isConnected()) { |
| | | try { |
| | | ftp.disconnect(); |
| | |
| | | return false; |
| | | } |
| | | |
| | | ftp.enterLocalActiveMode(); |
| | | // ftp.enterLocalActiveMode(); |
| | | |
| | | // 设置文件类型为二进制,与ASCII有区别 |
| | | ftp.setFileType(FTP.BINARY_FILE_TYPE); |
| | |
| | | //文件个数大于10个时开始处理 |
| | | // if (files.length==0 || files.length<10){ |
| | | if (files.length==0){ |
| | | ftp.logout(); |
| | | // ftp.logout(); |
| | | return false; |
| | | } |
| | | else { |
| | |
| | | } |
| | | } |
| | | //关闭流 |
| | | ftp.completePendingCommand(); |
| | | ftp.logout(); |
| | | // ftp.completePendingCommand(); |
| | | // ftp.logout(); |
| | | } |
| | | } catch (Exception e) { |
| | | System.out.println("ftp连接失败"); |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | ftp.logout(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (ftp.isConnected()) { |
| | | try { |
| | | ftp.disconnect(); |
| | |
| | | return false; |
| | | } |
| | | |
| | | ftp.enterLocalActiveMode(); |
| | | // ftp.enterLocalActiveMode(); |
| | | |
| | | // 设置文件类型为二进制,与ASCII有区别 |
| | | ftp.setFileType(FTP.BINARY_FILE_TYPE); |
| | |
| | | FTPFile[] files = ftp.listFiles(); |
| | | //文件个数大于10个时开始处理 |
| | | if (files.length==0){ |
| | | ftp.logout(); |
| | | |
| | | return false; |
| | | } |
| | | else { |
| | |
| | | } |
| | | } |
| | | //关闭流 |
| | | ftp.completePendingCommand(); |
| | | // ftp.completePendingCommand(); |
| | | // ftp.logout(); |
| | | } |
| | | } catch (Exception e) { |
| | | System.out.println("ftp连接失败"); |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | ftp.logout(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (ftp.isConnected()) { |
| | | try { |
| | | ftp.disconnect(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 读取内外推送的管理员导入的保安员返回文件(带保安证编号) |
| | | * @return |
| | | */ |
| | | public boolean readPaperListFile() { |
| | | FTPClient ftp = new FTPClient(); |
| | | try { |
| | | //设置传输超时时间为60秒 |
| | | ftp.setDataTimeout(10000); |
| | | //连接超时为60秒 |
| | | ftp.setConnectTimeout(10000); |
| | | //连接 |
| | | ftp.connect(ftpHost, ftpPort); |
| | | System.out.println("定时任务:读取内外推送的管理员导入的保安员返回文件(带保安证编号)!"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | // 登陆 |
| | | ftp.login(ftpUserNameIn, ftpPasswordIn); |
| | | // 检验登陆操作的返回码是否正确 |
| | | if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { |
| | | ftp.disconnect(); |
| | | return false; |
| | | } |
| | | |
| | | // 设置文件类型为二进制,与ASCII有区别 |
| | | ftp.setFileType(FTP.BINARY_FILE_TYPE); |
| | | |
| | | // 设置编码格式 |
| | | ftp.setControlEncoding("GBK"); |
| | | |
| | | // 检验文件是否存在 |
| | | ftp.changeWorkingDirectory(ftpPath); |
| | | |
| | | // Use passive mode as default |
| | | ftp.enterLocalPassiveMode(); |
| | | |
| | | FTPFile[] files = ftp.listFiles(); |
| | | //文件处理 |
| | | if (files.length==0){ |
| | | return false; |
| | | } |
| | | 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 (substring.contains("np")) { |
| | | //把文件下载到本地 |
| | | long l = System.currentTimeMillis(); |
| | | FtpUtil.downloadFtpFile(ftpHost, ftpUserNameIn, ftpPasswordIn, ftpPort, ftpPath, localPath, fileName); |
| | | long x = System.currentTimeMillis(); |
| | | System.out.println("下载文件耗时 = " + (x-l)+" 毫秒"); |
| | | //数据转换 |
| | | String json = OutJson.TestJson(fileName); |
| | | //取出map |
| | | Map<String,Object> map = JSON.parseObject(json, Map.class); |
| | | Result result = new Result(); |
| | | for (Map.Entry entry : map.entrySet()) { |
| | | Object value = entry.getValue(); |
| | | //转换 |
| | | result = JSON.parseObject(value.toString(), Result.class); |
| | | } |
| | | if (null!=result) { |
| | | try { |
| | | paperListInfoHandler(result); |
| | | }catch (Exception e) { |
| | | //异步用户处理逻辑 |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | //删除本地文件 |
| | | MysqlCenlint.deletess(fileName); |
| | | //删除 ftp 文件 |
| | | FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserNameIn, ftpPasswordIn, ftpPath, fileName); |
| | | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":成功删除ftp文件 = " + fileName); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | System.out.println("ftp连接失败"); |
| | | e.printStackTrace(); |
| | | } finally { |
| | | if (ftp.isConnected()) { |
| | | try { |
| | | ftp.logout(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | try { |
| | | ftp.disconnect(); |
| | | } catch (IOException e) { |
| | |
| | | * 用户集合信息处理 |
| | | * @param result |
| | | */ |
| | | private void userListInfoHandler(Result result) { |
| | | @Async |
| | | public void userListInfoHandler(Result result) { |
| | | //获取 result |
| | | List<Result> data1 = result.getData(); |
| | | System.out.println("批量导入数据 = " + data1); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 管理员导入用户集合信息处理 |
| | | * @param result |
| | | */ |
| | | @Async |
| | | public void paperListInfoHandler(Result result) { |
| | | //获取 result |
| | | List<Result> data1 = result.getData(); |
| | | System.out.println("批量导入数据 = " + data1); |
| | | if (data1.size()>0){ |
| | | for (Result result1 : data1) { |
| | | // 取出 Msg ,此 msg 存的对应的 uuid |
| | | String[] split = result1.getMsg().split(","); |
| | | String uuid = split[0]; |
| | | //从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()); |
| | | user.setSecuritynumber(split[1]); |
| | | user.setHold("1"); |
| | | user.setExaminationType("0"); |
| | | boolean save = userService.save(user); |
| | | if (save){ |
| | | //数据异步同步到群防群控 |
| | | myAsyncService.qfqkUserSave(user); |
| | | } |
| | | } |
| | | 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()==205){ |
| | | //审查异常 |
| | | 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 |
| | | */ |
| | |
| | | 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(); |
| | |
| | | FTPFile[] files = ftp.listFiles(); |
| | | //文件个数大于10个时开始处理 |
| | | if (files.length==0){ |
| | | ftp.logout(); |
| | | // ftp.logout(); |
| | | return false; |
| | | } |
| | | else { |
| | |
| | | } |
| | | } |
| | | //关闭流 |
| | | ftp.completePendingCommand(); |
| | | ftp.logout(); |
| | | // ftp.completePendingCommand(); |
| | | // ftp.logout(); |
| | | } |
| | | } catch (Exception e) { |
| | | System.out.println("ftp连接失败"); |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | ftp.logout(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (ftp.isConnected()) { |
| | | try { |
| | | ftp.disconnect(); |
| | |
| | | * 报名信息处理 |
| | | * @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(); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 考试成绩同步 |
| | | * @return |
| | | */ |
| | | public void examScoreSync() { |
| | | System.out.println("考试成绩同步"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | //查询当天的考试成绩 |
| | | List<ExamScore> examScoreList = examScoreService.getExamScoreList(); |
| | | if (examScoreList.size()>0) { |
| | | //遍历计算成绩 |
| | | for (ExamScore examScore : examScoreList) { |
| | | ExamAnswerRecord record = new ExamAnswerRecord(); |
| | | record.setScoreId(examScore.getId()); |
| | | List<ExamAnswerRecord> list = examAnswerRecordService.list(new QueryWrapper<>(record)); |
| | | if (list.size()>0){ |
| | | int num = 0; |
| | | for (ExamAnswerRecord examAnswerRecord : list) { |
| | | num = num + examAnswerRecord.getAnswerScore(); |
| | | examScore.setExamEndTime(examAnswerRecord.getAnswerTime()); |
| | | } |
| | | examScore.setTheoryGrade(num); |
| | | examScore.setAllGrade(Math.round(num/2)); |
| | | //设置状态 |
| | | if (num >= 60) { |
| | | examScore.setQualified(2); |
| | | } else { |
| | | examScore.setQualified(1); |
| | | } |
| | | String s1 = |
| | | "update exam_score set exam_id = " + examScore.getExamId() + |
| | | ",theory_grade = " + "'" + examScore.getTheoryGrade() + "'" + |
| | | ",all_grade = " + "'" + examScore.getAllGrade() + "'" + |
| | | ",exam_end_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(examScore.getExamEndTime()) + "'" + |
| | | ",qualified = " + "'" + examScore.getQualified() + "'" + |
| | | " " + "where id = " + "'" + examScore.getId() + "'"; |
| | | myAsyncService.FTP(s1); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |