diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 90029209ad..228e1c3fc6 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -769,32 +769,39 @@ SELECT staff_id staffId, - IFNULL(SUM(patrol_total), 0) reportProjectCount, + IFNULL(SUM(report_project_count), 0) reportProjectCount, IFNULL(SUM(total_time), 0) timeNum FROM stats_staff_patrol_record_daily diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ClosedProjectTotalResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ClosedProjectTotalResultDTO.java new file mode 100644 index 0000000000..bd2aea194f --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ClosedProjectTotalResultDTO.java @@ -0,0 +1,31 @@ +package com.epmet.dto.project.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 9:12 上午 + * @DESC + */ +@Data +public class ClosedProjectTotalResultDTO implements Serializable { + + private static final long serialVersionUID = -3683494871244065806L; + + /** + * 组织ID + */ + private String orgId; + + /** + * 分类code + */ + private String categoryCode; + + /** + * 结案的项目数 + */ + private Integer closedProjectTotal = 0; +} diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java index cd31f554bb..e47c97f841 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java @@ -120,4 +120,6 @@ public class ScreenProjectCategoryGridDailyDTO implements Serializable { */ private Boolean status = false; + private Integer closedProjectTotal = 0; + } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/result/CategoryProjectResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/result/CategoryProjectResultDTO.java index 48af51b5ef..29cc0ea5db 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/result/CategoryProjectResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/result/CategoryProjectResultDTO.java @@ -42,6 +42,11 @@ public class CategoryProjectResultDTO implements Serializable { */ private Integer projectTotal; + /** + * 结案数 + */ + private Integer closedProjectTotal; + /** * 分类级别 */ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java index 58ba1f5bc9..e520998bda 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java @@ -42,7 +42,7 @@ public interface FactOriginProjectCategoryDailyDao extends BaseDao selectListProjectCategoryGridDailyDTO(@Param("customerId") String customerId,@Param("subCount")Integer subCount); + List selectListProjectCategoryGridDailyDTO(@Param("customerId") String customerId,@Param("subCount")Integer subCount,@Param("projectType")String projectType); /** * @Description 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】 @@ -50,7 +50,8 @@ public interface FactOriginProjectCategoryDailyDao extends BaseDao selectListProjectCategoryByOrg(@Param("orgIds")List orgIds,@Param("customerId") String customerId,@Param("subCount") Integer subCount); + List selectListProjectCategoryByOrg(@Param("orgIds")List orgIds,@Param("customerId") String customerId, + @Param("subCount") Integer subCount,@Param("projectType")String projectType); int deleteByProjectIds(@Param("list") List list); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java index 70ef71817f..51cb145080 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java @@ -18,6 +18,7 @@ package com.epmet.dao.evaluationindex.screen; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.project.result.ClosedProjectTotalResultDTO; import com.epmet.dto.screen.result.CategoryProjectResultDTO; import com.epmet.entity.evaluationindex.screen.ScreenProjectCategoryOrgDailyEntity; import com.sun.org.apache.xpath.internal.operations.Bool; @@ -106,4 +107,15 @@ public interface ScreenProjectCategoryOrgDailyDao extends BaseDao selectSelfAgencyCategory(@Param("dateId") String dateId,@Param("orgIds")List orgIds); + + /** + * @Description 查询父客户 存在 分类的结案项目数 + * @param customerIds + * @param dateId + * @author zxc + * @date 2021/11/4 9:26 上午 + */ + List selectClosedProjectTotal(@Param("customerIds")List customerIds, @Param("dateId") String dateId, + @Param("status")Boolean status); + } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectCategoryGridDailyEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectCategoryGridDailyEntity.java index 82b03555ac..2a5881cbf4 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectCategoryGridDailyEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectCategoryGridDailyEntity.java @@ -74,4 +74,9 @@ public class ScreenProjectCategoryGridDailyEntity extends BaseEpmetEntity { * 分类等级1、2.... */ private Integer level; + + /** + * 分类下所有结案的项目 + */ + private Integer closedProjectTotal; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectCategoryOrgDailyEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectCategoryOrgDailyEntity.java index bdfba9bbc6..2d4dd0dde2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectCategoryOrgDailyEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectCategoryOrgDailyEntity.java @@ -82,6 +82,11 @@ public class ScreenProjectCategoryOrgDailyEntity extends BaseEpmetEntity { */ private Integer projectTotal; + /** + * 分类下所有结案项目数 + */ + private Integer closedProjectTotal; + /** * 分类等级1、2.... */ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java index 1252a4739c..3bd2029431 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java @@ -54,5 +54,5 @@ public interface FactOriginProjectCategoryDailyService extends BaseService selectListProjectCategoryByOrg(List orgIds,String customerId,Integer subCount); + List selectListProjectCategoryByOrg(List orgIds,String customerId,Integer subCount,String projectType); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java index 083fe26a85..28a57a5b3c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java @@ -138,7 +138,11 @@ public class FactOriginProjectCategoryDailyServiceImpl extends BaseServiceImpl selectListProjectCategoryGridDailyDTO(String customerId) { - List list=baseDao.selectListProjectCategoryGridDailyDTO(customerId,getSubCount(customerId)); + List list=baseDao.selectListProjectCategoryGridDailyDTO(customerId,getSubCount(customerId),"all"); + List closedList = baseDao.selectListProjectCategoryGridDailyDTO(customerId,getSubCount(customerId),"closed"); + if (!CollectionUtils.isEmpty(closedList)){ + list.forEach(l -> closedList.stream().filter(c -> l.getGridId().equals(c.getGridId()) && l.getCategoryCode().equals(c.getCategoryCode())).forEach(c -> l.setClosedProjectTotal(c.getClosedProjectTotal()))); + } return list; } @@ -157,10 +161,10 @@ public class FactOriginProjectCategoryDailyServiceImpl extends BaseServiceImpl selectListProjectCategoryByOrg(List orgIds,String customerId,Integer subCount) { + public List selectListProjectCategoryByOrg(List orgIds,String customerId,Integer subCount,String projectType) { if (!CollectionUtils.isEmpty(orgIds)){ return new ArrayList<>(); } - return baseDao.selectListProjectCategoryByOrg(orgIds,customerId,subCount); + return baseDao.selectListProjectCategoryByOrg(orgIds,customerId,subCount,projectType); } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java index d7edb6dd9a..1cd79eabd8 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java @@ -32,6 +32,7 @@ import com.epmet.constant.ScreenConstant; import com.epmet.dao.evaluationindex.screen.ScreenProjectCategoryGridDailyDao; import com.epmet.dao.evaluationindex.screen.ScreenProjectCategoryOrgDailyDao; import com.epmet.dto.extract.result.CustomerAgencyInfoResultDTO; +import com.epmet.dto.project.result.ClosedProjectTotalResultDTO; import com.epmet.dto.screen.ScreenCustomerGridDTO; import com.epmet.dto.screen.ScreenProjectCategoryGridDailyDTO; import com.epmet.dto.screen.ScreenProjectCategoryOrgDailyDTO; @@ -264,6 +265,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl { if (agency.getOrgId().equals(grid.getOrgId()) && agency.getCategoryCode().equals(grid.getCategoryCode())){ agency.setProjectTotal(agency.getProjectTotal() + grid.getProjectTotal()); + agency.setClosedProjectTotal(agency.getClosedProjectTotal() + grid.getClosedProjectTotal()); grid.setStatus(true); } }); @@ -280,7 +282,11 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl levelAgencyInfo = groupByLevel.get(level); if (!CollectionUtils.isEmpty(levelAgencyInfo)){ - List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId,NumConstant.FOUR); + List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId,NumConstant.FOUR,"all"); + List closedScreenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId,NumConstant.FOUR,"closed"); + if (!CollectionUtils.isEmpty(closedScreenProjectCategory)){ + screenProjectCategory.forEach(l -> closedScreenProjectCategory.stream().filter(c -> l.getGridId().equals(c.getGridId()) && l.getCategoryCode().equals(c.getCategoryCode())).forEach(c -> l.setClosedProjectTotal(c.getClosedProjectTotal()))); + } if (!CollectionUtils.isEmpty(result)){ if (!CollectionUtils.isEmpty(screenProjectCategory)){ result.forEach(r -> { @@ -288,6 +294,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl categoryProjectExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId); log.info("父客户存在的分类{}"+ JSON.toJSONString(categoryProjectExists)); + // 父客户存在的分类 已结案的项目数 + List closedProjectTotalExist = baseDao.selectClosedProjectTotal(customerIds, dateId, true); // 父客户不存在的分类 List categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfoNotExists(customerIds, dateId, level, customerId); log.info("父客户不存在的分类{}"+ JSON.toJSONString(categoryProjectNotExists)); + // 父客户 不存在 的分类 已结案的项目数 + List closedProjectTotalNotExist = baseDao.selectClosedProjectTotal(customerIds, dateId, false); if (!CollectionUtils.isEmpty(categoryProjectExists)){ + if (!CollectionUtils.isEmpty(closedProjectTotalExist)){ + categoryProjectExists.forEach(l -> closedProjectTotalExist.stream().filter(c -> l.getOrgId().equals(c.getOrgId()) && l.getCategoryCode().equals(c.getCategoryCode())).forEach(c -> l.setClosedProjectTotal(c.getClosedProjectTotal()))); + } sonCustomerList.addAll(categoryProjectExists); } if (!CollectionUtils.isEmpty(categoryProjectNotExists)){ + if (!CollectionUtils.isEmpty(closedProjectTotalNotExist)){ + categoryProjectNotExists.forEach(l -> closedProjectTotalNotExist.stream().filter(c -> l.getOrgId().equals(c.getOrgId()) && l.getCategoryCode().equals(c.getCategoryCode())).forEach(c -> l.setClosedProjectTotal(c.getClosedProjectTotal()))); + } sonCustomerList.addAll(categoryProjectNotExists); } if (!CollectionUtils.isEmpty(sonCustomerList)){ @@ -443,6 +461,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl { if (f.getCategoryCode().equals(c.getCategoryCode())){ f.setProjectTotal(f.getProjectTotal() + c.getProjectTotal()); + f.setClosedProjectTotal(f.getClosedProjectTotal() + c.getClosedProjectTotal()); c.setStatus(true); } }); @@ -481,6 +500,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl levelAgencyInfo = groupByLevel.get(level); if (!CollectionUtils.isEmpty(levelAgencyInfo)) { // 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】 - List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId,NumConstant.TWO); + List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId,NumConstant.TWO,"all"); + List closedScreenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId,NumConstant.TWO,"closed"); + if (!CollectionUtils.isEmpty(closedScreenProjectCategory)){ + screenProjectCategory.forEach(l -> closedScreenProjectCategory.stream().filter(c -> l.getGridId().equals(c.getGridId()) && l.getCategoryCode().equals(c.getCategoryCode())).forEach(c -> l.setClosedProjectTotal(c.getClosedProjectTotal()))); + } log.info("直接立项的统计:"+screenProjectCategory); if (!CollectionUtils.isEmpty(result)) { if (!CollectionUtils.isEmpty(screenProjectCategory)) { @@ -505,6 +529,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl + count(1) AS closedProjectTotal + + + count(1)as projectTotal + FROM fact_origin_project_category_daily c LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0' AND p.GRID_ID != '') WHERE c.DEL_FLAG = '0' AND c.CUSTOMER_ID = #{customerId} + + AND p.PROJECT_STATUS = 'closed' + AND c.`LEVEL` = '2' AND p.GRID_ID != '' GROUP BY @@ -60,13 +68,21 @@ p.GRID_ID, p.AGENCY_ID AS PID, P.PIDS, - count(distinct c.project_id)as projectTotal + + count(distinct c.project_id) AS closedProjectTotal + + + count(distinct c.project_id)as projectTotal + FROM fact_origin_project_category_daily c LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0' AND p.GRID_ID != '') WHERE c.DEL_FLAG = '0' AND p.GRID_ID != '' + + AND p.PROJECT_STATUS = 'closed' + AND c.CUSTOMER_ID = #{customerId} GROUP BY c.CUSTOMER_ID, @@ -87,7 +103,12 @@ p.AGENCY_ID AS orgId, p.PID AS PID, P.PIDS, - COUNT(DISTINCT p.ID) AS projectTotal + + COUNT(DISTINCT p.ID) AS projectTotal + + + COUNT(DISTINCT p.ID) AS closedProjectTotal + FROM fact_origin_project_main_daily p LEFT JOIN fact_origin_project_category_daily c ON ( c.PROJECT_Id = p.id AND p.del_flag='0' AND p.GRID_ID = '') WHERE c.DEL_FLAG = '0' @@ -99,6 +120,9 @@ ) AND c.`LEVEL` = '2' AND p.GRID_ID = '' + + AND p.PROJECT_STATUS = 'closed' + GROUP BY c.CUSTOMER_ID, c.CATEGORY_CODE, c.`LEVEL`, p.AGENCY_ID, p.PID, P.PIDS UNION ALL SELECT @@ -109,7 +133,12 @@ p.AGENCY_ID AS orgId, p.PID AS PID, P.PIDS, - COUNT(distinct p.ID) AS projectTotal + + COUNT(DISTINCT p.ID) AS projectTotal + + + COUNT(DISTINCT p.ID) AS closedProjectTotal + FROM fact_origin_project_main_daily p LEFT JOIN fact_origin_project_category_daily c ON ( c.PROJECT_Id = p.id AND p.del_flag='0' AND p.GRID_ID = '') WHERE c.DEL_FLAG = '0' @@ -120,6 +149,9 @@ ) AND p.GRID_ID = '' + + AND p.PROJECT_STATUS = 'closed' + GROUP BY c.CUSTOMER_ID, left(c.CATEGORY_CODE, #{subCount}), c.`LEVEL`, p.PID, p.AGENCY_ID, P.PIDS diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryGridDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryGridDailyDao.xml index 8ec1fcc4bd..763d1c0d49 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryGridDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryGridDailyDao.xml @@ -20,6 +20,7 @@ sg.CUSTOMER_ID AS categoryOriginCustomerId, sg.CATEGORY_CODE, SUM(sg.PROJECT_TOTAL) AS projectTotal, + SUM(sg.CLOSED_PROJECT_TOTAL) AS closedProjectTotal, sg.level, sg.DATE_ID, sca.`LEVEL` AS orgType diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml index 38aa359065..f1efea5b81 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml @@ -32,6 +32,7 @@ sa.CATEGORY_ORIGIN_CUSTOMER_ID, sa.CATEGORY_CODE, SUM(sa.PROJECT_TOTAL) AS projectTotal, + SUM(sa.CLOSED_PROJECT_TOTAL) AS closedProjectTotal, sa.level, sa.DATE_ID, sca.`LEVEL` AS orgType @@ -182,4 +183,36 @@ GROUP BY categoryCode,od.ORG_ID + + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java index d7621bd88b..4784584218 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java @@ -507,4 +507,13 @@ public interface GovOrgOpenFeignClient { */ @PostMapping("/gov/org/icneighborhood/neighborhoodoption") Result> getNeighborHoodOptions(IcNeighborHoodDTO dto); + + /** + * @Description 查询房屋信息 + * @param idCard + * @author zxc + * @date 2021/11/3 3:30 下午 + */ + @PostMapping("/gov/org/ichouse/selecthouseinfobyidcard") + Result> selectHouseInfoByIdCard(@RequestParam("idCard")String idCard); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java index 7e53823382..95219d6b1b 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java @@ -305,6 +305,11 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getNeighborHoodOptions", dto); } + @Override + public Result> selectHouseInfoByIdCard(String idCard) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "selectHouseInfoByIdCard", idCard); + } + @Override public Result selectPidsByGridId(String gridId) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "selectPidsByGridId", gridId); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java index 982bf33835..4092579603 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java @@ -88,4 +88,15 @@ public class IcHouseController { return new Result>().ok(icHouseService.getHouseOption(formDTO)); } + /** + * @Description 查询房屋信息 + * @param idCard + * @author zxc + * @date 2021/11/3 3:30 下午 + */ + @PostMapping("selecthouseinfobyidcard") + public Result> selectHouseInfoByIdCard(@RequestParam("idCard")String idCard){ + return new Result>().ok(icHouseService.selectHouseInfoByIdCard(idCard)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java index fd07309c02..07ca76c21c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java @@ -52,4 +52,13 @@ public interface IcHouseDao extends BaseDao { List searchAllHouse(@Param("house") IcHouseEntity house); List queryHouseInfo(@Param("houseIdList") Set houseIdList); + + /** + * @Description 查询房屋信息 + * @param idCard + * @author zxc + * @date 2021/11/3 3:30 下午 + */ + List selectHouseInfoByIdCard(@Param("idCard") String idCard); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java index 471007a582..2f434ab350 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java @@ -103,4 +103,13 @@ public interface IcHouseService extends BaseService { * @Date 2021/10/25 17:04 */ List getHouseOption(HouseFormDTO formDTO); + + /** + * @Description 查询房屋信息 + * @param idCard + * @author zxc + * @date 2021/11/3 3:30 下午 + */ + List selectHouseInfoByIdCard(String idCard); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java index 0a6f7f50c4..041bdc6b54 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java @@ -36,10 +36,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -135,4 +132,19 @@ public class IcHouseServiceImpl extends BaseServiceImpl selectHouseInfoByIdCard(String idCard) { + List result = baseDao.selectHouseInfoByIdCard(idCard); + if (CollectionUtils.isEmpty(result)){ + return new ArrayList<>(); + } + return result; + } + } \ No newline at end of file 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 3dc145833a..e150566f8a 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 @@ -252,4 +252,16 @@ ih.ID = #{houseId} + + + \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ColumnTableNameResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ColumnTableNameResultDTO.java new file mode 100644 index 0000000000..3d1e20cc50 --- /dev/null +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ColumnTableNameResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 查询必填字段-接口返参 + * @Author sun + */ +@Data +public class ColumnTableNameResultDTO implements Serializable { + private static final long serialVersionUID = -8441112171986914418L; + //表名 + private String tableName; + //字段中文名 + private String label; + //字段名 + private String columnName; +} diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java index 58def540a4..28693abe46 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java @@ -11,6 +11,7 @@ import com.epmet.dto.result.*; import com.epmet.feign.fallback.OperCustomizeOpenFeignClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -88,4 +89,12 @@ public interface OperCustomizeOpenFeignClient { */ @PostMapping("/oper/customize/icform/items") Result> listItems(@RequestBody CustomerFormQueryDTO formDto); + + /** + * @Author sun + * @Description 居民信息新增查询各表必填字段 + **/ + @PostMapping("/oper/customize/icformitem/getmustcolumn/{customerId}") + Result> getMustColumn(@PathVariable("customerId") String customerId); + } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java index 2420adb817..6aa1809620 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java @@ -74,4 +74,9 @@ public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFe public Result> listItems(CustomerFormQueryDTO formDto) { return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "listItems", formDto); } + + @Override + public Result> getMustColumn(String customerId) { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getMustColumn", customerId); + } } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java index 3c6bbf4004..50f4d10ff9 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java @@ -26,6 +26,8 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.IcFormItemDTO; +import com.epmet.dto.result.ColumnTableNameResultDTO; +import com.epmet.dto.result.CustomerStaffRoleResultDTO; import com.epmet.excel.IcFormItemExcel; import com.epmet.service.IcFormItemService; import org.springframework.beans.factory.annotation.Autowired; @@ -91,4 +93,13 @@ public class IcFormItemController { ExcelUtils.exportExcelToTarget(response, null, list, IcFormItemExcel.class); } + /** + * @Author sun + * @Description 居民信息新增查询各表必填字段 + **/ + @PostMapping("getmustcolumn/{customerId}") + public Result> getMustColumn(@PathVariable String customerId) { + return new Result>().ok(icFormItemService.getMustColumn(customerId)); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java index b07c41ef84..a0ad3ad839 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.ColumnTableNameResultDTO; import com.epmet.dto.result.ConditionResultDTO; import com.epmet.dto.result.IcFormResColumnDTO; import com.epmet.dto.result.TableHeaderResultDTO; @@ -64,4 +65,10 @@ public interface IcFormItemDao extends BaseDao { List querySubTables(@Param("customerId") String customerId, @Param("formCode")String formCode); Set queryIcResiSubTables(@Param("customerId") String customerId, @Param("formCode")String formCode); + + /** + * @Author sun + * @Description 居民信息新增查询各表必填字段 + **/ + List getMustColumn(@Param("customerId")String customerId); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java index 15967aef43..32480613c2 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IcFormItemDTO; import com.epmet.dto.form.CustomerFormQueryDTO; +import com.epmet.dto.result.ColumnTableNameResultDTO; import com.epmet.dto.result.ConditionResultDTO; import com.epmet.dto.result.IcFormResColumnDTO; import com.epmet.dto.result.TableHeaderResultDTO; @@ -115,4 +116,10 @@ public interface IcFormItemService extends BaseService { List querySubTables(String customerId, String formCode); Set queryIcResiSubTables(String customerId, String formCode); + + /** + * @Author sun + * @Description 居民信息新增查询各表必填字段 + **/ + List getMustColumn(String customerId); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java index c79d2e8fa0..f614e64e0b 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java @@ -27,6 +27,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcFormItemDao; import com.epmet.dto.IcFormItemDTO; import com.epmet.dto.form.CustomerFormQueryDTO; +import com.epmet.dto.result.ColumnTableNameResultDTO; import com.epmet.dto.result.ConditionResultDTO; import com.epmet.dto.result.IcFormResColumnDTO; import com.epmet.dto.result.TableHeaderResultDTO; @@ -128,6 +129,14 @@ public class IcFormItemServiceImpl extends BaseServiceImpl()); + list.add(categoryName); + TableHeaderResultDTO houseType=new TableHeaderResultDTO(); houseType.setItemType("input"); houseType.setItemId(StrConstant.EPMETY_STR); @@ -153,4 +162,13 @@ public class IcFormItemServiceImpl extends BaseServiceImpl getMustColumn(String customerId) { + return baseDao.getMustColumn(customerId); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml index e8e67a4ba3..61a1c155c9 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml @@ -141,4 +141,21 @@ AND m.CUSTOMER_ID = #{customerId} AND m.FORM_CODE = #{formCode} + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java index 44eb3bf105..bf75ed325f 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java @@ -34,5 +34,8 @@ public class IcResiUserPageFormDTO implements Serializable { */ private List conditions; private Boolean pageFlag; + + @NotBlank(message = "当前用户id不能为空", groups = AddUserInternalGroup.class) + private String staffId; } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java index 22a6fc3c41..ae4082c383 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java @@ -52,7 +52,10 @@ public class PersonDataResultDTO implements Serializable { /** * 志愿者类别 */ - private String volunteerCategory; + private List volunteerCategory; + + @JsonIgnore + private List volunteerCategoryEn; public PersonDataResultDTO() { this.workUnit = ""; @@ -61,7 +64,7 @@ public class PersonDataResultDTO implements Serializable { this.name = ""; this.financialSituation = new FinancialSituationDTO(); this.houseInfo = new ArrayList<>(); - this.volunteerCategory = ""; + this.volunteerCategory = new ArrayList<>(); } /** 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 8310f0aa25..4ed686ba22 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 @@ -307,6 +307,7 @@ public class IcResiUserController { public Result>> queryListResi1(@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO){ //pageFormDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); pageFormDTO.setCustomerId(tokenDto.getCustomerId()); + pageFormDTO.setStaffId(tokenDto.getUserId()); ValidatorUtils.validateEntity(pageFormDTO,IcResiUserPageFormDTO.AddUserInternalGroup.class); return new Result>>().ok(icResiUserService.pageResiMap(pageFormDTO)); } @@ -328,14 +329,13 @@ public class IcResiUserController { @RequestMapping(value = "/exportExcel") public void exportExcel(/*@LoginUser TokenDto tokenDto,*/ @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws IOException { - pageFormDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); pageFormDTO.setPageFlag(false); CustomerFormResultDTO resiFormItems = getResiFormItems(pageFormDTO.getCustomerId()); Map itemMap = new HashMap<>(); for (FormItem formItem : resiFormItems.getItemList()) { - if (StringUtils.isNotBlank(formItem.getColumnName())){ + if (StringUtils.isBlank(formItem.getColumnName())){ continue; } if (formItem.getItemType().equals("checkbox") || formItem.getItemType().equals("select")){ @@ -343,7 +343,7 @@ public class IcResiUserController { } if (formItem.getChildGroup() != null) { for (FormItem2 item2 : formItem.getChildGroup().getItemList()) { - if (StringUtils.isNotBlank(item2.getColumnName())){ + if (StringUtils.isBlank(item2.getColumnName())){ continue; } if (item2.getItemType().equals("checkbox") || item2.getItemType().equals("select")){ @@ -356,7 +356,7 @@ public class IcResiUserController { for (FormGroupDTO groupItem : resiFormItems.getGroupList()) { if (groupItem.getItemList() != null) { for (FormItem2 item : groupItem.getItemList()) { - if (StringUtils.isNotBlank(item.getColumnName())){ + if (StringUtils.isBlank(item.getColumnName())){ continue; } if (item.getItemType().equals("checkbox") || item.getItemType().equals("select")){ @@ -382,10 +382,6 @@ public class IcResiUserController { if (item.getChildGroup() != null) { if (!item.getChildGroup().getTableName().equals(BASE_TABLE_NAME)) { - //itemMap = item.getChildGroup().getItemList().stream().filter(o -> o.getItemType().equals("checkbox")).collect(Collectors.toMap(o -> o.getColumnName().concat(o.getColumnNum() == 0 ? "" : o.getColumnNum().toString()), o -> ConvertUtils.sourceToTarget(o,FormItem.class))); - - - Map> resiChildMap = icResiUserService.getDataForExport(itemMap, pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), item.getChildGroup().getTableName(), pageFormDTO.getConditions()); resiChildMap.forEach((key,value)->{ value.putAll(resiMainList.get(key)); @@ -393,7 +389,6 @@ public class IcResiUserController { Map mapData2 = new HashMap<>(); mapData2.put("list", resiChildMap.values()); - System.out.println("========="+item.getChildGroup().getTableName()+" data:"+resiChildMap.size()); sheetMap.put(n.incrementAndGet(),mapData2); } } 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 329447a24f..45e31dd726 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 @@ -28,6 +28,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; +import java.util.Set; /** * 用户基础信息 @@ -54,7 +55,9 @@ public interface IcResiUserDao extends BaseDao { @Param("formCode") String formCode, @Param("conditions") List conditions, @Param("resultColumns") List resultColumns, - @Param("subTables") List subTables); + @Param("subTables") List subTables, + @Param("currentStaffAgencyId")String currentStaffAgencyId, + @Param("staffOrgPath") String staffOrgPath); /** * 查询主表 * @@ -115,4 +118,7 @@ public interface IcResiUserDao extends BaseDao { */ List searchByName(@Param("name")String name, @Param("agencyId")String agencyId,@Param("pageNo")Integer pageNo); + Set selectUserDemandCode(String icResiUserId); + + String selectCategoryNames(@Param("customerId") String customerId,@Param("codeSet") Set codeSet); } \ No newline at end of file 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 7bb1faee36..af1e0e4578 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 @@ -92,10 +92,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -162,6 +162,28 @@ public class IcResiUserServiceImpl extends BaseServiceImpl formDTO) { //循环自动拼接sql语句,往多个表新增数据 + //0.校验必填字段是否为空 + Result> resultList = operCustomizeOpenFeignClient.getMustColumn(tokenDto.getCustomerId()); + if (resultList.success() && null != resultList.getData()) { + StringBuffer str = new StringBuffer(""); + formDTO.forEach(f -> { + resultList.getData().forEach(l -> { + if (f.getTableName().equals(l.getTableName())) { + f.getList().forEach(map -> { + if (!map.containsKey(l.getColumnName())) { + str.append(str.length() < NumConstant.ONE ? l.getLabel() : "、" + l.getLabel()); + } + }); + } + }); + }); + if (str.length() > NumConstant.ZERO ) { + throw new RenException(String.format("新增居民信息,必要字段值为空,%s值为空", str)); + } + } else { + throw new RenException(String.format("新增居民信息-根据客户Id查询必填信息失败,customerId->%s", tokenDto.getCustomerId())); + } + //1.先往主表新增数据 //主表Id String resiUserId = UUID.randomUUID().toString().replaceAll("-", ""); @@ -293,6 +315,12 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> pageResiMap(IcResiUserPageFormDTO formDTO) { + CustomerStaffInfoCacheResult staffInfoCacheResult=CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(),formDTO.getStaffId()); + String staffOrgPath=StrConstant.EPMETY_STR; + if(StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds())&& !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())){ + staffOrgPath=staffInfoCacheResult.getAgencyPIds().concat(":").concat(staffInfoCacheResult.getAgencyId()); + } + // 查询列表展示项,如果没有,直接返回 CustomerFormQueryDTO queryDTO1=new CustomerFormQueryDTO(); queryDTO1.setCustomerId(formDTO.getCustomerId()); @@ -309,18 +337,22 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> pageInfo=new PageInfo<>(); if (null == formDTO.getPageFlag()||formDTO.getPageFlag()) { //分页 + String finalStaffOrgPath = staffOrgPath; pageInfo= PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectListResiMap(formDTO.getCustomerId(), formDTO.getFormCode(), formDTO.getConditions(), resultColumns, - subTables)); + subTables, + staffInfoCacheResult.getAgencyId(), finalStaffOrgPath + )); }else{ List> list=baseDao.selectListResiMap(formDTO.getCustomerId(), formDTO.getFormCode(), formDTO.getConditions(), resultColumns, - subTables); + subTables,staffInfoCacheResult.getAgencyId(), + staffOrgPath); pageInfo.setTotal(CollectionUtils.isEmpty(list)?NumConstant.ZERO:list.size()); pageInfo.setList(list); } @@ -380,8 +412,9 @@ public class IcResiUserServiceImpl extends BaseServiceImpl(pageInfo.getList(), pageInfo.getTotal()); } + private String queryUserDemandName(String customerId,String icResiUserId) { + Set demandCodePath=baseDao.selectUserDemandCode(icResiUserId); + if(CollectionUtils.isEmpty(demandCodePath)){ + return StrConstant.EPMETY_STR; + } + Set codeSet=new HashSet<>(); + for(String codePath:demandCodePath){ + if(codePath.contains(StrConstant.COMMA)){ + String[] codeAtt=codePath.split(StrConstant.COMMA); + codeSet.add(codeAtt[codeAtt.length-1]); + }else{ + codeSet.add(codePath); + } + } + String demandName=baseDao.selectCategoryNames(customerId,codeSet); + return demandName; + } + /** * 编辑页面,显示居民信息详情 * @@ -435,9 +486,12 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> headList = readListener.getHeadList(); List> dataList = readListener.getDataList(); @@ -458,10 +521,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> headers = mergeHead(headList); // 查询form相关信息 - CustomerFormQueryDTO form = new CustomerFormQueryDTO(); - form.setFormCode("resi_base_info"); - Result> result = operCustomizeOpenFeignClient.listItems(form); - List customerItems = getResultDataOrThrowsException(result, ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【居民信息excel导入】查询表单相关信息失败"); + List customerItems = listFormItems("resi_base_info"); // 清洗表头数据 Map abandonedHeaders = washHeaders(headers, customerItems); @@ -481,12 +541,57 @@ public class IcResiUserServiceImpl extends BaseServiceImpl formItem) ); - Map headerColumnWrapper = integrate(formItemMap, combinedHeaders, dataList, abandonedHeaders); + Map headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders); // 持久化 persist(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, customerItems.get(0).getTableName(), currUserAgencyPids, currentUserId); - return headerColumnWrapper; + return headers; + } + + /** + * excel导入居民附加信息 + * @param excelPathName + * @param sheetNo + * @param headRowNumber + * @param currUserAgencyId + * @param currUserAgencyPids + * @param currentUserId + * @return + */ + private Object importIcResiExtraInfoFromExcel(String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId) { + DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(); + EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); + + List> headList = readListener.getHeadList(); + List> dataList = readListener.getDataList(); + + Map> headers = mergeHead(headList); + + // 查询form相关信息 + List customerItems = listFormItems("resi_base_info"); + + // 清洗表头数据 + Map abandonedHeaders = washHeaders(headers, customerItems); + + //合并多级表头 + HashMap> combinedHeaders = combineHeaders(headers); + + // 得到客户配置item数据 + Map formItemMap = customerItems.stream().collect( + Collectors.toMap(formItem -> { + String groupLabel = formItem.getGroupLabel(); + String label = formItem.getLabel(); + if (StringUtils.isNotBlank(groupLabel)) { + return groupLabel.concat(":").concat(label); + } else { + return label; + } + }, formItem -> formItem) + ); + Map headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders); + + return formItemMap; } /** @@ -496,11 +601,11 @@ public class IcResiUserServiceImpl extends BaseServiceImpl headerColumnWrapper, List> dataRows, + private void persist(Map headerColumnWrapper, List> dataRows, String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, String tableName, String currUserAgencyPids, String currentUserId) { for (Map row : dataRows) { - + // 当前行的列们 // List columnsOfCurrRow = new ArrayList<>(); @@ -556,7 +661,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl listFormItems(String formCode) { + CustomerFormQueryDTO form = new CustomerFormQueryDTO(); + form.setFormCode(formCode); + Result> result = operCustomizeOpenFeignClient.listItems(form); + return getResultDataOrThrowsException(result, ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【居民信息excel导入】查询表单相关信息失败"); + } + /** * @description 合并头 * @@ -626,14 +743,21 @@ public class IcResiUserServiceImpl extends BaseServiceImpl integrate(Map formItemMap, Map> combinedHeaders, - List> datas, Map abandonedHeaders) { + private Map convertExcelHeaders2DBColumnWrappers(Map formItemMap, Map> combinedHeaders, + List> datas, Map abandonedHeaders) { // HashMap> tables = new HashMap<>(); Map columns = new LinkedHashMap<>(combinedHeaders.size()); @@ -707,7 +831,9 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> * * @param headList * @return @@ -813,67 +940,42 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> mergeHead(List> headList) { - Map l1 = headList.get(0); - Map l2 = headList.get(1); - Map l3 = headList.get(2); - - String l1LastHeadName = ""; - String l2LastHeadName = ""; - - //Map resultMap = new HashMap<>(); - HashMap> result = new HashMap<>(); - - for (Map.Entry entry : l1.entrySet()) { - - StringBuilder headerNameConcatStr = new StringBuilder(); - Integer key = entry.getKey(); - String l1TempValue = entry.getValue(); + Map lastNotNullHeads = new LinkedHashMap<>(); + + Map> mergedHead = new LinkedHashMap<>(); + + int levelCount = headList.size(); - String l2TempValue = l2.get(key); - String l3TempValue = l3.get(key); + Map firstLevel = headList.get(0); + + // 遍历所有列 + for (Map.Entry column : firstLevel.entrySet()) { + Integer columIndex = column.getKey(); - if (StringUtils.isNotBlank(l1TempValue)) { - l1LastHeadName = l1TempValue; - } - - if (StringUtils.isNotBlank(l2TempValue)) { - l2LastHeadName = l2TempValue; - } - - // 开始拼接 - if (StringUtils.isNotBlank(l3TempValue)) { - //headerNameConcatStr.append(l1LastHeadName).append(":").append(l2LastHeadName).append(":").append(l3TempValue); - //resultMap.put(key, headerNameConcatStr.toString()); - ArrayList parts = new ArrayList<>(); - parts.add(l1LastHeadName); - parts.add(l2LastHeadName); - parts.add(l3TempValue); - result.put(key, parts); - continue; - } - - if (StringUtils.isNotBlank(l2TempValue)) { - //headerNameConcatStr.append(l1LastHeadName).append(":").append(l2LastHeadName); - //resultMap.put(key, headerNameConcatStr.toString()); - ArrayList parts = new ArrayList<>(); - parts.add(l1LastHeadName); - parts.add(l2LastHeadName); - result.put(key, parts); - continue; - } - - if (StringUtils.isNotBlank(l1TempValue)) { - //headerNameConcatStr.append(l1LastHeadName); - //resultMap.put(key, headerNameConcatStr.toString()); - ArrayList parts = new ArrayList<>(); - parts.add(l1LastHeadName); - result.put(key, parts); - continue; + List labels = new ArrayList<>(); + + // 竖着遍历该列的所有行 + for (int currentLevel = 0; currentLevel < levelCount; currentLevel ++) { + String label = headList.get(currentLevel).get(columIndex); + + if (StringUtils.isNotBlank(label)) { + lastNotNullHeads.put(currentLevel, label); + } else { + if (currentLevel == 0 || StringUtils.isBlank(headList.get(currentLevel - 1).get(columIndex))) { + label = lastNotNullHeads.get(currentLevel); + } + } + + if (StringUtils.isNotBlank(label)) { + labels.add(label); + } } + mergedHead.put(columIndex, labels); } - return result; + + return mergedHead; } /** @@ -942,9 +1044,18 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> listResult = govOrgOpenFeignClient.selectHouseInfoByIdCard(personData.getIdCard()); + if (!listResult.success()){ + throw new RenException("查询房屋信息失败"); + } + personData.setHouseInfo(listResult.getData()); // TODO - return null; + return personData; } /** @@ -990,24 +1101,45 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> result = new LinkedHashMap<>(); mapList.stream().filter(Objects::nonNull).forEach(map -> { String resiId = (String) map.getOrDefault(UserConstant.IC_RESI_USER, ""); - formItemMap.forEach((k, v)->{ + for (Map.Entry e : formItemMap.entrySet()) { + String k = e.getKey(); + FormItem v = e.getValue(); Object temp = map.get(k); if (temp != null) { if (v.getOptionSourceType().equals("remote")) { - //todo 获取 options - } - if (v.getItemType().equals("checkbox")) { - v.getOptions().forEach(optionDTO -> { - map.put(optionDTO.getValue(), temp.toString().contains(optionDTO.getValue()) ? "是" : "否"); - }); - } else if (v.getItemType().equals("select")) { - v.getOptions().forEach(optionDTO -> { - map.put(optionDTO.getValue(), temp.toString().equals(optionDTO.getValue()) ? optionDTO.getLabel() : ""); - }); + try { + //todo 获取 options + Map stringMap = listRemoteOptions(new HashMap<>(), v.getOptionSourceValue(), null); + System.out.println("======remote:"+v.getLabel()+" "+JSON.toJSONString(stringMap)); + if ("checkbox".equals(v.getItemType())) { + stringMap.forEach((label, value) -> map.put(value, temp.toString().contains(value) ? "是" : "否")); + } else if ("select".equals(v.getItemType())) { + + stringMap.forEach((label,value)->{ + if (temp.toString().equals(value)){ + map.put(k, label); + } + }); + } + } catch (Exception ex) { + log.warn("listRemoteOptions url:{}",v.getOptionSourceValue()); + } + } else { + if ("checkbox".equals(v.getItemType())) { + v.getOptions().forEach(optionDTO -> { + map.put(optionDTO.getValue(), temp.toString().contains(optionDTO.getValue()) ? "是" : "否"); + }); + } else if ("select".equals(v.getItemType())) { + v.getOptions().forEach(optionDTO -> { + if (optionDTO.getLabel().equals(temp.toString())){ + map.put(k, optionDTO.getLabel()); + } + }); + } } } - }); + } if ("ic_resi_user".equals(baseTableName)) { resiId = (String) map.get("ID"); } @@ -1038,6 +1170,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl - + 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 12b430d2f3..b3fce33028 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 @@ -44,8 +44,36 @@ select * from ${subTableName} where del_flag='0' and IC_RESI_USER=#{icResiUserId} and customer_id=#{customerId} + + + ic_resi_user.DEL_FLAG = '0' + and ic_resi_user.customer_id=#{customerId} + and (ic_resi_user.AGENCY_ID =#{currentStaffAgencyId} or ic_resi_user.pids like concat(#{staffOrgPath},'%')) + + + + + + + and ${subCondition.tableName}.${subCondition.columnName} = #{subCondition.columnValue[0]} + + + + + + and ${subCondition.tableName}.${subCondition.columnName} like concat('%',#{subCondition.columnValue[0]},'%') + + + + + and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]} + + + + + - + ic_resi_user.DEL_FLAG = '0' and ic_resi_user.customer_id=#{customerId} @@ -54,11 +82,15 @@ - and ${subCondition.tableName}.${subCondition.columnName} = #{subCondition.columnValue[0]} + + and ${subCondition.tableName}.${subCondition.columnName} = #{subCondition.columnValue[0]} + - and ${subCondition.tableName}.${subCondition.columnName} like concat('%',#{subCondition.columnValue[0]},'%') + + and ${subCondition.tableName}.${subCondition.columnName} like concat('%',#{subCondition.columnValue[0]},'%') + @@ -73,12 +105,10 @@ + + + + \ No newline at end of file