From 5ec25107aec365f306fbbbf865dba95812d1a83a Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 9 Dec 2021 15:14:14 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=A1=B9=E7=9B=AE=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E5=88=86=E6=9E=90=E3=80=91=E5=88=86=E7=B1=BB=E4=B8=8B=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../govorg/result/GridsInfoListResultDTO.java | 6 +- .../dto/govproject/ResiEventDTO.java | 45 +++++++++++ .../form/CategoryProjectFormDTO.java | 5 ++ .../result/CategoryProjectResultDTO.java | 11 ++- .../result/ProjectStatusListResultDTO.java | 2 + .../controller/GovProjectController.java | 3 +- .../dataaggre/dao/govissue/IssueDao.java | 2 +- .../dataaggre/dao/govproject/ProjectDao.java | 31 +++++++- .../service/govissue/GovIssueService.java | 4 +- .../govissue/impl/GovIssueServiceImpl.java | 4 +- .../impl/GovProjectServiceImpl.java | 75 +++++++++++++++++- .../resources/mapper/govissue/IssueDao.xml | 8 +- .../mapper/govorg/CustomerGridDao.xml | 3 +- .../mapper/govproject/ProjectDao.xml | 76 ++++++++++++++++++- 14 files changed, 252 insertions(+), 23 deletions(-) create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventDTO.java diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridsInfoListResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridsInfoListResultDTO.java index f25721539f..571195cd86 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridsInfoListResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridsInfoListResultDTO.java @@ -24,8 +24,12 @@ public class GridsInfoListResultDTO implements Serializable { private String gridId; /** - * 网格名称 + * 组织-网格名称 */ private String gridName; + /** + * 网格名称 + */ + private String name; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventDTO.java new file mode 100644 index 0000000000..4f0e39c907 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventDTO.java @@ -0,0 +1,45 @@ +/** + * 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.dataaggre.dto.govproject; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 居民报事表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-08-03 + */ +@Data +public class ResiEventDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + private String projectId; + + private String reportUserId; + + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/CategoryProjectFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/CategoryProjectFormDTO.java index 38335e8223..07588e5e3c 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/CategoryProjectFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/CategoryProjectFormDTO.java @@ -33,6 +33,11 @@ public class CategoryProjectFormDTO implements Serializable { private Integer pageSize = 20; //是否分页(是:true 否:false) private Boolean isPage = true; + //明天的dateId值 + private String toDateId; + private String customerId; + private List categoreCodeList; + public interface Category extends CustomerClientShowGroup { } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java index b6cd54a88c..33199b3854 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java @@ -1,5 +1,6 @@ package com.epmet.dataaggre.dto.govproject.result; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -26,7 +27,7 @@ public class CategoryProjectResultDTO implements Serializable { private String projectId; //项目编码[目前没这个功能 默认为空] private String projectCode = ""; - //一级分类Id集合 + //一级分类Code集合 private List categoryCodes; //一级分类名称集合 private List categoryNames; @@ -42,10 +43,14 @@ public class CategoryProjectResultDTO implements Serializable { private String title; //转项目时间 private String time; - //当前人员是否处理:未处理unhandled,已处理handle - private String isHandle; //小程序居民端话题或事件创建人【立项项目此值为空】 private String userId; + //分类对应的所有上级,英文逗号隔开【目前分类只有两级,所以这个字段值其实就是一类的id值】 + @JsonIgnore + private String categoryPids; + //二级分类code + @JsonIgnore + private String categoryCode; } } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectStatusListResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectStatusListResultDTO.java index c8c895e549..9d2bedab75 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectStatusListResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectStatusListResultDTO.java @@ -24,5 +24,7 @@ public class ProjectStatusListResultDTO implements Serializable { private Integer longitude; //纬度 private Integer dimension; + //项目标题 + private String title; } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java index 3039785f12..3d70bf2b96 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java @@ -102,8 +102,9 @@ public class GovProjectController { * @author sun */ @PostMapping("categoryprojectlist") - public Result categoryProjectList(@RequestBody CategoryProjectFormDTO formDTO) { + public Result categoryProjectList(@LoginUser TokenDto tokenDto, @RequestBody CategoryProjectFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, CategoryProjectFormDTO.Category.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); return new Result().ok(govProjectService.categoryProjectList(formDTO)); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govissue/IssueDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govissue/IssueDao.java index 6727a2d2d4..17d16fd72d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govissue/IssueDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govissue/IssueDao.java @@ -80,5 +80,5 @@ public interface IssueDao extends BaseDao { * @Description 查询客户下分类信息 * @author sun **/ - List getCategoryList(@Param("customerId") String customerId); + List getCategoryList(@Param("customerId") String customerId, @Param("level") String level, @Param("isDisable") String isDisable); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java index 2a433d58d7..05071b61e5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java @@ -18,14 +18,14 @@ package com.epmet.dataaggre.dao.govproject; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dataaggre.dto.govproject.result.IssueProjectCategory; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; import com.epmet.dataaggre.dto.govproject.ProjectDTO; +import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO; +import com.epmet.dataaggre.dto.govproject.ResiEventDTO; import com.epmet.dataaggre.dto.govproject.form.AllProjectFormDTO; +import com.epmet.dataaggre.dto.govproject.form.CategoryProjectFormDTO; import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; -import com.epmet.dataaggre.dto.govproject.result.ProjectDistributionResultDTO; -import com.epmet.dataaggre.dto.govproject.result.ProjectInfoDTO; -import com.epmet.dataaggre.dto.govproject.result.ProjectStatusListResultDTO; +import com.epmet.dataaggre.dto.govproject.result.*; import com.epmet.dataaggre.entity.govproject.ProjectEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -81,4 +81,27 @@ public interface ProjectDao extends BaseDao { List getProjectStatusList(ProjectTotalFormDTO formDTO); List selectProjectIssueCategory(@Param("issueIds") List issueIds); + + /** + * @Description 查询组织截止某一天的某个分类下的项目列表 + * @author sun + */ + List categoryProjectList(CategoryProjectFormDTO formDTO); + + /** + * @Description 查询项目对应的所有分类信息 + * @author sun + */ + List getCategoryList(@Param("projectIds") List projectIds); + + /** + * @Description 查询来源事件的项目居民端创建人信息 + * @author sun + */ + List getEventList(@Param("projectIds") List projectIds); + /** + * @Description 查询来源话题的项目居民端创建人信息 + * @author sun + */ + List getTopicUser(@Param("projectIds") List projectIds); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/GovIssueService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/GovIssueService.java index 65e768ccf5..3e87ea18d3 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/GovIssueService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/GovIssueService.java @@ -48,8 +48,8 @@ public interface GovIssueService { List selectShiftProjectIssueList(String customerId,String gridId,Integer pageNo,Integer pageSize); /** - * @Description 查询客户下一级分类信息 + * @Description 查询客户下分类信息 * @author sun **/ - List categoryList(String customerId); + List categoryList(String customerId, String level, String isDisable); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/impl/GovIssueServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/impl/GovIssueServiceImpl.java index db987e0b5c..5556d2d3f0 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/impl/GovIssueServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/impl/GovIssueServiceImpl.java @@ -329,8 +329,8 @@ public class GovIssueServiceImpl implements GovIssueService { * @author sun **/ @Override - public List categoryList(String customerId) { - return issueDao.getCategoryList(customerId); + public List categoryList(String customerId, String level, String isDisable) { + return issueDao.getCategoryList(customerId, level, isDisable); } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java index 1b665e2888..21c18f8ba2 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java @@ -15,7 +15,10 @@ import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO; import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO; import com.epmet.dataaggre.dto.govissue.result.IssueInfoDTO; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; +import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO; import com.epmet.dataaggre.dto.govproject.ProjectDTO; +import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO; +import com.epmet.dataaggre.dto.govproject.ResiEventDTO; import com.epmet.dataaggre.dto.govproject.form.*; import com.epmet.dataaggre.dto.govproject.result.*; import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO; @@ -28,6 +31,8 @@ import com.epmet.dataaggre.service.resigroup.ResiGroupService; import com.epmet.dto.form.TimestampIntervalFormDTO; import com.epmet.dto.form.WorkMinuteFormDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -330,7 +335,7 @@ public class GovProjectServiceImpl implements GovProjectService { @Override public List projectStatusList(ProjectTotalFormDTO formDTO) { //所选日期后一天的dateId值 - formDTO.setYeDateId(DateUtils.dateOrmonthId(formDTO.getDateId(), "date", 1)); + formDTO.setToDateId(DateUtils.dateOrmonthId(formDTO.getDateId(), "date", 1)); //1.查询组织下截止到dateId的某个状态的项目列表 List resultList = projectDao.getProjectStatusList(formDTO); return resultList; @@ -344,7 +349,7 @@ public class GovProjectServiceImpl implements GovProjectService { public List projectCategoryList(ProjectCategoryTotalFormDTO formDTO) { List resultList = new ArrayList<>(); //1.查询客户下一级分类信息 - List categoryList = govIssueService.categoryList(formDTO.getCustomerId()); + List categoryList = govIssueService.categoryList(formDTO.getCustomerId(), "1", "enable"); //2.按dateId查询组织下一级分类项目总数 List list = evaluationIndexService.projectCategoryList(formDTO); @@ -372,7 +377,71 @@ public class GovProjectServiceImpl implements GovProjectService { */ @Override public CategoryProjectResultDTO categoryProjectList(CategoryProjectFormDTO formDTO) { - return null; + CategoryProjectResultDTO resultDTO = new CategoryProjectResultDTO(); + //所选日期后一天的dateId值 + formDTO.setToDateId(DateUtils.dateOrmonthId(formDTO.getDateId(), "date", 1)); + //1.查询客户下分类信息 + List categoryList = govIssueService.categoryList(formDTO.getCustomerId(), null, null); + List categoreCodeList = categoryList.stream().map(ca -> formDTO.getCategoryCode().equals(ca.getParentCategoryCode()) ? ca.getCategoryCode() : "").collect(Collectors.toList()); + formDTO.setCategoreCodeList(categoreCodeList); + + //2.查询组织及下级截止某一天的某个一级分类下的项目列表 + PageInfo result = + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()).doSelectPageInfo(() -> projectDao.categoryProjectList(formDTO)); + if (org.springframework.util.CollectionUtils.isEmpty(result.getList())) { + return resultDTO; + } + resultDTO.setTotal((int) result.getTotal()); + + //3.查询已有项目列表涉及的所有分类信息【一个项目存在多个一级分类下的二级分类】 + List projectIds = result.getList().stream().map(CategoryProjectResultDTO.Project::getProjectId).collect(Collectors.toList()); + List list = projectDao.getCategoryList(projectIds); + + //4.查询网格信息【楼院小组类项目、上报事件且上报给网格的项目才存在网格Id】 + List gridIds = result.getList().stream().map(CategoryProjectResultDTO.Project::getGridId).collect(Collectors.toList()); + gridIds = gridIds.stream().distinct().collect(Collectors.toList()); + List gridList = govOrgService.gridListByIds(gridIds); + + //5.查询来源议题、事件的项目居民端创建人userId + List eventUser = projectDao.getEventList(projectIds); + List topicUser = projectDao.getTopicUser(projectIds); + + //5.封装数据 + result.getList().forEach(re -> { + //项目涉及网格信息 + gridList.forEach(g -> { + if (StringUtils.isNotBlank(re.getGridId()) && re.getGridId().equals(g.getGridId())) { + re.setGridName(g.getName()); + } + }); + //项目涉及分类信息【一个项目涉及多个一级分类】 + List caId = new ArrayList<>(); + List caCode = new ArrayList<>(); + list.forEach(ca -> { + if (ca.getProjectId().equals(re.getProjectId())) { + caId.add(ca.getCategoryPids()); + caCode.add(ca.getCategoryCode()); + } + }); + List caName = new ArrayList<>(); + categoryList.forEach(ca -> caId.stream().filter(li -> ca.getId().equals(li)).forEach(s -> caName.add(ca.getCategoryName()))); + re.setCategoryCodes(caCode); + re.setCategoryNames(caName); + //项目来源话题、事件的创建人信息 + eventUser.forEach(ev -> { + if (re.getProjectId().equals(ev.getProjectId())) { + re.setUserId(ev.getReportUserId()); + } + }); + topicUser.forEach(to -> { + if (re.getProjectId().equals(to.getProjectId())) { + re.setUserId(to.getUserId()); + } + }); + }); + + resultDTO.setList(result.getList()); + return resultDTO; } /** diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml index 239e846aa9..90ecda4b20 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml @@ -131,8 +131,12 @@ FROM issue_project_category_dict WHERE del_flag = 0 AND customer_id = #{customerId} - AND category_type = '1' - AND is_disable = 'enable' + + AND category_type = #{level} + + + AND is_disable = #{isDisable} + ORDER BY category_code diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml index fde243eafa..60350c7a1e 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml @@ -22,7 +22,8 @@ cg.grid_name, CONCAT(ca.organization_name,'-',cg.grid_name) ) AS 'gridName', - cg.customer_id AS 'customerId' + cg.customer_id AS 'customerId', + cg.grid_name AS 'name' FROM customer_grid cg INNER JOIN customer_agency ca ON cg.pid = ca.id diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml index fd2b6e44e1..cec83dea7f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml @@ -163,17 +163,87 @@ origin "origin", `status` "status", locate_longitude "longitude", - locate_dimension dimension + locate_dimension dimension, + title title FROM project WHERE del_flag = '0' - AND agency_id = #{agencyId} + AND org_id_path LIKE CONCAT('%', #{agencyId}, '%') AND `status` = #{status} - AND created_time DATE_FORMAT(#{dateId}, '%Y-%m-%d') + AND created_time DATE_FORMAT(#{toDateId}, '%Y-%m-%d') ORDER BY created_time DESC + + + + + + + +