Browse Source

Merge branch 'dev'

master
wxz 5 years ago
parent
commit
971e0e5419
  1. 41
      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. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java
  4. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  5. 16
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpContextUtils.java
  6. 2
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java
  7. 4
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java
  8. 1
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java
  9. 19
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AccessTokenDTO.java
  10. 53
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/utils/ThirdUtils.java
  11. 133
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java
  12. 110
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationHistoryDTO.java
  13. 2
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java
  14. 97
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueSuggestionDTO.java
  15. 24
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationDetailFormDTO.java
  16. 22
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationDetailWorkFormDTO.java
  17. 24
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationHistoryFormDTO.java
  18. 21
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationHistoryWorkFormDTO.java
  19. 43
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationListFormDTO.java
  20. 2
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonGridIdFormDTO.java
  21. 3
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/EvaluationListFormDTO.java
  22. 47
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAppQueryFormDTO.java
  23. 26
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueApplicationIdFormDTO.java
  24. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java
  25. 48
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java
  26. 28
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ParameterFormDTO.java
  27. 36
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/UserIssueSuggestionFormDTO.java
  28. 20
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/UserPubAuditingIssueFormDTO.java
  29. 54
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationDetailResultDTO.java
  30. 62
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationDetailWorkResultDTO.java
  31. 44
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryResDTO.java
  32. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryResultDTO.java
  33. 53
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryWorkResultDTO.java
  34. 48
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationListResultDTO.java
  35. 44
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java
  36. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueApplicationResDTO.java
  37. 55
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueSuggestionResDTO.java
  38. 4
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/JoinVoteResultDTO.java
  39. 16
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ParameterResultDTO.java
  40. 22
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/SaveIssueSuggestionResultDTO.java
  41. 50
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/TopicInfoResultDTO.java
  42. 61
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/TopicInfoWorkResultDTO.java
  43. 62
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/UserPubAuditingIssueResDTO.java
  44. 155
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  45. 159
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  46. 6
      epmet-module/gov-issue/gov-issue-server/pom.xml
  47. 17
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java
  48. 167
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java
  49. 98
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationHistoryController.java
  50. 122
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java
  51. 69
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
  52. 46
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueCustomerParameterController.java
  53. 87
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueSuggestionController.java
  54. 69
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java
  55. 53
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationHistoryDao.java
  56. 32
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java
  57. 31
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java
  58. 54
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueSuggestionDao.java
  59. 11
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java
  60. 88
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueApplicationEntity.java
  61. 66
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueApplicationHistoryEntity.java
  62. 66
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueSuggestionEntity.java
  63. 47
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueApplicationHistoryRedis.java
  64. 47
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueApplicationRedis.java
  65. 124
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationHistoryService.java
  66. 146
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java
  67. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueAuditService.java
  68. 38
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueCustomerParameterService.java
  69. 54
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
  70. 61
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueSuggestionService.java
  71. 175
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationHistoryServiceImpl.java
  72. 178
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java
  73. 17
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueAuditServiceImpl.java
  74. 80
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java
  75. 337
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  76. 173
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueSuggestionServiceImpl.java
  77. 19
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteDetailServiceImpl.java
  78. 79
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java
  79. 37
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.2__issue_audit_tables.sql
  80. 16
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.3__issue_sugg_tables.sql
  81. 2
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.4__issue_audit_addautopassed.sql
  82. 2
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.5__add_issue_app_col.sql
  83. 1
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.6__add_default_audit_switch.sql
  84. 75
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml
  85. 37
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationHistoryDao.xml
  86. 21
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml
  87. 74
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  88. 36
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueSuggestionDao.xml
  89. 12
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml
  90. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java
  91. 6
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java
  92. 56
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ParameterFormDTO.java
  93. 39
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ParameterResultDTO.java
  94. 16
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ParameterKeyConstant.java
  95. 46
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/CustomerProjectParameterController.java
  96. 9
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/CustomerProjectParameterDao.java
  97. 29
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/CustomerProjectParameterService.java
  98. 133
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/CustomerProjectParameterServiceImpl.java
  99. 4
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/CustomerProjectParameterDao.xml
  100. 23
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupCodeConstant.java

41
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;
}
@ -104,26 +107,34 @@ public class FieldMetaObjectHandler implements MetaObjectHandler {
}
public Object getUpdatedTimeByFieldValue(MetaObject metaObject) {
Object createdTime = null;
if (metaObject.hasGetter(FieldConstant.CREATED_TIME_HUMP)) {
createdTime = metaObject.getValue(FieldConstant.CREATED_TIME_HUMP);
Object updatedTime = null;
if (metaObject.hasGetter(FieldConstant.UPDATED_TIME_HUMP)) {
updatedTime = metaObject.getValue(FieldConstant.UPDATED_TIME_HUMP);
}
if (createdTime == null) {
createdTime = new Date();
if (updatedTime == null) {
if(metaObject.hasGetter(FieldConstant.CREATED_TIME_HUMP))
updatedTime = metaObject.getValue(FieldConstant.CREATED_TIME_HUMP);
if(updatedTime == null)
updatedTime = new Date();
}
return createdTime;
return updatedTime;
}
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;
if(metaObject.hasGetter(FieldConstant.CREATED_BY_HUMP))
value = metaObject.getValue(FieldConstant.CREATED_BY_HUMP);
if(null == value)
value = Optional.ofNullable(loginUserUtil.getLoginUserId()).orElse(Constant.APP_USER_FLAG);
}
}
return value;
}
@ -157,7 +168,7 @@ public class FieldMetaObjectHandler implements MetaObjectHandler {
setFieldValByName(UPDATE_DATE, new Date(), metaObject);
} else if (fillEsuaEntity) {
setFieldValByName(FieldConstant.UPDATED_BY_HUMP, getUpdatedByFieldValue(metaObject), metaObject);
setFieldValByName(FieldConstant.UPDATED_TIME_HUMP, new Date(), metaObject);
setFieldValByName(FieldConstant.UPDATED_TIME_HUMP, getUpdatedTimeByFieldValue(metaObject), metaObject);
}
}
}

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

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java

@ -87,6 +87,10 @@ public enum RequirePermissionEnum {
WORK_GRASSROOTS_ISSUE_SHIFT_PROJECT("work_grassroots_issue_shift_project", "基层治理:议题管理:转项目","转项目(选择处理部门api也需要添加此校验)"),
WORK_GRASSROOTS_ISSUE_CLOSE("work_grassroots_issue_close","基层治理:议题管理:关闭议题","关闭议题"),
WORK_GRASSROOTS_ISSUE_AUDITING_LIST("work_grassroots_issue_auditing_list","基层治理:议题管理:待审核","待审核议题申请列表查询"),
WORK_GRASSROOTS_ISSUE_REJECTED_LIST("work_grassroots_issue_rejected_list","基层治理:议题管理:已驳回","已驳回议题申请列表"),
WORK_GRASSROOTS_ISSUE_AUDIT("work_grassroots_issue_audit","基层治理:议题管理:议题审核","审核(通过或驳回)议题"),
/**
* 徽章
*/

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

@ -48,7 +48,7 @@ public enum EpmetErrorCode {
IDCARDNO_ALREADY_EXITS(8109,"系统已存在相同身份证号码,请重新输入"),
IDCARDNO_ERROR(8110,"身份证号格式错误,请重新输入"),
CANNOT_DELETE_PARTY_MEMBER(8111,"该用户已注册党员,不允许删除"),
GROUP_LEADER_CAN_EDIT_GROUP_INFO(8112,"只有组长才可以修改小组信息"),
GROUP_LEADER_CAN_EDIT_GROUP_INFO(8112,"只有组长才可以操作"),
INVITE_NEW_MEMBER(8113,"只有讨论中的小组才可以邀请新成员"),
ACT_TITLE_SCAN_FAILED(8114,"活动标题审核失败,请重新编辑"),
ACT_REQ_SCAN_FAILED(8115,"活动报名条件审核失败,请重新编辑"),
@ -88,7 +88,7 @@ public enum EpmetErrorCode {
TEXT_SCAN_FAILED(8503,"内容审核失败,请重新编辑"),
IMG_SCAN_FAILED(8504,"图片审核失败,请重新上传"),
PROJECT_IS_CLOSED(8601,"项目已结案"),
VOTE_ISSUE_PLEASE(8602,"请先选择支持或反对,再发表您的想法"),
// 爱心互助 居民端
NOT_IN_THE_SIGN_IN_RANGE(8510, "您还未进入指定的签到范围~"),
// 活动报名失败,弹窗:志愿者认证
@ -137,7 +137,11 @@ public enum EpmetErrorCode {
GROUP_EDIT_ERROR(9000,"组信息编辑失败"),
GROUP_NOT_EXISTS(9001,"该组不存在"),
GROUP_IN_AUDITING(9002,"该组已提交编辑,处于待审核状态,完成审核前不可再次提交"),
GROUP_EDIT_NUM_LIMITED(9003,"已达编辑次数上限");
GROUP_EDIT_NUM_LIMITED(9003,"已达编辑次数上限"),
TOPIC_SHIFTED_TO_ISSUE_UNDER_AUDITING(9004,"当前话题正在转议题审核"),
TOPIC_ALREADY_SHIFTED_TO_ISSUE(9005,"该话题已被转为议题,请勿重复操作"),
TOPIC_IS_HIDDEN(9006,"该话题已被屏蔽,请先解除屏蔽"),
TOPIC_IS_CLOSED(9008,"该话题已关闭,无法转为议题");
private int code;

16
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpContextUtils.java

@ -66,4 +66,20 @@ public class HttpContextUtils {
}
return defaultLanguage;
}
public static String getRequestServerNameAndPort() {
HttpServletRequest request = getHttpServletRequest();
//X-Forwarded-Scheme是nginx中添加的一个header,用于获取真实的$scheme
String scheme = request.getHeader("X-Forwarded-Scheme");
if (StringUtils.isBlank(scheme)) {
scheme = "http";
}
String hostAndPort = request.getHeader("Host-And-Port");
if (StringUtils.isBlank(hostAndPort)) {
hostAndPort = request.getServerName().concat(":").concat(String.valueOf(request.getServerPort()));
}
return String.format("%s://%s", scheme, hostAndPort);
}
}

2
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java

@ -40,5 +40,5 @@ public interface EpmetHeartOpenFeignClient {
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.ActInfoDTO>>
*/
@PostMapping("/heart/resi/act/published/{staffId}")
Result<List<ActInfoDTO>> getPublishedAct(@PathVariable String staffId);
Result<List<ActInfoDTO>> getPublishedAct(@PathVariable("staffId") String staffId);
}

4
epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java

@ -30,6 +30,8 @@ import org.springframework.web.multipart.MultipartFile;
*/
@FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, configuration = OssFeignClient.MultipartSupportConfig.class, fallback =
OssFeignClientFallback.class)
//@FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, configuration = OssFeignClient.MultipartSupportConfig.class, fallback =
// OssFeignClientFallback.class)
public interface OssFeignClient {
/**
* 文件上传
@ -44,7 +46,7 @@ public interface OssFeignClient {
Result<UploadImgResultDTO> uploadQrCode(@RequestPart(value = "file") MultipartFile file);
@Configuration
//@Configuration
class MultipartSupportConfig {
@Bean
public Encoder feignFormEncoder() {

1
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java

@ -159,6 +159,7 @@ public class OssController {
public Result<UploadImgResultDTO> uploadQrCode(@RequestPart(value = "file") MultipartFile file) {
return ossService.uploadImg(file);
}
/**
* 上传客户logo(考虑到以后可能会针对不同的业务有不同的限制条件这里不再使用通用的接口
* 针对每一个业务新建上传接口)

19
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AccessTokenDTO.java

@ -0,0 +1,19 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @description:
* @author: liushaowen
* @date: 2020/11/17 10:07
*/
@Data
public class AccessTokenDTO implements Serializable {
private String resiToken;
private String workToken;
private String errMsg;
}

53
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/utils/ThirdUtils.java

@ -0,0 +1,53 @@
package com.epmet.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.AccessTokenDTO;
import com.epmet.dto.result.CustomerTokensResultDTO;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.Map;
/**
* @description:
* @author: liushaowen
* @date: 2020/11/17 10:04
*/
public class ThirdUtils {
/**
* @Description 获取AccessToken公共方法
* @param customerId
* @return com.epmet.dto.AccessTokenDTO
* @Author liushaowen
* @Date 2020/11/17 10:09
*/
public static AccessTokenDTO getAccessToken(String customerId) {
EnvEnum envEnum = EnvEnum.getCurrentEnv();
AccessTokenDTO accessToken = new AccessTokenDTO();
String url = "https://epmet-cloud.elinkservice.cn/api/third/pacustomer/tokenlist";
JSONObject postData = new JSONObject();
postData.put("customerId", customerId);
String data = HttpClientManager.getInstance().sendPostByJSON(url, JSON.toJSONString(postData)).getData();
JSONObject toResult = JSON.parseObject(data);
Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class);
if (null != toResult.get("code")) {
mapToResult.setCode(((Integer) toResult.get("code")).intValue());
}
if (!mapToResult.success()) {
accessToken.setErrMsg( StringUtils.isBlank(mapToResult.getMsg()) ? mapToResult.getInternalMsg() : mapToResult.getMsg());
}
Object CustomerTokensResultDTO = mapToResult.getData();
JSONObject json = JSON.parseObject(CustomerTokensResultDTO.toString());
CustomerTokensResultDTO customerTokensResultDTO = ConvertUtils.mapToEntity(json, com.epmet.dto.result.CustomerTokensResultDTO.class);
accessToken.setResiToken(customerTokensResultDTO.getResiAuthorizerToken());
accessToken.setWorkToken(customerTokensResultDTO.getWorkAuthorizerToken());
return accessToken;
}
}

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

@ -0,0 +1,133 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 话题转议题申请表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Data
public class IssueApplicationDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 议题名称
*/
private String issueTitle;
/**
* 建议
*/
private String suggestion;
/**
* 审核状态under_auditing:待审核approved:通过rejected:驳回;自动通过auto_passed
*/
private String applyStatus;
/**
* 话题id
*/
private String topicId;
/**
* 小组id
*/
private String groupId;
/**
* 网格ID 居民端议题对应一个网格Id
*/
private String gridId;
/**
* 审核通过后对应的 议题id
*/
private String issueId;
/**
* 审核通过时填写的理由
*/
private String passedReason;
/**
* 审批通过时工作人员id,自动通过此列不存储
*/
private String approveStaffId;
/**
* 删除标识 0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间第一次提交审核的时间注意和历史表的第一条记录时间一致
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
//拓展属性
/**
* 申请id
*/
private String issueApplicationId;
/**
* 对应issue_application.UPDATED_TIME 对应的秒级时间戳
*/
private Long latestTime;
}

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

