Browse Source

楼长单元长导入,未完

dev
yinzuomei 2 years ago
parent
commit
4d250a3ce9
  1. 7
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityBuildingManagerDTO.java
  2. 27
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CommunityBuildingManagerController.java
  3. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CommunityBuildingManagerEntity.java
  4. 117
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CommunityBuildingManagerImportListener.java
  5. 116
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/CommunityBuildingManagerImportExcelData.java
  6. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java
  7. 6
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java
  8. 232
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CommunityBuildingManagerServiceImpl.java
  9. 20
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java
  10. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java

7
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityBuildingManagerDTO.java

@ -60,6 +60,7 @@ public class CommunityBuildingManagerDTO implements Serializable {
*/ */
@NotBlank(message ="类型不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) @NotBlank(message ="类型不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class})
private String type; private String type;
private String typeName;
/** /**
* 所属区县id取名字关联customer_agency * 所属区县id取名字关联customer_agency
@ -84,6 +85,7 @@ public class CommunityBuildingManagerDTO implements Serializable {
*/ */
@NotBlank(message ="所属网格不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) @NotBlank(message ="所属网格不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class})
private String gridId; private String gridId;
private String gridName;
/** /**
* 网格的全路径包含网格id * 网格的全路径包含网格id
@ -95,16 +97,19 @@ public class CommunityBuildingManagerDTO implements Serializable {
*/ */
@NotBlank(message ="所属小区不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) @NotBlank(message ="所属小区不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class})
private String viliageId; private String viliageId;
private String viliageName;
/** /**
* 所属楼栋id * 所属楼栋id
*/ */
@NotBlank(message ="楼栋不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) @NotBlank(message ="楼栋不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class})
private String buildingId; private String buildingId;
private String buildingName;
/** /**
* 所属单元id; 单元长时必填此列 * 所属单元id
*/ */
private String unitId; private String unitId;
private String unitName;
} }

27
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CommunityBuildingManagerController.java

