Browse Source

errorInfo

dev
zxc 4 years ago
parent
commit
76877714ac
  1. 5
      epmet-module/gov-org/gov-org-server/pom.xml
  2. 6
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java
  3. 19
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
  4. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java
  5. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java
  6. 54
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
  7. 55
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java
  8. 44
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java
  9. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodErrorInfoModel.java
  10. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java
  11. 20
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
  12. 70
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

5
epmet-module/gov-org/gov-org-server/pom.xml

@ -33,6 +33,11 @@
<artifactId>epmet-commons-dynamic-datasource</artifactId> <artifactId>epmet-commons-dynamic-datasource</artifactId>
<version>2.0.0</version> <version>2.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-oss-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>

6
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 { public interface ImportErrorMsgConstants {
String EXIST_ERROR = "数据已存在";
String HOUSE_ERROR = "所属组织、所属网格、所属小区、所属楼栋、单元号、房屋类型、房屋用途、出租、房主姓名、房主电话、房主身份证的值未填写,或者所填写信息在系统中未找到";
String BUILDING_ERROR = "所属组织、所属网格、所属小区、楼栋类型、单元数的值未填写,或者所填写信息在系统中未找到";
String NEIGHBOR_HOOD_ERROR = "所属组织、所属网格、详细地址的值未填写,或者所填写信息在系统中未找到";
} }