@ -0,0 +1,110 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 话题转议题审核历史表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Data
public class IssueApplicationHistoryDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 话题转议题申请表 issue_application.id
*/
private String issueApplicationId;
/**
* under_auditing:待审核
* approved:审核通过
* rejected:驳回
* auto_passed:自动通过
*/
private String actionType;
/**
* 审核时的说明
*/
private String reason;
/**
* 工作端人员姓名
*/
private String staffName;
/**
* 删除标识0 未删除 1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人 提交人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 修改人ID
*/
private String updatedBy;
/**
* 修改时间
*/
private Date updatedTime;
//扩展属性
/**
* =id
*/
private String historyId;
/**
* createdTime 对应时间戳
*/
private Long operateTime;
}

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

97
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueSuggestionDTO.java

@ -0,0 +1,97 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 居民端用户对议题建议或意见表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-18
*/
@Data
public class IssueSuggestionDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户Id customer.id
*/
private String customerId;
/**
* 议题id
*/
private String issueId;
/**
* 议题所属网格id
*/
private String gridId;
/**
* 对议题的想法
*/
private String suggestion;
/**
* 1公开; 0匿名
*/
private Integer publicFlag;
/**
* 删除标识0 未删除 1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 提建议的人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 修改人ID
*/
private String updatedBy;
/**
* 修改时间
*/
private Date updatedTime;
}

24
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationDetailFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/17 10:10 上午
*/
@Data
public class ApplicationDetailFormDTO implements Serializable {
private static final long serialVersionUID = -1123940740606412101L;
public interface ApplicationDetail{}
/**
* 申请详情在列表接口返参里有
*/
@NotBlank(message = "issueApplicationId不能为空",groups = {ApplicationDetail.class})
private String issueApplicationId;
}

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

24
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationHistoryFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/17 10:10 上午
*/
@Data
public class ApplicationHistoryFormDTO implements Serializable {
private static final long serialVersionUID = -1123940740606412101L;
public interface ApplicationHistory{}
/**
* 申请详情在列表接口返参里有
*/
@NotBlank(message = "issueApplicationId不能为空",groups = {ApplicationHistory.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;
}

43
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationListFormDTO.java

@ -0,0 +1,43 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/17 10:26 上午
*/
@Data
public class ApplicationListFormDTO implements Serializable {
private static final long serialVersionUID = -7535577263406351310L;
public interface ApplicationList{}
/**
* 小组id
*/
@NotBlank(message = "小组id不能为空",groups = {ApplicationList.class})
private String groupId;
/**
* under_auditing:审核中,rejected:驳回
*/
@NotBlank(message = "审核状态不能为空",groups = {ApplicationList.class})
private String applyStatus;
/**
* 页码
*/
@NotNull(message = "页码不能为空",groups = {ApplicationList.class})
private Integer pageNo;
/**
* 每页数量
*/
@NotNull(message = "每页数量不能为空",groups = {ApplicationList.class})
private Integer pageSize;
}

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

3
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/EvaluationListFormDTO.java

@ -2,6 +2,7 @@ package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
@ -21,11 +22,13 @@ public class EvaluationListFormDTO implements Serializable {
/**
* 页码
*/
@NotNull(message = "pageNo不能为空")
private Integer pageNo;
/**
* 每页数量
*/
@NotNull(message = "pageSize不能为空")
private Integer pageSize;

47
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAppQueryFormDTO.java

@ -0,0 +1,47 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 查询issue_application通用入参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/18 16:22
*/
@Data
public class IssueAppQueryFormDTO implements Serializable {
public interface Required{}
public interface GovFormDTO{}
/**
* 网格id
*/
@NotBlank(message = "网格id不能为空",groups={GovFormDTO.class})
private String gridId;
/**
* 小组id
*/
private String groupId;
/**
* 审核状态under_auditing:待审核approved:通过rejected:驳回
*/
private String applyStatus;
/**
* 页码
*/
@NotNull(message = "页码不能为空",groups = {Required.class})
private Integer pageNo;
/**
* 每页数量
*/
@NotNull(message = "每页数量不能为空",groups = {Required.class})
private Integer pageSize;
}

26
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueApplicationIdFormDTO.java

@ -0,0 +1,26 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 根据issue_application.id查询审核历史
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/18 16:55
*/
@Data
public class IssueApplicationIdFormDTO implements Serializable {
private static final long serialVersionUID = 3222664262617695211L;
@NotBlank(message = "issueApplicationId不能为空")
private String issueApplicationId;
public IssueApplicationIdFormDTO(String issueApplicationId) {
this.issueApplicationId = issueApplicationId;
}
public IssueApplicationIdFormDTO() {
}
}

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

28
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ParameterFormDTO.java

@ -0,0 +1,28 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/11/18 17:21
*/
@Data
public class ParameterFormDTO implements Serializable {
private static final long serialVersionUID = 3007336627437933281L;
/**
* 客户ID
*/
@NotBlank(message = "客户ID不能为空", groups = DefaultGroup.class)
private String customerId;
/**
* 已开启审核open 无需审核close
*/
@NotBlank(message = "可滞留天数不能为空", groups = AddGroup.class)
private String auditSwitch;
}

36
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/UserIssueSuggestionFormDTO.java

@ -0,0 +1,36 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 查询用户对于某个议题的想法 返回一条记录
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/18 10:09
*/
@Data
public class UserIssueSuggestionFormDTO implements Serializable {
private static final long serialVersionUID = -8506264833919404944L;
/**
* 用户id
*/
@NotBlank(message = "userId不能为空")
private String userId;
/**
* 议题id
*/
@NotBlank(message = "issueId不能为空")
private String issueId;
public UserIssueSuggestionFormDTO( String userId, String issueId) {
this.userId = userId;
this.issueId = issueId;
}
public UserIssueSuggestionFormDTO() {
}
}

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

54
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationDetailResultDTO.java

@ -0,0 +1,54 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/17 10:12 上午
*/
@Data
public class ApplicationDetailResultDTO implements Serializable {
private static final long serialVersionUID = 1121268898544759693L;
/**
* 申请ID
*/
private String issueApplicationId;
/**
* 议题标题
*/
private String issueTitle;
/**
* 所属网格名称
*/
private String gridName;
/**
* 议题发起人
*/
private String issuePublisher;
/**
* 话题相关信息
*/
private TopicInfoResultDTO topicInfo;
private String gridId;
private String topicId;
private String userId;
public ApplicationDetailResultDTO() {
this.issueTitle = "";
this.gridName = "";
this.issuePublisher = "";
this.topicInfo = new TopicInfoResultDTO();
}
}

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

44
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryResDTO.java

@ -0,0 +1,44 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 工作端话题转议题申请详情- 审核历史查询
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/18 17:31
*/
@Data
public class ApplicationHistoryResDTO implements Serializable {
private static final long serialVersionUID = -2680819847652745103L;
/**
* =id
*/
private String historyId;
/**
* under_auditing:待审核
* approved:审核通过
* rejected:驳回
*/
private String actionType;
/**
* createdTime 对应时间戳
*/
private Long operateTime;
/**
* 审核时的说明
*/
private String reason;
/**
* 工作端人员姓名
*/
private String staffName;
}

41
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryResultDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/17 10:21 上午
*/
@Data
public class ApplicationHistoryResultDTO implements Serializable {
private static final long serialVersionUID = 3235513565728092491L;
/**
* 审核历史表id
*/
private String historyId;
/**
* under_auditing:待审核 approved:已通过 rejected:已驳回
*/
private String actionType;
/**
* 操作时间戳
*/
private Long operateTime;
/**
* 驳回理由或者审核通过理由
*/
private String reason;
/**
* 工作人员姓名居民端不展示此列
*/
private String staffName;
}

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

48
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationListResultDTO.java

@ -0,0 +1,48 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/17 10:31 上午
*/
@Data
public class ApplicationListResultDTO implements Serializable {
private static final long serialVersionUID = -4042091778432048631L;
/**
* 申请id
*/
private String issueApplicationId;
/**
* 议题标题
*/
private String issueTitle;
/**
* 建议
*/
private String suggestion;
/**
* 对应issue_application.UPDATED_TIME 对应的秒级时间戳
*/
private Long time;
/**
* 审核状态under_auditing:审核中,approved:通过rejected:驳回
*/
private String applyStatus;
public ApplicationListResultDTO() {
this.issueTitle = "";
this.suggestion = "";
this.time = NumConstant.ZERO_L;
this.applyStatus = "";
}
}

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

41
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueApplicationResDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 待审核|| 已驳回 列表
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/18 17:22
*/
@Data
public class IssueApplicationResDTO implements Serializable {
private static final long serialVersionUID = -1452471134719960837L;
/**
* 申请id
*/
private String issueApplicationId;
/**
* 议题名称
*/
private String issueTitle;
/**
* 对应issue_application.UPDATED_TIME 对应的秒级时间戳
*/
private Long latestTime;
/**
* 建议
*/
private String suggestion;
/**
* 审核状态under_auditing:审核中,approved:通过rejected:驳回
*/
private String applyStatus;
}

55
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueSuggestionResDTO.java

@ -0,0 +1,55 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* 议题建议列表
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/18 14:00
*/
@Data
public class IssueSuggestionResDTO implements Serializable {
private static final long serialVersionUID = -6217415454610258644L;
/**
* 建议id
*/
private String suggestionId;
/**
* 建议内容
*/
private String suggestion;
/**
* 建议时间戳
*/
private Long publishTime;
/**
* true 公开 false 匿名
*/
private Boolean publicFlag;
/**
* 用户头像url
*/
private String headPhoto;
/**
* 用户显示名称
*/
private String userShowName;
/**
* 态度 - opposition反对support赞成
*/
private String aititude;
@JsonIgnore
private String userId;
}

4
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/JoinVoteResultDTO.java

@ -17,4 +17,8 @@ public class JoinVoteResultDTO implements Serializable {
*/
private Boolean joinVote;
/**
* 态度 - opposition反对support赞成 如果已投票此列有值
*/
private String attitude;
}

16
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ParameterResultDTO.java

@ -0,0 +1,16 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/11/18 17:25
*/
@Data
public class ParameterResultDTO implements Serializable {
private static final long serialVersionUID = 2557066213008529836L;
private String auditSwitch;
}

22
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/SaveIssueSuggestionResultDTO.java

@ -0,0 +1,22 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 保存居民端用户对议题的建议或意见 返回议题id, 建议id
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/18 13:14
*/
@Data
public class SaveIssueSuggestionResultDTO implements Serializable {
private static final long serialVersionUID = 8199657776260756910L;
private String issueId;
/**
* issue_suggestion表主键
*/
private String suggestionId;
}

50
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/TopicInfoResultDTO.java

@ -0,0 +1,50 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
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 TopicInfoResultDTO 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;
public TopicInfoResultDTO() {
this.publishedUser = "";
this.publishedTime = NumConstant.ZERO_L;
this.topicContent = "";
this.topicImgs = new ArrayList<>();
}
}

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

155
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java

@ -3,19 +3,30 @@ 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.form.MyPartIssuesFormDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.IssueSuggestionDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.fallback.GovIssueOpenFeignClientFallBack;
import com.epmet.resi.group.dto.group.form.AllIssueFormDTO;
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;
import com.epmet.resi.group.dto.group.result.ApplicationDetailResultDTO;
import com.epmet.resi.group.dto.group.result.ApplicationHistoryResultDTO;
import com.epmet.resi.group.dto.group.result.ApplicationListResultDTO;
import com.epmet.resi.group.dto.group.result.*;
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调用该服务
@ -24,9 +35,38 @@ 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 {
/**
* @Description 待审核||已驳回 申请详情
* @Param applicationDetailFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@PostMapping("/gov/issue/issueapplication/applicationdetail")
Result<ApplicationDetailResultDTO> applicationDetail(@RequestBody ApplicationDetailFormDTO applicationDetailFormDTO);
/**
* @Description 话题转议题申请详情- 审核历史查询
* @Param applicationHistoryFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@PostMapping("/gov/issue/issueapplication/applicationhistory")
Result<ApplicationHistoryResultDTO> applicationHistory(@RequestBody ApplicationHistoryFormDTO applicationHistoryFormDTO);
/**
* @Description 待审核||已驳回 申请列表
* @Param applicationListFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@PostMapping("/gov/issue/issueapplication/applicationlist")
Result<List<ApplicationListResultDTO>> applicationList(@RequestBody ApplicationListFormDTO applicationListFormDTO);
/**
* @Description 个人中心-我参与的议题列表
* @Param myPartIssuesFormDTO
@ -64,4 +104,109 @@ public interface GovIssueOpenFeignClient {
*/
@PostMapping("/gov/issue/issue/shiftissuetopic")
Result<List<MyShiftIssueTopicsResultDTO>> myShiftIssueTopics(@RequestBody MyShiftIssueTopicsFormDTO myShiftIssueTopicsFormDTO);
/**
* 小组表决中议题
* @author zhaoqifeng
* @date 2020/11/17 14:58
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO>>
*/
@PostMapping("/gov/issue/issue/groupvotinglist")
Result<List<GroupVotingListResultDTO>> getVotingListByGroup(@RequestBody AllIssueFormDTO formDTO);
/**
* 小组已转项目议题
* @author zhaoqifeng
* @date 2020/11/17 14:58
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO>>
*/
@PostMapping("/gov/issue/issue/groupshiftprojectlist")
Result<List<GroupShiftProjectListResultDTO>> getShiftProjectListByGroup(@RequestBody AllIssueFormDTO formDTO);
/**
* 小组已关闭议题
* @author zhaoqifeng
* @date 2020/11/17 14:58
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO>>
*/
@PostMapping("/gov/issue/issue/groupclosedlist")
Result<List<GroupClosedListResultDTO>> getClosedListByGroup(@RequestBody AllIssueFormDTO formDTO);
/**
* @param formDTO
* @author yinzuomei
* @description 查询用户对于某个议题的想法 返回一条记录
* @Date 2020/11/18 10:17
**/
@PostMapping(value = "/gov/issue/issuesuggestion/queryuserissuesuggestion", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<IssueSuggestionDTO> queryIssueSuggestion(@RequestBody UserIssueSuggestionFormDTO formDTO);
/**
* @param issueSuggestionDTO
* @author yinzuomei
* @description 保存居民端用户对议题的建议或意见
* @Date 2020/11/18 13:24
**/
@PostMapping(value = "/gov/issue/issuesuggestion/save", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<SaveIssueSuggestionResultDTO> saveIssueSuggestion(@RequestBody IssueSuggestionDTO issueSuggestionDTO);
/**
* @param formDTO
* @author yinzuomei
* @description 分页按条件查询issue_application
* @Date 2020/11/18 16:40
**/
@PostMapping(value = "/gov/issue/issueapplication/listissueapp",consumes = MediaType.APPLICATION_JSON_VALUE)
Result<List<IssueApplicationResDTO>> listIssueApp(@RequestBody IssueAppQueryFormDTO formDTO);
/**
* @param formDTO
* @author yinzuomei
* @description 根据issue_application.id查询审核历史
* @Date 2020/11/18 17:03
**/
@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);
}

159
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java

@ -4,16 +4,25 @@ 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.form.MyPartIssuesFormDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.IssueSuggestionDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.resi.group.dto.group.form.AllIssueFormDTO;
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;
import com.epmet.resi.group.dto.group.result.ApplicationDetailResultDTO;
import com.epmet.resi.group.dto.group.result.ApplicationHistoryResultDTO;
import com.epmet.resi.group.dto.group.result.ApplicationListResultDTO;
import com.epmet.resi.group.dto.group.result.*;
import com.epmet.resi.mine.dto.from.MyShiftIssueTopicsFormDTO;
import com.epmet.resi.mine.dto.result.MyShiftIssueTopicsResultDTO;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* 本服务对外开放的API,其他服务通过引用此client调用该服务
@ -23,6 +32,20 @@ import java.util.List;
*/
@Component
public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient {
@Override
public Result<ApplicationDetailResultDTO> applicationDetail(ApplicationDetailFormDTO applicationDetailFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER,"applicationDetail",applicationDetailFormDTO);
}
@Override
public Result<ApplicationHistoryResultDTO> applicationHistory(ApplicationHistoryFormDTO applicationHistoryFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER,"applicationHistory",applicationHistoryFormDTO);
}
@Override
public Result<List<ApplicationListResultDTO>> applicationList(ApplicationListFormDTO applicationListFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER,"applicationList",applicationListFormDTO);
}
@Override
public Result<List<MyPartIssuesResultDTO>> myPartIssues(MyPartIssuesFormDTO myPartIssuesFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER,"myPartIssues",myPartIssuesFormDTO);
@ -42,4 +65,132 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
public Result<List<MyShiftIssueTopicsResultDTO>> myShiftIssueTopics(MyShiftIssueTopicsFormDTO myShiftIssueTopicsFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER,"myShiftIssueTopics",myShiftIssueTopicsFormDTO);
}
/**
* 小组表决中议题
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO>>
* @author zhaoqifeng
* @date 2020/11/17 14:58
*/
@Override
public Result<List<GroupVotingListResultDTO>> getVotingListByGroup(AllIssueFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getVotingListByGroup", formDTO);
}
/**
* 小组已转项目议题
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO>>
* @author zhaoqifeng
* @date 2020/11/17 14:58
*/
@Override
public Result<List<GroupShiftProjectListResultDTO>> getShiftProjectListByGroup(AllIssueFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getShiftProjectListByGroup", formDTO);
}
/**
* 小组已关闭议题
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO>>
* @author zhaoqifeng
* @date 2020/11/17 14:58
*/
@Override
public Result<List<GroupClosedListResultDTO>> getClosedListByGroup(AllIssueFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getShiftProjectListByGroup", formDTO);
}
/**
* @param formDTO
* @author yinzuomei
* @description
* @Date 2020/11/18 10:17
**/
@Override
public Result<IssueSuggestionDTO> queryIssueSuggestion(UserIssueSuggestionFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "queryIssueSuggestion", formDTO);
}
/**
* @param issueSuggestionDTO
* @author yinzuomei
* @description 保存居民端用户对议题的建议或意见
* @Date 2020/11/18 13:24
**/
@Override
public Result<SaveIssueSuggestionResultDTO> saveIssueSuggestion(IssueSuggestionDTO issueSuggestionDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "saveIssueSuggestion", issueSuggestionDTO);
}
/**
* @param formDTO
* @author yinzuomei
* @description 分页按条件查询issue_application
* @Date 2020/11/18 16:40
**/
@Override
public Result<List<IssueApplicationResDTO>> listIssueApp(IssueAppQueryFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "listIssueApp", formDTO);
}
/**
* @param formDTO
* @author yinzuomei
* @description 根据issue_application.id查询审核历史
* @Date 2020/11/18 17:03
**/
@Override
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>

