package com.znzn.project.dc.dtdata.controller; import com.znzn.project.dc.dtdata.common.R; import com.znzn.project.dc.dtdata.inOutEntity.CollectDataInData; import com.znzn.project.dc.dtdata.inOutEntity.CollectDataWithFileInData; import com.znzn.project.dc.dtdata.service.IDataCollectionService; import com.znzn.project.dc.dtdata.service.IWindTurbineDataInfoService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.nio.charset.StandardCharsets; /** *

* 前端控制器 *

* * @author 魏志亮 * @since 2025-11-10 */ @RestController @RequestMapping("/windTurbineDataInfo") @Tag(name = "风机数据信息", description = "风机数据相关接口") public class WindTurbineDataInfoController { @Resource private IWindTurbineDataInfoService windTurbineDataInfoService; @Resource private IDataCollectionService dataCollectionService; // @PostMapping("getEveryWindAndTypeData") // @Operation(summary = "查询每个风场+机型的风机数据", description = "查询每个风场+机型的风机数据11") // public R getEveryWindAndTypeData() { // windTurbineDataInfoService.getEveryWindAndTypeData(); // return R.ok(); // } @PostMapping("collectData") @Operation(summary = "收集数据", description = "收集数据") public R collectData(@RequestBody CollectDataInData inData) { dataCollectionService.collectData(inData); return R.ok(); } @PostMapping("collectDataWithFile") @Operation(summary = "收集数据下载", description = "收集数据下载") public ResponseEntity collectDataWithFile(@RequestBody @Valid CollectDataWithFileInData inData) { byte[] csvBytes = dataCollectionService.collectDataWithFile(inData); ByteArrayResource resource = new ByteArrayResource(csvBytes); // 4. 构建响应头(设置下载文件名、文件类型等) HttpHeaders headers = new HttpHeaders(); String fileName = "数据导出_" + System.currentTimeMillis() + ".csv"; // 处理中文文件名编码,避免浏览器显示乱码 headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + java.net.URLEncoder.encode(fileName, StandardCharsets.UTF_8) + "\""); headers.add(HttpHeaders.CONTENT_TYPE, "text/csv; charset=UTF-8"); // 5. 构建并返回响应实体 return ResponseEntity.ok() .headers(headers) .contentLength(csvBytes.length) .contentType(MediaType.parseMediaType("text/csv; charset=UTF-8")) .body(resource); } }