diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityBuildingManagerDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityBuildingManagerDTO.java index 062fe0b7b7..8022d3334c 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityBuildingManagerDTO.java +++ b/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}) private String type; + private String typeName; /** * 所属区县id;取名字关联customer_agency @@ -84,6 +85,7 @@ public class CommunityBuildingManagerDTO implements Serializable { */ @NotBlank(message ="所属网格不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) private String gridId; + private String gridName; /** * 网格的全路径,包含网格id @@ -95,16 +97,19 @@ public class CommunityBuildingManagerDTO implements Serializable { */ @NotBlank(message ="所属小区不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) private String viliageId; + private String viliageName; /** * 所属楼栋id */ @NotBlank(message ="楼栋不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) private String buildingId; + private String buildingName; /** - * 所属单元id; 单元长时必填此列 + * 所属单元id */ private String unitId; + private String unitName; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CommunityBuildingManagerController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CommunityBuildingManagerController.java index 7c4f1fef3c..cf2cc27574 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CommunityBuildingManagerController.java +++ b/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.aop.NoRepeatSubmit; 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.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.feign.ResultDataResolver; 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.utils.DateUtils; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; 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.result.CommunityBuildingManagerDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; import com.epmet.service.CommunityBuildingManagerService; +import com.epmet.service.CustomerAgencyService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.poi.ss.usermodel.IndexedColors; @@ -36,12 +44,15 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncoder; +import java.nio.file.Path; import java.util.Date; import java.util.List; +import java.util.UUID; /** @@ -215,9 +226,11 @@ public class CommunityBuildingManagerController implements ResultDataResolver { * @return */ @PostMapping("import") - public Result importExcel(@RequestPart("file") MultipartFile file) { - return new Result(); - /*// 1.暂存文件 + public Result importExcel(@LoginUser TokenDto tokenDto,@RequestPart("file") MultipartFile file) { + // 只有社区级账号可以导入 + communityBuildingManagerService.checkImportPermission(tokenDto.getCustomerId(),tokenDto.getUserId()); + + // 1.暂存文件 String originalFilename = file.getOriginalFilename(); String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); @@ -255,7 +268,7 @@ public class CommunityBuildingManagerController implements ResultDataResolver { // 3.执行导入 communityBuildingManagerService.execAsyncExcelImport(fileSavePath, rstData.getTaskId()); - return new Result();*/ + return new Result(); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CommunityBuildingManagerEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CommunityBuildingManagerEntity.java index c2ac9184b9..dc2e57bd94 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CommunityBuildingManagerEntity.java +++ b/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; /** - * 所属单元id; 单元长时必填此列 + * 所属单元id */ private String unitId; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CommunityBuildingManagerImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CommunityBuildingManagerImportListener.java new file mode 100644 index 0000000000..8609096b6f --- /dev/null +++ b/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 { + + // 最大条数阈值 + 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 errorRows = new ArrayList<>(); + // 要插入的数据 + private List 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 getErrorRows() { + return errorRows; + } + + +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/CommunityBuildingManagerImportExcelData.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/CommunityBuildingManagerImportExcelData.java new file mode 100644 index 0000000000..469532c38f --- /dev/null +++ b/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; + } + +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java index eb32743443..fc48ab538f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java @@ -66,4 +66,6 @@ public interface CommunityBuildingManagerService extends BaseService ids); void execAsyncExcelImport(Path fileSavePath, String taskId); + + void checkImportPermission(String customerId, String userId); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java index cde64d4da0..bac9041896 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java @@ -133,4 +133,10 @@ public interface IcBuildingService extends BaseService { * @return com.epmet.commons.tools.utils.Result */ Result getBuildingDetail(String buildingId); + + /** + * 更新ic_building的楼长信息那4列:building_leader_name、building_leader_mobile、building_leader_id_card、building_leader_type + * @param updateList + */ + void updateBuildingLeader(List updateList); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CommunityBuildingManagerServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CommunityBuildingManagerServiceImpl.java index 6461489107..63c0209d4f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CommunityBuildingManagerServiceImpl.java +++ b/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; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; 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.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; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.EpmetRequestHolder; -import com.epmet.commons.tools.utils.PidUtils; -import com.epmet.commons.tools.utils.SpringContextUtils; +import com.epmet.commons.tools.utils.*; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.CommunityBuildingManagerDao; import com.epmet.dao.IcBuildingDao; +import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO; import com.epmet.dto.result.CommunityBuildingManagerDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; import com.epmet.entity.CommunityBuildingManagerEntity; 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.CustomerAgencyService; import com.epmet.service.CustomerGridService; +import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; 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.http.entity.ContentType; +import org.apache.poi.util.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; 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.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.UUID; /** * 楼长单元长信息表(烟台) @@ -49,7 +73,12 @@ import java.util.List; public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl implements CommunityBuildingManagerService { @Autowired private IcBuildingDao icBuildingDao; - + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private OssFeignClient ossFeignClient; + + /** * 列表分页查询 * @@ -213,6 +242,14 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl 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 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 excelDataList, + CommunityBuildingManagerImportListener listener) { + List insertList = new ArrayList<>(); + List 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 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); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java index 577e77c787..4e201a5336 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java +++ b/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.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; @@ -173,4 +174,23 @@ public class IcBuildingServiceImpl extends BaseServiceImpl().ok(baseDao.getBuildingDetail(buildingId)); } + /** + * 更新ic_building的楼长信息那4列:building_leader_name、building_leader_mobile、building_leader_id_card、building_leader_type + * + * @param updateList + */ + @Override + public void updateBuildingLeader(List updateList) { + updateList.forEach(dto -> { + LambdaUpdateWrapper 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); + }); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java index 6ead260319..558383ed73 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java +++ b/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.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); importFinishTaskForm.setOperatorId(userId); - importFinishTaskForm.setResultDesc("城市管理图层导入失败:系统异常,请查看系统日志"); + importFinishTaskForm.setResultDesc("物业管理表导入失败:系统异常,请查看系统日志"); Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); if (!result.success()) {