public MessageTo insertExcel(MultipartFile file) {
try {
InputStream is = file.getInputStream();
Workbook hssfWorkbook = null;
if (file.getOriginalFilename().endsWith("xlsx")) {
hssfWorkbook = new XSSFWorkbook(is);//Excel 2007
} else if (file.getOriginalFilename().endsWith("xls")) {
hssfWorkbook = new HSSFWorkbook(is);//Excel 2003
}
Sheet hssfSheet = hssfWorkbook.getSheetAt(0);
String titleformat = "名称,类型,编号,所属市,所属地区,经度,纬度,地址,联系电话,成立时间,";
String title = "";
Row firstRow = hssfSheet.getRow(0);
for (int j = 0; j < firstRow.getLastCellNum(); j++) {
title += firstRow.getCell(j).toString().trim() + ',';
}
if (!title.equals(titleformat)) {
return MessageTo.ofError("文件不符合格式!你可以下载模板重新导入!");
}
List<String> regionnameList = new ArrayList<>();
List<String> nameList = new ArrayList<>();
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
Row hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
if (null == hssfRow.getCell(0)) {
return MessageTo.ofError("Excel名称有列为空");
}
if (null == hssfRow.getCell(1)) {
return MessageTo.ofError("Excel类型有列为空");
}
if (null == hssfRow.getCell(3)) {
return MessageTo.ofError("Excel所属市有列为空");
}
if (null == hssfRow.getCell(4)) {
return MessageTo.ofError("Excel所属地区类型有列为空");
}
nameList.add(hssfRow.getCell(0).toString());
regionnameList.add(hssfRow.getCell(3).toString());
regionnameList.add(hssfRow.getCell(4).toString());
}
}
regionnameList = regionnameList.stream().distinct().collect(Collectors.toList());
List<CommonRegion> regionList = commonRegionMapperExt.getRegionByName(regionnameList);
List<CommonPartyOrgan> partyOrganList = commonPartyOrganMapperExt.getPartyOrganByName(nameList);
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
Row hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
String name = hssfRow.getCell(0).toString();
List<CommonPartyOrgan> partyOrgan1 = partyOrganList.stream().filter(
(CommonPartyOrgan s) -> s.getName().equals(name))
.collect(Collectors.toList());
if (partyOrgan1.size() == 0) {
CommonPartyOrgan partyOrgan = new CommonPartyOrgan();
partyOrgan.setId(PrimaryKeyUtil.getPrimaryKeyId());
partyOrgan.setName(name);
String type = hssfRow.getCell(1).toString();
Byte OrganType = null;
if (type.equals("党委"))
OrganType = 1;
else if (type.equals("党总支"))
OrganType = 2;
else if (type.equals("党支部"))
OrganType = 3;
partyOrgan.setOrganType(OrganType);
partyOrgan.setCode(hssfRow.getCell(2).toString());
String city = hssfRow.getCell(3).toString();
List<CommonRegion> list1 = regionList.stream().filter((CommonRegion s) -> s.getRegionName().equals(city))
.collect(Collectors.toList());
if (list1.size() > 0) {
partyOrgan.setProvinceCode(list1.get(0).getParentRegionCode());
partyOrgan.setCityCode(list1.get(0).getRegionCode());
} else
return MessageTo.ofError(city + "不存在");
String area = hssfRow.getCell(4).toString();
List<CommonRegion> list2 = regionList.stream().filter((CommonRegion s) -> s.getRegionName().equals(area))
.collect(Collectors.toList());
if (list2.size() > 0)
partyOrgan.setAreaCode(list2.get(0).getRegionCode());
else
return MessageTo.ofError(area + "不存在");
if (hssfRow.getCell(5) != null)
partyOrgan.setLongitude(Double.valueOf(hssfRow.getCell(5).toString()));
if (hssfRow.getCell(6) != null)
partyOrgan.setLatitude(Double.valueOf(hssfRow.getCell(6).toString()));
partyOrgan.setAddress(hssfRow.getCell(7) == null ? null : hssfRow.getCell(7).toString());
String tel = "";
int cellType = hssfRow.getCell(8).getCellType();
if (cellType == 0) {
DataFormatter dataFormatter = new DataFormatter();
dataFormatter.addFormat("###########", null);
tel = dataFormatter.formatCellValue(hssfRow.getCell(8));
} else {
tel = hssfRow.getCell(8).toString();
}
Date time = hssfRow.getCell(9) == null ? null : hssfRow.getCell(9).getDateCellValue();
partyOrgan.setEstablishedTime(time);
partyOrgan.setCreateUserId(LoginContext.getUserId());
Date now = new Date();
partyOrgan.setCreateTime(now);
partyOrgan.setIsdel("N");
commonPartyOrganMapper.insertSelective(partyOrgan);
}
}
}
return MessageTo.ofSuccess("0", "导入成功");
} catch (Exception e) {
e.printStackTrace();
return MessageTo.ofError("500", e.getMessage());
}
}