Browse Source

Merge remote-tracking branch 'origin/dev_issue_audit' into dev_temp

dev_shibei_match
wangchao 5 years ago
parent
commit
acf87a36be
  1. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java
  2. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java
  3. 44
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java
  4. 35
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  5. 37
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  6. 14
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java
  7. 5
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java
  8. 29
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
  9. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java
  10. 1
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java
  11. 9
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueCustomerParameterService.java
  12. 22
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
  13. 4
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java
  14. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java
  15. 106
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  16. 29
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java
  17. 9
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml
  18. 10
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java
  19. 30
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
  20. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
  21. 145
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  22. 7
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java

41
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;
}

41
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;
}

44
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;
}

35
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<List<ApplicationHistoryResDTO>> queryByIssueApplicationId(@RequestBody IssueApplicationIdFormDTO formDTO);
/**
* @Description 根据条件查询议题申请信息
* @param params
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.IssueApplicationDTO>>
* @author wangc
* @date 2020.11.18 15:47
*/
@GetMapping("/gov/issue/issueapplication/list")
Result<List<IssueApplicationDTO>> list(@RequestParam Map<String, Object> 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<FirstTopicShiftedToIssueApplicationResultDTO> topicShiftedToIssueV2(@RequestBody IssueShiftedFromTopicFormDTO param);
}

37
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<List<ApplicationHistoryResDTO>> queryByIssueApplicationId(IssueApplicationIdFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "queryByIssueApplicationId", formDTO);
}
/**
* @Description 根据条件查询议题申请信息
* @param params
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.IssueApplicationDTO>>
* @author wangc
* @date 2020.11.18 15:47
*/
@Override
public Result<List<IssueApplicationDTO>> list(Map<String, Object> 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<FirstTopicShiftedToIssueApplicationResultDTO> topicShiftedToIssueV2(IssueShiftedFromTopicFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "topicShiftedToIssueV2", param);
}
}

14
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java

@ -136,4 +136,18 @@ public class IssueApplicationController {
List<IssueApplicationResDTO> list=issueApplicationService.listIssueApp(formDTO);
return new Result<List<IssueApplicationResDTO>>().ok(list);
}
/**
* @Description 根据条件查询议题申请信息
* @param params
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.IssueApplicationDTO>>
* @author wangc
* @date 2020.11.18 15:47
*/
@GetMapping("list")
public Result<List<IssueApplicationDTO>> list(@RequestParam Map<String, Object> params){
//此处限制必须传条件,不允许全查
AssertUtils.isMapEmpty(params);
return new Result<List<IssueApplicationDTO>>().ok(issueApplicationService.list(params));
}
}

5
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<List<ApplicationHistoryWorkResultDTO>> applicationHistoryWork(@RequestBody ApplicationHistoryWorkFormDTO applicationHistoryWorkFormDTO){
ValidatorUtils.validateEntity(applicationHistoryWorkFormDTO,ApplicationHistoryWorkFormDTO.ApplicationHistoryWork.class);

29
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<String> issueShiftedToTopic(@RequestBody IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO){
ValidatorUtils.validateEntity(issueShiftedFromTopicFormDTO);
ValidatorUtils.validateEntity(issueShiftedFromTopicFormDTO, IssueShiftedFromTopicFormDTO.IssueGenerationGroup.class);
return new Result<String>().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<FirstTopicShiftedToIssueApplicationResultDTO> topicShiftedToIssueV2(@RequestBody IssueShiftedFromTopicFormDTO param){
ValidatorUtils.validateEntity(param, IssueShiftedFromTopicFormDTO.PublicIssueGroup.class);
return new Result<FirstTopicShiftedToIssueApplicationResultDTO>().ok(
issueService.topicShiftedToIssueV2(param)
);
}
/**
* @Description 获取表决中议题列表
* @param issueListFormDTO

8
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java

@ -52,4 +52,12 @@ public interface IssueCustomerParameterDao extends BaseDao<IssueCustomerParamete
*/
int deleteParamByCustomer(@Param("customerId") String customerId);
/**
* @Description 查询客户下是否启用议题审核机制
* @param customerId
* @return java.lang.String
* @author wangc
* @date 2020.11.19 14:11
*/
String selectIssueAuditSwitchIfOpen(@Param("customerId") String customerId);
}

1
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java

@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.form.IssueAppQueryFormDTO;
import com.epmet.dto.result.IssueApplicationResDTO;
import com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO;
import com.epmet.entity.IssueApplicationEntity;
import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO;
import com.epmet.resi.group.dto.group.form.ApplicationHistoryFormDTO;

9
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueCustomerParameterService.java

@ -121,4 +121,13 @@ public interface IssueCustomerParameterService extends BaseService<IssueCustomer
* @return void
*/
void reviewDefault(ParameterFormDTO formDTO);
/**
* @Description 查看客户是否启用议题审核机制
* @param customerId
* @return java.lang.String
* @author wangc
* @date 2020.11.19 14:15
*/
String checkIssueAuditSwitchIfOpen(String customerId);
}

22
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java

@ -132,6 +132,26 @@ public interface IssueService extends BaseService<IssueEntity> {
**/
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<IssueEntity> {
* @return java.util.List<com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO>
*/
List<GroupClosedListResultDTO> getClosedListByGroup(AllIssueFormDTO formDTO);
//FirstTopicShiftedToIssueApplicationResultDTO TopicShiftedToIssueFirstly();
}

4
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<IssueApplicatio
private QueryWrapper<IssueApplicationEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
String topicId = (String)params.get(ModuleConstants.FIELD_JAVA_TOPIC_ID);
QueryWrapper<IssueApplicationEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
wrapper.eq(StringUtils.isNotBlank(topicId), ModuleConstants.FIELD_SQL_TOPIC_ID, topicId);
return wrapper;
}

