package com.yj.earth.business.controller; import com.yj.earth.common.util.ApiResponse; import com.yj.earth.vo.CsvField; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Tag(name = "CSV文件解析") @RestController @RequestMapping("/csv") public class CsvController { @GetMapping("/parseCsv") @Operation(summary = "解析CSV文件") public ApiResponse parseCsv(@Parameter(description = "文件路径") @RequestParam String filePath) { Map response = new HashMap<>(); List fieldList = new ArrayList<>(); try { File file = new File(filePath); try (InputStreamReader reader = new InputStreamReader(new FileInputStream(file), "GBK"); CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT)) { // 遍历所有行(CSVRecord即一行数据) for (CSVRecord record : parser) { // 确保每行至少有3列(A、B、C列) if (record.size() >= 3) { String label = record.get(1).trim(); String key = record.get(2).trim(); fieldList.add(new CsvField(key, label)); } } } return ApiResponse.success(fieldList); } catch (Exception e) { return ApiResponse.failure(e.getMessage()); } } }