@ -10,20 +10,28 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit; 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.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.OrgLevelEnum;
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.feign.ResultDataResolver; import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO; import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO;
import com.epmet.dto.result.CommunityBuildingManagerDTO; import com.epmet.dto.result.CommunityBuildingManagerDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO;
import com.epmet.service.CommunityBuildingManagerService; import com.epmet.service.CommunityBuildingManagerService;
import com.epmet.service.CustomerAgencyService;
import com.epmet.utils.ImportTaskUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.IndexedColors;
@ -36,12 +44,15 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.file.Path;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
@ -215,9 +226,11 @@ public class CommunityBuildingManagerController implements ResultDataResolver {
* @return * @return
*/ */
@PostMapping("import") @PostMapping("import")
public Result importExcel(@RequestPart("file") MultipartFile file) { public Result importExcel(@LoginUser TokenDto tokenDto,@RequestPart("file") MultipartFile file) {
return new Result(); // 只有社区级账号可以导入
/*// 1.暂存文件 communityBuildingManagerService.checkImportPermission(tokenDto.getCustomerId(),tokenDto.getUserId());
// 1.暂存文件
String originalFilename = file.getOriginalFilename(); String originalFilename = file.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
@ -255,7 +268,7 @@ public class CommunityBuildingManagerController implements ResultDataResolver {
// 3.执行导入 // 3.执行导入
communityBuildingManagerService.execAsyncExcelImport(fileSavePath, rstData.getTaskId()); communityBuildingManagerService.execAsyncExcelImport(fileSavePath, rstData.getTaskId());
return new Result();*/ return new Result();
} }

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CommunityBuildingManagerEntity.java

@ -79,7 +79,7 @@ public class CommunityBuildingManagerEntity extends BaseEpmetEntity {
private String buildingId; private String buildingId;
/** /**
* 所属单元id; 单元长时必填此列 * 所属单元id
*/ */
private String unitId; private String unitId;

117
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CommunityBuildingManagerImportListener.java

@ -0,0 +1,117 @@
package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.ObjectUtil;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.result.CommunityBuildingManagerDTO;
import com.epmet.excel.yt.CommunityBuildingManagerImportExcelData;
import com.epmet.service.impl.CommunityBuildingManagerServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
* @Description
* @Author yzm
* @Date 2023/5/9 16:26
*/
@Slf4j
public class CommunityBuildingManagerImportListener implements ReadListener<CommunityBuildingManagerImportExcelData> {
// 最大条数阈值
public static final int MAX_THRESHOLD = 200;
private String customerId;
private String staffId;
private String agencyId;
private String districtId;
private String streetId;
private String rediPrex;
private CommunityBuildingManagerServiceImpl communityBuildingManagerService;
// 错误项列表
private List<CommunityBuildingManagerImportExcelData.ErrorRow> errorRows = new ArrayList<>();
// 要插入的数据
private List<CommunityBuildingManagerDTO> excelDataList = new ArrayList<>();
public CommunityBuildingManagerImportListener(String customerId, String staffId, String agencyId,String districtId,String streetId,String rediPrex,CommunityBuildingManagerServiceImpl communityBuildingManagerService) {
this.customerId = customerId;
this.staffId = staffId;
this.agencyId=agencyId;
this.districtId=districtId;
this.streetId=streetId;
this.rediPrex=rediPrex;
this.communityBuildingManagerService = communityBuildingManagerService;
}
@Override
public void invoke(CommunityBuildingManagerImportExcelData data, AnalysisContext analysisContext) {
try {
// log.warn("有数据吗?"+JSON.toJSONString(data));
// 不能为空先校验数据
ValidatorUtils.validateEntity(data);
// 去除空格
ObjectUtil.objectToTrim(data);
CommunityBuildingManagerDTO communityBuildingManagerDTO = ConvertUtils.sourceToTarget(data, CommunityBuildingManagerDTO.class);
communityBuildingManagerDTO.setCustomerId(customerId);
communityBuildingManagerDTO.setCommunityId(agencyId);
communityBuildingManagerDTO.setType("单元长".equals(data.getTypeName()) ? NumConstant.ONE_STR : NumConstant.ZERO_STR);
excelDataList.add(communityBuildingManagerDTO);
if (excelDataList.size() == MAX_THRESHOLD) {
execPersist();
}
} catch (Exception e) {
String errorMsg = null;
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else if (e instanceof EpmetException) {
errorMsg = ((EpmetException) e).getInternalMsg();
} else {
errorMsg = "未知错误";
log.error("【楼长单元长ic_property_management导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}
CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(data, CommunityBuildingManagerImportExcelData.ErrorRow.class);
errorRow.setErrorInfo(errorMsg);
errorRows.add(errorRow);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 最后几条达不到阈值,这里必须再调用一次
execPersist();
}
/**
* 执行持久化
*/
private void execPersist() {
try {
if (CollectionUtils.isNotEmpty(excelDataList)) {
communityBuildingManagerService.handleImportExcelData(customerId,staffId,agencyId, districtId, streetId,rediPrex,excelDataList,this);
}
} finally {
excelDataList.clear();
}
}
/**
* 获取错误行
*
* @return
*/
public List<CommunityBuildingManagerImportExcelData.ErrorRow> getErrorRows() {
return errorRows;
}
}

116
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/CommunityBuildingManagerImportExcelData.java

@ -0,0 +1,116 @@
package com.epmet.excel.yt;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* @Description
* @Author yzm
* @Date 2023/5/9 16:13
*/
@Data
public class CommunityBuildingManagerImportExcelData {
/**
* 姓名
*/
@ExcelProperty(value = "*姓名")
@Length(max = 50, message = "姓名最多输入50字")
@NotBlank(message = "姓名不能为空")
private String name;
/**
* 联系电话
*/
@ExcelProperty(value = "*联系电话")
@Length(max = 50, message = "联系电话最多输入50字")
@NotBlank(message = "联系电话不能为空")
private String phone;
/**
* 身份证号
*/
@ExcelProperty(value = "*身份证号")
@Length(max = 50, message = "身份证号最多输入50字")
@NotBlank(message = "身份证号不能为空")
private String idCard;
/**
* 类型0楼长1单元长
*/
@ExcelProperty(value = "*类型")
@NotBlank(message = "类型不能为空")
private String typeName;
@ExcelProperty(value = "*所属网格")
@NotBlank(message = "所属网格不能为空")
private String gridName;
@ExcelProperty(value = "*所属小区")
@NotBlank(message = "所属小区不能为空")
private String viliageName;
@ExcelProperty(value = "*楼栋")
@NotBlank(message = "楼栋不能为空")
private String buildingName;
@ExcelProperty(value = "单元")
private String unitName;
@Data
public static class ErrorRow {
/**
* 姓名
*/
@ExcelProperty(value = "*姓名")
@ColumnWidth(20)
private String name;
/**
* 联系电话
*/
@ExcelProperty(value = "*联系电话")
@ColumnWidth(20)
private String phone;
/**
* 身份证号
*/
@ExcelProperty(value = "*身份证号")
@ColumnWidth(25)
private String idCard;
/**
* 类型0楼长1单元长
*/
@ExcelProperty(value = "*类型")
@ColumnWidth(15)
private String typeName;
@ExcelProperty(value = "*所属网格")
@ColumnWidth(30)
private String gridName;
@ExcelProperty(value = "*所属小区")
@ColumnWidth(30)
private String viliageName;
@ExcelProperty(value = "*楼栋")
@ColumnWidth(20)
private String buildingName;
@ExcelProperty(value = "单元")
@ColumnWidth(20)
private String unitName;
@ColumnWidth(60)
@ExcelProperty("错误信息")
private String errorInfo;
}
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java

@ -66,4 +66,6 @@ public interface CommunityBuildingManagerService extends BaseService<CommunityBu
void delete(List<String> ids); void delete(List<String> ids);
void execAsyncExcelImport(Path fileSavePath, String taskId); void execAsyncExcelImport(Path fileSavePath, String taskId);
void checkImportPermission(String customerId, String userId);
} }

6
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java

@ -133,4 +133,10 @@ public interface IcBuildingService extends BaseService<IcBuildingEntity> {
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.IcBuildingDTO> * @return com.epmet.commons.tools.utils.Result<com.epmet.dto.IcBuildingDTO>
*/ */
Result<IcBulidingDetailDTO> getBuildingDetail(String buildingId); Result<IcBulidingDetailDTO> getBuildingDetail(String buildingId);
/**
* 更新ic_building的楼长信息那4列building_leader_namebuilding_leader_mobilebuilding_leader_id_cardbuilding_leader_type
* @param updateList
*/
void updateBuildingLeader(List<IcBuildingDTO> updateList);
} }

232
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CommunityBuildingManagerServiceImpl.java

@ -1,42 +1,66 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant; 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.enums.OrgLevelEnum;
import com.epmet.commons.tools.enums.OrgTypeEnum;
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.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.EpmetRequestHolder; import com.epmet.constants.ImportTaskConstants;
import com.epmet.commons.tools.utils.PidUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dao.CommunityBuildingManagerDao; import com.epmet.dao.CommunityBuildingManagerDao;
import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO; import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO;
import com.epmet.dto.result.CommunityBuildingManagerDTO; import com.epmet.dto.result.CommunityBuildingManagerDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO;
import com.epmet.entity.CommunityBuildingManagerEntity; import com.epmet.entity.CommunityBuildingManagerEntity;
import com.epmet.entity.IcBuildingEntity; import com.epmet.entity.IcBuildingEntity;
import com.epmet.excel.handler.CommunityBuildingManagerImportListener;
import com.epmet.excel.yt.CommunityBuildingManagerImportExcelData;
import com.epmet.excel.yt.IcPropertyManagementImportExcelData;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.service.CommunityBuildingManagerService; import com.epmet.service.CommunityBuildingManagerService;
import com.epmet.service.CustomerAgencyService;
import com.epmet.service.CustomerGridService; import com.epmet.service.CustomerGridService;
import com.epmet.utils.ImportTaskUtils;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
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.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
* 楼长单元长信息表烟台 * 楼长单元长信息表烟台
@ -49,6 +73,11 @@ import java.util.List;
public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<CommunityBuildingManagerDao, CommunityBuildingManagerEntity> implements CommunityBuildingManagerService { public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<CommunityBuildingManagerDao, CommunityBuildingManagerEntity> implements CommunityBuildingManagerService {
@Autowired @Autowired
private IcBuildingDao icBuildingDao; private IcBuildingDao icBuildingDao;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Autowired
private OssFeignClient ossFeignClient;
/** /**
* 列表分页查询 * 列表分页查询
@ -213,6 +242,14 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<Communi
}); });
} }
@Override
public void checkImportPermission(String customerId, String userId) {
CustomerStaffInfoCacheResult result = CustomerStaffRedis.getStaffInfo(customerId, userId);
CustomerAgencyDTO agencyDTO = SpringContextUtils.getBean(CustomerAgencyService.class).get(result.getAgencyId());
if (!OrgLevelEnum.COMMUNITY.getCode().equals(agencyDTO.getLevel())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "楼长单元长导入功能只有社区账号才可以正常导入", "请使用社区级账号导入excel");
}
}
/** /**
* 执行Excel导入 * 执行Excel导入
@ -223,8 +260,191 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<Communi
@Async @Async
@Override @Override
public void execAsyncExcelImport(Path filePath, String importTaskId) { public void execAsyncExcelImport(Path filePath, String importTaskId) {
// todo String staffId = null;
return; try {
staffId = EpmetRequestHolder.getLoginUserId();
String customerId = EpmetRequestHolder.getLoginUserCustomerId();
CustomerStaffInfoCacheResult staffInfoCacheResult=CustomerStaffRedis.getStaffInfo(customerId,staffId);
// todo
String districtId="";
String streetId="";
String uuid= IdWorker.getIdStr();
CommunityBuildingManagerImportListener listener = new CommunityBuildingManagerImportListener(customerId,staffId,staffInfoCacheResult.getAgencyId(),districtId,streetId,uuid,
SpringContextUtils.getBean(CommunityBuildingManagerServiceImpl.class));
EasyExcel.read(filePath.toFile(), CommunityBuildingManagerImportExcelData.class, listener).headRowNumber(1).sheet(0).doRead();
String errorDesFileUrl = null;
List<CommunityBuildingManagerImportExcelData.ErrorRow> errorRows = listener.getErrorRows();
boolean failed = errorRows.size() > 0;
// 合并到一起写入
// errorRows.addAll(otherRows);
// 生成并上传描述文件
OutputStream os = null;
FileItem fileItem = null;
if (errorRows.size() > 0) {
try {
// 文件生成
Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir(ImportTaskConstants.COMMUNITY_BUILDING_MANAGER, "import", "error_des");
String fileName = UUID.randomUUID().toString().concat(".xlsx");
fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile())
.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
os = fileItem.getOutputStream();
EasyExcel.write(os, IcPropertyManagementImportExcelData.ErrorRow.class).sheet("信息列表").doWrite(errorRows);
// 文件上传oss
Result<UploadImgResultDTO> errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
if (errorDesFileUploadResult.success()) {
errorDesFileUrl = errorDesFileUploadResult.getData().getUrl();
}
} finally {
IOUtils.closeQuietly(os);
if (!fileItem.isInMemory()) {
try {
fileItem.delete();
} catch (Exception e) {
log.error("【楼长单元长表community_building_manager】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e));
}
}
}
}
Result result = ImportTaskUtils.finishImportTask(
importTaskId,
failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,
errorDesFileUrl,
"");
if (!result.success()) {
log.error("【楼长单元长表community_building_manager】finishImportTask失败");
}
} catch (Exception e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【楼长单元长表community_building_manager】出错:{}", errorMsg);
ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importFinishTaskForm.setOperatorId(staffId);
importFinishTaskForm.setResultDesc("物业管理表导入失败:系统异常,请查看系统日志");
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) {
log.error("【楼长单元长表community_building_manager】导入记录状态修改为'完成'失败");
}
} finally {
// 删除临时文件
if (Files.exists(filePath)) {
try {
Files.delete(filePath);
} catch (IOException e) {
e.printStackTrace();
}
}
// todo 删除 网格缓存、小区缓存、楼栋缓存、单元缓存
}
}
/**
* @param customerId
* @param staffId
* @param agencyId
* @param rediPrex
* @param excelDataList
* @param listener
*/
public void handleImportExcelData(String customerId,
String staffId,
String agencyId,
String districtId,
String streetId,
String rediPrex,
List<CommunityBuildingManagerDTO> excelDataList,
CommunityBuildingManagerImportListener listener) {
List<CommunityBuildingManagerEntity> insertList = new ArrayList<>();
List<CommunityBuildingManagerEntity> updateList = new ArrayList<>();
for (CommunityBuildingManagerDTO dto : excelDataList) {
try {
CommunityBuildingManagerEntity entity = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerEntity.class);
entity.setDistrictId(districtId);
entity.setStreetId(streetId);
//查询当前社区下的网格列表
// 所属网格
String gridId = "";
if (StringUtils.isBlank(gridId)) {
CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class);
errorRow.setErrorInfo("网格不存在");
listener.getErrorRows().add(errorRow);
continue;
}
// todo
entity.setOrgIdPath(CustomerOrgRedis.getOrgIdPath(gridId, OrgTypeEnum.GRID.getCode()));
//查询当前网格下的小区
// 所属小区
String viliageId = "";
if (StringUtils.isBlank(viliageId)) {
CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class);
errorRow.setErrorInfo("小区不存在");
listener.getErrorRows().add(errorRow);
continue;
}
entity.setViliageId(viliageId);
//查询当前小区下的楼栋
// 所属楼栋
String buildingId = "";
if (StringUtils.isBlank(buildingId)) {
CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class);
errorRow.setErrorInfo("楼栋不存在");
listener.getErrorRows().add(errorRow);
continue;
}
entity.setBuildingId(buildingId);
// 所属单元
String unitId = "";
if (StringUtils.isNotBlank(dto.getUnitName())) {
// 查询楼栋下的单元列表
if (StringUtils.isBlank(unitId)) {
CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class);
errorRow.setErrorInfo("单元不存在");
listener.getErrorRows().add(errorRow);
continue;
}
entity.setUnitId(unitId);
}
LambdaQueryWrapper<CommunityBuildingManagerEntity> countQuery = new LambdaQueryWrapper<>();
countQuery.eq(CommunityBuildingManagerEntity::getType, entity.getType())
.eq(CommunityBuildingManagerEntity::getBuildingId, buildingId)
.eq(StringUtils.isNotBlank(unitId), CommunityBuildingManagerEntity::getUnitId, unitId)
.ne(CommunityBuildingManagerEntity::getId, null);
CommunityBuildingManagerEntity origin = baseDao.selectOne(countQuery);
if (null == origin) {
insertList.add(entity);
} else {
entity.setId(origin.getId());
updateList.add(entity);
}
} catch (Exception e) {
CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class);
errorRow.setErrorInfo("数据处理异常");
listener.getErrorRows().add(errorRow);
}
}
// 同步到ic_building
this.insertBatch(insertList);
this.updateBatchById(updateList);
} }