12
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<IssueCust
baseDao.deleteParamByCustomer(formDTO.getCustomerId());
}
/**
* @Description 查看客户是否启用议题审核机制
* @param customerId
* @return java.lang.String
* @author wangc
* @date 2020.11.19 14:15
*/
@Override
public String checkIssueAuditSwitchIfOpen(String customerId) {
return baseDao.selectIssueAuditSwitchIfOpen(customerId);
}
}

106
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -16,6 +16,7 @@ import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.utils.ConvertUtils;
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.IssueConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageConstant;
@ -23,9 +24,7 @@ import com.epmet.dao.IssueDao;
import com.epmet.dao.IssueProcessDao;
import com.epmet.dao.IssueProjectRelationDao;
import com.epmet.dao.IssueVoteStatisticalDao;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.IssueProcessDTO;
import com.epmet.dto.IssueVoteStatisticalDTO;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.IssueEntity;
@ -46,10 +45,7 @@ import com.epmet.resi.group.dto.topic.form.TopicIdListFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.service.IssueProcessService;
import com.epmet.service.IssueProjectRelationService;
import com.epmet.service.IssueService;
import com.epmet.service.IssueVoteStatisticalService;
import com.epmet.service.*;
import com.epmet.utils.ModuleConstants;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -71,6 +67,8 @@ import java.util.stream.Collectors;
@Service
public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> 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<IssueDao, IssueEntity> 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<IssueDao, IssueEntity> 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<IssueDao, IssueEntity> 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<String,Object> applicationParam = new HashMap<>();applicationParam.put(ModuleConstants.FIELD_JAVA_TOPIC_ID,param.getTopicId());
List<IssueApplicationDTO> applicationList = applicationService.list(applicationParam);
List<String> 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

29
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";
}

9
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml

@ -30,5 +30,14 @@
WHERE CUSTOMER_ID = #{customerId}
</select>
<select id="selectIssueAuditSwitchIfOpen" resultType="string">
SELECT
IFNULL(
( SELECT parameter_value FROM issue_customer_parameter WHERE del_flag = '0' AND parameter_key = 'audit_switch' AND customer_id = #{customerId} ),
( SELECT parameter_value FROM issue_customer_parameter WHERE del_flag = '0' AND parameter_key = 'audit_switch' AND customer_id = 'default' )
) AS isOpen
FROM DUAL
</select>
</mapper>

10
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;
}

30
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<FirstTopicShiftedToIssueApplicationResultDTO> turnIntoIssueV2(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO){
topicTurnIssueFromDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(topicTurnIssueFromDTO);
return new Result<FirstTopicShiftedToIssueApplicationResultDTO>().ok(topicService.shiftIssueV2(topicTurnIssueFromDTO));
}
/**
* @Description 话题转议题-重新编辑提交
* @param tokenDto
* @param param
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO>
* @author wangc
* @date 2020.11.20 14:19
*/
@PostMapping("editissueapplication")
public Result<FirstTopicShiftedToIssueApplicationResultDTO> editIssueApplication(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicTurnIssueFromDTO param){
param.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(param);
return new Result<FirstTopicShiftedToIssueApplicationResultDTO>().ok(topicService.shiftIssueV2(param));
}
/**
* @Description 政府端查看议题详情时的话题相关信息
* @param govTopicIssueInfoFormDTO

10
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<ResiTopicEntity> {
**/
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

145
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<ResiTopicDao, ResiTopi
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
@Autowired
private GovIssueOpenFeignClient issueOpenFeignClient;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
@ -1276,6 +1285,21 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
logger.error(ModuleConstant.NO_SUCH_GROUP);
result.setBelongGridName(ModuleConstant.EMPTY_STR);
}
//4.查询议题申请信息,因为审核中的议题在话题中无法体现是否被转为议题,所以需要查询一下当前话题是否已经提交申请
Map<String,Object> param = new HashMap<>(); param.put(ModuleConstant.FILED_TOPIC_ID_HUMP,topicIdFormDTO.getTopicId());
Result<List<IssueApplicationDTO>> 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<ResiTopicDao, ResiTopi
}
}
/**
* @Description 话题转议题 添加内容审核
* @param topicTurnIssueFromDTO
* @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO
* @author wangc
* @date 2020.11.20 10:26
*/
@Override
public FirstTopicShiftedToIssueApplicationResultDTO shiftIssueV2(ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO) {
//话题转议题审核:标题、建议
String issueTitle = topicTurnIssueFromDTO.getIssueTitle();
String suggestion = topicTurnIssueFromDTO.getSuggestion();
if (StringUtils.isNotBlank(issueTitle) || StringUtils.isNotBlank(suggestion)) {
TextScanParamDTO textScan = new TextScanParamDTO();
//标题
TextTaskDTO taskTitle = new TextTaskDTO();
taskTitle.setContent(issueTitle);
taskTitle.setDataId(UUID.randomUUID().toString().replace("-", ""));
textScan.getTasks().add(taskTitle);
//建议
TextTaskDTO taskSuggestion = new TextTaskDTO();
taskSuggestion.setDataId(UUID.randomUUID().toString().replace("-", ""));
taskSuggestion.setContent(suggestion);
textScan.getTasks().add(taskSuggestion);
Result<SyncScanResult> 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<CommonDataFilterResultDTO> 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<FirstTopicShiftedToIssueApplicationResultDTO> 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

7
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="话题已关闭:";

Loading…
Cancel
Save