19
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.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; 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.feign.ResultDataResolver;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.*;
import com.epmet.dto.result.IcNeighborHoodResultDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.excel.IcHouseExcel; import com.epmet.excel.IcHouseExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.model.HouseInfoModel; import com.epmet.model.HouseInfoModel;
@ -85,6 +85,8 @@ public class HouseController implements ResultDataResolver {
private IcNeighborHoodService neighborHoodService; private IcNeighborHoodService neighborHoodService;
@Autowired @Autowired
private IcHouseService icHouseService; private IcHouseService icHouseService;
@Autowired
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@PostMapping("houselist") @PostMapping("houselist")
@ -266,10 +268,17 @@ public class HouseController implements ResultDataResolver {
} catch (IOException e) { } catch (IOException e) {
return new Result<String>().error("读取文件失败"); return new Result<String>().error("读取文件失败");
} }
ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_HOUSE);
importFormDTO.setOperatorId(formDTO.getUserId());
Result<ImportTaskCommonResultDTO> importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
if (!importTask.success()){
throw new EpmetException("创建任务失败");
}
excelReader = EasyExcel.read(inputStream).build(); excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) 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(); .build();
excelReader.read(readSheet); excelReader.read(readSheet);
} finally { } finally {

7
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java

@ -1,5 +1,6 @@
package com.epmet.model; package com.epmet.model;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
@ -11,13 +12,13 @@ import lombok.Data;
@Data @Data
public class BuildingErrorInfoModel { public class BuildingErrorInfoModel {
@ExcelProperty(value = "小区名称") @Excel(name = "小区名称")
private String neighborHoodName; private String neighborHoodName;
@ExcelProperty(value = "楼栋名称") @Excel(name = "楼栋名称")
private String buildingName; private String buildingName;
@ExcelProperty(value = "错误信息") @Excel(name = "错误信息")
private String errorMsg; private String errorMsg;
} }

11
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java

@ -1,5 +1,6 @@
package com.epmet.model; package com.epmet.model;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
@ -12,19 +13,19 @@ import org.hibernate.validator.constraints.Length;
@Data @Data
public class HouseErrorInfoModel { public class HouseErrorInfoModel {
@ExcelProperty(value = "所属小区") @Excel(name = "所属小区")
private String neighborHoodName; private String neighborHoodName;
@ExcelProperty(value = "所属楼栋") @Excel(name = "所属楼栋")
private String buildingName; private String buildingName;
@ExcelProperty(value = "单元号") @Excel(name = "单元号")
private Integer buildingUnit; private Integer buildingUnit;
@ExcelProperty(value = "门牌号") @Excel(name = "门牌号")
private String doorName; private String doorName;
@ExcelProperty(value = "错误信息") @Excel(name = "错误信息")
private String errorMsg; private String errorMsg;
} }

54
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.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant; import com.epmet.constant.CustomerGridConstant;
import com.epmet.constant.ImportErrorMsgConstants;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.ImportResultDTO;
import com.epmet.enums.BuildingTypeEnums; import com.epmet.enums.BuildingTypeEnums;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.redis.IcHouseRedis; import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcNeighborHoodService; import com.epmet.service.IcNeighborHoodService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.io.IOException;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -36,6 +38,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
Integer num = NumConstant.ZERO; Integer num = NumConstant.ZERO;
List<BuildingErrorInfoModel> errorInfos = new ArrayList<>(); List<BuildingErrorInfoModel> errorInfos = new ArrayList<>();
BuildingInfoModel info = null; BuildingInfoModel info = null;
String taskId = "";
List<ImportGeneralDTO> needDisposeList = new ArrayList<>(); List<ImportGeneralDTO> needDisposeList = new ArrayList<>();
List<ImportGeneralDTO> needInsertList = new ArrayList<>(); List<ImportGeneralDTO> needInsertList = new ArrayList<>();
@ -56,12 +59,15 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
private IcHouseRedis icHouseRedis; private IcHouseRedis icHouseRedis;
private IcBuildingDao icBuildingDao; private IcBuildingDao icBuildingDao;
private IcNeighborHoodService neighborHoodService; private IcNeighborHoodService neighborHoodService;
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
public ImportBuildingInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis,IcBuildingDao icBuildingDao,IcNeighborHoodService neighborHoodService){ public ImportBuildingInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis,IcBuildingDao icBuildingDao,IcNeighborHoodService neighborHoodService,EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient,String tId){
this.formDTO = formDTO; this.formDTO = formDTO;
this.icHouseRedis = icHouseRedis; this.icHouseRedis = icHouseRedis;
this.icBuildingDao = icBuildingDao; this.icBuildingDao = icBuildingDao;
this.neighborHoodService = neighborHoodService; this.neighborHoodService = neighborHoodService;
this.epmetCommonServiceOpenFeignClient = epmetCommonServiceOpenFeignClient;
this.taskId = tId;
} }
@Override @Override
@ -77,7 +83,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
// 应产品要求添加 // 应产品要求添加
if (StringUtils.isNotBlank(dto.getType()) && (!dto.getType().equals("商品房") && !dto.getType().equals("自建房")) && !dto.getType().equals("别墅")){ if (StringUtils.isNotBlank(dto.getType()) && (!dto.getType().equals("商品房") && !dto.getType().equals("自建房")) && !dto.getType().equals("别墅")){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info, ImportErrorMsgConstants.BUILDING_ERROR);
return; return;
} }
dto.setType(BuildingTypeEnums.getKeyByValue(dto.getType())); dto.setType(BuildingTypeEnums.getKeyByValue(dto.getType()));
@ -108,7 +114,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
r.getNeighborHoodName() + "_" + r.getBuildingName())){ r.getNeighborHoodName() + "_" + r.getBuildingName())){
// 集合里重复的 // 集合里重复的
nums.add(r.getNum()); nums.add(r.getNum());
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
r.setExistStatus(true); r.setExistStatus(true);
} }
} }
@ -123,7 +129,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
if (!CollectionUtils.isEmpty(existList)){ if (!CollectionUtils.isEmpty(existList)){
existList.forEach(e -> { existList.forEach(e -> {
nums.add(e.getNum()); nums.add(e.getNum());
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
}); });
} }
} }
@ -163,7 +169,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
if (StringUtils.isNotBlank(dto.getBuildingId())){ if (StringUtils.isNotBlank(dto.getBuildingId())){
// 说明数据库已存在此楼栋,不需添加 // 说明数据库已存在此楼栋,不需添加
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
}else { }else {
needDisposeList.add(dto); needDisposeList.add(dto);
} }
@ -183,7 +189,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
//排除不是本小区的 //排除不是本小区的
if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){ if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
}else { }else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId()); GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId());
if (null == gridInfo){ if (null == gridInfo){
@ -193,7 +199,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
if ((!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())) || if ((!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())) ||
(!gridInfo.getAgencyName().equals(dto.getAgencyName()) && gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()))){ (!gridInfo.getAgencyName().equals(dto.getAgencyName()) && gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()))){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
return; return;
} }
dto.setNeighborHoodId(formDTO.getOrgId()); dto.setNeighborHoodId(formDTO.getOrgId());
@ -225,7 +231,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除 //排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){ if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
}else { }else {
// //
dto.setGridId(formDTO.getOrgId()); dto.setGridId(formDTO.getOrgId());
@ -252,21 +258,21 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
//排除不是本组织的 //排除不是本组织的
if (!dto.getAgencyName().equals(agencyName)){ if (!dto.getAgencyName().equals(agencyName)){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
}else { }else {
// 根据组织查询出所有网格,甩出不是本组织下的网格 // 根据组织查询出所有网格,甩出不是本组织下的网格
gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos; gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos;
if (null == gridInfos){ if (null == gridInfos){
// 组织下确实不存在网格 // 组织下确实不存在网格
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
return; return;
} }
// 根据网格名对比,没有找到的就把行号加入到未执行成功队列中 // 根据网格名对比,没有找到的就把行号加入到未执行成功队列中
Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName()); Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName());
if (null == cacheGridName){ if (null == cacheGridName){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
return; return;
} }
dto.setGridId(cacheGridName.toString()); dto.setGridId(cacheGridName.toString());
@ -338,5 +344,23 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId()); icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId());
// 放结果 // 放结果
icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num)); icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num));
ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO();
input.setOperatorId(formDTO.getUserId());
input.setTaskId(taskId);
if (CollectionUtils.isEmpty(nums)){
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS);
epmetCommonServiceOpenFeignClient.finishImportTask(input);
}else {
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
if (!CollectionUtils.isEmpty(errorInfos)){
try {
String s = neighborHoodService.orgGeneralImport(errorInfos, BuildingErrorInfoModel.class);
input.setResultDescFilePath(s);
} catch (IOException e) {
e.printStackTrace();
}
}
epmetCommonServiceOpenFeignClient.finishImportTask(input);
}
} }
} }

