Browse Source

Merge branch 'dev_temp' of http://121.42.41.42:7070/r/epmet-cloud into dev_temp

dev_shibei_match
liushaowen 5 years ago
parent
commit
d333748dc3
  1. 19
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java
  2. 27
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/PageFormDTO.java
  3. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  4. 2
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java
  5. 1
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationHistoryDTO.java
  6. 2
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java
  7. 22
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationDetailWorkFormDTO.java
  8. 21
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationHistoryWorkFormDTO.java
  9. 2
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonGridIdFormDTO.java
  10. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java
  11. 48
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java
  12. 20
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/UserPubAuditingIssueFormDTO.java
  13. 62
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationDetailWorkResultDTO.java
  14. 53
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryWorkResultDTO.java
  15. 44
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java
  16. 61
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/TopicInfoWorkResultDTO.java
  17. 62
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/UserPubAuditingIssueResDTO.java
  18. 46
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  19. 48
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  20. 6
      epmet-module/gov-issue/gov-issue-server/pom.xml
  21. 28
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java
  22. 54
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java
  23. 29
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
  24. 14
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java
  25. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationHistoryDao.java
  26. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java
  27. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueApplicationEntity.java
  28. 1
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueApplicationHistoryEntity.java
  29. 20
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationHistoryService.java
  30. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java
  31. 9
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueCustomerParameterService.java
  32. 23
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
  33. 63
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationHistoryServiceImpl.java
  34. 24
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java
  35. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java
  36. 231
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  37. 35
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java
  38. 2
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.4__issue_audit_addautopassed.sql
  39. 32
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml
  40. 15
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationHistoryDao.xml
  41. 9
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml
  42. 11
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  43. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java
  44. 6
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java
  45. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java
  46. 9
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailCopyResultDTO.java
  47. 10
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailResultDTO.java
  48. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/TopicInfoResultDTO.java
  49. 40
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueAuditionFormDTO.java
  50. 125
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueShiftedFromTopicFormDTO.java
  51. 18
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java
  52. 10
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java
  53. 74
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
  54. 60
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
  55. 17
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
  56. 23
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java
  57. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
  58. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/GroupIssueServiceImpl.java
  59. 22
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  60. 42
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
  61. 20
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
  62. 231
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  63. 15
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java
  64. 11
      epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml
  65. 11
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
  66. 15
      epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  67. 51
      epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/UserPubAuditingIssueResultDTO.java
  68. 22
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java
  69. 16
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java
  70. 61
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java
  71. 17
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserIdAndBadgeIdResultDTO.java
  72. 16
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  73. 8
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  74. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ResiUserBadgeDao.java
  75. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeCertificateRecordDao.java
  76. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java
  77. 64
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java
  78. 4
      epmet-user/epmet-user-server/src/main/resources/mapper/ResiUserBadgeDao.xml
  79. 12
      epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml
  80. 7
      epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml

19
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java

@ -25,7 +25,9 @@ import org.apache.ibatis.reflection.MetaObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.swing.text.html.Option;
import java.util.Date;
import java.util.Optional;
/**
* 公共字段自动填充值
@ -80,15 +82,16 @@ public class FieldMetaObjectHandler implements MetaObjectHandler {
}
public Object getCreatedByFieldValue(MetaObject metaObject) {
Object value = loginUserUtil.getLoginUserId();
if (value == null) {
Object value = null;
if (metaObject.hasGetter(FieldConstant.CREATED_BY_HUMP)) {
value = metaObject.getValue(FieldConstant.CREATED_BY_HUMP);
}
if (value == null) {
value = Constant.APP_USER_FLAG;
value = Optional.ofNullable(loginUserUtil.getLoginUserId()).orElse(Constant.APP_USER_FLAG);
}
}
return value;
}
@ -115,15 +118,15 @@ public class FieldMetaObjectHandler implements MetaObjectHandler {
}
public Object getUpdatedByFieldValue(MetaObject metaObject) {
Object value = loginUserUtil.getLoginUserId();
if (value == null) {
Object value = null;
if (metaObject.hasGetter(FieldConstant.UPDATED_BY_HUMP)) {
value = metaObject.getValue(FieldConstant.UPDATED_BY_HUMP);
}
if (value == null) {
value = Constant.APP_USER_FLAG;
value = Optional.ofNullable(loginUserUtil.getLoginUserId()).orElse(Constant.APP_USER_FLAG);
}
}
return value;
}

27
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/PageFormDTO.java

@ -0,0 +1,27 @@
package com.epmet.commons.tools.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 分页通用类
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/20 17:02
*/
@Data
public class PageFormDTO {
public interface AddUserInternalGroup {
}
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
@NotNull(message = "页码不能为空", groups = AddUserInternalGroup.class)
private Integer pageNo;
@NotNull(message = "每页数量不能为空", groups = AddUserInternalGroup.class)
private Integer pageSize;
}

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -117,7 +117,7 @@ public enum EpmetErrorCode {
OPER_EXT_APP_SECRET_RESET_FAIL(8714, "秘钥更新失败"),
OPER_UPLOAD_IMG_TYPE_ERROR(8715, "请上传PNG格式的图片"),
OPER_UPLOAD_IMG_SIZE_ERROR(8716, "请上传200*200的图片"),
USER_LIST_ROLES_BY_KEY_FAIL(8715, "根据角色key查询角色列表失败"),
USER_LIST_ROLES_BY_KEY_FAIL(8717, "根据角色key查询角色列表失败"),
// 党建声音 前端提示 88段
DRAFT_CONTENT_IS_NULL(8801, "至少需要添加一个段落"),

2
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java

@ -55,7 +55,7 @@ public class IssueApplicationDTO implements Serializable {
private String suggestion;
/**
* 审核状态under_auditing:待审核approved:通过rejected:驳回
* 审核状态under_auditing:待审核approved:通过rejected:驳回;自动通过auto_passed
*/
private String applyStatus;

1
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationHistoryDTO.java

@ -53,6 +53,7 @@ public class IssueApplicationHistoryDTO implements Serializable {
* under_auditing:待审核
* approved:审核通过
* rejected:驳回
* auto_passed:自动通过
*/
private String actionType;

2
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java

@ -158,4 +158,6 @@ public class IssueDTO implements Serializable {
* 议题转项目后-对应的项目id
*/
private String projectId;
private String issueId;
}

22
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationDetailWorkFormDTO.java

@ -0,0 +1,22 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/18 下午5:52
*/
@Data
public class ApplicationDetailWorkFormDTO implements Serializable {
private static final long serialVersionUID = 2611468185891863016L;
public interface ApplicationDetailWork{}
@NotBlank(message = "issueApplicationId不能为空",groups = {ApplicationDetailWork.class})
private String issueApplicationId;
}

21
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationHistoryWorkFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/19 下午2:05
*/
@Data
public class ApplicationHistoryWorkFormDTO implements Serializable {
private static final long serialVersionUID = -1609931427461117171L;
public interface ApplicationHistoryWork{}
@NotBlank(message = "议题ID不能为空",groups = {ApplicationHistoryWork.class})
private String issueId;
}

2
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonGridIdFormDTO.java

@ -21,5 +21,5 @@ public class CommonGridIdFormDTO implements Serializable {
@NotBlank(message = "网格Id不能为空")
private String gridId;
private String userId;
}

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

48
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,107 @@ 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;
/**
* 当userId为工作端审核人员时该项存议题发起人
*/
private String issueAuthorId;
/**
* 客户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;
private String issueId;
}

20
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/UserPubAuditingIssueFormDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 用户发起的议题列表-审核中列表 入参
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/23 9:05
*/
@Data
public class UserPubAuditingIssueFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = 6520349189385929988L;
@NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class)
private String userId;
}

62
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationDetailWorkResultDTO.java

@ -0,0 +1,62 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/18 下午5:51
*/
@Data
public class ApplicationDetailWorkResultDTO implements Serializable {
private static final long serialVersionUID = 7351552491300420108L;
/**
* 申请ID
*/
private String issueApplicationId;
/**
* 议题标题
*/
private String issueTitle;
/**
* 所属网格名称
*/
private String gridName;
/**
* 议题发起人
*/
private String issuePublisher;
/**
* 话题相关信息
*/
private TopicInfoWorkResultDTO topicInfo;
/**
* 议题建议
*/
private String issueSuggestion;
/**
* 议题发起人电话
*/
private String issuePublisherMobile;
public ApplicationDetailWorkResultDTO() {
this.issueApplicationId = "";
this.issueTitle = "";
this.gridName = "";
this.issuePublisher = "";
this.topicInfo = new TopicInfoWorkResultDTO();
this.issuePublisherMobile = "";
this.issueSuggestion = "";
}
}

53
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryWorkResultDTO.java

@ -0,0 +1,53 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/19 下午2:08
*/
@Data
public class ApplicationHistoryWorkResultDTO implements Serializable {
private static final long serialVersionUID = 6310909348304378438L;
/**
* 审核历史表id
*/
private String historyId;
/**
* under_auditing:待审核 approved:已通过 rejected:已驳回
*/
private String actionType;
/**
* 操作时间戳
*/
private Long operateTime;
/**
* 驳回理由或者审核通过理由
*/
private String reason;
/**
* 工作人员姓名
*/
private String staffName;
@JsonIgnore
private String userId;
public ApplicationHistoryWorkResultDTO() {
this.historyId = "";
this.actionType = "";
this.operateTime = NumConstant.ZERO_L;
this.reason = "";
this.staffName = "";
}
}

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

61
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/TopicInfoWorkResultDTO.java

@ -0,0 +1,61 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/11/17 10:14 上午
*/
@Data
public class TopicInfoWorkResultDTO implements Serializable {
private static final long serialVersionUID = -3445869627210569553L;
/**
* 话题id
*/
private String topicId;
/**
* 话题发表人昵称
*/
private String publishedUser;
/**
* 话题发表时间戳
*/
private Long publishedTime;
/**
* 话题内容
*/
private String topicContent;
/**
* 话题图片集合
*/
private List<String> topicImgs;
/**
* 话题发表人电话
*/
private String topicPublishMobile;
@JsonIgnore
private String topicUserId;
public TopicInfoWorkResultDTO() {
this.topicId = "";
this.publishedUser = "";
this.publishedTime = NumConstant.ZERO_L;
this.topicContent = "";
this.topicImgs = new ArrayList<>();
this.topicPublishMobile = "";
}
}

62
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/UserPubAuditingIssueResDTO.java

@ -0,0 +1,62 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 用户发起的议题列表-审核中列表 返参
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/20 16:23
*/
@Data
public class UserPubAuditingIssueResDTO implements Serializable {
private static final long serialVersionUID = -6452959808958252729L;
/**
* 申请id
*/
private String issueApplicationId;
/**
* under_auditing:待审核; rejected:驳回
*/
private String applyStatus;
/**
* 议题标题
*/
private String issueTitle;
/**
* 转议题时输入的建议
*/
private String issueSuggestion;
/**
* 网格名称 组织-网格
*/
private String gridName;
/**
* 小组名称
*/
private String groupName;
/**
* 发起时间戳
*/
private Long publishTime;
/**
* 网格id
*/
private String gridId;
/**
* 小组id
*/
private String groupId;
}

46
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调用该服务
@ -31,7 +35,7 @@ import java.util.List;
* @date 2020/6/4 13:37
*/
@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class)
// @FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class,url = "localhost:8101")
//@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class,url = "localhost:8101")
public interface GovIssueOpenFeignClient {
/**
@ -165,4 +169,44 @@ 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);
/**
* @param fomrDTO
* @author yinzuomei
* @description 查询某个用户发起的议题列表-审核中列表待审核+已驳回
* @Date 2020/11/23 9:21
**/
@PostMapping(value = "/gov/issue/issueapplication/queryuserpubauditingissues")
Result<List<UserPubAuditingIssueResDTO>> queryUserPubAuditingIssues(@RequestBody UserPubAuditingIssueFormDTO fomrDTO);
}