17
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java

@ -94,5 +94,22 @@ public interface IssueConstant {
String REVIEW_ISSUE = "议题评论失败,评论内容为:%s";
String AUDIT_SWITCH = "audit_switch";
String AUDIT_SWITCH_NAME = "议题发布前经网格员审核";
String GRID = "grid";
/**
* 审核状态:待审核
*/
String UNDER_AUDITING="under_auditing";
/**
* 审核状态:通过
*/
String APPROVED="approved";
/**
* 审核状态:驳回
*/
String REJECTED="rejected";
}

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

@ -0,0 +1,167 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.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;
import com.epmet.resi.group.dto.group.result.ApplicationDetailResultDTO;
import com.epmet.resi.group.dto.group.result.ApplicationHistoryResultDTO;
import com.epmet.resi.group.dto.group.result.ApplicationListResultDTO;
import com.epmet.service.IssueApplicationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 话题转议题申请表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@RestController
@RequestMapping("issueapplication")
public class IssueApplicationController {
@Autowired
private IssueApplicationService issueApplicationService;
@GetMapping("page")
public Result<PageData<IssueApplicationDTO>> page(@RequestParam Map<String, Object> params){
PageData<IssueApplicationDTO> page = issueApplicationService.page(params);
return new Result<PageData<IssueApplicationDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<IssueApplicationDTO> get(@PathVariable("id") String id){
IssueApplicationDTO data = issueApplicationService.get(id);
return new Result<IssueApplicationDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody IssueApplicationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
issueApplicationService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody IssueApplicationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
issueApplicationService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
issueApplicationService.delete(ids);
return new Result();
}
/**
* @Description 待审核||已驳回 申请详情
* @Param applicationDetailFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@PostMapping("applicationdetail")
public Result<ApplicationDetailResultDTO> applicationDetail(@RequestBody ApplicationDetailFormDTO applicationDetailFormDTO){
return new Result<ApplicationDetailResultDTO>().ok(issueApplicationService.applicationDetail(applicationDetailFormDTO));
}
/**
* @Description 话题转议题申请详情- 审核历史查询
* @Param applicationHistoryFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@PostMapping("applicationhistory")
public Result<ApplicationHistoryResultDTO> applicationHistory(@RequestBody ApplicationHistoryFormDTO applicationHistoryFormDTO){
return new Result<ApplicationHistoryResultDTO>().ok(issueApplicationService.applicationHistory(applicationHistoryFormDTO));
}
/**
* @Description 待审核||已驳回 申请列表
* @Param applicationListFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@PostMapping("applicationlist")
public Result<List<ApplicationListResultDTO>> applicationList(@RequestBody ApplicationListFormDTO applicationListFormDTO){
return new Result<List<ApplicationListResultDTO>>().ok(issueApplicationService.applicationList(applicationListFormDTO));
}
/**
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.IssueApplicationDTO>>
* @param formDTO
* @author yinzuomei
* @description 分页按条件查询issue_application
* @Date 2020/11/18 16:26
**/
@PostMapping("listissueapp")
public Result<List<IssueApplicationResDTO>> listIssueApp(@RequestBody IssueAppQueryFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,IssueAppQueryFormDTO.Required.class);
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));
}
}

98
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationHistoryController.java

@ -0,0 +1,98 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.controller;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IssueApplicationHistoryDTO;
import com.epmet.dto.form.IssueApplicationIdFormDTO;
import com.epmet.dto.result.ApplicationHistoryResDTO;
import com.epmet.service.IssueApplicationHistoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 话题转议题审核历史表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@RestController
@RequestMapping("issueapplicationhistory")
public class IssueApplicationHistoryController {
@Autowired
private IssueApplicationHistoryService issueApplicationHistoryService;
@GetMapping("page")
public Result<PageData<IssueApplicationHistoryDTO>> page(@RequestParam Map<String, Object> params){
PageData<IssueApplicationHistoryDTO> page = issueApplicationHistoryService.page(params);
return new Result<PageData<IssueApplicationHistoryDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<IssueApplicationHistoryDTO> get(@PathVariable("id") String id){
IssueApplicationHistoryDTO data = issueApplicationHistoryService.get(id);
return new Result<IssueApplicationHistoryDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody IssueApplicationHistoryDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
issueApplicationHistoryService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody IssueApplicationHistoryDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
issueApplicationHistoryService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
issueApplicationHistoryService.delete(ids);
return new Result();
}
/**
* @param formDTO
* @author yinzuomei
* @description 根据issue_application.id查询审核历史
* @Date 2020/11/18 16:57
**/
@PostMapping("querybyissueapplicationid")
public Result<List<ApplicationHistoryResDTO>> queryByIssueApplicationId(@RequestBody IssueApplicationIdFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO);
return new Result<List<ApplicationHistoryResDTO>>().ok(issueApplicationHistoryService.queryByIssueApplicationId(formDTO.getIssueApplicationId()));
}
}

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

@ -0,0 +1,122 @@
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.*;
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.*;
import java.util.List;
/**
* 基层治理-议题管理 议题审核相关API
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/18 17:13
*/
@RestController
@RequestMapping("issueaudit")
public class IssueAuditController {
@Autowired
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);
ValidatorUtils.validateEntity(formDTO,IssueAppQueryFormDTO.Required.class,IssueAppQueryFormDTO.GovFormDTO.class);
return new Result<List<IssueApplicationResDTO>>().ok(issueApplicationService.listIssueApp(formDTO));
}
/**
* @param formDTO
* @author yinzuomei
* @description 已驳回 列表
* @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);
ValidatorUtils.validateEntity(formDTO,IssueAppQueryFormDTO.Required.class,IssueAppQueryFormDTO.GovFormDTO.class);
return new Result<List<IssueApplicationResDTO>>().ok(issueApplicationService.listIssueApp(formDTO));
}
/**
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.IssueApplicationResDTO>>
* @param formDTO
* @author yinzuomei
* @description 通用查询列表接口对其他服务开放
* @Date 2020/11/19 13:30
**/
@PostMapping("applicationlist")
public Result<List<IssueApplicationResDTO>> queryIssueAppliationList(@RequestBody IssueAppQueryFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,IssueAppQueryFormDTO.Required.class);
return new Result<List<IssueApplicationResDTO>>().ok(issueApplicationService.listIssueApp(formDTO));
}
/**
* @param formDTO
* @author yinzuomei
* @description 话题转议题申请详情- 审核历史查询
* @Date 2020/11/18 17:40
**/
@PostMapping("applicationhistory")
public Result<List<ApplicationHistoryResDTO>> queryApplicationHistory(@RequestBody IssueApplicationIdFormDTO formDTO){
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));
}
}

69
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java

