From 05bb67360838c697972d475913f1f2485dcfb4bf Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 28 Dec 2020 10:17:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=AE=E9=A2=98-=E5=85=A8=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataaggre/constant/IssueConstant.java | 6 + .../govissue/result/IssueListResultDTO.java | 13 +++ .../controller/GovIssueController.java | 3 +- .../dataaggre/dao/govissue/IssueDao.java | 10 +- .../dao/govorg/CustomerAgencyDao.java | 8 ++ .../dataaggre/dao/govproject/ProjectDao.java | 22 +++- .../govissue/impl/GovIssueServiceImpl.java | 108 ++++++++++++++++-- .../service/govorg/GovOrgService.java | 8 ++ .../govorg/impl/GovOrgServiceImpl.java | 11 ++ .../service/govproject/GovProjectService.java | 13 +++ .../impl/GovProjectServiceImpl.java | 35 ++++++ .../mapper/govissue/IssueApplicationDao.xml | 15 ++- .../resources/mapper/govissue/IssueDao.xml | 15 +++ .../mapper/govorg/CustomerAgencyDao.xml | 5 + .../mapper/govproject/ProjectDao.xml | 44 +++++++ 15 files changed, 304 insertions(+), 12 deletions(-) diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/IssueConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/IssueConstant.java index ea3558a830..12b0cdb413 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/IssueConstant.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/IssueConstant.java @@ -15,4 +15,10 @@ public interface IssueConstant { String ISSUE_STATUS_AUDITING = "auditing"; String ISSUE_STATUS_REJECTED = "rejected"; + String GET_AGENCY_FAILURE = "根据userId查询组织ID失败......"; + + String GET_GRID_LIST_FAILURE = "获取网格ID列表失败......"; + + String NOT_EXISTS_PROJECT_INFO = "未查询到项目信息......"; + } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/result/IssueListResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/result/IssueListResultDTO.java index 240b5e5dc0..5f748ba6bb 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/result/IssueListResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/result/IssueListResultDTO.java @@ -3,6 +3,8 @@ package com.epmet.dataaggre.dto.govissue.result; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; /** * @Author zxc @@ -18,6 +20,11 @@ public class IssueListResultDTO implements Serializable { */ private String issueId; + /** + * 项目ID + */ + private String projectId; + /** * 议题标题 */ @@ -88,6 +95,11 @@ public class IssueListResultDTO implements Serializable { */ private Long shiftProjectTime; + /** + * 当前处理部门 + */ + private List currentDepartment; + public IssueListResultDTO() { this.issueId = ""; this.issueTitle = ""; @@ -104,5 +116,6 @@ public class IssueListResultDTO implements Serializable { this.topicId = ""; this.auditingTime = 0L; this.shiftProjectTime = 0L; + this.currentDepartment = new ArrayList<>(); } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovIssueController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovIssueController.java index a7c52364ab..223453b71d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovIssueController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovIssueController.java @@ -1,8 +1,6 @@ package com.epmet.dataaggre.controller; import com.epmet.commons.tools.annotation.LoginUser; -import com.epmet.commons.tools.annotation.RequirePermission; -import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -38,6 +36,7 @@ public class GovIssueController { * @date 2020/12/25 下午2:37 */ @PostMapping("allissuelist") +// @RequirePermission(requirePermission = RequirePermissionEnum.WORK_HOT_ISSUE_ALL) public Result allIssueList(@RequestBody AllIssueFormDTO formDTO, @LoginUser TokenDto tokenDto){ ValidatorUtils.validateEntity(formDTO, AllIssueFormDTO.AllIssueForm.class); return new Result().ok(govIssueService.allIssueList(formDTO,tokenDto)); 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 53873c9161..d09dc05d55 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 @@ -37,13 +37,21 @@ import java.util.List; public interface IssueDao extends BaseDao { /** - * @Description 查询议题 + * @Description 查询议题【表决中、已关闭】 * @Param gridIds * @author zxc * @date 2020/12/25 下午2:19 */ List issueStatusClosedOrVoting(@Param("gridIds") List gridIds, @Param("issueStatus")String issueStatus); + /** + * @Description 查询已转项目议题 + * @Param gridIds + * @author zxc + * @date 2020/12/25 下午5:27 + */ + List issueStatusShiftProject(@Param("gridIds") List gridIds); + /** * @Description 查询网格列表下表决中的议题列表 * @author sun diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java index de8b19b050..445baf2477 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java @@ -39,4 +39,12 @@ public interface CustomerAgencyDao extends BaseDao { * @Description 递归查询当前机关的下一级机关列表 **/ List selectAllSubAgency(@Param("subPids") String subPids); + + /** + * @Description 根据userId查询组织ID + * @Param userId + * @author zxc + * @date 2020/12/25 下午4:55 + */ + String getAgencyIdByUserId(@Param("userId") String userId); } \ 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 282ed2f409..49dc997320 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,8 +18,12 @@ package com.epmet.dataaggre.dao.govproject; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; import com.epmet.dataaggre.entity.govproject.ProjectEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 项目表 @@ -29,5 +33,21 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ProjectDao extends BaseDao { - + + /** + * @Description 查询项目信息【已关闭】 + * @Param issueIds + * @author zxc + * @date 2020/12/25 下午5:47 + */ + List selectProjectInfoClosed(@Param("issueIds") List issueIds); + + /** + * @Description 查询项目信息【处理中】 + * @Param issueIds + * @author zxc + * @date 2020/12/28 上午9:26 + */ + List selectProjectInfoPending(@Param("issueIds") List issueIds); + } \ No newline at end of file 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 555524d37b..92516cd245 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 @@ -2,8 +2,10 @@ package com.epmet.dataaggre.service.govissue.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dataaggre.constant.DataSourceConstant; +import com.epmet.dataaggre.constant.IssueConstant; import com.epmet.dataaggre.dao.govissue.IssueApplicationDao; import com.epmet.dataaggre.dao.govissue.IssueDao; import com.epmet.dataaggre.dto.govissue.form.AllIssueFormDTO; @@ -15,16 +17,16 @@ import com.epmet.dataaggre.dto.govorg.result.GridInfoResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO; import com.epmet.dataaggre.service.govissue.GovIssueService; import com.epmet.dataaggre.service.govorg.GovOrgService; +import com.epmet.dataaggre.service.govproject.GovProjectService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -42,6 +44,8 @@ public class GovIssueServiceImpl implements GovIssueService { private IssueApplicationDao issueApplicationDao; @Autowired private GovOrgService govOrgService; + @Autowired + private GovProjectService govProjectService; /** * @Description 按组织查询所有议题 @@ -53,9 +57,42 @@ public class GovIssueServiceImpl implements GovIssueService { @Override public AllIssueResultDTO allIssueList(AllIssueFormDTO formDTO, TokenDto tokenDto) { if (CollectionUtils.isEmpty(formDTO.getGridIdList())){ - + String userId = govOrgService.getAgencyIdByUserId(tokenDto.getUserId()); + if (StringUtils.isBlank(userId)){ + throw new RenException(IssueConstant.GET_AGENCY_FAILURE); + } + List gridList = govOrgService.gridList(userId); + if (CollectionUtils.isEmpty(gridList)){ + throw new RenException(IssueConstant.GET_GRID_LIST_FAILURE); + } + formDTO.setGridIdList(gridList.stream().map(m -> m.getGridId()).collect(Collectors.toList())); } - return null; + // xx街道-xx网格 + List gridsInfoList = govOrgService.gridListByIds(formDTO.getGridIdList()); + AllIssueResultDTO result = new AllIssueResultDTO(); + switch (formDTO.getIssueType()){ + case IssueConstant.ISSUE_STATUS_AUDITING: + List resultAuditing = issueStatusAuditing(formDTO); + result.setIssueList(resultAuditing); + result.setTotal(resultAuditing.size()); + break; + case IssueConstant.ISSUE_STATUS_REJECTED: + List resultRejected = issueStatusRejected(formDTO); + result.setIssueList(resultRejected); + result.setTotal(resultRejected.size()); + break; + case IssueConstant.ISSUE_STATUS_SHIFT_PROJECT: + List resultShiftProject = issueStatusShiftProject(formDTO); + result.setIssueList(resultShiftProject); + result.setTotal(resultShiftProject.size()); + break; + default: + List resultClosedOrVoting = issueStatusClosedOrVoting(formDTO); + result.setIssueList(resultClosedOrVoting); + result.setTotal(resultClosedOrVoting.size()); + } + result.getIssueList().forEach(issue -> gridsInfoList.stream().filter(g -> issue.getGridId().equals(g.getGridId())).forEach(g -> issue.setBelongsGridName(g.getGridName()))); + return result; } /** @@ -82,8 +119,65 @@ public class GovIssueServiceImpl implements GovIssueService { if (CollectionUtils.isEmpty(formDTO.getGridIdList())){ return new ArrayList<>(); } -// PageInfo result = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> .issueStatusClosed(formDTO.getGridIdList())); - return null; + PageInfo result = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> issueApplicationDao.issueStatusRejected(formDTO.getGridIdList())); + List list = result.getList(); + if (CollectionUtils.isEmpty(list)){ + return new ArrayList<>(); + } + List resultDTOs = new ArrayList<>(); + Map> groupByTopic = list.stream().collect(Collectors.groupingBy(IssueListResultDTO::getTopicId)); + groupByTopic.forEach((topicId,l) -> { + IssueListResultDTO issueListResultDTO = l.stream().max(Comparator.comparing(IssueListResultDTO::getRejectedTime)).get(); + resultDTOs.add(issueListResultDTO); + }); + List collect = resultDTOs.stream().sorted(Comparator.comparing(IssueListResultDTO::getRejectedTime).reversed()).collect(Collectors.toList()); + return collect; + } + + /** + * @Description 审核中的议题走此方法 + * @Param formDTO + * @author zxc + * @date 2020/12/25 下午4:34 + */ + public List issueStatusAuditing(AllIssueFormDTO formDTO){ + if (CollectionUtils.isEmpty(formDTO.getGridIdList())){ + return new ArrayList<>(); + } + PageInfo result = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> issueApplicationDao.issueStatusAuditing(formDTO.getGridIdList())); + return result.getList(); + } + + /** + * @Description 议题状态为转项目时走此方法 + * @Param formDTO + * @author zxc + * @date 2020/12/28 上午9:13 + */ + public List issueStatusShiftProject(AllIssueFormDTO formDTO){ + if (CollectionUtils.isEmpty(formDTO.getGridIdList())){ + return new ArrayList<>(); + } + PageInfo result = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> issueDao.issueStatusShiftProject(formDTO.getGridIdList())); + List list = result.getList(); + if (CollectionUtils.isEmpty(list)){ + return new ArrayList<>(); + } + List issueIds = list.stream().map(m -> m.getIssueId()).collect(Collectors.toList()); + List resultDTOS = govProjectService.selectProjectInfo(issueIds); + if (CollectionUtils.isEmpty(resultDTOS)){ + throw new RenException(IssueConstant.NOT_EXISTS_PROJECT_INFO); + } + list.forEach(l -> { + resultDTOS.forEach(r -> { + if (l.getIssueId().equals(r.getIssueId())){ + l.setClosedReason(r.getClosedReason()); + l.setStatus(r.getStatus()); + l.setCurrentDepartment(r.getCurrentDepartment()); + } + }); + }); + return list; } /** diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java index e0a35f3558..f1890edfab 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java @@ -34,4 +34,12 @@ public interface GovOrgService { */ List gridListByIds(List gridIdList); + /** + * @Description 根据userId查询组织ID + * @Param userId + * @author zxc + * @date 2020/12/25 下午4:53 + */ + String getAgencyIdByUserId(String userId); + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index d918252d4f..b734c4542d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -109,5 +109,16 @@ public class GovOrgServiceImpl implements GovOrgService { return customerGridDao.selectGridByIds(gridIdList); } + /** + * @Description 根据userId查询组织ID + * @Param userId + * @author zxc + * @date 2020/12/25 下午4:53 + */ + @Override + public String getAgencyIdByUserId(String userId) { + return customerAgencyDao.getAgencyIdByUserId(userId); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java index ba0c8dd32e..82f72239b4 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java @@ -1,8 +1,21 @@ package com.epmet.dataaggre.service.govproject; +import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; + +import java.util.List; + /** * @Author zxc * @DateTime 2020/12/24 下午5:50 */ public interface GovProjectService { + + /** + * @Description 查询项目信息 + * @Param issueIds + * @author zxc + * @date 2020/12/25 下午5:46 + */ + List selectProjectInfo(List issueIds); + } 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 0d56e0d9df..64a4130cfe 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 @@ -2,8 +2,15 @@ package com.epmet.dataaggre.service.govproject.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.dataaggre.constant.DataSourceConstant; +import com.epmet.dataaggre.dao.govproject.ProjectDao; +import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; import com.epmet.dataaggre.service.govproject.GovProjectService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; /** * @Author zxc @@ -12,4 +19,32 @@ import org.springframework.stereotype.Service; @Service @DataSource(DataSourceConstant.GOV_PROJECT) public class GovProjectServiceImpl implements GovProjectService { + + @Autowired + private ProjectDao projectDao; + + /** + * @Description 查询项目信息 + * @Param issueIds + * @author zxc + * @date 2020/12/25 下午5:47 + */ + @Override + public List selectProjectInfo(List issueIds) { + if (CollectionUtils.isEmpty(issueIds)){ + return new ArrayList<>(); + } + List closedResult = projectDao.selectProjectInfoClosed(issueIds); + List pendingResult = projectDao.selectProjectInfoPending(issueIds); + if (CollectionUtils.isEmpty(closedResult)){ + if (CollectionUtils.isEmpty(pendingResult))return new ArrayList<>(); + return pendingResult; + } + if (CollectionUtils.isEmpty(pendingResult)){ + if (CollectionUtils.isEmpty(closedResult))return new ArrayList<>(); + return closedResult; + } + closedResult.addAll(pendingResult); + return closedResult; + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueApplicationDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueApplicationDao.xml index ef2db73c1d..60caa8ece5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueApplicationDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueApplicationDao.xml @@ -5,7 +5,20 @@ 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 405981e94f..70db92c632 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 @@ -21,6 +21,21 @@ + + + + + + \ No newline at end of file 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 e44cfb4d03..e8b30733e1 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 @@ -3,4 +3,48 @@ + + + + + + + + + + + + + + \ No newline at end of file