From b294d386b19d0f71f7c44579e5838bd7f2b90f7a Mon Sep 17 00:00:00 2001 From: wangchao Date: Thu, 14 May 2020 12:09:38 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=A4=E7=BB=84=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E3=80=81=E8=AE=AE=E9=A2=98=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/constant/NumConstant.java | 1 + .../dto/form/CommonIssueListFormDTO.java | 41 +++++ .../form/IssueShiftedFromTopicFormDTO.java | 101 ++++++++++++ .../dto/result/ClosedIssueListResultDTO.java | 36 +++++ .../dto/result/VotingIssueListResultDTO.java | 36 +++++ .../com/epmet/controller/IssueController.java | 16 ++ .../src/main/java/com/epmet/dao/IssueDao.java | 8 + .../java/com/epmet/dao/IssueProcessDao.java | 11 +- .../epmet/service/IssueProcessService.java | 8 + .../java/com/epmet/service/IssueService.java | 31 ++++ .../service/impl/IssueProcessServiceImpl.java | 12 ++ .../epmet/service/impl/IssueServiceImpl.java | 94 +++++++++++ .../java/com/epmet/utils/ModuleConstants.java | 70 ++++++++ .../src/main/resources/mapper/IssueDao.xml | 133 +++++++++++++++ .../main/resources/mapper/IssueProcessDao.xml | 79 +++++++++ .../dto/result/CommonDataFilterResultDTO.java | 41 +++++ .../controller/CustomerGridController.java | 18 ++- .../java/com/epmet/dao/CustomerGridDao.java | 8 + .../epmet/service/CustomerGridService.java | 7 + .../service/impl/CustomerGridServiceImpl.java | 16 ++ .../java/com/epmet/util/ModuleConstant.java | 15 ++ .../main/resources/mapper/CustomerGridDao.xml | 15 ++ .../dto/topic/form/CommonTopicIdFormDTO.java | 23 +++ .../topic/form/ResiTopicTurnIssueFromDTO.java | 41 +++++ .../result/ResiTopicAndGroupResultDTO.java | 36 +++++ .../ResiTopicShiftIssueInitResultDTO.java | 47 ++++++ .../resi-group/resi-group-server/pom.xml | 6 + .../modules/feign/GovIssueFeignClient.java | 29 ++++ .../modules/feign/GovOrgFeignClient.java | 18 ++- .../fallback/GovIssueFeignClientFallBack.java | 23 +++ .../fallback/GovOrgFeignClientFallBack.java | 12 +- .../epmet/modules/group/dao/ResiGroupDao.java | 9 ++ .../group/service/ResiGroupService.java | 9 ++ .../service/impl/ResiGroupServiceImpl.java | 14 ++ .../member/redis/ResiGroupMemberRedis.java | 23 +++ .../service/ResiGroupMemberService.java | 9 ++ .../impl/ResiGroupMemberServiceImpl.java | 27 +++- .../topic/controller/ResiTopicController.java | 35 +++- .../epmet/modules/topic/dao/ResiTopicDao.java | 18 +++ .../topic/dao/ResiTopicOperationDao.java | 8 + .../topic/service/ResiTopicService.java | 27 +++- .../impl/ResiTopicCommentServiceImpl.java | 95 ++++++++++- .../service/impl/ResiTopicServiceImpl.java | 152 ++++++++++++++++-- .../epmet/modules/utils/ModuleConstant.java | 49 ++++++ .../resources/mapper/group/ResiGroupDao.xml | 12 ++ .../resources/mapper/topic/ResiTopicDao.xml | 46 +++++- .../mapper/topic/ResiTopicOperationDao.xml | 62 +++++++ 47 files changed, 1585 insertions(+), 42 deletions(-) create mode 100644 epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java create mode 100644 epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java create mode 100644 epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java create mode 100644 epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java create mode 100644 epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommonDataFilterResultDTO.java create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CommonTopicIdFormDTO.java create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicAndGroupResultDTO.java create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java create mode 100644 epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/GovIssueFeignClient.java create mode 100644 epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/fallback/GovIssueFeignClientFallBack.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java index 8a55f6c7a9..5f13d2bb81 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java @@ -31,6 +31,7 @@ public interface NumConstant { int FORTY = 40; int FIFTY = 50; int ONE_HUNDRED = 100; + int ONE_THOUSAND = 1000; int MAX = 99999999; long ZERO_L = 0L; diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java new file mode 100644 index 0000000000..7759a73a21 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 政府端/居民段查看表决中议题列表传参 + * @ClassName CommonIssueListFormDTO + * @Auth wangc + * @Date 2020-05-14 09:51 + */ +@Data +public class CommonIssueListFormDTO implements Serializable { + private static final long serialVersionUID = -436147374473316845L; + + /** + * 网格Id + * */ + @NotBlank(message = "网格Id不能为空") + private String gridId; + + /** + * 页码 + * */ + @Min(1) + private Integer pageNo; + + /** + * 每页多少条 + * */ + private Integer pageSize = 20; + + /** + * 用户Id + * */ + @NotBlank(message = "用户Id不能为空") + private String userId; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java new file mode 100644 index 0000000000..c9969328bb --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java @@ -0,0 +1,101 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Date; + +/** + * @Description 话题转议题时的参数 + * @ClassName IssueShiftedFromTopicFormDTO + * @Auth wangc + * @Date 2020-05-13 09:27 + */ +@Data +public class IssueShiftedFromTopicFormDTO implements Serializable { + private static final long serialVersionUID = -5744319584210140289L; + + /** + * 话题Id + * */ + @NotBlank(message = "话题Id不能为空") + private String topicId; + + /** + * 议题名称 + * */ + @NotBlank(message = "议题名称不能为空") + private String issueTitle; + + /** + * 建议 + * */ + @NotBlank(message = "议题建议不能为空") + private String suggestion; + + /** + * 议题发起人Id + * */ + @NotBlank(message = "议题发起人Id不能为空") + private String userId; + + /** + * 客户Id + * */ + @NotBlank(message = "客户不能为空") + private String customerId; + + /** + * 网格Id + * */ + @NotBlank(message = "网格Id不能为空") + private String gridId; + + /** + * AgencyId当前话题所在机构Id + * */ + @NotBlank(message = "机关Id不能为空") + private String orgId; + + /** + * 所属机关 eg:11:22:33(本机关以及上级所有机关ID) + * */ + @NotBlank(message = "所属机关全路径不能为空") + private String orgIdPath; + + /** + * 当前话题所在网格名称 - 对应议题流程的处理部门 + * */ + @NotBlank(message = "网格名称不能为空") + private String orgName; + + /** + * 议题创建时间 + * */ + @NotBlank(message = "议题创建时间不能为空") + private Date createdTime; + + /** + * 小组名称 - 对应议题流程的小组名称(文案) + * */ + @NotBlank(message = "小组名称不能为空") + private String groupName; + + /** + * 话题发起人名称 -对应议题流程的话题发起人(文案) + * */ + @NotBlank(message = "话题发起人不能为空") + private String topicAuthor; + + /** + * 议题发起人(组长)名称 - 对应议题流程的组长名称(文案) + * */ + @NotBlank(message = "组长不能为空") + private String issueAuthor; + + /** + * 应表决数 + * */ + private Integer votableCount; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java new file mode 100644 index 0000000000..9082c8866e --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java @@ -0,0 +1,36 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @ClassName ClosedIssueListResultDTO + * @Auth wangc + * @Date 2020-05-14 10:13 + */ +@Data +public class ClosedIssueListResultDTO implements Serializable { + private static final long serialVersionUID = -132155225850638716L; + + /** + * 议题id + * */ + private String issueId; + + /** + * 议题标题 + * */ + private String issueTitle; + + /** + * 议题关闭时间 时间戳 + * */ + private Long issueClosedTime; + + /** + * 解决方案 + * */ + private String solution; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java new file mode 100644 index 0000000000..47367a99f9 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java @@ -0,0 +1,36 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 政府端/居民段查看表决中议题列表返参 + * @ClassName VotingIssueListResultDTO + * @Auth wangc + * @Date 2020-05-14 10:04 + */ +@Data +public class VotingIssueListResultDTO implements Serializable { + private static final long serialVersionUID = -7134055957167447949L; + + /** + * 议题发布时间 + * */ + private Long issuePublishTime; + + /** + * 议题Id + * */ + private String issueId; + + /** + * 议题标题 + * */ + private String issueTitle; + + /** + * 议题处理方式,建议,展示在列表中 + * */ + private String suggestion; +} diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java index 05cdb50892..e12f1f38bb 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java @@ -1,9 +1,13 @@ package com.epmet.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; import com.epmet.dto.form.IssueDetailFormDTO; +import com.epmet.dto.form.IssueShiftedFromTopicFormDTO; import com.epmet.dto.result.IssueResultDTO; import com.epmet.service.IssueService; import org.springframework.beans.factory.annotation.Autowired; @@ -36,5 +40,17 @@ public class IssueController { return new Result().ok(issueService.detail(issueDetail)); } + /** + * @Description 话题转议题 供群组话题服务调用 + * @param issueShiftedFromTopicFormDTO + * @author wangc + * @date 2020.05.13 17:19 + **/ + @PostMapping(value = "topicshiftissue") + public Result issueShiftedToTopic(@RequestBody IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO){ + ValidatorUtils.validateEntity(issueShiftedFromTopicFormDTO); + return new Result().ok(issueService.issueShiftedToTopic(issueShiftedFromTopicFormDTO)); + } + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java index 8c601bd3ca..58e934f162 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IssueDTO; import com.epmet.dto.form.IssueDetailFormDTO; import com.epmet.dto.result.IssueResultDTO; import com.epmet.entity.IssueEntity; @@ -40,4 +41,11 @@ public interface IssueDao extends BaseDao { */ IssueResultDTO issueDetail(IssueDetailFormDTO formDTO); + /** + * @Description 新增一条议题 + * @param issueDTO + * @author wangc + * @date 2020.05.13 15:46 + **/ + int insertOne(IssueDTO issueDTO); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProcessDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProcessDao.java index 26603169ae..2ad711fd01 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProcessDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProcessDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IssueProcessDTO; import com.epmet.entity.IssueProcessEntity; import org.apache.ibatis.annotations.Mapper; @@ -29,5 +30,13 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface IssueProcessDao extends BaseDao { - + + /** + * @Description 新增议题流程 议题发声状态变更,都要新增一条流程记录 + * @param issueProcessDTO + * @author wangc + * @date 2020.05.13 15:55 + **/ + int insertOne(IssueProcessDTO issueProcessDTO); + } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProcessService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProcessService.java index fa285655aa..7a0de275b2 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProcessService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProcessService.java @@ -92,4 +92,12 @@ public interface IssueProcessService extends BaseService { * @date 2020-05-11 */ void delete(String[] ids); + + /** + * @Description 议题流程新增记录 + * @param issueProcessDTO + * @author wangc + * @date 2020.05.13 16:42 + **/ + int insertOne(IssueProcessDTO issueProcessDTO); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java index 7890e150fa..8282eb56a6 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java @@ -1,10 +1,16 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.dto.form.CommonIssueListFormDTO; import com.epmet.dto.form.IssueDetailFormDTO; +import com.epmet.dto.form.IssueShiftedFromTopicFormDTO; +import com.epmet.dto.result.ClosedIssueListResultDTO; import com.epmet.dto.result.IssueResultDTO; +import com.epmet.dto.result.VotingIssueListResultDTO; import com.epmet.entity.IssueEntity; +import java.util.List; + /** * @Author zxc * @CreateTime 2020/5/11 9:44 @@ -19,4 +25,29 @@ public interface IssueService extends BaseService { */ IssueResultDTO detail(IssueDetailFormDTO issueDetail); + /** + * @Description 话题转为议题入口 返回生成的议题Id + * @param issueShiftedFromTopicFormDTO IssueShiftedFromTopicFormDTO.class + * @author wangc + * @date 2020.05.13 16:08 + **/ + String issueShiftedToTopic(IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO); + + /** + * @Description 表决中列表 + * @param issueListForm + * @return List + * @author wangc + * @date 2020.05.14 10:13 + **/ + List votingList(CommonIssueListFormDTO issueListForm); + + /** + * @Description 已关闭列表 + * @param issueListForm + * @return List + * @author wangc + * @date 2020.05.14 10:33 + **/ + List closedList(CommonIssueListFormDTO issueListForm); } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java index fad2ebfb01..99b507d9b6 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java @@ -101,4 +101,16 @@ public class IssueProcessServiceImpl extends BaseServiceImpl implements IssueService { + protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class); + @Autowired private IssueDao issueDao; + @Autowired + private IssueProcessService issueProcessService; + + @Autowired + private IssueVoteStatisticalService issueVoteStatisticalService; + /** * @Description 议题详情 * @param issueDetail @@ -31,4 +58,71 @@ public class IssueServiceImpl extends BaseServiceImpl imp IssueResultDTO issueResult = issueDao.issueDetail(issueDetail); return issueResult; } + + /** + * @Description 话题转为议题入口 返回生成的议题Id + * @param issueShiftedFromTopicFormDTO IssueShiftedFromTopicFormDTO.class + * @author wangc + * @date 2020.05.13 16:08 + **/ + @Override + @Transactional(rollbackFor = Exception.class) + public String issueShiftedToTopic(IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO) { + //1.新增议题 + IssueDTO issueDTO = ConvertUtils.sourceToTarget(issueShiftedFromTopicFormDTO,IssueDTO.class); + issueDTO.setCreatedBy(issueShiftedFromTopicFormDTO.getUserId()); + issueDTO.setSourceType(ModuleConstants.ISSUE_FROM_TOPIC); + issueDTO.setSourceId(issueShiftedFromTopicFormDTO.getTopicId()); + issueDTO.setIssueStatus(ModuleConstants.ISSUE_STATUS_VOTING); + issueDTO.setDecidedTime(issueShiftedFromTopicFormDTO.getCreatedTime()); + int issueAffectedRow = baseDao.insertOne(issueDTO); + if(issueAffectedRow == 1 && StringUtils.isNotBlank(issueDTO.getId())){ + //2.新增议题流程 + IssueProcessDTO issueProcessDTO = new IssueProcessDTO(); + issueProcessDTO.setIssueId(issueDTO.getId()); + issueProcessDTO.setIssueStatus(ModuleConstants.ISSUE_STATUS_VOTING); + issueProcessDTO.setOrgType(ModuleConstants.ISSUE_PROCESS_ORG_TYPE_GRID); + issueProcessDTO.setOrgId(issueShiftedFromTopicFormDTO.getGridId()); + issueProcessDTO.setOrgName(issueShiftedFromTopicFormDTO.getOrgName()); + issueProcessDTO.setCreatedBy(issueDTO.getCreatedBy()); + issueProcessDTO.setCreatedTime(issueDTO.getCreatedTime()); + issueProcessDTO.setOperationExplain(String.format(ModuleConstants.ISSUE_PROCESS_VOTING_OPERATION_EXPLAIN_TEMPLATE, + issueShiftedFromTopicFormDTO.getGroupName(), + issueShiftedFromTopicFormDTO.getTopicAuthor(), + issueShiftedFromTopicFormDTO.getIssueAuthor(), + issueShiftedFromTopicFormDTO.getIssueTitle() + )); + int issueProcessAffectedRow = issueProcessService.insertOne(issueProcessDTO); + if(issueProcessAffectedRow != NumConstant.ONE || StringUtils.isBlank(issueProcessDTO.getId())){ + logger.warn(String.format( + ModuleConstants.FAILURE_TO_ADD_ISSUE_PROCESS_LOG_TEMPLATE,issueDTO.getId())); + throw new RenException(ModuleConstants.FAILURE_TO_ADD_ISSUE_PROCESS); + } + //3.新增议题表决统计表 + IssueVoteStatisticalDTO voteStatistical = new IssueVoteStatisticalDTO(); + voteStatistical.setIssueId(issueDTO.getId()); + //应表决数,该网格下所有的居民 + voteStatistical.setVotableCount(issueShiftedFromTopicFormDTO.getVotableCount()); + issueVoteStatisticalService.save(voteStatistical); + //4.该网格下表决中议题总数量+1 + return issueDTO.getId(); + } + logger.warn(String.format( + ModuleConstants.FAILURE_TO_ADD_ISSUE_LOG_TEMPLATE,issueDTO.getId(), + issueDTO.getSourceType(), + issueDTO.getSourceId())); + throw new RenException(ModuleConstants.FAILURE_TO_ADD_ISSUE); + } + + @Override + public List votingList(CommonIssueListFormDTO issueListForm) { + return null; + } + + @Override + public List closedList(CommonIssueListFormDTO issueListForm) { + return null; + } + + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java new file mode 100644 index 0000000000..b46619710c --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java @@ -0,0 +1,70 @@ +package com.epmet.utils; + +/** + * @Author wangc + * @CreateTime 2020/5/11 9:46 + */ + +public interface ModuleConstants { + + /** + * 议题状态:表决中 + * */ + String ISSUE_STATUS_VOTING = "voting"; + + /** + * 议题状态:已转项目 + * */ + String ISSUE_STATUS_SHIFT_PROJECT = "shift_project"; + + /** + * 议题状态:已关闭 + * */ + String ISSUE_STATUS_CLOSED = "closed"; + + /** + * 议题来源:居民段话题 + * */ + String ISSUE_FROM_TOPIC = "resi_topic"; + + /** + * 议题进展-当前操作组织类型-机构 不要与数据权限混淆!!! + * */ + String ISSUE_PROCESS_ORG_TYPE_AGENCY = "agency"; + + /** + * 议题进展-当前操作组织类型-部门 不要与数据权限混淆!!! + * */ + String ISSUE_PROCESS_ORG_TYPE_DEPT = "dept"; + + /** + * 议题进展-当前操作组织类型-网格 不要与数据权限混淆!!! + * */ + String ISSUE_PROCESS_ORG_TYPE_GRID = "grid"; + + /** + * 话题转议题流程的操作文案模板 + * */ + String ISSUE_PROCESS_VOTING_OPERATION_EXPLAIN_TEMPLATE = "【%s】%s发表的话题被组长%s转为议题:【%s】"; + + /** + * 新增议题流程记录失败日志模板 + * */ + String FAILURE_TO_ADD_ISSUE_PROCESS_LOG_TEMPLATE = "新增议题流程记录失败,议题Id:【%s】"; + + /** + * 新增议题记录失败日志模板 + * */ + String FAILURE_TO_ADD_ISSUE_LOG_TEMPLATE = "新增议题记录失败,议题来源:【%s】,议题来源Id:【%s】"; + + /** + * 新增议题流程记录失败日志模板 + * */ + String FAILURE_TO_ADD_ISSUE_PROCESS = "新增议题流程记录失败】"; + + /** + * 新增议题记录失败日志模板 + * */ + String FAILURE_TO_ADD_ISSUE = "新增议题记录失败,议题来源"; + +} diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml index 212d8066dd..3530aa88d3 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml @@ -43,4 +43,137 @@ AND del_flag = 0 + + + + + SELECT replace(uuid(),'-','') AS ID + + + INSERT INTO issue + + id, + + issue_status, + + + source_type, + + + source_id, + + + close_reason, + + + resolve_type, + + + issue_title, + + + suggestion, + + + customer_id, + + + grid_id, + + + org_id_path, + + + org_id, + + + voting_deadline, + + + decided_time, + + + shifted_time, + + + closed_time, + + + created_by, + + + created_time, + + + updated_by, + + + updated_time, + + del_flag, + revision + + + #{id}, + + #{issueStatus}, + + + #{sourceType}, + + + #{sourceId}, + + + #{closeReason}, + + + #{resolveType}, + + + #{issueTitle}, + + + #{suggestion}, + + + #{customerId}, + + + #{gridId}, + + + #{orgIdPath}, + + + #{orgId}, + + + #{votingDeadline}, + + + #{decidedTime}, + + + #{shiftedTime}, + + + #{closedTime}, + + + #{createdBy}, + + + #{createdTime}, + + + #{createdBy}, + + + #{createdTime}, + + '0', + 0 + + \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProcessDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProcessDao.xml index baadaa6e9e..ce252667b7 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProcessDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProcessDao.xml @@ -19,5 +19,84 @@ + + + + + SELECT replace(uuid(),'-','') AS ID + + + INSERT INTO issue_process + + id, + + issue_id, + + + issue_status, + + + org_type, + + + org_id, + + + operation_explain, + + + created_by, + + + created_time, + + + updated_by, + + + updated_time, + + + org_name, + + del_flag, + revision + + + #{id}, + + #{issueId}, + + + #{issueStatus}, + + + #{orgType}, + + + #{orgId}, + + + #{operationExplain}, + + + #{createdBy}, + + + #{createdTime}, + + + #{createdBy}, + + + #{createdTime}, + + + #{orgName}, + + '0', + 0 + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommonDataFilterResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommonDataFilterResultDTO.java new file mode 100644 index 0000000000..4e917a4413 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommonDataFilterResultDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 数据权限信息 + * @ClassName CommonDataFilterResultDTO + * @Auth wangc + * @Date 2020-05-13 10:49 + */ +@Data +public class CommonDataFilterResultDTO implements Serializable { + private static final long serialVersionUID = 4574851766448601457L; + + /** + * 所属机构Id全路径 agencyId + * */ + private String orgIdPath; + + /** + * 当前组织所属机关Id + * */ + private String agencyId; + + /** + * 当前组织名称 eg:agencyName | agencyName-deptName | agencyName-gridName + * */ + private String orgName; + + /** + * 当前组织的类型 agency | grid | dept + * */ + private String orgType; + + /** + * 当前组织Id + * */ + private String orgId; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java index c5a2779d16..430b560d33 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java @@ -26,11 +26,8 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.CustomerGridDTO; -import com.epmet.dto.form.BelongGridNameFormDTO; -import com.epmet.dto.form.SelectGridNameByGridIdFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.dto.form.CustomerGridFormDTO; -import com.epmet.dto.form.ListCustomerGridFormDTO; import com.epmet.excel.CustomerGridExcel; import com.epmet.service.CustomerGridService; import org.springframework.beans.factory.annotation.Autowired; @@ -194,4 +191,17 @@ public class CustomerGridController { return new Result().ok(customerGridService.getGridNameByGridId(formDTO)); } + /** + * @Description 得到网格的数据权限信息 开放给各个服务使用 + * @param gridForm + * @return Result + * @author wangc + * @date 2020.05.13 11:14 + **/ + @PostMapping("griddatafilter") + public Result gridDataFilter(@RequestBody CommonGridIdFormDTO gridForm){ + ValidatorUtils.validateEntity(gridForm); + return new Result().ok(customerGridService.getGridDataFilterMsg(gridForm)); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java index cc9f544cfb..d7a1ab0c60 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java @@ -160,4 +160,12 @@ public interface CustomerGridDao extends BaseDao { * @date 2020/5/11 18:50 */ BelongGridNameResultDTO getGridNameByGridId(BelongGridNameFormDTO formDTO); + + /** + * @Description 通过网格Id获取网格所需要的数据权限信息 + * @param gridId + * @author wangc + * @date 2020.05.13 11:01 + **/ + CommonDataFilterResultDTO getGridDataFilterMsg(@Param("gridId")String gridId); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java index 0f62db96e5..6ca09779e1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java @@ -236,4 +236,11 @@ public interface CustomerGridService extends BaseService { */ BelongGridNameResultDTO getGridNameByGridId(BelongGridNameFormDTO formDTO); + /** + * @Description 通过网格Id获取网格所需要的数据权限信息 + * @param gridIdFormDTO + * @author wangc + * @date 2020.05.13 11:01 + **/ + CommonDataFilterResultDTO getGridDataFilterMsg(CommonGridIdFormDTO gridIdFormDTO); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java index da1371aca7..341af37278 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java @@ -27,6 +27,7 @@ import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerGridConstant; import com.epmet.dao.CustomerAgencyDao; @@ -547,4 +548,19 @@ public class CustomerGridServiceImpl extends BaseServiceImpl + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CommonTopicIdFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CommonTopicIdFormDTO.java new file mode 100644 index 0000000000..5f9323b2e8 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CommonTopicIdFormDTO.java @@ -0,0 +1,23 @@ +package com.epmet.resi.group.dto.topic.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 通用的话题Id传参DTO,包含话题Id和用户Id + * @ClassName CommonTopicIdFormDTO + * @Auth wangc + * @Date 2020-05-12 11:14 + */ +@Data +public class CommonTopicIdFormDTO implements Serializable { + private static final long serialVersionUID = -6867868118191947074L; + + @NotBlank(message = "话题Id不能为空") + private String topicId; + + @NotBlank(message = "用户Id不能为空") + private String userId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java new file mode 100644 index 0000000000..c0043833f3 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java @@ -0,0 +1,41 @@ +package com.epmet.resi.group.dto.topic.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 话题转议题时前端传参 + * @ClassName ResiTopicTurnIssueFromDTO + * @Auth wangc + * @Date 2020-05-13 10:19 + */ +@Data +public class ResiTopicTurnIssueFromDTO implements Serializable { + private static final long serialVersionUID = -534799870823111781L; + + /** + * 议题名称 + * */ + @NotBlank(message = "议题名称") + private String issueTitle; + + /** + * 话题Id + * */ + @NotBlank(message = "话题Id") + private String topicId; + + /** + * 建议 + * */ + @NotBlank(message = "建议") + private String suggestion; + + /** + * 用户Id + * */ + @NotBlank(message = "用户Id不能为空") + private String userId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicAndGroupResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicAndGroupResultDTO.java new file mode 100644 index 0000000000..ac3516418d --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicAndGroupResultDTO.java @@ -0,0 +1,36 @@ +package com.epmet.resi.group.dto.topic.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 话题所在小组相关信息DTO + * @ClassName ResiTopicAndGroupResultDTO + * @Auth wangc + * @Date 2020-05-13 14:54 + */ +@Data +public class ResiTopicAndGroupResultDTO implements Serializable { + private static final long serialVersionUID = -2247558008863128347L; + + /** + * 组Id + * */ + private String groupId; + + /** + * 话题作者Id + * */ + private String topicAuthorId; + + /** + * 网格Id + * */ + private String gridId; + + /** + * 客户Id + * */ + private String customerId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java new file mode 100644 index 0000000000..3984b68fa5 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java @@ -0,0 +1,47 @@ +package com.epmet.resi.group.dto.topic.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description + * @ClassName ResiTopicShiftIssueInitResultDTO + * @Auth wangc + * @Date 2020-05-12 10:57 + */ +@Data +public class ResiTopicShiftIssueInitResultDTO implements Serializable { + private static final long serialVersionUID = 4798036194688707074L; + + /** + * 话题Id + * */ + private String topicId; + + /** + * 话题内容 + * */ + private String topicContent; + + /** + * 话题图片 + * */ + private List topicImgs; + + /** + * 所属网格名称 + * */ + private String belongGridName; + + /** + * 话题发布人昵称 + * */ + private String releaseUserName; + + /** + * 话题发布时间 + * */ + private Long releaseTime; +} diff --git a/epmet-module/resi-group/resi-group-server/pom.xml b/epmet-module/resi-group/resi-group-server/pom.xml index 952ccc1abd..97c6beeb57 100644 --- a/epmet-module/resi-group/resi-group-server/pom.xml +++ b/epmet-module/resi-group/resi-group-server/pom.xml @@ -76,6 +76,12 @@ 2.0.0 compile + + com.epmet + gov-issue-client + 2.0.0 + compile + diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/GovIssueFeignClient.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/GovIssueFeignClient.java new file mode 100644 index 0000000000..d9f7c146b1 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/GovIssueFeignClient.java @@ -0,0 +1,29 @@ +package com.epmet.modules.feign; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.IssueShiftedFromTopicFormDTO; +import com.epmet.modules.feign.fallback.GovIssueFeignClientFallBack; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; + + +/** + * @Description gov-issue服务fegin + * @Author wangc + * @Date 2020/5/12 10:00 + * url = "localhost:8101" + */ +@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER , fallback = GovIssueFeignClientFallBack.class) +public interface GovIssueFeignClient { + + /** + * @Description 话题转议题 + * @param issueShiftedFromTopicFormDTO + * @author wangc + * @date 2020.05.13 18:19 + **/ + @PostMapping(value = "gov/issue/issue/topicshiftissue", consumes = MediaType.APPLICATION_JSON_VALUE) + Result issueShiftedToTopic(IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO); +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/GovOrgFeignClient.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/GovOrgFeignClient.java index d12b4125a8..f89ba95c04 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/GovOrgFeignClient.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/GovOrgFeignClient.java @@ -5,6 +5,8 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerDepartmentDTO; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.form.CommonGridIdFormDTO; +import com.epmet.dto.form.CustomerGridFormDTO; +import com.epmet.dto.result.CommonDataFilterResultDTO; import com.epmet.modules.feign.fallback.GovOrgFeignClientFallBack; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -22,14 +24,14 @@ import java.util.List; public interface GovOrgFeignClient { /** - * @param id - gridId + * @param customerGridFormDTO * @return Result * @Author wangc * @Description 查询网格信息 * @Date 2020/3/30 10:45 **/ - @GetMapping("/gov/org/customergrid/{id}") - Result getGrid(String id); + @GetMapping("/gov/org/customergrid/getcustomergridbygridid") + Result getCustomerGridByGridId(CustomerGridFormDTO customerGridFormDTO); /** * @Description 查询部门信息 @@ -49,4 +51,14 @@ public interface GovOrgFeignClient { **/ @PostMapping("/gov/org/customerstaffgrid/getgridstaffs") Result> getGridStaffs(@RequestBody CommonGridIdFormDTO gridIdFormDTO); + + /** + * @param gridForm + * @return Result + * @Author wangc + * @Description 获取网格所需要的数据权限内容 + * @Date 2020/3/30 10:45 + **/ + @GetMapping("/gov/org/customergrid/griddatafilter") + Result gridDataFilter(CommonGridIdFormDTO gridForm); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/fallback/GovIssueFeignClientFallBack.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/fallback/GovIssueFeignClientFallBack.java new file mode 100644 index 0000000000..b3cc109467 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/fallback/GovIssueFeignClientFallBack.java @@ -0,0 +1,23 @@ +package com.epmet.modules.feign.fallback; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.IssueShiftedFromTopicFormDTO; +import com.epmet.modules.feign.GovIssueFeignClient; +import org.springframework.stereotype.Component; + +/** + * @Description gov-issue服务fegin服务降级 + * @ClassName GovIssueFeignClientFallBack + * @Auth wangc + * @Date 2020-05-12 10:02 + */ +@Component +public class GovIssueFeignClientFallBack implements GovIssueFeignClient { + + @Override + public Result issueShiftedToTopic(IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "issueShiftedToTopic", issueShiftedFromTopicFormDTO); + } +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/fallback/GovOrgFeignClientFallBack.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/fallback/GovOrgFeignClientFallBack.java index 6489af4de3..337a23454a 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/fallback/GovOrgFeignClientFallBack.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/feign/fallback/GovOrgFeignClientFallBack.java @@ -7,7 +7,10 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerDepartmentDTO; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.form.CommonGridIdFormDTO; +import com.epmet.dto.form.CustomerGridFormDTO; +import com.epmet.dto.result.CommonDataFilterResultDTO; import com.epmet.modules.feign.GovOrgFeignClient; +import com.epmet.modules.utils.ModuleConstant; import org.springframework.stereotype.Component; import java.util.List; @@ -18,8 +21,8 @@ public class GovOrgFeignClientFallBack implements GovOrgFeignClient { @Override - public Result getGrid(String id) { - return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getGrid", id); + public Result getCustomerGridByGridId(CustomerGridFormDTO customerGridFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER,"getCustomerGridByGridId",customerGridFormDTO); } @Override @@ -31,4 +34,9 @@ public class GovOrgFeignClientFallBack implements GovOrgFeignClient { public Result> getGridStaffs(CommonGridIdFormDTO gridIdFormDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getGridStaffs", gridIdFormDTO); } + + @Override + public Result gridDataFilter(CommonGridIdFormDTO gridForm) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "gridDataFilter", gridForm); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java index 4bc70f4762..064f1731a4 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java @@ -139,4 +139,13 @@ public interface ResiGroupDao extends BaseDao { * @Date 2020.04.20 11:17 **/ ApplyingGroupDetailResultDTO getApplyingGroupDetailByGroupId(@Param("groupId") String groupId); + + /** + * @Description 查询一个网格下面所有组Id + * @param gridId + * @return List + * @author wangc + * @date 2020.05.14 10:54 + **/ + List getGroupIdByGridId(@Param("gridId") String gridId); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java index 71a902430a..aca58b287c 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java @@ -241,4 +241,13 @@ public interface ResiGroupService extends BaseService { * @Date 2020.04.19 23:32 **/ Result getApplyingGroupDetail(CommonGroupIdFromDTO groupId); + + /** + * @Description 查询一个网格下面所有组Id + * @param gridId + * @return List + * @author wangc + * @date 2020.05.14 10:54 + **/ + List getGroupIdByGridId(String gridId); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java index 9282ee3895..b29b5022b3 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java @@ -786,6 +786,20 @@ public class ResiGroupServiceImpl extends BaseServiceImpl().ok(ConvertUtils.sourceToTarget(detail, ApplyingGroupDetailResult2DTO.class)); } + + /** + * @Description 查询一个网格下面所有组Id + * @param gridId + * @return List + * @author wangc + * @date 2020.05.14 10:54 + **/ + @Override + public List getGroupIdByGridId(String gridId) { + if(StringUtils.isBlank(gridId)) return null; + return baseDao.getGroupIdByGridId(gridId); + } + /** * @Description 给加入此网格的网格长发送消息 * @param msg diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java index 2fc537cdb2..7c4e6c8173 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java @@ -165,4 +165,27 @@ public class ResiGroupMemberRedis { result.setMemberMap(memberMap); return result; } + + /** + * @Description 得到这个组下所有的成员Id + * @param groupId + * @return List + * @author wangc + * @date 2020.05.14 11:03 + **/ + public Set getGroupMemberIds(String groupId){ + Set groupMemberKeys = + redisUtils.keys(RedisKeys.getResiGroupMemberInfoKey(groupId,"*")); + if(null != groupMemberKeys && groupMemberKeys.size() > NumConstant.ZERO){ + StringBuilder keyPrefix = new StringBuilder("resi:group:member:"); + keyPrefix.append(groupId); + Set memberIds = new HashSet<>(); + groupMemberKeys.forEach(key -> { + memberIds.add(key.replace(keyPrefix.toString(),"")); + }); + return memberIds; + } + return null; + } + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java index a9cdb93a94..e0f9e4420e 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java @@ -176,4 +176,13 @@ public interface ResiGroupMemberService extends BaseService groupIds = resiGroupService.getGroupIdByGridId(gridId); + //2.去缓存中拿取这些组的信息 + if(null != groupIds && groupIds.size() > NumConstant.ZERO){ + Set set = new HashSet<>(); + groupIds.forEach( id -> { + Set members = resiGroupMemberRedis.getGroupMemberIds(id); + if(null != members && members.size() > NumConstant.ZERO){ + set.addAll(members); + } + }); + return set.size(); + } + return NumConstant.ZERO; + } + + /** * @Description 将ResiGroupMemberDTO转换成ResiGroupMemberInfoRedisDTO * @Param * @return diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java index 6a86db52ff..29d3bf5d29 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java @@ -7,10 +7,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.modules.topic.service.ResiTopicService; import com.epmet.resi.group.dto.topic.TopicInfoDTO; import com.epmet.resi.group.dto.topic.form.*; -import com.epmet.resi.group.dto.topic.result.ResiTopicDetailResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueDetailResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueInfoResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; +import com.epmet.resi.group.dto.topic.result.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -199,4 +196,34 @@ public class ResiTopicController { return new Result().ok(topicService.selectDetail(topicInfo)); } + /** + * @Description 话题转议题初始化,如果不符合转议题的条件会抛异常 + * @param tokenDto + * @param topicIdFormDTO + * @author wangc + * @date 2020.05.12 16:28 + **/ + @PostMapping("initturnissue") + public Result initTurnIssue(@LoginUser TokenDto tokenDto,@RequestBody CommonTopicIdFormDTO topicIdFormDTO){ + topicIdFormDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(topicIdFormDTO); + return new Result().ok(topicService.initTopicInfoWhenShift(topicIdFormDTO)); + } + + /** + * @Description 话题转议题 + * @param topicTurnIssueFromDTO + * @param tokenDto + * @author wangc + * @date 2020.05.13 19:08 + **/ + @PostMapping("turnintoissue") + public Result turnIntoIssue(@LoginUser TokenDto tokenDto,@RequestBody ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO){ + topicTurnIssueFromDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(topicTurnIssueFromDTO); + topicService.shiftIssue(topicTurnIssueFromDTO); + return new Result(); + } + + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java index 95d679080a..2eb4442b60 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java @@ -20,9 +20,11 @@ package com.epmet.modules.topic.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.modules.topic.entity.ResiTopicEntity; +import com.epmet.resi.group.dto.group.ResiGroupDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.TopicInfoDTO; import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; +import com.epmet.resi.group.dto.topic.result.ResiTopicAndGroupResultDTO; import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueInfoResultDTO; import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO; import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; @@ -120,4 +122,20 @@ public interface ResiTopicDao extends BaseDao { * @date 2020/5/11 15:28 */ TopicInfoDTO selectDetail(TopicInfoFormDTO formDTO); + + /** + * @Description 根据话题Id获取小组的信息 + * @param topicId + * @author wangc + * @date 2020.05.13 13:50 + **/ + ResiTopicAndGroupResultDTO getGroupInfoByTopicId(@Param("topicId")String topicId); + + /** + * @Description + * @param topic ResiTopicEntity.class + * @author wangc + * @date 2020.05.13 18:52 + **/ + int updateOne(ResiTopicEntity topic); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicOperationDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicOperationDao.java index 8c4b186b03..c92ef5cb12 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicOperationDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicOperationDao.java @@ -40,4 +40,12 @@ public interface ResiTopicOperationDao extends BaseDao **/ int insertOne(ResiTopicOperationEntity topicOperationEntity); + /** + * @Description 按传参进行新增操作 + * @param topicOperationEntity + * @return int 受影响的行数 + * @author wangc + * @date 2020.05.14 09:16 + **/ + int insertOneByParams(ResiTopicOperationEntity topicOperationEntity); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java index f7694dcf76..496ba177c1 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java @@ -26,15 +26,10 @@ import com.epmet.modules.topic.entity.ResiTopicEntity; import com.epmet.resi.group.dto.member.form.RemoveMemberFormDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; + import com.epmet.resi.group.dto.topic.TopicInfoDTO; -import com.epmet.resi.group.dto.topic.form.ResiTopicOperationFormDTO; -import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; -import com.epmet.resi.group.dto.topic.form.ResiTopicPublishFormDTO; -import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicDetailResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueDetailResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueInfoResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; +import com.epmet.resi.group.dto.topic.form.*; +import com.epmet.resi.group.dto.topic.result.*; import java.util.List; @@ -229,4 +224,20 @@ public interface ResiTopicService extends BaseService { */ TopicInfoDTO selectDetail(TopicInfoFormDTO formDTO); + /** + * @Description 话题转议题时初始化数据 + * @param topicIdFormDTO + * @author wangc + * @date 2020.05.12 13:53 + **/ + ResiTopicShiftIssueInitResultDTO initTopicInfoWhenShift(CommonTopicIdFormDTO topicIdFormDTO); + + /** + * @Description 话题转议题 + * @param topicTurnIssueFromDTO + * @author wangc + * @date 2020.05.13 10:28 + **/ + void shiftIssue(ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO); + } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java index 81a4500ca8..400811e104 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java @@ -23,6 +23,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; @@ -32,6 +33,8 @@ import com.epmet.dto.form.UserResiInfoListFormDTO; import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.modules.comment.entity.ResiTopicCommentEntity; import com.epmet.modules.feign.EpmetUserFeignClient; +import com.epmet.modules.member.dao.ResiGroupMemberDao; +import com.epmet.modules.member.redis.ResiGroupMemberRedis; import com.epmet.modules.member.service.ResiGroupMemberService; import com.epmet.modules.topic.dao.ResiTopicCommentDao; import com.epmet.modules.topic.service.ResiTopicCommentService; @@ -42,9 +45,12 @@ import com.epmet.resi.group.constant.TopicConstant; import com.epmet.resi.group.dto.comment.form.ResiQueryCommentFormDTO; import com.epmet.resi.group.dto.comment.result.ResiCommentResultDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; +import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO; +import com.epmet.resi.group.dto.member.result.ResiGroupMemberInfoRedisResultDTO; import com.epmet.resi.group.dto.topic.ResiTopicCommentDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.form.ResiPublishCommentFormDTO; +import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -52,10 +58,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 话题评论表 @@ -75,6 +79,12 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl comments = baseDao.getCommentList(commentFormDTO); if (null != comments && comments.size() > 0) { - - List userIdList = new ArrayList<>(); + //获取groupId + ResiTopicDTO topic = + resiTopicService.get(commentFormDTO.getTopicId()); + /*List userIdList = new ArrayList<>(); for (ResiCommentResultDTO comment : comments) { userIdList.add(comment.getUserId()); } @@ -214,7 +226,8 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl>().ok(comments); @@ -232,5 +245,73 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl + * @author wangc + * @date 2020.05.12 17:12 + **/ + private void setCacheUserInfo(String groupId,List comments){ + //1.初始化存储缺失缓存信息的组员Id的容器,默认去重 + Set usersNotInCache = new HashSet<>(); + + //2.读取用户缓存信息 + ResiGroupMemberInfoRedisResultDTO memberRedis = resiGroupMemberRedis.getKeys(groupId); + if (null != memberRedis && null != memberRedis.getMemberKeys() && null != memberRedis.getMemberMap()) { + String keyPrefix = RedisKeys.getResiGroupMemberInfoKey(groupId, ""); + for (ResiCommentResultDTO comment : comments) + { + //缓存中有该用户的key + if (memberRedis.getMemberKeys().contains(keyPrefix.concat(comment.getUserId()))) { + ResiGroupMemberInfoRedisDTO memberInfoCache = memberRedis.getMemberMap().get(comment.getUserId()); + if (null != memberInfoCache) { + //缓存中有该用户信息 + comment.setCommentUserName(memberInfoCache.getUserShowName()); + comment.setCommentUserHeadPhoto(memberInfoCache.getUserHeadPhoto()); + } else { + //缓存中没有该用户信息 + usersNotInCache.add(comment.getUserId()); + } + } else { + //缓存中没有该用户的key + usersNotInCache.add(comment.getUserId()); + } + } + } + + //3.如果存在缺失缓存的组员,去数据库中查找,并存入缓存 + if (usersNotInCache.size() > 0) { + Map> commentMap + = comments.stream().collect(Collectors.groupingBy(ResiCommentResultDTO::getUserId)); + List userIds = new ArrayList<>(usersNotInCache); + Result> result = + epmetUserFeignClient.getUserResiInfoList(new UserResiInfoListFormDTO(userIds)); + + if (result.success() && null != result.getData() && result.getData().size() > 0) { + for (UserResiInfoResultDTO user : result.getData()) { + ResiCommentResultDTO comment = + commentMap.get(user.getUserId()).get(0); + comment.setCommentUserName(user.getShowName()); + comment.setCommentUserHeadPhoto(user.getHeadPhoto()); + + //存入缓存 + ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO(); + ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(groupId, user.getUserId()); + memberRedisDTO.setMemberStatus(memberMySql.getStatus()); + memberRedisDTO.setUserId(user.getUserId()); + memberRedisDTO.setUserShowName(user.getShowName()); + memberRedisDTO.setEnterGroupType(memberMySql.getEnterGroupType()); + memberRedisDTO.setGroupLeaderFlag(memberMySql.getGroupLeaderFlag()); + memberRedisDTO.setUserHeadPhoto(user.getHeadPhoto()); + memberRedisDTO.setGroupId(groupId); + resiGroupMemberRedis.set(memberRedisDTO); + } + } else { + + logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND); + } + } + } } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java index 920c6cfda4..dcd42e5964 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java @@ -28,13 +28,17 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.form.IssueInitiatorFormDTO; -import com.epmet.dto.form.UserResiInfoListFormDTO; +import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.CommonDataFilterResultDTO; import com.epmet.dto.result.IssueInitiatorResultDTO; import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.modules.constant.GroupMemberConstant; import com.epmet.modules.feign.EpmetUserFeignClient; +import com.epmet.modules.feign.GovIssueFeignClient; +import com.epmet.modules.feign.GovOrgFeignClient; import com.epmet.modules.group.dao.ResiGroupDao; import com.epmet.modules.group.dao.ResiGroupStatisticalDao; import com.epmet.modules.group.entity.ResiGroupEntity; @@ -63,14 +67,8 @@ import com.epmet.resi.group.dto.member.form.RemoveMemberFormDTO; import com.epmet.resi.group.dto.member.result.ResiGroupMemberInfoRedisResultDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.TopicInfoDTO; -import com.epmet.resi.group.dto.topic.form.ResiTopicOperationFormDTO; -import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; -import com.epmet.resi.group.dto.topic.form.ResiTopicPublishFormDTO; -import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicDetailResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueDetailResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueInfoResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; +import com.epmet.resi.group.dto.topic.form.*; +import com.epmet.resi.group.dto.topic.result.*; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -124,6 +122,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl topicDetailResult = + getTopicDetail(null,topicIdFormDTO.getTopicId()); + if(topicDetailResult.success() && null != topicDetailResult.getData()){ + ResiTopicShiftIssueInitResultDTO result = ConvertUtils.sourceToTarget(topicDetailResult.getData(),ResiTopicShiftIssueInitResultDTO.class); + try { + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE); + + result.setReleaseTime(format.parse(topicDetailResult.getData().getReleaseTime()).getTime()/NumConstant.ONE_THOUSAND); + }catch (Exception e){ + result.setReleaseTime(NumConstant.ZERO_L); + logger.warn(String.format(ModuleConstant.DATE_FORMAT_PARSE_FAILURE,e.getMessage())); + } + ResiGroupInfoRedisDTO group = resiGroupRedis.get(topic.getGroupId()); + if(null == group && StringUtils.isNotBlank(group.getGroupId())){ + CustomerGridFormDTO gridForm = new CustomerGridFormDTO(); + gridForm.setGridId(group.getGridId()); + Result gridInfoResult = govOrgFeignClient.getCustomerGridByGridId(gridForm); + if(gridInfoResult.success() && null != gridInfoResult.getData() && StringUtils.isNotBlank(gridInfoResult.getData().getId())) { + result.setBelongGridName(gridInfoResult.getData().getGridName()); + } + } + logger.error(ModuleConstant.NO_SUCH_GROUP); + result.setBelongGridName(ModuleConstant.EMPTY_STR); + return result; + } + throw new RenException(ModuleConstant.FAILED_QUERY_TOPIC_INFO); + } + + /** + * @Description 话题转议题 1.统一时间 2.调用gov-org服务拿到数据权限的信息 3.调用gov-issue服务新增议题信息 + * @param topicTurnIssueFromDTO + * @author wangc + * @date 2020.05.13 10:28 + **/ + @Override + @Transactional(rollbackFor = Exception.class) + public void shiftIssue(ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO) { + //1.统一时间(群组服务 -> 议题服务) + Date now = new Date(); + //2.调用gov-org获取数据权限 + ResiTopicAndGroupResultDTO group = baseDao.getGroupInfoByTopicId(topicTurnIssueFromDTO.getTopicId()); + if(null != group){ + CommonGridIdFormDTO dataFilterParam = new CommonGridIdFormDTO(); + dataFilterParam.setUserId(topicTurnIssueFromDTO.getUserId()); + dataFilterParam.setGridId(group.getGridId()); + Result dataFilterResult = + govOrgFeignClient.gridDataFilter(dataFilterParam); + if(dataFilterResult.success() && null != dataFilterResult.getData()){ + IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(topicTurnIssueFromDTO,IssueShiftedFromTopicFormDTO.class); + issueInfo.setCreatedTime(now); + issueInfo.setGridId(group.getGridId()); + issueInfo.setCustomerId(group.getCustomerId()); + issueInfo.setOrgId(dataFilterResult.getData().getAgencyId()); + issueInfo.setOrgIdPath(dataFilterResult.getData().getOrgIdPath()); + issueInfo.setOrgName(dataFilterResult.getData().getOrgName()); + //3.获取小组名称、话题作者、议题发起人 + ResiGroupMemberInfoRedisDTO topicAuthor = resiGroupMemberRedis.get(group.getGroupId(), group.getTopicAuthorId()); + issueInfo.setTopicAuthor(null == topicAuthor ? ModuleConstant.EMPTY_STR : topicAuthor.getUserShowName()); + ResiGroupMemberInfoRedisDTO issueAuthor = resiGroupMemberRedis.get(group.getGroupId(),topicTurnIssueFromDTO.getUserId()); + issueInfo.setIssueAuthor(null == issueAuthor ? ModuleConstant.EMPTY_STR : issueAuthor.getUserShowName()); + ResiGroupInfoRedisDTO groupCache = resiGroupRedis.get(group.getGroupId()); + issueInfo.setGroupName(null == groupCache ? ModuleConstant.EMPTY_STR : groupCache.getGroupName()); + issueInfo.setVotableCount(resiGroupMemberService.gridResiCount(group.getGridId())); + //4.调用gov-issue新增议题 + Result issueResult = govIssueFeignClient.issueShiftedToTopic(issueInfo); + //5.修改话题shiftIssue字段 + if(issueResult.success() && StringUtils.isNotBlank(issueResult.getData())){ + ResiTopicEntity topic2Upd = new ResiTopicEntity(); + topic2Upd.setId(topicTurnIssueFromDTO.getTopicId()); + topic2Upd.setUpdatedBy(topicTurnIssueFromDTO.getUserId()); + topic2Upd.setShiftIssue(Boolean.TRUE); + topic2Upd.setIssueId(issueResult.getData()); + topic2Upd.setUpdatedTime(now); + int topicResult = baseDao.updateOne(topic2Upd); + //6.新增话题操作记录 + if(topicResult == NumConstant.ONE) { + ResiTopicOperationEntity operation = new ResiTopicOperationEntity(); + operation.setCreatedTime(now); + operation.setCreatedBy(topicTurnIssueFromDTO.getUserId()); + operation.setTopicId(topicTurnIssueFromDTO.getTopicId()); + operation.setOperationType(ModuleConstant.TOPIC_OPERATION_TYPE_SHIFT_ISSUE); + int operationResult = resiTopicOperationDao.insertOneByParams(operation); + if(operationResult != NumConstant.ONE){ + logger.warn(ModuleConstant.FAILURE_TO_ADD_TOPIC_OPERATION); + } + return; + } + logger.warn(ModuleConstant.FAILURE_TO_UPDATE_TOPIC); + + } + } + } + throw new RenException(ModuleConstant.FAILURE_TO_TURN_ISSUE); + } + } + diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java index b54a19bb87..e913c094ff 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java @@ -118,6 +118,11 @@ public interface ModuleConstant extends Constant { * */ String NO_SUCH_TOPIC = "没有找到所在话题"; + /** + * 没有找到所在的群组 + * */ + String NO_SUCH_GROUP = "没有找到所在的群组"; + /** * 当前用户被禁言 * */ @@ -245,4 +250,48 @@ public interface ModuleConstant extends Constant { */ String FAILED_SEND_MESSAGE = "消息发送失败,消息内容:【%s】"; + /** + * 该话题不能转为议题 + * */ + String CURRENT_TOPIC_COULD_NOT_TURN_TO_ISSUE = "该话题不能转为议题,可能原因:当前话题已转项目或当前话题不是在【讨论中】状态"; + + /** + * 议题状态:讨论中 + * */ + String TOPIC_STATUS_DISCUSSING = "discussing"; + + /** + * 话题操作记录状态- 转议题 + * */ + String TOPIC_OPERATION_TYPE_SHIFT_ISSUE = "shift_issue"; + + /** + * 空字符串 + * */ + String EMPTY_STR = ""; + + /** + * 话题查询失败 + * */ + String FAILED_QUERY_TOPIC_INFO = "话题查询失败"; + + /** + * 日期格式转换失败 + * */ + String DATE_FORMAT_PARSE_FAILURE = "日期格式转换失败,异常信息:%s"; + + /** + * 话题转议题失败 + * */ + String FAILURE_TO_TURN_ISSUE = "话题转议题失败"; + + /** + * 话题状态修改失败 + * */ + String FAILURE_TO_UPDATE_TOPIC = "话题状态修改失败"; + + /** + * 新增话题操作记录失败 + * */ + String FAILURE_TO_ADD_TOPIC_OPERATION = "新增话题操作记录失败"; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml index 41ff468da7..9a74ab5d72 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml @@ -277,4 +277,16 @@ AND gro.ID = #{groupId} AND oper.STATE IN ('under_auditting','approved','rejected') + + + diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml index 62cef3f328..12b07ff44a 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml @@ -102,7 +102,7 @@ 'APP_USER', '0', - '0', + 0, now(), now() @@ -259,6 +259,35 @@ + + + UPDATE + RESI_TOPIC + + group_id = #{groupId}, + topic_content = #{topicContent}, + status = #{status}, + province = #{province}, + city = #{city}, + area = #{area}, + address = #{address}, + longitude = #{longitude}, + dimension = #{dimension}, + del_flag = #{delFlag}, + revision = #{revision}, + created_by = #{createdBy}, + created_time = #{createdTime}, + updated_by = #{updatedBy}, + updated_time = #{updatedTime}, + shift_issue = #{shiftIssue}, + issue_id = #{issueId} + + WHERE + ID = #{id} + AND DEL_FLAG = '0' + + + @@ -351,4 +380,19 @@ AND del_flag = 0 + + diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicOperationDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicOperationDao.xml index abf5bc56fd..be6c114d66 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicOperationDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicOperationDao.xml @@ -53,5 +53,67 @@ + + + + + select replace(uuid(),'-','') AS ID + + + INSERT INTO resi_topic_operation + + id, + + topic_id, + + + operation_type, + + + operation_reason, + + + created_by, + + + created_time, + + + updated_by, + + + updated_time, + + del_flag, + revision + + + #{id}, + + #{topicId}, + + + #{operationType}, + + + #{operationReason}, + + + #{createdBy}, + + + #{createdTime}, + + + #{createdBy}, + + + #{createdTime}, + + '0', + 0 + + +