48
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,50 @@ 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);
}
/**
* @param fomrDTO
* @author yinzuomei
* @description 查询某个用户发起的议题列表-审核中列表待审核+已驳回
* @Date 2020/11/23 9:21
**/
@Override
public Result<List<UserPubAuditingIssueResDTO>> queryUserPubAuditingIssues(UserPubAuditingIssueFormDTO fomrDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "queryUserPubAuditingIssues", fomrDTO);
}
}

6
epmet-module/gov-issue/gov-issue-server/pom.xml

@ -90,6 +90,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-user-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

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

@ -17,6 +17,7 @@
package com.epmet.controller;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
@ -26,7 +27,9 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.form.IssueAppQueryFormDTO;
import com.epmet.dto.form.UserPubAuditingIssueFormDTO;
import com.epmet.dto.result.IssueApplicationResDTO;
import com.epmet.dto.result.UserPubAuditingIssueResDTO;
import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO;
import com.epmet.resi.group.dto.group.form.ApplicationHistoryFormDTO;
import com.epmet.resi.group.dto.group.form.ApplicationListFormDTO;
@ -136,4 +139,29 @@ 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));
}
/**
* @param fomrDTO
* @author yinzuomei
* @description 查询某个用户发起的议题列表-审核中列表待审核+已驳回
* @Date 2020/11/23 9:35
**/
@PostMapping("queryuserpubauditingissues")
public Result<List<UserPubAuditingIssueResDTO>> queryUserPubAuditingIssues(@RequestBody UserPubAuditingIssueFormDTO fomrDTO) {
ValidatorUtils.validateEntity(fomrDTO, PageFormDTO.AddUserInternalGroup.class);
return new Result<List<UserPubAuditingIssueResDTO>>().ok(issueApplicationService.queryUserPubAuditingIssues(fomrDTO));
}
}

54
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java

@ -1,19 +1,22 @@
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.constant.IssueConstant;
import com.epmet.dto.form.IssueAppQueryFormDTO;
import com.epmet.dto.form.IssueApplicationIdFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.ApplicationDetailWorkResultDTO;
import com.epmet.dto.result.ApplicationHistoryResDTO;
import com.epmet.dto.result.ApplicationHistoryWorkResultDTO;
import com.epmet.dto.result.IssueApplicationResDTO;
import com.epmet.service.IssueApplicationHistoryService;
import com.epmet.service.IssueApplicationService;
import com.epmet.service.IssueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -30,13 +33,17 @@ public class IssueAuditController {
private IssueApplicationService issueApplicationService;
@Autowired
private IssueApplicationHistoryService issueApplicationHistoryService;
@Autowired
private IssueService issueService;
/**
* @param formDTO
* @author yinzuomei
* @description 待审核|| 已驳回 列表
* @Date 2020/11/18 17:28
* @description 待审核列表
* @Date 2020/11/18 17:28
**/
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_AUDITING_LIST)
@PostMapping("underauditinglist")
public Result<List<IssueApplicationResDTO>> queryUnderAuditingList(@RequestBody IssueAppQueryFormDTO formDTO) {
formDTO.setApplyStatus(IssueConstant.UNDER_AUDITING);
@ -48,8 +55,9 @@ public class IssueAuditController {
* @param formDTO
* @author yinzuomei
* @description 已驳回 列表
* @Date 2020/11/18 17:28
* @Date 2020/11/18 17:28
**/
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_REJECTED_LIST)
@PostMapping("rejectedlist")
public Result<List<IssueApplicationResDTO>> queryRejectedList(@RequestBody IssueAppQueryFormDTO formDTO) {
formDTO.setApplyStatus(IssueConstant.REJECTED);
@ -81,4 +89,34 @@ public class IssueAuditController {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<ApplicationHistoryResDTO>>().ok(issueApplicationHistoryService.queryByIssueApplicationId(formDTO.getIssueApplicationId()));
}
/**
* @Description 待审核||已驳回 申请详情 
* @Param applicationDetailWorkFormDTO
* @author zxc
* @date 2020/11/19 下午2:26
*/
@PostMapping("applicationdetail")
public Result<ApplicationDetailWorkResultDTO> applicationDetailWork(@RequestBody ApplicationDetailWorkFormDTO applicationDetailWorkFormDTO){
ValidatorUtils.validateEntity(applicationDetailWorkFormDTO, ApplicationDetailWorkFormDTO.ApplicationDetailWork.class);
return new Result<ApplicationDetailWorkResultDTO>().ok(issueApplicationHistoryService.applicationDetailWork(applicationDetailWorkFormDTO));
}
/**
* @Description 议题详情- 根据issueId查询审核历史
* @Param applicationHistoryWorkFormDTO
* @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);
return new Result<List<ApplicationHistoryWorkResultDTO>>().ok(issueApplicationHistoryService.applicationHistoryWork(applicationHistoryWorkFormDTO));
}
@PostMapping("audit")
public Result<String> audit(@LoginUser TokenDto token, @RequestBody IssueAuditionFormDTO param){
return new Result<String>().ok(issueService.audit(token,param));
}
}

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

14
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java

@ -18,12 +18,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.form.IssueAppQueryFormDTO;
import com.epmet.dto.form.UserPubAuditingIssueFormDTO;
import com.epmet.dto.result.IssueApplicationResDTO;
import com.epmet.dto.result.UserPubAuditingIssueResDTO;
import com.epmet.entity.IssueApplicationEntity;
import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO;
import com.epmet.resi.group.dto.group.result.ApplicationDetailResultDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -52,4 +56,14 @@ public interface IssueApplicationDao extends BaseDao<IssueApplicationEntity> {
* @Date 2020/11/18 16:28
**/
List<IssueApplicationResDTO> selectList(IssueAppQueryFormDTO formDTO);
/**
* @param formDTO
* @author yinzuomei
* @description 查询某个用户发起的议题列表-审核中列表待审核+已驳回
* @Date 2020/11/23 9:37
**/
List<UserPubAuditingIssueResDTO> selectUserPubAuditingIssues(UserPubAuditingIssueFormDTO formDTO);
List<IssueApplicationDTO> selectByTopicId(@Param("topicId") String topicId);
}

10
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationHistoryDao.java

@ -19,8 +19,10 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.ApplicationHistoryResDTO;
import com.epmet.dto.result.ApplicationHistoryWorkResultDTO;
import com.epmet.entity.IssueApplicationHistoryEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -40,4 +42,12 @@ public interface IssueApplicationHistoryDao extends BaseDao<IssueApplicationHist
* @Date 2020/11/18 16:59
**/
List<ApplicationHistoryResDTO> selectListByIssueApplicationId(String issueApplicationId);
/**
* @Description 查询议题审核历史
* @Param issueId
* @author zxc
* @date 2020/11/20 上午9:39
*/
List<ApplicationHistoryWorkResultDTO> applicationHistoryWork(@Param("issueId")String issueId);
}

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

@ -51,5 +51,13 @@ public interface IssueCustomerParameterDao extends BaseDao<IssueCustomerParamete
* @return int
*/
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);
}

2
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueApplicationEntity.java

@ -51,7 +51,7 @@ public class IssueApplicationEntity extends BaseEpmetEntity {
private String suggestion;
/**
* 审核状态under_auditing:待审核approved:通过rejected:驳回
* 审核状态under_auditing:待审核approved:通过rejected:驳回;自动通过auto_passed
*/
private String applyStatus;

1
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueApplicationHistoryEntity.java

@ -49,6 +49,7 @@ public class IssueApplicationHistoryEntity extends BaseEpmetEntity {
* under_auditing:待审核
* approved:审核通过
* rejected:驳回
* auto_passed:自动通过
*/
private String actionType;

20
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationHistoryService.java

@ -20,7 +20,11 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IssueApplicationHistoryDTO;
import com.epmet.dto.form.ApplicationDetailWorkFormDTO;
import com.epmet.dto.form.ApplicationHistoryWorkFormDTO;
import com.epmet.dto.result.ApplicationDetailWorkResultDTO;
import com.epmet.dto.result.ApplicationHistoryResDTO;
import com.epmet.dto.result.ApplicationHistoryWorkResultDTO;
import com.epmet.entity.IssueApplicationHistoryEntity;
import java.util.List;
@ -101,4 +105,20 @@ public interface IssueApplicationHistoryService extends BaseService<IssueApplica
* @Date 2020/11/18 16:57
**/
List<ApplicationHistoryResDTO> queryByIssueApplicationId(String issueApplicationId);
/**
* @Description 待审核||已驳回 申请详情 
* @Param applicationDetailWorkFormDTO
* @author zxc
* @date 2020/11/19 下午2:26
*/
ApplicationDetailWorkResultDTO applicationDetailWork(ApplicationDetailWorkFormDTO applicationDetailWorkFormDTO);
/**
* @Description 议题详情- 根据issueId查询审核历史
* @Param applicationHistoryWorkFormDTO
* @author zxc
* @date 2020/11/19 下午2:26
*/
List<ApplicationHistoryWorkResultDTO> applicationHistoryWork(ApplicationHistoryWorkFormDTO applicationHistoryWorkFormDTO);
}

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

@ -21,7 +21,9 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.form.IssueAppQueryFormDTO;
import com.epmet.dto.form.UserPubAuditingIssueFormDTO;
import com.epmet.dto.result.IssueApplicationResDTO;
import com.epmet.dto.result.UserPubAuditingIssueResDTO;
import com.epmet.entity.IssueApplicationEntity;
import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO;
import com.epmet.resi.group.dto.group.form.ApplicationHistoryFormDTO;
@ -133,4 +135,12 @@ public interface IssueApplicationService extends BaseService<IssueApplicationEnt
* @Date 2020/11/18 16:26
**/
List<IssueApplicationResDTO> listIssueApp(IssueAppQueryFormDTO formDTO);
/**
* @param fomrDTO
* @author yinzuomei
* @description 查询某个用户发起的议题列表-审核中列表待审核+已驳回
* @Date 2020/11/23 9:35
**/
List<UserPubAuditingIssueResDTO> queryUserPubAuditingIssues(UserPubAuditingIssueFormDTO fomrDTO);
}

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

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

