Browse Source

导入模板

master
sunyuchao 3 years ago
parent
commit
ee5caab044
  1. 59
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcCityManagementController.java
  2. 59
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPublicServiceController.java
  3. 61
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcSuperiorResourceController.java
  4. 25
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcCityManagementExcel.java
  5. 25
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcPublicServiceExcel.java
  6. 24
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcSuperiorResourceExcel.java
  7. 132
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcCityManagementExcelImportListener.java
  8. 132
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPublicServiceExcelImportListener.java
  9. 134
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcSuperiorResourceExcelImportListener.java
  10. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcCityManagementService.java
  11. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPublicServiceService.java
  12. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcSuperiorResourceService.java
  13. 131
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcCityManagementServiceImpl.java
  14. 129
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPublicServiceServiceImpl.java
  15. 130
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcSuperiorResourceServiceImpl.java

59
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcCityManagementController.java

@ -7,40 +7,47 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcCityManagementDTO;
import com.epmet.dto.form.IcCityManagementAddEditFormDTO;
import com.epmet.dto.form.IcCityManagementListFormDTO;
import com.epmet.dto.result.IcCityManagementListResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.excel.IcCityManagementExcel;
import com.epmet.service.IcCityManagementService;
import com.epmet.utils.ImportTaskUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.nio.file.Path;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
@ -52,7 +59,7 @@ import java.util.List;
@RestController
@RequestMapping("icCityManagement")
@Slf4j
public class IcCityManagementController {
public class IcCityManagementController implements ResultDataResolver {
@Autowired
private IcCityManagementService icCityManagementService;
@ -159,6 +166,48 @@ public class IcCityManagementController {
}
}
@PostMapping("import")
public Result importExcel(MultipartFile file) {
// 1.暂存文件
String originalFilename = file.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
Path fileSavePath;
try {
Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_city_management", "import");
fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName));
} catch (IOException e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【城市管理导入】创建临时存储文件失败:{}", errorMsg);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败");
}
InputStream is = null;
FileOutputStream os = null;
try {
is = file.getInputStream();
os = new FileOutputStream(fileSavePath.toString());
IOUtils.copy(is, os);
} catch (Exception e) {
log.error("importExcel exception", e);
} finally {
org.apache.poi.util.IOUtils.closeQuietly(is);
org.apache.poi.util.IOUtils.closeQuietly(os);
}
// 2.生成导入任务记录
ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(
ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_IC_VACCINE),
ServiceConstant.EPMET_COMMON_SERVICE,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
"excel导入优势资源管理信息错误",
"导入势资源管理信息失败");
// 3.执行导入
icCityManagementService.importExcel(fileSavePath, rstData.getTaskId());
return new Result();
}
}

59
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPublicServiceController.java

@ -7,41 +7,48 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcPublicServiceDTO;
import com.epmet.dto.form.IcPublicServiceAddEditFormDTO;
import com.epmet.dto.form.IcPublicServiceListFormDTO;
import com.epmet.dto.form.IcSuperiorResourceAddEditFormDTO;
import com.epmet.dto.result.IcPublicServiceListResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.excel.IcPublicServiceExcel;
import com.epmet.service.IcPublicServiceService;
import com.epmet.utils.ImportTaskUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.nio.file.Path;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
@ -53,7 +60,7 @@ import java.util.List;
@RestController
@RequestMapping("icPublicService")
@Slf4j
public class IcPublicServiceController {
public class IcPublicServiceController implements ResultDataResolver {
@Autowired
private IcPublicServiceService icPublicServiceService;
@ -160,6 +167,48 @@ public class IcPublicServiceController {
}
}
@PostMapping("import")
public Result importExcel(MultipartFile file) {
// 1.暂存文件
String originalFilename = file.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
Path fileSavePath;
try {
Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_public_service", "import");
fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName));
} catch (IOException e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【优势资源管理导入】创建临时存储文件失败:{}", errorMsg);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败");
}
InputStream is = null;
FileOutputStream os = null;
try {
is = file.getInputStream();
os = new FileOutputStream(fileSavePath.toString());
IOUtils.copy(is, os);
} catch (Exception e) {
log.error("importExcel exception", e);
} finally {
org.apache.poi.util.IOUtils.closeQuietly(is);
org.apache.poi.util.IOUtils.closeQuietly(os);
}
// 2.生成导入任务记录
ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(
ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_IC_VACCINE),
ServiceConstant.EPMET_COMMON_SERVICE,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
"excel导入优势资源管理信息错误",
"导入势资源管理信息失败");
// 3.执行导入
icPublicServiceService.importExcel(fileSavePath, rstData.getTaskId());
return new Result();
}
}

