diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java index a77bdfcf2e..211089537d 100644 --- a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java @@ -28,15 +28,13 @@ import com.epmet.dto.SysDictDataDTO; import com.epmet.entity.SysDictDataEntity; import com.epmet.entity.SysDictTypeEntity; import com.epmet.service.SysDictDataService; +import org.apache.commons.collections4.CollectionUtils; 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.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -276,6 +274,9 @@ public class SysDictDataServiceImpl extends BaseServiceImpl dictMap(String dictType) { List resultDTOList = baseDao.selectDictList(dictType); + if(CollectionUtils.isEmpty(resultDTOList)){ + return new HashMap<>(); + } return resultDTOList.stream().collect(Collectors.toMap(DictListResultDTO::getValue, DictListResultDTO::getLabel)); } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java index a07838684d..fe487d3631 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java @@ -34,6 +34,10 @@ public enum DictTypeEnum { TRAFFIC_TYPE("traffic_type", "交通方式", 36), SOJOURN_HISTORY("sojourn_history", "7天内旅居史情况", 37), TRIP_DATA_TYPE("trip_data_type", "行程记录类型", 39), + YT_KEY_POINT_USER_TYPE("yt_key_point_user_type","重点人群",40), + YT_POPULATION_TYPE("yt_population_type","人口类型",41), + YT_POLITICS_STATUS("yt_politics_status","政治面貌",42), + YT_ID_CARD_TYPE("yt_id_card_type","证件类型",43), ; private final String code; diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index ea9980e7af..0a6f640a1f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -723,6 +723,14 @@ public class EpmetUserServiceImpl implements EpmetUserService { formDTO.setPageNo(pageIndex); //1.分页查询排好序的工作人员Id列表【原本1/2步可以用一个sql,但涉及2需要按1的顺序排序,sql复杂且效率低,所以拆开】 LinkedList staffIds = customerStaffDao.selectOrderRole(formDTO); + if (staffIds!=null && formDTO.getStaffIds()!=null){ + formDTO.getStaffIds().forEach( + staffId->{ + if (!staffIds.contains(staffId)){ + staffIds.add(staffId); + } + }); + } //2.批量查询工作人员信息,按传入顺序排序 if(CollectionUtils.isEmpty(staffIds)){ return new ArrayList<>(); diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java index f25fd4269a..f35891c2a5 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java @@ -93,4 +93,9 @@ public interface ImportTaskConstants { * 楼长单元长 */ String COMMUNITY_BUILDING_MANAGER="community_building_manager"; + + /** + * 客户 + */ + String BIZ_TYPE_CUSTOMER_STAFF="customer_staff"; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java index 52567226eb..a16516edc1 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java @@ -96,6 +96,16 @@ public class IcBuildingDTO implements Serializable { */ private String buildingLeaderMobile; + /** + * 烟台需求:楼长身份证号 + */ + private String buildingLeaderIdCard; + + /** + * 烟台需求:类型:0楼长;1单元长 + */ + private String buildingLeaderType; + /** * 中心点位:经度 */ @@ -156,4 +166,5 @@ public class IcBuildingDTO implements Serializable { */ private Integer realPerson; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java index df0f6b0530..1c25e75f50 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto; +import com.alibaba.excel.annotation.ExcelProperty; import com.epmet.commons.tools.constant.NumConstant; import lombok.Data; @@ -183,4 +184,43 @@ public class ImportGeneralDTO implements Serializable { */ private Boolean buildingUpdateStatus = false; private Boolean neighborHoodUpdateStatus = false; + + /** + * 烟台需求:自然村/小区 + */ + private String viliageType; + + /** + * 烟台需求:自然村/小区 + */ + private String viliageTypeName; + /** + * 烟台需求:面积 + */ + private String area; + /** + * 烟台需求:开放类型 + */ + private String openType; + + /** + * 烟台需求:开放类型 + */ + private String openTypeName; + /** + * 烟台需求:建筑年代 + */ + private String buildYear; + + /** + * 所在楼层 + */ + private String floor; + + private String buildingLeaderIdCard; + + private String buildingLeaderType; + + private String buildingLeaderTypeNum; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java index cafecc1f1b..d4c2af991b 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java @@ -150,5 +150,9 @@ public class IcBulidingAddFormDTO implements Serializable { */ private Integer realPerson; + private String buildingLeaderType; + + private String buildingLeaderIdCard; + } 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-client/src/main/java/com/epmet/dto/result/IcBulidingDetailDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBulidingDetailDTO.java index 10e8e09477..590be5782d 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBulidingDetailDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBulidingDetailDTO.java @@ -121,4 +121,16 @@ public class IcBulidingDetailDTO implements Serializable { */ private Integer realPerson; + /** + * 烟台需求:楼长身份证号 + */ + private String buildingLeaderIdCard; + + /** + * 烟台需求:类型:0楼长;1单元长 + */ + private String buildingLeaderType; + + private String buildingLeaderTypeName; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseListResultDTO.java index 03346cb6fc..940d85b4a4 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseListResultDTO.java @@ -89,5 +89,9 @@ public class IcHouseListResultDTO implements Serializable { */ private String houseCode; + private String area; + + private String floor; + } 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..379af23a48 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,26 @@ 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.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.security.dto.TokenDto; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.ExcelUtils; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; 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.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.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.poi.ss.usermodel.IndexedColors; @@ -36,12 +42,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; /** @@ -84,7 +93,7 @@ public class CommunityBuildingManagerController implements ResultDataResolver { /** * 新增楼长/单元长 - * todo: 同步到具体的楼栋 + * 同步到具体的楼栋 * @param dto * @return */ @@ -103,7 +112,7 @@ public class CommunityBuildingManagerController implements ResultDataResolver { /** * 编辑楼长/单元长 - * todo: 同步到具体的楼栋 + * 同步到具体的楼栋 * @param dto * @return */ @@ -121,7 +130,7 @@ public class CommunityBuildingManagerController implements ResultDataResolver { /** * 批量删除楼长/单元长 - * todo: 同时清空楼栋表里的信息 + * 同时清空楼栋表里的信息 * @param ids * @return */ @@ -215,9 +224,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 +266,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/controller/StaffController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java index d424f60202..1495e595a0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java @@ -5,27 +5,40 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.enums.RequirePermissionEnum; 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.security.dto.TokenDto; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.remote.EpmetUserRemoteService; import com.epmet.service.StaffService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +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.net.URLEncoder; +import java.nio.file.Path; import java.util.List; +import java.util.UUID; /** * 组织结构-工作人员 @@ -35,9 +48,11 @@ import java.util.List; @Slf4j @RestController @RequestMapping("staff") -public class StaffController { +public class StaffController implements ResultDataResolver { @Autowired private StaffService staffService; + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; /** * 组织首页-工作人员列表 * @param fromDTO @@ -233,6 +248,54 @@ public class StaffController { return staffService.addStaffV2(fromDTO); } + @PostMapping("staffimport") + public Result buildingImportExcel(@RequestParam("file") MultipartFile file,@RequestParam("orgType") String orgType,@RequestParam("orgId") String orgId){ + + String userId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID); + + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("staff", "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【核酸检测导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error("method exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_CUSTOMER_STAFF), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "excel导入客户信息错误", + "导入客户信息失败"); + + // 3.执行导入 + staffService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),orgType,orgId); + + return new Result(); + + } + /** * 【通讯录】人员添加-平阴 * @author zhy 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..1c769d2926 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 @@ -1,5 +1,7 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; @@ -21,6 +23,7 @@ public class CommunityBuildingManagerEntity extends BaseEpmetEntity { /** * 客户Id customer.id */ + @TableField(fill = FieldFill.INSERT) private String customerId; /** @@ -79,7 +82,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/entity/IcBuildingEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java index 801267e2dd..4921e1f878 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java @@ -92,6 +92,16 @@ public class IcBuildingEntity extends BaseEpmetEntity { */ private String buildingLeaderMobile; + /** + * 烟台需求:楼长身份证号 + */ + private String buildingLeaderIdCard; + + /** + * 烟台需求:类型:0楼长;1单元长 + */ + private String buildingLeaderType; + /** * 中心点位:经度 */ @@ -122,4 +132,6 @@ public class IcBuildingEntity extends BaseEpmetEntity { */ private Integer realPerson; + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/CustomerStaffImportExcelData.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/CustomerStaffImportExcelData.java new file mode 100644 index 0000000000..c667472284 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/CustomerStaffImportExcelData.java @@ -0,0 +1,75 @@ +package com.epmet.excel; + +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; +import java.util.Date; + +/** + * 核酸检测信息导入excel数据 + */ +@Data +public class CustomerStaffImportExcelData { + + @NotBlank(message = "姓名为必填项") + @ExcelProperty("姓名※") + private String name; + + @NotBlank(message = "手机号为必填项") + @ExcelProperty("联系电话※") + @Length(max = 15, message = "手机号长度不正确,应小于15位") + private String mobile; + + @NotBlank(message = "身份证号为必填项") + @ExcelProperty("身份证号※") + @Length(max = 18, message = "证身份证号长度不正确,应小于18位") + private String idCard; + + @ExcelProperty("村居委员职务") + private String viliagePosition; + + @ExcelProperty("党组织职务") + private String partyPosition; + + @NotBlank(message = "居住地址为必填项") + @ExcelProperty("居住地址※") + private String address; + + @NotBlank(message = "文化程度为必填项") + @ExcelProperty("文化程度※") + private String cultureName; + + @NotBlank(message = "性别为必填项") + @ExcelProperty("性别※") + private String genderName; + + @NotBlank(message = "专兼职为必填项") + @ExcelProperty("专兼职※") + private String workTypeName; + + @NotBlank(message = "工作职责为必填项") + @ExcelProperty("工作职责※") + private String duty; + + @ExcelProperty("备注") + private String remark; + + @Data + public static class RowRemarkMessage { + + @ColumnWidth(60) + @ExcelProperty("姓名") + private String name; + + @ColumnWidth(60) + @ExcelProperty("联系电话") + private String mobile; + + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcBuildingExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcBuildingExcel.java index dbd7f8239b..52e7a2a435 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcBuildingExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcBuildingExcel.java @@ -130,4 +130,10 @@ public class IcBuildingExcel extends ExcelVerifyInfo implements Serializable { @Excel(name = "楼长电话") private String buildingLeaderMobile; + + @Excel(name = "楼长身份证号") + private String buildingLeaderIdCard; + + @Excel(name = "楼长类型") + private String buildingLeaderType; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java index e9306fa5d7..227ed90e4a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java @@ -18,6 +18,7 @@ package com.epmet.excel; import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.excel.annotation.ExcelProperty; import com.epmet.util.ExcelVerifyInfo; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; @@ -108,6 +109,18 @@ public class IcNeighborHoodExcel extends ExcelVerifyInfo implements Serializable @Length(max=50,message = "不能超过50个字") private String neighborHoodName; + @Excel(name = "小区/自然村类型") + private String viliageTypeName; + + @Excel(name = "面积") + private String area; + + @Excel(name = "开放类型") + private String openTypeName; + + @Excel(name = "建筑年代") + private String buildYear; + @Excel(name = "关联物业") private String propertyName; 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..d496c0b2cb --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CommunityBuildingManagerImportListener.java @@ -0,0 +1,120 @@ +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; +import java.util.Map; + +/** + * @Description + * @Author yzm + * @Date 2023/5/9 16:26 + */ +@Slf4j +public class CommunityBuildingManagerImportListener implements ReadListener { + + // 最大条数阈值 + public static final int MAX_THRESHOLD = 200; + private Map gridMap; + 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(Map gridMap,String customerId, String staffId, String agencyId, String districtId, String streetId, String rediPrex, CommunityBuildingManagerServiceImpl communityBuildingManagerService) { + this.gridMap=gridMap; + 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).getMsg(); + } 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(gridMap,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/handler/CustomerStaffImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CustomerStaffImportListener.java new file mode 100644 index 0000000000..7a8406eb8f --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CustomerStaffImportListener.java @@ -0,0 +1,202 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +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.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.AddStaffV2FromDTO; +import com.epmet.excel.CustomerStaffImportExcelData; +import com.epmet.service.impl.StaffServiceImpl; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * 核酸检测excel导入监听器 + */ +@Data +@Slf4j +public class CustomerStaffImportListener implements ReadListener { + + /** + * 最大条数阈值 + */ + public static final int MAX_THRESHOLD = 200; + + private String currentUserId; + + private String currentCustomerId; + + private String currentOrgType; + + private String currentOrgId; + + private CustomerStaffImportExcelData dataB; + + + /** + * 数据 + */ + private List datas = new ArrayList<>(); + + /** + * 错误项列表 + */ + private List errorRows = new ArrayList<>(); + /** + * 其他被标记出来的列表列表 + */ + private List otherRows = new ArrayList<>(); + + private StaffServiceImpl staffService; + + public CustomerStaffImportListener(String currentUserId, String currentCustomerId, String currentOrgType,String currentOrgId,StaffServiceImpl staffService) { + this.currentUserId = currentUserId; + this.currentCustomerId = currentCustomerId; + this.staffService = staffService; + this.currentOrgType = currentOrgType; + this.currentOrgId = currentOrgId; + } + + @Override + public void invoke(CustomerStaffImportExcelData data, AnalysisContext context) { + + try { + + dataB = data; + // 先校验数据 + ValidatorUtils.validateEntity(data); + + AddStaffV2FromDTO fromDTO = ConvertUtils.sourceToTarget(data, AddStaffV2FromDTO.class); + + fromDTO.setCustomerId(currentCustomerId); + //因为添加的是工作人员,这里写死吧! + fromDTO.setApp("gov"); + fromDTO.setClient("wxmp"); + //当前登录用户 + fromDTO.setCurrentUserId(currentUserId); + fromDTO.setOrgId(currentOrgId); + fromDTO.setOrgType(currentOrgType); + + if (StringUtils.isNotBlank(data.getWorkTypeName())){ + if (data.getWorkTypeName().equals("专职")){ + fromDTO.setWorkType("fulltime"); + } + if (data.getWorkTypeName().equals("兼职")){ + fromDTO.setWorkType("parttime"); + } + } + + if (StringUtils.isNotBlank(data.getGenderName())){ + if (data.getGenderName().equals("男")){ + fromDTO.setGender(1); + } + if (data.getGenderName().equals("女")){ + fromDTO.setGender(2); + } + if (data.getGenderName().equals("未知")){ + fromDTO.setGender(0); + } + } + //0小学及文盲,1初中,2高中,3大专,4本科,5硕士,6博士,7中专 + if (StringUtils.isNotBlank(data.getCultureName())){ + if (data.getCultureName().equals("小学及文盲")){ + fromDTO.setCulture("0"); + } + if (data.getCultureName().equals("初中")){ + fromDTO.setCulture("1"); + } + if (data.getCultureName().equals("高中")){ + fromDTO.setCulture("2"); + } + if (data.getCultureName().equals("大专")){ + fromDTO.setCulture("3"); + } + if (data.getCultureName().equals("本科")){ + fromDTO.setCulture("4"); + } + if (data.getCultureName().equals("硕士")){ + fromDTO.setCulture("5"); + } + if (data.getCultureName().equals("博士")){ + fromDTO.setCulture("6"); + } + } + + + datas.add(fromDTO); + + if (datas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + log.error("【客户信息导入】出错:{}", e.getStackTrace()); + errorMsg = ((EpmetException)e).getInternalMsg(); + log.error("【客户信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + CustomerStaffImportExcelData.RowRemarkMessage errorRow = new CustomerStaffImportExcelData.RowRemarkMessage(); + errorRow.setErrorInfo(errorMsg); + errorRow.setName(data.getName()); + errorRow.setMobile(data.getMobile()); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + // 最后几条达不到阈值,这里必须再调用一次 + try { + execPersist(); + }catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + log.error("【客户信息导入】出错:{}", e.getStackTrace()); + errorMsg = ((EpmetException)e).getInternalMsg(); + log.error("【客户信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + CustomerStaffImportExcelData.RowRemarkMessage errorRow = new CustomerStaffImportExcelData.RowRemarkMessage(); + errorRow.setErrorInfo(errorMsg); + errorRow.setName(dataB.getName()); + errorRow.setMobile(dataB.getMobile()); + errorRows.add(errorRow); + } + + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + if (datas != null && datas.size() > 0) { +// icNatService.batchPersist(datas, this); + staffService.exportAdd(datas,this); + } + }finally { + datas.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/model/BuildingInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java index 2339587a1f..38df15fe5d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java @@ -44,6 +44,12 @@ public class BuildingInfoModel { @ExcelProperty(value = "楼长电话") private String buildingLeaderMobile; + @ExcelProperty(value = "楼长身份证号") + private String buildingLeaderIdCard; + + @ExcelProperty(value = "楼长类型") + private String buildingLeaderType; + @ExcelProperty(value = "排序") private BigDecimal sort; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java index 0e5edb21f3..c78e46633f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java @@ -37,6 +37,12 @@ public class HouseInfoModel { @ExcelProperty(value = "房屋类型") private String houseType; + @ExcelProperty(value = "所在楼层") + private String floor; + + @ExcelProperty(value = "面积(平方米)") + private String area; + @ExcelProperty(value = "房屋用途") private String purpose; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java index 63260ee190..b1f33f409b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java @@ -21,6 +21,18 @@ public class NeighborHoodInfoModel { @ExcelProperty(value = "小区名称") private String neighborHoodName; + @ExcelProperty(value = "小区/自然村类型") + private String viliageTypeName; + + @ExcelProperty(value = "面积") + private String area; + + @ExcelProperty(value = "开放类型") + private String openTypeName; + + @ExcelProperty(value = "建筑年代") + private String buildYear; + @ExcelProperty(value = "关联物业") private String propertyName; 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..1e90100266 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 @@ -40,7 +40,7 @@ public interface CommunityBuildingManagerService extends BaseService ids); void execAsyncExcelImport(Path fileSavePath, String taskId); + + /** + * 楼长单元长功能,只能社区级工作人员导入 + * + * @param customerId + * @param userId + */ + 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/StaffService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffService.java index 5a4a989166..6bbb42094e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffService.java @@ -4,7 +4,9 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import org.springframework.web.bind.annotation.RequestParam; +import java.nio.file.Path; import java.util.List; /** @@ -154,4 +156,6 @@ public interface StaffService { * @Date 2021/9/8 16:57 */ List staffOrgList(TokenDto tokenDto); + + void execAsyncExcelImport(Path fileSavePath, String taskId,String orgType, String orgId); } 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 c6cf2f0eb3..3a26479c71 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,38 +1,67 @@ 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.dto.result.OptionResultDTO; +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.RedisUtils; +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.IcBuildingDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.form.NeighborHoodOptionFormDTO; 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.service.CommunityBuildingManagerService; -import com.epmet.service.CustomerGridService; +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.*; +import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; +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.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 楼长单元长信息表(烟台) @@ -43,7 +72,17 @@ import java.util.List; @Slf4j @Service public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl implements CommunityBuildingManagerService { - + @Autowired + private IcBuildingDao icBuildingDao; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private OssFeignClient ossFeignClient; + @Autowired + private CustomerGridService customerGridService; + @Autowired + private RedisUtils redisUtils; + /** * 列表分页查询 * @@ -105,7 +144,7 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl buildingUpdate = new LambdaUpdateWrapper<>(); + buildingUpdate.eq(IcBuildingEntity::getId, entity.getBuildingId()) + .set(IcBuildingEntity::getBuildingLeaderName, entity.getName()) + .set(IcBuildingEntity::getBuildingLeaderMobile, entity.getPhone()) + .set(IcBuildingEntity::getBuildingLeaderIdCard, entity.getIdCard()) + .set(IcBuildingEntity::getBuildingLeaderType, entity.getType()) + .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(IcBuildingEntity::getUpdatedTime, new Date()); + icBuildingDao.update(null, buildingUpdate); } private void checkUnqiue(String type, String buildingId, String unitId, String id) { @@ -136,7 +185,7 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl buildingUpdate = new LambdaUpdateWrapper<>(); + buildingUpdate.eq(IcBuildingEntity::getId, updateFormDto.getBuildingId()) + .set(IcBuildingEntity::getBuildingLeaderName, updateFormDto.getName()) + .set(IcBuildingEntity::getBuildingLeaderMobile, updateFormDto.getPhone()) + .set(IcBuildingEntity::getBuildingLeaderIdCard, updateFormDto.getIdCard()) + .set(IcBuildingEntity::getBuildingLeaderType, updateFormDto.getType()) + .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(IcBuildingEntity::getUpdatedTime, new Date()); + icBuildingDao.update(null, buildingUpdate); } /** * 批量删除楼长/单元长 - * todo: 同时清空楼栋表里的信息 + * 同时清空楼栋表里的信息 * * @param ids * @return @@ -161,18 +220,40 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl ids) { - Date now=new Date(); - ids.forEach(id->{ - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(CommunityBuildingManagerEntity::getId, id) - .set(CommunityBuildingManagerEntity::getDelFlag, NumConstant.ONE_STR) - .set(CommunityBuildingManagerEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) - .set(CommunityBuildingManagerEntity::getUpdatedTime, now); - baseDao.update(null, updateWrapper); - // todo + Date now = new Date(); + ids.forEach(id -> { + CommunityBuildingManagerEntity origin = baseDao.selectById(id); + if (null != origin) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(CommunityBuildingManagerEntity::getId, id) + .set(CommunityBuildingManagerEntity::getDelFlag, NumConstant.ONE_STR) + .set(CommunityBuildingManagerEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(CommunityBuildingManagerEntity::getUpdatedTime, now); + baseDao.update(null, updateWrapper); + if (StringUtils.isNotBlank(origin.getBuildingId())) { + // 清空楼栋表的楼长4列信息 + LambdaUpdateWrapper buildingUpdate = new LambdaUpdateWrapper<>(); + buildingUpdate.eq(IcBuildingEntity::getId, origin.getBuildingId()) + .set(IcBuildingEntity::getBuildingLeaderName, StrConstant.EPMETY_STR) + .set(IcBuildingEntity::getBuildingLeaderMobile, StrConstant.EPMETY_STR) + .set(IcBuildingEntity::getBuildingLeaderIdCard, StrConstant.EPMETY_STR) + .set(IcBuildingEntity::getBuildingLeaderType, StrConstant.EPMETY_STR) + .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(IcBuildingEntity::getUpdatedTime, now); + icBuildingDao.update(null, buildingUpdate); + } + } }); } + @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导入 @@ -183,8 +264,283 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl gridList=customerGridService.getGridOption(staffInfoCacheResult.getAgencyId(), "addorupdate"); + Map gridMap = gridList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + String uuid = IdWorker.getIdStr(); + String redisKey = "community_building_manager_import".concat(StrConstant.COLON).concat(uuid); + + try { + CommunityBuildingManagerImportListener listener = new CommunityBuildingManagerImportListener(gridMap,customerId,staffId,staffInfoCacheResult.getAgencyId(),districtId,streetId,redisKey, + SpringContextUtils.getBean(CommunityBuildingManagerServiceImpl.class)); + + EasyExcel.read(filePath.toFile(), CommunityBuildingManagerImportExcelData.class, listener).headRowNumber(1).sheet(0).doRead(); + + String errorDesFileUrl = null; + + List 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(); + } + } + //删除小区缓存、楼栋缓存、单元缓存 + redisUtils.deleteByPrex(redisKey+"*"); + } + + + } + + /** + * @param customerId + * @param staffId + * @param agencyId + * @param rediPrex + * @param excelDataList + * @param listener + */ + public void handleImportExcelData(Map gridMap, + String customerId, + String staffId, + String agencyId, + String districtId, + String streetId, + String rediPrex, + List excelDataList, + CommunityBuildingManagerImportListener listener) { + List insertList = new ArrayList<>(); + List updateList = new ArrayList<>(); + List buildingUpdateList=new ArrayList<>(); + for (CommunityBuildingManagerDTO dto : excelDataList) { + try { + CommunityBuildingManagerEntity entity = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerEntity.class); + entity.setDistrictId(districtId); + entity.setStreetId(streetId); + + // 所属网格 + if (MapUtils.isEmpty(gridMap) || !gridMap.containsKey(dto.getGridName()) || StringUtils.isBlank(gridMap.get(dto.getGridName()))) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("网格不存在"); + listener.getErrorRows().add(errorRow); + continue; + } + String gridId = gridMap.get(dto.getGridName()); + entity.setGridId(gridId); + entity.setOrgIdPath(CustomerOrgRedis.getOrgIdPath(gridId, OrgTypeEnum.GRID.getCode())); + + // 查询当前网格下的小区 + // 所属小区 + Map viliageMap =queryViliageList(customerId,staffId,agencyId,gridId,rediPrex); + if (MapUtils.isEmpty(viliageMap) || !viliageMap.containsKey(dto.getViliageName()) || StringUtils.isBlank(viliageMap.get(dto.getViliageName()))) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("小区不存在"); + listener.getErrorRows().add(errorRow); + continue; + } + String viliageId = viliageMap.get(dto.getViliageName()); + entity.setViliageId(viliageId); + + + // 查询当前小区下的楼栋 + // 所属楼栋 + // List buildingList=queryBuildingList(viliageId,rediPrex); + // Map buildingMap = buildingList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + Map buildingMap =queryBuildingList(viliageId,rediPrex);; + if (MapUtils.isEmpty(buildingMap) || !buildingMap.containsKey(dto.getBuildingName()) || StringUtils.isBlank(buildingMap.get(dto.getBuildingName()))) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("楼栋不存在"); + listener.getErrorRows().add(errorRow); + continue; + } + String buildingId = buildingMap.get(dto.getBuildingName()); + entity.setBuildingId(buildingId); + + // 所属单元 + String unitId = ""; + if (StringUtils.isNotBlank(dto.getUnitName())) { + // 查询楼栋下的单元列表 + // List unitList=queryUnitList(buildingId,rediPrex); + // Map unitMap = unitList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + Map unitMap = queryUnitList(buildingId, rediPrex); + if (MapUtils.isEmpty(unitMap) || !unitMap.containsKey(dto.getUnitName()) || StringUtils.isBlank(unitMap.get(dto.getUnitName()))) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("单元不存在"); + listener.getErrorRows().add(errorRow); + continue; + } + unitId = unitMap.get(dto.getUnitName()); + } + 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(StringUtils.isNotBlank(entity.getId()),CommunityBuildingManagerEntity::getId, entity.getId()); + CommunityBuildingManagerEntity origin = baseDao.selectOne(countQuery); + if (null == origin) { + insertList.add(entity); + } else { + entity.setId(origin.getId()); + updateList.add(entity); + } + // 同步更新至ic_building + IcBuildingDTO icBuildingDTO = new IcBuildingDTO(); + icBuildingDTO.setId(entity.getBuildingId()); + icBuildingDTO.setBuildingLeaderMobile(entity.getPhone()); + icBuildingDTO.setBuildingLeaderIdCard(entity.getIdCard()); + icBuildingDTO.setBuildingLeaderType(entity.getType()); + icBuildingDTO.setBuildingLeaderName(entity.getName()); + icBuildingDTO.setUpdatedBy(staffId); + icBuildingDTO.setUpdatedTime(new Date()); + buildingUpdateList.add(icBuildingDTO); + + } catch (Exception e) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("数据处理异常"); + listener.getErrorRows().add(errorRow); + } + } + // 同步到ic_building + if(!CollectionUtils.isEmpty(insertList)){ + this.insertBatch(insertList); + } + if(!CollectionUtils.isEmpty(updateList)){ + this.updateBatchById(updateList); + } + if(!CollectionUtils.isEmpty(buildingUpdateList)){ + SpringContextUtils.getBean(IcBuildingService.class).updateBuildingLeader(buildingUpdateList); + } + } + + + private Map queryViliageList(String customerId, String staffId, String agencyId, String gridId, String rediPrex) { + String redisKey = rediPrex.concat(StrConstant.COLON).concat("viliage_list").concat(StrConstant.COLON).concat(gridId); + Map viliageMap = redisUtils.hGetAll(redisKey); + if (MapUtils.isEmpty(viliageMap)) { + NeighborHoodOptionFormDTO neighborHoodOptionFormDTO = new NeighborHoodOptionFormDTO(); + neighborHoodOptionFormDTO.setCustomerId(customerId); + neighborHoodOptionFormDTO.setStaffId(staffId); + neighborHoodOptionFormDTO.setAgencyId(agencyId); + neighborHoodOptionFormDTO.setGridId(gridId); + List resultList = SpringContextUtils.getBean(IcNeighborHoodService.class).queryNeighborHoodOptions(neighborHoodOptionFormDTO); + viliageMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + // 有效时间1小时 + redisUtils.hMSet(redisKey, viliageMap, RedisUtils.HOUR_ONE_EXPIRE); + } + Map resultMap = new HashMap<>(); + viliageMap.forEach((k, v) -> + resultMap.put(k, (String) v) + ); + return resultMap; + } + + private Map queryBuildingList(String viliageId, String rediPrex) { + String redisKey = rediPrex.concat(StrConstant.COLON).concat("building_List").concat(StrConstant.COLON).concat(viliageId); + Map buildingMap = redisUtils.hGetAll(redisKey); + if (MapUtils.isEmpty(buildingMap)) { + List resultList = SpringContextUtils.getBean(IcBuildingService.class).getBuildingOptions(viliageId); + buildingMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + // 有效时间1小时 + redisUtils.hMSet(redisKey, buildingMap, RedisUtils.HOUR_ONE_EXPIRE); + } + Map resultMap = new HashMap<>(); + buildingMap.forEach((k, v) -> + resultMap.put(k, (String) v) + ); + return resultMap; + } + + private Map queryUnitList(String buildingId, String rediPrex) { + String redisKey = rediPrex.concat(StrConstant.COLON).concat("unit_List").concat(StrConstant.COLON).concat(buildingId); + Map unitMap = redisUtils.hGetAll(redisKey); + if (MapUtils.isEmpty(unitMap)) { + List resultList = SpringContextUtils.getBean(IcBuildingUnitService.class).getUnitOptions(buildingId); + unitMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + // 有效时间1小时 + redisUtils.hMSet(redisKey, unitMap, RedisUtils.HOUR_ONE_EXPIRE); + } + Map resultMap = new HashMap<>(); + unitMap.forEach((k, v) -> + resultMap.put(k, (String) v) + ); + return resultMap; } 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 b08b903120..027199df87 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 @@ -21,6 +21,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; 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; @@ -197,4 +198,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(null != dto.getUpdatedTime(), 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/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 8e3a327426..f18b1b1b88 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -128,6 +128,12 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl page(Map params) { @@ -642,8 +648,17 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl manager = new LambdaQueryWrapper().eq(CommunityBuildingManagerEntity::getBuildingId,info.getBuildingId()); + CommunityBuildingManagerEntity communityBuildingManagerEntity = communityBuildingManagerDao.selectOne(manager); + + + if (StringUtils.isNotBlank(info.getBuildingLeaderTypeNum())&& + StringUtils.isNotBlank(info.getBuildingLeaderIdCard())&& + StringUtils.isNotBlank(info.getBuildingLeaderMobile())&& + StringUtils.isNotBlank(info.getBuildingLeaderName())){ + + if (communityBuildingManagerEntity!=null){ + communityBuildingManagerEntity.setIdCard(info.getBuildingLeaderIdCard()); + communityBuildingManagerEntity.setPhone(info.getBuildingLeaderMobile()); + communityBuildingManagerEntity.setType(info.getBuildingLeaderTypeNum()); + communityBuildingManagerEntity.setName(info.getBuildingLeaderName()); + communityBuildingManagerDao.updateById(communityBuildingManagerEntity); + }else{ + communityBuildingManagerEntity= new CommunityBuildingManagerEntity(); + communityBuildingManagerEntity.setIdCard(info.getBuildingLeaderIdCard()); + communityBuildingManagerEntity.setPhone(info.getBuildingLeaderMobile()); + communityBuildingManagerEntity.setType(info.getBuildingLeaderTypeNum()); + communityBuildingManagerEntity.setName(info.getBuildingLeaderName()); + communityBuildingManagerEntity.setBuildingId(building.getId()); + IcBuildingEntity buildingEntity = icBuildingDao.selectById(building.getId()); + if (buildingEntity.getNeighborHoodId()!=null){ + communityBuildingManagerEntity.setViliageId(buildingEntity.getNeighborHoodId()); + IcNeighborHoodEntity neighborHood = neighborHoodDao.selectById(buildingEntity.getNeighborHoodId()); + communityBuildingManagerEntity.setGridId(neighborHood.getGridId()); + communityBuildingManagerEntity.setOrgIdPath(neighborHood.getAgencyPids()+":"+neighborHood.getAgencyId()+":"+neighborHood.getGridId()); + + List agencyIds = new ArrayList<>(Arrays.asList(neighborHood.getAgencyPids().split(":"))); + agencyIds.add(neighborHood.getAgencyId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,agencyIds); + List customerAgencyEntities = customerAgencyDao.selectList(queryWrapper); + for (CustomerAgencyEntity customerAgencyEntity : customerAgencyEntities) { + if (customerAgencyEntity.getLevel().equals("community")){ + communityBuildingManagerEntity.setCommunityId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("street")){ + communityBuildingManagerEntity.setStreetId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("district")){ + communityBuildingManagerEntity.setDistrictId(customerAgencyEntity.getId()); + } + } + } + communityBuildingManagerDao.insert(communityBuildingManagerEntity); + + } + + }else{ + if (communityBuildingManagerEntity!=null){ + communityBuildingManagerDao.deleteById(communityBuildingManagerEntity); + } + } + } return building.getId(); } @@ -699,6 +769,42 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl agencyIds = new ArrayList<>(Arrays.asList(neighborHood.getAgencyPids().split(":"))); + agencyIds.add(neighborHood.getAgencyId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,agencyIds); + List customerAgencyEntities = customerAgencyDao.selectList(queryWrapper); + for (CustomerAgencyEntity customerAgencyEntity : customerAgencyEntities) { + if (customerAgencyEntity.getLevel().equals("community")){ + communityBuildingManagerEntity.setCommunityId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("street")){ + communityBuildingManagerEntity.setStreetId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("district")){ + communityBuildingManagerEntity.setDistrictId(customerAgencyEntity.getId()); + } + } + communityBuildingManagerDao.insert(communityBuildingManagerEntity); + } + + if (null != info.getTotalUnitNum() && info.getTotalUnitNum() > NumConstant.ZERO) { //设置楼宇单元 List unitList = new ArrayList<>(); @@ -814,6 +920,27 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl needUpdateList) { + + needUpdateList.forEach( + needUpdate->{ + if (StringUtils.isNotBlank(needUpdate.getViliageTypeName())){ + if (needUpdate.getViliageTypeName().equals("自然村")){ + needUpdate.setViliageType("2"); + } + if (needUpdate.getViliageTypeName().equals("住宅小区")){ + needUpdate.setViliageType("1"); + } + } + if (StringUtils.isNotBlank(needUpdate.getOpenTypeName())){ + if (needUpdate.getOpenTypeName().equals("封闭式")){ + needUpdate.setOpenType("1"); + } + if (needUpdate.getOpenTypeName().equals("开放式")){ + needUpdate.setOpenType("2"); + } + } + }); + if (CollectionUtils.isNotEmpty(needUpdateList)){ baseDao.updateNeighborHood(needUpdateList); } 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()) { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java index a81f868ac5..8c74a45df3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java @@ -1,18 +1,21 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; +import com.epmet.commons.tools.constant.AppClientConstant; 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.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.constant.OrgInfoConstant; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.CustomerStaffAgencyDao; import com.epmet.dao.StaffOrgRelationDao; import com.epmet.dto.*; @@ -20,17 +23,31 @@ import com.epmet.dto.form.*; import com.epmet.dto.form.yantai.YtSyncStaffIdFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.*; +import com.epmet.excel.CustomerStaffImportExcelData; +import com.epmet.excel.handler.CustomerStaffImportListener; import com.epmet.feign.*; +import com.epmet.remote.EpmetUserRemoteService; import com.epmet.service.*; +import com.epmet.utils.ImportTaskUtils; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +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.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; +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.Collections; import java.util.List; @@ -41,6 +58,7 @@ import java.util.stream.Collectors; * @dscription * @date 2020/4/23 18:05 */ +@Slf4j @Service public class StaffServiceImpl implements StaffService { private static final Logger logger = LoggerFactory.getLogger(StaffServiceImpl.class); @@ -80,6 +98,10 @@ public class StaffServiceImpl implements StaffService { private GovAccessFeignClient govAccessFeignClient; @Autowired private EpmetThirdOpenFeignClient epmetThirdOpenFeignClient; + @Autowired + private EpmetUserRemoteService userRemoteService; + @Autowired + private OssFeignClient ossFeignClient; @Override public Result getStaffInfoForHome(StaffsInAgencyFromDTO fromDTO) { @@ -745,5 +767,180 @@ public class StaffServiceImpl implements StaffService { return list; } + @Override + public void execAsyncExcelImport(Path filePath, String importTaskId,String orgType, String orgId) { + + try { + + CustomerStaffImportListener listener = new CustomerStaffImportListener(userRemoteService.getLoginUserDetails().getUserId(), userRemoteService.getLoginUserDetails().getCustomerId(), orgType,orgId,this); + + EasyExcel.read(filePath.toFile(), CustomerStaffImportExcelData.class, listener).headRowNumber(1).sheet(0).doRead(); + + String errorDesFileUrl = null; + + List errorRows = listener.getErrorRows(); + List otherRows = listener.getOtherRows(); + + boolean failed = errorRows.size() > 0; + + // 合并到一起写入 + errorRows.addAll(otherRows); + + // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; + if (errorRows.size() > 0) { + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("staff", "import", "error_des"); + String timeMillis = String.valueOf(System.currentTimeMillis()); + String fileName = "staff_import_error_".concat(timeMillis).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, CustomerStaffImportExcelData.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows); + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + } finally { + IOUtils.closeQuietly(os); + try { + fileItem.delete(); + } catch (Exception e){ + log.error("【客户信息导入】删除临时描述文件失败:{}", 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("【客户信息导入】导入记录状态修改为'finished_success'失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【客户信息导入】出错:{}", errorMsg); + + Result result = ImportTaskUtils.finishImportTask(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, null, "导入失败"); + + if (!result.success()) { + log.error("【客户信息导入】导入记录状态修改为'finished_fail'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + log.error("method exception", e); + } + } + } + } + + /** + * 批量持久化 + * @param addStaffV2FromDTOList + */ + public void exportAdd(List addStaffV2FromDTOList, CustomerStaffImportListener listener) { + + addStaffV2FromDTOList.forEach(fromDTO -> { + + //1.根据新增人员类型判断查询机关信息 + OrgResultDTO orgDTO = customerAgencyDao.selectAgencyDetail(fromDTO.getOrgId(), fromDTO.getOrgType()); + if (null == orgDTO) { + logger.warn(String.format("工作人员新增,根据新增人员组织类型未查询到相关组织信息,orgId->%s,orgType->%s", fromDTO.getOrgId(), fromDTO.getOrgType())); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"根据新增人员组织类型未查询到相关组织信息","组织不存在"); + } + + //2.调用user服务,新增用户信息 + StaffSubmitFromDTO submitDTO = ConvertUtils.sourceToTarget(fromDTO, StaffSubmitFromDTO.class); + submitDTO.setAgencyId(orgDTO.getAgencyId()); + Result result = epmetUserFeignClient.addStaff(submitDTO); + if (!result.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),result.getInternalMsg(),result.getMsg()); + } + + //3.人员机关表总人数加一、关系表新增关系数据 + //人员机关关系表 + CustomerStaffAgencyEntity customerStaffAgencyEntity = new CustomerStaffAgencyEntity(); + customerStaffAgencyEntity.setCustomerId(fromDTO.getCustomerId()); + customerStaffAgencyEntity.setUserId(result.getData().getUserId()); + customerStaffAgencyEntity.setAgencyId(orgDTO.getAgencyId()); + customerStaffAgencyService.insert(customerStaffAgencyEntity); + //机关总人数加一 + CustomerAgencyEntity agencyEntity = new CustomerAgencyEntity(); + agencyEntity.setId(orgDTO.getAgencyId()); + agencyEntity.setTotalUser(orgDTO.getTotalUser() + 1); + customerAgencyService.updateById(agencyEntity); + + //4.部门、网格主表、关系表修改、新增数据 + if ("dept".equals(fromDTO.getOrgType())) { + CustomerStaffDepartmentEntity dept = new CustomerStaffDepartmentEntity(); + dept.setCustomerId(fromDTO.getCustomerId()); + dept.setUserId(result.getData().getUserId()); + dept.setDepartmentId(fromDTO.getOrgId()); + customerStaffDepartmentService.insert(dept); + CustomerDepartmentEntity departmentEntity = new CustomerDepartmentEntity(); + departmentEntity.setId(fromDTO.getOrgId()); + departmentEntity.setTotalUser(orgDTO.getDeptTotalUser() + 1); + customerDepartmentService.updateById(departmentEntity); + } + if ("grid".equals(fromDTO.getOrgType())) { + CustomerStaffGridEntity grid = new CustomerStaffGridEntity(); + grid.setCustomerId(fromDTO.getCustomerId()); + grid.setUserId(result.getData().getUserId()); + grid.setGridId(fromDTO.getOrgId()); + customerStaffGridService.insert(grid); + CustomerGridEntity gridEntity = new CustomerGridEntity(); + gridEntity.setId(fromDTO.getOrgId()); + gridEntity.setTotalUser(orgDTO.getGridTotalUser() + 1); + customerGridService.updateById(gridEntity); + } + + //5.工作人员注册组织关系表新增数据 + StaffOrgRelationEntity staffOrgRelationEntity = new StaffOrgRelationEntity(); + staffOrgRelationEntity.setCustomerId(fromDTO.getCustomerId()); + if("agency".equals(fromDTO.getOrgType())){ + staffOrgRelationEntity.setPids(("".equals(orgDTO.getPids()) ? "" : orgDTO.getPids())); + }else { + staffOrgRelationEntity.setPids(("".equals(orgDTO.getPids()) ? "" : orgDTO.getPids() + ":") + orgDTO.getAgencyId()); + } + staffOrgRelationEntity.setStaffId(result.getData().getUserId()); + staffOrgRelationEntity.setOrgId(fromDTO.getOrgId()); + staffOrgRelationEntity.setOrgType(fromDTO.getOrgType()); + staffOrgRelationService.insert(staffOrgRelationEntity); + + if (CollectionUtils.isNotEmpty(fromDTO.getNewRoles())){ + Result roleUserAccess = govAccessFeignClient.roleUser(new RoleUserFormDTO(fromDTO.getNewRoles(), customerStaffAgencyEntity.getUserId(),fromDTO.getCustomerId())); + if (!roleUserAccess.success()){ + throw new EpmetException("save data to gov-role-user failure"); + } + } + //如果是烟台的需要更新 根据手机号+姓名 更新data_sync_user_data置为已创建、记录staffId + // 开发环境默认:45687aa479955f9d06204d415238f7cc + // 测试环境:0c41b272ee9ee95ac6f184ad548a30eb + // 烟台: 1535072605621841922 + if ("1535072605621841922".equals(fromDTO.getCustomerId()) + || "45687aa479955f9d06204d415238f7cc".equals(fromDTO.getCustomerId()) + || "0c41b272ee9ee95ac6f184ad548a30eb".equals(fromDTO.getCustomerId())) { + YtSyncStaffIdFormDTO ytSyncStaffIdFormDTO = ConvertUtils.sourceToTarget(fromDTO,YtSyncStaffIdFormDTO.class); + ytSyncStaffIdFormDTO.setStaffId(result.getData().getUserId()); + ytSyncStaffIdFormDTO.setOperUserId(fromDTO.getCurrentUserId()); + epmetThirdOpenFeignClient.dataSyncUpdateStaff(ytSyncStaffIdFormDTO); + } + + }); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export.xlsx index 5a178ed9bb..d1cad4c556 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export_0510.xlsx new file mode 100644 index 0000000000..5a178ed9bb Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx index 0be5175435..0f597ecdff 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template_0510.xlsx new file mode 100644 index 0000000000..0be5175435 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/customer_staff_import_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/customer_staff_import_template.xlsx index df7f412647..4b9b2f1fce 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/customer_staff_import_template.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/customer_staff_import_template.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx index 359b68f0bd..865c8415bb 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel_0510.xlsx new file mode 100644 index 0000000000..359b68f0bd Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx index 1587a5cb7e..5aca0af7a6 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template_0510.xlsx new file mode 100644 index 0000000000..c722017f31 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export.xlsx index 2a1b3237d9..2d89d92557 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export_0510.xlsx new file mode 100644 index 0000000000..2a1b3237d9 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template.xlsx index 6c8ceb2788..d98c075d9c 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template_0510.xlsx new file mode 100644 index 0000000000..36297ea510 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/community_building_manager_import_temp.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/community_building_manager_import_temp.xlsx index b7da61b810..e8ceae9aa1 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/community_building_manager_import_temp.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/community_building_manager_import_temp.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index ab42fe8e31..34d1023fa6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -54,6 +54,12 @@ BUILDING_LEADER_MOBILE = #{buildingLeaderMobile}, + + BUILDING_LEADER_ID_CARD = #{buildingLeaderIdCard}, + + + BUILDING_LEADER_TYPE = #{buildingLeaderTypeNum}, + SORT = #{sort}, @@ -149,7 +155,9 @@ c.ORGANIZATION_NAME as agencyName, d.GRID_NAME as gridName, a.BUILDING_LEADER_NAME AS buildingLeaderName, - a.BUILDING_LEADER_MOBILE AS buildingLeaderMobile + a.BUILDING_LEADER_MOBILE AS buildingLeaderMobile, + a.BUILDING_LEADER_ID_CARD AS buildingLeaderIdCard, + if(a.BUILDING_LEADER_TYPE = 0,'楼长',if(a.BUILDING_LEADER_TYPE = 1,'单元长','')) AS buildingLeaderType from ic_building a LEFT JOIN ic_neighbor_hood b on a.NEIGHBOR_HOOD_ID = b.ID and b.DEL_FLAG='0' @@ -453,6 +461,9 @@ SELECT - d.id, - d.`NAME`, - d.ID_CARD, - d.DEATH_DATE, - d.AGE, - d.ADDRESS, - d.IC_RESI_USER_ID, - d.GRID_ID, - d.AGENCY_ID, - d.CREMATION_TIME, - d.ORGAN_NAME + d.* FROM data_sync_record_death d WHERE