@ -2,6 +2,7 @@ package com.epmet.service;
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.dto.IssueDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
@ -132,6 +133,28 @@ 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);
String audit(TokenDto token, IssueAuditionFormDTO param);
/**
* @Description 表决中列表
* @param issueListForm

63
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationHistoryServiceImpl.java

@ -21,20 +21,32 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IssueApplicationHistoryDao;
import com.epmet.dto.IssueApplicationHistoryDTO;
import com.epmet.dto.result.ApplicationHistoryResDTO;
import com.epmet.dto.form.ApplicationDetailWorkFormDTO;
import com.epmet.dto.form.ApplicationHistoryWorkFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IssueApplicationHistoryEntity;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO;
import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.service.IssueApplicationHistoryService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 话题转议题审核历史表
@ -45,6 +57,11 @@ import java.util.Map;
@Service
public class IssueApplicationHistoryServiceImpl extends BaseServiceImpl<IssueApplicationHistoryDao, IssueApplicationHistoryEntity> implements IssueApplicationHistoryService {
@Autowired
private ResiGroupOpenFeignClient resiGroupOpenFeignClient;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Override
public PageData<IssueApplicationHistoryDTO> page(Map<String, Object> params) {
IPage<IssueApplicationHistoryEntity> page = baseDao.selectPage(
@ -108,4 +125,48 @@ public class IssueApplicationHistoryServiceImpl extends BaseServiceImpl<IssueApp
return baseDao.selectListByIssueApplicationId(issueApplicationId);
}
/**
* @Description 待审核||已驳回 申请详情 
* @Param applicationDetailWorkFormDTO
* @author zxc
* @date 2020/11/19 下午2:26
*/
@Override
public ApplicationDetailWorkResultDTO applicationDetailWork(ApplicationDetailWorkFormDTO applicationDetailWorkFormDTO) {
ApplicationDetailFormDTO formDTO = new ApplicationDetailFormDTO();
formDTO.setIssueApplicationId(applicationDetailWorkFormDTO.getIssueApplicationId());
Result<ApplicationDetailCopyResultDTO> result = resiGroupOpenFeignClient.applicationDetail(formDTO);
if (!result.success()){
throw new RenException("工作端查询待审核||已驳回 申请详情失败......");
}
if (null == result.getData()){
return new ApplicationDetailWorkResultDTO();
}
ApplicationDetailWorkResultDTO applicationDetailWorkResultDTO = ConvertUtils.sourceToTarget(result.getData(), ApplicationDetailWorkResultDTO.class);
TopicInfoWorkResultDTO topicInfoWorkResultDTO = ConvertUtils.sourceToTarget(result.getData().getTopicInfo(), TopicInfoWorkResultDTO.class);
applicationDetailWorkResultDTO.setTopicInfo(topicInfoWorkResultDTO);
return applicationDetailWorkResultDTO;
}
/**
* @Description 议题详情- 根据issueId查询审核历史
* @Param applicationHistoryWorkFormDTO
* @author zxc
* @date 2020/11/19 下午2:26
*/
@Override
public List<ApplicationHistoryWorkResultDTO> applicationHistoryWork(ApplicationHistoryWorkFormDTO applicationHistoryWorkFormDTO) {
List<ApplicationHistoryWorkResultDTO> result = baseDao.applicationHistoryWork(applicationHistoryWorkFormDTO.getIssueId());
if (CollectionUtils.isEmpty(result)){
return new ArrayList<>();
}
List<String> userIds = result.stream().map(m -> m.getUserId()).collect(Collectors.toList());
Result<List<UserBaseInfoResultDTO>> listResult = epmetUserOpenFeignClient.queryUserBaseInfo(userIds);
if (!listResult.success()){
throw new RenException("议题审核历史查询用户基本信息失败......");
}
result.forEach(r -> listResult.getData().stream().filter(u -> r.getUserId().equals(u.getUserId())).forEach(u -> r.setStaffName(u.getRealName())));
return result;
}
}

24
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java

@ -26,7 +26,9 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.IssueApplicationDao;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.form.IssueAppQueryFormDTO;
import com.epmet.dto.form.UserPubAuditingIssueFormDTO;
import com.epmet.dto.result.IssueApplicationResDTO;
import com.epmet.dto.result.UserPubAuditingIssueResDTO;
import com.epmet.entity.IssueApplicationEntity;
import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO;
import com.epmet.resi.group.dto.group.form.ApplicationHistoryFormDTO;
@ -36,6 +38,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;
@ -64,17 +67,18 @@ public class IssueApplicationServiceImpl extends BaseServiceImpl<IssueApplicatio
@Override
public List<IssueApplicationDTO> list(Map<String, Object> params) {
List<IssueApplicationEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, IssueApplicationDTO.class);
//List<IssueApplicationEntity> entityList = baseDao.selectByTopicId(getWrapper(params));
return baseDao.selectByTopicId((String)params.get(ModuleConstants.FIELD_JAVA_TOPIC_ID));
//return ConvertUtils.sourceToTarget(entityList, IssueApplicationDTO.class);
}
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;
}
@ -118,6 +122,18 @@ public class IssueApplicationServiceImpl extends BaseServiceImpl<IssueApplicatio
return baseDao.selectList(formDTO);
}
/**
* @param formDTO
* @author yinzuomei
* @description 查询某个用户发起的议题列表-审核中列表待审核+已驳回
* @Date 2020/11/23 9:35
**/
@Override
public List<UserPubAuditingIssueResDTO> queryUserPubAuditingIssues(UserPubAuditingIssueFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(),formDTO.getPageSize());
return baseDao.selectUserPubAuditingIssues(formDTO);
}
/**
* @Description 待审核||已驳回 申请详情
* @Param applicationDetailFormDTO

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

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

@ -13,19 +13,18 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.dto.TokenDto;
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;
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;
@ -42,14 +41,12 @@ import com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO;
import com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO;
import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO;
import com.epmet.resi.group.dto.topic.form.ResiTopicTurnIssueFromDTO;
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 +68,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 +92,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 +99,19 @@ 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 EpmetUserOpenFeignClient userOpenFeignClient;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
@ -286,6 +290,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
issueVoteDetailRedis.set(voteInitCache);
//4.该网格下表决中议题总数量+1
govIssueRedis.addWorkGrassrootsIssueRedDotValue(issueShiftedFromTopicFormDTO.getGridId());
if(StringUtils.isNotBlank(issueShiftedFromTopicFormDTO.getIssueId())) issueDTO.setId(issueShiftedFromTopicFormDTO.getIssueId());
return issueDTO.getId();
}
logger.warn(String.format(
@ -295,6 +301,207 @@ 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
@Transactional(rollbackFor = Exception.class)
public FirstTopicShiftedToIssueApplicationResultDTO topicShiftedToIssueV2(IssueShiftedFromTopicFormDTO param) {
FirstTopicShiftedToIssueApplicationResultDTO result = new FirstTopicShiftedToIssueApplicationResultDTO();
//0.判断此次来源是否审核,是居民端还是工作端
boolean isStaffAudition = null != param.getAudition();
//1.查询该客户下是否开启议题审核
//为了防止当工作人员审核时,议题审核开关被关闭,这时统一视为审核开启,将工作端的审核动作继续进行
boolean ifOpen = isStaffAudition ? true :
!StringUtils.equals(ModuleConstants.AUDIT_SWITCH_CLOSE,configurationParameterService.checkIssueAuditSwitchIfOpen(param.getCustomerId()));
//初始化缺省状态 : 审核中
String defaultStatusUnderAuditing = isStaffAudition ? param.getAudition().getActionType() :
( ifOpen ? ModuleConstants.ISSUE_APPLICATION_STATUS_UNDER_AUDITING: ModuleConstants.AUDITION_TYPE_AUTO_PASSED);
result.setAuditSwitch(ifOpen ? ModuleConstants.AUDIT_SWITCH_OPEN : ModuleConstants.AUDIT_SWITCH_CLOSE);
//2.居民端组长提交议题审核
//默认打开
//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<>();
boolean ifRepeat = false;
//没有历史提交记录
if (CollectionUtils.isEmpty(applicationList)) {
//审核开关开启
if(ifOpen) {
//首次提交 新增application
IssueApplicationDTO newApplication = ConvertUtils.sourceToTarget(param, IssueApplicationDTO.class);
newApplication.setApplyStatus(defaultStatusUnderAuditing);
newApplication.setId(UUID.randomUUID().toString().replace("-", ""));
applicationService.save(newApplication);
applyIds.add(newApplication.getId());
}
} else {
//重新提交 或 工作端审核议题 更新application
if(!isStaffAudition) ifRepeat = true;
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());
carrier.setPassedReason(isStaffAudition ? param.getAudition().getReason() : null);
carrier.setIssueId(isStaffAudition ? param.getIssueId() : null);
carrier.setUpdatedTime(param.getCreatedTime());
carrier.setUpdatedBy(param.getUserId());
applicationService.update(carrier);
applyIds.add(apply.getId());
});
if(!ifRepeat) {
//新增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);
if (!ifOpen) {
IssueApplicationHistoryDTO repeatApplyRecord = new IssueApplicationHistoryDTO();
repeatApplyRecord.setActionType(ModuleConstants.ISSUE_APPLICATION_STATUS_UNDER_AUDITING);
repeatApplyRecord.setCreatedTime(param.getCreatedTime());
repeatApplyRecord.setCustomerId(param.getCustomerId());
repeatApplyRecord.setIssueApplicationId(id);
historyService.save(repeatApplyRecord);
}
});
}
result.setIssueApplicationId(applyIds.iterator().next());
//只有当审核开关关闭 或 工作端人员审核通过时才生成议题
if(!ifOpen || StringUtils.equals(ModuleConstants.AUDITION_TYPE_APPROVAL,defaultStatusUnderAuditing)){
ValidatorUtils.validateEntity(param, IssueShiftedFromTopicFormDTO.IssueGenerationGroup.class);
if(isStaffAudition) param.setUserId(param.getIssueAuthorId());
result.setIssueId(issueShiftedToTopic(param));
}
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public String audit(TokenDto token, IssueAuditionFormDTO param) {
if (StringUtils.isNotBlank(param.getReason())) {
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
TextTaskDTO taskDTO = new TextTaskDTO();
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
taskDTO.setContent(param.getReason());
textScanParamDTO.getTasks().add(taskDTO);
Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!textSyncScanResult.success()){
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode());
}
}
}
Date unifiedDate = new Date();
IssueApplicationDTO application = applicationService.get(param.getIssueApplicationId());
if(null == application) throw new RenException("没有相应的议题申请信息");
IssueApplicationDTO app2update = new IssueApplicationDTO();
app2update.setId(param.getIssueApplicationId());
app2update.setApplyStatus(param.getActionType());
app2update.setUpdatedBy(token.getUserId());
app2update.setUpdatedTime(unifiedDate);
IssueApplicationHistoryDTO history2add = new IssueApplicationHistoryDTO();
history2add.setIssueApplicationId(param.getIssueApplicationId());
history2add.setReason(param.getReason());
history2add.setActionType(param.getActionType());
history2add.setCreatedTime(unifiedDate);
history2add.setCreatedBy(token.getUserId());
history2add.setCustomerId(application.getCustomerId());
//historyService.save(history2add);
//if(!StringUtils.equals(ModuleConstants.AUDITION_TYPE_REJECT,param.getActionType())){
app2update.setPassedReason(param.getReason());
ResiTopicTurnIssueFromDTO form = new ResiTopicTurnIssueFromDTO();
form.setActionType(param.getActionType());
form.setUnifiedDate(unifiedDate);form.setUserId(application.getCreatedBy());form.setTopicId(application.getTopicId());form.setIssueId(UUID.randomUUID().toString().replaceAll("-", ""));
Result<com.epmet.resi.group.dto.topic.form.IssueShiftedFromTopicFormDTO > topicInfo = resiGroupOpenFeignClient.fetchTopicInfoWhenAuditIssue(form);
if(topicInfo.success() && null != topicInfo.getData()){
CommonGridIdFormDTO grid = new CommonGridIdFormDTO();
grid.setGridId(application.getGridId());
grid.setUserId(token.getUserId());
Result<CommonDataFilterResultDTO> dataFilter = govOrgOpenFeignClient.gridDataFilter(grid);
if(dataFilter.success() && null != dataFilter.getData()){
com.epmet.resi.group.dto.topic.form.IssueShiftedFromTopicFormDTO issueParam = topicInfo.getData();
IssueShiftedFromTopicFormDTO issueParam2 =
ConvertUtils.sourceToTarget(issueParam, IssueShiftedFromTopicFormDTO.class);
issueParam2.setOrgId(dataFilter.getData().getAgencyId());
issueParam2.setOrgIdPath(dataFilter.getData().getOrgIdPath());
issueParam2.setOrgName(dataFilter.getData().getOrgName());
issueParam2.setIssueTitle(application.getIssueTitle());issueParam2.setSuggestion(application.getSuggestion());
//staffName
StaffBasicInfoFromDTO staffParam = new StaffBasicInfoFromDTO(); staffParam.setStaffId(token.getUserId());
Result<BasicInfoResultDTO> staffBasicInfo = userOpenFeignClient.getStaffBasicInfo(staffParam);
if(staffBasicInfo.success() && null != staffBasicInfo.getData()) {
param.setStaffName(staffBasicInfo.getData().getRealName());
}
issueParam2.setAudition(param);
FirstTopicShiftedToIssueApplicationResultDTO issueResult = topicShiftedToIssueV2(issueParam2);
app2update.setIssueId(issueResult.getIssueId());
}
}else throw new RenException(topicInfo.getInternalMsg());
//}
//applicationService.update(app2update);
return app2update.getIssueId();
}
/**
* @Description 表决中列表
* @param issueListForm

35
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java

@ -22,6 +22,10 @@ public interface ModuleConstants {
* */
String ISSUE_STATUS_CLOSED = "closed";
/**
* 议题审核状态 审核中
*/
String ISSUE_APPLICATION_STATUS_UNDER_AUDITING = "under_auditing";
/**
* 议题来源居民段话题
* */
@ -81,6 +85,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 +117,31 @@ public interface ModuleConstants {
* */
String CREATED_BY_SYSTEM = "system";
/**
* 议题审核动作 通过
*/
String AUDITION_TYPE_APPROVAL = "approved";
/**
* 当议题开关关闭时申请和申请历史的状态为自动通过
* 如果是首次提交不生成申请和申请历史记录
* 该值只适用于二次提交时审核开关被关闭的情况
*/
String AUDITION_TYPE_AUTO_PASSED = "auto_passed";
/**
* 议题审核动作 驳回
*/
String AUDITION_TYPE_REJECT = "rejected";
/**
* 议题审核开关 开启
*/
String AUDIT_SWITCH_OPEN = "open";
/**
* 议题审核开关 关闭
*/
String AUDIT_SWITCH_CLOSE = "close";
}