61
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcSuperiorResourceController.java

@ -6,41 +6,49 @@ import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcSuperiorResourceDTO;
import com.epmet.dto.form.IcSuperiorResourceAddEditFormDTO;
import com.epmet.dto.form.IcSuperiorResourceListFormDTO;
import com.epmet.dto.result.IcSuperiorResourceListResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.excel.IcSuperiorResourceExcel;
import com.epmet.service.IcSuperiorResourceService;
import com.epmet.utils.ImportTaskUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.nio.file.Path;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
@ -52,7 +60,7 @@ import java.util.List;
@RestController
@RequestMapping("icSuperiorResource")
@Slf4j
public class IcSuperiorResourceController {
public class IcSuperiorResourceController implements ResultDataResolver {
@Autowired
private IcSuperiorResourceService icSuperiorResourceService;
@ -159,5 +167,48 @@ public class IcSuperiorResourceController {
}
}
@PostMapping("import")
public Result importExcel(MultipartFile file) {
// 1.暂存文件
String originalFilename = file.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
Path fileSavePath;
try {
Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_superior_resource", "import");
fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName));
} catch (IOException e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【优势资源管理导入】创建临时存储文件失败:{}", errorMsg);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败");
}
InputStream is = null;
FileOutputStream os = null;
try {
is = file.getInputStream();
os = new FileOutputStream(fileSavePath.toString());
IOUtils.copy(is, os);
} catch (Exception e) {
log.error("importExcel exception", e);
} finally {
org.apache.poi.util.IOUtils.closeQuietly(is);
org.apache.poi.util.IOUtils.closeQuietly(os);
}
// 2.生成导入任务记录
ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(
ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_IC_VACCINE),
ServiceConstant.EPMET_COMMON_SERVICE,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
"excel导入优势资源管理信息错误",
"导入势资源管理信息失败");
// 3.执行导入
icSuperiorResourceService.importExcel(fileSavePath, rstData.getTaskId());
return new Result();
}
}

25
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcCityManagementExcel.java

