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. 18
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java
  7. 28
      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.RequestInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
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
public class FeignConfig {
@Autowired
RequestContextFilter requestContextFilter;
@Autowired
DispatcherServlet dispatcherServlet;
@Bean
@ConditionalOnMissingBean
@ -46,10 +37,5 @@ public class FeignConfig {
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;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.validator.group.QueryGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ImportTaskCommonFormDTO {
public class ImportTaskCommonFormDTO extends PageFormDTO {
public interface Create {}
public interface Finish {}
/**
* 原始文件名
*/
@NotBlank(message = "原始文件名必填", groups = { Create.class })
private String originFileName;
/**
* 操作者ID
*/
@NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class })
@NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class, QueryGroup.class})
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;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.exception.EpmetErrorCode;
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.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.QueryGroup;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
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.RestController;
import java.util.HashMap;
@RestController
@RequestMapping("import-task")
public class ImportTaskController {
@ -21,6 +23,19 @@ public class ImportTaskController {
@Autowired
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
@ -31,8 +46,9 @@ public class ImportTaskController {
ValidatorUtils.validateEntity(input, ImportTaskCommonFormDTO.Create.class);
String operatorId = input.getOperatorId();
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);
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;
/**
* 客户ID
*/
private String customerId;
/**
* 原始文件名
*/
private String originFileName;
/**
* 业务类型resi:居民楼栋:building房屋:house依次补充
*/

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

@ -1,8 +1,12 @@
package com.epmet.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
/**
*
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-15
@ -21,8 +25,9 @@ public interface ImportTaskService {
* 创建处理任务
* @param operatorId
* @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 结果描述文本
*/
Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc);
}
/**
* desc分页获取个人导入记录
* @param param
* @return
*/
PageData<ImportTaskCommonResultDTO> page(ImportTaskCommonFormDTO param);
}

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