2
epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.4__issue_audit_addautopassed.sql

@ -0,0 +1,2 @@
ALTER TABLE issue_application MODIFY APPLY_STATUS VARCHAR(32) NOT NULL comment '审核状态:under_auditing:待审核;approved:通过;rejected:驳回;自动通过:auto_passed';
alter table issue_application_history modify ACTION_TYPE varchar(32) not null comment 'under_auditing:提交审核;approved:审核通过,rejected:驳回;auto_passed:自动通过';

32
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml

@ -39,4 +39,36 @@
ORDER BY
ia.UPDATED_TIME DESC
</select>
<!-- 查询某个用户发起的议题列表-审核中列表(待审核+已驳回) -->
<select id="selectUserPubAuditingIssues" parameterType="com.epmet.dto.form.UserPubAuditingIssueFormDTO"
resultType="com.epmet.dto.result.UserPubAuditingIssueResDTO">
SELECT
ia.id AS issueApplicationId,
ia.APPLY_STATUS AS applyStatus,
ia.ISSUE_TITLE AS issueTitle,
ia.SUGGESTION AS issueSuggestion,
'' AS gridName,
'' AS groupName,
unix_timestamp( ia.CREATED_TIME ) AS publishTime,
ia.GRID_ID AS gridId,
ia.GROUP_ID AS groupId
FROM
issue_application ia
WHERE
ia.DEL_FLAG = '0'
AND ia.CREATED_BY =#{userId}
AND (
ia.APPLY_STATUS = 'under_auditing'
OR ia.APPLY_STATUS = 'rejected')
order by ia.CREATED_TIME desc
</select>
<select id="selectByTopicId" resultType="com.epmet.dto.IssueApplicationDTO">
SELECT
*
FROM issue_application
WHERE DEL_FLAG = '0'
AND TOPIC_ID = #{topicId}
</select>
</mapper>

15
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationHistoryDao.xml

@ -19,4 +19,19 @@
iah.CREATED_TIME DESC
</select>
<!-- 查询议题审核历史 -->
<select id="applicationHistoryWork" resultType="com.epmet.dto.result.ApplicationHistoryWorkResultDTO">
SELECT
iah.ID AS historyId,
iah.ACTION_TYPE,
UNIX_TIMESTAMP(iah.CREATED_TIME) AS operateTime,
iah.REASON,
iah.CREATED_BY AS userId
FROM issue_application_history iah
LEFT JOIN issue_application ia ON ia.ID = iah.ISSUE_APPLICATION_ID
WHERE iah.DEL_FLAG = '0'
AND ia.DEL_FLAG = '0'
AND ia.ISSUE_ID = #{issueId}
</select>
</mapper>

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>

11
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml

@ -127,7 +127,16 @@
revision
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{id},
<choose>
<when test='null != issueId and "" != issueId'>
#{issueId},
</when>
<otherwise>
#{id},
</otherwise>
</choose>
<if test ='null != issueStatus'>
#{issueStatus},
</if>

9
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java

@ -305,4 +305,13 @@ public interface GovOrgOpenFeignClient {
@PostMapping("/gov/org/customergrid/getcustomergridbygridid")
Result<CustomerGridDTO> getCustomerGridByGridId(@RequestBody CustomerGridFormDTO customerGridFormDTO);
/**
* @param gridForm
* @return Result<CommonDataFilterResultDTO>
* @Author wangc
* @Description 获取网格所需要的数据权限内容
* @Date 2020/3/30 10:45
**/
@PostMapping("/gov/org/customergrid/griddatafilter")
Result<CommonDataFilterResultDTO> gridDataFilter(CommonGridIdFormDTO gridForm);
}

6
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java

@ -177,4 +177,10 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient {
public Result<CustomerGridDTO> getCustomerGridByGridId(CustomerGridFormDTO customerGridFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getCustomerGridByGridId", customerGridFormDTO);
}
@Override
public Result<CommonDataFilterResultDTO> gridDataFilter(CommonGridIdFormDTO gridForm) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "gridDataFilter", gridForm);
}
}

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java

@ -566,6 +566,10 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
@Override
public Result<List<AllGridsByUserIdResultDTO>> getGridListByGridIds(List<String> gridIdList) {
Result<List<AllGridsByUserIdResultDTO>> result = new Result<List<AllGridsByUserIdResultDTO>>();
if (gridIdList.size() < NumConstant.ONE) {
logger.error("根据网格Id集合获取网格列表信息-传入的网格Id集合为空数组!");
return result;
}
List<AllGridsByUserIdResultDTO> list = baseDao.selectGridByIds(gridIdList);
return result.ok(list);
}

9
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailCopyResultDTO.java

@ -33,8 +33,16 @@ public class ApplicationDetailCopyResultDTO implements Serializable {
*/
private String issuePublisher;
/**
* 议题建议
*/
private String issueSuggestion;
/**
* 议题发起人电话
*/
private String issuePublisherMobile;
/**
* 话题相关信息
*/
@ -47,5 +55,6 @@ public class ApplicationDetailCopyResultDTO implements Serializable {
this.issueSuggestion = "";
this.issuePublisher = "";
this.topicInfo = new TopicInfoResultDTO();
this.issuePublisherMobile = "";
}
}

10
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailResultDTO.java

@ -38,8 +38,16 @@ public class ApplicationDetailResultDTO implements Serializable {
*/
private TopicInfoResultDTO topicInfo;
/**
* 议题建议
*/
private String issueSuggestion;
/**
* 议题发起人电话
*/
private String issuePublisherMobile;
private String gridId;
private String topicId;
@ -52,5 +60,7 @@ public class ApplicationDetailResultDTO implements Serializable {
this.gridName = "";
this.issuePublisher = "";
this.topicInfo = new TopicInfoResultDTO();
this.issueSuggestion = "";
this.issuePublisherMobile = "";
}
}

6
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/TopicInfoResultDTO.java

@ -42,6 +42,11 @@ public class TopicInfoResultDTO implements Serializable {
*/
private List<String> topicImgs;
/**
* 话题发表人电话
*/
private String topicPublishMobile;
@JsonIgnore
private String topicUserId;
@ -51,5 +56,6 @@ public class TopicInfoResultDTO implements Serializable {
this.publishedTime = NumConstant.ZERO_L;
this.topicContent = "";
this.topicImgs = new ArrayList<>();
this.topicPublishMobile = "";
}
}

40
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueAuditionFormDTO.java

@ -0,0 +1,40 @@
package com.epmet.resi.group.dto.topic.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
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;
}

125
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueShiftedFromTopicFormDTO.java

