diff --git a/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java b/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java index a5ea6a1a37..8dbb4881f5 100644 --- a/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java +++ b/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java @@ -25,7 +25,9 @@ import org.apache.ibatis.reflection.MetaObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.swing.text.html.Option; import java.util.Date; +import java.util.Optional; /** * 公共字段,自动填充值 @@ -80,15 +82,16 @@ public class FieldMetaObjectHandler implements MetaObjectHandler { } public Object getCreatedByFieldValue(MetaObject metaObject) { - Object value = loginUserUtil.getLoginUserId(); - if (value == null) { + Object value = null; + if (metaObject.hasGetter(FieldConstant.CREATED_BY_HUMP)) { value = metaObject.getValue(FieldConstant.CREATED_BY_HUMP); } if (value == null) { - value = Constant.APP_USER_FLAG; + + value = Optional.ofNullable(loginUserUtil.getLoginUserId()).orElse(Constant.APP_USER_FLAG); } - } + return value; } @@ -115,15 +118,15 @@ public class FieldMetaObjectHandler implements MetaObjectHandler { } public Object getUpdatedByFieldValue(MetaObject metaObject) { - Object value = loginUserUtil.getLoginUserId(); - if (value == null) { + Object value = null; + if (metaObject.hasGetter(FieldConstant.UPDATED_BY_HUMP)) { value = metaObject.getValue(FieldConstant.UPDATED_BY_HUMP); } if (value == null) { - value = Constant.APP_USER_FLAG; + value = Optional.ofNullable(loginUserUtil.getLoginUserId()).orElse(Constant.APP_USER_FLAG); } - } + return value; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/PageFormDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/PageFormDTO.java new file mode 100644 index 0000000000..134124f512 --- /dev/null +++ b/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; +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index e325428f8a..8fabc0adee 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -117,7 +117,7 @@ public enum EpmetErrorCode { OPER_EXT_APP_SECRET_RESET_FAIL(8714, "秘钥更新失败"), OPER_UPLOAD_IMG_TYPE_ERROR(8715, "请上传PNG格式的图片"), OPER_UPLOAD_IMG_SIZE_ERROR(8716, "请上传200*200的图片"), - USER_LIST_ROLES_BY_KEY_FAIL(8715, "根据角色key查询角色列表失败"), + USER_LIST_ROLES_BY_KEY_FAIL(8717, "根据角色key查询角色列表失败"), // 党建声音 前端提示 88段 DRAFT_CONTENT_IS_NULL(8801, "至少需要添加一个段落"), diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java index ed743d720d..ceb24d7d18 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java @@ -55,7 +55,7 @@ public class IssueApplicationDTO implements Serializable { private String suggestion; /** - * 审核状态:under_auditing:待审核;approved:通过;rejected:驳回 + * 审核状态:under_auditing:待审核;approved:通过;rejected:驳回;自动通过:auto_passed */ private String applyStatus; diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationHistoryDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationHistoryDTO.java index fdde89c383..b81e50b7f8 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationHistoryDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationHistoryDTO.java @@ -53,6 +53,7 @@ public class IssueApplicationHistoryDTO implements Serializable { * under_auditing:待审核; * approved:审核通过; * rejected:驳回; + * auto_passed:自动通过 */ private String actionType; diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java index 0da96662ee..5e7a6c8fdb 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java +++ b/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; } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationDetailWorkFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationDetailWorkFormDTO.java new file mode 100644 index 0000000000..7f586308d7 --- /dev/null +++ b/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; + +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationHistoryWorkFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ApplicationHistoryWorkFormDTO.java new file mode 100644 index 0000000000..123a5236ff --- /dev/null +++ b/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; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonGridIdFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonGridIdFormDTO.java index 93dcda291b..f29b90be72 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonGridIdFormDTO.java +++ b/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; } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java new file mode 100644 index 0000000000..1eb9b86791 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueAuditionFormDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Description 工作人员审核议题结果传参 + * @ClassName IssueAuditionFormDTO + * @Auth wangc + * @Date 2020-11-19 10:29 + */ +@Data +public class IssueAuditionFormDTO implements Serializable { + + private static final long serialVersionUID = 5794088085884822811L; + + /** + * 申请id + */ + @NotBlank(message = "议题申请Id不能为空") + private String issueApplicationId; + + /** + * 同意备注 驳回理由 + */ + private String reason; + + /** + * approved:审核通过, rejected:驳回 + */ + @NotBlank(message = "审核结果不能为空") + private String actionType; + + /** + * 工作人员名称 + */ + private String staffName; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java index 399062ece8..9eefc723f8 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueShiftedFromTopicFormDTO.java @@ -1,9 +1,12 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import javax.validation.Valid; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; @@ -17,86 +20,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; } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/UserPubAuditingIssueFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/UserPubAuditingIssueFormDTO.java new file mode 100644 index 0000000000..99b52b0b63 --- /dev/null +++ b/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; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationDetailWorkResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationDetailWorkResultDTO.java new file mode 100644 index 0000000000..5e58db1a8f --- /dev/null +++ b/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 = ""; + } +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryWorkResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ApplicationHistoryWorkResultDTO.java new file mode 100644 index 0000000000..ffbfcf483d --- /dev/null +++ b/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 = ""; + } +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java new file mode 100644 index 0000000000..df37c1eec1 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/FirstTopicShiftedToIssueApplicationResultDTO.java @@ -0,0 +1,44 @@ +package com.epmet.dto.result; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 话题首次提交转议题时的返参 注意:只是首次,二次提交统一调用重新编辑提交接口 + * @ClassName FirstTopicShiftedToIssueApplicationResultDTO + * @Auth wangc + * @Date 2020-11-18 16:50 + */ +@Data +public class FirstTopicShiftedToIssueApplicationResultDTO implements Serializable { + private static final long serialVersionUID = 329020301144053656L; + + public interface SwitchRequiredGroup extends CustomerClientShowGroup{} + + public interface AllowAuditionGroup extends CustomerClientShowGroup{} + + public interface ForbidAuditionGroup extends CustomerClientShowGroup{} + + /** + * 已开启审核:open; 无需审核:close + */ + @NotBlank(message = "审核开关不能为空",groups = {SwitchRequiredGroup.class,AllowAuditionGroup.class,ForbidAuditionGroup.class}) + private String auditSwitch; + + /** + * 如果无需审核,直接生成议题,返回议题Id + * 如果需要审核,该属性为空 + */ + @NotBlank(message = "议题Id不能为空",groups = {ForbidAuditionGroup.class}) + private String issueId; + + /** + * 如果需要审核,生成议题申请记录,返回申请Id + * 如果无需审核,该属性为空 + */ + @NotBlank(message = "议题审核Id不能为空",groups = {AllowAuditionGroup.class}) + private String issueApplicationId; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/TopicInfoWorkResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/TopicInfoWorkResultDTO.java new file mode 100644 index 0000000000..261b5a1672 --- /dev/null +++ b/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 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 = ""; + } +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/UserPubAuditingIssueResDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/UserPubAuditingIssueResDTO.java new file mode 100644 index 0000000000..9b47e5dda9 --- /dev/null +++ b/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; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java index a2ed3fb36e..a974ae1109 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java @@ -3,6 +3,7 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IssueDTO; +import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.IssueSuggestionDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -19,10 +20,13 @@ import com.epmet.resi.mine.dto.from.MyShiftIssueTopicsFormDTO; import com.epmet.resi.mine.dto.result.MyShiftIssueTopicsResultDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; +import java.util.Map; /** * 本服务对外开放的API,其他服务通过引用此client调用该服务 @@ -31,7 +35,7 @@ import java.util.List; * @date 2020/6/4 13:37 */ @FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class) -// @FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class,url = "localhost:8101") +//@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class,url = "localhost:8101") public interface GovIssueOpenFeignClient { /** @@ -165,4 +169,44 @@ public interface GovIssueOpenFeignClient { **/ @PostMapping(value = "/gov/issue/issueapplicationhistory/querybyissueapplicationid",consumes = MediaType.APPLICATION_JSON_VALUE) Result> queryByIssueApplicationId(@RequestBody IssueApplicationIdFormDTO formDTO); + + /** + * @Description 根据条件查询议题申请信息 + * @param params + * @return com.epmet.commons.tools.utils.Result> + * @author wangc + * @date 2020.11.18 15:47 + */ + @GetMapping("/gov/issue/issueapplication/list") + Result> list(@RequestParam Map params); + + /** + * @Description 话题转移提接口 这里的逻辑包含 + * 是否需要审核 ,如无需审核,直接生成Issue,不需要对application做新增/更新,无需新增history + * 如需要审核,先查看是否存在application,如果有,做响应的更新,否则新增一条,并且相应地新增一条history + * 因此,二次编辑提交申请时,也将走以上逻辑,在封装好所需参数后,调用该方法即可 + * + * 注意: + * 如果想要工作端审核时,也调用该接口,需要在传参里加上审核入参DTO(IssueAuditionFormDTO) + * 如果该属性为null,则表示当前操作非审核而是居民在试图转议题 + * 在审核调用该接口之前,需要组装好生成议题所需的数据,因为是直接从gov/issue路径下调用 + * 先在gov-issue服务中查询议题的标题、建议等信息,再去gov-grid获取dataFilter数据 + * 然后去resi-group中查询话题作者昵称、议题发起人名昵称,组装好参数后可以调用下列方法 + * 如果是驳回,则不需要组装以上数据 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.19 10:02 + */ + @PostMapping(value = "/gov/issue/issue/topic-shift-issue") + Result topicShiftedToIssueV2(@RequestBody IssueShiftedFromTopicFormDTO param); + + /** + * @param fomrDTO + * @author yinzuomei + * @description 查询某个用户发起的议题列表-审核中列表(待审核+已驳回) + * @Date 2020/11/23 9:21 + **/ + @PostMapping(value = "/gov/issue/issueapplication/queryuserpubauditingissues") + Result> queryUserPubAuditingIssues(@RequestBody UserPubAuditingIssueFormDTO fomrDTO); } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java index bc3bfa8fe6..ea59c6d349 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java @@ -4,6 +4,7 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IssueDTO; +import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.IssueSuggestionDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -21,6 +22,7 @@ import com.epmet.resi.mine.dto.result.MyShiftIssueTopicsResultDTO; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; /** * 本服务对外开放的API,其他服务通过引用此client调用该服务 @@ -145,4 +147,50 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient public Result> queryByIssueApplicationId(IssueApplicationIdFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "queryByIssueApplicationId", formDTO); } + + /** + * @Description 根据条件查询议题申请信息 + * @param params + * @return com.epmet.commons.tools.utils.Result> + * @author wangc + * @date 2020.11.18 15:47 + */ + @Override + public Result> list(Map params) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "list", params); + } + + /** + * @Description 话题转移提接口 这里的逻辑包含 + * 是否需要审核 ,如无需审核,直接生成Issue,不需要对application做新增/更新,无需新增history + * 如需要审核,先查看是否存在application,如果有,做响应的更新,否则新增一条,并且相应地新增一条history + * 因此,二次编辑提交申请时,也将走以上逻辑,在封装好所需参数后,调用该方法即可 + * + * 注意: + * 如果想要工作端审核时,也调用该接口,需要在传参里加上审核入参DTO(IssueAuditionFormDTO) + * 如果该属性为null,则表示当前操作非审核而是居民在试图转议题 + * 在审核调用该接口之前,需要组装好生成议题所需的数据,因为是直接从gov/issue路径下调用 + * 先在gov-issue服务中查询议题的标题、建议等信息,再去gov-grid获取dataFilter数据 + * 然后去resi-group中查询话题作者昵称、议题发起人名昵称,组装好参数后可以调用下列方法 + * 如果是驳回,则不需要组装以上数据 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.19 10:02 + */ + @Override + public Result topicShiftedToIssueV2(IssueShiftedFromTopicFormDTO param) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "topicShiftedToIssueV2", param); + } + + /** + * @param fomrDTO + * @author yinzuomei + * @description 查询某个用户发起的议题列表-审核中列表(待审核+已驳回) + * @Date 2020/11/23 9:21 + **/ + @Override + public Result> queryUserPubAuditingIssues(UserPubAuditingIssueFormDTO fomrDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "queryUserPubAuditingIssues", fomrDTO); + } } diff --git a/epmet-module/gov-issue/gov-issue-server/pom.xml b/epmet-module/gov-issue/gov-issue-server/pom.xml index 68c12775b0..1027fbc302 100644 --- a/epmet-module/gov-issue/gov-issue-server/pom.xml +++ b/epmet-module/gov-issue/gov-issue-server/pom.xml @@ -90,6 +90,12 @@ 2.0.0 compile + + com.epmet + epmet-user-client + 2.0.0 + compile + diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java index 8cfafb1287..63f5af6117 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java @@ -17,6 +17,7 @@ package com.epmet.controller; +import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -26,7 +27,9 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.form.IssueAppQueryFormDTO; +import com.epmet.dto.form.UserPubAuditingIssueFormDTO; import com.epmet.dto.result.IssueApplicationResDTO; +import com.epmet.dto.result.UserPubAuditingIssueResDTO; import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO; import com.epmet.resi.group.dto.group.form.ApplicationHistoryFormDTO; import com.epmet.resi.group.dto.group.form.ApplicationListFormDTO; @@ -136,4 +139,29 @@ public class IssueApplicationController { List list=issueApplicationService.listIssueApp(formDTO); return new Result>().ok(list); } + /** + * @Description 根据条件查询议题申请信息 + * @param params + * @return com.epmet.commons.tools.utils.Result> + * @author wangc + * @date 2020.11.18 15:47 + */ + @GetMapping("list") + public Result> list(@RequestParam Map params){ + //此处限制必须传条件,不允许全查 + AssertUtils.isMapEmpty(params); + return new Result>().ok(issueApplicationService.list(params)); + } + + /** + * @param fomrDTO + * @author yinzuomei + * @description 查询某个用户发起的议题列表-审核中列表(待审核+已驳回) + * @Date 2020/11/23 9:35 + **/ + @PostMapping("queryuserpubauditingissues") + public Result> queryUserPubAuditingIssues(@RequestBody UserPubAuditingIssueFormDTO fomrDTO) { + ValidatorUtils.validateEntity(fomrDTO, PageFormDTO.AddUserInternalGroup.class); + return new Result>().ok(issueApplicationService.queryUserPubAuditingIssues(fomrDTO)); + } } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java index 1defc33d48..d6519fb6e9 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java @@ -1,19 +1,22 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.annotation.RequirePermission; +import com.epmet.commons.tools.enums.RequirePermissionEnum; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constant.IssueConstant; -import com.epmet.dto.form.IssueAppQueryFormDTO; -import com.epmet.dto.form.IssueApplicationIdFormDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.ApplicationDetailWorkResultDTO; import com.epmet.dto.result.ApplicationHistoryResDTO; +import com.epmet.dto.result.ApplicationHistoryWorkResultDTO; import com.epmet.dto.result.IssueApplicationResDTO; import com.epmet.service.IssueApplicationHistoryService; import com.epmet.service.IssueApplicationService; +import com.epmet.service.IssueService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -30,13 +33,17 @@ public class IssueAuditController { private IssueApplicationService issueApplicationService; @Autowired private IssueApplicationHistoryService issueApplicationHistoryService; - + @Autowired + private IssueService issueService; /** * @param formDTO * @author yinzuomei + * @description 待审核|| 已驳回 列表 + * @Date 2020/11/18 17:28 * @description 待审核列表 * @Date 2020/11/18 17:28 **/ + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_AUDITING_LIST) @PostMapping("underauditinglist") public Result> queryUnderAuditingList(@RequestBody IssueAppQueryFormDTO formDTO) { formDTO.setApplyStatus(IssueConstant.UNDER_AUDITING); @@ -48,8 +55,9 @@ public class IssueAuditController { * @param formDTO * @author yinzuomei * @description 已驳回 列表 - * @Date 2020/11/18 17:28 + * @Date 2020/11/18 17:28 **/ + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_REJECTED_LIST) @PostMapping("rejectedlist") public Result> queryRejectedList(@RequestBody IssueAppQueryFormDTO formDTO) { formDTO.setApplyStatus(IssueConstant.REJECTED); @@ -81,4 +89,34 @@ public class IssueAuditController { ValidatorUtils.validateEntity(formDTO); return new Result>().ok(issueApplicationHistoryService.queryByIssueApplicationId(formDTO.getIssueApplicationId())); } + + /** + * @Description 待审核||已驳回 申请详情  + * @Param applicationDetailWorkFormDTO + * @author zxc + * @date 2020/11/19 下午2:26 + */ + @PostMapping("applicationdetail") + public Result applicationDetailWork(@RequestBody ApplicationDetailWorkFormDTO applicationDetailWorkFormDTO){ + ValidatorUtils.validateEntity(applicationDetailWorkFormDTO, ApplicationDetailWorkFormDTO.ApplicationDetailWork.class); + return new Result().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> applicationHistoryWork(@RequestBody ApplicationHistoryWorkFormDTO applicationHistoryWorkFormDTO){ + ValidatorUtils.validateEntity(applicationHistoryWorkFormDTO,ApplicationHistoryWorkFormDTO.ApplicationHistoryWork.class); + return new Result>().ok(issueApplicationHistoryService.applicationHistoryWork(applicationHistoryWorkFormDTO)); + } + + @PostMapping("audit") + public Result audit(@LoginUser TokenDto token, @RequestBody IssueAuditionFormDTO param){ + return new Result().ok(issueService.audit(token,param)); + } } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java index 7c159b6e3d..8ccb30aa15 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java @@ -5,7 +5,6 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.IssueDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.excel.IssueExcel; import com.epmet.resi.group.dto.group.form.AllIssueFormDTO; import com.epmet.resi.group.dto.group.result.GroupClosedListResultDTO; import com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO; @@ -76,10 +75,36 @@ public class IssueController { **/ @PostMapping(value = "topicshiftissue") public Result issueShiftedToTopic(@RequestBody IssueShiftedFromTopicFormDTO issueShiftedFromTopicFormDTO){ - ValidatorUtils.validateEntity(issueShiftedFromTopicFormDTO); + ValidatorUtils.validateEntity(issueShiftedFromTopicFormDTO, IssueShiftedFromTopicFormDTO.IssueGenerationGroup.class); return new Result().ok(issueService.issueShiftedToTopic(issueShiftedFromTopicFormDTO)); } + /** + * @Description 话题转移提接口 这里的逻辑包含 + * 是否需要审核 ,如无需审核,直接生成Issue,不需要对application做新增/更新,无需新增history + * 如需要审核,先查看是否存在application,如果有,做响应的更新,否则新增一条,并且相应地新增一条history + * 因此,二次编辑提交申请时,也将走以上逻辑,在封装好所需参数后,调用该方法即可 + * + * 注意: + * 如果想要工作端审核时,也调用该接口,需要在传参里加上审核入参DTO(IssueAuditionFormDTO) + * 如果该属性为null,则表示当前操作非审核而是居民在试图转议题 + * 在审核调用该接口之前,需要组装好生成议题所需的数据,因为是直接从gov/issue路径下调用 + * 先在gov-issue服务中查询议题的标题、建议等信息,再去gov-grid获取dataFilter数据 + * 然后去resi-group中查询话题作者昵称、议题发起人名昵称,组装好参数后可以调用下列方法 + * 如果是驳回,则不需要组装以上数据 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.19 10:02 + */ + @PostMapping(value = "topic-shift-issue") + public Result topicShiftedToIssueV2(@RequestBody IssueShiftedFromTopicFormDTO param){ + ValidatorUtils.validateEntity(param, IssueShiftedFromTopicFormDTO.PublicIssueGroup.class); + return new Result().ok( + issueService.topicShiftedToIssueV2(param) + ); + } + /** * @Description 获取表决中议题列表 * @param issueListFormDTO diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java index efe02e3c0b..38ec62c1d6 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java @@ -18,12 +18,16 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.form.IssueAppQueryFormDTO; +import com.epmet.dto.form.UserPubAuditingIssueFormDTO; import com.epmet.dto.result.IssueApplicationResDTO; +import com.epmet.dto.result.UserPubAuditingIssueResDTO; import com.epmet.entity.IssueApplicationEntity; import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO; import com.epmet.resi.group.dto.group.result.ApplicationDetailResultDTO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -52,4 +56,14 @@ public interface IssueApplicationDao extends BaseDao { * @Date 2020/11/18 16:28 **/ List selectList(IssueAppQueryFormDTO formDTO); + + /** + * @param formDTO + * @author yinzuomei + * @description 查询某个用户发起的议题列表-审核中列表(待审核+已驳回) + * @Date 2020/11/23 9:37 + **/ + List selectUserPubAuditingIssues(UserPubAuditingIssueFormDTO formDTO); + + List selectByTopicId(@Param("topicId") String topicId); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationHistoryDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationHistoryDao.java index e2639185b3..8c2eaecb6c 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationHistoryDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationHistoryDao.java @@ -19,8 +19,10 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.result.ApplicationHistoryResDTO; +import com.epmet.dto.result.ApplicationHistoryWorkResultDTO; import com.epmet.entity.IssueApplicationHistoryEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -40,4 +42,12 @@ public interface IssueApplicationHistoryDao extends BaseDao selectListByIssueApplicationId(String issueApplicationId); + + /** + * @Description 查询议题审核历史 + * @Param issueId + * @author zxc + * @date 2020/11/20 上午9:39 + */ + List applicationHistoryWork(@Param("issueId")String issueId); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java index 2aa4bb50e9..4e20988279 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCustomerParameterDao.java @@ -51,5 +51,13 @@ public interface IssueCustomerParameterDao extends BaseDao 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 applicationHistoryWork(ApplicationHistoryWorkFormDTO applicationHistoryWorkFormDTO); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java index 14bee01aa4..2ece400620 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java @@ -21,7 +21,9 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.form.IssueAppQueryFormDTO; +import com.epmet.dto.form.UserPubAuditingIssueFormDTO; import com.epmet.dto.result.IssueApplicationResDTO; +import com.epmet.dto.result.UserPubAuditingIssueResDTO; import com.epmet.entity.IssueApplicationEntity; import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO; import com.epmet.resi.group.dto.group.form.ApplicationHistoryFormDTO; @@ -133,4 +135,12 @@ public interface IssueApplicationService extends BaseService listIssueApp(IssueAppQueryFormDTO formDTO); + + /** + * @param fomrDTO + * @author yinzuomei + * @description 查询某个用户发起的议题列表-审核中列表(待审核+已驳回) + * @Date 2020/11/23 9:35 + **/ + List queryUserPubAuditingIssues(UserPubAuditingIssueFormDTO fomrDTO); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueCustomerParameterService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueCustomerParameterService.java index ff2965b85d..7f265a92cb 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueCustomerParameterService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueCustomerParameterService.java @@ -121,4 +121,13 @@ public interface IssueCustomerParameterService extends BaseService { **/ 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 diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationHistoryServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationHistoryServiceImpl.java index 1772e9a2e5..97c20b3352 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationHistoryServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationHistoryServiceImpl.java @@ -21,20 +21,32 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.IssueApplicationHistoryDao; import com.epmet.dto.IssueApplicationHistoryDTO; -import com.epmet.dto.result.ApplicationHistoryResDTO; +import com.epmet.dto.form.ApplicationDetailWorkFormDTO; +import com.epmet.dto.form.ApplicationHistoryWorkFormDTO; +import com.epmet.dto.result.*; import com.epmet.entity.IssueApplicationHistoryEntity; +import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO; +import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO; +import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.service.IssueApplicationHistoryService; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 话题转议题审核历史表 @@ -45,6 +57,11 @@ import java.util.Map; @Service public class IssueApplicationHistoryServiceImpl extends BaseServiceImpl implements IssueApplicationHistoryService { + @Autowired + private ResiGroupOpenFeignClient resiGroupOpenFeignClient; + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + @Override public PageData page(Map params) { IPage page = baseDao.selectPage( @@ -108,4 +125,48 @@ public class IssueApplicationHistoryServiceImpl extends BaseServiceImpl 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 applicationHistoryWork(ApplicationHistoryWorkFormDTO applicationHistoryWorkFormDTO) { + List result = baseDao.applicationHistoryWork(applicationHistoryWorkFormDTO.getIssueId()); + if (CollectionUtils.isEmpty(result)){ + return new ArrayList<>(); + } + List userIds = result.stream().map(m -> m.getUserId()).collect(Collectors.toList()); + Result> listResult = epmetUserOpenFeignClient.queryUserBaseInfo(userIds); + if (!listResult.success()){ + throw new RenException("议题审核历史查询用户基本信息失败......"); + } + result.forEach(r -> listResult.getData().stream().filter(u -> r.getUserId().equals(u.getUserId())).forEach(u -> r.setStaffName(u.getRealName()))); + return result; + } + } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java index 429bfad66e..40c4993f92 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java @@ -26,7 +26,9 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IssueApplicationDao; import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.form.IssueAppQueryFormDTO; +import com.epmet.dto.form.UserPubAuditingIssueFormDTO; import com.epmet.dto.result.IssueApplicationResDTO; +import com.epmet.dto.result.UserPubAuditingIssueResDTO; import com.epmet.entity.IssueApplicationEntity; import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO; import com.epmet.resi.group.dto.group.form.ApplicationHistoryFormDTO; @@ -36,6 +38,7 @@ import com.epmet.resi.group.dto.group.result.ApplicationHistoryResultDTO; import com.epmet.resi.group.dto.group.result.ApplicationListResultDTO; import com.epmet.service.IssueApplicationService; import com.github.pagehelper.PageHelper; +import com.epmet.utils.ModuleConstants; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -64,17 +67,18 @@ public class IssueApplicationServiceImpl extends BaseServiceImpl list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); - - return ConvertUtils.sourceToTarget(entityList, IssueApplicationDTO.class); + //List entityList = baseDao.selectByTopicId(getWrapper(params)); + return baseDao.selectByTopicId((String)params.get(ModuleConstants.FIELD_JAVA_TOPIC_ID)); + //return ConvertUtils.sourceToTarget(entityList, IssueApplicationDTO.class); } private QueryWrapper getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); + String topicId = (String)params.get(ModuleConstants.FIELD_JAVA_TOPIC_ID); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - + wrapper.eq(StringUtils.isNotBlank(topicId), ModuleConstants.FIELD_SQL_TOPIC_ID, topicId); return wrapper; } @@ -118,6 +122,18 @@ public class IssueApplicationServiceImpl extends BaseServiceImpl queryUserPubAuditingIssues(UserPubAuditingIssueFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(),formDTO.getPageSize()); + return baseDao.selectUserPubAuditingIssues(formDTO); + } + /** * @Description 待审核||已驳回 申请详情 * @Param applicationDetailFormDTO diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java index edfdc7e391..98899856cb 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueCustomerParameterServiceImpl.java @@ -164,4 +164,16 @@ public class IssueCustomerParameterServiceImpl extends BaseServiceImpl implements IssueService { + protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class); + @Autowired private IssueDao issueDao; @Autowired @@ -93,9 +92,6 @@ public class IssueServiceImpl extends BaseServiceImpl imp private GovOrgOpenFeignClient govOrgOpenFeignClient; @Autowired private ResiGroupOpenFeignClient resiGroupOpenFeignClient; - - protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class); - @Autowired private IssueProcessService issueProcessService; @Autowired @@ -103,11 +99,19 @@ public class IssueServiceImpl extends BaseServiceImpl imp @Autowired private IssueProjectRelationService issueProjectRelationService; @Autowired - private IssueVoteStatisticalDao issueVoteStatisticalDao; + private IssueCustomerParameterService configurationParameterService; + @Autowired + private IssueApplicationService applicationService; + @Autowired + private IssueApplicationHistoryService historyService; @Autowired private EpmetUserFeignClient epmetUserFeignClient; @Autowired + private EpmetUserOpenFeignClient userOpenFeignClient; + @Autowired private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; + + @Value("${openapi.scan.server.url}") private String scanApiUrl; @Value("${openapi.scan.method.textSyncScan}") @@ -286,6 +290,8 @@ public class IssueServiceImpl extends BaseServiceImpl imp issueVoteDetailRedis.set(voteInitCache); //4.该网格下表决中议题总数量+1 govIssueRedis.addWorkGrassrootsIssueRedDotValue(issueShiftedFromTopicFormDTO.getGridId()); + + if(StringUtils.isNotBlank(issueShiftedFromTopicFormDTO.getIssueId())) issueDTO.setId(issueShiftedFromTopicFormDTO.getIssueId()); return issueDTO.getId(); } logger.warn(String.format( @@ -295,6 +301,207 @@ public class IssueServiceImpl extends BaseServiceImpl 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 applicationParam = new HashMap<>(); + applicationParam.put(ModuleConstants.FIELD_JAVA_TOPIC_ID, param.getTopicId()); + List applicationList = applicationService.list(applicationParam); + List applyIds = new LinkedList<>(); + boolean ifRepeat = false; + //没有历史提交记录 + if (CollectionUtils.isEmpty(applicationList)) { + //审核开关开启 + if(ifOpen) { + //首次提交 新增application + IssueApplicationDTO newApplication = ConvertUtils.sourceToTarget(param, IssueApplicationDTO.class); + newApplication.setApplyStatus(defaultStatusUnderAuditing); + newApplication.setId(UUID.randomUUID().toString().replace("-", "")); + applicationService.save(newApplication); + applyIds.add(newApplication.getId()); + } + } else { + //重新提交 或 工作端审核议题 更新application + if(!isStaffAudition) ifRepeat = true; + if (applicationList.size() > NumConstant.ONE) + logger.error("com.epmet.service.impl.IssueServiceImpl.topicShiftedToIssueV2,查出多条转移提提交记录,话题Id:{}", param.getTopicId()); + + } + applicationList.forEach(apply -> { + IssueApplicationDTO carrier = new IssueApplicationDTO(); + carrier.setId(apply.getId()); + carrier.setApplyStatus(defaultStatusUnderAuditing); + carrier.setSuggestion(!isStaffAudition ? apply.getSuggestion() : param.getSuggestion()); + carrier.setIssueTitle(!isStaffAudition ? apply.getIssueTitle() : param.getIssueTitle()); + carrier.setPassedReason(isStaffAudition ? param.getAudition().getReason() : null); + carrier.setIssueId(isStaffAudition ? param.getIssueId() : null); + carrier.setUpdatedTime(param.getCreatedTime()); + carrier.setUpdatedBy(param.getUserId()); + applicationService.update(carrier); + + applyIds.add(apply.getId()); + }); + + if(!ifRepeat) { + //新增history + applyIds.forEach(id -> { + + IssueApplicationHistoryDTO history = new IssueApplicationHistoryDTO(); + history.setActionType(defaultStatusUnderAuditing); + history.setCreatedTime(param.getCreatedTime()); + history.setCustomerId(param.getCustomerId()); + history.setIssueApplicationId(id); + history.setReason(isStaffAudition ? param.getAudition().getReason() : null); + history.setStaffName(isStaffAudition ? param.getAudition().getStaffName() : null); + + historyService.save(history); + if (!ifOpen) { + IssueApplicationHistoryDTO repeatApplyRecord = new IssueApplicationHistoryDTO(); + repeatApplyRecord.setActionType(ModuleConstants.ISSUE_APPLICATION_STATUS_UNDER_AUDITING); + repeatApplyRecord.setCreatedTime(param.getCreatedTime()); + repeatApplyRecord.setCustomerId(param.getCustomerId()); + repeatApplyRecord.setIssueApplicationId(id); + + historyService.save(repeatApplyRecord); + } + }); + + } + result.setIssueApplicationId(applyIds.iterator().next()); + + + //只有当审核开关关闭 或 工作端人员审核通过时才生成议题 + if(!ifOpen || StringUtils.equals(ModuleConstants.AUDITION_TYPE_APPROVAL,defaultStatusUnderAuditing)){ + ValidatorUtils.validateEntity(param, IssueShiftedFromTopicFormDTO.IssueGenerationGroup.class); + if(isStaffAudition) param.setUserId(param.getIssueAuthorId()); + result.setIssueId(issueShiftedToTopic(param)); + } + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String audit(TokenDto token, IssueAuditionFormDTO param) { + + if (StringUtils.isNotBlank(param.getReason())) { + TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); + TextTaskDTO taskDTO = new TextTaskDTO(); + taskDTO.setDataId(UUID.randomUUID().toString().replace("-", "")); + taskDTO.setContent(param.getReason()); + textScanParamDTO.getTasks().add(taskDTO); + Result textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); + if (!textSyncScanResult.success()){ + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } else { + if (!textSyncScanResult.getData().isAllPass()) { + throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode()); + } + } + } + + Date unifiedDate = new Date(); + + IssueApplicationDTO application = applicationService.get(param.getIssueApplicationId()); + if(null == application) throw new RenException("没有相应的议题申请信息"); + + IssueApplicationDTO app2update = new IssueApplicationDTO(); + app2update.setId(param.getIssueApplicationId()); + app2update.setApplyStatus(param.getActionType()); + app2update.setUpdatedBy(token.getUserId()); + app2update.setUpdatedTime(unifiedDate); + + IssueApplicationHistoryDTO history2add = new IssueApplicationHistoryDTO(); + history2add.setIssueApplicationId(param.getIssueApplicationId()); + history2add.setReason(param.getReason()); + history2add.setActionType(param.getActionType()); + history2add.setCreatedTime(unifiedDate); + history2add.setCreatedBy(token.getUserId()); + history2add.setCustomerId(application.getCustomerId()); + + //historyService.save(history2add); + + //if(!StringUtils.equals(ModuleConstants.AUDITION_TYPE_REJECT,param.getActionType())){ + app2update.setPassedReason(param.getReason()); + ResiTopicTurnIssueFromDTO form = new ResiTopicTurnIssueFromDTO(); + form.setActionType(param.getActionType()); + form.setUnifiedDate(unifiedDate);form.setUserId(application.getCreatedBy());form.setTopicId(application.getTopicId());form.setIssueId(UUID.randomUUID().toString().replaceAll("-", "")); + + Result topicInfo = resiGroupOpenFeignClient.fetchTopicInfoWhenAuditIssue(form); + if(topicInfo.success() && null != topicInfo.getData()){ + CommonGridIdFormDTO grid = new CommonGridIdFormDTO(); + grid.setGridId(application.getGridId()); + grid.setUserId(token.getUserId()); + Result 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 staffBasicInfo = userOpenFeignClient.getStaffBasicInfo(staffParam); + if(staffBasicInfo.success() && null != staffBasicInfo.getData()) { + param.setStaffName(staffBasicInfo.getData().getRealName()); + } + issueParam2.setAudition(param); + FirstTopicShiftedToIssueApplicationResultDTO issueResult = topicShiftedToIssueV2(issueParam2); + app2update.setIssueId(issueResult.getIssueId()); + + } + }else throw new RenException(topicInfo.getInternalMsg()); + + + + + //} + //applicationService.update(app2update); + + + return app2update.getIssueId(); + } + /** * @Description 表决中列表 * @param issueListForm diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java index 7418ccfdf8..9cc727dc1d 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java @@ -22,6 +22,10 @@ public interface ModuleConstants { * */ String ISSUE_STATUS_CLOSED = "closed"; + /** + * 议题审核状态 审核中 + */ + String ISSUE_APPLICATION_STATUS_UNDER_AUDITING = "under_auditing"; /** * 议题来源:居民段话题 * */ @@ -81,6 +85,10 @@ public interface ModuleConstants { String FIELD_JAVA_STATISTICAL_DATE = "statisticalDate"; + String FIELD_SQL_TOPIC_ID = "TOPIC_ID"; + + String FIELD_JAVA_TOPIC_ID = "topicId"; + /** * 议题表决态度 赞成 * */ @@ -109,4 +117,31 @@ public interface ModuleConstants { * */ String CREATED_BY_SYSTEM = "system"; + /** + * 议题审核动作 通过 + */ + String AUDITION_TYPE_APPROVAL = "approved"; + + /** + * 当议题开关关闭时,申请和申请历史的状态为自动通过 + * 如果是首次提交,不生成申请和申请历史记录 + * 该值只适用于二次提交时,审核开关被关闭的情况 + */ + String AUDITION_TYPE_AUTO_PASSED = "auto_passed"; + + /** + * 议题审核动作 驳回 + */ + String AUDITION_TYPE_REJECT = "rejected"; + + /** + * 议题审核开关 开启 + */ + String AUDIT_SWITCH_OPEN = "open"; + + /** + * 议题审核开关 关闭 + */ + String AUDIT_SWITCH_CLOSE = "close"; + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.4__issue_audit_addautopassed.sql b/epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.4__issue_audit_addautopassed.sql new file mode 100644 index 0000000000..9917d87b41 --- /dev/null +++ b/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:自动通过'; \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml index 20a25f9f90..b62639e121 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml @@ -39,4 +39,36 @@ ORDER BY ia.UPDATED_TIME DESC + + + + + \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationHistoryDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationHistoryDao.xml index cee15d1297..76c12d7381 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationHistoryDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationHistoryDao.xml @@ -19,4 +19,19 @@ iah.CREATED_TIME DESC + + + \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml index f4fd66235a..bdf0c549db 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueCustomerParameterDao.xml @@ -30,5 +30,14 @@ WHERE CUSTOMER_ID = #{customerId} + + \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml index 7eeb9a28f7..9c4b676771 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml @@ -127,7 +127,16 @@ revision - #{id}, + + + #{issueId}, + + + #{id}, + + + + #{issueStatus}, diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java index 16201827cc..2dab8452b3 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java +++ b/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 getCustomerGridByGridId(@RequestBody CustomerGridFormDTO customerGridFormDTO); + /** + * @param gridForm + * @return Result + * @Author wangc + * @Description 获取网格所需要的数据权限内容 + * @Date 2020/3/30 10:45 + **/ + @PostMapping("/gov/org/customergrid/griddatafilter") + Result gridDataFilter(CommonGridIdFormDTO gridForm); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java index 477ed6ea6f..4776dec9b6 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java +++ b/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 getCustomerGridByGridId(CustomerGridFormDTO customerGridFormDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getCustomerGridByGridId", customerGridFormDTO); } + + @Override + public Result gridDataFilter(CommonGridIdFormDTO gridForm) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "gridDataFilter", gridForm); + + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java index 1d6676e96f..df895b4f11 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java @@ -566,6 +566,10 @@ public class CustomerGridServiceImpl extends BaseServiceImpl> getGridListByGridIds(List gridIdList) { Result> result = new Result>(); + if (gridIdList.size() < NumConstant.ONE) { + logger.error("根据网格Id集合获取网格列表信息-传入的网格Id集合为空数组!"); + return result; + } List list = baseDao.selectGridByIds(gridIdList); return result.ok(list); } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailCopyResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailCopyResultDTO.java index 49aed62fe9..537b8ddcc7 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailCopyResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailCopyResultDTO.java @@ -33,8 +33,16 @@ public class ApplicationDetailCopyResultDTO implements Serializable { */ private String issuePublisher; + /** + * 议题建议 + */ private String issueSuggestion; + /** + * 议题发起人电话 + */ + private String issuePublisherMobile; + /** * 话题相关信息 */ @@ -47,5 +55,6 @@ public class ApplicationDetailCopyResultDTO implements Serializable { this.issueSuggestion = ""; this.issuePublisher = ""; this.topicInfo = new TopicInfoResultDTO(); + this.issuePublisherMobile = ""; } } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailResultDTO.java index fb92ad47cf..2c86595653 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/ApplicationDetailResultDTO.java @@ -38,8 +38,16 @@ public class ApplicationDetailResultDTO implements Serializable { */ private TopicInfoResultDTO topicInfo; + /** + * 议题建议 + */ private String issueSuggestion; + /** + * 议题发起人电话 + */ + private String issuePublisherMobile; + private String gridId; private String topicId; @@ -52,5 +60,7 @@ public class ApplicationDetailResultDTO implements Serializable { this.gridName = ""; this.issuePublisher = ""; this.topicInfo = new TopicInfoResultDTO(); + this.issueSuggestion = ""; + this.issuePublisherMobile = ""; } } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/TopicInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/TopicInfoResultDTO.java index f348482143..49ec851463 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/TopicInfoResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/TopicInfoResultDTO.java @@ -42,6 +42,11 @@ public class TopicInfoResultDTO implements Serializable { */ private List topicImgs; + /** + * 话题发表人电话 + */ + private String topicPublishMobile; + @JsonIgnore private String topicUserId; @@ -51,5 +56,6 @@ public class TopicInfoResultDTO implements Serializable { this.publishedTime = NumConstant.ZERO_L; this.topicContent = ""; this.topicImgs = new ArrayList<>(); + this.topicPublishMobile = ""; } } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueAuditionFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueAuditionFormDTO.java new file mode 100644 index 0000000000..fd66274090 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueAuditionFormDTO.java @@ -0,0 +1,40 @@ +package com.epmet.resi.group.dto.topic.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 工作人员审核议题结果传参 + * @ClassName IssueAuditionFormDTO + * @Auth wangc + * @Date 2020-11-19 10:29 + */ +@Data +public class IssueAuditionFormDTO implements Serializable { + + private static final long serialVersionUID = 5794088085884822811L; + + /** + * 申请id + */ + @NotBlank(message = "议题申请Id不能为空") + private String issueApplicationId; + + /** + * 同意备注 驳回理由 + */ + private String reason; + + /** + * approved:审核通过, rejected:驳回 + */ + @NotBlank(message = "审核结果不能为空") + private String actionType; + + /** + * 工作人员名称 + */ + private String staffName; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueShiftedFromTopicFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueShiftedFromTopicFormDTO.java new file mode 100644 index 0000000000..6eba4678d7 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/IssueShiftedFromTopicFormDTO.java @@ -0,0 +1,125 @@ +package com.epmet.resi.group.dto.topic.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; + +/** + * @Description 话题转议题时的参数 + * @ClassName IssueShiftedFromTopicFormDTO + * @Auth wangc + * @Date 2020-05-13 09:27 + */ +@Data +public class IssueShiftedFromTopicFormDTO implements Serializable { + private static final long serialVersionUID = -5744319584210140289L; + + public interface IssueGenerationGroup extends CustomerClientShowGroup{} + + public interface PublicIssueGroup extends CustomerClientShowGroup{} + + /** + * 话题Id + * */ + @NotBlank(message = "话题Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String topicId; + + /** + * 议题名称 + * */ + @NotBlank(message = "议题名称不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String issueTitle; + + /** + * 建议 + * */ + @NotBlank(message = "议题建议不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String suggestion; + + /** + * 议题发起人Id + * */ + @NotBlank(message = "议题发起/审核人Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String userId; + + /** + * 当userId为工作端审核人员时,该项存议题发起人 + */ + private String issueAuthorId; + + /** + * 客户Id + * */ + @NotBlank(message = "客户不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String customerId; + + /** + * 网格Id + * */ + @NotBlank(message = "网格Id不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String gridId; + + /** + * AgencyId当前话题所在机构Id + * */ + @NotBlank(message = "机关Id不能为空",groups = {IssueGenerationGroup.class}) + private String orgId; + + /** + * 所属机关 eg:11:22:33(本机关以及上级所有机关ID) + * */ + @NotBlank(message = "所属机关全路径不能为空",groups = {IssueGenerationGroup.class}) + private String orgIdPath; + + /** + * 当前话题所在网格名称 - 对应议题流程的处理部门 + * */ + @NotBlank(message = "网格名称不能为空",groups = {IssueGenerationGroup.class}) + private String orgName; + + /** + * 议题创建时间 + * */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @NotNull(message = "创建时间不能为空",groups = {IssueGenerationGroup.class}) + private Date createdTime; + + /** + * 小组名称 - 对应议题流程的小组名称(文案) + * */ + @NotBlank(message = "小组名称不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String groupName; + + /** + * 话题发起人名称 -对应议题流程的话题发起人(文案) + * */ + @NotBlank(message = "话题发起人不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String topicAuthor; + + /** + * 议题发起人(组长)名称 - 对应议题流程的组长名称(文案) + * */ + @NotBlank(message = "组长不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private String issueAuthor; + + /** + * 应表决数 + * */ + @NotNull(message = "应表决数不能为空",groups = {PublicIssueGroup.class,IssueGenerationGroup.class}) + private Integer votableCount; + + /** + * 议题审核参数 + */ + private IssueAuditionFormDTO audition; + + @NotNull(message = "小组Id不能为空",groups = {IssueGenerationGroup.class}) + private String groupId; + + private String issueId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java index 2800af1736..6dda8c8b41 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ResiTopicTurnIssueFromDTO.java @@ -4,6 +4,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.Date; /** * @Description 话题转议题时前端传参 @@ -17,25 +18,32 @@ public class ResiTopicTurnIssueFromDTO implements Serializable { /** * 议题名称 - * */ + */ @NotBlank(message = "议题名称不能为空") private String issueTitle; /** * 话题Id - * */ + */ @NotBlank(message = "话题Id不能为空") private String topicId; /** * 建议 - * */ + */ @NotBlank(message = "建议不能为空") private String suggestion; /** * 用户Id - * */ + */ @NotBlank(message = "用户Id不能为空") private String userId; -} + + private String issueId; + + private Date unifiedDate; + + private String actionType; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java index 3984b68fa5..8dbd5c2e35 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicShiftIssueInitResultDTO.java @@ -44,4 +44,14 @@ public class ResiTopicShiftIssueInitResultDTO implements Serializable { * 话题发布时间 * */ private Long releaseTime; + + /** + * 申请id 需要调用issue服务生成一条application或者拿到历史application(有且仅有一条)再返回 + */ + private String issueApplicationId; + + /** + * 审核状态。under_auditting:审核中,approved:通过,rejected:驳回 不会有approved状态,因为已经转议题的话题不能再触发转议题 + */ + private String applyStatus; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java index ff8329c859..7dc96f6714 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java @@ -1,43 +1,29 @@ package com.epmet.resi.group.feign; + import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; -import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO; +import com.epmet.resi.group.dto.group.form.*; +import com.epmet.resi.group.dto.group.ResiGroupDTO; +import com.epmet.resi.group.dto.group.form.*; +import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO; +import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO; +import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO; import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO; import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; -import com.epmet.resi.group.dto.topic.form.CustomerPageFormDTO; -import com.epmet.resi.group.dto.topic.form.MyPartIssueFormDTO; -import com.epmet.resi.group.dto.topic.form.TopicIdListFormDTO; +import com.epmet.resi.group.dto.topic.form.*; import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO; import com.epmet.resi.group.dto.topic.result.MyCreateTopicsResultDTO; import com.epmet.resi.group.dto.topic.result.MyPartIssueResultDTO; import com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO; import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; -import com.epmet.commons.tools.utils.Result; -import com.epmet.resi.group.dto.group.form.CommonGridAndPageFormDTO; -import com.epmet.resi.group.dto.group.form.GovGroupSummarizeFromDTO; -import com.epmet.resi.group.dto.group.form.GroupEditionAuditFormDTO; -import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO; -import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO; -import com.epmet.commons.tools.utils.Result; -import com.epmet.resi.group.dto.group.form.CreateGroupCodeFormDTO; import org.springframework.cloud.openfeign.FeignClient; - -import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -import java.util.List; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestBody; - +import java.util.HashMap; import java.util.List; /** @@ -50,16 +36,6 @@ import java.util.List; //@FeignClient(name = ServiceConstant.RESI_GROUP_SERVER, fallback = ResiGroupOpenFeignClientFallback.class,url = "localhost:8095") public interface ResiGroupOpenFeignClient { - /** - * @Description 创建群组二维码 - * @param dto - * @return com.epmet.commons.tools.utils.Result - * @Author liushaowen - * @Date 2020/11/13 16:33 - */ - @PostMapping(value = "/resi/group/resigroupcode/creategroupcode", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) - Result createGroupCode(@RequestBody CreateGroupCodeFormDTO dto); - /** * @Description 查询用户参与的且不是自己发表的话题对应的议题Id集合 * @author sun @@ -101,6 +77,16 @@ public interface ResiGroupOpenFeignClient { @PostMapping("/resi/group/group/gov-audit-edit") Result govAuditEdit(@RequestBody GroupEditionAuditFormDTO param); + + /** + * @Description 创建群组二维码 + * @param dto + * @return com.epmet.commons.tools.utils.Result + * @Author liushaowen + * @Date 2020/11/13 16:33 + */ + @PostMapping(value = "/resi/group/resigroupcode/creategroupcode", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) + Result createGroupCode(@RequestBody CreateGroupCodeFormDTO dto); /** * @Description 个人中心-我参与过的话题 * @param param @@ -137,4 +123,26 @@ public interface ResiGroupOpenFeignClient { */ @PostMapping("resi/group/topic/myparttopic") Result selectMyPartTopic(@RequestBody MyPartIssueFormDTO myPartIssueFormDTO); + + /** + * @Description 待审核||已驳回 申请详情 + * @Param applicationDetailFormDTO + * @author zxc + * @date 2020/11/17 10:45 上午 + */ + @PostMapping("resi/group/groupissue/applicationdetail") + Result applicationDetail(@RequestBody ApplicationDetailFormDTO applicationDetailFormDTO); + + @PostMapping("resi/group/group/getgroupinfo") + Result> getGroupInfo(@RequestBody List groupIds); + + /** + * @Description 工作端审核议题同意时,查询相关话题的基本信息 + * @param param + * @return com.epmet.commons.tools.utils.Result + * @author wangc + * @date 2020.11.23 03:08 + */ + @PostMapping("resi/group/topic/fetchtopicinfowhenauditissue") + Result fetchTopicInfoWhenAuditIssue(@RequestBody ResiTopicTurnIssueFromDTO param); } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java index e156783d01..08a7c969eb 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java @@ -3,31 +3,27 @@ package com.epmet.resi.group.feign.fallback; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.resi.group.dto.group.form.CommonGridAndPageFormDTO; -import com.epmet.resi.group.dto.group.form.GovGroupSummarizeFromDTO; -import com.epmet.resi.group.dto.group.form.GroupEditionAuditFormDTO; +import com.epmet.resi.group.dto.group.form.*; +import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO; +import com.epmet.resi.group.dto.group.ResiGroupDTO; +import com.epmet.resi.group.dto.group.form.*; +import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO; import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO; import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO; -import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.utils.ModuleUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO; import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO; +import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO; import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO; import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; -import com.epmet.resi.group.dto.topic.form.CustomerPageFormDTO; -import com.epmet.resi.group.dto.topic.form.MyPartIssueFormDTO; -import com.epmet.resi.group.dto.topic.form.TopicIdListFormDTO; +import com.epmet.resi.group.dto.topic.form.*; import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO; import com.epmet.resi.group.dto.topic.result.MyPartIssueResultDTO; -import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.utils.ModuleUtils; -import com.epmet.commons.tools.utils.Result; -import com.epmet.resi.group.dto.group.form.CreateGroupCodeFormDTO; import com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO; import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import org.springframework.stereotype.Component; +import java.util.HashMap; import java.util.List; /** @@ -38,17 +34,6 @@ import java.util.List; */ @Component public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClient { - /** - * @param dto - * @return com.epmet.commons.tools.utils.Result - * @Description 创建群组二维码 - * @Author liushaowen - * @Date 2020/11/13 16:33 - */ - @Override - public Result createGroupCode(CreateGroupCodeFormDTO dto) { - return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "createGroupCode", dto); - } @Override public Result> topicToIssueList(MyPartProjectsFormDTO formDTO) { @@ -69,6 +54,18 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien public Result govAuditEdit(GroupEditionAuditFormDTO param) { return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "govAuditEdit", param); } + /** + * @param dto + * @return com.epmet.commons.tools.utils.Result + * @Description 创建群组二维码 + * @Author liushaowen + * @Date 2020/11/13 16:33 + */ + @Override + public Result createGroupCode(CreateGroupCodeFormDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "createGroupCode", dto); + } + @Override public Result> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO) { return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectGroupInfo", groupInfoFormDTO); @@ -93,4 +90,19 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien public Result selectMyPartTopic(MyPartIssueFormDTO myPartIssueFormDTO) { return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectMyPartTopic", myPartIssueFormDTO); } + + @Override + public Result applicationDetail(ApplicationDetailFormDTO applicationDetailFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "applicationDetail", applicationDetailFormDTO); + } + + @Override + public Result> getGroupInfo(List groupIds) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "getGroupInfo", groupIds); + } + + @Override + public Result fetchTopicInfoWhenAuditIssue(ResiTopicTurnIssueFromDTO param) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "fetchTopicInfoWhenAuditIssue",param); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java index 99348f7447..17dea7cd34 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java @@ -25,6 +25,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.modules.group.service.ResiGroupService; import com.epmet.modules.group.service.ResiGroupStatisticalService; import com.epmet.resi.group.dto.group.GroupProcessingCountResultDTO; +import com.epmet.resi.group.dto.group.ResiGroupDTO; import com.epmet.resi.group.dto.group.form.*; import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO; @@ -34,7 +35,13 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; import java.util.List; @@ -426,7 +433,6 @@ public class ResiGroupController { return new Result(); } - /** * @Description 查询话题所属小组名 * @Param groupInfoFormDTO @@ -450,4 +456,13 @@ public class ResiGroupController { resiGroupService.editAuditSwitch(formDTO); return new Result(); } + + @PostMapping("getgroupinfo") + public Result> getGroupInfo(@RequestBody List groupIds) { + if (CollectionUtils.isEmpty(groupIds)) { + return new Result>().ok(new HashMap<>()); + } + return new Result>().ok(resiGroupService.getGroupInfo(groupIds)); + } + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java index 0414732e0e..6d80988b52 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java @@ -190,6 +190,14 @@ public interface ResiGroupDao extends BaseDao { **/ List selectGroupListByGridIds(@Param("gridIds") List gridIds); + /** + * @Description 查询话题信息 + * @Param topicId + * @author zxc + * @date 2020/11/17 2:10 下午 + */ + TopicInfoResultDTO selectTopicInfo(@Param("topicId") String topicId); + /** * 编辑提交的时候,检查组名是否存在。网格内检查, * 检查resi_group中已审核通过的和待审核的 @@ -202,14 +210,7 @@ public interface ResiGroupDao extends BaseDao { int countExistsGroupNameBeforeEdit(@Param("groupId") String groupId, @Param("gridId") String gridId, @Param("groupName") String groupName); - /** - * @Description 查询话题信息 - * @Param topicId - * @author zxc - * @date 2020/11/17 2:10 下午 - */ - TopicInfoResultDTO selectTopicInfo(@Param("topicId") String topicId); /** * @Description 查询话题所属小组名 @@ -218,4 +219,12 @@ public interface ResiGroupDao extends BaseDao { * @date 2020/11/11 1:36 下午 */ List selectGroupInfo(@Param("topicIds")List userIds); + + /** + * @param groupIds + * @author yinzuomei + * @description + * @Date 2020/11/23 10:07 + **/ + List selectListByIds(@Param("groupIds") List groupIds); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java index d8b37a4614..3949f959c5 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java @@ -29,6 +29,7 @@ import com.epmet.resi.group.dto.group.form.*; import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -135,6 +136,7 @@ public interface ResiGroupService extends BaseService { * @Description 修改组信息 * @Date 2020/3/28 22:27 **/ + @Deprecated void modifyGroup(ModifyGroupFormDTO modifyGroupFormDTO); /** @@ -342,4 +344,12 @@ public interface ResiGroupService extends BaseService { * @Date 2020/11/17 14:18 **/ void editAuditSwitch(EditAuditSwitchFormDTO formDTO); + + /** + * @param groupIds + * @author yinzuomei + * @description 查询小组基本信息 ,返回map + * @Date 2020/11/23 10:03 + **/ + HashMap getGroupInfo(List groupIds); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/GroupIssueServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/GroupIssueServiceImpl.java index 283de3e222..82117b6a86 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/GroupIssueServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/GroupIssueServiceImpl.java @@ -80,9 +80,11 @@ public class GroupIssueServiceImpl implements GroupIssueService { listResult.getData().forEach(user -> { if (user.getUserId().equals(data.getUserId())){ data.setIssuePublisher(user.getDistrict().concat("-").concat(user.getSurname()).concat(getMrOrMs(user.getGender()))); + data.setIssuePublisherMobile(user.getMobile()); } if (user.getUserId().equals(topicInfoResultDTO.getTopicUserId())){ topicInfoResultDTO.setPublishedUser(user.getDistrict().concat("-").concat(user.getSurname()).concat(getMrOrMs(user.getGender()))); + topicInfoResultDTO.setTopicPublishMobile(user.getMobile()); } }); List gridIds = new ArrayList<>(); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java index 36f16a749c..483c6dc664 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java @@ -28,6 +28,10 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.user.LoginUserUtil; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.scan.param.ImgScanParamDTO; import com.epmet.commons.tools.scan.param.ImgTaskDTO; import com.epmet.commons.tools.scan.param.TextScanParamDTO; @@ -88,6 +92,7 @@ import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -326,7 +331,6 @@ public class ResiGroupServiceImpl extends BaseServiceImpl groupLeaderUserInfo = this.getGroupLeaderUserInfo(groupSummarizeFormDTO.getGroupId()); - if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { groupSummarizeResultDTO.setLeaderName(groupLeaderUserInfo.getData().getShowName()); } else { @@ -1104,6 +1108,22 @@ public class ResiGroupServiceImpl extends BaseServiceImpl getGroupInfo(List groupIds) { + List list=baseDao.selectListByIds(groupIds); + if(CollectionUtils.isEmpty(list)){ + return new HashMap<>(); + } + HashMap maps = (HashMap) list.stream().collect(Collectors.toMap(ResiGroupDTO::getId,Function.identity())); + return maps; + } + @Override public GroupDetailResultDTO getGroupDetail(String groupId) { GroupDetailResultDTO groupDetail = new GroupDetailResultDTO(); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java index bb8a8d4b9d..820dbc5821 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java @@ -4,6 +4,7 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO; import com.epmet.modules.topic.service.ResiTopicService; import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; @@ -236,6 +237,47 @@ public class ResiTopicController { return new Result(); } + /** + * @Description 话题转议题 + * @param topicTurnIssueFromDTO + * @param tokenDto + * @author wangc + * @date 2020.05.13 19:08 + **/ + @PostMapping("turnintoissuev2") + public Result turnIntoIssueV2(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO){ + topicTurnIssueFromDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(topicTurnIssueFromDTO); + return new Result().ok(topicService.shiftIssueV2(topicTurnIssueFromDTO)); + } + + /** + * @Description 话题转议题-重新编辑提交 + * @param tokenDto + * @param param + * @return com.epmet.commons.tools.utils.Result + * @author wangc + * @date 2020.11.20 14:19 + */ + @PostMapping("editissueapplication") + public Result editIssueApplication(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicTurnIssueFromDTO param){ + param.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(param); + return new Result().ok(topicService.shiftIssueV2(param)); + } + + /** + * @Description 工作端审核议题同意时,查询相关话题的基本信息 + * @param param + * @return com.epmet.commons.tools.utils.Result + * @author wangc + * @date 2020.11.23 03:08 + */ + @PostMapping("fetchtopicinfowhenauditissue") + public Result fetchTopicInfoWhenAuditIssue(@RequestBody ResiTopicTurnIssueFromDTO param){ + return new Result().ok(topicService.getIssueInfoWhenAudit(param)); + } + /** * @Description 政府端查看议题详情时的话题相关信息 * @param govTopicIssueInfoFormDTO diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java index 620ec74485..53140e4fef 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java @@ -21,6 +21,8 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; + +import com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO; import com.epmet.modules.member.entity.ResiGroupMemberEntity; import com.epmet.modules.topic.entity.ResiTopicEntity; import com.epmet.resi.group.dto.member.form.RemoveMemberFormDTO; @@ -248,6 +250,24 @@ public interface ResiTopicService extends BaseService { **/ void shiftIssue(ResiTopicTurnIssueFromDTO topicTurnIssueFromDTO); + /** + * @Description 话题转议题 添加内容审核 + * @param param + * @return com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO + * @author wangc + * @date 2020.11.20 10:26 + */ + FirstTopicShiftedToIssueApplicationResultDTO shiftIssueV2(ResiTopicTurnIssueFromDTO param); + + /** + * @Description 工作端审核议题通过时获取一些议题相关信息 + * @param param + * @return com.epmet.resi.group.dto.topic.form.ResiTopicTurnIssueFromDTO + * @author wangc + * @date 2020.11.20 18:09 + */ + IssueShiftedFromTopicFormDTO getIssueInfoWhenAudit(ResiTopicTurnIssueFromDTO param); + /** * @Description 政府端查看议题详情时的话题相关信息 * @param govTopicIssueInfoFormDTO diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java index b22ea9c239..ac0c5b1251 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java @@ -37,12 +37,18 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constant.OrgInfoConstant; import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.dto.result.CommonDataFilterResultDTO; +import com.epmet.dto.result.IssueInitiatorResultDTO; +import com.epmet.dto.result.UserResiInfoResultDTO; +import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.modules.constant.GroupMemberConstant; import com.epmet.modules.constant.ResiGroupRedisKeys; import com.epmet.modules.feign.EpmetUserFeignClient; @@ -79,6 +85,7 @@ import com.epmet.resi.group.dto.topic.TopicInfoDTO; import com.epmet.resi.group.dto.topic.form.CheckTopicPublisherFormDTO; import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO; import com.epmet.resi.group.dto.topic.form.*; +import com.epmet.resi.group.dto.topic.form.IssueShiftedFromTopicFormDTO; import com.epmet.resi.group.dto.topic.result.CheckTopicPublisherResultDTO; import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO; import com.epmet.resi.group.dto.topic.result.*; @@ -94,6 +101,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import javax.swing.text.html.Option; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -153,6 +161,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl records = resiTopicOperationDao.selectList(queryWrapper); if(null != records && records.size() > NumConstant.ZERO){ - hiddenDetailDTO.setHiddenReason(records.get(0).getOperationReason()); + hiddenDetailDTO.setHiddenReason(String.format("%s%s",ModuleConstant.HIDDEN_TOPIC_REASON_PREFIX,records.get(0).getOperationReason())); hiddenDetailDTO.setHiddenDateTime(records.get(0).getCreatedTime().getTime()/NumConstant.ONE_THOUSAND); ResiGroupMemberInfoRedisDTO hiddenBy = resiGroupMemberRedis.get(topicDetail.getGroupId(),records.get(0).getCreatedBy()); @@ -1276,7 +1287,24 @@ public class ResiTopicServiceImpl extends BaseServiceImpl param = new HashMap<>(); param.put(ModuleConstant.FILED_TOPIC_ID_HUMP,topicIdFormDTO.getTopicId()); + Result> record = issueOpenFeignClient.list(param); + if(!record.success()){ + log.error("com.epmet.modules.topic.service.impl.ResiTopicServiceImpl.initTopicInfoWhenShift,,话题Id:{}",topicIdFormDTO.getTopicId()); + throw new RenException(ModuleConstant.FAILED_QUERY_ISSUE_APPLICATION_RECORD); + } + result.setIssueApplicationId(ModuleConstant.EMPTY_STR); + result.setApplyStatus(ModuleConstant.EMPTY_STR); + if(!CollectionUtils.isEmpty(record.getData())){ + if(record.getData().size() > NumConstant.ONE){ + log.error("com.epmet.modules.topic.service.impl.ResiTopicServiceImpl.initTopicInfoWhenShift,查出多条转移提提交记录,话题Id:{}",topicIdFormDTO.getTopicId()); + } + result.setIssueApplicationId(Optional.ofNullable(record.getData().get(NumConstant.ZERO).getId()).orElse(ModuleConstant.EMPTY_STR)); + result.setApplyStatus(Optional.ofNullable(record.getData().get(NumConstant.ZERO).getApplyStatus()).orElse(ModuleConstant.EMPTY_STR)); + } + return result; } throw new RenException(ModuleConstant.FAILED_QUERY_TOPIC_INFO); } @@ -1315,6 +1343,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl 议题服务) Date now = new Date(); //2.调用gov-org获取数据权限 @@ -1334,7 +1363,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); if(dataFilterResult.success() && null != dataFilterResult.getData()){ - IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(topicTurnIssueFromDTO,IssueShiftedFromTopicFormDTO.class); + com.epmet.dto.form.IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(topicTurnIssueFromDTO, com.epmet.dto.form.IssueShiftedFromTopicFormDTO .class); issueInfo.setCreatedTime(now); issueInfo.setGridId(group.getGridId()); issueInfo.setCustomerId(group.getCustomerId()); @@ -1388,6 +1417,202 @@ public class ResiTopicServiceImpl extends BaseServiceImpl textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScan); + if (!textSyncScanResult.success()) { + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } else { + if (!textSyncScanResult.getData().isAllPass()) { + log.error(String.format(TopicConstant.SHIFT_ISSUE, issueTitle, suggestion)); + throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode()); + } + } + } + FirstTopicShiftedToIssueApplicationResultDTO result = null; + + //1.统一时间(群组服务 -> 议题服务) + Date now = new Date(); + //2.调用gov-org获取数据权限 + ResiTopicAndGroupResultDTO group = baseDao.getGroupInfoByTopicId(topicTurnIssueFromDTO.getTopicId()); + if(null == group) { + throw new RenException(ModuleConstant.FAILURE_TO_TURN_ISSUE); + } + TopicInfoFormDTO topicId = new TopicInfoFormDTO(); + topicId.setTopicId(topicTurnIssueFromDTO.getTopicId()); + Integer issueCount = govIssueFeignClient.checkTopicShiftIssue(topicId).getData(); + if (issueCount != NumConstant.ZERO){ + throw new RenException(ModuleConstant.ALREADY_SHIFT_ISSUE); + } + CommonGridIdFormDTO dataFilterParam = new CommonGridIdFormDTO(); + dataFilterParam.setUserId(topicTurnIssueFromDTO.getUserId()); + dataFilterParam.setGridId(group.getGridId()); + Result dataFilterResult = + govOrgFeignClient.gridDataFilter(dataFilterParam); + if(dataFilterResult.success() && null != dataFilterResult.getData()){ + com.epmet.dto.form.IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(topicTurnIssueFromDTO, com.epmet.dto.form.IssueShiftedFromTopicFormDTO .class); + issueInfo.setCreatedTime(now); + issueInfo.setGridId(group.getGridId()); + issueInfo.setCustomerId(group.getCustomerId()); + issueInfo.setOrgId(dataFilterResult.getData().getAgencyId()); + issueInfo.setOrgIdPath(dataFilterResult.getData().getOrgIdPath()); + issueInfo.setOrgName(dataFilterResult.getData().getOrgName()); + //3.获取小组名称、话题作者、议题发起人 + ResiGroupMemberInfoRedisDTO topicAuthor = resiGroupMemberRedis.get(group.getGroupId(), group.getTopicAuthorId()); + issueInfo.setTopicAuthor(null == topicAuthor ? ModuleConstant.EMPTY_STR : topicAuthor.getUserShowName()); + ResiGroupMemberInfoRedisDTO issueAuthor = resiGroupMemberRedis.get(group.getGroupId(), topicTurnIssueFromDTO.getUserId()); + issueInfo.setIssueAuthor(null == issueAuthor ? ModuleConstant.EMPTY_STR : issueAuthor.getUserShowName()); + ResiGroupInfoRedisDTO groupCache = resiGroupRedis.get(group.getGroupId()); + issueInfo.setGroupName(null == groupCache ? ModuleConstant.EMPTY_STR : groupCache.getGroupName()); + issueInfo.setVotableCount(resiGroupMemberService.gridResiCount(group.getGridId())); + issueInfo.setGroupId(group.getGroupId()); + //4.调用gov-issue新增议题 + Result issueResult = issueOpenFeignClient.topicShiftedToIssueV2(issueInfo); + if (issueResult == null || !issueResult.success() || null == issueResult.getData()) { + throw new RenException(ModuleConstant.CREATE_ISSUE_ERROR); + } + + result = issueResult.getData(); + ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.SwitchRequiredGroup.class); + if(StringUtils.equals("close",result.getAuditSwitch())) { + ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.ForbidAuditionGroup.class); + //5.修改话题shiftIssue字段 + ResiTopicEntity topic2Upd = new ResiTopicEntity(); + topic2Upd.setId(topicTurnIssueFromDTO.getTopicId()); + topic2Upd.setUpdatedBy(topicTurnIssueFromDTO.getUserId()); + topic2Upd.setShiftIssue(Boolean.TRUE); + topic2Upd.setIssueId(issueResult.getData().getIssueId()); + topic2Upd.setUpdatedTime(now); + int topicResult = baseDao.updateOne(topic2Upd); + //6.新增话题操作记录 + if (topicResult == NumConstant.ONE) { + ResiTopicOperationEntity operation = new ResiTopicOperationEntity(); + operation.setCreatedTime(now); + operation.setCreatedBy(topicTurnIssueFromDTO.getUserId()); + operation.setTopicId(topicTurnIssueFromDTO.getTopicId()); + operation.setOperationType(ModuleConstant.TOPIC_OPERATION_TYPE_SHIFT_ISSUE); + int operationResult = resiTopicOperationDao.insertOneByParams(operation); + if (operationResult != NumConstant.ONE) { + logger.warn(ModuleConstant.FAILURE_TO_ADD_TOPIC_OPERATION); + } + } else logger.warn(ModuleConstant.FAILURE_TO_UPDATE_TOPIC); + //7.更新组统计信息 议题数量+1 + resiGroupStatisticalDao.incryTotalIssues(group.getGroupId()); + if (null != groupCache && null != groupCache.getGroupStatisticalInfo()) { + groupCache.getGroupStatisticalInfo().setTotalIssues( + null == groupCache.getGroupStatisticalInfo().getTotalIssues() ? NumConstant.ONE + : groupCache.getGroupStatisticalInfo().getTotalIssues() + NumConstant.ONE + ); + resiGroupRedis.set(groupCache); + } + } + else { + ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class); + } + + }else throw new RenException(dataFilterResult.getMsg()); + + return result; + + } + + /** + * @Description 工作端审核议题通过时获取一些议题相关信息 + * @param param + * @return com.epmet.resi.group.dto.topic.form.ResiTopicTurnIssueFromDTO + * @author wangc + * @date 2020.11.20 18:09 + */ + @Override + public IssueShiftedFromTopicFormDTO getIssueInfoWhenAudit(ResiTopicTurnIssueFromDTO param) { + + ResiTopicAndGroupResultDTO group = baseDao.getGroupInfoByTopicId(param.getTopicId()); + if (null == group) throw new RenException(ModuleConstant.QUERY_GROUPINFO_FAILED); + + ResiTopicEntity topic = resiTopicDao.selectById(param.getTopicId()); + if (null == topic) throw new RenException(ModuleConstant.NO_SUCH_TOPIC); + + if (topic.getShiftIssue()) throw new RenException(ModuleConstant.ALREADY_SHIFT_ISSUE); + + IssueShiftedFromTopicFormDTO issueInfo = ConvertUtils.sourceToTarget(param, IssueShiftedFromTopicFormDTO.class); + + issueInfo.setCreatedTime(param.getUnifiedDate()); + issueInfo.setGridId(group.getGridId()); + issueInfo.setCustomerId(group.getCustomerId()); + //issueInfo.setOrgId(dataFilterResult.getData().getAgencyId()); + //issueInfo.setOrgIdPath(dataFilterResult.getData().getOrgIdPath()); + //issueInfo.setOrgName(dataFilterResult.getData().getOrgName()); + + //3.获取小组名称、话题作者、议题发起人 + ResiGroupMemberInfoRedisDTO topicAuthor = resiGroupMemberRedis.get(group.getGroupId(), group.getTopicAuthorId()); + issueInfo.setTopicAuthor(null == topicAuthor ? ModuleConstant.EMPTY_STR : topicAuthor.getUserShowName()); + //参数里的userId并不是工作端审核人的Id 而是转议题人的Id + ResiGroupMemberInfoRedisDTO issueAuthor = resiGroupMemberRedis.get(group.getGroupId(), param.getUserId()); + issueInfo.setIssueAuthor(null == issueAuthor ? ModuleConstant.EMPTY_STR : issueAuthor.getUserShowName()); + ResiGroupInfoRedisDTO groupCache = resiGroupRedis.get(group.getGroupId()); + issueInfo.setGroupName(null == groupCache ? ModuleConstant.EMPTY_STR : groupCache.getGroupName()); + issueInfo.setVotableCount(resiGroupMemberService.gridResiCount(group.getGridId())); + issueInfo.setGroupId(group.getGroupId()); + issueInfo.setCustomerId(group.getCustomerId()); + issueInfo.setIssueAuthorId(issueAuthor.getUserId()); + + if(StringUtils.equals(ModuleConstant.AUDITING_OPERATION_APPROVAL,param.getActionType())){ + //5.修改话题shiftIssue字段 + ResiTopicEntity topic2Upd = new ResiTopicEntity(); + topic2Upd.setId(param.getTopicId()); + topic2Upd.setUpdatedBy(param.getUserId()); + topic2Upd.setShiftIssue(Boolean.TRUE); + topic2Upd.setIssueId(param.getIssueId()); + topic2Upd.setUpdatedTime(param.getUnifiedDate()); + + int topicResult = baseDao.updateOne(topic2Upd); + //6.新增话题操作记录 + if (topicResult == NumConstant.ONE) { + ResiTopicOperationEntity operation = new ResiTopicOperationEntity(); + operation.setCreatedTime(param.getUnifiedDate()); + operation.setCreatedBy(param.getUserId()); + operation.setTopicId(param.getTopicId()); + operation.setOperationType(ModuleConstant.TOPIC_OPERATION_TYPE_SHIFT_ISSUE); + int operationResult = resiTopicOperationDao.insertOneByParams(operation); + if (operationResult != NumConstant.ONE) { + logger.warn(ModuleConstant.FAILURE_TO_ADD_TOPIC_OPERATION); + } + } else logger.warn(ModuleConstant.FAILURE_TO_UPDATE_TOPIC); + //7.更新组统计信息 议题数量+1 + resiGroupStatisticalDao.incryTotalIssues(group.getGroupId()); + if (null != groupCache && null != groupCache.getGroupStatisticalInfo()) { + groupCache.getGroupStatisticalInfo().setTotalIssues( + null == groupCache.getGroupStatisticalInfo().getTotalIssues() ? NumConstant.ONE + : groupCache.getGroupStatisticalInfo().getTotalIssues() + NumConstant.ONE + ); + resiGroupRedis.set(groupCache); + } + } + return issueInfo; + } + /** * @Description 政府端查看议题详情时的话题相关信息 * @param govTopicIssueInfoFormDTO diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java index fad439ec36..7fec6adb3f 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java @@ -287,6 +287,11 @@ public interface ModuleConstant extends Constant { * */ String DATE_FORMAT_PARSE_FAILURE = "日期格式转换失败,异常信息:%s"; + /** + * 查询转议题提交记录失败 + */ + String FAILED_QUERY_ISSUE_APPLICATION_RECORD = "查询转议题提交记录失败"; + /** * 话题转议题失败 * */ @@ -325,9 +330,15 @@ public interface ModuleConstant extends Constant { String FILED_TOPIC_ID = "TOPIC_ID"; + String FILED_TOPIC_ID_HUMP = "topicId"; + String FIELD_OPERATION_TYPE = "OPERATION_TYPE"; - String CLOSED_TOPIC_REASON_PREFIX="话题已关闭:"; + String CLOSED_TOPIC_REASON_PREFIX = "话题已关闭:"; + + String HIDDEN_TOPIC_REASON_PREFIX = "话题已屏蔽:"; + + String CREATE_ISSUE_ERROR = "创建议题失败"; /** * 审核操作 同意 @@ -347,6 +358,4 @@ public interface ModuleConstant extends Constant { * 群邀请二维码跳转页面 */ String CODE_INVITE_PAGE = "pages/group/group/invitation/invitation"; - - String CREATE_ISSUE_ERROR = "创建议题失败"; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml b/epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml index ab40e25425..717cff838d 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml @@ -127,11 +127,6 @@ openapi: imgSyncScan: /imgSyncScan textSyncScan: /textSyncScan -dingTalk: - robot: - webHook: @dingTalk.robot.webHook@ - secret: @dingTalk.robot.secret@ - thread: # 线程池配置 threadPool: @@ -139,3 +134,9 @@ thread: maxPoolSize: @thread.pool.max-pool-size@ queueCapacity: @thread.pool.queue-capacity@ keepAlive: @thread.pool.keep-alive@ + + +dingTalk: + robot: + webHook: @dingTalk.robot.webHook@ + secret: @dingTalk.robot.secret@ \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml index 405090cc4a..a32f5e0be2 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml @@ -460,4 +460,15 @@ AND ta.DEL_FLAG = '0' AND rt.ID = #{topicId} + + diff --git a/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java index 64e1268adc..64c1d9361b 100644 --- a/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java +++ b/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java @@ -129,6 +129,9 @@ public class IssueServiceImpl implements IssueService { @Override public VotingTrendResultDTO votingTrend(IssueIdFormDTO issueId) { Result votingTrendResultDTOResult = govIssueFeignClient.votingTrend(issueId); + if (!votingTrendResultDTOResult.success()){ + throw new RenException("查询议题表决折线图失败"); + } return votingTrendResultDTOResult.getData(); } @@ -172,7 +175,11 @@ public class IssueServiceImpl implements IssueService { GridIdFormDTO gridIdFormDTO = new GridIdFormDTO(); gridIdFormDTO.setGridId(gridId.getGridId()); gridIdFormDTO.setUserId(tokenDto.getUserId()); - CheckJoinTeamResultDTO check = resiGroupFeignClient.checkjointeam(gridIdFormDTO).getData(); + Result checkJoinTeam = resiGroupFeignClient.checkjointeam(gridIdFormDTO); + if (!checkJoinTeam.success()){ + throw new RenException("查询校验用户是否加入小组失败"); + } + CheckJoinTeamResultDTO check = checkJoinTeam.getData(); //未加入小组 if (check.getVoteAuthorization()==false){ voteResultDTOResult.setVoteFlag(false); @@ -180,7 +187,11 @@ public class IssueServiceImpl implements IssueService { voteResultDTOResult.setOppositionCount(NumConstant.ZERO); voteResultDTOResult.setSupportCount(NumConstant.ZERO); }else { - voteResultDTOResult = govIssueFeignClient.voteCount(issueId).getData(); + Result voteResult = govIssueFeignClient.voteCount(issueId); + if (!voteResult.success()){ + throw new RenException("查询表决中议题详情——支持、反对数失败"); + } + voteResultDTOResult = voteResult.getData(); voteResultDTOResult.setVoteAuthorization(check.getVoteAuthorization()); } return voteResultDTOResult; diff --git a/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/UserPubAuditingIssueResultDTO.java b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/UserPubAuditingIssueResultDTO.java new file mode 100644 index 0000000000..1bce77f907 --- /dev/null +++ b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/UserPubAuditingIssueResultDTO.java @@ -0,0 +1,51 @@ +package com.epmet.resi.mine.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 个人中心-我发起的议题列表-审核中列表 返给前端DTO + * + * @author yinzuomei@elink-cn.com + * @date 2020/11/23 10:36 + */ +@Data +public class UserPubAuditingIssueResultDTO implements Serializable { + private static final long serialVersionUID = -7083622810147837717L; + /** + * 申请id + */ + private String issueApplicationId; + + /** + * under_auditing:待审核; rejected:驳回 + */ + private String applyStatus; + + /** + * 议题标题 + */ + private String issueTitle; + + /** + * 转议题时输入的建议 + */ + private String issueSuggestion; + + /** + * 网格名称: 组织-网格 + */ + private String gridName; + + /** + * 小组名称 + */ + private String groupName; + + /** + * 发起时间戳 + */ + private Long publishTime; + +} diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java index 1119d95bc3..c6375670b1 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java @@ -1,18 +1,16 @@ package com.epmet.modules.person.controller; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.MyPubIssuesAuditingFormDTO; -import com.epmet.dto.result.MyPartIssuesResultDTO; -import com.epmet.dto.result.MyPartProjectsResultDTO; -import com.epmet.dto.result.MyPubIssuesAuditingResultDTO; -import com.epmet.dto.result.MyPubIssuesClosedResultDTO; -import com.epmet.dto.result.MyPubIssuesShiftProjectResultDTO; +import com.epmet.dto.result.*; import com.epmet.modules.person.service.IssueService; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; +import com.epmet.resi.mine.dto.result.UserPubAuditingIssueResultDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -63,7 +61,7 @@ public class IssueController { * @author zxc * @date 2020/11/11 9:24 上午 */ - @PostMapping("my-pub-issues/auditing") + @PostMapping("my-pub-issues/voting") public Result> myPubIssuesAuditing(@LoginUser TokenDto tokenDto, @RequestBody MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO){ ValidatorUtils.validateEntity(myPubIssuesAuditingFormDTO, MyPubIssuesAuditingFormDTO.MyPubIssuesAuditing.class); return new Result>().ok(issueService.myPubIssuesAuditing(tokenDto,myPubIssuesAuditingFormDTO)); @@ -94,4 +92,16 @@ public class IssueController { formDTO.setUserId(loginUserUtil.getLoginUserId()); return new Result>().ok(issueService.getMyPubIssuesClosed(formDTO)); } + + /** + * @param fomrDTO + * @author yinzuomei + * @description 个人中心-我发起的议题列表-审核中列表 + * @Date 2020/11/23 9:07 + **/ + @PostMapping("my-pub-issues/auditinglist") + public Result> getMyPubAuditingIssues(@RequestBody PageFormDTO fomrDTO) { + ValidatorUtils.validateEntity(fomrDTO, PageFormDTO.AddUserInternalGroup.class); + return new Result>().ok(issueService.getMyPubAuditingIssues(fomrDTO)); + } } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java index b04c5082a3..b78ec5d664 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java @@ -1,13 +1,11 @@ package com.epmet.modules.person.service; +import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.form.MyPubIssuesAuditingFormDTO; -import com.epmet.dto.result.MyPartIssuesResultDTO; -import com.epmet.dto.result.MyPartProjectsResultDTO; -import com.epmet.dto.result.MyPubIssuesAuditingResultDTO; -import com.epmet.dto.result.MyPubIssuesClosedResultDTO; -import com.epmet.dto.result.MyPubIssuesShiftProjectResultDTO; +import com.epmet.dto.result.*; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; +import com.epmet.resi.mine.dto.result.UserPubAuditingIssueResultDTO; import java.util.List; @@ -55,4 +53,12 @@ public interface IssueService { * @Date 2020/11/11 13:48 **/ List getMyPubIssuesClosed(MyPubIssuesAuditingFormDTO formDTO); + + /** + * @param fomrDTO + * @author yinzuomei + * @description 个人中心-我发起的议题列表-审核中列表 + * @Date 2020/11/23 9:08 + **/ + List getMyPubAuditingIssues(PageFormDTO fomrDTO); } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java index c5f6e6757d..f4fbf8f8ce 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java @@ -1,24 +1,30 @@ package com.epmet.modules.person.service.impl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.security.user.LoginUserUtil; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.IssueOpenConstant; import com.epmet.dto.IssueDTO; import com.epmet.dto.ProjectDTO; import com.epmet.dto.form.MyPartIssuesFormDTO; import com.epmet.dto.form.MyPubIssuesAuditingFormDTO; +import com.epmet.dto.form.UserPubAuditingIssueFormDTO; import com.epmet.dto.result.*; import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.GovProjectOpenFeignClient; import com.epmet.modules.person.service.IssueService; +import com.epmet.resi.group.dto.group.ResiGroupDTO; import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO; import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO; import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO; import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; +import com.epmet.resi.mine.dto.result.UserPubAuditingIssueResultDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -27,10 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -50,7 +53,8 @@ public class IssueServiceImpl implements IssueService { private GovProjectOpenFeignClient govProjectOpenFeignClient; @Autowired private GovOrgOpenFeignClient govOrgOpenFeignClient; - + @Autowired + private LoginUserUtil loginUserUtil; /** * @Description 个人中心-我参与的议题列表 @@ -256,4 +260,51 @@ public class IssueServiceImpl implements IssueService { } return resultDTOList; } + + /** + * @param fomrDTO + * @author yinzuomei + * @description 个人中心-我发起的议题列表-审核中列表 + * @Date 2020/11/23 9:08 + **/ + @Override + public List getMyPubAuditingIssues(PageFormDTO fomrDTO) { + UserPubAuditingIssueFormDTO userPubAuditingIssueFormDTO=new UserPubAuditingIssueFormDTO(); + userPubAuditingIssueFormDTO.setUserId(loginUserUtil.getLoginUserId()); + userPubAuditingIssueFormDTO.setPageNo(fomrDTO.getPageNo()); + userPubAuditingIssueFormDTO.setPageSize(fomrDTO.getPageSize()); + Result> resultList = issueOpenFeignClient.queryUserPubAuditingIssues(userPubAuditingIssueFormDTO); + if (!resultList.success() || CollectionUtils.isEmpty(resultList.getData())) { + return new ArrayList<>(); + } + List list = resultList.getData(); + //网格id 、 小组id + Set gridIds = new HashSet<>(); + Set groupIds = new HashSet<>(); + list.forEach(userPubAuditingIssueResDTO -> { + gridIds.add(userPubAuditingIssueResDTO.getGridId()); + groupIds.add(userPubAuditingIssueResDTO.getGroupId()); + }); + //查询网格名称、 小组名称 + Result> gridNameList = govOrgOpenFeignClient.getGridListByGridIds(new ArrayList<>(gridIds)); + if (!gridNameList.success() || CollectionUtils.isEmpty(gridNameList.getData())) { + logger.warn("个人中心-我发起的议题列表-审核中列表,查询网格名称失败......"); + } else { + //赋值 + list.forEach(resDTO -> { + gridNameList.getData().stream().filter(o -> resDTO.getGridId().equals(o.getGridId())).forEach(o -> resDTO.setGridName(o.getGridName())); + }); + } + //查询话题来源小组名称 + Result> groupInfoMapRes = resiGroupOpenFeignClient.getGroupInfo(new ArrayList<>(groupIds)); + if (!groupInfoMapRes.success() || CollectionUtils.isEmpty(groupInfoMapRes.getData())) { + logger.warn("个人中心-我发起的议题列表-审核中列表,查询小组信息失败......"); + } else { + //赋值 + list.forEach(resDTO -> { + resDTO.setGroupName(null == groupInfoMapRes.getData().get(resDTO.getGroupId()) ? "" : groupInfoMapRes.getData().get(resDTO.getGroupId()).getGroupName()); + }); + } + return ConvertUtils.sourceToTarget(list,UserPubAuditingIssueResultDTO.class); + } } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserIdAndBadgeIdResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserIdAndBadgeIdResultDTO.java new file mode 100644 index 0000000000..e4bbba6566 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserIdAndBadgeIdResultDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2020/11/20 上午9:54 + */ +@Data +public class UserIdAndBadgeIdResultDTO implements Serializable { + + private String userId; + + private String badgeId; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 5d24564ae9..1fe17b02e1 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -441,14 +441,6 @@ public interface EpmetUserOpenFeignClient { @PostMapping(value = "/epmetuser/badge/querygridauditingbadgecount", consumes = MediaType.APPLICATION_JSON_VALUE) Result> queryGridAuditingBadgeCount(@RequestBody List gridIdList); - /** - * 根据userId集合查询用户注册信息 - * @author sun - */ - @PostMapping("/epmetuser/userresiinfo/getuserresiinfolist") - Result> getUserResiInfoList(@RequestBody UserResiInfoListFormDTO userResiInfoListFormDTO); - - /** * @Description 根据角色key查询具有该key的所有角色列表 * @return @@ -458,6 +450,14 @@ public interface EpmetUserOpenFeignClient { @PostMapping("/epmetuser/govstaffrole/list-roles-by-rolekey/{role-key}") Result> listRolesByRoleKey(@PathVariable("role-key") String roleKey); + /** + * 根据userId集合查询用户注册信息 + * @author sun + */ + @PostMapping("/epmetuser/userresiinfo/getuserresiinfolist") + Result> getUserResiInfoList(@RequestBody UserResiInfoListFormDTO userResiInfoListFormDTO); + + /** * @param userId * @author yinzuomei diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index ec8c7b4efc..5801a6769f 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -313,13 +313,13 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien } @Override - public Result> getUserResiInfoList(UserResiInfoListFormDTO fromDTO) { - return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserResiInfoList", fromDTO); + public Result> listRolesByRoleKey(String roleKey) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "listRolesByRoleKey", roleKey); } @Override - public Result> listRolesByRoleKey(String roleKey) { - return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "listRolesByRoleKey", roleKey); + public Result> getUserResiInfoList(UserResiInfoListFormDTO fromDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserResiInfoList", fromDTO); } @Override diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ResiUserBadgeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ResiUserBadgeDao.java index 0ff7ee2c0d..310adb2330 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ResiUserBadgeDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ResiUserBadgeDao.java @@ -19,6 +19,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.ResiUserBadgeDTO; +import com.epmet.dto.result.UserIdAndBadgeIdResultDTO; import com.epmet.entity.ResiUserBadgeEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -43,6 +44,6 @@ public interface ResiUserBadgeDao extends BaseDao { */ void insertResiUserBadge(@Param("badges")List badges); - List selectUserIds(); + List selectUserIds(); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeCertificateRecordDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeCertificateRecordDao.java index f7f4dba91c..2d73b4bac6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeCertificateRecordDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeCertificateRecordDao.java @@ -20,6 +20,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.entity.UserBadgeCertificateRecordEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 用户认证徽章记录表 @@ -29,5 +30,14 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface UserBadgeCertificateRecordDao extends BaseDao { - + + /** + * @Description 查询是否已存在记录 + * @Param badgeId + * @Param userId + * @author zxc + * @date 2020/11/23 上午9:50 + */ + Integer selectIsExist(@Param("badgeId")String badgeId,@Param("userId")String userId); + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java index 16644fa332..13a8dd8b2c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java @@ -178,7 +178,7 @@ public class UserBadgeRedis { * @date 2020.11.05 13:37 */ public long pushOrRemoveUserBadge4List(String userId, String badgeId, String customerId) { - List orient = obtainUserBadge2List(userId,customerId); + List orient = redisUtils.lrange(UserRedisKeys.getResiUserBadgeKey(customerId,userId), NumConstant.ZERO, NumConstant.ONE_NEG, UserBadgeUnitFormDTO.class); UserBadgeUnitFormDTO unit = null; if (!CollectionUtils.isEmpty(orient)) { @@ -206,7 +206,7 @@ public class UserBadgeRedis { if (poolOpt.isPresent()) unit = ConvertUtils.sourceToTarget(poolOpt.get(), UserBadgeUnitFormDTO.class); else return NumConstant.ZERO; } - redisUtils.leftPush(UserRedisKeys.getResiUserBadgeKey(customerId, userId), unit); + redisUtils.leftPush(UserRedisKeys.getResiUserBadgeKey(customerId, userId), unit,-1); return NumConstant.ONE; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java index 44e1ac34ff..6edee9eff0 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java @@ -65,6 +65,8 @@ public class UserBadgeServiceImpl implements UserBadgeService { private EpmetUserOpenFeignClient epmetUserOpenFeignClient; @Autowired private BadgeCertificationConfigDao badgeCertificationConfigDao; + @Autowired + private UserBadgeCertificateRecordDao userBadgeCertificateRecordDao; /** * @Description 查询已经点亮的徽章 @@ -84,24 +86,24 @@ public class UserBadgeServiceImpl implements UserBadgeService { if (CollectionUtils.isEmpty(userBadgeListResultDTOS)){ return redisUserBadgeList.stream().sorted(Comparator.comparing(UserBadgeListResultDTO::getSort)).collect(Collectors.toList()); } + List result = new ArrayList<>(); + result.addAll(userBadgeListResultDTOS); redisUserBadgeList.forEach(u -> { userBadgeListResultDTOS.forEach(badge -> { if (u.getBadgeId().equals(badge.getBadgeId())){ badge.setBadgeIcon(u.getBadgeIcon()); + u.setUpdatedTime(badge.getUpdatedTime()); u.setStatus(true); } }); }); - List noOpenBadge = new ArrayList<>(); - redisUserBadgeList.forEach(u -> { - if (!u.getStatus()){ - noOpenBadge.add(u); - } - }); - if (!CollectionUtils.isEmpty(noOpenBadge)){ - userBadgeListResultDTOS.addAll(noOpenBadge); + Map> collect = redisUserBadgeList.stream().collect(Collectors.groupingBy(UserBadgeListResultDTO::getStatus)); + List noIsLight = collect.get(false); + if (CollectionUtils.isEmpty(noIsLight)){ + return result; } - return userBadgeListResultDTOS.stream().sorted(Comparator.comparing(UserBadgeListResultDTO::getIsOpened,Comparator.reverseOrder()).thenComparing(UserBadgeListResultDTO::getUpdatedTime,Comparator.reverseOrder()).thenComparing(UserBadgeListResultDTO::getSort)).collect(Collectors.toList()); + result.addAll(noIsLight.stream().sorted(Comparator.comparing(UserBadgeListResultDTO::getSort)).collect(Collectors.toList())); + return result; } /** @@ -150,7 +152,7 @@ public class UserBadgeServiceImpl implements UserBadgeService { */ @Override public void initPartyMemberBadge(String userId,TokenDto tokenDto){ - List userIds = resiUserBadgeDao.selectUserIds(); + List userIds = resiUserBadgeDao.selectUserIds(); List badges = new ArrayList<>(); String partyBadgeId = badgeDao.getPartyBadgeId(null); if (StringUtils.isEmpty(userId)) { @@ -159,9 +161,18 @@ public class UserBadgeServiceImpl implements UserBadgeService { return; } if (!CollectionUtils.isEmpty(userIds)) { - userIds.stream().forEach(u -> partyMemberUserIds.stream().filter(p -> u.equals(p.getUserId())).forEach(p -> p.setReStatus(true))); + userIds.forEach(u -> { + partyMemberUserIds.forEach(p -> { + if (u.getUserId().equals(p.getUserId()) && u.getBadgeId().equals(partyBadgeId)){ + p.setReStatus(true); + } + }); + }); } List reUserIds = partyMemberUserIds.stream().filter(p -> !p.getReStatus()).map(p -> p.getUserId()).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(reUserIds)){ + return; + } List userBaseInfoResultDTOS = userBaseInfoService.queryUserBaseInfo(reUserIds); if (CollectionUtils.isEmpty(userBaseInfoResultDTOS)) { log.error("未查询到党员基本信息......"); @@ -232,6 +243,10 @@ public class UserBadgeServiceImpl implements UserBadgeService { @Override @Transactional(rollbackFor = Exception.class) public Result authBadgeRecord(CertificationAddFormDTO certificationAddFormDTO) { + Integer recordCount = userBadgeCertificateRecordDao.selectIsExist(certificationAddFormDTO.getBadgeId(), certificationAddFormDTO.getUserId()); + if (recordCount>NumConstant.ZERO){ + throw new RenException("不允许重复提交审核"); + } log.info(JSON.toJSONString(certificationAddFormDTO)); AuthFieldFormDTO authFieldFormDTO = new AuthFieldFormDTO(); authFieldFormDTO.setCustomerId(certificationAddFormDTO.getCustomerId()); @@ -269,7 +284,7 @@ public class UserBadgeServiceImpl implements UserBadgeService { private void validateParams(CertificationAddFormDTO certificationAddFormDTO, AuthFieldFormDTO authFieldFormDTO) { List authFieldResultDTOS = this.authField(authFieldFormDTO); if (CollectionUtils.isEmpty(authFieldResultDTOS)) { - throw new RenException("该徽章配置配置错误"); + throw new RenException("该徽章配置配置错误,参数参数:{}", JSON.toJSONString(authFieldFormDTO)); } Set requiredColumns = authFieldResultDTOS.stream() .filter(o -> NumConstant.ONE_STR.equals(o.getIsRequired())) @@ -280,31 +295,6 @@ public class UserBadgeServiceImpl implements UserBadgeService { } } - /** - * @Description 站内信发送——提交徽章认证 - * @Param form - * @author zxc - * @date 2020/11/10 9:04 上午 - */ - public void sendMessageByUser(UserBadgeCertificateRecordDTO form) { - List msgList = new ArrayList<>(); - UserMessageFormDTO formDTO = new UserMessageFormDTO(); - formDTO.setApp(BadgeConstant.RESI); - formDTO.setCustomerId(form.getCustomerId()); - formDTO.setGridId(form.getGridId()); - UserBadgeListResultDTO userBadgeListResultDTO = userBadgeDao.selectBadgeByBadgeId(form.getCustomerId(), form.getBadgeId()); - if (null == userBadgeListResultDTO){ - log.error(BadgeConstant.GET_BADGE_NAME_FAILURE); - return; - } - formDTO.setMessageContent(String.format(BadgeConstant.MESSAGE_CONTENT,userBadgeListResultDTO.getBadgeName())); - formDTO.setTitle(BadgeConstant.AUTH_TITLE); - formDTO.setReadFlag(BadgeConstant.READ_FLAG); - formDTO.setUserId(form.getUserId()); - msgList.add(formDTO); - Result result = messageFeignClient.saveUserMessageList(msgList); - } - /** * @Description 发送验证码 * @Param badgeSendCodeFormDTO diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/ResiUserBadgeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/ResiUserBadgeDao.xml index d67b6d08d0..912e6ed558 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/ResiUserBadgeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/ResiUserBadgeDao.xml @@ -41,8 +41,8 @@ - + SELECT USER_ID,BADGE_ID FROM resi_user_badge WHERE DEL_FLAG = 0 diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml index a2f59e8b8e..2a58027d9c 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml @@ -28,5 +28,17 @@ + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml index dfb53c3363..80ea8028b6 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml @@ -37,6 +37,7 @@ AND ub.CERTIFICATION_AUTID_STATUS = 'approved' AND b.CUSTOMER_ID = 'default' AND b.BADGE_STATUS = 'online' + AND ub.IS_OPENED = 1 AND ub.USER_ID = #{userId} ORDER BY ub.UPDATED_TIME DESC @@ -52,10 +53,10 @@ sort FROM ( SELECT * FROM badge - WHERE CUSTOMER_ID = #{customerId} AND DEL_FLAG = '0' + WHERE CUSTOMER_ID = #{customerId} AND DEL_FLAG = '0' AND BADGE_STATUS = 'online' UNION ALL SELECT * FROM badge a - WHERE CUSTOMER_ID = 'default' AND a.DEL_FLAG = '0' AND BADGE_STATUS = 'online' + WHERE CUSTOMER_ID = 'default' AND a.DEL_FLAG = '0' AND NOT EXISTS ( SELECT ID FROM badge b WHERE CUSTOMER_ID = #{customerId} AND a.ID = b.ID)) t ORDER BY @@ -219,7 +220,7 @@ badgeInfo.BADGE_ICON FROM resi_user_badge userBadge - LEFT JOIN ( + INNER JOIN ( SELECT id AS badgeId, CUSTOMER_ID,