src/main/java/org/springblade/modules/FTP/FtpMain.java
@@ -1,38 +1,121 @@ package org.springblade.modules.FTP; 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 java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import static org.springblade.common.config.FtpConfig.*; import static org.springblade.common.config.FtpConfig.ftpPath; public class FtpMain { public static void main(String[] args) throws FileNotFoundException { //ftp服务器IP地址 String ftpHost = "192.168.0.105"; //ftp服务器端口 int ftpPort = 21; //ftp服务器用户名 String ftpUserName = "yly"; //ftp服务器密码 String ftpPassword = "Yly@123"; //ftp服务器路径 String ftpPath = ""; //本地路径 String localPath = "D:\\anbao"; //文件名 String fileName = "sql.json"; while (true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } readFile(); } } public static boolean readFile() { FTPClient ftp = new FTPClient(); System.out.println("ftp 创建客户端"); try { //设置超时时间 // ftp.setConnectTimeout(3000); //连接 ftp.connect(ftpHost, ftpPort); System.out.println("ftp 连接成功!"); // 登陆 ftp.login(ftpUserNameIn, ftpPasswordIn); // 检验登陆操作的返回码是否正确 if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { ftp.disconnect(); return false; } //下载 //将ftp根目录下的文件下载至E盘 //FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName); ftp.enterLocalActiveMode(); //上传 //将E盘的文件上传至ftp根目录 //FileInputStream in=new FileInputStream(new File("D:\\" + fileName)); //FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, "anbao/", "/", fileName, in); // 设置文件类型为二进制,与ASCII有区别 ftp.setFileType(FTP.BINARY_FILE_TYPE); //删除 //删除ftp根目录下的文件 //FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserName, ftpPassword, "anbao/", "fz.py"); // 设置编码格式 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 (FTPFile file : files) { String fileName = file.getName(); InputStream is = ftp.retrieveFileStream(new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING)); if (null == is) { return false; } else { String substring1 = fileName.substring(0, 4); if (substring1.equals("nsql")) { //把文件下载到本地 FtpUtil.downloadFtpFile(ftpHost, ftpUserNameIn, ftpPasswordIn, ftpPort, ftpPath, localPath, fileName); // String s = OutJson.TestJson(fileName); //sql语句 String sql = OutJson.stringReplace(s); String[] split = sql.split(";");//以逗号分割 for (String sqls : split) { //判断是否是新增,删除,修改 String substring = sqls.substring(0, 2); //新增 if (substring.equals("in")) { //运行sql语句 MysqlCenlint.inster(sqls); } //修改 else if (substring.equals("up")) { MysqlCenlint.update(sqls); } //删除 else { MysqlCenlint.delete(sqls); } } //删除本地服务器文件 MysqlCenlint.deletess(fileName); //删除 ftp 服务器文件 FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserNameIn, ftpPasswordIn, ftpPath, fileName); } //关闭流 is.close(); ftp.completePendingCommand(); } return true; } } } catch (Exception e) { System.out.println("ftp连接失败"); e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } return false; } } src/main/java/org/springblade/modules/FTP/Monitor.java
@@ -31,7 +31,7 @@ * @return */ public static Result isFTPFileExist(String uuid) { System.out.println("uuid = " + uuid); // System.out.println("uuid = " + uuid); //创建 ftp 对象 FTPClient ftp = new FTPClient(); boolean flag = false; @@ -57,26 +57,26 @@ ftp.setControlEncoding("GBK"); // 检验文件是否存在 boolean ftpFile = ftp.changeWorkingDirectory(ftpPath); System.out.println("检验文件是否存在 = " + ftpFile); // System.out.println("检验文件是否存在 = " + ftpFile); // Use passive mode as default ftp.enterLocalPassiveMode(); FTPFile[] files = ftp.listFiles(); System.out.println("files = " + files); System.out.println("开始读取内网回传消息"); // System.out.println("files = " + files); // System.out.println("开始读取内网回传消息"); if (files.length==0){ System.out.println("未读取到文件"); // System.out.println("未读取到文件"); return new Result(400,null,"未读取到文件",null); } else { System.out.println("-----有读取到文件--------"); // System.out.println("-----有读取到文件--------"); for (FTPFile file : files){ String fileName = file.getName(); System.out.println("fileName = " + fileName); // System.out.println("fileName = " + fileName); InputStream is = ftp.retrieveFileStream(new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING)); String substring1 = fileName.substring(0, 1); System.out.println("substring1 = " + substring1); // System.out.println("substring1 = " + substring1); if (substring1.equals("n")){ System.out.println("-------接收到内网回传的文件: " + substring1); System.out.println("-------接收到内网回传的文件: " + fileName); //把文件下载到本地 FtpUtil.downloadFtpFile(ftpHost, ftpUserNameIn, ftpPasswordIn, ftpPort, ftpPath, localPath, fileName); // 解析数据 @@ -290,6 +290,8 @@ public static boolean isFTPFileExist() { FTPClient ftp = new FTPClient(); try { //设置超时时间 ftp.setConnectTimeout(2000); //连接 ftp.connect(ftpHost, ftpPort); // 登陆 src/main/java/org/springblade/modules/quartz/listener/SchedulerListener.java
@@ -30,12 +30,12 @@ public void scheduledJobListener(ScheduleEvent event){ //获取事件对象 ScheduledJob scheduledJob = event.getScheduledJob(); System.out.println("开始执行任务......"); scheduledJob.setActiveTime(new Date()); scheduledJobService.updateById(scheduledJob); // System.out.println("开始执行任务......"); // scheduledJob.setActiveTime(new Date()); // scheduledJobService.updateById(scheduledJob); //开始执行任务 SpringBeanTaskUtil.invokeMethod(scheduledJob); System.out.println("任务执行结束......"); // System.out.println("任务执行结束......"); } } src/main/java/org/springblade/modules/quartz/task/Task.java
@@ -62,9 +62,15 @@ // @Scheduled(cron = "*/30 * * * * ?") public boolean readFile() { FTPClient ftp = new FTPClient(); System.out.println("ftp 创建客户端"); try { //设置传输超时时间为60秒 ftp.setDataTimeout(60000); //连接超时为60秒 ftp.setConnectTimeout(60000); //连接 ftp.connect(ftpHost, ftpPort); System.out.println("ftp 连接成功!"); // 登陆 ftp.login(ftpUserNameIn, ftpPasswordIn); // 检验登陆操作的返回码是否正确 @@ -140,7 +146,7 @@ System.out.println("ftp连接失败"); e.printStackTrace(); } finally { if (ftp != null) { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException e) { src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -1624,7 +1624,7 @@ //调用ftp获取返回数据 while (true){ System.out.println("用户新增开始接收消息......................"); Thread.sleep(6000); Thread.sleep(1000); //调用ftp获取返回数据 result = Monitor.isFTPFileExist(uuid); //如果返回true,就退处 @@ -1643,8 +1643,8 @@ }else{ //计数 count++; //如果超过10s 没有读取到,则退出 if (count == 10) { //如果超过60s 没有读取到,则退出 if (count == 60) { break; } } @@ -1860,4 +1860,19 @@ public R getNotUpdatePwdInfo() { return R.data(userService.getNotUpdatePwdInfo()); } /** * 用户手动离职(用户数据未同步成功的) * @param user * @return */ @GetMapping("/leave") public void leave(User user){ user.setStatus(2); String s1 = "update blade_user set status = " + "'" + user.getStatus() + "'" + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "'" + " " + "where cardid = " + "'" + user.getCardid() + "'"; myAsyncService.FTP(s1); } } src/main/resources/application.yml
@@ -215,6 +215,7 @@ - /recordk/save - /recordk/details - /blade-user/detail - /blade-user/leave - /userVip/getUserVipInfo - /simulateExamRecord/getSimulateExamRecordInfo - /simulateExamRecord/pauseExam