@ -0,0 +1,125 @@
package com.epmet.resi.group.dto.topic.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
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;
public interface IssueGenerationGroup extends CustomerClientShowGroup{}
public interface PublicIssueGroup extends CustomerClientShowGroup{}
/**
* 话题Id
* */
@NotBlank(message = "话题Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class})
private String topicId;
/**
* 议题名称
* */
@NotBlank(message = "议题名称不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class})
private String issueTitle;
/**
* 建议
* */
@NotBlank(message = "议题建议不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class})
private String suggestion;
/**
* 议题发起人Id
* */
@NotBlank(message = "议题发起/审核人Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class})
private String userId;
/**
* 当userId为工作端审核人员时该项存议题发起人
*/
private String issueAuthorId;
/**
* 客户Id
* */
@NotBlank(message = "客户不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class})
private String customerId;
/**
* 网格Id
* */
@NotBlank(message = "网格Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class})
private String gridId;
/**
* AgencyId当前话题所在机构Id
* */
@NotBlank(message = "机关Id不能为空",groups = {IssueGenerationGroup.class})
private String orgId;
/**
* 所属机关 eg:11:22:33(本机关以及上级所有机关ID)
* */
@NotBlank(message = "所属机关全路径不能为空",groups = {IssueGenerationGroup.class})
private String orgIdPath;
/**
* 当前话题所在网格名称 - 对应议题流程的处理部门
* */
@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 = "小组名称不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class})
private String groupName;
/**
* 话题发起人名称 -对应议题流程的话题发起人(文案)
* */
@NotBlank(message = "话题发起人不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class})
private String topicAuthor;
/**
* 议题发起人(组长)名称 - 对应议题流程的组长名称(文案)
* */
@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;
private String issueId;
}

18
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java

@ -4,6 +4,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
/**
* @Description 话题转议题时前端传参
@ -17,25 +18,32 @@ public class ResiTopicTurnIssueFromDTO implements Serializable {
/**
* 议题名称
* */
*/
@NotBlank(message = "议题名称不能为空")
private String issueTitle;
/**
* 话题Id
* */
*/
@NotBlank(message = "话题Id不能为空")
private String topicId;
/**
* 建议
* */
*/
@NotBlank(message = "建议不能为空")
private String suggestion;
/**
* 用户Id
* */
*/
@NotBlank(message = "用户Id不能为空")
private String userId;
}
private String issueId;
private Date unifiedDate;
private String actionType;
}

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

74
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java

@ -1,43 +1,29 @@
package com.epmet.resi.group.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.ResiGroupDTO;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO;
import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO;
import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO;
import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO;
import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO;
import com.epmet.resi.group.dto.topic.form.CustomerPageFormDTO;
import com.epmet.resi.group.dto.topic.form.MyPartIssueFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicIdListFormDTO;
import com.epmet.resi.group.dto.topic.form.*;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.dto.topic.result.MyCreateTopicsResultDTO;
import com.epmet.resi.group.dto.topic.result.MyPartIssueResultDTO;
import com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO;
import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.CommonGridAndPageFormDTO;
import com.epmet.resi.group.dto.group.form.GovGroupSummarizeFromDTO;
import com.epmet.resi.group.dto.group.form.GroupEditionAuditFormDTO;
import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO;
import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.CreateGroupCodeFormDTO;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.HashMap;
import java.util.List;
/**
@ -50,16 +36,6 @@ import java.util.List;
//@FeignClient(name = ServiceConstant.RESI_GROUP_SERVER, fallback = ResiGroupOpenFeignClientFallback.class,url = "localhost:8095")
public interface ResiGroupOpenFeignClient {
/**
* @Description 创建群组二维码
* @param dto
* @return com.epmet.commons.tools.utils.Result<java.lang.String>
* @Author liushaowen
* @Date 2020/11/13 16:33
*/
@PostMapping(value = "/resi/group/resigroupcode/creategroupcode", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
Result<String> createGroupCode(@RequestBody CreateGroupCodeFormDTO dto);
/**
* @Description 查询用户参与的且不是自己发表的话题对应的议题Id集合
* @author sun
@ -101,6 +77,16 @@ public interface ResiGroupOpenFeignClient {
@PostMapping("/resi/group/group/gov-audit-edit")
Result govAuditEdit(@RequestBody GroupEditionAuditFormDTO param);
/**
* @Description 创建群组二维码
* @param dto
* @return com.epmet.commons.tools.utils.Result<java.lang.String>
* @Author liushaowen
* @Date 2020/11/13 16:33
*/
@PostMapping(value = "/resi/group/resigroupcode/creategroupcode", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
Result<String> createGroupCode(@RequestBody CreateGroupCodeFormDTO dto);
/**
* @Description 个人中心-我参与过的话题
* @param param
@ -137,4 +123,26 @@ public interface ResiGroupOpenFeignClient {
*/
@PostMapping("resi/group/topic/myparttopic")
Result<MyPartIssueResultDTO> selectMyPartTopic(@RequestBody MyPartIssueFormDTO myPartIssueFormDTO);
/**
* @Description 待审核||已驳回 申请详情
* @Param applicationDetailFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@PostMapping("resi/group/groupissue/applicationdetail")
Result<ApplicationDetailCopyResultDTO> applicationDetail(@RequestBody ApplicationDetailFormDTO applicationDetailFormDTO);
@PostMapping("resi/group/group/getgroupinfo")
Result<HashMap<String, ResiGroupDTO>> getGroupInfo(@RequestBody List<String> groupIds);
/**
* @Description 工作端审核议题同意时查询相关话题的基本信息
* @param param
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.form.IssueShiftedFromTopicFormDTO>
* @author wangc
* @date 2020.11.23 03:08
*/
@PostMapping("resi/group/topic/fetchtopicinfowhenauditissue")
Result<IssueShiftedFromTopicFormDTO> fetchTopicInfoWhenAuditIssue(@RequestBody ResiTopicTurnIssueFromDTO param);
}

60
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java

@ -3,31 +3,27 @@ package com.epmet.resi.group.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.resi.group.dto.group.form.CommonGridAndPageFormDTO;
import com.epmet.resi.group.dto.group.form.GovGroupSummarizeFromDTO;
import com.epmet.resi.group.dto.group.form.GroupEditionAuditFormDTO;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO;
import com.epmet.resi.group.dto.group.ResiGroupDTO;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO;
import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO;
import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO;
import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO;
import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO;
import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO;
import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO;
import com.epmet.resi.group.dto.topic.form.CustomerPageFormDTO;
import com.epmet.resi.group.dto.topic.form.MyPartIssueFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicIdListFormDTO;
import com.epmet.resi.group.dto.topic.form.*;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.dto.topic.result.MyPartIssueResultDTO;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.CreateGroupCodeFormDTO;
import com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
/**
@ -38,17 +34,6 @@ import java.util.List;
*/
@Component
public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClient {
/**
* @param dto
* @return com.epmet.commons.tools.utils.Result<java.lang.String>
* @Description 创建群组二维码
* @Author liushaowen
* @Date 2020/11/13 16:33
*/
@Override
public Result<String> createGroupCode(CreateGroupCodeFormDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "createGroupCode", dto);
}
@Override
public Result<List<IssueGridResultDTO>> topicToIssueList(MyPartProjectsFormDTO formDTO) {
@ -69,6 +54,18 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien
public Result govAuditEdit(GroupEditionAuditFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "govAuditEdit", param);
}
/**
* @param dto
* @return com.epmet.commons.tools.utils.Result<java.lang.String>
* @Description 创建群组二维码
* @Author liushaowen
* @Date 2020/11/13 16:33
*/
@Override
public Result<String> createGroupCode(CreateGroupCodeFormDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "createGroupCode", dto);
}
@Override
public Result<List<GroupInfoResultDTO>> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectGroupInfo", groupInfoFormDTO);
@ -93,4 +90,19 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien
public Result<MyPartIssueResultDTO> selectMyPartTopic(MyPartIssueFormDTO myPartIssueFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectMyPartTopic", myPartIssueFormDTO);
}
@Override
public Result<ApplicationDetailCopyResultDTO> applicationDetail(ApplicationDetailFormDTO applicationDetailFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "applicationDetail", applicationDetailFormDTO);
}
@Override
public Result<HashMap<String, ResiGroupDTO>> getGroupInfo(List<String> groupIds) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "getGroupInfo", groupIds);
}
@Override
public Result<IssueShiftedFromTopicFormDTO> fetchTopicInfoWhenAuditIssue(ResiTopicTurnIssueFromDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "fetchTopicInfoWhenAuditIssue",param);
}
}

17
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java

@ -25,6 +25,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.modules.group.service.ResiGroupService;
import com.epmet.modules.group.service.ResiGroupStatisticalService;
import com.epmet.resi.group.dto.group.GroupProcessingCountResultDTO;
import com.epmet.resi.group.dto.group.ResiGroupDTO;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.*;
import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
@ -34,7 +35,13 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
@ -426,7 +433,6 @@ public class ResiGroupController {
return new Result();
}
/**
* @Description 查询话题所属小组名
* @Param groupInfoFormDTO
@ -450,4 +456,13 @@ public class ResiGroupController {
resiGroupService.editAuditSwitch(formDTO);
return new Result();
}
@PostMapping("getgroupinfo")
public Result<HashMap<String, ResiGroupDTO>> getGroupInfo(@RequestBody List<String> groupIds) {
if (CollectionUtils.isEmpty(groupIds)) {
return new Result<HashMap<String, ResiGroupDTO>>().ok(new HashMap<>());
}
return new Result<HashMap<String, ResiGroupDTO>>().ok(resiGroupService.getGroupInfo(groupIds));
}
}

23
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java

@ -190,6 +190,14 @@ public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
**/
List<ResiGroupDTO> selectGroupListByGridIds(@Param("gridIds") List<String> gridIds);
/**
* @Description 查询话题信息
* @Param topicId
* @author zxc
* @date 2020/11/17 2:10 下午
*/
TopicInfoResultDTO selectTopicInfo(@Param("topicId") String topicId);
/**
* 编辑提交的时候检查组名是否存在网格内检查
* 检查resi_group中已审核通过的和待审核的
@ -202,14 +210,7 @@ public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
int countExistsGroupNameBeforeEdit(@Param("groupId") String groupId,
@Param("gridId") String gridId,
@Param("groupName") String groupName);
/**
* @Description 查询话题信息
* @Param topicId
* @author zxc
* @date 2020/11/17 2:10 下午
*/
TopicInfoResultDTO selectTopicInfo(@Param("topicId") String topicId);
/**
* @Description 查询话题所属小组名
@ -218,4 +219,12 @@ public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
* @date 2020/11/11 1:36 下午
*/
List<GroupInfoResultDTO> selectGroupInfo(@Param("topicIds")List<String> userIds);
/**
* @param groupIds
* @author yinzuomei
* @description
* @Date 2020/11/23 10:07
**/
List<ResiGroupDTO> selectListByIds(@Param("groupIds") List<String> groupIds);
}

10
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java

@ -29,6 +29,7 @@ import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.*;
import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -135,6 +136,7 @@ public interface ResiGroupService extends BaseService<ResiGroupEntity> {
* @Description 修改组信息
* @Date 2020/3/28 22:27
**/
@Deprecated
void modifyGroup(ModifyGroupFormDTO modifyGroupFormDTO);
/**
@ -342,4 +344,12 @@ public interface ResiGroupService extends BaseService<ResiGroupEntity> {
* @Date 2020/11/17 14:18
**/
void editAuditSwitch(EditAuditSwitchFormDTO formDTO);
/**
* @param groupIds
* @author yinzuomei
* @description 查询小组基本信息 返回map
* @Date 2020/11/23 10:03
**/
HashMap<String, ResiGroupDTO> getGroupInfo(List<String> groupIds);
}

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/GroupIssueServiceImpl.java

