From b9605d967d3eda9730634767d6af3875478ac66b Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Thu, 20 Apr 2023 15:52:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=83=9F=E5=8F=B0=E5=85=9A=E5=91=98=E7=94=BB?= =?UTF-8?q?=E5=83=8F=E5=88=97=E8=A1=A8=EF=BC=8C=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../result/PartymemberPortraitResultDTO.java | 24 +++- .../controller/IcPartyMemberController.java | 119 +++++++++++++++--- .../partymember/dao/IcPartyMemberDao.java | 5 +- .../service/IcPartyMemberService.java | 2 +- .../impl/IcPartyMemberServiceImpl.java | 64 +++++++--- .../mapper/partymember/IcPartyMemberDao.xml | 54 ++++++-- .../dto/result/PartyMemberAgeResultDTO.java | 1 + .../result/PartyMemberEducationResultDTO.java | 2 +- 8 files changed, 221 insertions(+), 50 deletions(-) diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/PartymemberPortraitResultDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/PartymemberPortraitResultDTO.java index b66a0adf0a..9989ef8f5e 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/PartymemberPortraitResultDTO.java +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/PartymemberPortraitResultDTO.java @@ -1,5 +1,8 @@ package com.epmet.resi.partymember.dto.partymember.result; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; /** @@ -9,11 +12,30 @@ import lombok.Data; */ @Data public class PartymemberPortraitResultDTO { + @ExcelIgnore private String userId; + + @ColumnWidth(15) + @ExcelProperty(value = "姓名",order = 1) private String name; + + @ColumnWidth(20) + @ExcelProperty(value = "手机号",order = 2) + private String mobile; + + @ColumnWidth(20) + @ExcelProperty(value = "证件号",order = 3) + private String idCard; + + @ColumnWidth(15) + @ExcelProperty(value = "年龄",order = 4) private String age; + + @ColumnWidth(15) + @ExcelProperty(value = "学历",order = 5) private String education; - private String mobile; + + @ExcelIgnore private String icResiUser; } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java index 10c6f302f9..0330f3b9d3 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java @@ -30,7 +30,6 @@ import com.epmet.dto.form.IcPartyMemberListFormDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.PartyMemberAgeResultDTO; import com.epmet.dto.result.PartyMemberEducationResultDTO; -import com.epmet.resi.partymember.dto.partymember.result.PartymemberPortraitResultDTO; import com.epmet.modules.partyOrg.entity.IcPartyOrgEntity; import com.epmet.modules.partyOrg.service.IcPartyOrgService; import com.epmet.modules.partymember.excel.IcPartyMemberExcel; @@ -39,6 +38,7 @@ import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO; import com.epmet.resi.partymember.dto.partymember.form.IcPartyMemberFromDTO; import com.epmet.resi.partymember.dto.partymember.result.IcPartyInfoResultDTO; import com.epmet.resi.partymember.dto.partymember.result.IcPartyMemberResultDTO; +import com.epmet.resi.partymember.dto.partymember.result.PartymemberPortraitResultDTO; import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -57,10 +57,7 @@ import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncoder; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -309,24 +306,116 @@ public class IcPartyMemberController implements ResultDataResolver { return new Result>().ok(icPartyMemberService.getPartyMemberEducationList(formDTO)); } + /** * 烟台党员画像列表接口,将上方两个接口,合为一个 - * @param tokenDto * @param formDTO * @return */ @PostMapping("partymember-portrait-list") - @MaskResponse(fieldNames = {"mobile"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE}) - public Result> queryPartymemberPortraitList(@LoginUser TokenDto tokenDto, @RequestBody IcPartyMemberListFormDTO formDTO) { - if (StringUtils.isBlank(formDTO.getOrgId())) { - // 当前工作人员所属组织下的,党组织 - IcPartyOrgEntity org= icPartyOrgService.getIcPartyOrg(tokenDto.getCustomerId(),tokenDto.getUserId()); - if (null == org) { - return new Result>().ok(new PageData<>(Collections.emptyList(), 0)); + @MaskResponse(fieldNames = {"mobile","idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE,MaskResponse.MASK_TYPE_ID_CARD}) + public Result> queryPartyMemberPortraitList(@RequestBody IcPartyMemberListFormDTO formDTO) { + return new Result>().ok(icPartyMemberService.queryPartyMemberPortraitList(formDTO)); + } + + + /** + * 烟台党员画像列表-导出 + * @param formDTO + * @return + */ + @NoRepeatSubmit + @PostMapping("partymember-portrait-export") + public void partymemberPortraitExport(@RequestBody IcPartyMemberListFormDTO formDTO, HttpServletResponse response) throws Exception { + ExcelWriter excelWriter = null; + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + formDTO.setIsPage(true); + String fileName=getPartymemberPortraitFileName(formDTO.getCodeType(),formDTO.getCode()); + try { + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), PartymemberPortraitResultDTO.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + data = icPartyMemberService.queryPartyMemberPortraitList(formDTO); + list = data.getList(); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("党员画像列表导出exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + /** + * 烟台党员画像列表-导出 + * @return 返回导出excel的文件名 + */ + private String getPartymemberPortraitFileName(String codeType, String code) { + String name = "党员画像"; + if ("age".equals(codeType)) { + switch (code) { + case NumConstant.ZERO_STR: + name = "50岁以下党员信息"; + break; + case NumConstant.ONE_STR: + name = "50-59岁党员信息"; + break; + case NumConstant.TWO_STR: + name = "60-69岁党员信息"; + break; + case NumConstant.THREE_STR: + name = "70-79岁党员信息"; + break; + case NumConstant.FOUR_STR: + name = "80岁以上党员信息"; + break; + default: + name = ""; + break; + } + }else if ("education".equals(codeType)) { + switch (code) { + case NumConstant.ZERO_STR: + name = "小学及文盲党员信息"; + break; + case NumConstant.ONE_STR: + name = "初中学历党员信息"; + break; + case NumConstant.TWO_STR: + name = "高中学历党员信息"; + break; + case NumConstant.THREE_STR: + name = "大专学历党员信息"; + break; + case NumConstant.FOUR_STR: + name = "本科学历党员信息"; + break; + case NumConstant.FIVE_STR: + name = "硕士学历党员信息"; + break; + case NumConstant.SIX_STR: + name = "博士学历党员信息"; + break; + default: + name = "党员画像"; + break; } - formDTO.setOrgId(org.getId()); } - return new Result>().ok(icPartyMemberService.queryPartymemberPortraitList(formDTO)); + String fileName=name+DateUtils.format(new Date()) + ".xlsx"; + return fileName; } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java index 0f18a60ac5..740128a912 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java @@ -65,7 +65,10 @@ public interface IcPartyMemberDao extends BaseDao { * @params [orgId, code] * @return java.util.List */ - List getPartyMemberEducationList(@Param("agencyId") String agencyId,@Param("orgId") String orgId,@Param("code") String code); + List getPartyMemberEducationList(@Param("agencyId") String agencyId, + @Param("orgId") String orgId, + @Param("code") String code, + @Param("codeType") String codeType); /** * @describe: 党员年龄范围统计 diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java index 2fd029d03e..1ff8c2dece 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java @@ -157,5 +157,5 @@ public interface IcPartyMemberService extends BaseService { * @param formDTO * @return */ - PageData queryPartymemberPortraitList(IcPartyMemberListFormDTO formDTO); + PageData queryPartyMemberPortraitList(IcPartyMemberListFormDTO formDTO); } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java index 296fbad057..07a405b0a4 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java @@ -451,7 +451,7 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl list = baseDao.getPartyMemberAgeList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode()); PageInfo pageInfo = new PageInfo<>(list); - return new PageData<>(list, pageInfo.getTotal()); + return new PageData<>(list, pageInfo.getTotal(),formDTO.getPageSize()); } List list = baseDao.getPartyMemberAgeList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode()); return new PageData<>(list, null == list?NumConstant.ZERO:list.size()); @@ -461,23 +461,23 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl getPartyMemberEducationList(IcPartyMemberListFormDTO formDTO) { if (formDTO.getIsPage()) { PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); - List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode()); - Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); + List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode(),"education"); PageInfo pageInfo = new PageInfo<>(list); - if (CollectionUtils.isNotEmpty(list)) { - list.forEach(item -> { - item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation())); - }); - } - return new PageData<>(list, pageInfo.getTotal()); - } - List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode()); - Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); - if (CollectionUtils.isNotEmpty(list)) { - list.forEach(item -> { - item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation())); - }); - } + // Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); + // if (CollectionUtils.isNotEmpty(list)) { + // list.forEach(item -> { + // item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation())); + // }); + // } + return new PageData<>(list, pageInfo.getTotal(),formDTO.getPageSize()); + } + List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode(),"education"); + // Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); + // if (CollectionUtils.isNotEmpty(list)) { + // list.forEach(item -> { + // item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation())); + // }); + // } return new PageData<>(list, null == list?NumConstant.ZERO:list.size()); } @@ -742,8 +742,32 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl queryPartymemberPortraitList(IcPartyMemberListFormDTO formDTO) { - // todo - return null; + public PageData queryPartyMemberPortraitList(IcPartyMemberListFormDTO formDTO) { + if (StringUtils.isBlank(formDTO.getOrgId())) { + // 当前工作人员所属组织下的,党组织 + IcPartyOrgEntity org= icPartyOrgService.getIcPartyOrg(EpmetRequestHolder.getLoginUserCustomerId(),EpmetRequestHolder.getLoginUserId()); + if (null == org) { + return new PageData<>(Collections.emptyList(), 0, formDTO.getPageSize()); + } + formDTO.setOrgId(org.getId()); + } + if ("age".equals(formDTO.getCodeType())) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPartyMemberAgeList(formDTO.getAgencyId(), formDTO.getOrgId(), formDTO.getCode()); + PageInfo pageInfo = new PageInfo<>(list); + + List resultDTOList = ConvertUtils.sourceToTarget(list, PartymemberPortraitResultDTO.class); + return new PageData<>(resultDTOList, pageInfo.getTotal(), formDTO.getPageSize()); + + } + // else if ("education".equals(formDTO.getCodeType())) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(), formDTO.getOrgId(), formDTO.getCode(),formDTO.getCodeType()); + PageInfo pageInfo = new PageInfo<>(list); + + List resultDTOList = ConvertUtils.sourceToTarget(list, PartymemberPortraitResultDTO.class); + return new PageData<>(resultDTOList, pageInfo.getTotal(), formDTO.getPageSize()); } + + } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml index a9d4f8c583..962f962a8b 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml @@ -164,7 +164,9 @@ NAME, MOBILE, age, - IC_RESI_USER + IC_RESI_USER, + ID_CARD, + education FROM ( SELECT @@ -172,14 +174,16 @@ NAME, MOBILE, age, - CASE + (CASE WHEN age < 50 THEN '0' WHEN age >= 50 AND age <= 59 THEN '1' WHEN age >= 60 AND age <= 69 THEN '2' WHEN age >= 70 AND age <= 79 THEN '3' ELSE '4' - END AS ageGroup, - IC_RESI_USER + END )AS ageGroup, + IC_RESI_USER, + ID_CARD, + education FROM ( SELECT @@ -187,7 +191,20 @@ NAME, MOBILE, YEAR (FROM_DAYS(DATEDIFF(NOW(),SUBSTRING( ID_CARD, 7, 8 )))) AS age, - IC_RESI_USER + IC_RESI_USER, + ID_CARD, + ( + case when CULTURE='0' then '小学及文盲' + when CULTURE='1' then '初中' + when CULTURE='2' then '高中' + when CULTURE='3' then '大专' + when CULTURE='4' then '本科' + when CULTURE='5' then '硕士' + when CULTURE='6' then '博士' + when CULTURE='7' then '中专' + else '' + end + )as education FROM ic_party_member WHERE @@ -205,22 +222,37 @@ WHERE ageGroup = #{code} - ORDER BY CONVERT(NAME USING GBK) ASC + ORDER BY ID ASC