@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 城市管理图层
*
@ -15,10 +17,12 @@ public class IcCityManagementExcel {
@ExcelProperty(value = "场所名称")
@ColumnWidth(25)
@NotBlank(message = "场所名称为必填项")
private String name;
@ExcelProperty(value = "场所类别")
@ColumnWidth(20)
@NotBlank(message = "场所类别为必填项")
private String categoryName;
@ExcelProperty(value = "占地面积")
@ -31,6 +35,27 @@ public class IcCityManagementExcel {
@ExcelProperty(value = "地址")
@ColumnWidth(25)
@NotBlank(message = "地址为必填项")
private String address;
@Data
public static class RowRemarkMessage {
@ExcelProperty("场所名称")
@ColumnWidth(20)
private String name;
@ExcelProperty("场所类别")
@ColumnWidth(20)
private String categoryName;
@ExcelProperty("地址")
@ColumnWidth(20)
private String address;
@ColumnWidth(60)
@ExcelProperty("错误信息")
private String errorInfo;
}
}

25
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcPublicServiceExcel.java

@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 公共服务图层
*
@ -15,10 +17,12 @@ public class IcPublicServiceExcel {
@ExcelProperty(value = "场所名称")
@ColumnWidth(25)
@NotBlank(message = "场所名称为必填项")
private String name;
@ExcelProperty(value = "场所类别")
@ColumnWidth(20)
@NotBlank(message = "场所类别为必填项")
private String categoryName;
@ExcelProperty(value = "占地面积")
@ -31,6 +35,27 @@ public class IcPublicServiceExcel {
@ExcelProperty(value = "地址")
@ColumnWidth(25)
@NotBlank(message = "地址为必填项")
private String address;
@Data
public static class RowRemarkMessage {
@ExcelProperty("场所名称")
@ColumnWidth(20)
private String name;
@ExcelProperty("场所类别")
@ColumnWidth(20)
private String categoryName;
@ExcelProperty("地址")
@ColumnWidth(20)
private String address;
@ColumnWidth(60)
@ExcelProperty("错误信息")
private String errorInfo;
}
}

24
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcSuperiorResourceExcel.java

@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 优势资源管理
*
@ -15,10 +17,12 @@ public class IcSuperiorResourceExcel {
@ExcelProperty(value = "场所名称")
@ColumnWidth(25)
@NotBlank(message = "场所名称为必填项")
private String name;
@ExcelProperty(value = "场所类别")
@ColumnWidth(20)
@NotBlank(message = "场所类别为必填项")
private String categoryName;
@ExcelProperty(value = "占地面积")
@ -31,7 +35,27 @@ public class IcSuperiorResourceExcel {
@ExcelProperty(value = "地址")
@ColumnWidth(25)
@NotBlank(message = "地址为必填项")
private String address;
@Data
public static class RowRemarkMessage {
@ExcelProperty("场所名称")
@ColumnWidth(20)
private String name;
@ExcelProperty("场所类别")
@ColumnWidth(20)
private String categoryName;
@ExcelProperty("地址")
@ColumnWidth(20)
private String address;
@ColumnWidth(60)
@ExcelProperty("错误信息")
private String errorInfo;
}
}

132
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcCityManagementExcelImportListener.java

@ -0,0 +1,132 @@
package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.entity.IcCityManagementEntity;
import com.epmet.excel.IcCityManagementExcel;
import com.epmet.service.CoverageService;
import com.epmet.service.impl.IcCityManagementServiceImpl;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 城市管理excel导入监听器
*/
@Data
@Slf4j
public class IcCityManagementExcelImportListener implements ReadListener<IcCityManagementExcel> {
//最大条数阈值
public static final int MAX_THRESHOLD = 200;
private String currentUserId;
private String currentCustomerId;
private String currentAgencyId;
private String currentAgencyPids;
//数据
private List<IcCityManagementEntity> datas = new ArrayList<>();
//错误项列表
private List<IcCityManagementExcel.RowRemarkMessage> errorRows = new ArrayList<>();
//其他被标记出来的列表列表
private List<IcCityManagementExcel.RowRemarkMessage> otherRows = new ArrayList<>();
private IcCityManagementServiceImpl IcCityManagementServiceImpl;
private CoverageService coverageService;
public IcCityManagementExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcCityManagementServiceImpl IcCityManagementServiceImpl, CoverageService coverageService) {
this.currentUserId = currentUserId;
this.currentCustomerId = currentCustomerId;
this.currentAgencyId = currentAgencyId;
this.currentAgencyPids = currentAgencyPids;
this.IcCityManagementServiceImpl = IcCityManagementServiceImpl;
this.coverageService = coverageService;
}
@Override
public void invoke(IcCityManagementExcel data, AnalysisContext context) {
try {
// 先校验数据
ValidatorUtils.validateEntity(data);
// 去除前后空格
if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim());
}
if (StringUtils.isNotBlank(data.getCategoryName())) {
data.setCategoryName(data.getCategoryName().trim());
}
if (StringUtils.isNotBlank(data.getAddress())) {
data.setAddress(data.getAddress().trim());
}
IcCityManagementEntity IcCityManagementEntity = ConvertUtils.sourceToTarget(data, IcCityManagementEntity.class);
IcCityManagementEntity.setSourceType("import");
IcCityManagementEntity.setCategory(data.getCategoryName());
IcCityManagementEntity.setAreaCovered(data.getAreaCoveredName());
IcCityManagementEntity.setCapacity(data.getCapacityName());
datas.add(IcCityManagementEntity);
if (datas.size() == MAX_THRESHOLD) {
execPersist();
}
} catch (Exception e) {
String errorMsg = null;
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else {
errorMsg = "未知错误";
log.error("【城市管理导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}
IcCityManagementExcel.RowRemarkMessage errorRow = new IcCityManagementExcel.RowRemarkMessage();
errorRow.setName(data.getName());
errorRow.setCategoryName(data.getCategoryName());
errorRow.setAddress(data.getAddress());
errorRow.setErrorInfo(errorMsg);
errorRows.add(errorRow);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 最后几条达不到阈值,这里必须再调用一次
execPersist();
}
/**
* 执行持久化
*/
private void execPersist() {
try {
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(currentCustomerId, "city_management");
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getCategoryKey, IcCoverageCategoryDictListResultDTO::getCategoryName));
datas.forEach(d -> {
d.setCategory(dictMap.get(d.getCategory()));
});
IcCityManagementServiceImpl.insertBatch(datas);
} finally {
datas.clear();
}
}
/**
* 获取错误行
*
* @return
*/
public List<IcCityManagementExcel.RowRemarkMessage> getErrorRows() {
return errorRows;
}
}

132
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPublicServiceExcelImportListener.java

@ -0,0 +1,132 @@
package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.entity.IcPublicServiceEntity;
import com.epmet.excel.IcPublicServiceExcel;
import com.epmet.service.CoverageService;
import com.epmet.service.impl.IcPublicServiceServiceImpl;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 公共服务管理excel导入监听器
*/
@Data
@Slf4j
public class IcPublicServiceExcelImportListener implements ReadListener<IcPublicServiceExcel> {
//最大条数阈值
public static final int MAX_THRESHOLD = 200;
private String currentUserId;
private String currentCustomerId;
private String currentAgencyId;
private String currentAgencyPids;
//数据
private List<IcPublicServiceEntity> datas = new ArrayList<>();
//错误项列表
private List<IcPublicServiceExcel.RowRemarkMessage> errorRows = new ArrayList<>();
//其他被标记出来的列表列表
private List<IcPublicServiceExcel.RowRemarkMessage> otherRows = new ArrayList<>();
private IcPublicServiceServiceImpl IcPublicServiceServiceImpl;
private CoverageService coverageService;
public IcPublicServiceExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcPublicServiceServiceImpl IcPublicServiceServiceImpl, CoverageService coverageService) {
this.currentUserId = currentUserId;
this.currentCustomerId = currentCustomerId;
this.currentAgencyId = currentAgencyId;
this.currentAgencyPids = currentAgencyPids;
this.IcPublicServiceServiceImpl = IcPublicServiceServiceImpl;
this.coverageService = coverageService;
}
@Override
public void invoke(IcPublicServiceExcel data, AnalysisContext context) {
try {
// 先校验数据
ValidatorUtils.validateEntity(data);
// 去除前后空格
if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim());
}
if (StringUtils.isNotBlank(data.getCategoryName())) {
data.setCategoryName(data.getCategoryName().trim());
}
if (StringUtils.isNotBlank(data.getAddress())) {
data.setAddress(data.getAddress().trim());
}
IcPublicServiceEntity IcPublicServiceEntity = ConvertUtils.sourceToTarget(data, IcPublicServiceEntity.class);
IcPublicServiceEntity.setSourceType("import");
IcPublicServiceEntity.setCategory(data.getCategoryName());
IcPublicServiceEntity.setAreaCovered(data.getAreaCoveredName());
IcPublicServiceEntity.setCapacity(data.getCapacityName());
datas.add(IcPublicServiceEntity);
if (datas.size() == MAX_THRESHOLD) {
execPersist();
}
} catch (Exception e) {
String errorMsg = null;
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else {
errorMsg = "未知错误";
log.error("【公共服务管理导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}
IcPublicServiceExcel.RowRemarkMessage errorRow = new IcPublicServiceExcel.RowRemarkMessage();
errorRow.setName(data.getName());
errorRow.setCategoryName(data.getCategoryName());
errorRow.setAddress(data.getAddress());
errorRow.setErrorInfo(errorMsg);
errorRows.add(errorRow);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 最后几条达不到阈值,这里必须再调用一次
execPersist();
}
/**
* 执行持久化
*/
private void execPersist() {
try {
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(currentCustomerId, "public_service");
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getCategoryKey, IcCoverageCategoryDictListResultDTO::getCategoryName));
datas.forEach(d -> {
d.setCategory(dictMap.get(d.getCategory()));
});
IcPublicServiceServiceImpl.insertBatch(datas);
} finally {
datas.clear();
}
}
/**
* 获取错误行
*
* @return
*/
public List<IcPublicServiceExcel.RowRemarkMessage> getErrorRows() {
return errorRows;
}
}