55
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java

@ -9,14 +9,18 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant; import com.epmet.constant.CustomerGridConstant;
import com.epmet.constant.ImportErrorMsgConstants;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.ImportResultDTO;
import com.epmet.entity.IcHouseEntity; import com.epmet.entity.IcHouseEntity;
import com.epmet.enums.HousePurposeEnums; import com.epmet.enums.HousePurposeEnums;
import com.epmet.enums.HouseRentFlagEnums; import com.epmet.enums.HouseRentFlagEnums;
import com.epmet.enums.HouseTypeEnums; import com.epmet.enums.HouseTypeEnums;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.redis.IcHouseRedis; import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcHouseService; import com.epmet.service.IcHouseService;
import com.epmet.service.IcNeighborHoodService; import com.epmet.service.IcNeighborHoodService;
@ -24,6 +28,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -38,6 +43,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
Integer num = NumConstant.ZERO; Integer num = NumConstant.ZERO;
List<HouseErrorInfoModel> errorInfos = new ArrayList<>(); List<HouseErrorInfoModel> errorInfos = new ArrayList<>();
HouseInfoModel info = null; HouseInfoModel info = null;
String taskId = "";
List<ImportGeneralDTO> needDisposeList = new ArrayList<>(); List<ImportGeneralDTO> needDisposeList = new ArrayList<>();
List<ImportGeneralDTO> needInsertList = new ArrayList<>(); List<ImportGeneralDTO> needInsertList = new ArrayList<>();
@ -61,13 +67,16 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
private IcHouseRedis icHouseRedis; private IcHouseRedis icHouseRedis;
private IcNeighborHoodService neighborHoodService; private IcNeighborHoodService neighborHoodService;
private IcHouseService icHouseService; private IcHouseService icHouseService;
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
public ImportHouseInfoListener(ImportInfoFormDTO formDTO,IcBuildingDao icBuildingDao, IcHouseRedis icHouseRedis,IcNeighborHoodService neighborHoodService, IcHouseService icHouseService){ public ImportHouseInfoListener(ImportInfoFormDTO formDTO,IcBuildingDao icBuildingDao, IcHouseRedis icHouseRedis,IcNeighborHoodService neighborHoodService, IcHouseService icHouseService, EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient,String tId){
this.formDTO = formDTO; this.formDTO = formDTO;
this.icBuildingDao = icBuildingDao; this.icBuildingDao = icBuildingDao;
this.icHouseRedis = icHouseRedis; this.icHouseRedis = icHouseRedis;
this.neighborHoodService = neighborHoodService; this.neighborHoodService = neighborHoodService;
this.icHouseService = icHouseService; this.icHouseService = icHouseService;
this.epmetCommonServiceOpenFeignClient = epmetCommonServiceOpenFeignClient;
this.taskId = tId;
} }
@Override @Override
@ -84,7 +93,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
if (StringUtils.isNotBlank(dto.getHouseType()) ){ if (StringUtils.isNotBlank(dto.getHouseType()) ){
if( !"楼房".equals(dto.getHouseType()) && !dto.getHouseType().equals("平房") && !dto.getHouseType().equals("别墅") ){ if( !"楼房".equals(dto.getHouseType()) && !dto.getHouseType().equals("平房") && !dto.getHouseType().equals("别墅") ){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return; return;
} }
} }
@ -98,13 +107,13 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
!dto.getPurpose().equals("商住混用") && !dto.getPurpose().equals("商住混用") &&
!dto.getPurpose().equals("其他")) ){ !dto.getPurpose().equals("其他")) ){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info, ImportErrorMsgConstants.HOUSE_ERROR);
return; return;
} }
dto.setPurpose(HousePurposeEnums.getKeyByValue(dto.getPurpose())); dto.setPurpose(HousePurposeEnums.getKeyByValue(dto.getPurpose()));
if (StringUtils.isNotBlank(dto.getRentFlagString()) && (!dto.getRentFlagString().equals("是") && !dto.getRentFlagString().equals("否"))){ if (StringUtils.isNotBlank(dto.getRentFlagString()) && (!dto.getRentFlagString().equals("是") && !dto.getRentFlagString().equals("否"))){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return; return;
} }
dto.setRentFlag(HouseRentFlagEnums.getCodeByName(dto.getRentFlagString())); dto.setRentFlag(HouseRentFlagEnums.getCodeByName(dto.getRentFlagString()));
@ -145,7 +154,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
if (k.equals(r.getBuildingUnitId()+"_"+r.getDoorName())){ if (k.equals(r.getBuildingUnitId()+"_"+r.getDoorName())){
// 集合里重复的 // 集合里重复的
nums.add(r.getNum()); nums.add(r.getNum());
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
r.setExistStatus(true); r.setExistStatus(true);
} }
} }
@ -159,7 +168,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
if ((n.getBuildingUnitId()+"_"+n.getDoorName()).equals(e)){ if ((n.getBuildingUnitId()+"_"+n.getDoorName()).equals(e)){
// 库里存在的 // 库里存在的
nums.add(n.getNum()); nums.add(n.getNum());
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
n.setExistStatus(true); n.setExistStatus(true);
} }
} }
@ -196,7 +205,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
// 排除不是本楼的 // 排除不是本楼的
if (!dto.getBuildingName().equals(buildingGeneralDTO.getBuildingName())){ if (!dto.getBuildingName().equals(buildingGeneralDTO.getBuildingName())){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
}else { }else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(buildingGeneralDTO.getGridId()); GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(buildingGeneralDTO.getGridId());
if (null == gridInfo){ if (null == gridInfo){
@ -207,7 +216,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
|| (!gridInfo.getGridName().equals(dto.getGridName())&&buildingGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()) && buildingGeneralDTO.getBuildingName().equals(dto.getBuildingName())) || (!gridInfo.getGridName().equals(dto.getGridName())&&buildingGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()) && buildingGeneralDTO.getBuildingName().equals(dto.getBuildingName()))
|| (!gridInfo.getAgencyName().equals(dto.getAgencyName())&&gridInfo.getGridName().equals(dto.getGridName())&&buildingGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()) && buildingGeneralDTO.getBuildingName().equals(dto.getBuildingName()))){ || (!gridInfo.getAgencyName().equals(dto.getAgencyName())&&gridInfo.getGridName().equals(dto.getGridName())&&buildingGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()) && buildingGeneralDTO.getBuildingName().equals(dto.getBuildingName()))){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return; return;
} }
dto.setBuildingId(formDTO.getOrgId()); dto.setBuildingId(formDTO.getOrgId());
@ -248,7 +257,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
//排除不是本小区的 //排除不是本小区的
if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){ if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
}else { }else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId()); GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId());
if (null == gridInfo){ if (null == gridInfo){
@ -258,7 +267,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
if ((!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())) || if ((!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())) ||
(!gridInfo.getAgencyName().equals(dto.getAgencyName()) && gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()))){ (!gridInfo.getAgencyName().equals(dto.getAgencyName()) && gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()))){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return; return;
} }
dto.setNeighborHoodId(formDTO.getOrgId()); dto.setNeighborHoodId(formDTO.getOrgId());
@ -290,7 +299,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除 //排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){ if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
}else { }else {
// //
dto.setGridId(formDTO.getOrgId()); dto.setGridId(formDTO.getOrgId());
@ -317,21 +326,21 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
//排除不是本组织的 //排除不是本组织的
if (!dto.getAgencyName().equals(agencyName)){ if (!dto.getAgencyName().equals(agencyName)){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
}else { }else {
// 根据组织查询出所有网格,甩出不是本组织下的网格 // 根据组织查询出所有网格,甩出不是本组织下的网格
gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos; gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos;
if (null == gridInfos){ if (null == gridInfos){
// 组织下确实不存在网格 // 组织下确实不存在网格
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return; return;
} }
// 根据网格名对比,没有找到的就把行号加入到未执行成功队列中 // 根据网格名对比,没有找到的就把行号加入到未执行成功队列中
Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName()); Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName());
if (null == cacheGridName){ if (null == cacheGridName){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return; return;
} }
dto.setGridId(cacheGridName.toString()); dto.setGridId(cacheGridName.toString());
@ -450,6 +459,24 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
// 放结果 // 放结果
icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num)); icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num));
ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO();
input.setOperatorId(formDTO.getUserId());
input.setTaskId(taskId);
if (CollectionUtils.isEmpty(nums)){
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS);
epmetCommonServiceOpenFeignClient.finishImportTask(input);
}else {
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
if (!CollectionUtils.isEmpty(errorInfos)){
try {
String s = neighborHoodService.orgGeneralImport(errorInfos, HouseErrorInfoModel.class);
input.setResultDescFilePath(s);
} catch (IOException e) {
e.printStackTrace();
}
}
epmetCommonServiceOpenFeignClient.finishImportTask(input);
}
} }
/** /**

44
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java

@ -9,19 +9,24 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant; import com.epmet.constant.CustomerGridConstant;
import com.epmet.constant.ImportErrorMsgConstants;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcPropertyManagementDao; import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.NeighborHoodAndManagementDTO; import com.epmet.dto.NeighborHoodAndManagementDTO;
import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.ImportResultDTO;
import com.epmet.entity.IcNeighborHoodPropertyEntity; import com.epmet.entity.IcNeighborHoodPropertyEntity;
import com.epmet.entity.IcPropertyManagementEntity; import com.epmet.entity.IcPropertyManagementEntity;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.redis.IcHouseRedis; import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcNeighborHoodService; import com.epmet.service.IcNeighborHoodService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -39,6 +44,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
Integer num = NumConstant.ZERO; Integer num = NumConstant.ZERO;
List<NeighborHoodErrorInfoModel> errorInfos = new ArrayList<>(); List<NeighborHoodErrorInfoModel> errorInfos = new ArrayList<>();
NeighborHoodInfoModel info = null; NeighborHoodInfoModel info = null;
String taskId = "";
List<ImportGeneralDTO> needDisposeList = new ArrayList<>(); List<ImportGeneralDTO> needDisposeList = new ArrayList<>();
List<ImportGeneralDTO> needInsertList = new ArrayList<>(); List<ImportGeneralDTO> needInsertList = new ArrayList<>();
@ -57,13 +63,16 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
private IcBuildingDao icBuildingDao; private IcBuildingDao icBuildingDao;
private IcNeighborHoodService neighborHoodService; private IcNeighborHoodService neighborHoodService;
private IcPropertyManagementDao propertyManagementDao; private IcPropertyManagementDao propertyManagementDao;
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
public ImportNeighborHoodInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis,IcBuildingDao icBuildingDao,IcNeighborHoodService neighborHoodService, IcPropertyManagementDao propertyManagementDao){ public ImportNeighborHoodInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis,IcBuildingDao icBuildingDao,IcNeighborHoodService neighborHoodService, IcPropertyManagementDao propertyManagementDao,EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient,String tId){
this.formDTO = formDTO; this.formDTO = formDTO;
this.icHouseRedis = icHouseRedis; this.icHouseRedis = icHouseRedis;
this.icBuildingDao = icBuildingDao; this.icBuildingDao = icBuildingDao;
this.neighborHoodService = neighborHoodService; this.neighborHoodService = neighborHoodService;
this.propertyManagementDao = propertyManagementDao; this.propertyManagementDao = propertyManagementDao;
this.epmetCommonServiceOpenFeignClient = epmetCommonServiceOpenFeignClient;
this.taskId = tId;
} }
@ -76,7 +85,6 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
num = num + NumConstant.ONE; num = num + NumConstant.ONE;
ImportGeneralDTO dto = ConvertUtils.sourceToTarget(data, ImportGeneralDTO.class); ImportGeneralDTO dto = ConvertUtils.sourceToTarget(data, ImportGeneralDTO.class);
dto.setNum(num); dto.setNum(num);
disposeErrorMsg(info,"");
dto.setCustomerId(formDTO.getCustomerId()); dto.setCustomerId(formDTO.getCustomerId());
if (formDTO.getOrgType().equals(CustomerGridConstant.GRID)){ if (formDTO.getOrgType().equals(CustomerGridConstant.GRID)){
disposeGridNeighborHood(dto); disposeGridNeighborHood(dto);
@ -101,7 +109,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
if (k.equals(r.getAgencyName() + "_" + r.getGridName() + "_" + r.getNeighborHoodName())){ if (k.equals(r.getAgencyName() + "_" + r.getGridName() + "_" + r.getNeighborHoodName())){
// 集合里重复的 // 集合里重复的
nums.add(r.getNum()); nums.add(r.getNum());
disposeErrorMsg(info,""); disposeErrorMsg(info, ImportErrorMsgConstants.EXIST_ERROR);
r.setExistStatus(true); r.setExistStatus(true);
} }
} }
@ -116,7 +124,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
if (!CollectionUtils.isEmpty(existList)){ if (!CollectionUtils.isEmpty(existList)){
existList.forEach(e -> { existList.forEach(e -> {
nums.add(e.getNum()); nums.add(e.getNum());
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
}); });
} }
List<ImportGeneralDTO> notExistList = groupByBuildingExistStatus.get(false); List<ImportGeneralDTO> notExistList = groupByBuildingExistStatus.get(false);
@ -178,7 +186,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除 //排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){ if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.NEIGHBOR_HOOD_ERROR);
}else { }else {
// //
dto.setGridId(formDTO.getOrgId()); dto.setGridId(formDTO.getOrgId());
@ -204,21 +212,21 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
//排除不是本组织的 //排除不是本组织的
if (!dto.getAgencyName().equals(agencyName)){ if (!dto.getAgencyName().equals(agencyName)){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.NEIGHBOR_HOOD_ERROR);
}else { }else {
// 根据组织查询出所有网格,甩出不是本组织下的网格 // 根据组织查询出所有网格,甩出不是本组织下的网格
gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos; gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos;
if (null == gridInfos){ if (null == gridInfos){
// 组织下确实不存在网格 // 组织下确实不存在网格
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.NEIGHBOR_HOOD_ERROR);
return; return;
} }
// 根据网格名对比,没有找到的就把行号加入到未执行成功队列中 // 根据网格名对比,没有找到的就把行号加入到未执行成功队列中
Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName()); Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName());
if (null == cacheGridName){ if (null == cacheGridName){
nums.add(num); nums.add(num);
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.NEIGHBOR_HOOD_ERROR);
return; return;
} }
dto.setGridId(cacheGridName.toString()); dto.setGridId(cacheGridName.toString());
@ -247,7 +255,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
if (StringUtils.isNotBlank(dto.getNeighborHoodId())){ if (StringUtils.isNotBlank(dto.getNeighborHoodId())){
// 小区已存在 // 小区已存在
nums.add(dto.getNum()); nums.add(dto.getNum());
disposeErrorMsg(info,""); disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
}else { }else {
needDisposeList.add(dto); needDisposeList.add(dto);
} }
@ -296,5 +304,23 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId()); icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId());
// 放结果 // 放结果
icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num)); icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num));
ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO();
input.setOperatorId(formDTO.getUserId());
input.setTaskId(taskId);
if (CollectionUtils.isEmpty(nums)){
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS);
epmetCommonServiceOpenFeignClient.finishImportTask(input);
}else {
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
if (!CollectionUtils.isEmpty(errorInfos)){
try {
String s = neighborHoodService.orgGeneralImport(errorInfos, NeighborHoodErrorInfoModel.class);
input.setResultDescFilePath(s);
} catch (IOException e) {
e.printStackTrace();
}
}
epmetCommonServiceOpenFeignClient.finishImportTask(input);
}
} }
} }

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodErrorInfoModel.java

@ -1,5 +1,6 @@
package com.epmet.model; package com.epmet.model;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
@ -11,10 +12,10 @@ import lombok.Data;
@Data @Data
public class NeighborHoodErrorInfoModel { public class NeighborHoodErrorInfoModel {
@ExcelProperty(value = "小区名称") @Excel(name = "小区名称")
private String neighborHoodName; private String neighborHoodName;
@ExcelProperty(value = "错误信息") @Excel(name = "错误信息")
private String errorMsg; private String errorMsg;
} }

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

@ -30,6 +30,7 @@ import com.epmet.entity.IcPropertyManagementEntity;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -143,4 +144,6 @@ public interface IcNeighborHoodService extends BaseService<IcNeighborHoodEntity>
void insertPropertyManagement(List<IcPropertyManagementEntity> propertyManagementEntities); void insertPropertyManagement(List<IcPropertyManagementEntity> propertyManagementEntities);
void neighborHoodPropertyInsert(List<IcNeighborHoodPropertyEntity> entities); void neighborHoodPropertyInsert(List<IcNeighborHoodPropertyEntity> entities);
<T> String orgGeneralImport(Collection<?> errorRows, Class<T> tClass) throws IOException;
} }

20
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.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode; 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.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.*; import com.epmet.dao.*;
import com.epmet.dto.BuildingTreeLevelDTO; import com.epmet.dto.BuildingTreeLevelDTO;
import com.epmet.dto.CustomerStaffAgencyDTO; import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.IcBuildingDTO;
import com.epmet.dto.form.IcBulidingFormDTO; import com.epmet.dto.form.IcBulidingFormDTO;
import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO;
import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.*;
import com.epmet.dto.result.BuildingResultPagedDTO;
import com.epmet.dto.result.IcNeighborHoodResultDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.entity.*; import com.epmet.entity.*;
import com.epmet.enums.BuildingTypeEnums; import com.epmet.enums.BuildingTypeEnums;
import com.epmet.excel.IcBuildingExcel; import com.epmet.excel.IcBuildingExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.model.BuildingInfoModel; import com.epmet.model.BuildingInfoModel;
import com.epmet.model.HouseInfoModel; import com.epmet.model.HouseInfoModel;
import com.epmet.model.ImportBuildingInfoListener; import com.epmet.model.ImportBuildingInfoListener;
@ -89,6 +90,8 @@ public class BuildingServiceImpl implements BuildingService {
private IcHouseRedis icHouseRedis; private IcHouseRedis icHouseRedis;
@Autowired @Autowired
private IcNeighborHoodService neighborHoodService; private IcNeighborHoodService neighborHoodService;
@Autowired
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -406,10 +409,17 @@ public class BuildingServiceImpl implements BuildingService {
} catch (IOException e) { } catch (IOException e) {
return new Result<String>().error("读取文件失败"); return new Result<String>().error("读取文件失败");
} }
ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD);
importFormDTO.setOperatorId(formDTO.getUserId());
Result<ImportTaskCommonResultDTO> importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
if (!importTask.success()){
throw new EpmetException("创建任务失败");
}
excelReader = EasyExcel.read(inputStream).build(); excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) 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(); .build();
excelReader.read(readSheet); excelReader.read(readSheet);
} finally { } finally {

70
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; 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.EasyExcel;
import com.alibaba.excel.ExcelReader; import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet; 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.dto.result.OptionResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException; 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.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; 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.ConvertUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerGridConstant; import com.epmet.constant.CustomerGridConstant;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.CustomerGridDao; import com.epmet.dao.CustomerGridDao;
import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcNeighborHoodDao; import com.epmet.dao.IcNeighborHoodDao;
import com.epmet.dao.IcPropertyManagementDao; import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.ImportResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.InfoByNamesResultDTO; import com.epmet.dto.result.InfoByNamesResultDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.*; import com.epmet.entity.*;
import com.epmet.excel.IcNeighborHoodExcel; import com.epmet.excel.IcNeighborHoodExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.model.ImportNeighborHoodInfoListener; import com.epmet.model.ImportNeighborHoodInfoListener;
import com.epmet.model.NeighborHoodInfoModel; import com.epmet.model.NeighborHoodInfoModel;
import com.epmet.redis.IcHouseRedis; 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.CollectionUtils;
import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -95,6 +110,10 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
private IcHouseRedis icHouseRedis; private IcHouseRedis icHouseRedis;
@Autowired @Autowired
private IcBuildingDao icBuildingDao; private IcBuildingDao icBuildingDao;
@Autowired
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Autowired
private OssFeignClient ossFeignClient;
@Override @Override
public PageData<IcNeighborHoodDTO> page(Map<String, Object> params) { public PageData<IcNeighborHoodDTO> page(Map<String, Object> params) {
@ -396,10 +415,17 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
} catch (IOException e) { } catch (IOException e) {
return new Result<String>().error("读取文件失败"); return new Result<String>().error("读取文件失败");
} }
ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD);
importFormDTO.setOperatorId(formDTO.getUserId());
Result<ImportTaskCommonResultDTO> importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
if (!importTask.success()){
throw new EpmetException("创建任务失败");
}
excelReader = EasyExcel.read(inputStream).build(); excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class) 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(); .build();
excelReader.read(readSheet); excelReader.read(readSheet);
} finally { } finally {
@ -609,4 +635,44 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
return unitEntity.getId(); return unitEntity.getId();
} }
@Override
public <T> String orgGeneralImport(Collection<?> errorRows, Class<T> 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<UploadImgResultDTO> 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();
}
} }

Loading…
Cancel
Save