@ -80,9 +80,11 @@ public class GroupIssueServiceImpl implements GroupIssueService {
listResult.getData().forEach(user -> {
if (user.getUserId().equals(data.getUserId())){
data.setIssuePublisher(user.getDistrict().concat("-").concat(user.getSurname()).concat(getMrOrMs(user.getGender())));
data.setIssuePublisherMobile(user.getMobile());
}
if (user.getUserId().equals(topicInfoResultDTO.getTopicUserId())){
topicInfoResultDTO.setPublishedUser(user.getDistrict().concat("-").concat(user.getSurname()).concat(getMrOrMs(user.getGender())));
topicInfoResultDTO.setTopicPublishMobile(user.getMobile());
}
});
List<String> gridIds = new ArrayList<>();

22
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -28,6 +28,10 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.user.LoginUserUtil;
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.scan.param.ImgScanParamDTO;
import com.epmet.commons.tools.scan.param.ImgTaskDTO;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
@ -88,6 +92,7 @@ import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -326,7 +331,6 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
}
//获取组长信息
Result<UserResiInfoResultDTO> groupLeaderUserInfo = this.getGroupLeaderUserInfo(groupSummarizeFormDTO.getGroupId());
if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) {
groupSummarizeResultDTO.setLeaderName(groupLeaderUserInfo.getData().getShowName());
} else {
@ -1104,6 +1108,22 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
return baseDao.selectGroupInfo(groupInfoFormDTO.getTopicIds());
}
/**
* @param groupIds
* @author yinzuomei
* @description 查询小组基本信息 返回map
* @Date 2020/11/23 10:03
**/
@Override
public HashMap<String, ResiGroupDTO> getGroupInfo(List<String> groupIds) {
List<ResiGroupDTO> list=baseDao.selectListByIds(groupIds);
if(CollectionUtils.isEmpty(list)){
return new HashMap<>();
}
HashMap<String, ResiGroupDTO> maps = (HashMap<String, ResiGroupDTO>) list.stream().collect(Collectors.toMap(ResiGroupDTO::getId,Function.identity()));
return maps;
}
@Override
public GroupDetailResultDTO getGroupDetail(String groupId) {
GroupDetailResultDTO groupDetail = new GroupDetailResultDTO();

42
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,47 @@ 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 param
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.form.IssueShiftedFromTopicFormDTO>
* @author wangc
* @date 2020.11.23 03:08
*/
@PostMapping("fetchtopicinfowhenauditissue")
public Result<IssueShiftedFromTopicFormDTO> fetchTopicInfoWhenAuditIssue(@RequestBody ResiTopicTurnIssueFromDTO param){
return new Result<IssueShiftedFromTopicFormDTO>().ok(topicService.getIssueInfoWhenAudit(param));
}
/**
* @Description 政府端查看议题详情时的话题相关信息
* @param govTopicIssueInfoFormDTO

20
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java

@ -21,6 +21,8 @@ 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 +250,24 @@ 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 param
* @return com.epmet.resi.group.dto.topic.form.ResiTopicTurnIssueFromDTO
* @author wangc
* @date 2020.11.20 18:09
*/
IssueShiftedFromTopicFormDTO getIssueInfoWhenAudit(ResiTopicTurnIssueFromDTO param);
/**
* @Description 政府端查看议题详情时的话题相关信息
* @param govTopicIssueInfoFormDTO

231
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;
@ -79,6 +85,7 @@ import com.epmet.resi.group.dto.topic.TopicInfoDTO;
import com.epmet.resi.group.dto.topic.form.CheckTopicPublisherFormDTO;
import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO;
import com.epmet.resi.group.dto.topic.form.*;
import com.epmet.resi.group.dto.topic.form.IssueShiftedFromTopicFormDTO;
import com.epmet.resi.group.dto.topic.result.CheckTopicPublisherResultDTO;
import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO;
import com.epmet.resi.group.dto.topic.result.*;
@ -94,6 +101,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.swing.text.html.Option;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -153,6 +161,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}")
@ -707,7 +718,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
List<ResiTopicOperationEntity> records =
resiTopicOperationDao.selectList(queryWrapper);
if(null != records && records.size() > NumConstant.ZERO){
hiddenDetailDTO.setHiddenReason(records.get(0).getOperationReason());
hiddenDetailDTO.setHiddenReason(String.format("%s%s",ModuleConstant.HIDDEN_TOPIC_REASON_PREFIX,records.get(0).getOperationReason()));
hiddenDetailDTO.setHiddenDateTime(records.get(0).getCreatedTime().getTime()/NumConstant.ONE_THOUSAND);
ResiGroupMemberInfoRedisDTO hiddenBy =
resiGroupMemberRedis.get(topicDetail.getGroupId(),records.get(0).getCreatedBy());
@ -1276,7 +1287,24 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
logger.error(ModuleConstant.NO_SUCH_GROUP);
result.setBelongGridName(ModuleConstant.EMPTY_STR);
}
return result;
//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);
}
result.setIssueApplicationId(ModuleConstant.EMPTY_STR);
result.setApplyStatus(ModuleConstant.EMPTY_STR);
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(Optional.ofNullable(record.getData().get(NumConstant.ZERO).getId()).orElse(ModuleConstant.EMPTY_STR));
result.setApplyStatus(Optional.ofNullable(record.getData().get(NumConstant.ZERO).getApplyStatus()).orElse(ModuleConstant.EMPTY_STR));
}
return result;
}
throw new RenException(ModuleConstant.FAILED_QUERY_TOPIC_INFO);
}
@ -1315,6 +1343,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
}
}
}
//1.统一时间(群组服务 -> 议题服务)
Date now = new Date();
//2.调用gov-org获取数据权限
@ -1334,7 +1363,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
Result<CommonDataFilterResultDTO> dataFilterResult =
govOrgFeignClient.gridDataFilter(dataFilterParam);
if(dataFilterResult.success() && null != dataFilterResult.getData()){
IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(topicTurnIssueFromDTO,IssueShiftedFromTopicFormDTO.class);
com.epmet.dto.form.IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(topicTurnIssueFromDTO, com.epmet.dto.form.IssueShiftedFromTopicFormDTO .class);
issueInfo.setCreatedTime(now);
issueInfo.setGridId(group.getGridId());
issueInfo.setCustomerId(group.getCustomerId());
@ -1388,6 +1417,202 @@ 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()){
com.epmet.dto.form.IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(topicTurnIssueFromDTO, com.epmet.dto.form.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 param
* @return com.epmet.resi.group.dto.topic.form.ResiTopicTurnIssueFromDTO
* @author wangc
* @date 2020.11.20 18:09
*/
@Override
public IssueShiftedFromTopicFormDTO getIssueInfoWhenAudit(ResiTopicTurnIssueFromDTO param) {
ResiTopicAndGroupResultDTO group = baseDao.getGroupInfoByTopicId(param.getTopicId());
if (null == group) throw new RenException(ModuleConstant.QUERY_GROUPINFO_FAILED);
ResiTopicEntity topic = resiTopicDao.selectById(param.getTopicId());
if (null == topic) throw new RenException(ModuleConstant.NO_SUCH_TOPIC);
if (topic.getShiftIssue()) throw new RenException(ModuleConstant.ALREADY_SHIFT_ISSUE);
IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(param, IssueShiftedFromTopicFormDTO.class);
issueInfo.setCreatedTime(param.getUnifiedDate());
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());
//参数里的userId并不是工作端审核人的Id 而是转议题人的Id
ResiGroupMemberInfoRedisDTO issueAuthor = resiGroupMemberRedis.get(group.getGroupId(), param.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());
issueInfo.setCustomerId(group.getCustomerId());
issueInfo.setIssueAuthorId(issueAuthor.getUserId());
if(StringUtils.equals(ModuleConstant.AUDITING_OPERATION_APPROVAL,param.getActionType())){
//5.修改话题shiftIssue字段
ResiTopicEntity topic2Upd = new ResiTopicEntity();
topic2Upd.setId(param.getTopicId());
topic2Upd.setUpdatedBy(param.getUserId());
topic2Upd.setShiftIssue(Boolean.TRUE);
topic2Upd.setIssueId(param.getIssueId());
topic2Upd.setUpdatedTime(param.getUnifiedDate());
int topicResult = baseDao.updateOne(topic2Upd);
//6.新增话题操作记录
if (topicResult == NumConstant.ONE) {
ResiTopicOperationEntity operation = new ResiTopicOperationEntity();
operation.setCreatedTime(param.getUnifiedDate());
operation.setCreatedBy(param.getUserId());
operation.setTopicId(param.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);
}
}
return issueInfo;
}
/**
* @Description 政府端查看议题详情时的话题相关信息
* @param govTopicIssueInfoFormDTO

15
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,9 +330,15 @@ 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="话题已关闭:";
String CLOSED_TOPIC_REASON_PREFIX = "话题已关闭:";
String HIDDEN_TOPIC_REASON_PREFIX = "话题已屏蔽:";
String CREATE_ISSUE_ERROR = "创建议题失败";
/**
* 审核操作 同意
@ -347,6 +358,4 @@ public interface ModuleConstant extends Constant {
* 群邀请二维码跳转页面
*/
String CODE_INVITE_PAGE = "pages/group/group/invitation/invitation";
String CREATE_ISSUE_ERROR = "创建议题失败";
}

11
epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml

@ -127,11 +127,6 @@ openapi:
imgSyncScan: /imgSyncScan
textSyncScan: /textSyncScan
dingTalk:
robot:
webHook: @dingTalk.robot.webHook@
secret: @dingTalk.robot.secret@
thread:
# 线程池配置
threadPool:
@ -139,3 +134,9 @@ thread:
maxPoolSize: @thread.pool.max-pool-size@
queueCapacity: @thread.pool.queue-capacity@
keepAlive: @thread.pool.keep-alive@
dingTalk:
robot:
webHook: @dingTalk.robot.webHook@
secret: @dingTalk.robot.secret@

11
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

@ -460,4 +460,15 @@
AND ta.DEL_FLAG = '0'
AND rt.ID = #{topicId}
</select>
<select id="selectListByIds" resultType="com.epmet.resi.group.dto.group.ResiGroupDTO" parameterType="map">
select rg.* from resi_group rg
where rg.DEL_FLAG='0'
<if test="groupIds!=null and groupIds.size()!=0">
and
<foreach collection="groupIds" item="groupId" open="(" close=")" separator=" OR ">
RG.ID = #{groupId}
</foreach>
</if>
</select>
</mapper>

