package com.bcxin.autodownloadupload.controller; import cn.hutool.core.io.FileUtil; import com.bcxin.autodownloadupload.common.utils.FileUtils; import com.bcxin.autodownloadupload.dtos.ChangeLogsRequestDto; import com.bcxin.autodownloadupload.dtos.FerryTaskPullResult; import com.bcxin.autodownloadupload.entity.PullRecord; import com.bcxin.autodownloadupload.service.PullDataService; import com.bcxin.autodownloadupload.service.PullRecordService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; @Slf4j @RestController @RequestMapping("/pull/data") public class PullDataController { @Autowired private PullDataService pullDataService; @Autowired private PullRecordService pullRecordService; /** * description: 旧数据迁移 * author: linchunpeng * date: 2023-04-25 9:53 */ @GetMapping("/oldDataProcessor/{beginEnd}") public void oldDataProcessor(@PathVariable("beginEnd") String beginEnd) { String[] split = beginEnd.split("-"); pullDataService.oldDataProcessor(Long.parseLong(split[0]), Long.parseLong(split[1])); } /** * description: 手动执行拉取数据 * author: linchunpeng * date: 2023-04-25 9:53 */ @RequestMapping(value = "/manual", method ={RequestMethod.GET, RequestMethod.POST}) public Map manual(@RequestBody ChangeLogsRequestDto requestDto) { Map resultMap = new HashMap<>(); pullDataService.pullDataAsync(requestDto, 1); resultMap.put("code", 200); resultMap.put("message", "调用成功"); return resultMap; } /** * description: 下载拉取结果zip * author: linchunpeng * date: 2023-04-25 9:53 */ @GetMapping("/download/{requestId}") public void downloadByRequestId(@PathVariable("requestId") String requestId, HttpServletResponse response) throws IOException { log.info("拉取数据zip包下载,requestId:{}", requestId); PullRecord pullRecord = pullRecordService.getByRequestId(requestId); if (pullRecord == null || StringUtils.isBlank(pullRecord.getCompleteZipPath()) || !FileUtil.exist(pullRecord.getCompleteZipPath())) { response.setContentType("text/html; charset=UTF-8"); //转码 PrintWriter out = response.getWriter(); out.flush(); out.println(""); return; } FileUtils.responseWithFile(pullRecord.getCompleteZipPath(), response); } /** * description:自动摆渡查询拉取结果 * author:linchunpeng * date:2024/6/17 */ @PostMapping(value = "/query/result") public FerryTaskPullResult queryResult(@RequestBody ChangeLogsRequestDto requestDto) { return pullDataService.queryAutoFerryPullResult(requestDto.getAutoFerryTaskId()); } }