@ -5,6 +5,10 @@ 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.resi.group.dto.group.form.AllIssueFormDTO;
import com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO;
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.form.TopicInfoFormDTO;
import com.epmet.service.IssueService;
import org.springframework.beans.factory.annotation.Autowired;
@ -62,6 +66,7 @@ public class IssueController {
public Result<List<ShiftProjectListResultDTO>> getShiftProjectList(@RequestBody ShiftProjectListFromDTO fromDTO) {
return new Result<List<ShiftProjectListResultDTO>>().ok(issueService.getShiftProjectList(fromDTO));
}
/**
* @Description 话题转议题 供群组话题服务调用
* @param issueShiftedFromTopicFormDTO
@ -70,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
@ -179,5 +210,41 @@ public class IssueController {
ValidatorUtils.validateEntity(myShiftIssueTopicsFormDTO, MyShiftIssueTopicsFormDTO.MyShiftIssueTopics.class);
return new Result<List<MyShiftIssueTopicsResultDTO>>().ok(issueService.myShiftIssueTopics(myShiftIssueTopicsFormDTO));
}
/**
* 小组表决中议题
* @author zhaoqifeng
* @date 2020/11/17 14:58
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO>>
*/
@PostMapping("groupvotinglist")
public Result<List<GroupVotingListResultDTO>> getVotingListByGroup(@RequestBody AllIssueFormDTO formDTO) {
return new Result<List<GroupVotingListResultDTO>>().ok(issueService.getVotingListByGroup(formDTO));
}
/**
* 小组已转项目议题
* @author zhaoqifeng
* @date 2020/11/17 14:58
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO>>
*/
@PostMapping("groupshiftprojectlist")
public Result<List<GroupShiftProjectListResultDTO>> getShiftProjectListByGroup(@RequestBody AllIssueFormDTO formDTO) {
return new Result<List<GroupShiftProjectListResultDTO>>().ok(issueService.getShiftProjectListByGroup(formDTO));
}
/**
* 小组已关闭议题
* @author zhaoqifeng
* @date 2020/11/17 14:58
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO>>
*/
@PostMapping("groupclosedlist")
public Result<List<GroupClosedListResultDTO>> getClosedListByGroup(@RequestBody AllIssueFormDTO formDTO) {
return new Result<List<GroupClosedListResultDTO>>().ok(issueService.getClosedListByGroup(formDTO));
}
}

46
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueCustomerParameterController.java

@ -26,6 +26,8 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.IssueCustomerParameterDTO;
import com.epmet.dto.form.ParameterFormDTO;
import com.epmet.dto.result.ParameterResultDTO;
import com.epmet.excel.IssueCustomerParameterExcel;
import com.epmet.service.IssueCustomerParameterService;
import org.springframework.beans.factory.annotation.Autowired;
@ -43,7 +45,7 @@ import java.util.Map;
* @since v1.0.0 2020-05-11
*/
@RestController
@RequestMapping("issuecustomerparameter")
@RequestMapping("parameter")
public class IssueCustomerParameterController {
@Autowired
@ -91,4 +93,46 @@ public class IssueCustomerParameterController {
ExcelUtils.exportExcelToTarget(response, null, list, IssueCustomerParameterExcel.class);
}
/**
* 议题发布审核-初始化
* @author zhaoqifeng
* @date 2020/11/18 15:26
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.ParameterResultDTO>
*/
@PostMapping("reviewinit")
public Result<ParameterResultDTO> reviewInit(@RequestBody ParameterFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, DefaultGroup.class);
ParameterResultDTO result = issueCustomerParameterService.reviewInit(formDTO);
return new Result<ParameterResultDTO>().ok(result);
}
/**
* 议题发布审核-保存
* @author zhaoqifeng
* @date 2020/11/18 15:26
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("reviewsave")
public Result reviewSave(@RequestBody ParameterFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, AddGroup.class, DefaultGroup.class);
issueCustomerParameterService.reviewSave(formDTO);
return new Result();
}
/**
* 议题发布审核-恢复默认
* @author zhaoqifeng
* @date 2020/11/18 15:26
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("reviewdefault")
public Result reviewDefault(@RequestBody ParameterFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, DefaultGroup.class);
issueCustomerParameterService.reviewDefault(formDTO);
return new Result();
}
}

87
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueSuggestionController.java

@ -0,0 +1,87 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.IssueSuggestionDTO;
import com.epmet.dto.form.EvaluationListFormDTO;
import com.epmet.dto.form.UserIssueSuggestionFormDTO;
import com.epmet.dto.result.IssueSuggestionResDTO;
import com.epmet.dto.result.SaveIssueSuggestionResultDTO;
import com.epmet.service.IssueSuggestionService;
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 java.util.List;
/**
* 居民端用户对议题建议或意见表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-18
*/
@RestController
@RequestMapping("issuesuggestion")
public class IssueSuggestionController {
@Autowired
private IssueSuggestionService issueSuggestionService;
/**
* @param formDTO
* @author yinzuomei
* @description 查询用户对于某个议题的想法 返回一条记录
* @Date 2020/11/18 10:12
**/
@PostMapping("queryuserissuesuggestion")
public Result<IssueSuggestionDTO> queryUserIssueSuggestion(@RequestBody UserIssueSuggestionFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO);
IssueSuggestionDTO issueSuggestionDTO=issueSuggestionService.queryUserIssueSuggestion(formDTO);
return new Result<IssueSuggestionDTO>().ok(issueSuggestionDTO);
}
/**
* @param dto
* @author yinzuomei
* @description 保存居民端用户对议题的建议或意见
* @Date 2020/11/18 13:15
**/
@PostMapping("save")
public Result<SaveIssueSuggestionResultDTO> saveIssueSuggestion(@RequestBody IssueSuggestionDTO dto) {
SaveIssueSuggestionResultDTO resultDTO = issueSuggestionService.saveIssueSuggestion(dto);
return new Result<SaveIssueSuggestionResultDTO>().ok(resultDTO);
}
/**
* @param formDTO
* @author yinzuomei
* @description 议题建议列表
* @Date 2020/11/18 14:15
**/
@PostMapping("list")
public Result<List<IssueSuggestionResDTO>> listIssueSug(@RequestBody EvaluationListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
List<IssueSuggestionResDTO> list = issueSuggestionService.listIssueSug(formDTO);
return new Result<List<IssueSuggestionResDTO>>().ok(list);
}
}

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

@ -0,0 +1,69 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
/**
* 话题转议题申请表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Mapper
public interface IssueApplicationDao extends BaseDao<IssueApplicationEntity> {
/**
* @Description 待审核||已驳回 申请详情
* @Param applicationDetailFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
ApplicationDetailResultDTO applicationDetail(ApplicationDetailFormDTO applicationDetailFormDTO);
/**
* @param formDTO
* @author yinzuomei
* @description 分页按条件查询issue_application
* @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);
}

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

@ -0,0 +1,53 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
/**
* 话题转议题审核历史表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Mapper
public interface IssueApplicationHistoryDao extends BaseDao<IssueApplicationHistoryEntity> {
/**
* @param issueApplicationId
* @author yinzuomei
* @description 根据issue_application.id查询审核历史
* @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);
}

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

@ -18,8 +18,12 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IssueCustomerParameterDTO;
import com.epmet.entity.IssueCustomerParameterEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 议题客户参数定制表
@ -29,5 +33,31 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface IssueCustomerParameterDao extends BaseDao<IssueCustomerParameterEntity> {
/**
* 获取客户配置
* @author zhaoqifeng
* @date 2020/11/18 17:32
* @param customerId
* @return java.util.List<com.epmet.dto.IssueCustomerParameterDTO>
*/
List<IssueCustomerParameterDTO> selectParamByCustomer(@Param("customerId") String customerId);
/**
* 删除客户配置
* @author zhaoqifeng
* @date 2020/11/18 17:33
* @param customerId
* @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);
}

31
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java

@ -22,6 +22,9 @@ import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.IssueEntity;
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.GroupVotingListResultDTO;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -176,4 +179,32 @@ public interface IssueDao extends BaseDao<IssueEntity> {
* @date 2020/11/13 3:42 下午
*/
List<MyShiftIssueTopicsResultDTO> myShiftIssueTopics(@Param("topicIds") List<String> topicIds,@Param("customerId") String customerId);
/**
* 根据话题ID查找表决中议题列表
* @author zhaoqifeng
* @date 2020/5/13 16:27
* @param formDTO 参数
* @return java.util.List<com.epmet.entity.IssueEntity>
*/
List<GroupVotingListResultDTO> selectVotingListByTopic(AllIssueFormDTO formDTO);
/**
* 根据话题ID查找已转项目议题列表
* @author zhaoqifeng
* @date 2020/5/13 16:27
* @param formDTO 参数
* @return java.util.List<com.epmet.entity.IssueEntity>
*/
List<IssueEntity> selectShiftIssueByTopic(AllIssueFormDTO formDTO);
/**
* 根据话题ID查找已转项目议题列表
* @author zhaoqifeng
* @date 2020/5/13 16:27
* @param formDTO 参数
* @return java.util.List<com.epmet.entity.IssueEntity>
*/
List<GroupClosedListResultDTO> selectClosedListByTopic(AllIssueFormDTO formDTO);
}

54
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueSuggestionDao.java

@ -0,0 +1,54 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IssueSuggestionDTO;
import com.epmet.dto.form.UserIssueSuggestionFormDTO;
import com.epmet.dto.result.IssueSuggestionResDTO;
import com.epmet.entity.IssueSuggestionEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 居民端用户对议题建议或意见表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-18
*/
@Mapper
public interface IssueSuggestionDao extends BaseDao<IssueSuggestionEntity> {
/**
* @return com.epmet.dto.IssueSuggestionDTO
* @param formDTO
* @author yinzuomei
* @description 查询用户对于某个议题的想法 返回一条记录
* @Date 2020/11/18 10:12
**/
IssueSuggestionDTO selectUserIssueSuggestion(UserIssueSuggestionFormDTO formDTO);
/**
* @param issueId
* @author yinzuomei
* @description 查询议题建议
* @Date 2020/11/18 14:27
**/
List<IssueSuggestionResDTO> selectListIssueSugByIssueId(String issueId);
}

11
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IssueVoteDetailDTO;
import com.epmet.dto.form.VoteFormDTO;
import com.epmet.dto.result.IssueAttitudeCountResultDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
@ -84,4 +85,14 @@ public interface IssueVoteDetailDao extends BaseDao<IssueVoteDetailEntity> {
List<MyPartIssuesResultDTO> myPartIssues(@Param("userId")String userId, @Param("topicIds")List<String> topicIds);
List<MyPartIssuesResultDTO> myPartIssuesByTopicId(@Param("topicIds")List<String> topicIds);
/**
* @return com.epmet.dto.IssueVoteDetailDTO
* @param userId
* @param issueId
* @author yinzuomei
* @description 查询用户对某个议题的表决信息
* @Date 2020/11/18 14:35
**/
IssueVoteDetailDTO selectUserIssueDet(@Param("userId") String userId, @Param("issueId") String issueId);
}

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

@ -0,0 +1,88 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 话题转议题申请表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("issue_application")
public class IssueApplicationEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 议题名称
*/
private String issueTitle;
/**
* 建议
*/
private String suggestion;
/**
* 审核状态under_auditing:待审核approved:通过rejected:驳回;自动通过auto_passed
*/
private String applyStatus;
/**
* 话题id
*/
private String topicId;
/**
* 小组id
*/
private String groupId;
/**
* 网格ID 居民端议题对应一个网格Id
*/
private String gridId;
/**
* 审核通过后对应的 议题id
*/
private String issueId;
/**
* 审核通过时填写的理由
*/
private String passedReason;
/**
* 审批通过时工作人员id,自动通过此列不存储
*/
private String approveStaffId;
}

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

@ -0,0 +1,66 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 话题转议题审核历史表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("issue_application_history")
public class IssueApplicationHistoryEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 话题转议题申请表 issue_application.id
*/
private String issueApplicationId;
/**
* under_auditing:待审核
* approved:审核通过
* rejected:驳回
* auto_passed:自动通过
*/
private String actionType;
/**
* 审核时的说明
*/
private String reason;
/**
* 工作端人员姓名
*/
private String staffName;
}

66
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueSuggestionEntity.java

@ -0,0 +1,66 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 居民端用户对议题建议或意见表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-18
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("issue_suggestion")
public class IssueSuggestionEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id customer.id
*/
private String customerId;
/**
* 议题id
*/
private String issueId;
/**
* 议题所属网格id
*/
private String gridId;
/**
* 对议题的想法
*/
private String suggestion;
/**
* 1公开; 0匿名
*/
private Integer publicFlag;
}

47
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueApplicationHistoryRedis.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 话题转议题审核历史表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Component
public class IssueApplicationHistoryRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

47
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueApplicationRedis.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 话题转议题申请表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Component
public class IssueApplicationRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

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

