WindTurbineDataInfoController.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.znzn.project.dc.dtdata.controller;
  2. import com.znzn.project.dc.dtdata.common.R;
  3. import com.znzn.project.dc.dtdata.inOutEntity.CollectDataInData;
  4. import com.znzn.project.dc.dtdata.inOutEntity.CollectDataWithFileInData;
  5. import com.znzn.project.dc.dtdata.service.IDataCollectionService;
  6. import com.znzn.project.dc.dtdata.service.IWindTurbineDataInfoService;
  7. import io.swagger.v3.oas.annotations.Operation;
  8. import io.swagger.v3.oas.annotations.tags.Tag;
  9. import jakarta.annotation.Resource;
  10. import jakarta.validation.Valid;
  11. import org.springframework.core.io.ByteArrayResource;
  12. import org.springframework.http.HttpHeaders;
  13. import org.springframework.http.MediaType;
  14. import org.springframework.http.ResponseEntity;
  15. import org.springframework.web.bind.annotation.PostMapping;
  16. import org.springframework.web.bind.annotation.RequestBody;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import java.nio.charset.StandardCharsets;
  20. /**
  21. * <p>
  22. * 前端控制器
  23. * </p>
  24. *
  25. * @author 魏志亮
  26. * @since 2025-11-10
  27. */
  28. @RestController
  29. @RequestMapping("/windTurbineDataInfo")
  30. @Tag(name = "风机数据信息", description = "风机数据相关接口")
  31. public class WindTurbineDataInfoController {
  32. @Resource
  33. private IWindTurbineDataInfoService windTurbineDataInfoService;
  34. @Resource
  35. private IDataCollectionService dataCollectionService;
  36. // @PostMapping("getEveryWindAndTypeData")
  37. // @Operation(summary = "查询每个风场+机型的风机数据", description = "查询每个风场+机型的风机数据11")
  38. // public R<String> getEveryWindAndTypeData() {
  39. // windTurbineDataInfoService.getEveryWindAndTypeData();
  40. // return R.ok();
  41. // }
  42. @PostMapping("collectData")
  43. @Operation(summary = "收集数据", description = "收集数据")
  44. public R<String> collectData(@RequestBody CollectDataInData inData) {
  45. dataCollectionService.collectData(inData);
  46. return R.ok();
  47. }
  48. @PostMapping("collectDataWithFile")
  49. @Operation(summary = "收集数据下载", description = "收集数据下载")
  50. public ResponseEntity<org.springframework.core.io.Resource> collectDataWithFile(@RequestBody @Valid CollectDataWithFileInData inData) {
  51. byte[] csvBytes = dataCollectionService.collectDataWithFile(inData);
  52. ByteArrayResource resource = new ByteArrayResource(csvBytes);
  53. // 4. 构建响应头(设置下载文件名、文件类型等)
  54. HttpHeaders headers = new HttpHeaders();
  55. String fileName = "数据导出_" + System.currentTimeMillis() + ".csv";
  56. // 处理中文文件名编码,避免浏览器显示乱码
  57. headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" +
  58. java.net.URLEncoder.encode(fileName, StandardCharsets.UTF_8) + "\"");
  59. headers.add(HttpHeaders.CONTENT_TYPE, "text/csv; charset=UTF-8");
  60. // 5. 构建并返回响应实体
  61. return ResponseEntity.ok()
  62. .headers(headers)
  63. .contentLength(csvBytes.length)
  64. .contentType(MediaType.parseMediaType("text/csv; charset=UTF-8"))
  65. .body(resource);
  66. }
  67. }