diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java new file mode 100644 index 0000000000..1eb9b86791 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Description 工作人员审核议题结果传参 + * @ClassName IssueAuditionFormDTO + * @Auth wangc + * @Date 2020-11-19 10:29 + */ +@Data +public class IssueAuditionFormDTO implements Serializable { + + private static final long serialVersionUID = 5794088085884822811L; + + /** + * 申请id + */ + @NotBlank(message = "议题申请Id不能为空") + private String issueApplicationId; + + /** + * 同意备注 驳回理由 + */ + private String reason; + + /** + * approved:审核通过, rejected:驳回 + */ + @NotBlank(message = "审核结果不能为空") + private String actionType; + + /** + * 工作人员名称 + */ + private String staffName; +} 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 index 399062ece8..0cf6a438aa 100644 --- 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 @@ -1,9 +1,12 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import javax.validation.Valid; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; @@ -17,86 +20,100 @@ import java.util.Date; public class IssueShiftedFromTopicFormDTO implements Serializable { private static final long serialVersionUID = -5744319584210140289L; + public interface IssueGenerationGroup extends CustomerClientShowGroup{} + + public interface PublicIssueGroup extends CustomerClientShowGroup{} + /** * 话题Id * */ - @NotBlank(message = "话题Id不能为空") + @NotBlank(message = "话题Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String topicId; /** * 议题名称 * */ - @NotBlank(message = "议题名称不能为空") + @NotBlank(message = "议题名称不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String issueTitle; /** * 建议 * */ - @NotBlank(message = "议题建议不能为空") + @NotBlank(message = "议题建议不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String suggestion; /** * 议题发起人Id * */ - @NotBlank(message = "议题发起人Id不能为空") + @NotBlank(message = "议题发起/审核人Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String userId; /** * 客户Id * */ - @NotBlank(message = "客户不能为空") + @NotBlank(message = "客户不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String customerId; /** * 网格Id * */ - @NotBlank(message = "网格Id不能为空") + @NotBlank(message = "网格Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String gridId; /** * AgencyId当前话题所在机构Id * */ - @NotBlank(message = "机关Id不能为空") + @NotBlank(message = "机关Id不能为空",groups = {IssueGenerationGroup.class}) private String orgId; /** * 所属机关 eg:11:22:33(本机关以及上级所有机关ID) * */ - @NotBlank(message = "所属机关全路径不能为空") + @NotBlank(message = "所属机关全路径不能为空",groups = {IssueGenerationGroup.class}) private String orgIdPath; /** * 当前话题所在网格名称 - 对应议题流程的处理部门 * */ - @NotBlank(message = "网格名称不能为空") + @NotBlank(message = "网格名称不能为空",groups = {IssueGenerationGroup.class}) private String orgName; /** * 议题创建时间 * */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @NotNull(message = "创建时间不能为空",groups = {IssueGenerationGroup.class}) private Date createdTime; /** * 小组名称 - 对应议题流程的小组名称(文案) * */ - @NotBlank(message = "小组名称不能为空") + @NotBlank(message = "小组名称不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String groupName; /** * 话题发起人名称 -对应议题流程的话题发起人(文案) * */ - @NotBlank(message = "话题发起人不能为空") + @NotBlank(message = "话题发起人不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String topicAuthor; /** * 议题发起人(组长)名称 - 对应议题流程的组长名称(文案) * */ - @NotBlank(message = "组长不能为空") + @NotBlank(message = "组长不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private String issueAuthor; /** * 应表决数 * */ + @NotNull(message = "应表决数不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) private Integer votableCount; + + /** + * 议题审核参数 + */ + private IssueAuditionFormDTO audition; + + @NotNull(message = "小组Id不能为空",groups = {IssueGenerationGroup.class}) + private String groupId; } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java new file mode 100644 index 0000000000..df37c1eec1 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java @@ -0,0 +1,44 @@ +package com.epmet.dto.result; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 话题首次提交转议题时的返参 注意:只是首次,二次提交统一调用重新编辑提交接口 + * @ClassName FirstTopicShiftedToIssueApplicationResultDTO + * @Auth wangc + * @Date 2020-11-18 16:50 + */ +@Data +public class FirstTopicShiftedToIssueApplicationResultDTO implements Serializable { + private static final long serialVersionUID = 329020301144053656L; + + public interface SwitchRequiredGroup extends CustomerClientShowGroup{} + + public interface AllowAuditionGroup extends CustomerClientShowGroup{} + + public interface ForbidAuditionGroup extends CustomerClientShowGroup{} + + /** + * 已开启审核:open; 无需审核:close + */ + @NotBlank(message = "审核开关不能为空",groups = {SwitchRequiredGroup.class,AllowAuditionGroup.class,ForbidAuditionGroup.class}) + private String auditSwitch; + + /** + * 如果无需审核,直接生成议题,返回议题Id + * 如果需要审核,该属性为空 + */ + @NotBlank(message = "议题Id不能为空",groups = {ForbidAuditionGroup.class}) + private String issueId; + + /** + * 如果需要审核,生成议题申请记录,返回申请Id + * 如果无需审核,该属性为空 + */ + @NotBlank(message = "议题审核Id不能为空",groups = {AllowAuditionGroup.class}) + private String issueApplicationId; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java index a2ed3fb36e..0e87badf8a 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java @@ -3,6 +3,7 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IssueDTO; +import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.IssueSuggestionDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -19,10 +20,13 @@ import com.epmet.resi.mine.dto.from.MyShiftIssueTopicsFormDTO; import com.epmet.resi.mine.dto.result.MyShiftIssueTopicsResultDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; +import java.util.Map; /** * 本服务对外开放的API,其他服务通过引用此client调用该服务 @@ -165,4 +169,35 @@ public interface GovIssueOpenFeignClient { **/ @PostMapping(value = "/gov/issue/issueapplicationhistory/querybyissueapplicationid",consumes = MediaType.APPLICATION_JSON_VALUE) Result> queryByIssueApplicationId(@RequestBody IssueApplicationIdFormDTO formDTO); + + /** + * @Description 根据条件查询议题申请信息 + * @param params + * @return com.epmet.commons.tools.utils.Result> + * @author wangc + * @date 2020.11.18 15:47 + */ + @GetMapping("/gov/issue/issueapplication/list") + Result> list(@RequestParam Map params); + + /** + * @Description 话题转移提接口 这里的逻辑包含 + * 是否需要审核 ,如无需审核,直接生成Issue,不需要对application做新增/更新,无需新增history + * 如需要审核,先查看是否存在application,如果有,做响应的更新,否则新增一条,并且相应地新增一条history + * 因此,二次编辑提交申请时,也将走以上逻辑,在封装好所需参数后,调用该方法即可 + * + * 注意: + * 如果想要工作端审核时,也调用该接口,需要在传参里加上审核入参DTO(IssueAuditionFormDTO) + * 如果该属性为null,则表示当前操作非审核而是居民在试图转议题 + * 在审核调用该接口之前,需要组装好生成议题所需的数据,因为是直接从gov/issue路径下调用 + * 先在gov-issue服务中查询议题的标题、建议等信息,再去gov-grid获取dataFilter数据 + * 然后去resi-group中查询话题作者昵称、议题发起人名昵称,组装好参数后可以调用下列方法 + * 如果是驳回,则不需要组装以上数据 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.19 10:02 + */ + @PostMapping(value = "/gov/issue/issue/topic-shift-issue") + Result topicShiftedToIssueV2(@RequestBody IssueShiftedFromTopicFormDTO param); } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java index bc3bfa8fe6..2842fd826f 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java @@ -4,6 +4,7 @@ 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.IssueDTO; +import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.IssueSuggestionDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -21,6 +22,7 @@ import com.epmet.resi.mine.dto.result.MyShiftIssueTopicsResultDTO; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; /** * 本服务对外开放的API,其他服务通过引用此client调用该服务 @@ -145,4 +147,39 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient public Result> queryByIssueApplicationId(IssueApplicationIdFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "queryByIssueApplicationId", formDTO); } + + /** + * @Description 根据条件查询议题申请信息 + * @param params + * @return com.epmet.commons.tools.utils.Result> + * @author wangc + * @date 2020.11.18 15:47 + */ + @Override + public Result> list(Map params) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "list", params); + } + + /** + * @Description 话题转移提接口 这里的逻辑包含 + * 是否需要审核 ,如无需审核,直接生成Issue,不需要对application做新增/更新,无需新增history + * 如需要审核,先查看是否存在application,如果有,做响应的更新,否则新增一条,并且相应地新增一条history + * 因此,二次编辑提交申请时,也将走以上逻辑,在封装好所需参数后,调用该方法即可 + * + * 注意: + * 如果想要工作端审核时,也调用该接口,需要在传参里加上审核入参DTO(IssueAuditionFormDTO) + * 如果该属性为null,则表示当前操作非审核而是居民在试图转议题 + * 在审核调用该接口之前,需要组装好生成议题所需的数据,因为是直接从gov/issue路径下调用 + * 先在gov-issue服务中查询议题的标题、建议等信息,再去gov-grid获取dataFilter数据 + * 然后去resi-group中查询话题作者昵称、议题发起人名昵称,组装好参数后可以调用下列方法 + * 如果是驳回,则不需要组装以上数据 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.19 10:02 + */ + @Override + public Result topicShiftedToIssueV2(IssueShiftedFromTopicFormDTO param) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "topicShiftedToIssueV2", param); + } } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java index 8cfafb1287..7d03d01ca0 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java @@ -136,4 +136,18 @@ public class IssueApplicationController { List list=issueApplicationService.listIssueApp(formDTO); return new Result>().ok(list); } + /** + * @Description 根据条件查询议题申请信息 + * @param params + * @return com.epmet.commons.tools.utils.Result> + * @author wangc + * @date 2020.11.18 15:47 + */ + @GetMapping("list") + public Result> list(@RequestParam Map params){ + //此处限制必须传条件,不允许全查 + AssertUtils.isMapEmpty(params); + return new Result>().ok(issueApplicationService.list(params)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java index 399168e861..eae6791990 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java @@ -1,10 +1,12 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.RequirePermission; +import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constant.IssueConstant; import com.epmet.dto.form.ApplicationDetailWorkFormDTO; import com.epmet.dto.form.ApplicationHistoryWorkFormDTO; -import com.epmet.constant.IssueConstant; import com.epmet.dto.form.IssueAppQueryFormDTO; import com.epmet.dto.form.IssueApplicationIdFormDTO; import com.epmet.dto.result.ApplicationDetailWorkResultDTO; @@ -106,6 +108,7 @@ public class IssueAuditController { * @author zxc * @date 2020/11/19 下午2:26 */ + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_DETAIL) @PostMapping("issueaudithistory") public Result> applicationHistoryWork(@RequestBody ApplicationHistoryWorkFormDTO applicationHistoryWorkFormDTO){ ValidatorUtils.validateEntity(applicationHistoryWorkFormDTO,ApplicationHistoryWorkFormDTO.ApplicationHistoryWork.class); 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 7c159b6e3d..8ccb30aa15 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 @@ -5,7 +5,6 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.IssueDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.excel.IssueExcel; import com.epmet.resi.group.dto.group.form.AllIssueFormDTO; import com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO; import com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO; @@ -76,10 +75,36 @@ public class IssueController { **/ @PostMapping(value = "topicshiftissue") public Result issueShiftedToTopic(@RequestBody IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO){ - ValidatorUtils.validateEntity(issueShiftedFromTopicFormDTO); + ValidatorUtils.validateEntity(issueShiftedFromTopicFormDTO, IssueShiftedFromTopicFormDTO.IssueGenerationGroup.class); return new Result().ok(issueService.issueShiftedToTopic(issueShiftedFromTopicFormDTO)); } + /** + * @Description 话题转移提接口 这里的逻辑包含 + * 是否需要审核 ,如无需审核,直接生成Issue,不需要对application做新增/更新,无需新增history + * 如需要审核,先查看是否存在application,如果有,做响应的更新,否则新增一条,并且相应地新增一条history + * 因此,二次编辑提交申请时,也将走以上逻辑,在封装好所需参数后,调用该方法即可 + * + * 注意: + * 如果想要工作端审核时,也调用该接口,需要在传参里加上审核入参DTO(IssueAuditionFormDTO) + * 如果该属性为null,则表示当前操作非审核而是居民在试图转议题 + * 在审核调用该接口之前,需要组装好生成议题所需的数据,因为是直接从gov/issue路径下调用 + * 先在gov-issue服务中查询议题的标题、建议等信息,再去gov-grid获取dataFilter数据 + * 然后去resi-group中查询话题作者昵称、议题发起人名昵称,组装好参数后可以调用下列方法 + * 如果是驳回,则不需要组装以上数据 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.19 10:02 + */ + @PostMapping(value = "topic-shift-issue") + public Result topicShiftedToIssueV2(@RequestBody IssueShiftedFromTopicFormDTO param){ + ValidatorUtils.validateEntity(param, IssueShiftedFromTopicFormDTO.PublicIssueGroup.class); + return new Result().ok( + issueService.topicShiftedToIssueV2(param) + ); + } + /** * @Description 获取表决中议题列表 * @param issueListFormDTO diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java index 2aa4bb50e9..4e20988279 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java @@ -51,5 +51,13 @@ public interface IssueCustomerParameterDao extends BaseDao { **/ String issueShiftedToTopic(IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO); + /** + * @Description 话题转移提接口 这里的逻辑包含 + * 是否需要审核 ,如无需审核,直接生成Issue,不需要对application做新增/更新,无需新增history + * 如需要审核,先查看是否存在application,如果有,做响应的更新,否则新增一条,并且相应地新增一条history + * 因此,二次编辑提交申请时,也将走以上逻辑,在封装好所需参数后,调用该方法即可 + * + * 注意: + * 如果想要工作端审核时,也调用该接口,需要在传参里加上审核入参DTO(IssueAuditionFormDTO) + * 如果该属性为null,则表示当前操作非审核而是居民在试图转议题 + * 在审核调用该接口之前,需要组装好生成议题所需的数据,因为是直接从gov/issue路径下调用 + * 先在gov-issue服务中查询议题的标题、建议等信息,再去gov-grid获取dataFilter数据 + * 然后去resi-group中查询话题作者昵称、议题发起人名昵称,组装好参数后可以调用下列方法 + * 如果是驳回,则不需要组装以上数据 + * @param issueShiftedFromTopicFormDTO + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.19 10:02 + */ + FirstTopicShiftedToIssueApplicationResultDTO topicShiftedToIssueV2(IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO); + /** * @Description 表决中列表 * @param issueListForm @@ -276,4 +296,6 @@ public interface IssueService extends BaseService { * @return java.util.List */ List getClosedListByGroup(AllIssueFormDTO formDTO); + + //FirstTopicShiftedToIssueApplicationResultDTO TopicShiftedToIssueFirstly(); } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java index 429bfad66e..7109d22494 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java @@ -36,6 +36,7 @@ import com.epmet.resi.group.dto.group.result.ApplicationHistoryResultDTO; import com.epmet.resi.group.dto.group.result.ApplicationListResultDTO; import com.epmet.service.IssueApplicationService; import com.github.pagehelper.PageHelper; +import com.epmet.utils.ModuleConstants; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -71,10 +72,11 @@ public class IssueApplicationServiceImpl extends BaseServiceImpl getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); + String topicId = (String)params.get(ModuleConstants.FIELD_JAVA_TOPIC_ID); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - + wrapper.eq(StringUtils.isNotBlank(topicId), ModuleConstants.FIELD_SQL_TOPIC_ID, topicId); return wrapper; } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java index edfdc7e391..98899856cb 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java @@ -164,4 +164,16 @@ public class IssueCustomerParameterServiceImpl extends BaseServiceImpl implements IssueService { + protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class); + @Autowired private IssueDao issueDao; @Autowired @@ -93,9 +91,6 @@ public class IssueServiceImpl extends BaseServiceImpl imp private GovOrgOpenFeignClient govOrgOpenFeignClient; @Autowired private ResiGroupOpenFeignClient resiGroupOpenFeignClient; - - protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class); - @Autowired private IssueProcessService issueProcessService; @Autowired @@ -103,11 +98,17 @@ public class IssueServiceImpl extends BaseServiceImpl imp @Autowired private IssueProjectRelationService issueProjectRelationService; @Autowired - private IssueVoteStatisticalDao issueVoteStatisticalDao; + private IssueCustomerParameterService configurationParameterService; + @Autowired + private IssueApplicationService applicationService; + @Autowired + private IssueApplicationHistoryService historyService; @Autowired private EpmetUserFeignClient epmetUserFeignClient; @Autowired private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; + + @Value("${openapi.scan.server.url}") private String scanApiUrl; @Value("${openapi.scan.method.textSyncScan}") @@ -295,6 +296,89 @@ public class IssueServiceImpl extends BaseServiceImpl imp throw new RenException(ModuleConstants.FAILURE_TO_ADD_ISSUE); } + /** + * @Description 话题转移提接口,这里的逻辑包含: + * 是否需要审核 ,如无需审核,直接生成issue,不需要对application做新增/更新,无需新增history + * 如需要审核,先查看是否存在application,如果有,做响应的更新,否则新增一条,并且相应地新增一条history + * 因此,二次编辑提交申请时,也将走以上逻辑,在封装好所需参数后,调用该方法即可 + * + * 注意: + * 如果想要工作端审核时,也调用该接口,需要在传参里加上审核入参DTO(IssueAuditionFormDTO) + * 如果该属性为null,则表示当前操作非审核而是居民在试图转议题 + * 在审核调用该接口之前,需要组装好生成议题所需的数据,因为是直接从gov/issue路径下调用 + * 先在gov-issue服务中查询议题的标题、建议等信息,再去gov-grid获取dataFilter数据 + * 然后去resi-group中查询话题作者昵称、议题发起人名昵称,组装好参数后可以调用下列方法 + * 如果是驳回,则不需要组装以上数据 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.19 10:02 + */ + @Override + public FirstTopicShiftedToIssueApplicationResultDTO topicShiftedToIssueV2(IssueShiftedFromTopicFormDTO param) { + FirstTopicShiftedToIssueApplicationResultDTO result = new FirstTopicShiftedToIssueApplicationResultDTO(); + + //0.判断此次来源是否审核,是居民端还是工作端 + boolean isStaffAudition = null != param.getAudition(); + //初始化缺省状态 : 审核中 + String defaultStatusUnderAuditing = isStaffAudition ? param.getAudition().getActionType() : ModuleConstants.ISSUE_APPLICATION_STATUS_UNDER_AUDITING; + //1.查询该客户下是否开启议题审核 + boolean ifOpen = !StringUtils.equals(ModuleConstants.AUDIT_SWITCH_CLOSE,configurationParameterService.checkIssueAuditSwitchIfOpen(param.getCustomerId())); + result.setAuditSwitch(ifOpen ? ModuleConstants.AUDIT_SWITCH_OPEN : ModuleConstants.AUDIT_SWITCH_CLOSE); + //2.居民段组长提交议题审核 + if(ifOpen || isStaffAudition){ + //默认打开 + //2.1查询是否存在application记录 + Map applicationParam = new HashMap<>();applicationParam.put(ModuleConstants.FIELD_JAVA_TOPIC_ID,param.getTopicId()); + List applicationList = applicationService.list(applicationParam); + List applyIds = new LinkedList<>(); + if(CollectionUtils.isEmpty(applicationList)){ + //首次提交 新增application + IssueApplicationDTO newApplication = ConvertUtils.sourceToTarget(param,IssueApplicationDTO.class); + newApplication.setApplyStatus(defaultStatusUnderAuditing); + applicationService.save(newApplication); + applyIds.add(newApplication.getId()); + }else{ + //重新提交 更新application + if(applicationList.size() > NumConstant.ONE){ + logger.error("com.epmet.service.impl.IssueServiceImpl.topicShiftedToIssueV2,查出多条转移提提交记录,话题Id:{}",param.getTopicId()); + } + applicationList.forEach(apply -> { + IssueApplicationDTO carrier = new IssueApplicationDTO(); + carrier.setId(apply.getId()); + carrier.setApplyStatus(defaultStatusUnderAuditing); + carrier.setSuggestion(isStaffAudition ? apply.getSuggestion() : param.getSuggestion()); + carrier.setIssueTitle(isStaffAudition ? apply.getIssueTitle() : param.getIssueTitle()); + applicationService.update(carrier); + + applyIds.add(apply.getId()); + }); + } + //新增history + applyIds.forEach(id -> { + IssueApplicationHistoryDTO history = new IssueApplicationHistoryDTO(); + history.setActionType(defaultStatusUnderAuditing); + history.setCreatedTime(param.getCreatedTime()); + history.setCustomerId(param.getCustomerId()); + history.setIssueApplicationId(id); + history.setReason(isStaffAudition ? param.getAudition().getReason() : null); + history.setStaffName(isStaffAudition ? param.getAudition().getStaffName() : null); + + historyService.save(history); + }); + + result.setIssueApplicationId(applyIds.iterator().next()); + } + //当无需审核或审核同意时,生成议题 + //注意,如果是二次提交申请,且此时审核开关被关闭,则无需更新application状态以及新增history记录 + if(!ifOpen || StringUtils.equals(ModuleConstants.AUDITION_TYPE_APPROVAL,defaultStatusUnderAuditing)){ + ValidatorUtils.validateEntity(param, IssueShiftedFromTopicFormDTO.IssueGenerationGroup.class); + result.setIssueId(issueShiftedToTopic(param)); + } + + return result; + } + /** * @Description 表决中列表 * @param issueListForm 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 index 7418ccfdf8..2bc79654d6 100644 --- 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 @@ -22,6 +22,11 @@ public interface ModuleConstants { * */ String ISSUE_STATUS_CLOSED = "closed"; + /** + * 议题审核状态 审核中 + */ + String ISSUE_APPLICATION_STATUS_UNDER_AUDITING = "under_auditing"; + /** * 议题来源:居民段话题 * */ @@ -81,6 +86,10 @@ public interface ModuleConstants { String FIELD_JAVA_STATISTICAL_DATE = "statisticalDate"; + String FIELD_SQL_TOPIC_ID = "TOPIC_ID"; + + String FIELD_JAVA_TOPIC_ID = "topicId"; + /** * 议题表决态度 赞成 * */ @@ -109,4 +118,24 @@ public interface ModuleConstants { * */ String CREATED_BY_SYSTEM = "system"; + /** + * 议题审核动作 通过 + */ + String AUDITION_TYPE_APPROVAL = "approved"; + + /** + * 议题审核动作 驳回 + */ + String AUDITION_TYPE_REJECT = "rejected"; + + /** + * 议题审核开关 开启 + */ + String AUDIT_SWITCH_OPEN = "open"; + + /** + * 议题审核开关 关闭 + */ + String AUDIT_SWITCH_CLOSE = "close"; + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml index f4fd66235a..bdf0c549db 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml @@ -30,5 +30,14 @@ WHERE CUSTOMER_ID = #{customerId} + + \ 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/ResiTopicTurnIssueFromDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java index 2800af1736..6238190998 100644 --- 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 @@ -18,24 +18,24 @@ public class ResiTopicTurnIssueFromDTO implements Serializable { /** * 议题名称 * */ - @NotBlank(message = "议题名称不能为空") + @NotBlank(message = "议题名称不能为空" ) private String issueTitle; /** * 话题Id * */ - @NotBlank(message = "话题Id不能为空") + @NotBlank(message = "话题Id不能为空" ) private String topicId; /** * 建议 * */ - @NotBlank(message = "建议不能为空") + @NotBlank(message = "建议不能为空" ) private String suggestion; /** * 用户Id * */ - @NotBlank(message = "用户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/ResiTopicShiftIssueInitResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java index 3984b68fa5..8dbd5c2e35 100644 --- 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 @@ -44,4 +44,14 @@ public class ResiTopicShiftIssueInitResultDTO implements Serializable { * 话题发布时间 * */ private Long releaseTime; + + /** + * 申请id 需要调用issue服务生成一条application或者拿到历史application(有且仅有一条)再返回 + */ + private String issueApplicationId; + + /** + * 审核状态。under_auditting:审核中,approved:通过,rejected:驳回 不会有approved状态,因为已经转议题的话题不能再触发转议题 + */ + private String applyStatus; } 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 bb8a8d4b9d..19aed166d8 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 @@ -4,6 +4,7 @@ import com.epmet.commons.tools.annotation.LoginUser; 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.result.FirstTopicShiftedToIssueApplicationResultDTO; import com.epmet.modules.topic.service.ResiTopicService; import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; @@ -236,6 +237,35 @@ public class ResiTopicController { return new Result(); } + /** + * @Description 话题转议题 + * @param topicTurnIssueFromDTO + * @param tokenDto + * @author wangc + * @date 2020.05.13 19:08 + **/ + @PostMapping("turnintoissuev2") + public Result turnIntoIssueV2(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO){ + topicTurnIssueFromDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(topicTurnIssueFromDTO); + return new Result().ok(topicService.shiftIssueV2(topicTurnIssueFromDTO)); + } + + /** + * @Description 话题转议题-重新编辑提交 + * @param tokenDto + * @param param + * @return com.epmet.commons.tools.utils.Result + * @author wangc + * @date 2020.11.20 14:19 + */ + @PostMapping("editissueapplication") + public Result editIssueApplication(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicTurnIssueFromDTO param){ + param.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(param); + return new Result().ok(topicService.shiftIssueV2(param)); + } + /** * @Description 政府端查看议题详情时的话题相关信息 * @param govTopicIssueInfoFormDTO 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 620ec74485..26115713eb 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 @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO; import com.epmet.modules.member.entity.ResiGroupMemberEntity; import com.epmet.modules.topic.entity.ResiTopicEntity; import com.epmet.resi.group.dto.member.form.RemoveMemberFormDTO; @@ -248,6 +249,15 @@ public interface ResiTopicService extends BaseService { **/ void shiftIssue(ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO); + /** + * @Description 话题转议题 添加内容审核 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.20 10:26 + */ + FirstTopicShiftedToIssueApplicationResultDTO shiftIssueV2(ResiTopicTurnIssueFromDTO param); + /** * @Description 政府端查看议题详情时的话题相关信息 * @param govTopicIssueInfoFormDTO 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 d26ebb563e..4b862329b3 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 @@ -37,12 +37,18 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constant.OrgInfoConstant; import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.dto.result.CommonDataFilterResultDTO; +import com.epmet.dto.result.IssueInitiatorResultDTO; +import com.epmet.dto.result.UserResiInfoResultDTO; +import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.modules.constant.GroupMemberConstant; import com.epmet.modules.constant.ResiGroupRedisKeys; import com.epmet.modules.feign.EpmetUserFeignClient; @@ -153,6 +159,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl param = new HashMap<>(); param.put(ModuleConstant.FILED_TOPIC_ID_HUMP,topicIdFormDTO.getTopicId()); + Result> record = issueOpenFeignClient.list(param); + if(!record.success()){ + log.error("com.epmet.modules.topic.service.impl.ResiTopicServiceImpl.initTopicInfoWhenShift,查询转议题提交记录失败,话题Id:{}",topicIdFormDTO.getTopicId()); + throw new RenException(ModuleConstant.FAILED_QUERY_ISSUE_APPLICATION_RECORD); + } + if(!CollectionUtils.isEmpty(record.getData())){ + if(record.getData().size() > NumConstant.ONE){ + log.error("com.epmet.modules.topic.service.impl.ResiTopicServiceImpl.initTopicInfoWhenShift,查出多条转移提提交记录,话题Id:{}",topicIdFormDTO.getTopicId()); + } + result.setIssueApplicationId(record.getData().get(NumConstant.ZERO).getId()); + result.setApplyStatus(record.getData().get(NumConstant.ZERO).getApplyStatus()); + } + return result; } throw new RenException(ModuleConstant.FAILED_QUERY_TOPIC_INFO); } @@ -1388,6 +1412,127 @@ public class ResiTopicServiceImpl extends BaseServiceImpl textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScan); + if (!textSyncScanResult.success()) { + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } else { + if (!textSyncScanResult.getData().isAllPass()) { + log.error(String.format(TopicConstant.SHIFT_ISSUE, issueTitle, suggestion)); + throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode()); + } + } + } + FirstTopicShiftedToIssueApplicationResultDTO result = null; + + //1.统一时间(群组服务 -> 议题服务) + Date now = new Date(); + //2.调用gov-org获取数据权限 + ResiTopicAndGroupResultDTO group = baseDao.getGroupInfoByTopicId(topicTurnIssueFromDTO.getTopicId()); + if(null == group) { + throw new RenException(ModuleConstant.FAILURE_TO_TURN_ISSUE); + } + TopicInfoFormDTO topicId = new TopicInfoFormDTO(); + topicId.setTopicId(topicTurnIssueFromDTO.getTopicId()); + Integer issueCount = govIssueFeignClient.checkTopicShiftIssue(topicId).getData(); + if (issueCount != NumConstant.ZERO){ + throw new RenException(ModuleConstant.ALREADY_SHIFT_ISSUE); + } + 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())); + issueInfo.setGroupId(group.getGroupId()); + //4.调用gov-issue新增议题 + Result issueResult = issueOpenFeignClient.topicShiftedToIssueV2(issueInfo); + if (issueResult == null || !issueResult.success() || null == issueResult.getData()) { + throw new RenException(ModuleConstant.CREATE_ISSUE_ERROR); + } + + result = issueResult.getData(); + ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.SwitchRequiredGroup.class); + if(StringUtils.equals("close",result.getAuditSwitch())) { + ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.ForbidAuditionGroup.class); + //5.修改话题shiftIssue字段 + ResiTopicEntity topic2Upd = new ResiTopicEntity(); + topic2Upd.setId(topicTurnIssueFromDTO.getTopicId()); + topic2Upd.setUpdatedBy(topicTurnIssueFromDTO.getUserId()); + topic2Upd.setShiftIssue(Boolean.TRUE); + topic2Upd.setIssueId(issueResult.getData().getIssueId()); + 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); + } + } else logger.warn(ModuleConstant.FAILURE_TO_UPDATE_TOPIC); + //7.更新组统计信息 议题数量+1 + resiGroupStatisticalDao.incryTotalIssues(group.getGroupId()); + if (null != groupCache && null != groupCache.getGroupStatisticalInfo()) { + groupCache.getGroupStatisticalInfo().setTotalIssues( + null == groupCache.getGroupStatisticalInfo().getTotalIssues() ? NumConstant.ONE + : groupCache.getGroupStatisticalInfo().getTotalIssues() + NumConstant.ONE + ); + resiGroupRedis.set(groupCache); + } + } + else { + ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class); + } + + }else throw new RenException(dataFilterResult.getMsg()); + + return result; + + } + /** * @Description 政府端查看议题详情时的话题相关信息 * @param govTopicIssueInfoFormDTO 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 1557752113..98db4b01e5 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 @@ -287,6 +287,11 @@ public interface ModuleConstant extends Constant { * */ String DATE_FORMAT_PARSE_FAILURE = "日期格式转换失败,异常信息:%s"; + /** + * 查询转议题提交记录失败 + */ + String FAILED_QUERY_ISSUE_APPLICATION_RECORD = "查询转议题提交记录失败"; + /** * 话题转议题失败 * */ @@ -325,6 +330,8 @@ public interface ModuleConstant extends Constant { String FILED_TOPIC_ID = "TOPIC_ID"; + String FILED_TOPIC_ID_HUMP = "topicId"; + String FIELD_OPERATION_TYPE = "OPERATION_TYPE"; String CLOSED_TOPIC_REASON_PREFIX="话题已关闭:";