@ -0,0 +1,124 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
import java.util.Map;
/**
* 话题转议题审核历史表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
public interface IssueApplicationHistoryService extends BaseService<IssueApplicationHistoryEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<IssueApplicationHistoryDTO>
* @author generator
* @date 2020-11-17
*/
PageData<IssueApplicationHistoryDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<IssueApplicationHistoryDTO>
* @author generator
* @date 2020-11-17
*/
List<IssueApplicationHistoryDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return IssueApplicationHistoryDTO
* @author generator
* @date 2020-11-17
*/
IssueApplicationHistoryDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-11-17
*/
void save(IssueApplicationHistoryDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-11-17
*/
void update(IssueApplicationHistoryDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-11-17
*/
void delete(String[] ids);
/**
* @param issueApplicationId
* @author yinzuomei
* @description 根据issue_application.id查询审核历史
* @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);
}

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

@ -0,0 +1,146 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service;
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;
import com.epmet.resi.group.dto.group.form.ApplicationListFormDTO;
import com.epmet.resi.group.dto.group.result.ApplicationDetailResultDTO;
import com.epmet.resi.group.dto.group.result.ApplicationHistoryResultDTO;
import com.epmet.resi.group.dto.group.result.ApplicationListResultDTO;
import java.util.List;
import java.util.Map;
/**
* 话题转议题申请表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
public interface IssueApplicationService extends BaseService<IssueApplicationEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<IssueApplicationDTO>
* @author generator
* @date 2020-11-17
*/
PageData<IssueApplicationDTO> page(Map<String, Object> params);
/**
* 默认查询
* 该方法已被重写因此直接加载XML里的mapper而不进行切面增强因此改写逻辑同selectByTopicId
* @param params
* @return java.util.List<IssueApplicationDTO>
* @author generator
* @date 2020-11-17
*/
List<IssueApplicationDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return IssueApplicationDTO
* @author generator
* @date 2020-11-17
*/
IssueApplicationDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-11-17
*/
void save(IssueApplicationDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-11-17
*/
void update(IssueApplicationDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-11-17
*/
void delete(String[] ids);
/**
* @Description 待审核||已驳回 申请详情
* @Param applicationDetailFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
ApplicationDetailResultDTO applicationDetail(ApplicationDetailFormDTO applicationDetailFormDTO);
/**
* @Description 话题转议题申请详情- 审核历史查询
* @Param applicationHistoryFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
ApplicationHistoryResultDTO applicationHistory(ApplicationHistoryFormDTO applicationHistoryFormDTO);
/**
* @Description 待审核||已驳回 申请列表
* @Param applicationListFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
List<ApplicationListResultDTO> applicationList(ApplicationListFormDTO applicationListFormDTO);
/**
* @return java.util.List<com.epmet.dto.IssueApplicationDTO>
* @param formDTO
* @author yinzuomei
* @description 分页按条件查询issue_application
* @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);
}

8
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueAuditService.java

@ -0,0 +1,8 @@
package com.epmet.service;
/**
* @Author zxc
* @DateTime 2020/11/18 下午5:42
*/
public interface IssueAuditService {
}

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

@ -20,6 +20,8 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IssueCustomerParameterDTO;
import com.epmet.dto.form.ParameterFormDTO;
import com.epmet.dto.result.ParameterResultDTO;
import com.epmet.entity.IssueCustomerParameterEntity;
import java.util.List;
@ -92,4 +94,40 @@ public interface IssueCustomerParameterService extends BaseService<IssueCustomer
* @date 2020-05-11
*/
void delete(String[] ids);
/**
* 议题发布审核-初始化
* @author zhaoqifeng
* @date 2020/11/18 17:29
* @param formDTO
* @return com.epmet.dto.result.ParameterResultDTO
*/
ParameterResultDTO reviewInit(ParameterFormDTO formDTO);
/**
* 议题发布审核-保存
* @author zhaoqifeng
* @date 2020/11/18 17:29
* @param formDTO
* @return void
*/
void reviewSave(ParameterFormDTO formDTO);
/**
* 议题发布审核-恢复默认
* @author zhaoqifeng
* @date 2020/11/18 17:29
* @param formDTO
* @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);
}

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

@ -2,12 +2,17 @@ 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.*;
import com.epmet.dto.form.CommonIssueListFormDTO;
import com.epmet.dto.form.IssueShiftedFromTopicFormDTO;
import com.epmet.entity.IssueEntity;
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;
import com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
import java.util.List;
@ -128,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
@ -245,4 +272,31 @@ public interface IssueService extends BaseService<IssueEntity> {
*/
List<MyShiftIssueTopicsResultDTO> myShiftIssueTopics(MyShiftIssueTopicsFormDTO myShiftIssueTopicsFormDTO);
/**
* 小组表决中议题
* @author zhaoqifeng
* @date 2020/11/17 14:59
* @param formDTO
* @return java.util.List<com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO>
*/
List<GroupVotingListResultDTO> getVotingListByGroup(AllIssueFormDTO formDTO);
/**
* 小组已转项目议题
* @author zhaoqifeng
* @date 2020/11/17 14:59
* @param formDTO
* @return java.util.List<com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO>
*/
List<GroupShiftProjectListResultDTO> getShiftProjectListByGroup(AllIssueFormDTO formDTO);
/**
* 小组已关闭议题
* @author zhaoqifeng
* @date 2020/11/17 14:59
* @param formDTO
* @return java.util.List<com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO>
*/
List<GroupClosedListResultDTO> getClosedListByGroup(AllIssueFormDTO formDTO);
}

61
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueSuggestionService.java

@ -0,0 +1,61 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dto.IssueSuggestionDTO;
import com.epmet.dto.form.EvaluationListFormDTO;
import com.epmet.dto.form.UserIssueSuggestionFormDTO;
import com.epmet.dto.result.IssueSuggestionResDTO;
import com.epmet.dto.result.SaveIssueSuggestionResultDTO;
import com.epmet.entity.IssueSuggestionEntity;
import java.util.List;
/**
* 居民端用户对议题建议或意见表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-18
*/
public interface IssueSuggestionService extends BaseService<IssueSuggestionEntity> {
/**
* @param formDTO
* @author yinzuomei
* @description 查询用户对于某个议题的想法 返回一条记录
* @Date 2020/11/18 10:12
**/
IssueSuggestionDTO queryUserIssueSuggestion(UserIssueSuggestionFormDTO formDTO);
/**
* @param dto
* @author yinzuomei
* @description 保存居民端用户对议题的建议或意见
* @Date 2020/11/18 13:16
**/
SaveIssueSuggestionResultDTO saveIssueSuggestion(IssueSuggestionDTO dto);
/**
* @param formDTO
* @author yinzuomei
* @description 议题建议列表
* @Date 2020/11/18 14:16
**/
List<IssueSuggestionResDTO> listIssueSug(EvaluationListFormDTO formDTO);
}

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

@ -0,0 +1,175 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service.impl;
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.form.ApplicationDetailWorkFormDTO;
import com.epmet.dto.form.ApplicationHistoryWorkFormDTO;
import com.epmet.dto.form.UserIdsFormDTO;
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;
/**
* 话题转议题审核历史表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@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(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, IssueApplicationHistoryDTO.class);
}
@Override
public List<IssueApplicationHistoryDTO> list(Map<String, Object> params) {
List<IssueApplicationHistoryEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, IssueApplicationHistoryDTO.class);
}
private QueryWrapper<IssueApplicationHistoryEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<IssueApplicationHistoryEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public IssueApplicationHistoryDTO get(String id) {
IssueApplicationHistoryEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, IssueApplicationHistoryDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(IssueApplicationHistoryDTO dto) {
IssueApplicationHistoryEntity entity = ConvertUtils.sourceToTarget(dto, IssueApplicationHistoryEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(IssueApplicationHistoryDTO dto) {
IssueApplicationHistoryEntity entity = ConvertUtils.sourceToTarget(dto, IssueApplicationHistoryEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param issueApplicationId
* @author yinzuomei
* @description 根据issue_application.id查询审核历史
* @Date 2020/11/18 16:57
**/
@Override
public List<ApplicationHistoryResDTO> queryByIssueApplicationId(String issueApplicationId) {
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());
UserIdsFormDTO form = new UserIdsFormDTO();
form.setUserIds(userIds);
Result<List<StaffSinGridResultDTO>> listResult = epmetUserOpenFeignClient.getStaffInfoList(form);
if (!listResult.success()){
throw new RenException("议题审核历史查询用户基本信息失败......");
}
result.forEach(r -> listResult.getData().stream().filter(u -> r.getUserId().equals(u.getStaffId())).forEach(u -> r.setStaffName(u.getStaffName())));
return result;
}
}

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

@ -0,0 +1,178 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service.impl;
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.page.PageData;
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;
import com.epmet.resi.group.dto.group.form.ApplicationListFormDTO;
import com.epmet.resi.group.dto.group.result.ApplicationDetailResultDTO;
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;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 话题转议题申请表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-17
*/
@Service
public class IssueApplicationServiceImpl extends BaseServiceImpl<IssueApplicationDao, IssueApplicationEntity> implements IssueApplicationService {
@Override
public PageData<IssueApplicationDTO> page(Map<String, Object> params) {
IPage<IssueApplicationEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, IssueApplicationDTO.class);
}
/**
* @Description 该方法已被重写因此直接加载XML里的mapper而不进行切面增强因此改写逻辑同selectByTopicId
* @param params
* @return java.util.List<com.epmet.dto.IssueApplicationDTO>
* @author wangc
* @date 2020.11.30 09:53
*/
@Override
public List<IssueApplicationDTO> list(Map<String, Object> params) {
//List<IssueApplicationEntity> entityList = baseDao.selectList(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;
}
@Override
public IssueApplicationDTO get(String id) {
IssueApplicationEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, IssueApplicationDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(IssueApplicationDTO dto) {
IssueApplicationEntity entity = ConvertUtils.sourceToTarget(dto, IssueApplicationEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(IssueApplicationDTO dto) {
IssueApplicationEntity entity = ConvertUtils.sourceToTarget(dto, IssueApplicationEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param formDTO
* @return java.util.List<com.epmet.dto.IssueApplicationDTO>
* @author yinzuomei
* @description 分页按条件查询issue_application
* @Date 2020/11/18 16:26
**/
@Override
public List<IssueApplicationResDTO> listIssueApp(IssueAppQueryFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(),formDTO.getPageSize());
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
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@Override
public ApplicationDetailResultDTO applicationDetail(ApplicationDetailFormDTO applicationDetailFormDTO) {
ApplicationDetailResultDTO applicationDetailResultDTO = baseDao.applicationDetail(applicationDetailFormDTO);
return applicationDetailResultDTO;
}
/**
* @Description 话题转议题申请详情- 审核历史查询
* @Param applicationHistoryFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@Override
public ApplicationHistoryResultDTO applicationHistory(ApplicationHistoryFormDTO applicationHistoryFormDTO) {
return null;
}
/**
* @Description 待审核||已驳回 申请列表
* @Param applicationListFormDTO
* @author zxc
* @date 2020/11/17 10:45 上午
*/
@Override
public List<ApplicationListResultDTO> applicationList(ApplicationListFormDTO applicationListFormDTO) {
return null;
}
}

17
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueAuditServiceImpl.java

@ -0,0 +1,17 @@
package com.epmet.service.impl;
import com.epmet.service.IssueAuditService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Author zxc
* @DateTime 2020/11/18 下午5:42
*/
@Service
@Slf4j
public class IssueAuditServiceImpl implements IssueAuditService {
}

80
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java

@ -23,10 +23,14 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.constant.IssueConstant;
import com.epmet.dao.IssueCustomerParameterDao;
import com.epmet.dto.IssueCustomerParameterDTO;
import com.epmet.dto.form.ParameterFormDTO;
import com.epmet.dto.result.ParameterResultDTO;
import com.epmet.entity.IssueCustomerParameterEntity;
import com.epmet.service.IssueCustomerParameterService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -96,4 +100,80 @@ public class IssueCustomerParameterServiceImpl extends BaseServiceImpl<IssueCust
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* 议题发布审核-初始化
*
* @param formDTO
* @return com.epmet.dto.result.ParameterResultDTO
* @author zhaoqifeng
* @date 2020/11/18 17:29
*/
@Override
public ParameterResultDTO reviewInit(ParameterFormDTO formDTO) {
ParameterResultDTO result = new ParameterResultDTO();
List<IssueCustomerParameterDTO> list = baseDao.selectParamByCustomer(formDTO.getCustomerId());
if (CollectionUtils.isEmpty(list)) {
list = baseDao.selectParamByCustomer("default");
}
list.forEach(dto -> {
switch (dto.getParameterKey()) {
case IssueConstant.AUDIT_SWITCH:
result.setAuditSwitch(dto.getParameterValue());
break;
default:
break;
}
});
return result;
}
/**
* 议题发布审核-保存
*
* @param formDTO
* @return void
* @author zhaoqifeng
* @date 2020/11/18 17:29
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void reviewSave(ParameterFormDTO formDTO) {
//删除旧配置
baseDao.deleteParamByCustomer(formDTO.getCustomerId());
IssueCustomerParameterEntity entity = new IssueCustomerParameterEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setParameterKey(IssueConstant.AUDIT_SWITCH);
entity.setParameterName(IssueConstant.AUDIT_SWITCH_NAME);
entity.setParameterValue(formDTO.getAuditSwitch());
entity.setDescription("已开启审核:open; 无需审核:close");
insert(entity);
}
/**
* 议题发布审核-恢复默认
*
* @param formDTO
* @return void
* @author zhaoqifeng
* @date 2020/11/18 17:29
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void reviewDefault(ParameterFormDTO formDTO) {
//删除客户配置
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);
}
}

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

@ -13,20 +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.OrgInfoConstant;
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;
@ -35,28 +33,30 @@ import com.epmet.entity.IssueProjectRelationEntity;
import com.epmet.feign.*;
import com.epmet.redis.GovIssueRedis;
import com.epmet.redis.IssueVoteDetailRedis;
import com.epmet.resi.group.dto.group.form.AllIssueFormDTO;
import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO;
import com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO;
import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO;
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;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
@ -68,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
@ -90,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
@ -100,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}")
@ -249,8 +256,11 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
issueDTO.setIssueStatus(ModuleConstants.ISSUE_STATUS_VOTING);
issueDTO.setDecidedTime(issueShiftedFromTopicFormDTO.getCreatedTime());
int issueAffectedRow = baseDao.insertOne(issueDTO);
if(issueAffectedRow == NumConstant.ONE && StringUtils.isNotBlank(issueDTO.getId())){
//2.新增议题流程
if(issueAffectedRow == NumConstant.ONE && (StringUtils.isNotBlank(issueDTO.getId()) || StringUtils.isNotBlank(issueDTO.getIssueId()))){
if(StringUtils.isNotBlank(issueDTO.getIssueId())) issueDTO.setId(issueDTO.getIssueId());
//2.新增议题流程
IssueProcessDTO issueProcessDTO = new IssueProcessDTO();
issueProcessDTO.setIssueId(issueDTO.getId());
issueProcessDTO.setIssueStatus(ModuleConstants.ISSUE_STATUS_VOTING);
@ -271,6 +281,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
ModuleConstants.FAILURE_TO_ADD_ISSUE_PROCESS_LOG_TEMPLATE,issueDTO.getId()));
throw new RenException(ModuleConstants.FAILURE_TO_ADD_ISSUE_PROCESS);
}
//3.新增议题表决统计表
IssueVoteStatisticalDTO voteStatistical = new IssueVoteStatisticalDTO();
voteStatistical.setIssueId(issueDTO.getId());
@ -283,6 +295,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(
@ -292,6 +306,229 @@ 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 (applicationList.size() > NumConstant.ONE) {
applicationList.sort(Comparator.comparing(IssueApplicationDTO::getUpdatedTime, Collections.reverseOrder()));
logger.error("com.epmet.service.impl.IssueServiceImpl.topicShiftedToIssueV2,查出多条转移提提交记录,话题Id:{}", param.getTopicId());
}
if(!isStaffAudition)
if(StringUtils.equals(ModuleConstants.ISSUE_APPLICATION_STATUS_UNDER_AUDITING,applicationList.iterator().next().getApplyStatus()))
ifRepeat = true;
applyIds.addAll(applicationList.stream().map(IssueApplicationDTO::getId).collect(Collectors.toList()));
}
if(!ifRepeat) {
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 ? StringUtils.equals(ModuleConstants.AUDITION_TYPE_APPROVAL,param.getAudition().getActionType()) ? param.getAudition().getReason() :null : null);
carrier.setIssueId(isStaffAudition ? StringUtils.equals(ModuleConstants.AUDITION_TYPE_APPROVAL,param.getAudition().getActionType()) ? param.getIssueId() : null : null);
carrier.setApproveStaffId(isStaffAudition ? StringUtils.equals(ModuleConstants.AUDITION_TYPE_APPROVAL,param.getAudition().getActionType()) ? param.getUserId() : null : null);
carrier.setUpdatedTime(param.getCreatedTime());
carrier.setUpdatedBy(param.getUserId());
applicationService.update(carrier);
});
//新增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);
}
});
}
if(CollectionUtils.isNotEmpty(applyIds))
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));
if(StringUtils.equals(ModuleConstants.AUDITION_TYPE_AUTO_PASSED,defaultStatusUnderAuditing)){
applicationList.forEach(apply -> {
IssueApplicationDTO carrier = new IssueApplicationDTO();
carrier.setId(apply.getId());
carrier.setIssueId(result.getIssueId());
carrier.setUpdatedTime(param.getCreatedTime());
carrier.setUpdatedBy(param.getUserId());
applicationService.update(carrier);
});
}
}
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);
//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);
//如果这里不赋值,在更新application和新增applicationHistory时会检测到updatedBy和createdBy为空
//从而去httpServletRequest中获取当前请求的userId,FIXME 但是其余字段不会!
issueParam2.setUserId(token.getUserId());
FirstTopicShiftedToIssueApplicationResultDTO issueResult = topicShiftedToIssueV2(issueParam2);
app2update.setIssueId(issueResult.getIssueId());
}
}else throw new RenException(topicInfo.getInternalMsg());
//发送站内信
UserMessageFormDTO msgObj = new UserMessageFormDTO();
msgObj.setApp(ModuleConstants.APP_RESI);
msgObj.setCustomerId(application.getCustomerId());
msgObj.setGridId(application.getGridId());
msgObj.setMessageContent(String.format(ModuleConstants.ISSUE_AUDIT_RESULT_MSG_CONTENT_TEMPLATE,application.getIssueTitle(),StringUtils.equals(ModuleConstants.AUDITION_TYPE_REJECT,param.getActionType()) ? ModuleConstants.ISSUE_ACTION_REJECT : ModuleConstants.ISSUE_ACTION_SHIFT));
msgObj.setReadFlag(ReadFlagConstant.UN_READ);
msgObj.setTitle(ModuleConstants.ISSUE_AUDIT_RESULT_MSG_TITLE_TEMPLATE);
msgObj.setUserId(application.getCreatedBy());
List<UserMessageFormDTO> msgList = new LinkedList<>();msgList.add(msgObj);
epmetMessageOpenFeignClient.saveUserMessageList(msgList);
//}
//applicationService.update(app2update);
return app2update.getIssueId();
}
/**
* @Description 表决中列表
* @param issueListForm
@ -927,4 +1164,72 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return result;
}
/**
* 小组表决中议题
*
* @param formDTO
* @return java.util.List<com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO>
* @author zhaoqifeng
* @date 2020/11/17 14:59
*/
@Override
public List<GroupVotingListResultDTO> getVotingListByGroup(AllIssueFormDTO formDTO) {
//查询条件
int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize();
formDTO.setPageNo(pageIndex);
return baseDao.selectVotingListByTopic(formDTO);
}
/**
* 小组已转项目议题
*
* @param formDTO
* @return java.util.List<com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO>
* @author zhaoqifeng
* @date 2020/11/17 14:59
*/
@Override
public List<GroupShiftProjectListResultDTO> getShiftProjectListByGroup(AllIssueFormDTO formDTO) {
List<GroupShiftProjectListResultDTO> resultList = new ArrayList<>();
//查询条件
int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize();
formDTO.setPageNo(pageIndex);
List<IssueEntity> issueList = baseDao.selectShiftIssueByTopic(formDTO);
if (CollectionUtils.isEmpty(issueList)) {
return resultList;
}
//遍历获取所有的议题Id
List<String> issueIds = issueList.stream().map(IssueEntity::getId).collect(Collectors.toList());
ShiftProjectsFromDTO shiftProjectsFromDTO = new ShiftProjectsFromDTO();
shiftProjectsFromDTO.setIssueIds(issueIds);
List<ShiftProjectResultDTO> projectList = govProjectFeignClient.getProjectByIssue(shiftProjectsFromDTO).getData();
resultList = issueList.stream().flatMap(issue -> projectList.stream().filter(p -> issue.getId().equals(p.getOriginId())).map(project ->{
GroupShiftProjectListResultDTO shiftProject = new GroupShiftProjectListResultDTO();
shiftProject.setIssueId(issue.getId());
shiftProject.setIssueTitle(issue.getIssueTitle());
shiftProject.setCurrentHandleDepartMent(project.getDepartmentNameList());
shiftProject.setPublicReply(project.getPublicReply());
shiftProject.setIssueShiftedTime(project.getCreatedTime().getTime()/NumConstant.ONE_THOUSAND);
shiftProject.setProjectStatus(project.getStatus());
return shiftProject;
})).collect(Collectors.toList());
return resultList;
}
/**
* 小组已关闭议题
*
* @param formDTO
* @return java.util.List<com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO>
* @author zhaoqifeng
* @date 2020/11/17 14:59
*/
@Override
public List<GroupClosedListResultDTO> getClosedListByGroup(AllIssueFormDTO formDTO) {
//查询条件
int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize();
formDTO.setPageNo(pageIndex);
return baseDao.selectClosedListByTopic(formDTO);
}
}

173
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueSuggestionServiceImpl.java

@ -0,0 +1,173 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
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.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.dao.IssueSuggestionDao;
import com.epmet.dao.IssueVoteDetailDao;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.IssueSuggestionDTO;
import com.epmet.dto.IssueVoteDetailDTO;
import com.epmet.dto.form.EvaluationListFormDTO;
import com.epmet.dto.form.UserIssueSuggestionFormDTO;
import com.epmet.dto.form.UserResiInfoListFormDTO;
import com.epmet.dto.result.IssueSuggestionResDTO;
import com.epmet.dto.result.SaveIssueSuggestionResultDTO;
import com.epmet.dto.result.UserResiInfoResultDTO;
import com.epmet.entity.IssueSuggestionEntity;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.service.IssueService;
import com.epmet.service.IssueSuggestionService;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 居民端用户对议题建议或意见表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-18
*/
@Slf4j
@Service
public class IssueSuggestionServiceImpl extends BaseServiceImpl<IssueSuggestionDao, IssueSuggestionEntity> implements IssueSuggestionService {
@Autowired
private IssueService issueService;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
private String textSyncScanMethod;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private IssueVoteDetailDao issueVoteDetailDao;
/**
* @param formDTO
* @author yinzuomei
* @description 查询用户对于某个议题的想法 返回一条记录
* @Date 2020/11/18 10:12
**/
@Override
public IssueSuggestionDTO queryUserIssueSuggestion(UserIssueSuggestionFormDTO formDTO) {
return baseDao.selectUserIssueSuggestion(formDTO);
}
/**
* @param dto
* @author yinzuomei
* @description 保存居民端用户对议题的建议或意见
* @Date 2020/11/18 13:16
**/
@Override
public SaveIssueSuggestionResultDTO saveIssueSuggestion(IssueSuggestionDTO dto) {
//是否表决过
IssueVoteDetailDTO issueVoteDetailDTO = issueVoteDetailDao.selectUserIssueDet(dto.getCreatedBy(), dto.getIssueId());
if(null==issueVoteDetailDTO){
throw new RenException(EpmetErrorCode.VOTE_ISSUE_PLEASE.getCode());
}
//校验建议内容
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
TextTaskDTO taskDTO = new TextTaskDTO();
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
taskDTO.setContent(dto.getSuggestion());
textScanParamDTO.getTasks().add(taskDTO);
Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!textSyncScanResult.success()) {
log.warn("居民端用户对议题发表建议,内容审核服务返回失败");
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode());
}
}
//赋值网格id
IssueDTO issueDTO = issueService.get(dto.getIssueId());
if (null == issueDTO) {
throw new RenException(String.format("根据议题id%s,没有找到议题信息", dto.getIssueId()));
}
dto.setGridId(issueDTO.getGridId());
dto.setCustomerId(issueDTO.getCustomerId());
//插入
IssueSuggestionEntity entity = ConvertUtils.sourceToTarget(dto, IssueSuggestionEntity.class);
insert(entity);
SaveIssueSuggestionResultDTO resultDTO = new SaveIssueSuggestionResultDTO();
resultDTO.setIssueId(dto.getIssueId());
resultDTO.setSuggestionId(entity.getId());
return resultDTO;
}
/**
* @param formDTO
* @author yinzuomei
* @description 议题建议列表
* @Date 2020/11/18 14:16
**/
@Override
public List<IssueSuggestionResDTO> listIssueSug(EvaluationListFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<IssueSuggestionResDTO> list = baseDao.selectListIssueSugByIssueId(formDTO.getIssueId());
//用户信息公开的userId集合
Set<String> userIds = new HashSet<>();
list.forEach(issueSuggestion -> {
if (issueSuggestion.getPublicFlag()) {
userIds.add(issueSuggestion.getUserId());
}
IssueVoteDetailDTO issueVoteDetailDTO = issueVoteDetailDao.selectUserIssueDet(issueSuggestion.getUserId(), formDTO.getIssueId());
issueSuggestion.setAititude(null != issueVoteDetailDTO ? issueVoteDetailDTO.getAttitude() : StrConstant.EPMETY_STR);
});
//查询这部分人的基本信息
if (!CollectionUtils.isEmpty(userIds)) {
Result<List<UserResiInfoResultDTO>> userInfoRes = epmetUserFeignClient.getUserResiInfoList(new UserResiInfoListFormDTO(new ArrayList<>(userIds)));
if (userInfoRes.success() && !CollectionUtils.isEmpty(userInfoRes.getData())) {
Map<String, UserResiInfoResultDTO> userBaseInfoMap = userInfoRes.getData().stream().collect(Collectors.toMap(UserResiInfoResultDTO::getUserId, Function.identity()));
//赋值
list.forEach(issueSuggestionInfo -> {
if (issueSuggestionInfo.getPublicFlag()) {
UserResiInfoResultDTO userInfo = userBaseInfoMap.get(issueSuggestionInfo.getUserId());
if (null != userInfo && StringUtils.isNotBlank(userInfo.getHeadPhoto())) {
issueSuggestionInfo.setHeadPhoto(userInfo.getHeadPhoto());
}
if (null != userInfo && StringUtils.isNotBlank(userInfo.getShowName())) {
issueSuggestionInfo.setUserShowName(userInfo.getShowName());
}
}
});
}
}
return list;
}
}

19
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteDetailServiceImpl.java

@ -17,16 +17,16 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSONArray;
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.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
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.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.constant.IssueConstant;
import com.epmet.dao.IssueDao;
import com.epmet.dao.IssueVoteDetailDao;
@ -179,11 +179,24 @@ public class IssueVoteDetailServiceImpl extends BaseServiceImpl<IssueVoteDetailD
checkTopicPublisher.setTopicId(issueDTO.getSourceId());
CheckTopicPublisherResultDTO publisherResult = resiGroupFeignClient.checkTopicPublisher(checkTopicPublisher).getData();
//校验是否投过票
Integer checkoutVoteCount = baseDao.checkoutVote(formDTO);
/*Integer checkoutVoteCount = baseDao.checkoutVote(formDTO);
if (checkoutVoteCount > NumConstant.ZERO || issuePublisher > NumConstant.ZERO || publisherResult.getCheckTopicPublisher() > NumConstant.ZERO){
resultDTO.setJoinVote(true);
}else {
resultDTO.setJoinVote(false);
}*/
IssueVoteDetailDTO issueVoteDetailDTO=baseDao.selectUserIssueDet(checkVoteFormDTO.getUserId(),checkVoteFormDTO.getIssueId());
if(null!=issueVoteDetailDTO){
resultDTO.setJoinVote(true);
resultDTO.setAttitude(issueVoteDetailDTO.getAttitude());
return resultDTO;
}
if (issuePublisher > NumConstant.ZERO || publisherResult.getCheckTopicPublisher() > NumConstant.ZERO){
resultDTO.setJoinVote(true);
resultDTO.setAttitude(StrConstant.EPMETY_STR);
}else {
resultDTO.setJoinVote(false);
resultDTO.setAttitude(StrConstant.EPMETY_STR);
}
return resultDTO;
}

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