134
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcSuperiorResourceExcelImportListener.java

@ -0,0 +1,134 @@
package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.dto.result.IcSuperiorResourceListResultDTO;
import com.epmet.entity.IcSuperiorResourceEntity;
import com.epmet.excel.IcSuperiorResourceExcel;
import com.epmet.service.CoverageService;
import com.epmet.service.impl.IcSuperiorResourceServiceImpl;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 优势资源管理excel导入监听器
*/
@Data
@Slf4j
public class IcSuperiorResourceExcelImportListener implements ReadListener<IcSuperiorResourceExcel> {
//最大条数阈值
public static final int MAX_THRESHOLD = 200;
private String currentUserId;
private String currentCustomerId;
private String currentAgencyId;
private String currentAgencyPids;
//数据
private List<IcSuperiorResourceEntity> datas = new ArrayList<>();
//错误项列表
private List<IcSuperiorResourceExcel.RowRemarkMessage> errorRows = new ArrayList<>();
//其他被标记出来的列表列表
private List<IcSuperiorResourceExcel.RowRemarkMessage> otherRows = new ArrayList<>();
private IcSuperiorResourceServiceImpl icSuperiorResourceServiceImpl;
private CoverageService coverageService;
public IcSuperiorResourceExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcSuperiorResourceServiceImpl icSuperiorResourceServiceImpl, CoverageService coverageService) {
this.currentUserId = currentUserId;
this.currentCustomerId = currentCustomerId;
this.currentAgencyId = currentAgencyId;
this.currentAgencyPids = currentAgencyPids;
this.icSuperiorResourceServiceImpl = icSuperiorResourceServiceImpl;
this.coverageService = coverageService;
}
@Override
public void invoke(IcSuperiorResourceExcel data, AnalysisContext context) {
try {
// 先校验数据
ValidatorUtils.validateEntity(data);
// 去除前后空格
if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim());
}
if (StringUtils.isNotBlank(data.getCategoryName())) {
data.setCategoryName(data.getCategoryName().trim());
}
if (StringUtils.isNotBlank(data.getAddress())) {
data.setAddress(data.getAddress().trim());
}
IcSuperiorResourceEntity icSuperiorResourceEntity = ConvertUtils.sourceToTarget(data, IcSuperiorResourceEntity.class);
icSuperiorResourceEntity.setSourceType("import");
icSuperiorResourceEntity.setCategory(data.getCategoryName());
icSuperiorResourceEntity.setAreaCovered(data.getAreaCoveredName());
icSuperiorResourceEntity.setCapacity(data.getCapacityName());
datas.add(icSuperiorResourceEntity);
if (datas.size() == MAX_THRESHOLD) {
execPersist();
}
} catch (Exception e) {
String errorMsg = null;
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else {
errorMsg = "未知错误";
log.error("【优势资源管理导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}
IcSuperiorResourceExcel.RowRemarkMessage errorRow = new IcSuperiorResourceExcel.RowRemarkMessage();
errorRow.setName(data.getName());
errorRow.setCategoryName(data.getCategoryName());
errorRow.setAddress(data.getAddress());
errorRow.setErrorInfo(errorMsg);
errorRows.add(errorRow);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 最后几条达不到阈值,这里必须再调用一次
execPersist();
}
/**
* 执行持久化
*/
private void execPersist() {
try {
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(currentCustomerId, "superior_resource");
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getCategoryKey, IcCoverageCategoryDictListResultDTO::getCategoryName));
datas.forEach(d -> {
d.setCategory(dictMap.get(d.getCategory()));
});
icSuperiorResourceServiceImpl.insertBatch(datas);
} finally {
datas.clear();
}
}
/**
* 获取错误行
*
* @return
*/
public List<IcSuperiorResourceExcel.RowRemarkMessage> getErrorRows() {
return errorRows;
}
}

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcCityManagementService.java

