diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java index 2cfa8ea3ad..f7eb3a778d 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java @@ -25,7 +25,7 @@ public class EpmetBaseRequestInterceptor implements RequestInterceptor { // Map requestHeaders = getHeadersFromRequest(); - log.info("EpmetBaseRequestInterceptor#apply#inheritableAdditionalHeaders:" + requestHeaders); + log.debug("EpmetBaseRequestInterceptor#apply#inheritableAdditionalHeaders:" + requestHeaders); if (requestHeaders != null && requestHeaders.size() > 0) { for (Map.Entry kv : requestHeaders.entrySet()) { @@ -59,4 +59,4 @@ public class EpmetBaseRequestInterceptor implements RequestInterceptor { return headers; } -} \ No newline at end of file +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java index 54f395bbc9..e8408478ea 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java @@ -28,6 +28,10 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { * 从下标n行开始合并 */ private int mergeRowIndex; + /** + * 默认隐藏第一列 用于合并数据 + */ + private boolean hiddenFirst = true; public ExcelFillCellMergeStrategy() { } @@ -36,6 +40,11 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { this.mergeRowIndex = mergeRowIndex; this.mergeColumnIndexArr = mergeColumnIndexArr; } + public ExcelFillCellMergeStrategy(int mergeRowIndex, int[] mergeColumnIndexArr,boolean hiddenFirst) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndexArr = mergeColumnIndexArr; + this.hiddenFirst = hiddenFirst; + } @Override public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { @@ -45,7 +54,9 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { @Override public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { // 隐藏id列 - writeSheetHolder.getSheet().setColumnHidden(0, true); + if (hiddenFirst ){ + writeSheetHolder.getSheet().setColumnHidden(0, true); + } } @Override @@ -91,9 +102,9 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { // 将当前单元格数据与上一个单元格数据比较 Boolean dataBool = preData.equals(curData); //此处需要注意:因为我是按照序号确定是否需要合并的,所以获取每一行第一列数据和上一行第一列数据进行比较,如果相等合并 - Boolean bool = cell.getRow().getCell(0).getStringCellValue().equals(cell.getSheet().getRow(curRowIndex - 1).getCell(0).getStringCellValue()); - if (!dataBool || !bool) { + + if (!dataBool) { return; } Sheet sheet = writeSheetHolder.getSheet(); diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseMemberResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseMemberResultDTO.java new file mode 100644 index 0000000000..66bfdfa4ad --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseMemberResultDTO.java @@ -0,0 +1,191 @@ +package com.epmet.dto.result; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.io.Serializable; + +/** + * desc:房屋和房屋成员返回结果类 + * + * @author: LiuJanJun + * @date: 2022/5/9 1:58 下午 + * @version: 1.0 + */ +@Data +public class HouseMemberResultDTO implements Serializable { + private static final long serialVersionUID = 1L; + + @ColumnWidth(value = 7) + @ExcelProperty(value = "序号",index = 0) + private Integer num; + + @ExcelProperty(value = {"房屋信息","所属组织"},index = 1) + private String agencyName; + @ExcelProperty(value = {"房屋信息","所属网格"},index = 2) + private String gridName; + @ExcelIgnore + private String neighborHoodId; + @ExcelProperty(value = {"房屋信息","所属小区"},index = 3) + private String neighborHoodName; + @ExcelIgnore + private String buildingId; + @ExcelIgnore + private String houseId; + @ExcelProperty(value = {"房屋信息","所属楼栋"},index = 4) + private String buildingName; + @ExcelProperty(value = {"房屋信息","单元"},index = 5) + private String unitName; + /** + * 门牌号 + */ + @ExcelProperty(value = {"房屋信息","门牌号"},index = 6) + private String doorName; + /** + * 房屋类型,1楼房,2平房,3别墅 + */ + @ExcelProperty(value = {"房屋信息","房屋类型"},index = 7) + private String houseType; + + /** + * 房屋用途 + */ + @ExcelProperty(value = {"房屋信息","房屋用途"},index = 8) + private String purpose; + /** + * 房屋状态 + */ + @ExcelProperty(value = {"房屋信息","房屋状态"},index = 9) + private String rentFlag; + + /** + * 房主姓名 + */ + @ExcelProperty(value = {"房屋信息","房主姓名"},index = 10) + private String ownerName; + /** + * 房主电话 + */ + @ExcelProperty(value = {"房屋信息","房主电话"},index = 11) + private String ownerPhone; + /** + * 房主身份证 + */ + @ExcelProperty(value = {"房屋信息","房主身份证"},index = 12) + private String ownerIdCard; + + + //居民信息/**/ + /** + * 主键 + */ + @ExcelIgnore + private String id; + + /** + * 姓名 + */ + @ExcelProperty(value = {"实际居住人信息","姓名"},index = 13) + private String name; + + /** + * 性别 + */ + @ExcelProperty(value = {"实际居住人信息","性别"},index = 14) + private String gender; + + /** + * 手机号 + */ + @ExcelProperty(value = {"实际居住人信息","手机号"},index = 15) + private String mobile; + + /** + * 身份证号 + */ + @ExcelProperty(value = {"实际居住人信息","身份证号"},index = 16) + private String idCard; + + /** + * 出生日期 + */ + @ExcelProperty(value = {"实际居住人信息","出生日期"},index = 17) + private String birthday; + + /** + * 户籍所在地 + */ + @ExcelProperty(value = {"实际居住人信息","户籍所在地"},index = 18) + private String hjszd; + + /** + * 与户主关系【字典表】 + */ + @ExcelProperty(value = {"实际居住人信息","与户主关系"},index = 19) + private String yhzgx; + + /** + * 是否党员 + */ + @ExcelProperty(value = {"实际居住人信息","是否党员"},index = 20) + private String isParty; + + /** + * 是否租户 + */ + @ExcelProperty(value = {"实际居住人信息","是否租户"},index = 21) + private String isTenant; + + /** + * 是否流动人口 + */ + @ExcelProperty(value = {"实际居住人信息","是否流动人口"},index = 22) + private String isFloating; + + /** + * 工作单位 + */ + @ExcelProperty(value = {"实际居住人信息","工作单位"},index = 23) + private String gzdw; + + /** + * 民族【字典表】 + */ + @ExcelProperty(value = {"实际居住人信息","民族"},index = 24) + private String mz; + + /** + * 籍贯 + */ + @ExcelProperty(value = {"实际居住人信息","籍贯"},index = 25) + private String jg; + + /** + * 婚姻状况【字典表】 + */ + @ExcelProperty(value = {"实际居住人信息","婚姻状况"},index = 26) + private String hyzk; + + /** + * 文化程度【字典表】 + */ + @ExcelProperty(value = {"实际居住人信息","文化程度"},index = 27) + private String culture; + + /** + * 宗教信仰 + */ + @ExcelProperty(value = {"实际居住人信息","宗教信仰"},index = 28) + private String faith; + + /** + * 备注 + */ + @ExcelProperty(value = {"实际居住人信息","备注"},index = 29) + private String remarks; + + + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseMemberResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseMemberResultDTO.java new file mode 100644 index 0000000000..6879feb43d --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseMemberResultDTO.java @@ -0,0 +1,48 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 用户基础信息 + * @Author yinzuomei + * @Date 2021/11/1 10:34 上午 + */ +@Data +public class IcHouseMemberResultDTO implements Serializable { + private static final long serialVersionUID = 5621052927788129250L; + + /** + * 姓名 + */ + private String name; + + /** + * 手机号 + */ + private String mobile; + + /** + * 性别 + */ + private String gender; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 出生日期 + */ + private String birthday; + + /** + * 备注 + */ + private String remarks; + + +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 1d9903832b..653524cad1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -18,6 +18,13 @@ package com.epmet.controller; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.MaskResponse; import com.epmet.commons.tools.aop.NoRepeatSubmit; @@ -28,7 +35,10 @@ import com.epmet.commons.tools.exception.EpmetException; 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.ExcelUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.ExcelFillCellMergeStrategy; +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.*; @@ -37,18 +47,25 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.service.HouseService; import com.epmet.util.ExcelPoiUtils; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.VerticalAlignment; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; /** @@ -305,4 +322,78 @@ public class HouseController implements ResultDataResolver { return new Result(); } + /** + * desc: 导出一户一档 + * + * @param tokenDto + * @param formDTO + * @param response + * @return void + * @author LiuJanJun + * @date 2022/5/9 1:42 下午 + */ + @NoRepeatSubmit + @RequestMapping(value = "/exportHouseUser") + public void exportHouseUser(@LoginUser TokenDto tokenDto, @RequestBody IcHouseListFormDTO formDTO, HttpServletResponse response) throws Exception { + formDTO.setIsPage(false); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + //效验数据 + if (StringUtils.isBlank(formDTO.getAgencyId())){ + LoginUserDetailsResultDTO loginUserDetail = getLoginUserDetailsResultDTO(tokenDto, "【查询房屋】查询当前staff所在组织信息失败"); + formDTO.setAgencyId(loginUserDetail.getAgencyId()); + } + ValidatorUtils.validateEntity(formDTO); + + ExcelWriter excelWriter = null; + try { + // 头的策略 + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + // 背景设置为红色 + headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("一户一档信息.xlsx", response)) + .registerWriteHandler(horizontalCellStyleStrategy) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .build(); + int[] mergeRowArr = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12}; + + FreezeAndFilter writeHandler = new FreezeAndFilter(); + writeHandler.rowSplit = 2; + ExcelFillCellMergeStrategy mergeStrategy = new ExcelFillCellMergeStrategy(2,mergeRowArr,false); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1") + .head(HouseMemberResultDTO.class) + .registerWriteHandler(mergeStrategy) + .registerWriteHandler(writeHandler) + .build(); + PageData dataList = null; + Cache haveSearchCache = CacheBuilder.newBuilder().maximumSize(NumConstant.ONE_HUNDRED).expireAfterWrite(NumConstant.THIRTY, TimeUnit.MINUTES).build(); + do { + dataList = houseService.getHouseUser(tokenDto,formDTO,haveSearchCache); + + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(dataList.getList(), writeSheet); + if (CollectionUtils.isEmpty(dataList.getList())){ + break; + } + }while (dataList.getTotal() == formDTO.getPageSize()); + //获取导出配置 + + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "text/htm1; 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(); + } finally { + if (excelWriter != null){ + excelWriter.finish(); + } + } + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java index b872a9fc8c..e60bfb50ae 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java @@ -18,10 +18,12 @@ package com.epmet.service; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.google.common.cache.Cache; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; @@ -36,6 +38,7 @@ import java.util.Set; */ public interface HouseService { + void addHouse(String customerId, IcHouseAddFormDTO formDTO); @@ -105,4 +108,13 @@ public interface HouseService { * @date 2022/5/6 08:50 */ void updateSort(UpdateSortFormDTO formDTO); + + /** + * desc:条件获取房和家庭成员 + * @param tokenDto + * @param formDTO + * @param haveSearchCache + * @return + */ + PageData getHouseUser(TokenDto tokenDto, IcHouseListFormDTO formDTO, Cache haveSearchCache); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 9949a8753c..2823f548e2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -5,6 +5,7 @@ import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.read.metadata.ReadSheet; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; @@ -17,6 +18,7 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +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.constant.CustomerGridConstant; @@ -34,7 +36,6 @@ import com.epmet.enums.HouseRentFlagEnums; import com.epmet.enums.HouseTypeEnums; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; -import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportHouseInfoListener; import com.epmet.redis.IcHouseRedis; @@ -42,6 +43,8 @@ import com.epmet.service.*; import com.epmet.util.ExcelPoiUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -55,6 +58,7 @@ import java.io.InputStream; import java.text.NumberFormat; import java.util.*; import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -75,12 +79,8 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { @Resource private IcBuildingDao icBuildingDao; @Resource - private IcBuildingUnitDao icBuildingUnitDao; - @Resource private IcHouseDao icHouseDao; @Autowired - private GovOrgOpenFeignClient govOrgOpenFeignClient; - @Autowired private IcHouseRedis icHouseRedis; @Autowired private AgencyService agencyservice; @@ -280,14 +280,9 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { pids = getPids(formDTO.getAgencyId()); } formDTO.setPids(pids); - PageInfo pageInfo = null; - if (formDTO.getIsPage()){ - pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(),formDTO.getIsPage()) + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(),formDTO.getIsPage()) .doSelectPageInfo(() -> icHouseDao.searchHouseByPage(formDTO)); - }else{ - List resultDTOS = icHouseDao.searchHouseByPage(formDTO); - pageInfo = new PageInfo<>(resultDTOS,resultDTOS.size()); - } + List records = pageInfo.getList(); records.forEach(item->{ @@ -295,7 +290,8 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { item.setPurpose(HousePurposeEnums.getTypeValue(item.getPurposeKey())); }); - return new PageData<>(records,pageInfo.getTotal()); + + return new PageData<>(records == null? new ArrayList<>():records,pageInfo.getTotal()); } public String getPids(String agencyId){ String pids = null; @@ -318,10 +314,17 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { public void exportBuildinginfo(IcHouseListFormDTO formDTO, HttpServletResponse response) throws Exception { //如果类型是house 查房屋 //导出房屋 - PageData icHouseExcels = getHouseList(formDTO); + List list = new ArrayList<>(); + do { + PageData icHouseExcels = getHouseList(formDTO); + if (CollectionUtils.isEmpty(icHouseExcels.getList())){ + break; + } + list.addAll(icHouseExcels.getList()); + }while (list.size() == formDTO.getPageSize()); TemplateExportParams templatePath = new TemplateExportParams("excel/house_export.xlsx"); Map map = new HashMap<>(); - map.put("maplist",icHouseExcels.getList()); + map.put("maplist", list); ExcelPoiUtils.exportExcel(templatePath ,map,"房屋信息录入表",response); } @@ -578,6 +581,110 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { icBuildingService.update(icBuildingDTO); } } + Cache> memberMap = CacheBuilder.newBuilder().expireAfterAccess(1, TimeUnit.SECONDS).build(); + @Override + public PageData getHouseUser(TokenDto tokenDto, IcHouseListFormDTO formDTO, Cache haveSearchCache) { + RentTenantDataFormDTO resiParam = new RentTenantDataFormDTO(); + resiParam.setCustomerId(tokenDto.getCustomerId()); + resiParam.setAgencyId(formDTO.getAgencyId()); + resiParam.setGridId(formDTO.getGridId()); + resiParam.setPageSize(NumConstant.ONE_THOUSAND); + resiParam.setIsPage(false); + + //查询级别 默认按照小区去查 + int searchLevel = 0; + + //如果楼宇id不为空 则直接查询楼宇内的居民 + if (StringUtils.isNotEmpty(formDTO.getBuildingId())){ + searchLevel = 1; + } + //如果有具体的查询套件 则直接降级为2 按照房屋Id 来查 + if (StringUtils.isNotEmpty(formDTO.getOwnerName()) || StringUtils.isNotEmpty(formDTO.getOwnerPhone()) || StringUtils.isNotEmpty(formDTO.getRentFlag())){ + searchLevel = 2; + } + + PageData houseData = this.getHouseList(formDTO); + List resultDTOS = ConvertUtils.sourceToTarget(houseData.getList(), HouseMemberResultDTO.class); + + List resultList = new ArrayList<>(); + PageData result = new PageData<>(resultList,houseData.getList().size()); + int finalSearchLevel = searchLevel; + AtomicInteger num = new AtomicInteger((formDTO.getPageNo()-1) * formDTO.getPageSize()); + + resultDTOS.stream().forEach(o ->{ + + resiParam.setNeighborHoodId(o.getNeighborHoodId()); + if (finalSearchLevel == 1){ + resiParam.setBuildingId(o.getBuildingId()); + } + if (finalSearchLevel == 2){ + resiParam.setHouseId(o.getHouseId()); + } + this.getHouseMembers(resiParam, memberMap,haveSearchCache); + List members = memberMap.getIfPresent(o.getHouseId()); + + int n = num.incrementAndGet(); + + //没有住户 则直接写房屋 + if (CollectionUtils.isEmpty(members)){ + HouseMemberResultDTO resultDTO = ConvertUtils.sourceToTarget(o, HouseMemberResultDTO.class); + resultDTO.setNum(n); + resultList.add(resultDTO); + return; + } + //有住户 房屋信息是重复的 + members.forEach(m->{ + HouseMemberResultDTO resultDTO = ConvertUtils.sourceToTarget(m, HouseMemberResultDTO.class); + resultDTO.setNum(n); + resultDTO.setAgencyName(o.getAgencyName()); + resultDTO.setGridName(o.getGridName()); + resultDTO.setNeighborHoodName(o.getNeighborHoodName()); + resultDTO.setBuildingName(o.getBuildingName()); + resultDTO.setUnitName(o.getUnitName()); + resultDTO.setDoorName(o.getDoorName()); + resultDTO.setHouseType(o.getHouseType()); + resultDTO.setPurpose(o.getPurpose()); + resultDTO.setRentFlag(o.getRentFlag()); + resultDTO.setOwnerName(o.getOwnerName()); + resultDTO.setOwnerPhone(o.getOwnerPhone()); + resultDTO.setOwnerIdCard(o.getOwnerIdCard()); + resultList.add(resultDTO); + }); + }); + return result; + } + + /** + * desc:分情况获取 房屋内居民 + * @param resiParam + * @param memberMap + * @param haveSearchCache + */ + public void getHouseMembers(RentTenantDataFormDTO resiParam, Cache> memberMap, Cache haveSearchCache) { + String searchKey = resiParam.getHouseId()+resiParam.getBuildingId()+resiParam.getNeighborHoodId()+resiParam.getAgencyId(); + Boolean haveSearch = haveSearchCache.getIfPresent(searchKey); + if (haveSearch!= null && haveSearch){ + return; + } + haveSearchCache.put(searchKey,true); + List memberListTemp = null; + resiParam.setPageNo(NumConstant.ONE); + do { + Result> memberResult = epmetUserOpenFeignClient.getHouseMemberList(resiParam); + log.debug("=======查询居民:"+ resiParam.getPageNo()+",size:"+resiParam.getPageSize()+",result:"+memberResult.getData().size()); + if (!memberResult.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "调用user服务失败"); + } + memberListTemp = memberResult.getData(); + log.debug("=======查询居民结果:"+ JSON.toJSONString(memberListTemp)); + if (CollectionUtils.isEmpty(memberListTemp)) { + break; + } + resiParam.setPageNo(resiParam.getPageNo()+1); + memberListTemp.parallelStream().forEach(h -> memberMap.put(h.getHomeId(), h.getHouseMemberList())); + + } while (memberListTemp.size() == resiParam.getPageSize()); + } /** * @Author sun diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml index 8e48d2e4d5..53d4ff2277 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml @@ -131,12 +131,21 @@ AND c.GRID_ID = #{id} + + AND c.GRID_ID = #{gridId} + AND c.id = #{id} + + AND a.NEIGHBOR_HOOD_ID = #{neighborHoodId} + AND b.id = #{id} + + AND a.BUILDING_ID = #{buildingId} + AND a.RENT_FLAG = #{rentFlag} diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcFormOptionsQueryFormDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcFormOptionsQueryFormDTO.java index f7fa5bb1da..8ec7ed10c2 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcFormOptionsQueryFormDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcFormOptionsQueryFormDTO.java @@ -12,16 +12,24 @@ import javax.validation.constraints.NotBlank; */ @Data public class IcFormOptionsQueryFormDTO { - + public interface QueryByLabelAndCustomerIdForForm {} - + @NotBlank(message = "客户ID必填", groups = { QueryByLabelAndCustomerIdForForm.class }) private String customerId; @NotBlank(message = "FormCode必填", groups = { QueryByLabelAndCustomerIdForForm.class }) private String formCode; + /** + * 列名单纯的列名,如果是扩展字段则 需要给columnNum赋值 + */ @NotBlank(message = "OptionsLabel必填", groups = { QueryByLabelAndCustomerIdForForm.class }) - private String label; - + private String columnName; + + /** + * 列名数字 + */ + private Integer columnNum; + } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemOptionsController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemOptionsController.java index ed22604272..d794955eef 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemOptionsController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemOptionsController.java @@ -31,12 +31,10 @@ import com.epmet.excel.IcFormItemOptionsExcel; import com.epmet.service.IcFormItemOptionsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.tags.form.InputTag; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; -import java.util.function.IntUnaryOperator; /** @@ -48,7 +46,7 @@ import java.util.function.IntUnaryOperator; @RestController @RequestMapping("icformitemoptions") public class IcFormItemOptionsController { - + @Autowired private IcFormItemOptionsService icFormItemOptionsService; @@ -115,11 +113,12 @@ public class IcFormItemOptionsController { ValidatorUtils.validateEntity(input, IcFormOptionsQueryFormDTO.QueryByLabelAndCustomerIdForForm.class); String customerId = input.getCustomerId(); String formCode = input.getFormCode(); - String label = input.getLabel(); + String columnName = input.getColumnName(); + Integer columnNum = input.getColumnNum(); - List r = icFormItemOptionsService.getOptionsByItemConditions(customerId, formCode, label); + List r = icFormItemOptionsService.getOptionsByItemConditions(customerId, formCode, columnName, columnNum); return new Result>().ok(r); } - -} \ No newline at end of file + +} diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemOptionsService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemOptionsService.java index 7423f85289..8dd3193e6d 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemOptionsService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemOptionsService.java @@ -105,8 +105,9 @@ public interface IcFormItemOptionsService extends BaseService getOptionsByItemConditions(String customerId, String formCode, String label); -} \ No newline at end of file + List getOptionsByItemConditions(String customerId, String formCode, String columnName, Integer columnNum); +} diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemOptionsServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemOptionsServiceImpl.java index 970845cbee..f176182cf9 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemOptionsServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemOptionsServiceImpl.java @@ -53,7 +53,7 @@ public class IcFormItemOptionsServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -118,19 +118,20 @@ public class IcFormItemOptionsServiceImpl extends BaseServiceImpl getOptionsByItemConditions(String customerId, String formCode, String label) { + public List getOptionsByItemConditions(String customerId, String formCode, String columnName, Integer columnNum) { // 查询item LambdaQueryWrapper formItemQuery = new LambdaQueryWrapper<>(); - formItemQuery.eq(IcFormItemEntity::getCustomerId, customerId); - formItemQuery.eq(IcFormItemEntity::getFormCode, formCode); - formItemQuery.eq(IcFormItemEntity::getLabel, label); + formItemQuery.eq(IcFormItemEntity::getCustomerId, customerId) + .eq(IcFormItemEntity::getFormCode, formCode) + .eq(IcFormItemEntity::getColumnName, columnName) + .eq(columnNum != null,IcFormItemEntity::getColumnNum,columnNum); IcFormItemEntity item = icFormItemDao.selectOne(formItemQuery); if (item == null) { return new ArrayList<>(); } - + // 通过item查询options LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(IcFormItemOptionsEntity::getItemId, item.getId()); @@ -143,4 +144,4 @@ public class IcFormItemOptionsServiceImpl extends BaseServiceImpl> page(@RequestParam Map params){ + public Result> page(@RequestParam Map params) { PageData page = icPartymemberStyleService.page(params); return new Result>().ok(page); } @PostMapping("detail") - public Result get(@RequestBody IcPartymemberStyleDTO dto){ + public Result get(@RequestBody IcPartymemberStyleDTO dto) { IcPartymemberStyleDTO data = icPartymemberStyleService.get(dto.getId()); return new Result().ok(data); } @PostMapping("save") @NoRepeatSubmit - public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcPartymemberStyleDTO dto){ + public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcPartymemberStyleDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); icPartymemberStyleService.save(tokenDto, dto); @@ -103,7 +104,7 @@ public class IcPartymemberStyleController { } @PostMapping("delete") - public Result delete(@RequestBody IcPartymemberStyleDTO dto){ + public Result delete(@RequestBody IcPartymemberStyleDTO dto) { //效验数据 icPartymemberStyleService.delete(dto.getId()); return new Result(); @@ -156,7 +157,7 @@ public class IcPartymemberStyleController { InputStream inputStream = null; try { inputStream = file.getInputStream(); - }catch (Exception e){ + } catch (Exception e) { ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); input.setOperatorId(tokenDto.getUserId()); input.setTaskId(result.getData().getTaskId()); @@ -172,23 +173,43 @@ public class IcPartymemberStyleController { /** * 数据分析-党员风采列表查询 + * * @param tokenDto * @return */ @PostMapping("showlist") - public Result> showList(@LoginUser TokenDto tokenDto, @RequestBody StyleShowListFormDTO formDTO){ + public Result> showList(@LoginUser TokenDto tokenDto, @RequestBody StyleShowListFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO,StyleShowListFormDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, StyleShowListFormDTO.AddUserInternalGroup.class); return new Result>().ok(icPartymemberStyleService.showList(formDTO)); } + /** + * 党员风采列表 + * + * @param tokenDto 登录用户 + * @param formDto 查询条件 + * @return com.epmet.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2022/5/9/0009 14:23 + */ + @PostMapping("showlistbyagency") + public Result> showListByAgency(@LoginUser TokenDto tokenDto, @RequestBody StyleShowListResiFormDTO formDto) { + formDto.setCustomerId(tokenDto.getCustomerId()); + // 此接口不包含userId相关业务处理 + formDto.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDto, StyleShowListFormDTO.AddUserInternalGroup.class); + return new Result().ok(icPartymemberStyleService.showListByAgency(formDto)); + } + /** * 下载党员风采导入模板 + * * @param response * @throws IOException */ - @RequestMapping(value = "import/template-download" ,method = {RequestMethod.GET, RequestMethod.POST}) + @RequestMapping(value = "import/template-download", method = {RequestMethod.GET, RequestMethod.POST}) public void downloadTemplate(HttpServletResponse response) throws IOException { response.setCharacterEncoding("UTF-8"); response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java index 4a9ec6ba5c..9e004e03c5 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java @@ -25,6 +25,7 @@ import com.epmet.modules.partymember.entity.IcPartymemberStyleEntity; import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; import com.epmet.resi.partymember.dto.partymember.form.PartyMemberStyleFormDTO; import com.epmet.resi.partymember.dto.partymember.form.StyleShowListFormDTO; +import com.epmet.resi.partymember.dto.partymember.form.StyleShowListResiFormDTO; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -93,6 +94,7 @@ public interface IcPartymemberStyleService extends BaseService} * @Author zhaoqifeng @@ -102,6 +104,7 @@ public interface IcPartymemberStyleService extends BaseService showList(StyleShowListFormDTO formDTO); + + /** + * 党员风采列表查询 + * + * @param formDto + * @return com.epmet.commons.tools.page.PageData + * @author work@yujt.net.cn + * @date 2022/5/9/0009 14:22 + */ + PageData showListByAgency(StyleShowListResiFormDTO formDto); } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index 3c5871637c..b488b7e15f 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -60,6 +60,7 @@ import com.epmet.modules.partymember.service.IcPartymemberStyleService; import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; import com.epmet.resi.partymember.dto.partymember.form.PartyMemberStyleFormDTO; import com.epmet.resi.partymember.dto.partymember.form.StyleShowListFormDTO; +import com.epmet.resi.partymember.dto.partymember.form.StyleShowListResiFormDTO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -72,10 +73,8 @@ import org.apache.http.entity.ContentType; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; @@ -131,7 +130,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl { if (StringUtils.isNotBlank(item.getGridId())) { GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(item.getGridId()); - if(gridInfo == null) { + if (gridInfo == null) { log.warn("未找到网格信息:{}", item.getGridId()); return; } @@ -145,8 +144,8 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get(FieldConstant.ID_HUMP); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); @@ -168,7 +167,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl list = baseDao.selectList(wrapper); PageInfo pageInfo = new PageInfo<>(list); @@ -289,13 +288,13 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl> gridOptionResult = govOrgOpenFeignClient.getGridIListByAgency(staffInfoCache.getAgencyId()); + Result> gridOptionResult = govOrgOpenFeignClient.getGridIListByAgency(staffInfoCache.getAgencyId()); if (!gridOptionResult.success()) { throw new EpmetException(gridOptionResult.getCode(), gridOptionResult.getMsg()); } Map gridMap = gridOptionResult.getData().stream().collect(Collectors.toMap(CustomerGridDTO::getGridName, CustomerGridDTO::getId)); //获取党员风采所有分类:key:分类名称; - Map categoryDictMap=icPartymemberStyleCategoryDictService.getCategoryDictMap(tokenDto.getCustomerId()); + Map categoryDictMap = icPartymemberStyleCategoryDictService.getCategoryDictMap(tokenDto.getCustomerId()); //1.数据校验 只允许导入当前组织下的网格的数据 //网格名称不一样的数据舍弃或者分类名称不存在也舍弃 Iterator iterator = result.iterator(); @@ -346,7 +345,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl showList(StyleShowListFormDTO formDTO) { - CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + String customerId = formDTO.getCustomerId(); + CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(customerId, formDTO.getUserId()); if (null == staff || StringUtils.isBlank(staff.getAgencyId())) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询当前工作人员缓存信息失败", "查询用户信息异常"); } - PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectShowList(staff.getAgencyId(), formDTO.getCustomerId())); + return showListByAgency(formDTO.getPageNo(), formDTO.getPageSize(), staff.getAgencyId(), customerId); + } + + @Override + public PageData showListByAgency(StyleShowListResiFormDTO formDto) { + return showListByAgency(formDto.getPageNo(), formDto.getPageSize(), formDto.getAgencyId(), formDto.getCustomerId()); + } + + private PageData showListByAgency(int pageNo, int pageSize, String agencyId, String customerId) { + PageInfo pageInfo = PageHelper.startPage(pageNo, pageSize).doSelectPageInfo(() -> baseDao.selectShowList(agencyId, customerId)); if (CollectionUtils.isNotEmpty(pageInfo.getList())) { //赋值网格名称 for (IcPartymemberStyleDTO dto : pageInfo.getList()) { @@ -468,5 +478,4 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl(pageInfo.getList(), pageInfo.getTotal()); } - } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/RentTenantDataFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/RentTenantDataFormDTO.java index c79bf3e596..6428ab39e3 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/RentTenantDataFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/RentTenantDataFormDTO.java @@ -1,24 +1,57 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.dto.form.PageFormDTO; import lombok.Data; import javax.validation.constraints.NotBlank; -import java.io.Serializable; /** - * 租客,房东信息 + * desc:居民信息查询条件 * * @author zhy * @date 2022/4/26 10:54 */ @Data -public class RentTenantDataFormDTO implements Serializable { - private static final long serialVersionUID = 9156247659994638103L; +public class RentTenantDataFormDTO extends PageFormDTO { - @NotBlank(message = "userId不能为空") + private static final long serialVersionUID = 803398545727377361L; + + public interface RentTenantDataForm{} + + @NotBlank(message = "userId不能为空", groups = RentTenantDataForm.class) private String userId; - @NotBlank(message = "tokenDto获取customerId不能为空") + @NotBlank(message = "tokenDto获取customerId不能为空", groups = RentTenantDataForm.class) private String customerId; + /** + * 组织Id + */ + private String agencyId; + + /** + * pids + */ + private String pids; + + /** + * 网格Id + */ + private String gridId; + + /** + * 小区ID + */ + private String neighborHoodId; + + /** + * 楼栋ID + */ + private String buildingId; + + /** + * 房间ID + */ + private String houseId; + } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/HouseIcResiUserResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/HouseIcResiUserResultDTO.java new file mode 100644 index 0000000000..b1708cbd3b --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/HouseIcResiUserResultDTO.java @@ -0,0 +1,181 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.LinkedHashMap; +import java.util.List; + + +/** + * 房屋内居民结果 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-10-26 + */ +@Data +public class HouseIcResiUserResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + + /** + * 客户Id customer.id + */ + private String customerId; + + /** + * + */ + private String agencyId; + + /** + * 网格ID + */ + private String gridId; + + /** + * 所属小区ID + */ + private String villageId; + + /** + * 所属楼宇Id + */ + private String buildId; + + /** + * 单元id + */ + private String unitId; + + /** + * 所属家庭Id + */ + private String homeId; + + /** + * 屋内的居民 + */ + private List houseMemberList; + + /** + * 屋内的居民 + */ + private LinkedHashMap houseMemberList2; + + @Data + public static class HouseMemberResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 姓名 + */ + private String name; + + /** + * 性别 + */ + private String gender; + + /** + * 手机号 + */ + private String mobile; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 出生日期 + */ + private String birthday; + + /** + * 户籍所在地 + */ + private String hjszd; + + /** + * 与户主关系【字典表】 + */ + private String yhzgx; + + /** + * 是否党员 + */ + private String isParty; + + /** + * 是否租户 + */ + private String isTenant; + + /** + * 是否流动人口 + */ + private String isFloating; + + /** + * 工作单位 + */ + private String gzdw; + + /** + * 民族【字典表】 + */ + private String mz; + + /** + * 籍贯 + */ + private String jg; + + /** + * 婚姻状况【字典表】 + */ + private String hyzk; + + /** + * 文化程度【字典表】 + */ + private String culture; + + /** + * 宗教信仰 + */ + private String faith; + + /** + * 备注 + */ + private String remarks; + + } + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcResiUserBaseResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcResiUserBaseResultDTO.java new file mode 100644 index 0000000000..f54ad0cfe4 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcResiUserBaseResultDTO.java @@ -0,0 +1,48 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 用户基础信息 + * @Author yinzuomei + * @Date 2021/11/1 10:34 上午 + */ +@Data +public class IcResiUserBaseResultDTO implements Serializable { + private static final long serialVersionUID = 5621052927788129250L; + + /** + * 姓名 + */ + private String name; + + /** + * 手机号 + */ + private String mobile; + + /** + * 性别 + */ + private String gender; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 出生日期 + */ + private String birthday; + + /** + * 备注 + */ + private String remarks; + + +} + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcResiUserPageResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcResiUserPageResultDTO.java deleted file mode 100644 index 0c5f5ab0bf..0000000000 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcResiUserPageResultDTO.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.epmet.dto.result; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @Description TODO - * @Author yinzuomei - * @Date 2021/11/1 10:34 上午 - */ -@Data -public class IcResiUserPageResultDTO implements Serializable { - private static final long serialVersionUID = 5621052927788129250L; - private String icResiUserId; - private String gridId; - private String gridName; - /** - * 所属小区ID - */ - private String villageId; - private String vallageName; - - - /** - * 所属楼宇Id - */ - private String buildId; - private String buildName; - - /** - * 单元id - */ - private String unitId; - private String unitName; - - /** - * 所属家庭Id - */ - private String homeId; - private String homeName; - - /** - * 姓名 - */ - private String name; - - /** - * 手机号 - */ - private String mobile; - - /** - * 性别 - */ - private String gender; - - /** - * 身份证号 - */ - private String idCard; - - /** - * 出生日期 - */ - private String birthday; - - /** - * 备注 - */ - private String remarks; - - /** - * 是否党员 - */ - private Boolean isParty; - - /** - * 是否低保户 - */ - private Boolean isDbh; - - /** - * 是否保障房 - */ - private Boolean isEnsureHouse; - - /** - * 是否失业 - */ - private Boolean isUnemployed; - - /** - * 是否育龄妇女 - */ - private Boolean isYlfn; - - /** - * 是否退役军人 - */ - private Boolean isVeterans; - - /** - * 是否统战人员 - */ - private Boolean isUnitedFront; - - /** - * 是否信访人员 - */ - private Boolean isXfry; - - /** - * 是否志愿者 - */ - private Boolean isVolunteer; - - /** - * 是否老年人 - */ - private Boolean isOldPeople; - - /** - * 是否空巢 - */ - private Boolean isKc; - - /** - * 是否失独 - */ - private Boolean isSd; - - /** - * 是否失能 - */ - private Boolean isSn; - - /** - * 是否失智 - */ - private Boolean isSz; - - /** - * 是否残疾 - */ - private Boolean isCj; - - /** - * 是否大病 - */ - private Boolean isDb; - - /** - * 是否慢病 - */ - private Boolean isMb; - - /** - * 是否特殊人群 - */ - private Boolean isSpecial; - - - // 以下属性都需要单独处理,不是直接取数据库的字段 - private String demandCategoryIds; - - private String demandName; - - /** - * 房屋类型,1楼房,2平房,3别墅 - */ - private String houseType;} - diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 78aa5f8181..1d8a6f3c5a 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -23,7 +23,7 @@ import java.util.Set; * @author yinzuomei@elink-cn.com * @date 2020/6/4 13:09 */ -// @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class, url = "localhost:8087") +//@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class, url = "localhost:8087") @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class) public interface EpmetUserOpenFeignClient { @@ -740,4 +740,12 @@ public interface EpmetUserOpenFeignClient { @PostMapping("/epmetuser/icresiuser/userchartlist") Result> userChartList(@RequestBody UserChartFormDTO userDTO); + + /** + * desc:条件获取房屋成员信息 + * @param formDTO + * @return + */ + @PostMapping("/epmetuser/icresiuser/getHouseMemberList") + Result> getHouseMemberList(@RequestBody RentTenantDataFormDTO formDTO); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index aa0cb1e7f9..1389394e78 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -543,4 +543,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "userChartList", userDTO); } + @Override + public Result> getHouseMemberList(RentTenantDataFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getHouseMemberList", formDTO); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 1f8eb5ed51..9189409e39 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -270,7 +270,7 @@ public class IcResiUserController implements ResultDataResolver { */ @PostMapping("rent/getrentresiuserinfo") public Result getRentResiUserInfo(@RequestBody RentTenantDataFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO); + ValidatorUtils.validateEntity(formDTO, RentTenantDataFormDTO.RentTenantDataForm.class); return new Result().ok(icResiUserService.getRentResiUserInfo(formDTO)); } @@ -1001,21 +1001,6 @@ public class IcResiUserController implements ResultDataResolver { List r = icResiUserService.listHomeUserBrief(houseId, customerId); return new Result().ok(r); } -// @PostMapping("test-async") -// public Result testAsync(HttpServletRequest request) { -//// tl.set("wxz"); -// executorService.submit(() -> { -// try { -// Thread.sleep(500l); -// log.info("[我是子线程]:" + EpmetRequestHolder.getHeader("app")); -// System.out.println("---"); -// } catch (InterruptedException e) { -// log.error("method exception", e); -// } -// icResiUserImportService.testAsync(); -// }); -// return new Result(); -// } /** * 根据房屋id,查询居民信息表中-家庭信息-本人 的居民。如果有多个,返回最近一个 @@ -1043,6 +1028,8 @@ public class IcResiUserController implements ResultDataResolver { return new Result().ok(icResiUserService.checkUser(tokenDto.getCustomerId(), formDto.getIdCard(), formDto.getAgencyId())); } - - + @PostMapping("getHouseMemberList") + Result> getHouseMemberList(@RequestBody RentTenantDataFormDTO formDTO) { + return new Result().ok(icResiUserService.getHouseMemberList(formDTO)); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index 6de40fe9fa..8edf4cd3af 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.form.EpidemicPreventionFormDTO; +import com.epmet.dto.form.RentTenantDataFormDTO; import com.epmet.dto.form.ResiUserQueryValueDTO; import com.epmet.dto.result.*; import com.epmet.entity.IcResiUserEntity; @@ -159,11 +160,11 @@ public interface IcResiUserDao extends BaseDao { @Param("tableName") String tableName, @Param("userId") String userId); /** - * @Author sun - * @Description 查询居民信息 - **/ - IcResiUserDTO getResiUser(IcResiUserDTO dto); - + * desc:根据身份证号获取居民信息 + * @param idCard + * @param customerId + * @return + */ IcResiUserDTO getResiUserByIdCard(@Param("idCard") String idCard,@Param("customerId") String customerId); /** @@ -301,4 +302,11 @@ public interface IcResiUserDao extends BaseDao { IcResiUserEntity selectResiNoDelFlag(@Param("icResiUserId") String icResiUserId); List userChart(@Param("orgId") String orgId, @Param("orgType") String orgType); + + /** + * desc:根据维度获取居民信息表的数据 + * @param formDTO + * @return + */ + List getResiUser(RentTenantDataFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index 9d16a16f21..b948e8240f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -328,4 +328,10 @@ public interface IcResiUserService extends BaseService { * @return */ SyncResiResDTO checkUser(String customerId, String idCard, String agencyId); + /** + * desc:条件获取居民基础信息 + * @param formDTO + * @return + */ + List getHouseMemberList(RentTenantDataFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 54a418d2de..81192be469 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -210,10 +210,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl categorieDtos = getResultDataOrThrowsException(operCustomizeOpenFeignClient.listOptionsByItemConditions(optionsQuery), ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), @@ -1846,4 +1843,90 @@ public class IcResiUserServiceImpl extends BaseServiceImpl getHouseMemberList(RentTenantDataFormDTO formDTO) { + //如果是组织 且非顶级组织 则利用pids 查询 本级及下级 + if (StringUtils.isNotBlank(formDTO.getAgencyId())){ + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getAgencyId()); + if (agencyInfo == null){ + log.warn("getHouseMemberList agencyId:{} is not exist",formDTO.getAgencyId()); + return null; + } + if (!NumConstant.ZERO_STR.equals(agencyInfo.getPid())) { + String pids = agencyInfo.getPids().concat(StrConstant.COLON).concat(formDTO.getAgencyId()); + formDTO.setPids(pids); + } + } + + Page listPage = PageHelper + .startPage(formDTO.getPageNo(),formDTO.getPageSize(),formDTO.getIsPage()) + .doSelectPage(()->baseDao.getResiUser(formDTO)); + //Result> relationshipResult = epmetAdminOpenFeignClient.getRelationshipOption(); + //Result> educationResult = epmetAdminOpenFeignClient.getEducationOption(); + //Result> nationResult = epmetAdminOpenFeignClient.getNationOption(); + List dictTypeList = Arrays.asList(DictTypeEnum.EDUCATION.getCode(), DictTypeEnum.RELATIONSHIP.getCode(), DictTypeEnum.NATION.getCode()); + Map> dictResult = new HashMap<>(); + dictTypeList.forEach(dict->{ + Result> mapResult = epmetAdminOpenFeignClient.dictMap(dict); + if (mapResult!=null && mapResult.success()){ + dictResult.put(dict,mapResult.getData()); + } + }); + + Map hyzkMap = getOptionMap(formDTO.getCustomerId(),"HYZK"); + + listPage.getResult().forEach(e->{ + e.getHouseMemberList().parallelStream().forEach(o->{ + if (StringUtils.isNotBlank(o.getIsParty())){ + o.setIsParty(NumConstant.ZERO_STR.equals(o.getIsParty())?StrConstant.NO:StrConstant.YES); + } + if (StringUtils.isNotBlank(o.getGender())){ + o.setGender(GenderEnum.getName(o.getGender())); + } + if (StringUtils.isNotBlank(o.getIsTenant())){ + o.setIsTenant(NumConstant.ZERO_STR.equals(o.getIsTenant())?StrConstant.NO:StrConstant.YES); + } + if (StringUtils.isNotBlank(o.getIsFloating())){ + o.setIsFloating(NumConstant.ZERO_STR.equals(o.getIsFloating())?StrConstant.NO:StrConstant.YES); + } + Map mzMap = dictResult.get(DictTypeEnum.NATION.getCode()); + Map whcdMap = dictResult.get(DictTypeEnum.EDUCATION.getCode()); + Map yhzgxMap = dictResult.get(DictTypeEnum.RELATIONSHIP.getCode()); + if (StringUtils.isNotBlank(o.getMz())) { + o.setMz(mzMap.get(o.getMz())); + } + if (StringUtils.isNotBlank(o.getCulture())) { + o.setCulture(whcdMap.get(o.getCulture())); + } + if (StringUtils.isNotBlank(o.getYhzgx())) { + o.setYhzgx(yhzgxMap.get(o.getYhzgx())); + } + if (StringUtils.isNotBlank(o.getHyzk())) { + o.setHyzk(hyzkMap.get(o.getHyzk())); + } + + }); + }); + return listPage.getResult(); + } + + /** + * desc:根据字段值获取 options + * @param customerId + * @param columnName + * @return + */ + private Map getOptionMap(String customerId,String columnName) { + IcFormOptionsQueryFormDTO optionsForm = new IcFormOptionsQueryFormDTO(); + optionsForm.setCustomerId(customerId); + optionsForm.setFormCode(IcFormCodeEnum.RESI_BASE_INFO.getCode()); + optionsForm.setColumnName(columnName); + Result> listResult = operCustomizeOpenFeignClient.listOptionsByItemConditions(optionsForm); + if (!listResult.success()){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取item失败,"+listResult.getInternalMsg()); + } + return listResult.getData().stream() + .collect(Collectors.toMap(IcFormItemOptionsDTO::getOptionValue, IcFormItemOptionsDTO::getOptionLabel, (o1, o2) -> o1)); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java index 1272b57629..99a4817aa7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java @@ -69,7 +69,7 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve IcFormOptionsQueryFormDTO optionsForm = new IcFormOptionsQueryFormDTO(); optionsForm.setCustomerId(customerId); optionsForm.setFormCode(IcFormCodeEnum.RESI_BASE_INFO.getCode()); - optionsForm.setLabel("志愿者类别"); + optionsForm.setColumnName("VOLUNTEER_CATEGORY"); String errorMsg = "【志愿者分布】查询志愿者图例失败"; List options = getResultDataOrThrowsException(operCustomizeOpenFeignClient.listOptionsByItemConditions(optionsForm), diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_import_template.xls b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_import_template.xls index 99f2034351..0cd7fc22f1 100644 Binary files a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_import_template.xls and b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_import_template.xls differ diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 1645f09bdf..4e35245c8d 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -2,7 +2,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into ${tableName} ( @@ -363,19 +423,6 @@ AND IC_RESI_USER = #{userId} - +