package cn.com.goldenwater.dcproj.service.impl.general; import cn.com.goldenwater.dcproj.model.AttJskejianFlkdisBase; import cn.com.goldenwater.dcproj.service.AttJskejianFlkdisBaseService; import cn.com.goldenwater.dcproj.service.ExcelImportService; import cn.com.goldenwater.dcproj.util.MultipartFileToFileUtil; import cn.com.goldenwater.dcproj.util.ReadExcelUtil; import cn.com.goldenwater.dcproj.utils.GeoUtil; import cn.com.goldenwater.id.util.UuidUtil; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Row; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.util.Date; import java.util.List; import java.util.Map; @Service @Transactional(rollbackFor = Exception.class) public class ExcelImportServiceImpl implements ExcelImportService { @Autowired private AttJskejianFlkdisBaseService attJskejianFlkdisBaseService; @Override public String excelImport(MultipartFile file) throws Exception { List list = ReadExcelUtil.readExcelData(MultipartFileToFileUtil.multipartFileToFile(file)); if (list == null || list.size() == 0) { return "读取表格 0 条数据!"; } int ret = 0; for (Row row : list) { try { AttJskejianFlkdisBase base = row2Base(row); if (base != null) { int res = attJskejianFlkdisBaseService.insert(base); if (res != 0) { ret++; } } } catch (Exception e) { e.printStackTrace(); } } return "读取表格" + list.size() + "条数据,成功导入" + ret + "条数据。"; } private AttJskejianFlkdisBase row2Base(Row row) { AttJskejianFlkdisBase base = new AttJskejianFlkdisBase(); base.setId(UuidUtil.uuid()); base.setName(String.valueOf(row.getCell(1))); base.setRvReaLkName(String.valueOf(row.getCell(2))); base.setAdCode(String.valueOf(row.getCell(3))); base.setAdName(String.valueOf(row.getCell(4))); base.setLocation(String.valueOf(row.getCell(5))); Double centerX = null; Double gdX = null; if (StringUtils.isNotBlank(ReadExcelUtil.getValue(row.getCell(6)))) { centerX = Double.parseDouble(String.valueOf(row.getCell(6))); } base.setCenterX(centerX); Double centerY = null; if (StringUtils.isNotBlank(ReadExcelUtil.getValue(row.getCell(7)))) { centerY = Double.parseDouble(String.valueOf(row.getCell(7))); } if (centerX != null && centerY != null) { Map map = GeoUtil.wgs84togcj02(centerX, centerY); base.setGdX(map.get("lon")); base.setGdY(map.get("lat")); } base.setCenterY(centerY); base.setContRvonNameDuty(String.valueOf(row.getCell(8))); base.setTownRvonNameDuty(String.valueOf(row.getCell(9))); base.setVilgRvonNameDuty(String.valueOf(row.getCell(10))); base.setPblmType(pblmTypeConversion(String.valueOf(row.getCell(11)))); base.setPblmDesc(String.valueOf(row.getCell(12))); base.setRectConc(rectConcConversion(String.valueOf(row.getCell(13)))); base.setIntm(new Date()); base.setUptm(new Date()); // 名称不能为空 if (StringUtils.isBlank(base.getName())) { return null; } // 去重判断 // AttJskejianFlkdisBaseParam baseParam = Builder.of(AttJskejianFlkdisBaseParam::new) // .with(AttJskejianFlkdisBaseParam::setName, base.getName()) // .with(AttJskejianFlkdisBaseParam::setPblmType, base.getPblmType()) // .with(AttJskejianFlkdisBaseParam::setPblmDesc, base.getPblmDesc()) // .build(); // // List attJskejianFlkdisBaseList = attJskejianFlkdisBaseService.findList(baseParam); // // if (attJskejianFlkdisBaseList != null && attJskejianFlkdisBaseList.size() > 0) { // return null; // } return base; } private String pblmTypeConversion(String pblmType) { if (StringUtils.isBlank(pblmType)) { return pblmType; } switch (pblmType) { case "乱占": return "1"; case "乱采": return "2"; case "乱堆": return "3"; case "乱建": return "4"; case "其他": return "5"; default: if (pblmType.length() == 1) { return pblmType; } else { return ""; } } } private String rectConcConversion(String rectConc) { if (StringUtils.isBlank(rectConc)) { return rectConc; } switch (rectConc) { case "已销号": return "1"; case "未销号": return "2"; case "新增": return "3"; default: if (rectConc.length() == 1) { return rectConc; } else { return ""; } } } }