@ -8,6 +8,8 @@ import com.epmet.dto.form.IcCityManagementListFormDTO;
import com.epmet.dto.result.IcCityManagementListResultDTO;
import com.epmet.entity.IcCityManagementEntity;
import java.nio.file.Path;
/**
* 城市管理图层
*
@ -67,4 +69,5 @@ public interface IcCityManagementService extends BaseService<IcCityManagementEnt
IcCityManagementListResultDTO detail(IcCityManagementListFormDTO formDTO);
void importExcel(Path fileSavePath, String taskId);
}

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPublicServiceService.java

@ -8,6 +8,8 @@ import com.epmet.dto.form.IcPublicServiceListFormDTO;
import com.epmet.dto.result.IcPublicServiceListResultDTO;
import com.epmet.entity.IcPublicServiceEntity;
import java.nio.file.Path;
/**
* 公共服务图层
*
@ -67,5 +69,5 @@ public interface IcPublicServiceService extends BaseService<IcPublicServiceEntit
IcPublicServiceListResultDTO detail(IcPublicServiceListFormDTO formDTO);
void importExcel(Path fileSavePath, String taskId);
}

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcSuperiorResourceService.java

@ -8,6 +8,8 @@ import com.epmet.dto.form.IcSuperiorResourceListFormDTO;
import com.epmet.dto.result.IcSuperiorResourceListResultDTO;
import com.epmet.entity.IcSuperiorResourceEntity;
import java.nio.file.Path;
/**
* 优势资源管理
*
@ -67,4 +69,5 @@ public interface IcSuperiorResourceService extends BaseService<IcSuperiorResourc
IcSuperiorResourceListResultDTO detail(IcSuperiorResourceListFormDTO formDTO);
void importExcel(Path fileSavePath, String taskId);
}

131
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcCityManagementServiceImpl.java

@ -1,34 +1,60 @@
package com.epmet.service.impl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcCityManagementDao;
import com.epmet.dto.IcCityManagementDTO;
import com.epmet.dto.form.IcCityManagementAddEditFormDTO;
import com.epmet.dto.form.IcCityManagementListFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.IcCityManagementListResultDTO;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.IcCityManagementEntity;
import com.epmet.excel.IcCityManagementExcel;
import com.epmet.excel.handler.IcCityManagementExcelImportListener;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.service.CoverageService;
import com.epmet.service.IcCityManagementService;
import com.epmet.utils.ImportTaskUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
@ -38,10 +64,15 @@ import java.util.stream.Collectors;
* @since v1.0.0 2022-06-16
*/
@Service
@Slf4j
public class IcCityManagementServiceImpl extends BaseServiceImpl<IcCityManagementDao, IcCityManagementEntity> implements IcCityManagementService {
@Autowired
private CoverageService coverageService;
@Autowired
private OssFeignClient ossFeignClient;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Override
@ -160,5 +191,103 @@ public class IcCityManagementServiceImpl extends BaseServiceImpl<IcCityManagemen
return resultDTO;
}
@Async
@Override
public void importExcel(Path filePath, String importTaskId) {
String userId = null;
try {
userId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID);
String customerId = EpmetRequestHolder.getHeader(AppClientConstant.CUSTOMER_ID);
//1.获取当前工作人员缓存信息
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (null == staffInfo) {
throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", userId));
}
String agencyId = staffInfo.getAgencyId();
IcCityManagementExcelImportListener listener = new IcCityManagementExcelImportListener(userId, customerId, agencyId, staffInfo.getAgencyPIds().replace(":".concat(agencyId), ""), this, coverageService);
EasyExcel.read(filePath.toFile(), IcCityManagementExcel.class, listener).headRowNumber(2).sheet(0).doRead();
String errorDesFileUrl = null;
List<IcCityManagementExcel.RowRemarkMessage> errorRows = listener.getErrorRows();
List<IcCityManagementExcel.RowRemarkMessage> otherRows = listener.getOtherRows();
boolean failed = errorRows.size() > 0;
// 合并到一起写入
errorRows.addAll(otherRows);
// 生成并上传描述文件
OutputStream os = null;
FileItem fileItem = null;
if (errorRows.size() > 0) {
try {
// 文件生成
Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_ity_management", "import", "error_des");
String fileName = UUID.randomUUID().toString().concat(".xlsx");
fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile())
.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
os = fileItem.getOutputStream();
EasyExcel.write(os, IcCityManagementExcel.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows);
// 文件上传oss
Result<UploadImgResultDTO> errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
if (errorDesFileUploadResult.success()) {
errorDesFileUrl = errorDesFileUploadResult.getData().getUrl();
}
} finally {
IOUtils.closeQuietly(os);
if (!fileItem.isInMemory()) {
try {
fileItem.delete();
} catch (Exception e) {
log.error("【城市管理导入】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e));
}
}
}
}
Result result = ImportTaskUtils.finishImportTask(
importTaskId,
failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,
errorDesFileUrl,
"");
if (!result.success()) {
log.error("【城市管理导入】finishImportTask失败");
}
} catch (Exception e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【城市管理导入】出错:{}", errorMsg);
ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importFinishTaskForm.setOperatorId(userId);
importFinishTaskForm.setResultDesc("导入失败");
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) {
log.error("【城市管理导入】导入记录状态修改为'完成'失败");
}
} finally {
// 删除临时文件
if (Files.exists(filePath)) {
try {
Files.delete(filePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

129
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPublicServiceServiceImpl.java

@ -1,35 +1,60 @@
package com.epmet.service.impl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcPublicServiceDao;
import com.epmet.dto.IcPublicServiceDTO;
import com.epmet.dto.form.IcPublicServiceAddEditFormDTO;
import com.epmet.dto.form.IcPublicServiceListFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.dto.result.IcPublicServiceListResultDTO;
import com.epmet.dto.result.IcSuperiorResourceListResultDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.IcPublicServiceEntity;
import com.epmet.excel.IcPublicServiceExcel;
import com.epmet.excel.handler.IcPublicServiceExcelImportListener;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.service.CoverageService;
import com.epmet.service.IcPublicServiceService;
import com.epmet.utils.ImportTaskUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
@ -39,10 +64,15 @@ import java.util.stream.Collectors;
* @since v1.0.0 2022-06-16
*/
@Service
@Slf4j
public class IcPublicServiceServiceImpl extends BaseServiceImpl<IcPublicServiceDao, IcPublicServiceEntity> implements IcPublicServiceService {
@Autowired
private CoverageService coverageService;
@Autowired
private OssFeignClient ossFeignClient;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Override
@ -162,4 +192,101 @@ public class IcPublicServiceServiceImpl extends BaseServiceImpl<IcPublicServiceD
return resultDTO;
}
@Async
@Override
public void importExcel(Path filePath, String importTaskId) {
String userId = null;
try {
userId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID);
String customerId = EpmetRequestHolder.getHeader(AppClientConstant.CUSTOMER_ID);
//1.获取当前工作人员缓存信息
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (null == staffInfo) {
throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", userId));
}
String agencyId = staffInfo.getAgencyId();
IcPublicServiceExcelImportListener listener = new IcPublicServiceExcelImportListener(userId, customerId, agencyId, staffInfo.getAgencyPIds().replace(":".concat(agencyId), ""), this, coverageService);
EasyExcel.read(filePath.toFile(), IcPublicServiceExcel.class, listener).headRowNumber(2).sheet(0).doRead();
String errorDesFileUrl = null;
List<IcPublicServiceExcel.RowRemarkMessage> errorRows = listener.getErrorRows();
List<IcPublicServiceExcel.RowRemarkMessage> otherRows = listener.getOtherRows();
boolean failed = errorRows.size() > 0;
// 合并到一起写入
errorRows.addAll(otherRows);
// 生成并上传描述文件
OutputStream os = null;
FileItem fileItem = null;
if (errorRows.size() > 0) {
try {
// 文件生成
Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_superior_resource", "import", "error_des");
String fileName = UUID.randomUUID().toString().concat(".xlsx");
fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile())
.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
os = fileItem.getOutputStream();
EasyExcel.write(os, IcPublicServiceExcel.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows);
// 文件上传oss
Result<UploadImgResultDTO> errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
if (errorDesFileUploadResult.success()) {
errorDesFileUrl = errorDesFileUploadResult.getData().getUrl();
}
} finally {
IOUtils.closeQuietly(os);
if (!fileItem.isInMemory()) {
try {
fileItem.delete();
} catch (Exception e) {
log.error("【公共服务管理导入】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e));
}
}
}
}
Result result = ImportTaskUtils.finishImportTask(
importTaskId,
failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,
errorDesFileUrl,
"");
if (!result.success()) {
log.error("【公共服务管理导入】finishImportTask失败");
}
} catch (Exception e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【公共服务管理导入】出错:{}", errorMsg);
ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importFinishTaskForm.setOperatorId(userId);
importFinishTaskForm.setResultDesc("导入失败");
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) {
log.error("【公共服务管理导入】导入记录状态修改为'完成'失败");
}
} finally {
// 删除临时文件
if (Files.exists(filePath)) {
try {
Files.delete(filePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

130
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcSuperiorResourceServiceImpl.java

@ -1,35 +1,60 @@
package com.epmet.service.impl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcSuperiorResourceDao;
import com.epmet.dto.IcSuperiorResourceDTO;
import com.epmet.dto.form.IcSuperiorResourceAddEditFormDTO;
import com.epmet.dto.form.IcSuperiorResourceListFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.dto.result.IcSuperiorResourceListResultDTO;
import com.epmet.dto.result.StaffRoleResultDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.IcSuperiorResourceEntity;
import com.epmet.excel.IcSuperiorResourceExcel;
import com.epmet.excel.handler.IcSuperiorResourceExcelImportListener;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.service.CoverageService;
import com.epmet.service.IcSuperiorResourceService;
import com.epmet.utils.ImportTaskUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
@ -39,10 +64,15 @@ import java.util.stream.Collectors;
* @since v1.0.0 2022-06-16
*/
@Service
@Slf4j
public class IcSuperiorResourceServiceImpl extends BaseServiceImpl<IcSuperiorResourceDao, IcSuperiorResourceEntity> implements IcSuperiorResourceService {
@Autowired
private CoverageService coverageService;
@Autowired
private OssFeignClient ossFeignClient;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Override
@ -162,4 +192,102 @@ public class IcSuperiorResourceServiceImpl extends BaseServiceImpl<IcSuperiorRes
return resultDTO;
}
@Async
@Override
public void importExcel(Path filePath, String importTaskId) {
String userId = null;
try {
userId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID);
String customerId = EpmetRequestHolder.getHeader(AppClientConstant.CUSTOMER_ID);
//1.获取当前工作人员缓存信息
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (null == staffInfo) {
throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", userId));
}
String agencyId = staffInfo.getAgencyId();
IcSuperiorResourceExcelImportListener listener = new IcSuperiorResourceExcelImportListener(userId, customerId, agencyId, staffInfo.getAgencyPIds().replace(":".concat(agencyId), ""), this, coverageService);
EasyExcel.read(filePath.toFile(), IcSuperiorResourceExcel.class, listener).headRowNumber(2).sheet(0).doRead();
String errorDesFileUrl = null;
List<IcSuperiorResourceExcel.RowRemarkMessage> errorRows = listener.getErrorRows();
List<IcSuperiorResourceExcel.RowRemarkMessage> otherRows = listener.getOtherRows();
boolean failed = errorRows.size() > 0;
// 合并到一起写入
errorRows.addAll(otherRows);
// 生成并上传描述文件
OutputStream os = null;
FileItem fileItem = null;
if (errorRows.size() > 0) {
try {
// 文件生成
Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_superior_resource", "import", "error_des");
String fileName = UUID.randomUUID().toString().concat(".xlsx");
fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile())
.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
os = fileItem.getOutputStream();
EasyExcel.write(os, IcSuperiorResourceExcel.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows);
// 文件上传oss
Result<UploadImgResultDTO> errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
if (errorDesFileUploadResult.success()) {
errorDesFileUrl = errorDesFileUploadResult.getData().getUrl();
}
} finally {
IOUtils.closeQuietly(os);
if (!fileItem.isInMemory()) {
try {
fileItem.delete();
} catch (Exception e) {
log.error("【优势资源管理导入】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e));
}
}
}
}
Result result = ImportTaskUtils.finishImportTask(
importTaskId,
failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,
errorDesFileUrl,
"");
if (!result.success()) {
log.error("【优势资源管理导入】finishImportTask失败");
}
} catch (Exception e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【优势资源管理导入】出错:{}", errorMsg);
ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importFinishTaskForm.setOperatorId(userId);
importFinishTaskForm.setResultDesc("导入失败");
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) {
log.error("【优势资源管理导入】导入记录状态修改为'完成'失败");
}
} finally {
// 删除临时文件
if (Files.exists(filePath)) {
try {
Files.delete(filePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Loading…
Cancel
Save