@ -9,62 +9,66 @@ public interface ModuleConstants {
/**
* 议题状态表决中
* */
*/
String ISSUE_STATUS_VOTING = "voting";
/**
* 议题状态已转项目
* */
*/
String ISSUE_STATUS_SHIFT_PROJECT = "shift_project";
/**
* 议题状态已关闭
* */
*/
String ISSUE_STATUS_CLOSED = "closed";
/**
* 议题审核状态 审核中
*/
String ISSUE_APPLICATION_STATUS_UNDER_AUDITING = "under_auditing";
/**
* 议题来源居民段话题
* */
*/
String ISSUE_FROM_TOPIC = "resi_topic";
/**
* 议题进展-当前操作组织类型-机构 不要与数据权限混淆
* */
*/
String ISSUE_PROCESS_ORG_TYPE_AGENCY = "agency";
/**
* 议题进展-当前操作组织类型-部门 不要与数据权限混淆
* */
*/
String ISSUE_PROCESS_ORG_TYPE_DEPT = "dept";
/**
* 议题进展-当前操作组织类型-网格 不要与数据权限混淆
* */
*/
String ISSUE_PROCESS_ORG_TYPE_GRID = "grid";
/**
* 话题转议题流程的操作文案模板
* */
*/
String ISSUE_PROCESS_VOTING_OPERATION_EXPLAIN_TEMPLATE = "【%s】%s发表的话题被组长%s转为议题:【%s】";
/**
* 新增议题流程记录失败日志模板
* */
*/
String FAILURE_TO_ADD_ISSUE_PROCESS_LOG_TEMPLATE = "新增议题流程记录失败,议题Id:【%s】";
/**
* 新增议题记录失败日志模板
* */
*/
String FAILURE_TO_ADD_ISSUE_LOG_TEMPLATE = "新增议题记录失败,议题来源:【%s】,议题来源Id:【%s】";
/**
* 新增议题流程记录失败日志模板
* */
*/
String FAILURE_TO_ADD_ISSUE_PROCESS = "新增议题流程记录失败】";
/**
* 新增议题记录失败日志模板
* */
*/
String FAILURE_TO_ADD_ISSUE = "新增议题记录失败,议题来源";
String EMPTY_STR = "";
@ -81,32 +85,73 @@ public interface ModuleConstants {
String FIELD_JAVA_STATISTICAL_DATE = "statisticalDate";
String FIELD_SQL_TOPIC_ID = "TOPIC_ID";
String FIELD_JAVA_TOPIC_ID = "topicId";
/**
* 议题表决态度 赞成
* */
*/
String ISSUE_VOTING_ATTITUDE_SUPPORT = "support";
/**
* 议题表决态度 反对
* */
*/
String ISSUE_VOTING_ATTITUDE_OPPOSITION = "opposition";
String CREATED_OR_UPDATED_BY_SYSTEM = "system";
/**
* 缓存中应表决数
*
*/
String SHOULD_VOTE_COUNT = "shouldVoteCount";
/**
* 没有找到指定议题异常模板
* */
*/
String ISSUE_NOT_FOUND_EXCEPTION_TEMPLATE = "没有找到指定议题,议题Id:【%s】";
/**
* 定时任务创建的数据 created_by
* */
*/
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";
String APP_GOV = "gov";
String APP_RESI = "resi";
String ISSUE_AUDIT_RESULT_MSG_TITLE_TEMPLATE = "您有一条议题审核消息";
String ISSUE_AUDIT_RESULT_MSG_CONTENT_TEMPLATE = "您好,您的%s话题已%s,请查看。";
String ISSUE_ACTION_SHIFT = "转议题";
String ISSUE_ACTION_REJECT = "驳回";
}

37
epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.2__issue_audit_tables.sql

@ -0,0 +1,37 @@
drop table if exists issue_application;
CREATE TABLE `issue_application` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(32) NOT NULL COMMENT '客户ID',
`ISSUE_TITLE` varchar(128) NOT NULL COMMENT '议题名称 ',
`SUGGESTION` varchar(1024) NOT NULL COMMENT '建议',
`APPLY_STATUS` varchar(32) NOT NULL COMMENT '审核状态:under_auditing:待审核;approved:通过;rejected:驳回',
`TOPIC_ID` varchar(32) NOT NULL COMMENT '话题id',
`GROUP_ID` varchar(64) NOT NULL COMMENT '小组id',
`GRID_ID` varchar(32) NOT NULL COMMENT '网格ID 居民端议题对应一个网格Id',
`ISSUE_ID` varchar(64) DEFAULT NULL COMMENT '审核通过后对应的 议题id',
`PASSED_REASON` varchar(1024) DEFAULT NULL COMMENT '审核通过时填写的理由',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间:第一次提交审核的时间,注意和历史表的第一条记录时间一致',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='话题转议题申请表';
drop table if exists issue_application_history;
CREATE TABLE `issue_application_history` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(32) NOT NULL COMMENT '客户ID',
`ISSUE_APPLICATION_ID` varchar(64) NOT NULL COMMENT '话题转议题申请表 issue_application.id',
`ACTION_TYPE` varchar(32) NOT NULL COMMENT 'under_auditing:提交审核;\r\napproved:审核通过,\r\nrejected:驳回',
`REASON` varchar(1024) DEFAULT NULL COMMENT '审核时的说明',
`STAFF_NAME` varchar(255) DEFAULT NULL COMMENT '工作端人员姓名',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识:0 未删除 1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人 提交人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '修改人ID',
`UPDATED_TIME` datetime NOT NULL COMMENT '修改时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='话题转议题审核历史表';

16
epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.3__issue_sugg_tables.sql

@ -0,0 +1,16 @@
drop table if exists issue_suggestion;
CREATE TABLE `issue_suggestion` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id customer.id',
`ISSUE_ID` varchar(64) NOT NULL COMMENT '议题id',
`GRID_ID` varchar(64) NOT NULL COMMENT '议题所属网格id',
`SUGGESTION` varchar(512) NOT NULL COMMENT '对议题的想法',
`PUBLIC_FLAG` tinyint(1) NOT NULL COMMENT '1公开; 0匿名',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识:0 未删除 1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '提建议的人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '修改人ID',
`UPDATED_TIME` datetime NOT NULL COMMENT '修改时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='居民端用户对议题建议或意见表';

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:自动通过';

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

@ -0,0 +1,2 @@
ALTER TABLE issue_application
ADD COLUMN(`APPROVE_STAFF_ID` VARCHAR(64) COMMENT '审批通过时工作人员id,自动通过此列不存储');

1
epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.6__add_default_audit_switch.sql

@ -0,0 +1 @@
INSERT INTO `issue_customer_parameter`(`ID`, `CUSTOMER_ID`, `PARAMETER_KEY`, `PARAMETER_NAME`, `PARAMETER_VALUE`, `DESCRIPTION`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1', 'default', 'audit_switch', '议题发布前经网格员审核', 'close', '已开启审核:open; 无需审核:close', '0', 0, 'APP_USER', '2020-11-17 09:31:03', 'APP_USER', '2020-11-17 09:31:10');

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

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.IssueApplicationDao">
<select id="applicationDetail" resultType="com.epmet.resi.group.dto.group.result.ApplicationDetailResultDTO">
SELECT
ID AS issueApplicationId,
ISSUE_TITLE,
GRID_ID,
topic_id,
CREATED_BY AS userId,
suggestion AS issueSuggestion
FROM issue_application
WHERE DEL_FLAG = '0'
AND ID = #{issueApplicationId}
</select>
<!-- 分页按条件查询issue_application -->
<select id="selectList" resultType="com.epmet.dto.result.IssueApplicationResDTO" parameterType="com.epmet.dto.form.IssueAppQueryFormDTO">
SELECT
ia.id AS issueApplicationId,
ia.ISSUE_TITLE,
unix_timestamp( ia.UPDATED_TIME ) AS latestTime,
ia.SUGGESTION,
ia.APPLY_STATUS
FROM
issue_application ia
WHERE
ia.DEL_FLAG = '0'
<if test="applyStatus != null and applyStatus.trim() != ''">
AND ia.APPLY_STATUS = #{applyStatus}
</if>
<if test="gridId != null and gridId.trim() != ''">
AND ia.GRID_ID = #{gridId}
</if>
<if test="groupId != null and groupId.trim() != ''">
AND ia.GROUP_ID = #{groupId}
</if>
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}
ORDER BY CREATED_TIME DESC
</select>
</mapper>

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

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.IssueApplicationHistoryDao">
<!-- 根据issue_application.id查询审核历史 -->
<select id="selectListByIssueApplicationId" resultType="com.epmet.dto.result.ApplicationHistoryResDTO">
SELECT
iah.ID as historyId,
iah.ACTION_TYPE,
unix_timestamp( iah.CREATED_TIME ) AS operateTime,
IFNULL(iah.REASON,'')AS REASON,
IFNULL(iah.STAFF_NAME,'')as STAFF_NAME
FROM
issue_application_history iah
WHERE
iah.DEL_FLAG = '0'
AND iah.ISSUE_APPLICATION_ID = #{issueApplicationId}
ORDER BY
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,
IFNULL(iah.REASON,'') AS 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>

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

@ -17,6 +17,27 @@
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<delete id="deleteParamByCustomer">
DELETE FROM issue_customer_parameter
WHERE CUSTOMER_ID = #{customerId}
</delete>
<select id="selectParamByCustomer" resultType="com.epmet.dto.IssueCustomerParameterDTO">
SELECT PARAMETER_KEY,
PARAMETER_NAME,
PARAMETER_VALUE
FROM
issue_customer_parameter
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>

74
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>
@ -377,6 +386,69 @@
del_flag = 0
AND source_id = #{topicId}
</select>
<select id="selectIssueListByTopic" resultType="com.epmet.entity.IssueEntity">
SELECT
*
FROM
issue
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{gridId}
AND ISSUE_STATUS = 'shift_project'
ORDER BY UPDATED_TIME DESC
</select>
<select id="selectShiftIssueByTopic" resultType="com.epmet.entity.IssueEntity">
SELECT
ID,
IFNULL(ISSUE_TITLE, '') AS issueTitle
FROM
issue
WHERE
DEL_FLAG = '0'
AND SOURCE_TYPE = 'resi_topic'
<foreach item="topic" collection="topicIds" separator="OR" open="AND (" close=")" index="">
SOURCE_ID = #{topic}
</foreach>
AND ISSUE_STATUS = 'shift_project'
ORDER BY UPDATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<select id="selectVotingListByTopic" resultType="com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO">
SELECT
ID AS "issueId",
IFNULL(ISSUE_TITLE, '') AS "issueTitle",
UNIX_TIMESTAMP( CREATED_TIME ) AS "issuePublishTime",
IFNULL(SUGGESTION, '') AS "suggestion"
FROM
issue
WHERE
DEL_FLAG = '0'
AND SOURCE_TYPE = 'resi_topic'
<foreach item="topic" collection="topicIds" separator="OR" open="AND (" close=")" index="">
SOURCE_ID = #{topic}
</foreach>
AND ISSUE_STATUS = 'voting'
ORDER BY CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<select id="selectClosedListByTopic" resultType="com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO">
SELECT
ID AS "issueId",
IFNULL(ISSUE_TITLE, '') AS "issueTitle",
IFNULL(CLOSE_REASON, '') AS "solution",
UNIX_TIMESTAMP( UPDATED_TIME ) AS "issueClosedTime"
FROM
issue
WHERE
DEL_FLAG = '0'
AND SOURCE_TYPE = 'resi_topic'
<foreach item="topic" collection="topicIds" separator="OR" open="AND (" close=")" index="">
SOURCE_ID = #{topic}
</foreach>
AND ISSUE_STATUS = 'closed'
ORDER BY UPDATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!-- 个人中心-我发起的议题列表-表决中 -->
<select id="myPubIssuesAuditing" resultType="com.epmet.dto.result.MyPubIssuesAuditingResultDTO">

36
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueSuggestionDao.xml

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.IssueSuggestionDao">
<!-- 查询用户对于某个议题的想法 返回一条记录 -->
<select id="selectUserIssueSuggestion" parameterType="com.epmet.dto.form.UserIssueSuggestionFormDTO" resultType="com.epmet.dto.IssueSuggestionDTO">
SELECT
*
FROM
issue_suggestion i
WHERE
i.DEL_FLAG = '0'
AND i.ISSUE_ID = #{issueId}
AND i.CREATED_BY=#{userId}
</select>
<!-- 查询议题建议 -->
<select id="selectListIssueSugByIssueId" resultType="com.epmet.dto.result.IssueSuggestionResDTO">
SELECT
ig.id AS suggestionId,
ig.SUGGESTION,
unix_timestamp(ig.CREATED_TIME)AS publishTime,
ig.PUBLIC_FLAG AS publicFlag,
'' AS headPhoto,
'' AS userShowName,
'' AS aititude,
ig.CREATED_BY AS userId
FROM
issue_suggestion ig
WHERE
ig.DEL_FLAG = '0'
AND ig.ISSUE_ID =#{issueId}
ORDER BY
ig.CREATED_TIME DESC
</select>
</mapper>

12
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml

@ -107,4 +107,16 @@
</foreach>
ORDER BY i.CREATED_TIME DESC
</select>
<!-- 查询用户对某个议题的表决信息 -->
<select id="selectUserIssueDet" parameterType="map" resultType="com.epmet.dto.IssueVoteDetailDTO">
SELECT
*
FROM
issue_vote_detail ivd
WHERE
ivd.DEL_FLAG = '0'
AND ivd.ISSUE_ID =#{issueId}
AND ivd.CREATED_BY =#{userId}
</select>
</mapper>

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

56
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ParameterFormDTO.java

@ -0,0 +1,56 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/11/18 15:00
*/
@NoArgsConstructor
@Data
public class ParameterFormDTO implements Serializable {
private static final long serialVersionUID = 6943367994919967821L;
/**
* 客户ID
*/
@NotBlank(message = "客户ID不能为空", groups = DefaultGroup.class)
private String customerId;
/**
* 可滞留天数
*/
@NotBlank(message = "可滞留天数不能为空", groups = AddGroup.class)
private String detentionDays;
/**
* 计算方式 工作日work 日历天calendar
*/
@NotBlank(message = "计算方式 不能为空", groups = AddGroup.class)
private String calculation;
/**
* 即将超期提醒时间
*/
@NotBlank(message = "即将超期提醒时间不能为空", groups = AddGroup.class)
private String remindTime;
/**
* 推送时间 默认 上午8点
*/
@NotBlank(message = "推送时间不能为空", groups = AddGroup.class)
private String pushTime;
/**
* 设定核算单位天开始时间
*/
@NotBlank(message = "设定核算单位天开始时间不能为空", groups = AddGroup.class)
private String startTime;
/**
* 设定核算单位天结束时间
*/
@NotBlank(message = "设定核算单位天结束时间不能为空", groups = AddGroup.class)
private String endTime;
}

39
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ParameterResultDTO.java

@ -0,0 +1,39 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/11/18 15:19
*/
@Data
public class ParameterResultDTO implements Serializable {
private static final long serialVersionUID = -2066374948905858262L;
/**
* 可滞留天数
*/
private String detentionDays;
/**
* 计算方式 工作日work 日历天calendar
*/
private String calculation;
/**
* 即将超期提醒时间
*/
private String remindTime;
/**
* 推送时间 默认 上午8点
*/
private String pushTime;
/**
* 设定核算单位天开始时间
*/
private String startTime;
/**
* 设定核算单位天结束时间
*/
private String endTime;
}

16
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ParameterKeyConstant.java

@ -11,17 +11,17 @@ public interface ParameterKeyConstant {
* 可滞留天数
*/
String DETENTION_DAYS = "detention_days";
String DETENTION_DAYS_NAME = "可滞留天数";
/**
* 计算方式
*/
String CALCULATION = "calculation";
String CALCULATION_NAME = "计算方式";
/**
* 计算方式-工作日
*/
String WORK = "work";
/**
* 计算方式-日历天
*/
@ -31,14 +31,26 @@ public interface ParameterKeyConstant {
* 即将超期提醒时间
*/
String REMIND_TIME = "remind_time";
String REMIND_TIME_NAME = "即将超期提醒时间";
/**
* 推送时间
*/
String PUSH_TIME = "push_time";
String PUSH_TIME_NAME = "推送时间";
/**
* 起止时间
*/
String START_AND_END_TIME = "start_and_end_time";
/**
* 设定核算单位天开始时间
*/
String START_TIME = "start_time";
String START_TIME_NAME = "设定核算单位天开始时间";
/**
* 设定核算单位天结束时间
*/
String END_TIME = "end_time";
String END_TIME_NAME = "设定核算单位天结束时间";
}

46
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/CustomerProjectParameterController.java

@ -26,6 +26,8 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.CustomerProjectParameterDTO;
import com.epmet.dto.form.ParameterFormDTO;
import com.epmet.dto.result.ParameterResultDTO;
import com.epmet.excel.CustomerProjectParameterExcel;
import com.epmet.service.CustomerProjectParameterService;
import org.springframework.beans.factory.annotation.Autowired;
@ -43,7 +45,7 @@ import java.util.Map;
* @since v1.0.0 2020-05-11
*/
@RestController
@RequestMapping("customerprojectparameter")
@RequestMapping("parameter")
public class CustomerProjectParameterController {
@Autowired
@ -91,4 +93,46 @@ public class CustomerProjectParameterController {
ExcelUtils.exportExcelToTarget(response, null, list, CustomerProjectParameterExcel.class);
}
/**
* 滞留提醒-初始化
* @author zhaoqifeng
* @date 2020/11/18 15:26
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.ParameterResultDTO>
*/
@PostMapping("remindinit")
public Result<ParameterResultDTO> remindInit(@RequestBody ParameterFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, DefaultGroup.class);
ParameterResultDTO result = customerProjectParameterService.remindInit(formDTO);
return new Result<ParameterResultDTO>().ok(result);
}
/**
* 滞留提醒-保存
* @author zhaoqifeng
* @date 2020/11/18 15:26
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("remindsave")
public Result remindSave(@RequestBody ParameterFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, AddGroup.class, DefaultGroup.class);
customerProjectParameterService.remindSave(formDTO);
return new Result();
}
/**
* 滞留提醒-恢复默认
* @author zhaoqifeng
* @date 2020/11/18 15:26
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("reminddefault")
public Result remindDefault(@RequestBody ParameterFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, DefaultGroup.class);
customerProjectParameterService.remindDefault(formDTO);
return new Result();
}
}

9
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/CustomerProjectParameterDao.java

@ -70,4 +70,13 @@ public interface CustomerProjectParameterDao extends BaseDao<CustomerProjectPara
CustomerProjectParameterDTO getDefaultPushTime();
CustomerProjectParameterDTO getPushTimeConfig(@Param("customerId") String customerId);
/**
* 删除旧数据
* @author zhaoqifeng
* @date 2020/11/18 17:01
* @param customerId
* @return int
*/
int deleteByCustomer(@Param("customerId") String customerId);
}

29
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/CustomerProjectParameterService.java

@ -20,6 +20,8 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.CustomerProjectParameterDTO;
import com.epmet.dto.form.ParameterFormDTO;
import com.epmet.dto.result.ParameterResultDTO;
import com.epmet.entity.CustomerProjectParameterEntity;
import java.util.List;
@ -137,4 +139,31 @@ public interface CustomerProjectParameterService extends BaseService<CustomerPro
* @return com.epmet.dto.CustomerProjectParameterDTO
*/
CustomerProjectParameterDTO getPushTimeConfig(String customerId);
/**
* 滞留提醒-初始化
* @author zhaoqifeng
* @date 2020/11/18 15:33
* @param formDTO
* @return com.epmet.dto.result.ParameterResultDTO
*/
ParameterResultDTO remindInit(ParameterFormDTO formDTO);
/**
* 滞留提醒-保存
* @author zhaoqifeng
* @date 2020/11/18 15:33
* @param formDTO
* @return void
*/
void remindSave(ParameterFormDTO formDTO);
/**
* 滞留提醒-恢复默认
* @author zhaoqifeng
* @date 2020/11/18 15:33
* @param formDTO
* @return void
*/
void remindDefault(ParameterFormDTO formDTO);
}

