123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package com.example.service.house;
- import com.example.pojo.vo.GetHouseDataImportTemplatesVo;
- import com.example.pojo.dto.HouseDataImportDto;
- import com.example.enums.HouseDataImportEnum;
- import com.example.utils.R;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.io.FileUtils;
- import org.apache.poi.ss.usermodel.Row;
- import org.apache.poi.ss.usermodel.Sheet;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.apache.poi.xssf.usermodel.XSSFWorkbook;
- import org.springframework.stereotype.Service;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.File;
- import java.io.InputStream;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.util.ArrayList;
- import java.util.List;
- @Slf4j
- @Service
- public class HouseDataImportService {
- public R getTemplates() {
- List<GetHouseDataImportTemplatesVo> vos = new ArrayList<>();
- GetHouseDataImportTemplatesVo wxys = new GetHouseDataImportTemplatesVo();
- wxys.setId(HouseDataImportEnum.WEI_XIU_YU_SUAN.name());
- wxys.setName("维修费用预算(第二年预算)");
- wxys.setUrl("house-car" + "/" + "oss/public/template/house/wxys.xlsx");
- vos.add(wxys);
- GetHouseDataImportTemplatesVo czys = new GetHouseDataImportTemplatesVo();
- czys.setId(HouseDataImportEnum.CHU_ZHU_YU_SUAN.name());
- czys.setName("对外出租费用预算(第二年预算)");
- czys.setUrl("house-car" + "/" + "oss/public/template/house/czys.xlsx");
- vos.add(czys);
- return R.ok().put("data", vos);
- }
- public R dataImport(HouseDataImportDto dto, MultipartFile file) {
- if (HouseDataImportEnum.WEI_XIU_YU_SUAN.equals(dto.getId())) {
- return wxysImport(dto, file);
- }
- if (HouseDataImportEnum.CHU_ZHU_YU_SUAN.equals(dto.getId())) {
- return czysImport(dto, file);
- }
- return R.ok();
- }
- public synchronized R wxysImport(HouseDataImportDto dto, MultipartFile file) {
- try {
- // String dir = "data/data-import/house/wei_xiu_yu_suan/";
- String dir = "/data/data-import/house/wei_xiu_yu_suan/";
- Files.createDirectories(Paths.get(dir));
- File fileNew = new File(dir + dto.getYear() + ".xlsx");
- FileUtils.copyInputStreamToFile(file.getInputStream(), fileNew);
- try(InputStream inputStream = Files.newInputStream(fileNew.toPath());
- Workbook workbook = new XSSFWorkbook(inputStream)
- ) {
- // 读取第一个工作表
- Sheet sheet = workbook.getSheetAt(0);
- // 表头行
- Row headerRow = sheet.getRow(0);
- // 列数
- int columnCount = headerRow.getPhysicalNumberOfCells();
- if (5 != columnCount) {
- return R.error("列数和模板不一致");
- }
- }
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- return R.error("导入失败");
- }
- return R.ok();
- }
- public synchronized R czysImport(HouseDataImportDto dto, MultipartFile file) {
- try {
- // String dir = "data/data-import/house/chu_zu_yu_suan/";
- String dir = "/data/data-import/house/chu_zu_yu_suan/";
- Files.createDirectories(Paths.get(dir));
- File fileNew = new File(dir + dto.getYear() + ".xlsx");
- FileUtils.copyInputStreamToFile(file.getInputStream(), fileNew);
- try(InputStream inputStream = Files.newInputStream(fileNew.toPath());
- Workbook workbook = new XSSFWorkbook(inputStream)
- ) {
- // 读取第一个工作表
- Sheet sheet = workbook.getSheetAt(0);
- // 表头行
- Row headerRow = sheet.getRow(0);
- // 列数
- int columnCount = headerRow.getPhysicalNumberOfCells();
- if (5 != columnCount) {
- return R.error("列数和模板不一致");
- }
- }
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- return R.error("导入失败");
- }
- return R.ok();
- }
- }
|