package com.jiayue.ipfcst.console.service; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.jiayue.ipfcst.common.data.entity.FileCreateLog; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RestController; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; /** * DownLoadController * * @author whc * @version 1.0 * @since 2019/4/9 13:36 */ @Slf4j @RestController public class DownLoadService { public void download(String stationCode) { log.info("开始执行定时任务:http下载文件"); String body = HttpRequest.get("https://117.78.19.70:9010/client/getDownLoadFileAll/" + stationCode).execute().body(); JSONObject json = JSONUtil.parseObj(body); String code = json.get("code").toString(); String data = json.get("data").toString(); if (code.equals("0") && data.length() > 0) { JSONArray array = JSONUtil.parseArray(data); List list = array.toList(FileCreateLog.class); Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); //String dir = FileUtil.getDownloadFilePath() +File.separator+stationCode+File.separator+"new/"; //String dirBak = FileUtil.getDownloadFilePath() +File.separator+stationCode+File.separator+"backups/"+simpleDateFormat.format(date)+"/"; //测试使用 String dir = "/Users/wanghongchen/fsdownload/" + stationCode + "/" + "new/"; String dirBak = "/Users/wanghongchen/fsdownload/" + stationCode + "/" + "backups/" + simpleDateFormat.format(date) + "/"; //循环backups下的文件,有文件则不下载 File fileDirectory = new File(dir); if (!fileDirectory.exists()) { fileDirectory.mkdir(); } File bakDirectory = new File(dirBak); if (!bakDirectory.exists()) { bakDirectory.mkdir(); } try { for (FileCreateLog fileCreateLog : list) { File file = new File(bakDirectory + File.separator + fileCreateLog.getFileName()); if (!file.exists()) { String url = "https://117.78.19.70:9010/client/getFileById?id=" + fileCreateLog.getId(); long a = HttpUtil.downloadFile(url, dir + File.separatorChar + fileCreateLog.getFileName()); if (a > 0) { log.info(stationCode + "场站" + fileCreateLog.getFileName() + "文件下载成功"); } } else { log.info("文件已经下载过了"); } } } catch (Exception e) { log.error("文件下载失败", e); } } } }