From 76877714ac9abb1a0545fcdc5396d543d53b820d Mon Sep 17 00:00:00 2001
From: zxc <1272811460@qq.com>
Date: Tue, 22 Feb 2022 10:33:20 +0800
Subject: [PATCH] errorInfo
---
epmet-module/gov-org/gov-org-server/pom.xml | 5 ++
.../constant/ImportErrorMsgConstants.java | 6 ++
.../com/epmet/controller/HouseController.java | 19 +++--
.../epmet/model/BuildingErrorInfoModel.java | 7 +-
.../com/epmet/model/HouseErrorInfoModel.java | 11 +--
.../model/ImportBuildingInfoListener.java | 54 ++++++++++----
.../epmet/model/ImportHouseInfoListener.java | 55 +++++++++++----
.../model/ImportNeighborHoodInfoListener.java | 44 +++++++++---
.../model/NeighborHoodErrorInfoModel.java | 5 +-
.../epmet/service/IcNeighborHoodService.java | 3 +
.../service/impl/BuildingServiceImpl.java | 20 ++++--
.../impl/IcNeighborHoodServiceImpl.java | 70 ++++++++++++++++++-
12 files changed, 239 insertions(+), 60 deletions(-)
diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml
index 094292fe13..0a13f2a38d 100644
--- a/epmet-module/gov-org/gov-org-server/pom.xml
+++ b/epmet-module/gov-org/gov-org-server/pom.xml
@@ -33,6 +33,11 @@
epmet-commons-dynamic-datasource
2.0.0
+
+ com.epmet
+ epmet-oss-client
+ 2.0.0
+
org.springframework.boot
spring-boot-starter-web
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java
index d49715e330..76f69d819e 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java
@@ -7,6 +7,12 @@ package com.epmet.constant;
*/
public interface ImportErrorMsgConstants {
+ String EXIST_ERROR = "数据已存在";
+ String HOUSE_ERROR = "所属组织、所属网格、所属小区、所属楼栋、单元号、房屋类型、房屋用途、出租、房主姓名、房主电话、房主身份证的值未填写,或者所填写信息在系统中未找到";
+
+ String BUILDING_ERROR = "所属组织、所属网格、所属小区、楼栋类型、单元数的值未填写,或者所填写信息在系统中未找到";
+
+ String NEIGHBOR_HOOD_ERROR = "所属组织、所属网格、详细地址的值未填写,或者所填写信息在系统中未找到";
}
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
index 017da95fd9..026948d385 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
@@ -27,17 +27,17 @@ 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.feign.ResultDataResolver;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
+import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.form.*;
-import com.epmet.dto.result.HouseInfoDTO;
-import com.epmet.dto.result.IcNeighborHoodResultDTO;
-import com.epmet.dto.result.ImportResultDTO;
-import com.epmet.dto.result.LoginUserDetailsResultDTO;
+import com.epmet.dto.result.*;
import com.epmet.excel.IcHouseExcel;
+import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.model.HouseInfoModel;
@@ -85,6 +85,8 @@ public class HouseController implements ResultDataResolver {
private IcNeighborHoodService neighborHoodService;
@Autowired
private IcHouseService icHouseService;
+ @Autowired
+ private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@PostMapping("houselist")
@@ -266,10 +268,17 @@ public class HouseController implements ResultDataResolver {
} catch (IOException e) {
return new Result().error("读取文件失败");
}
+ ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
+ importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_HOUSE);
+ importFormDTO.setOperatorId(formDTO.getUserId());
+ Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
+ if (!importTask.success()){
+ throw new EpmetException("创建任务失败");
+ }
excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class)
- .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService))
+ .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java
index e7db295a7e..d85a95854f 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java
@@ -1,5 +1,6 @@
package com.epmet.model;
+import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@@ -11,13 +12,13 @@ import lombok.Data;
@Data
public class BuildingErrorInfoModel {
- @ExcelProperty(value = "小区名称")
+ @Excel(name = "小区名称")
private String neighborHoodName;
- @ExcelProperty(value = "楼栋名称")
+ @Excel(name = "楼栋名称")
private String buildingName;
- @ExcelProperty(value = "错误信息")
+ @Excel(name = "错误信息")
private String errorMsg;
}
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java
index 9cb84948c5..c050e3a8e4 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java
@@ -1,5 +1,6 @@
package com.epmet.model;
+import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@@ -12,19 +13,19 @@ import org.hibernate.validator.constraints.Length;
@Data
public class HouseErrorInfoModel {
- @ExcelProperty(value = "所属小区")
+ @Excel(name = "所属小区")
private String neighborHoodName;
- @ExcelProperty(value = "所属楼栋")
+ @Excel(name = "所属楼栋")
private String buildingName;
- @ExcelProperty(value = "单元号")
+ @Excel(name = "单元号")
private Integer buildingUnit;
- @ExcelProperty(value = "门牌号")
+ @Excel(name = "门牌号")
private String doorName;
- @ExcelProperty(value = "错误信息")
+ @Excel(name = "错误信息")
private String errorMsg;
}
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
index 63e5f39000..73f4a18b84 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
@@ -9,20 +9,22 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant;
+import com.epmet.constant.ImportErrorMsgConstants;
+import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
+import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.enums.BuildingTypeEnums;
+import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcNeighborHoodService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.io.IOException;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -36,6 +38,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>();
BuildingInfoModel info = null;
+ String taskId = "";
List needDisposeList = new ArrayList<>();
List needInsertList = new ArrayList<>();
@@ -56,12 +59,15 @@ public class ImportBuildingInfoListener extends AnalysisEventListener {
nums.add(e.getNum());
- disposeErrorMsg(info,"");
+ disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
});
}
}
@@ -163,7 +169,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>();
HouseInfoModel info = null;
+ String taskId = "";
List needDisposeList = new ArrayList<>();
List needInsertList = new ArrayList<>();
@@ -61,13 +67,16 @@ public class ImportHouseInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>();
NeighborHoodInfoModel info = null;
+ String taskId = "";
List needDisposeList = new ArrayList<>();
List needInsertList = new ArrayList<>();
@@ -57,13 +63,16 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener {
nums.add(e.getNum());
- disposeErrorMsg(info,"");
+ disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
});
}
List notExistList = groupByBuildingExistStatus.get(false);
@@ -178,7 +186,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener
void insertPropertyManagement(List propertyManagementEntities);
void neighborHoodPropertyInsert(List entities);
+
+ String orgGeneralImport(Collection> errorRows, Class tClass) throws IOException;
}
\ No newline at end of file
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
index 15daabf246..e1ee7204d5 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
@@ -13,24 +13,25 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
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.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
+import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.*;
import com.epmet.dto.BuildingTreeLevelDTO;
import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.IcBuildingDTO;
import com.epmet.dto.form.IcBulidingFormDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
+import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.ListIcNeighborHoodFormDTO;
-import com.epmet.dto.result.BuildingResultDTO;
-import com.epmet.dto.result.BuildingResultPagedDTO;
-import com.epmet.dto.result.IcNeighborHoodResultDTO;
-import com.epmet.dto.result.ImportResultDTO;
+import com.epmet.dto.result.*;
import com.epmet.entity.*;
import com.epmet.enums.BuildingTypeEnums;
import com.epmet.excel.IcBuildingExcel;
+import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.model.BuildingInfoModel;
import com.epmet.model.HouseInfoModel;
import com.epmet.model.ImportBuildingInfoListener;
@@ -89,6 +90,8 @@ public class BuildingServiceImpl implements BuildingService {
private IcHouseRedis icHouseRedis;
@Autowired
private IcNeighborHoodService neighborHoodService;
+ @Autowired
+ private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -406,10 +409,17 @@ public class BuildingServiceImpl implements BuildingService {
} catch (IOException e) {
return new Result().error("读取文件失败");
}
+ ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
+ importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD);
+ importFormDTO.setOperatorId(formDTO.getUserId());
+ Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
+ if (!importTask.success()){
+ throw new EpmetException("创建任务失败");
+ }
excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class)
- .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService))
+ .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
index 99db449d72..5b22e65a97 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
@@ -17,7 +17,8 @@
package com.epmet.service.impl;
-import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet;
@@ -31,6 +32,7 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
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.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
@@ -39,16 +41,22 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerGridConstant;
+import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.CustomerGridDao;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcNeighborHoodDao;
import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.*;
import com.epmet.dto.form.ImportInfoFormDTO;
+import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO;
+import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.InfoByNamesResultDTO;
+import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.*;
import com.epmet.excel.IcNeighborHoodExcel;
+import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
+import com.epmet.feign.OssFeignClient;
import com.epmet.model.ImportNeighborHoodInfoListener;
import com.epmet.model.NeighborHoodInfoModel;
import com.epmet.redis.IcHouseRedis;
@@ -58,14 +66,21 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.http.entity.ContentType;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.tomcat.util.http.fileupload.FileItemFactory;
+import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
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 org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.util.*;
import java.util.stream.Collectors;
@@ -95,6 +110,10 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl page(Map params) {
@@ -396,10 +415,17 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl().error("读取文件失败");
}
+ ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
+ importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD);
+ importFormDTO.setOperatorId(formDTO.getUserId());
+ Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
+ if (!importTask.success()){
+ throw new EpmetException("创建任务失败");
+ }
excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class)
- .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao))
+ .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {
@@ -609,4 +635,44 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl String orgGeneralImport(Collection> errorRows, Class tClass) throws IOException {
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表","导入失败的数据列表"),
+ tClass, errorRows);
+
+ // 文件名
+ String resultDescFileName = UUID.randomUUID().toString().concat(".xls");
+
+ FileItemFactory factory = new DiskFileItemFactory(16, null);
+ FileItem fileItem = (FileItem) factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName);
+ OutputStream os = fileItem.getOutputStream();
+ Result uploadResult = null;
+ try {
+ workbook.write(os);
+ uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
+ } catch (Exception e) {
+ String errormsg = ExceptionUtils.getErrorStackTrace(e);
+ log.error("【居民信息导入】上传错误描述文件:{}", errormsg);
+ } finally {
+ try {
+ os.close();
+ } catch (IOException e) {
+ String errormsg = ExceptionUtils.getErrorStackTrace(e);
+ log.error("【居民信息导入】上传错误描述文件关闭输出流:{}", errormsg);
+ }
+ try {
+ fileItem.delete();
+ } catch (Exception e) {
+ String errormsg = ExceptionUtils.getErrorStackTrace(e);
+ log.error("【居民信息导入】上传错误描述文件删除临时文件:{}", errormsg);
+ }
+ }
+
+ if (uploadResult == null || !uploadResult.success()) {
+ log.error("【居民信息导入】调用OSS上传结果描述文件失败");
+ return null;
+ }
+ return uploadResult.getData().getUrl();
+ }
+
}