Browse Source

Merge branch 'dev_import' of http://git.elinkit.com.cn:7070/r/epmet-cloud into develop

dev
wangxianzhang 4 years ago
parent
commit
3ef2d6f51f
  1. 16
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java
  2. 19
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java
  3. 12
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java
  4. 22
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java
  5. 10
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java
  6. 14
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java
  7. 24
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java
  8. 1
      epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml
  9. 14
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java
  10. 5
      epmet-module/gov-org/gov-org-server/pom.xml
  11. 6
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java
  12. 19
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
  13. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java
  14. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java
  15. 54
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
  16. 55
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java
  17. 44
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java
  18. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodErrorInfoModel.java
  19. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java
  20. 20
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
  21. 70
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

16
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java

@ -10,14 +10,9 @@ package com.epmet.commons.tools.feign;
import feign.Logger; import feign.Logger;
import feign.RequestInterceptor; import feign.RequestInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.RequestContextFilter;
import org.springframework.web.servlet.DispatcherServlet;
import javax.annotation.PostConstruct;
/** /**
@ -29,10 +24,6 @@ import javax.annotation.PostConstruct;
*/ */
@Configuration @Configuration
public class FeignConfig { public class FeignConfig {
@Autowired
RequestContextFilter requestContextFilter;
@Autowired
DispatcherServlet dispatcherServlet;
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
@ -46,10 +37,5 @@ public class FeignConfig {
return Logger.Level.BASIC;//控制台会输出debug日志 return Logger.Level.BASIC;//控制台会输出debug日志
} }
@PostConstruct
public void init() {
// 设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险。
requestContextFilter.setThreadContextInheritable(true);
dispatcherServlet.setThreadContextInheritable(true);
}
} }

19
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java

@ -0,0 +1,19 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.commons.tools.validator.group;
/**
* 查询 Group
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
public interface QueryGroup {
}

12
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java

@ -1,19 +1,27 @@
package com.epmet.dto.form; package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.validator.group.QueryGroup;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@Data @Data
public class ImportTaskCommonFormDTO { public class ImportTaskCommonFormDTO extends PageFormDTO {
public interface Create {} public interface Create {}
public interface Finish {} public interface Finish {}
/**
* 原始文件名
*/
@NotBlank(message = "原始文件名必填", groups = { Create.class })
private String originFileName;
/** /**
* 操作者ID * 操作者ID
*/ */
@NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class }) @NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class, QueryGroup.class})
private String operatorId; private String operatorId;
/** /**

22
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java

@ -1,9 +1,13 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
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.page.PageData;
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.commons.tools.validator.group.QueryGroup;
import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.service.ImportTaskService; import com.epmet.service.ImportTaskService;
@ -12,8 +16,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
@RestController @RestController
@RequestMapping("import-task") @RequestMapping("import-task")
public class ImportTaskController { public class ImportTaskController {
@ -21,6 +23,19 @@ public class ImportTaskController {
@Autowired @Autowired
private ImportTaskService importTaskService; private ImportTaskService importTaskService;
/**
* desc:分页获取个人导入记录
* @param tokenDto
* @return
*/
@RequestMapping("page")
public Result<PageData<ImportTaskCommonResultDTO>> list(@LoginUser TokenDto tokenDto, @RequestBody ImportTaskCommonFormDTO param) {
//tokenDto.setUserId("d8dfc6c1fa2538976059f3900036d419");
param.setOperatorId(tokenDto.getUserId());
ValidatorUtils.validateEntity(param, QueryGroup.class);
return new Result().ok(importTaskService.page(param));
}
/** /**
* 创建导入任务 * 创建导入任务
* @param input * @param input
@ -31,8 +46,9 @@ public class ImportTaskController {
ValidatorUtils.validateEntity(input, ImportTaskCommonFormDTO.Create.class); ValidatorUtils.validateEntity(input, ImportTaskCommonFormDTO.Create.class);
String operatorId = input.getOperatorId(); String operatorId = input.getOperatorId();
String bizType = input.getBizType(); String bizType = input.getBizType();
String originFileName = input.getOriginFileName();
String taskId = importTaskService.createProcessTask(operatorId, bizType); String taskId = importTaskService.createProcessTask(operatorId, bizType, originFileName);
ImportTaskCommonResultDTO ro = new ImportTaskCommonResultDTO(taskId); ImportTaskCommonResultDTO ro = new ImportTaskCommonResultDTO(taskId);
return new Result().ok(ro); return new Result().ok(ro);
} }

10
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java

@ -20,6 +20,16 @@ public class ImportTaskEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 原始文件名
*/
private String originFileName;
/** /**
* 业务类型resi:居民楼栋:building房屋:house依次补充 * 业务类型resi:居民楼栋:building房屋:house依次补充
*/ */

14
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java

