园区定时数据上传
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
4.1 KiB

7 months ago
package com.hxjt.dataupload.controller;
import com.hxjt.dataupload.service.FxfxdxService;
import com.hxjt.dataupload.task.AsyncTask;
import com.hxjt.dataupload.utils.JsonData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
/**
* liwenxuan
*/
@RestController
@RequestMapping("dataupload/api/v1")
public class UploadController {
@Autowired
private AsyncTask asyncTask;
@Autowired
private FxfxdxService fxfxdxService;
@RequestMapping("list")
public Object list(){
Map<String,String > map = new HashMap<>();
map.put("1","asdfdsa");
map.put("2","S6543465");
return map;
}
@GetMapping("async")
public JsonData testAsync(){
long begin = System.currentTimeMillis();
/*asyncTask.task1();
asyncTask.task2();
asyncTask.task3();*/
Future<String> task4 = asyncTask.task4();
Future<String> task5 = asyncTask.task5();
for(;;){
if(task4.isDone() && task5.isDone()){
try {
String task4Result = task4.get();
System.out.println(task4Result);
String task5Result = task5.get();
System.out.println(task5Result);
}catch (InterruptedException e){
e.printStackTrace();
}catch (ExecutionException e){
e.printStackTrace();
}finally {
break;
}
}
}
long end = System.currentTimeMillis();
return JsonData.buildSuccess(end-begin);
}
/*获取用户有权限的启用状态的表单列表树形结构*/
@RequestMapping(value = "/getOTBILLIDById")
public JsonData getCustomerFormList(@RequestBody Map<String,String> requestBody) {
//System.out.println(requestBody.get("id"));
if(!StringUtils.isBlank(requestBody.get("id"))){
String result = fxfxdxService.getOTBILLIDById(requestBody.get("id"));
return JsonData.buildSuccess(result);
}else{
return JsonData.buildError("请先输入id");
}
}
@PostMapping("/uploadPDF")
public ResponseEntity<String> uploadPdf(@RequestParam("file") MultipartFile file) {
String uploadDir = "F://dataUpload/zypPdfs/";
// 1. 验证文件类型和大小
if (file.isEmpty()) {
return ResponseEntity.badRequest().body("文件不能为空");
}
if (!file.getContentType().equals("application/pdf")) {
return ResponseEntity.badRequest().body("仅支持PDF格式");
}
if (file.getSize() > 10 * 1024 * 1024) { // 限制10MB
return ResponseEntity.badRequest().body("文件大小超过限制");
}
try {
// 确保目录存在
File targetDir = new File(uploadDir);
if (!targetDir.exists()) {
targetDir.mkdirs(); // 自动创建多级目录
}
// 生成唯一文件名(可选,避免重复覆盖)
String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename();
// 构建目标文件的绝对路径
File targetFile = new File(targetDir.getAbsolutePath() + File.separator + fileName);
// 保存文件到磁盘
file.transferTo(targetFile);
return ResponseEntity.ok("上传成功");
} catch (IOException e) {
return ResponseEntity.internalServerError().body("文件存储失败:" + e.getMessage());
}
}
}