20
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java

@ -19,6 +19,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; 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.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
@ -173,4 +174,23 @@ public class IcBuildingServiceImpl extends BaseServiceImpl<IcBuildingDao, IcBuil
return new Result<IcBulidingDetailDTO>().ok(baseDao.getBuildingDetail(buildingId)); return new Result<IcBulidingDetailDTO>().ok(baseDao.getBuildingDetail(buildingId));
} }
/**
* 更新ic_building的楼长信息那4列building_leader_namebuilding_leader_mobilebuilding_leader_id_cardbuilding_leader_type
*
* @param updateList
*/
@Override
public void updateBuildingLeader(List<IcBuildingDTO> updateList) {
updateList.forEach(dto -> {
LambdaUpdateWrapper<IcBuildingEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(IcBuildingEntity::getId, dto.getId())
.set(IcBuildingEntity::getBuildingLeaderName, dto.getBuildingLeaderName())
.set(IcBuildingEntity::getBuildingLeaderMobile, dto.getBuildingLeaderMobile())
.set(IcBuildingEntity::getBuildingLeaderIdCard, dto.getBuildingLeaderIdCard())
.set(IcBuildingEntity::getBuildingLeaderType, dto.getBuildingLeaderType())
.set(IcBuildingEntity::getUpdatedBy, dto.getUpdatedBy())
.set(IcBuildingEntity::getUpdatedTime, dto.getUpdatedTime());
baseDao.update(null, updateWrapper);
});
}
} }

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java

@ -359,7 +359,7 @@ public class PropertyManagementServiceImpl implements PropertyManagementService
importFinishTaskForm.setTaskId(importTaskId); importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importFinishTaskForm.setOperatorId(userId); importFinishTaskForm.setOperatorId(userId);
importFinishTaskForm.setResultDesc("城市管理图层导入失败:系统异常,请查看系统日志"); importFinishTaskForm.setResultDesc("物业管理表导入失败:系统异常,请查看系统日志");
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) { if (!result.success()) {

Loading…
Cancel
Save