@ -1,6 +1,10 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
/** /**
* *
* *
@ -21,8 +25,9 @@ public interface ImportTaskService {
* 创建处理任务 * 创建处理任务
* @param operatorId * @param operatorId
* @param bizType * @param bizType
* @param originFileName 原始文件名
*/ */
String createProcessTask(String operatorId, String bizType); String createProcessTask(String operatorId, String bizType, String originFileName);
/** /**
* 结束导入 * 结束导入
@ -32,4 +37,11 @@ public interface ImportTaskService {
* @param resultDesc 结果描述文本 * @param resultDesc 结果描述文本
*/ */
Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc); Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc);
/**
* desc分页获取个人导入记录
* @param param
* @return
*/
PageData<ImportTaskCommonResultDTO> page(ImportTaskCommonFormDTO param);
} }

24
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java

@ -3,10 +3,16 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.security.user.LoginUserUtil;
import com.epmet.commons.tools.page.PageData;
import com.epmet.constants.ImportTaskConstants; import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.ImportTaskDao; import com.epmet.dao.ImportTaskDao;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.entity.ImportTaskEntity; import com.epmet.entity.ImportTaskEntity;
import com.epmet.service.ImportTaskService; import com.epmet.service.ImportTaskService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -24,6 +30,9 @@ public class ImportTaskServiceImpl implements ImportTaskService {
@Autowired @Autowired
private ImportTaskDao importRecordDao; private ImportTaskDao importRecordDao;
@Autowired
private LoginUserUtil loginUserUtil;
// /** // /**
// * 该用户,该业务类型,是否有正在处理的导入任务 // * 该用户,该业务类型,是否有正在处理的导入任务
// * @param operatorId 操作者ID // * @param operatorId 操作者ID
@ -56,7 +65,7 @@ public class ImportTaskServiceImpl implements ImportTaskService {
} }
@Override @Override
public String createProcessTask(String operatorId, String bizType) { public String createProcessTask(String operatorId, String bizType, String originFileName) {
if (existsProcessingTask(operatorId, bizType)) { if (existsProcessingTask(operatorId, bizType)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
"已存在执行中的导入任务,请等待执行完成。", "已存在执行中的导入任务,请等待执行完成。",
@ -67,7 +76,9 @@ public class ImportTaskServiceImpl implements ImportTaskService {
importRecord.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_PROCESSING); importRecord.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_PROCESSING);
importRecord.setOperatorId(operatorId); importRecord.setOperatorId(operatorId);
importRecord.setBizType(bizType); importRecord.setBizType(bizType);
importRecord.setCustomerId(loginUserUtil.getLoginUserCustomerId());
importRecord.setStartTime(new Date()); importRecord.setStartTime(new Date());
importRecord.setOriginFileName(originFileName);
importRecordDao.insert(importRecord); importRecordDao.insert(importRecord);
return importRecord.getId(); return importRecord.getId();
@ -77,4 +88,15 @@ public class ImportTaskServiceImpl implements ImportTaskService {
public Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc) { public Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc) {
return importRecordDao.finish(taskId, processStatus, operatorId, resultDesc, resultDescFile) > 0; return importRecordDao.finish(taskId, processStatus, operatorId, resultDesc, resultDescFile) > 0;
} }
@Override
public PageData<ImportTaskCommonResultDTO> page(ImportTaskCommonFormDTO param) {
LambdaQueryWrapper<ImportTaskEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ImportTaskEntity::getOperatorId,param.getOperatorId());
Page<ImportTaskCommonResultDTO> page = PageHelper.startPage(param.getPageNo(), param.getPageSize(), param.isPage()).doSelectPage(() -> {
importRecordDao.selectList(queryWrapper);
});
PageData<ImportTaskCommonResultDTO> result = new PageData<>(page.getResult(),page.getTotal());
return result;
}
} }

1
epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml

@ -5,6 +5,7 @@
<resultMap type="com.epmet.entity.ImportTaskEntity" id="importRecordMap"> <resultMap type="com.epmet.entity.ImportTaskEntity" id="importRecordMap">
<result property="id" column="ID"/> <result property="id" column="ID"/>
<result property="originFileName" column="ORIGIN_FILE_NAME"/>
<result property="bizType" column="BIZ_TYPE"/> <result property="bizType" column="BIZ_TYPE"/>
<result property="processStatus" column="PROCESS_STATUS"/> <result property="processStatus" column="PROCESS_STATUS"/>
<result property="operatorId" column="OPERATOR_ID"/> <result property="operatorId" column="OPERATOR_ID"/>

14
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java

@ -1,24 +1,10 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.LatestActServiceRelationDao; import com.epmet.dao.LatestActServiceRelationDao;
import com.epmet.dto.LatestActServiceRelationDTO;
import com.epmet.entity.LatestActServiceRelationEntity; import com.epmet.entity.LatestActServiceRelationEntity;
import com.epmet.redis.LatestActServiceRelationRedis;
import com.epmet.service.LatestActServiceRelationService; import com.epmet.service.LatestActServiceRelationService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/** /**
* 联建活动与服务事项关联表 * 联建活动与服务事项关联表

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