15
epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -129,6 +129,9 @@ public class IssueServiceImpl implements IssueService {
@Override
public VotingTrendResultDTO votingTrend(IssueIdFormDTO issueId) {
Result<VotingTrendResultDTO> votingTrendResultDTOResult = govIssueFeignClient.votingTrend(issueId);
if (!votingTrendResultDTOResult.success()){
throw new RenException("查询议题表决折线图失败");
}
return votingTrendResultDTOResult.getData();
}
@ -172,7 +175,11 @@ public class IssueServiceImpl implements IssueService {
GridIdFormDTO gridIdFormDTO = new GridIdFormDTO();
gridIdFormDTO.setGridId(gridId.getGridId());
gridIdFormDTO.setUserId(tokenDto.getUserId());
CheckJoinTeamResultDTO check = resiGroupFeignClient.checkjointeam(gridIdFormDTO).getData();
Result<CheckJoinTeamResultDTO> checkJoinTeam = resiGroupFeignClient.checkjointeam(gridIdFormDTO);
if (!checkJoinTeam.success()){
throw new RenException("查询校验用户是否加入小组失败");
}
CheckJoinTeamResultDTO check = checkJoinTeam.getData();
//未加入小组
if (check.getVoteAuthorization()==false){
voteResultDTOResult.setVoteFlag(false);
@ -180,7 +187,11 @@ public class IssueServiceImpl implements IssueService {
voteResultDTOResult.setOppositionCount(NumConstant.ZERO);
voteResultDTOResult.setSupportCount(NumConstant.ZERO);
}else {
voteResultDTOResult = govIssueFeignClient.voteCount(issueId).getData();
Result<VoteResultDTO> voteResult = govIssueFeignClient.voteCount(issueId);
if (!voteResult.success()){
throw new RenException("查询表决中议题详情——支持、反对数失败");
}
voteResultDTOResult = voteResult.getData();
voteResultDTOResult.setVoteAuthorization(check.getVoteAuthorization());
}
return voteResultDTOResult;

51
epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/UserPubAuditingIssueResultDTO.java

@ -0,0 +1,51 @@
package com.epmet.resi.mine.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 个人中心-我发起的议题列表-审核中列表 返给前端DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/23 10:36
*/
@Data
public class UserPubAuditingIssueResultDTO implements Serializable {
private static final long serialVersionUID = -7083622810147837717L;
/**
* 申请id
*/
private String issueApplicationId;
/**
* under_auditing:待审核; rejected:驳回
*/
private String applyStatus;
/**
* 议题标题
*/
private String issueTitle;
/**
* 转议题时输入的建议
*/
private String issueSuggestion;
/**
* 网格名称 组织-网格
*/
private String gridName;
/**
* 小组名称
*/
private String groupName;
/**
* 发起时间戳
*/
private Long publishTime;
}

22
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java

@ -1,18 +1,16 @@
package com.epmet.modules.person.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.dto.result.MyPubIssuesClosedResultDTO;
import com.epmet.dto.result.MyPubIssuesShiftProjectResultDTO;
import com.epmet.dto.result.*;
import com.epmet.modules.person.service.IssueService;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.resi.mine.dto.result.UserPubAuditingIssueResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -63,7 +61,7 @@ public class IssueController {
* @author zxc
* @date 2020/11/11 9:24 上午
*/
@PostMapping("my-pub-issues/auditing")
@PostMapping("my-pub-issues/voting")
public Result<List<MyPubIssuesAuditingResultDTO>> myPubIssuesAuditing(@LoginUser TokenDto tokenDto, @RequestBody MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO){
ValidatorUtils.validateEntity(myPubIssuesAuditingFormDTO, MyPubIssuesAuditingFormDTO.MyPubIssuesAuditing.class);
return new Result<List<MyPubIssuesAuditingResultDTO>>().ok(issueService.myPubIssuesAuditing(tokenDto,myPubIssuesAuditingFormDTO));
@ -94,4 +92,16 @@ public class IssueController {
formDTO.setUserId(loginUserUtil.getLoginUserId());
return new Result<List<MyPubIssuesClosedResultDTO>>().ok(issueService.getMyPubIssuesClosed(formDTO));
}
/**
* @param fomrDTO
* @author yinzuomei
* @description 个人中心-我发起的议题列表-审核中列表
* @Date 2020/11/23 9:07
**/
@PostMapping("my-pub-issues/auditinglist")
public Result<List<UserPubAuditingIssueResultDTO>> getMyPubAuditingIssues(@RequestBody PageFormDTO fomrDTO) {
ValidatorUtils.validateEntity(fomrDTO, PageFormDTO.AddUserInternalGroup.class);
return new Result<List<UserPubAuditingIssueResultDTO>>().ok(issueService.getMyPubAuditingIssues(fomrDTO));
}
}

16
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java

@ -1,13 +1,11 @@
package com.epmet.modules.person.service;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.dto.result.MyPubIssuesClosedResultDTO;
import com.epmet.dto.result.MyPubIssuesShiftProjectResultDTO;
import com.epmet.dto.result.*;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.resi.mine.dto.result.UserPubAuditingIssueResultDTO;
import java.util.List;
@ -55,4 +53,12 @@ public interface IssueService {
* @Date 2020/11/11 13:48
**/
List<MyPubIssuesClosedResultDTO> getMyPubIssuesClosed(MyPubIssuesAuditingFormDTO formDTO);
/**
* @param fomrDTO
* @author yinzuomei
* @description 个人中心-我发起的议题列表-审核中列表
* @Date 2020/11/23 9:08
**/
List<UserPubAuditingIssueResultDTO> getMyPubAuditingIssues(PageFormDTO fomrDTO);
}

61
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java

@ -1,24 +1,30 @@
package com.epmet.modules.person.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.IssueOpenConstant;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.MyPartIssuesFormDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.form.UserPubAuditingIssueFormDTO;
import com.epmet.dto.result.*;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.GovProjectOpenFeignClient;
import com.epmet.modules.person.service.IssueService;
import com.epmet.resi.group.dto.group.ResiGroupDTO;
import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO;
import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.resi.mine.dto.result.UserPubAuditingIssueResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@ -27,10 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -50,7 +53,8 @@ public class IssueServiceImpl implements IssueService {
private GovProjectOpenFeignClient govProjectOpenFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private LoginUserUtil loginUserUtil;
/**
* @Description 个人中心-我参与的议题列表
@ -256,4 +260,51 @@ public class IssueServiceImpl implements IssueService {
}
return resultDTOList;
}
/**
* @param fomrDTO
* @author yinzuomei
* @description 个人中心-我发起的议题列表-审核中列表
* @Date 2020/11/23 9:08
**/
@Override
public List<UserPubAuditingIssueResultDTO> getMyPubAuditingIssues(PageFormDTO fomrDTO) {
UserPubAuditingIssueFormDTO userPubAuditingIssueFormDTO=new UserPubAuditingIssueFormDTO();
userPubAuditingIssueFormDTO.setUserId(loginUserUtil.getLoginUserId());
userPubAuditingIssueFormDTO.setPageNo(fomrDTO.getPageNo());
userPubAuditingIssueFormDTO.setPageSize(fomrDTO.getPageSize());
Result<List<UserPubAuditingIssueResDTO>> resultList = issueOpenFeignClient.queryUserPubAuditingIssues(userPubAuditingIssueFormDTO);
if (!resultList.success() || CollectionUtils.isEmpty(resultList.getData())) {
return new ArrayList<>();
}
List<UserPubAuditingIssueResDTO> list = resultList.getData();
//网格id 、 小组id
Set<String> gridIds = new HashSet<>();
Set<String> groupIds = new HashSet<>();
list.forEach(userPubAuditingIssueResDTO -> {
gridIds.add(userPubAuditingIssueResDTO.getGridId());
groupIds.add(userPubAuditingIssueResDTO.getGroupId());
});
//查询网格名称、 小组名称
Result<List<AllGridsByUserIdResultDTO>> gridNameList = govOrgOpenFeignClient.getGridListByGridIds(new ArrayList<>(gridIds));
if (!gridNameList.success() || CollectionUtils.isEmpty(gridNameList.getData())) {
logger.warn("个人中心-我发起的议题列表-审核中列表,查询网格名称失败......");
} else {
//赋值
list.forEach(resDTO -> {
gridNameList.getData().stream().filter(o -> resDTO.getGridId().equals(o.getGridId())).forEach(o -> resDTO.setGridName(o.getGridName()));
});
}
//查询话题来源小组名称
Result<HashMap<String, ResiGroupDTO>> groupInfoMapRes = resiGroupOpenFeignClient.getGroupInfo(new ArrayList<>(groupIds));
if (!groupInfoMapRes.success() || CollectionUtils.isEmpty(groupInfoMapRes.getData())) {
logger.warn("个人中心-我发起的议题列表-审核中列表,查询小组信息失败......");
} else {
//赋值
list.forEach(resDTO -> {
resDTO.setGroupName(null == groupInfoMapRes.getData().get(resDTO.getGroupId()) ? "" : groupInfoMapRes.getData().get(resDTO.getGroupId()).getGroupName());
});
}
return ConvertUtils.sourceToTarget(list,UserPubAuditingIssueResultDTO.class);
}
}

17
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserIdAndBadgeIdResultDTO.java

@ -0,0 +1,17 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/20 上午9:54
*/
@Data
public class UserIdAndBadgeIdResultDTO implements Serializable {
private String userId;
private String badgeId;
}

16
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

@ -441,14 +441,6 @@ public interface EpmetUserOpenFeignClient {
@PostMapping(value = "/epmetuser/badge/querygridauditingbadgecount", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<List<GridAuditingBadgeCountResultDTO>> queryGridAuditingBadgeCount(@RequestBody List<String> gridIdList);
/**
* 根据userId集合查询用户注册信息
* @author sun
*/
@PostMapping("/epmetuser/userresiinfo/getuserresiinfolist")
Result<List<UserResiInfoResultDTO>> getUserResiInfoList(@RequestBody UserResiInfoListFormDTO userResiInfoListFormDTO);
/**
* @Description 根据角色key查询具有该key的所有角色列表
* @return
@ -458,6 +450,14 @@ public interface EpmetUserOpenFeignClient {
@PostMapping("/epmetuser/govstaffrole/list-roles-by-rolekey/{role-key}")
Result<List<GovStaffRoleResultDTO>> listRolesByRoleKey(@PathVariable("role-key") String roleKey);
/**
* 根据userId集合查询用户注册信息
* @author sun
*/
@PostMapping("/epmetuser/userresiinfo/getuserresiinfolist")
Result<List<UserResiInfoResultDTO>> getUserResiInfoList(@RequestBody UserResiInfoListFormDTO userResiInfoListFormDTO);
/**
* @param userId
* @author yinzuomei

8
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java

@ -313,13 +313,13 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
}
@Override
public Result<List<UserResiInfoResultDTO>> getUserResiInfoList(UserResiInfoListFormDTO fromDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserResiInfoList", fromDTO);
public Result<List<GovStaffRoleResultDTO>> listRolesByRoleKey(String roleKey) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "listRolesByRoleKey", roleKey);
}
@Override
public Result<List<GovStaffRoleResultDTO>> listRolesByRoleKey(String roleKey) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "listRolesByRoleKey", roleKey);
public Result<List<UserResiInfoResultDTO>> getUserResiInfoList(UserResiInfoListFormDTO fromDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserResiInfoList", fromDTO);
}
@Override

3
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ResiUserBadgeDao.java

@ -19,6 +19,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.ResiUserBadgeDTO;
import com.epmet.dto.result.UserIdAndBadgeIdResultDTO;
import com.epmet.entity.ResiUserBadgeEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -43,6 +44,6 @@ public interface ResiUserBadgeDao extends BaseDao<ResiUserBadgeEntity> {
*/
void insertResiUserBadge(@Param("badges")List<ResiUserBadgeDTO> badges);
List<String> selectUserIds();
List<UserIdAndBadgeIdResultDTO> selectUserIds();
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeCertificateRecordDao.java

@ -20,6 +20,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.UserBadgeCertificateRecordEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 用户认证徽章记录表
@ -29,5 +30,14 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface UserBadgeCertificateRecordDao extends BaseDao<UserBadgeCertificateRecordEntity> {
/**
* @Description 查询是否已存在记录
* @Param badgeId
* @Param userId
* @author zxc
* @date 2020/11/23 上午9:50
*/
Integer selectIsExist(@Param("badgeId")String badgeId,@Param("userId")String userId);
}

4
epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java

@ -178,7 +178,7 @@ public class UserBadgeRedis {
* @date 2020.11.05 13:37
*/
public long pushOrRemoveUserBadge4List(String userId, String badgeId, String customerId) {
List<UserBadgeUnitFormDTO> orient = obtainUserBadge2List(userId,customerId);
List<UserBadgeUnitFormDTO> orient = redisUtils.lrange(UserRedisKeys.getResiUserBadgeKey(customerId,userId), NumConstant.ZERO, NumConstant.ONE_NEG, UserBadgeUnitFormDTO.class);
UserBadgeUnitFormDTO unit = null;
if (!CollectionUtils.isEmpty(orient)) {
@ -206,7 +206,7 @@ public class UserBadgeRedis {
if (poolOpt.isPresent()) unit = ConvertUtils.sourceToTarget(poolOpt.get(), UserBadgeUnitFormDTO.class);
else return NumConstant.ZERO;
}
redisUtils.leftPush(UserRedisKeys.getResiUserBadgeKey(customerId, userId), unit);
redisUtils.leftPush(UserRedisKeys.getResiUserBadgeKey(customerId, userId), unit,-1);
return NumConstant.ONE;
}

64
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java

@ -65,6 +65,8 @@ public class UserBadgeServiceImpl implements UserBadgeService {
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private BadgeCertificationConfigDao badgeCertificationConfigDao;
@Autowired
private UserBadgeCertificateRecordDao userBadgeCertificateRecordDao;
/**
* @Description 查询已经点亮的徽章
@ -84,24 +86,24 @@ public class UserBadgeServiceImpl implements UserBadgeService {
if (CollectionUtils.isEmpty(userBadgeListResultDTOS)){
return redisUserBadgeList.stream().sorted(Comparator.comparing(UserBadgeListResultDTO::getSort)).collect(Collectors.toList());
}
List<UserBadgeListResultDTO> result = new ArrayList<>();
result.addAll(userBadgeListResultDTOS);
redisUserBadgeList.forEach(u -> {
userBadgeListResultDTOS.forEach(badge -> {
if (u.getBadgeId().equals(badge.getBadgeId())){
badge.setBadgeIcon(u.getBadgeIcon());
u.setUpdatedTime(badge.getUpdatedTime());
u.setStatus(true);
}
});
});
List<UserBadgeListResultDTO> noOpenBadge = new ArrayList<>();
redisUserBadgeList.forEach(u -> {
if (!u.getStatus()){
noOpenBadge.add(u);
}
});
if (!CollectionUtils.isEmpty(noOpenBadge)){
userBadgeListResultDTOS.addAll(noOpenBadge);
Map<Boolean, List<UserBadgeListResultDTO>> collect = redisUserBadgeList.stream().collect(Collectors.groupingBy(UserBadgeListResultDTO::getStatus));
List<UserBadgeListResultDTO> noIsLight = collect.get(false);
if (CollectionUtils.isEmpty(noIsLight)){
return result;
}
return userBadgeListResultDTOS.stream().sorted(Comparator.comparing(UserBadgeListResultDTO::getIsOpened,Comparator.reverseOrder()).thenComparing(UserBadgeListResultDTO::getUpdatedTime,Comparator.reverseOrder()).thenComparing(UserBadgeListResultDTO::getSort)).collect(Collectors.toList());
result.addAll(noIsLight.stream().sorted(Comparator.comparing(UserBadgeListResultDTO::getSort)).collect(Collectors.toList()));
return result;
}
/**
@ -150,7 +152,7 @@ public class UserBadgeServiceImpl implements UserBadgeService {
*/
@Override
public void initPartyMemberBadge(String userId,TokenDto tokenDto){
List<String> userIds = resiUserBadgeDao.selectUserIds();
List<UserIdAndBadgeIdResultDTO> userIds = resiUserBadgeDao.selectUserIds();
List<ResiUserBadgeDTO> badges = new ArrayList<>();
String partyBadgeId = badgeDao.getPartyBadgeId(null);
if (StringUtils.isEmpty(userId)) {
@ -159,9 +161,18 @@ public class UserBadgeServiceImpl implements UserBadgeService {
return;
}
if (!CollectionUtils.isEmpty(userIds)) {
userIds.stream().forEach(u -> partyMemberUserIds.stream().filter(p -> u.equals(p.getUserId())).forEach(p -> p.setReStatus(true)));
userIds.forEach(u -> {
partyMemberUserIds.forEach(p -> {
if (u.getUserId().equals(p.getUserId()) && u.getBadgeId().equals(partyBadgeId)){
p.setReStatus(true);
}
});
});
}
List<String> reUserIds = partyMemberUserIds.stream().filter(p -> !p.getReStatus()).map(p -> p.getUserId()).collect(Collectors.toList());
if (CollectionUtils.isEmpty(reUserIds)){
return;
}
List<UserBaseInfoResultDTO> userBaseInfoResultDTOS = userBaseInfoService.queryUserBaseInfo(reUserIds);
if (CollectionUtils.isEmpty(userBaseInfoResultDTOS)) {
log.error("未查询到党员基本信息......");
@ -232,6 +243,10 @@ public class UserBadgeServiceImpl implements UserBadgeService {
@Override
@Transactional(rollbackFor = Exception.class)
public Result authBadgeRecord(CertificationAddFormDTO certificationAddFormDTO) {
Integer recordCount = userBadgeCertificateRecordDao.selectIsExist(certificationAddFormDTO.getBadgeId(), certificationAddFormDTO.getUserId());
if (recordCount>NumConstant.ZERO){
throw new RenException("不允许重复提交审核");
}
log.info(JSON.toJSONString(certificationAddFormDTO));
AuthFieldFormDTO authFieldFormDTO = new AuthFieldFormDTO();
authFieldFormDTO.setCustomerId(certificationAddFormDTO.getCustomerId());
@ -269,7 +284,7 @@ public class UserBadgeServiceImpl implements UserBadgeService {
private void validateParams(CertificationAddFormDTO certificationAddFormDTO, AuthFieldFormDTO authFieldFormDTO) {
List<AuthFieldResultDTO> authFieldResultDTOS = this.authField(authFieldFormDTO);
if (CollectionUtils.isEmpty(authFieldResultDTOS)) {
throw new RenException("该徽章配置配置错误");
throw new RenException("该徽章配置配置错误,参数参数:{}", JSON.toJSONString(authFieldFormDTO));
}
Set<String> requiredColumns = authFieldResultDTOS.stream()
.filter(o -> NumConstant.ONE_STR.equals(o.getIsRequired()))
@ -280,31 +295,6 @@ public class UserBadgeServiceImpl implements UserBadgeService {
}
}
/**
* @Description 站内信发送提交徽章认证
* @Param form
* @author zxc
* @date 2020/11/10 9:04 上午
*/
public void sendMessageByUser(UserBadgeCertificateRecordDTO form) {
List<UserMessageFormDTO> msgList = new ArrayList<>();
UserMessageFormDTO formDTO = new UserMessageFormDTO();
formDTO.setApp(BadgeConstant.RESI);
formDTO.setCustomerId(form.getCustomerId());
formDTO.setGridId(form.getGridId());
UserBadgeListResultDTO userBadgeListResultDTO = userBadgeDao.selectBadgeByBadgeId(form.getCustomerId(), form.getBadgeId());
if (null == userBadgeListResultDTO){
log.error(BadgeConstant.GET_BADGE_NAME_FAILURE);
return;
}
formDTO.setMessageContent(String.format(BadgeConstant.MESSAGE_CONTENT,userBadgeListResultDTO.getBadgeName()));
formDTO.setTitle(BadgeConstant.AUTH_TITLE);
formDTO.setReadFlag(BadgeConstant.READ_FLAG);
formDTO.setUserId(form.getUserId());
msgList.add(formDTO);
Result result = messageFeignClient.saveUserMessageList(msgList);
}
/**
* @Description 发送验证码
* @Param badgeSendCodeFormDTO

4
epmet-user/epmet-user-server/src/main/resources/mapper/ResiUserBadgeDao.xml

@ -41,8 +41,8 @@
</foreach>
</insert>
<select id="selectUserIds" resultType="java.lang.String">
SELECT USER_ID FROM resi_user_badge WHERE DEL_FLAG = 0
<select id="selectUserIds" resultType="com.epmet.dto.result.UserIdAndBadgeIdResultDTO">
SELECT USER_ID,BADGE_ID FROM resi_user_badge WHERE DEL_FLAG = 0
</select>

12
epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml

@ -28,5 +28,17 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 查询是否已存在记录 -->
<select id="selectIsExist" resultType="java.lang.Integer">
SELECT
COUNT(id)
FROM user_badge_certificate_record
WHERE DEL_FLAG = 0
AND USER_ID = #{userId}
AND BADGE_ID = #{badgeId}
AND IS_LAST = 'yes'
AND (AUDIT_STATUS = 'approved' OR AUDIT_STATUS = 'auditing')
</select>
</mapper>

7
epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml

@ -37,6 +37,7 @@
AND ub.CERTIFICATION_AUTID_STATUS = 'approved'
AND b.CUSTOMER_ID = 'default'
AND b.BADGE_STATUS = 'online'
AND ub.IS_OPENED = 1
AND ub.USER_ID = #{userId}
ORDER BY ub.UPDATED_TIME DESC
</select>
@ -52,10 +53,10 @@
sort
FROM (
SELECT * FROM badge
WHERE CUSTOMER_ID = #{customerId} AND DEL_FLAG = '0'
WHERE CUSTOMER_ID = #{customerId} AND DEL_FLAG = '0' AND BADGE_STATUS = 'online'
UNION ALL
SELECT * FROM badge a
WHERE CUSTOMER_ID = 'default' AND a.DEL_FLAG = '0' AND BADGE_STATUS = 'online'
WHERE CUSTOMER_ID = 'default' AND a.DEL_FLAG = '0'
AND NOT EXISTS
( SELECT ID FROM badge b WHERE CUSTOMER_ID = #{customerId} AND a.ID = b.ID)) t
ORDER BY
@ -219,7 +220,7 @@
badgeInfo.BADGE_ICON
FROM
resi_user_badge userBadge
LEFT JOIN (
INNER JOIN (
SELECT
id AS badgeId,
CUSTOMER_ID,

Loading…
Cancel
Save