@ -3,17 +3,23 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.exception.EpmetErrorCode;
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.dao.ImportTaskDao;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.entity.ImportTaskEntity;
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.stereotype.Service;
import java.util.Date;
/**
*
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-15
@ -24,6 +30,9 @@ public class ImportTaskServiceImpl implements ImportTaskService {
@Autowired
private ImportTaskDao importRecordDao;
@Autowired
private LoginUserUtil loginUserUtil;
// /**
// * 该用户,该业务类型,是否有正在处理的导入任务
// * @param operatorId 操作者ID
@ -56,7 +65,7 @@ public class ImportTaskServiceImpl implements ImportTaskService {
}
@Override
public String createProcessTask(String operatorId, String bizType) {
public String createProcessTask(String operatorId, String bizType, String originFileName) {
if (existsProcessingTask(operatorId, bizType)) {
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.setOperatorId(operatorId);
importRecord.setBizType(bizType);
importRecord.setCustomerId(loginUserUtil.getLoginUserCustomerId());
importRecord.setStartTime(new Date());
importRecord.setOriginFileName(originFileName);
importRecordDao.insert(importRecord);
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) {
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">
<result property="id" column="ID"/>
<result property="originFileName" column="ORIGIN_FILE_NAME"/>
<result property="bizType" column="BIZ_TYPE"/>
<result property="processStatus" column="PROCESS_STATUS"/>
<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;
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.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.dto.LatestActServiceRelationDTO;
import com.epmet.entity.LatestActServiceRelationEntity;
import com.epmet.redis.LatestActServiceRelationRedis;
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.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>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-oss-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<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 {
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.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.form.*;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.IcNeighborHoodResultDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.*;
import com.epmet.excel.IcHouseExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.model.HouseInfoModel;
@ -85,6 +85,8 @@ public class HouseController implements ResultDataResolver {
private IcNeighborHoodService neighborHoodService;
@Autowired
private IcHouseService icHouseService;
@Autowired
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@PostMapping("houselist")
@ -266,10 +268,17 @@ public class HouseController implements ResultDataResolver {
} catch (IOException e) {
return new Result<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();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class)
.registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService))
.registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {

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

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

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

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

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.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant;
import com.epmet.constant.ImportErrorMsgConstants;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.enums.BuildingTypeEnums;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcNeighborHoodService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -36,6 +38,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
Integer num = NumConstant.ZERO;
List<BuildingErrorInfoModel> errorInfos = new ArrayList<>();
BuildingInfoModel info = null;
String taskId = "";
List<ImportGeneralDTO> needDisposeList = new ArrayList<>();
List<ImportGeneralDTO> needInsertList = new ArrayList<>();
@ -56,12 +59,15 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
private IcHouseRedis icHouseRedis;
private IcBuildingDao icBuildingDao;
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.icHouseRedis = icHouseRedis;
this.icBuildingDao = icBuildingDao;
this.neighborHoodService = neighborHoodService;
this.epmetCommonServiceOpenFeignClient = epmetCommonServiceOpenFeignClient;
this.taskId = tId;
}
@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("别墅")){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info, ImportErrorMsgConstants.BUILDING_ERROR);
return;
}
dto.setType(BuildingTypeEnums.getKeyByValue(dto.getType()));
@ -108,7 +114,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
r.getNeighborHoodName() + "_" + r.getBuildingName())){
// 集合里重复的
nums.add(r.getNum());
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
r.setExistStatus(true);
}
}
@ -123,7 +129,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
if (!CollectionUtils.isEmpty(existList)){
existList.forEach(e -> {
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())){
// 说明数据库已存在此楼栋,不需添加
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
}else {
needDisposeList.add(dto);
}
@ -183,7 +189,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
//排除不是本小区的
if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
}else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId());
if (null == gridInfo){
@ -193,7 +199,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
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()))){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
return;
}
dto.setNeighborHoodId(formDTO.getOrgId());
@ -225,7 +231,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
}else {
//
dto.setGridId(formDTO.getOrgId());
@ -252,21 +258,21 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
//排除不是本组织的
if (!dto.getAgencyName().equals(agencyName)){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
}else {
// 根据组织查询出所有网格,甩出不是本组织下的网格
gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos;
if (null == gridInfos){
// 组织下确实不存在网格
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
return;
}
// 根据网格名对比,没有找到的就把行号加入到未执行成功队列中
Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName());
if (null == cacheGridName){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.BUILDING_ERROR);
return;
}
dto.setGridId(cacheGridName.toString());
@ -338,5 +344,23 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId());
// 放结果
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.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant;
import com.epmet.constant.ImportErrorMsgConstants;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.entity.IcHouseEntity;
import com.epmet.enums.HousePurposeEnums;
import com.epmet.enums.HouseRentFlagEnums;
import com.epmet.enums.HouseTypeEnums;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcHouseService;
import com.epmet.service.IcNeighborHoodService;
@ -24,6 +28,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
@ -38,6 +43,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
Integer num = NumConstant.ZERO;
List<HouseErrorInfoModel> errorInfos = new ArrayList<>();
HouseInfoModel info = null;
String taskId = "";
List<ImportGeneralDTO> needDisposeList = new ArrayList<>();
List<ImportGeneralDTO> needInsertList = new ArrayList<>();
@ -61,13 +67,16 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
private IcHouseRedis icHouseRedis;
private IcNeighborHoodService neighborHoodService;
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.icBuildingDao = icBuildingDao;
this.icHouseRedis = icHouseRedis;
this.neighborHoodService = neighborHoodService;
this.icHouseService = icHouseService;
this.epmetCommonServiceOpenFeignClient = epmetCommonServiceOpenFeignClient;
this.taskId = tId;
}
@Override
@ -84,7 +93,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
if (StringUtils.isNotBlank(dto.getHouseType()) ){
if( !"楼房".equals(dto.getHouseType()) && !dto.getHouseType().equals("平房") && !dto.getHouseType().equals("别墅") ){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return;
}
}
@ -98,13 +107,13 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
!dto.getPurpose().equals("商住混用") &&
!dto.getPurpose().equals("其他")) ){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info, ImportErrorMsgConstants.HOUSE_ERROR);
return;
}
dto.setPurpose(HousePurposeEnums.getKeyByValue(dto.getPurpose()));
if (StringUtils.isNotBlank(dto.getRentFlagString()) && (!dto.getRentFlagString().equals("是") && !dto.getRentFlagString().equals("否"))){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return;
}
dto.setRentFlag(HouseRentFlagEnums.getCodeByName(dto.getRentFlagString()));
@ -145,7 +154,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
if (k.equals(r.getBuildingUnitId()+"_"+r.getDoorName())){
// 集合里重复的
nums.add(r.getNum());
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
r.setExistStatus(true);
}
}
@ -159,7 +168,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
if ((n.getBuildingUnitId()+"_"+n.getDoorName()).equals(e)){
// 库里存在的
nums.add(n.getNum());
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
n.setExistStatus(true);
}
}
@ -196,7 +205,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
// 排除不是本楼的
if (!dto.getBuildingName().equals(buildingGeneralDTO.getBuildingName())){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
}else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(buildingGeneralDTO.getGridId());
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.getAgencyName().equals(dto.getAgencyName())&&gridInfo.getGridName().equals(dto.getGridName())&&buildingGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()) && buildingGeneralDTO.getBuildingName().equals(dto.getBuildingName()))){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return;
}
dto.setBuildingId(formDTO.getOrgId());
@ -248,7 +257,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
//排除不是本小区的
if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
}else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId());
if (null == gridInfo){
@ -258,7 +267,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
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()))){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return;
}
dto.setNeighborHoodId(formDTO.getOrgId());
@ -290,7 +299,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
}else {
//
dto.setGridId(formDTO.getOrgId());
@ -317,21 +326,21 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
//排除不是本组织的
if (!dto.getAgencyName().equals(agencyName)){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
}else {
// 根据组织查询出所有网格,甩出不是本组织下的网格
gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos;
if (null == gridInfos){
// 组织下确实不存在网格
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return;
}
// 根据网格名对比,没有找到的就把行号加入到未执行成功队列中
Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName());
if (null == cacheGridName){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.HOUSE_ERROR);
return;
}
dto.setGridId(cacheGridName.toString());
@ -450,6 +459,24 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
// 放结果
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.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant;
import com.epmet.constant.ImportErrorMsgConstants;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.NeighborHoodAndManagementDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.entity.IcNeighborHoodPropertyEntity;
import com.epmet.entity.IcPropertyManagementEntity;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcNeighborHoodService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -39,6 +44,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
Integer num = NumConstant.ZERO;
List<NeighborHoodErrorInfoModel> errorInfos = new ArrayList<>();
NeighborHoodInfoModel info = null;
String taskId = "";
List<ImportGeneralDTO> needDisposeList = new ArrayList<>();
List<ImportGeneralDTO> needInsertList = new ArrayList<>();
@ -57,13 +63,16 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
private IcBuildingDao icBuildingDao;
private IcNeighborHoodService neighborHoodService;
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.icHouseRedis = icHouseRedis;
this.icBuildingDao = icBuildingDao;
this.neighborHoodService = neighborHoodService;
this.propertyManagementDao = propertyManagementDao;
this.epmetCommonServiceOpenFeignClient = epmetCommonServiceOpenFeignClient;
this.taskId = tId;
}
@ -76,7 +85,6 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
num = num + NumConstant.ONE;
ImportGeneralDTO dto = ConvertUtils.sourceToTarget(data, ImportGeneralDTO.class);
dto.setNum(num);
disposeErrorMsg(info,"");
dto.setCustomerId(formDTO.getCustomerId());
if (formDTO.getOrgType().equals(CustomerGridConstant.GRID)){
disposeGridNeighborHood(dto);
@ -101,7 +109,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
if (k.equals(r.getAgencyName() + "_" + r.getGridName() + "_" + r.getNeighborHoodName())){
// 集合里重复的
nums.add(r.getNum());
disposeErrorMsg(info,"");
disposeErrorMsg(info, ImportErrorMsgConstants.EXIST_ERROR);
r.setExistStatus(true);
}
}
@ -116,7 +124,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
if (!CollectionUtils.isEmpty(existList)){
existList.forEach(e -> {
nums.add(e.getNum());
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
});
}
List<ImportGeneralDTO> notExistList = groupByBuildingExistStatus.get(false);
@ -178,7 +186,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.NEIGHBOR_HOOD_ERROR);
}else {
//
dto.setGridId(formDTO.getOrgId());
@ -204,21 +212,21 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
//排除不是本组织的
if (!dto.getAgencyName().equals(agencyName)){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.NEIGHBOR_HOOD_ERROR);
}else {
// 根据组织查询出所有网格,甩出不是本组织下的网格
gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos;
if (null == gridInfos){
// 组织下确实不存在网格
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.NEIGHBOR_HOOD_ERROR);
return;
}
// 根据网格名对比,没有找到的就把行号加入到未执行成功队列中
Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName());
if (null == cacheGridName){
nums.add(num);
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.NEIGHBOR_HOOD_ERROR);
return;
}
dto.setGridId(cacheGridName.toString());
@ -247,7 +255,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
if (StringUtils.isNotBlank(dto.getNeighborHoodId())){
// 小区已存在
nums.add(dto.getNum());
disposeErrorMsg(info,"");
disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
}else {
needDisposeList.add(dto);
}
@ -296,5 +304,23 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId());
// 放结果
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;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@ -11,10 +12,10 @@ import lombok.Data;
@Data
public class NeighborHoodErrorInfoModel {
@ExcelProperty(value = "小区名称")
@Excel(name = "小区名称")
private String neighborHoodName;
@ExcelProperty(value = "错误信息")
@Excel(name = "错误信息")
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 java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ -143,4 +144,6 @@ public interface IcNeighborHoodService extends BaseService<IcNeighborHoodEntity>
void insertPropertyManagement(List<IcPropertyManagementEntity> propertyManagementEntities);
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.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.*;
import com.epmet.dto.BuildingTreeLevelDTO;
import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.IcBuildingDTO;
import com.epmet.dto.form.IcBulidingFormDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.ListIcNeighborHoodFormDTO;
import com.epmet.dto.result.BuildingResultDTO;
import com.epmet.dto.result.BuildingResultPagedDTO;
import com.epmet.dto.result.IcNeighborHoodResultDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.*;
import com.epmet.enums.BuildingTypeEnums;
import com.epmet.excel.IcBuildingExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.model.BuildingInfoModel;
import com.epmet.model.HouseInfoModel;
import com.epmet.model.ImportBuildingInfoListener;
@ -89,6 +90,8 @@ public class BuildingServiceImpl implements BuildingService {
private IcHouseRedis icHouseRedis;
@Autowired
private IcNeighborHoodService neighborHoodService;
@Autowired
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Override
@Transactional(rollbackFor = Exception.class)
@ -406,10 +409,17 @@ public class BuildingServiceImpl implements BuildingService {
} catch (IOException e) {
return new Result<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();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class)
.registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService))
.registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {

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;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet;
@ -31,6 +32,7 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
@ -39,16 +41,22 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerGridConstant;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.CustomerGridDao;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcNeighborHoodDao;
import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.*;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.InfoByNamesResultDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.*;
import com.epmet.excel.IcNeighborHoodExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.model.ImportNeighborHoodInfoListener;
import com.epmet.model.NeighborHoodInfoModel;
import com.epmet.redis.IcHouseRedis;
@ -58,14 +66,21 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.commons.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.FileItemFactory;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.*;
import java.util.stream.Collectors;
@ -95,6 +110,10 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
private IcHouseRedis icHouseRedis;
@Autowired
private IcBuildingDao icBuildingDao;
@Autowired
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Autowired
private OssFeignClient ossFeignClient;
@Override
public PageData<IcNeighborHoodDTO> page(Map<String, Object> params) {
@ -396,10 +415,17 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
} catch (IOException e) {
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();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class)
.registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao))
.registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {
@ -609,4 +635,44 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
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