133
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/CustomerProjectParameterServiceImpl.java

@ -23,16 +23,27 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.constant.ParameterKeyConstant;
import com.epmet.dao.CustomerProjectParameterDao;
import com.epmet.dto.CustomerProjectParameterDTO;
import com.epmet.dto.form.ParameterFormDTO;
import com.epmet.dto.result.ParameterResultDTO;
import com.epmet.entity.CustomerProjectParameterEntity;
import com.epmet.redis.CustomerProjectParameterRedis;
import com.epmet.service.CustomerProjectParameterService;
import org.apache.commons.collections4.CollectionUtils;
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.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@ -157,4 +168,126 @@ public class CustomerProjectParameterServiceImpl extends BaseServiceImpl<Custome
return baseDao.getPushTimeConfig(customerId);
}
/**
* 滞留提醒-初始化
*
* @param formDTO
* @return com.epmet.dto.result.ParameterResultDTO
* @author zhaoqifeng
* @date 2020/11/18 15:33
*/
@Override
public ParameterResultDTO remindInit(ParameterFormDTO formDTO) {
ParameterResultDTO result = new ParameterResultDTO();
List<CustomerProjectParameterDTO> list = getParameterByCustomer(formDTO.getCustomerId());
if (CollectionUtils.isEmpty(list)) {
list = getParameterByCustomer("default");
}
list.forEach(dto -> {
switch (dto.getParameterKey()) {
case ParameterKeyConstant.DETENTION_DAYS:
result.setDetentionDays(dto.getParameterValue());
break;
case ParameterKeyConstant.CALCULATION:
result.setCalculation(dto.getParameterValue());
break;
case ParameterKeyConstant.REMIND_TIME:
result.setRemindTime(dto.getParameterValue());
break;
case ParameterKeyConstant.PUSH_TIME:
result.setPushTime(dto.getParameterValue());
break;
case ParameterKeyConstant.START_TIME:
result.setStartTime(dto.getParameterValue());
break;
case ParameterKeyConstant.END_TIME:
result.setEndTime(dto.getParameterValue());
break;
default:
break;
}
});
return result;
}
/**
* 滞留提醒-保存
*
* @param formDTO
* @return void
* @author zhaoqifeng
* @date 2020/11/18 15:33
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void remindSave(ParameterFormDTO formDTO) {
List<CustomerProjectParameterEntity> list = new ArrayList<>();
//删除旧数据
baseDao.deleteByCustomer(formDTO.getCustomerId());
//可滞留天数
CustomerProjectParameterEntity detentionDays = new CustomerProjectParameterEntity();
detentionDays.setCustomerId(formDTO.getCustomerId());
detentionDays.setParameterKey(ParameterKeyConstant.DETENTION_DAYS);
detentionDays.setParameterValue(formDTO.getDetentionDays());
detentionDays.setParameterName(ParameterKeyConstant.DETENTION_DAYS_NAME);
detentionDays.setDescription("默5天");
list.add(detentionDays);
//计算方式 工作日work 日历天calendar
CustomerProjectParameterEntity calculation = new CustomerProjectParameterEntity();
calculation.setCustomerId(formDTO.getCustomerId());
calculation.setParameterKey(ParameterKeyConstant.CALCULATION);
calculation.setParameterValue(formDTO.getCalculation());
calculation.setParameterName(ParameterKeyConstant.CALCULATION_NAME);
calculation.setDescription("计算方式 工作日work 日历天calendar");
list.add(calculation);
//即将超期提醒时间
CustomerProjectParameterEntity remindTime = new CustomerProjectParameterEntity();
remindTime.setCustomerId(formDTO.getCustomerId());
remindTime.setParameterKey(ParameterKeyConstant.REMIND_TIME);
remindTime.setParameterValue(formDTO.getRemindTime());
remindTime.setParameterName(ParameterKeyConstant.REMIND_TIME_NAME);
remindTime.setDescription("默认 当天");
list.add(remindTime);
//推送时间
CustomerProjectParameterEntity pushTime = new CustomerProjectParameterEntity();
pushTime.setCustomerId(formDTO.getCustomerId());
pushTime.setParameterKey(ParameterKeyConstant.PUSH_TIME);
pushTime.setParameterValue(formDTO.getPushTime());
pushTime.setParameterName(ParameterKeyConstant.PUSH_TIME_NAME);
pushTime.setDescription("默认 上午8点");
list.add(pushTime);
//设定核算单位天开始时间
CustomerProjectParameterEntity startTime = new CustomerProjectParameterEntity();
startTime.setCustomerId(formDTO.getCustomerId());
startTime.setParameterKey(ParameterKeyConstant.START_TIME);
startTime.setParameterValue(formDTO.getStartTime());
startTime.setParameterName(ParameterKeyConstant.START_TIME_NAME);
startTime.setDescription("默认 00:00:00");
list.add(startTime);
//设定核算单位天结束时间
CustomerProjectParameterEntity endTime = new CustomerProjectParameterEntity();
endTime.setCustomerId(formDTO.getCustomerId());
endTime.setParameterKey(ParameterKeyConstant.END_TIME);
endTime.setParameterValue(formDTO.getEndTime());
endTime.setParameterName(ParameterKeyConstant.END_TIME_NAME);
endTime.setDescription("默认 23:59:00");
list.add(endTime);
insertBatch(list);
}
/**
* 滞留提醒-恢复默认
*
* @param formDTO
* @return void
* @author zhaoqifeng
* @date 2020/11/18 15:33
*/
@Override
public void remindDefault(ParameterFormDTO formDTO) {
//删除配置
baseDao.deleteByCustomer(formDTO.getCustomerId());
}
}

4
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/CustomerProjectParameterDao.xml

@ -17,6 +17,9 @@
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<delete id="deleteByCustomer">
DELETE FROM customer_project_parameter WHERE CUSTOMER_ID = #{customerId}
</delete>
<select id="selectParameterValueByKey" resultType="java.lang.String" parameterType="com.epmet.entity.CustomerProjectParameterEntity">
select
PARAMETER_VALUE
@ -28,6 +31,7 @@
</select>
<select id="getParameterByCustomer" resultType="com.epmet.dto.CustomerProjectParameterDTO">
select
PARAMETER_KEY,
PARAMETER_NAME,
PARAMETER_VALUE
from

23
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupCodeConstant.java

@ -0,0 +1,23 @@
package com.epmet.resi.group.constant;
/**
* @description:
* @author: liushaowen
* @date: 2020/11/13 16:23
*/
public interface GroupCodeConstant {
/**
* 群二维码类型-邀请
*/
String CODE_TYPE_INVITE = "invite";
/**
* aliyun图片地址域名对应正则表达式
*/
String PATTERN = "^((http://)|(https://))?([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}(/)";
/**
* 供前端下载图片jenkins转发前缀
*/
String STORAGE = "/storage/";
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save