86 changed files with 3465 additions and 50 deletions
			
			
		| @ -0,0 +1,28 @@ | |||
| package com.epmet.dataaggre.dto.epmetuser.result; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * 人大代表个人中心,是否显示@me | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 15:01 | |||
|  */ | |||
| @Data | |||
| public class UserEventLogoResultDTO implements Serializable { | |||
|     private static final long serialVersionUID = 3232361347890014097L; | |||
|     /** | |||
|      * true:人大代表;false:不是人大代表;此列用来判断是否显示@我 | |||
|      */ | |||
|     private Boolean isNpc; | |||
|     /** | |||
|      * 展示红点:true;隐藏:false | |||
|      */ | |||
|     private Boolean redDot; | |||
|     public UserEventLogoResultDTO(){ | |||
|         this.isNpc=false; | |||
|         this.redDot=false; | |||
|     } | |||
| } | |||
| @ -1,21 +0,0 @@ | |||
| package com.epmet.controller; | |||
| 
 | |||
| import com.epmet.commons.tools.utils.Result; | |||
| import org.springframework.web.bind.annotation.PostMapping; | |||
| import org.springframework.web.bind.annotation.RequestMapping; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| 
 | |||
| @RestController | |||
| @RequestMapping("healthcheck") | |||
| public class HealthCheckController { | |||
| 
 | |||
|     /** | |||
|      * http健康检查 | |||
|      * @return | |||
|      */ | |||
|     @PostMapping("http") | |||
|     public Result httpHealthCheck() { | |||
|         return new Result(); | |||
|     } | |||
| 
 | |||
| } | |||
| @ -0,0 +1,66 @@ | |||
| package com.epmet.enums; | |||
| 
 | |||
| import lombok.extern.slf4j.Slf4j; | |||
| 
 | |||
| import java.util.Optional; | |||
| 
 | |||
| /** | |||
|  * @Description 入职级别枚举 | |||
|  * @author wxz | |||
|  * @date 2021.08.03 14:29:01 | |||
| */ | |||
| @Slf4j | |||
| public enum OrgLevelEnums { | |||
| 
 | |||
|     GRID("grid", "网格"), | |||
|     COMMUNITY("community", "社区"), | |||
|     STREET("street", "街道"), | |||
|     DISTRICT("district", "区"), | |||
|     CITY("city", "市"), | |||
|     PROVINCE("province", "省"), | |||
| 
 | |||
|     DEPARTMENT("department", "部门"), | |||
|     ; | |||
| 
 | |||
|     private String level; | |||
|     private String levelName; | |||
| 
 | |||
|     OrgLevelEnums(String level, String levelName) { | |||
|         this.level = level; | |||
|         this.levelName = levelName; | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @Description 级别枚举对象 | |||
|      * @return | |||
|      * @author wxz | |||
|      * @date 2021.08.03 14:46 | |||
|     */ | |||
|     public static OrgLevelEnums getLevelObject(String level) { | |||
|         for (OrgLevelEnums l :OrgLevelEnums.values()) { | |||
|             if (l.getLevel().equals(level)) { | |||
|                 return l; | |||
|             } | |||
|         } | |||
|         return null; | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @Description 级别中文名称 | |||
|      * @return | |||
|      * @author wxz | |||
|      * @date 2021.08.03 14:47 | |||
|     */ | |||
|     public static String getLevelName(String level) { | |||
|         OrgLevelEnums levelObject = getLevelObject(level); | |||
|         return levelObject == null ? null : levelObject.getLevelName(); | |||
|     } | |||
| 
 | |||
|     public String getLevel() { | |||
|         return level; | |||
|     } | |||
| 
 | |||
|     public String getLevelName() { | |||
|         return levelName; | |||
|     } | |||
| } | |||
| @ -0,0 +1,43 @@ | |||
| package com.epmet.dto; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 1:38 下午 | |||
|  * @DESC | |||
|  */ | |||
| @Data | |||
| public class EventProjectInfoDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = 5622220354099001615L; | |||
| 
 | |||
|     /** | |||
|      * 项目ID | |||
|      */ | |||
|     private String projectId; | |||
| 
 | |||
|     /** | |||
|      * 操作人【xxx社区-张三】 | |||
|      */ | |||
|     private String operationName; | |||
| 
 | |||
|     /** | |||
|      * 操作时间 | |||
|      */ | |||
|     private String operationTime; | |||
| 
 | |||
|     /** | |||
|      * 报事说明 | |||
|      */ | |||
|     private String projectDeclare; | |||
| 
 | |||
|     public EventProjectInfoDTO() { | |||
|         this.projectId = ""; | |||
|         this.operationName = ""; | |||
|         this.operationTime = ""; | |||
|         this.projectDeclare = ""; | |||
|     } | |||
| } | |||
| @ -0,0 +1,42 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import com.epmet.dto.result.ResiEventIdDTO; | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * 选择已解决,未解决?? | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 13:53 | |||
|  */ | |||
| @Data | |||
| public class ChooseResolveFormDTO extends ResiEventIdDTO implements Serializable { | |||
|     private static final long serialVersionUID = 7888566055415227282L; | |||
| 
 | |||
| 
 | |||
|     public interface AddUserInternalGroup { | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 是否解决:已解决 resolved,未解决 un_solved | |||
|      */ | |||
|     @NotBlank(message = "resolveStatus不能为空",groups = AddUserInternalGroup.class) | |||
|     private String resolveStatus; | |||
| 
 | |||
| 
 | |||
|     //以下参数从token中获取
 | |||
|     /** | |||
|      * 当前用户id | |||
|      */ | |||
|     @NotBlank(message = "userId不能为空",groups = AddUserInternalGroup.class) | |||
|     private String userId; | |||
| 
 | |||
|     /** | |||
|      * 当前客户id | |||
|      */ | |||
|     @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) | |||
|     private String customerId; | |||
| } | |||
| @ -0,0 +1,22 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 1:27 下午 | |||
|  * @DESC | |||
|  */ | |||
| @Data | |||
| public class EventDetailFormDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = -297495947153154171L; | |||
| 
 | |||
|     public interface EventDetailForm{} | |||
| 
 | |||
|     @NotBlank(message = "报事ID不能为空",groups = EventDetailForm.class) | |||
|     private String eventId; | |||
| } | |||
| @ -0,0 +1,29 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 10:43 上午 | |||
|  * @DESC | |||
|  */ | |||
| @Data | |||
| public class EventListFormDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = 5882062169112022561L; | |||
| 
 | |||
|     public interface EventListForm{} | |||
| 
 | |||
|     /** | |||
|      * 报事列表类型【处理中:processed 	待处理:undisposed 	已办结:transferred】 | |||
|      */ | |||
|     @NotBlank(message = "报事列表类型不能为空",groups = EventListForm.class) | |||
|     private String eventType; | |||
| 
 | |||
|     @NotBlank(message = "",groups = EventListForm.class) | |||
|     private String orgId; | |||
| } | |||
| @ -0,0 +1,35 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * 被艾特的人 | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 15:51 | |||
|  */ | |||
| @Data | |||
| public class MentionUserFormDTO implements Serializable { | |||
| 
 | |||
|     /** | |||
|      * 人大代表用户id | |||
|      */ | |||
|     private String userId; | |||
| 
 | |||
|     /** | |||
|      * 人大代表注册网格id | |||
|      */ | |||
|     private String gridId; | |||
| 
 | |||
|     /** | |||
|      * 人大代表注册网格所属社区id | |||
|      */ | |||
|     private String agencyId; | |||
| 
 | |||
|     /** | |||
|      * 注册网格的所有上级 | |||
|      */ | |||
|     private String pids; | |||
| } | |||
| @ -0,0 +1,42 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * 我的报事列表查询 | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 14:07 | |||
|  */ | |||
| @Data | |||
| public class MyReportedFormDTO implements Serializable { | |||
|     private static final long serialVersionUID = 8426911903236849796L; | |||
| 
 | |||
|     public interface AddUserInternalGroup { | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 未处理:un_read;处理中:processing;已办结:closed_case | |||
|      */ | |||
|     @NotBlank(message = "statusCondition不能为空",groups = AddUserInternalGroup.class) | |||
|     private String statusCondition; | |||
| 
 | |||
|     private Integer pageNo; | |||
|     private Integer pageSize; | |||
| 
 | |||
|     //以下参数从token中获取
 | |||
|     /** | |||
|      * 当前用户id | |||
|      */ | |||
|     @NotBlank(message = "userId不能为空",groups = AddUserInternalGroup.class) | |||
|     private String userId; | |||
| 
 | |||
|     /** | |||
|      * 当前客户id | |||
|      */ | |||
|     @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) | |||
|     private String customerId; | |||
| } | |||
| @ -0,0 +1,34 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import com.epmet.dto.result.ResiEventIdDTO; | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * 撤回事件入参 | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 11:28 | |||
|  */ | |||
| @Data | |||
| public class ReCallEventFormDTO extends ResiEventIdDTO implements Serializable { | |||
|     private static final long serialVersionUID = 2127663703852717437L; | |||
| 
 | |||
|     public interface AddUserInternalGroup { | |||
|     } | |||
| 
 | |||
|     //以下参数从token中获取
 | |||
|     /** | |||
|      * 当前用户id | |||
|      */ | |||
|     @NotBlank(message = "userId不能为空",groups = AddUserInternalGroup.class) | |||
|     private String userId; | |||
| 
 | |||
|     /** | |||
|      * 当前客户id | |||
|      */ | |||
|     @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) | |||
|     private String customerId; | |||
| } | |||
| @ -0,0 +1,23 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 11:07 上午 | |||
|  * @DESC | |||
|  */ | |||
| @Data | |||
| public class ReplyListFormDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = 3875624725235229558L; | |||
| 
 | |||
|     public interface ReplyListForm{} | |||
| 
 | |||
|     @NotBlank(message = "报事ID不能为空",groups = ReplyListForm.class) | |||
|     private String resiEventId; | |||
| } | |||
| @ -0,0 +1,34 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * 报给谁? | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 15:51 | |||
|  */ | |||
| @Data | |||
| public class ReportOrgFormDTO implements Serializable { | |||
|     /** | |||
|      * 报给?: 网格:grid; 社区:community; 乡(镇、街道)级:street; 区县级: district; 市级: city; 省级:province。 | |||
|      */ | |||
|     private String orgLevel; | |||
| 
 | |||
|     /** | |||
|      * 报给的组织或者网格id | |||
|      */ | |||
|     private String orgId; | |||
| 
 | |||
|     /** | |||
|      * org_id的上级组织id,org_id是跟组织,此列为0 | |||
|      */ | |||
|     private String orgPid; | |||
| 
 | |||
|     /** | |||
|      * org_id的所有上级组织id,org_id是跟组织,此列为0 | |||
|      */ | |||
|     private String orgPids; | |||
| } | |||
| @ -0,0 +1,85 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import com.epmet.commons.tools.dto.form.FileCommonDTO; | |||
| import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; | |||
| import lombok.Data; | |||
| import org.hibernate.validator.constraints.Length; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import javax.validation.constraints.NotEmpty; | |||
| import java.io.Serializable; | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 我要报事-提交(尹) | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 10:46 | |||
|  */ | |||
| @Data | |||
| public class ResiEventFormDTO implements Serializable { | |||
|     private static final long serialVersionUID = -778643059131036832L; | |||
| 
 | |||
|     public interface AddUserInternalGroup { | |||
|     } | |||
|     public interface AddUserShowGroup extends CustomerClientShowGroup { | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 用户所在网格id | |||
|      */ | |||
|     @NotBlank(message = "不能为空",groups = AddUserInternalGroup.class) | |||
|     private String gridId; | |||
| 
 | |||
|     /** | |||
|      * 事件内容,最多1000 | |||
|      */ | |||
|     @Length(min = 1, max = 1000, message = "请填写内容,最多输入1000字", groups = AddUserShowGroup.class) | |||
|     private String eventContent; | |||
| 
 | |||
|     /** | |||
|      * 纬度 | |||
|      */ | |||
|     private String latitude; | |||
| 
 | |||
|     /** | |||
|      * 经度 | |||
|      */ | |||
|     private String longitude; | |||
| 
 | |||
|     /** | |||
|      * 地址 | |||
|      */ | |||
|     @NotBlank(message = "地址不能为空",groups = AddUserShowGroup.class) | |||
|     private String address; | |||
| 
 | |||
|     /** | |||
|      * 附件列表 | |||
|      */ | |||
|     private List<FileCommonDTO>  attachmentList; | |||
|     /** | |||
|      * @的人 | |||
|      */ | |||
|     private List<MentionUserFormDTO> npcUserList; | |||
| 
 | |||
|     /** | |||
|      * 报给谁? | |||
|      */ | |||
|     @NotEmpty(message = "不能为空",groups = AddUserInternalGroup.class) | |||
|     private List<ReportOrgFormDTO> orgList; | |||
| 
 | |||
| 
 | |||
| 
 | |||
|     //以下参数从token中获取
 | |||
|     /** | |||
|      * 当前用户id | |||
|      */ | |||
|     @NotBlank(message = "userId不能为空",groups =AddUserInternalGroup.class) | |||
|     private String userId; | |||
| 
 | |||
|     /** | |||
|      * 当前客户id | |||
|      */ | |||
|     @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) | |||
|     private String customerId; | |||
| } | |||
| @ -0,0 +1,29 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 10:55 上午 | |||
|  * @DESC | |||
|  */ | |||
| @Data | |||
| public class UpdateViewTimeFormDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = 7104400078458366322L; | |||
| 
 | |||
|     public interface UpdateViewTimeForm{} | |||
| 
 | |||
|     /** | |||
|      * 居民端用户:resi_user;工作人员:staff | |||
|      */ | |||
|     @NotBlank(message = "viewType不能为空",groups = UpdateViewTimeForm.class) | |||
|     private String viewType; | |||
| 
 | |||
|     @NotBlank(message = "事件ID不能为空",groups = UpdateViewTimeForm.class) | |||
|     private String eventId; | |||
| } | |||
| @ -0,0 +1,44 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import javax.validation.constraints.NotNull; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * 我要报事-人大代表未读/已读列表入参 | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/4 9:34 | |||
|  */ | |||
| @Data | |||
| public class UserMentionFormDTO implements Serializable { | |||
|     private static final long serialVersionUID = 7548058964554418080L; | |||
| 
 | |||
|     public interface AddUserInternalGroup { | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 未读:un_read;已读:read; | |||
|      */ | |||
|     @NotBlank(message = "readFlag不能为空", groups = AddUserInternalGroup.class) | |||
|     private String readFlag; | |||
|     @NotNull(message = "pageNo不能为空", groups = AddUserInternalGroup.class) | |||
|     private Integer pageNo; | |||
|     @NotNull(message = "pageSize不能为空", groups = AddUserInternalGroup.class) | |||
|     private Integer pageSize; | |||
| 
 | |||
|     //以下参数从token中获取
 | |||
|     /** | |||
|      * 当前用户id | |||
|      */ | |||
|     @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) | |||
|     private String userId; | |||
| 
 | |||
|     /** | |||
|      * 当前客户id | |||
|      */ | |||
|     @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) | |||
|     private String customerId; | |||
| } | |||
| @ -0,0 +1,82 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import com.epmet.dto.EventProjectInfoDTO; | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 1:30 下午 | |||
|  * @DESC | |||
|  */ | |||
| @Data | |||
| public class EventDetailResultDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = 3905105043326445613L; | |||
| 
 | |||
|     /** | |||
|      * 报事时间 | |||
|      */ | |||
|     private String eventTime; | |||
| 
 | |||
|     /** | |||
|      * 报事内容 | |||
|      */ | |||
|     private String eventContent; | |||
| 
 | |||
|     /** | |||
|      * 报事地址 | |||
|      */ | |||
|     private String eventAddress; | |||
| 
 | |||
|     /** | |||
|      * 所属网格【xx社区-xx网格】 | |||
|      */ | |||
|     private String gridName; | |||
| 
 | |||
|     /** | |||
|      * 是否办结【是:true,否:false】 | |||
|      */ | |||
|     private Boolean isClosed; | |||
| 
 | |||
|     /** | |||
|      * 是否解决【是:true,否:false】 | |||
|      */ | |||
|     private Boolean isResolve; | |||
| 
 | |||
|     /** | |||
|      * 是否可以撤回【true:是,false:否】 | |||
|      */ | |||
|     private Boolean isRollback; | |||
| 
 | |||
|     /** | |||
|      * 报事图片 | |||
|      */ | |||
|     private List<String> eventImgs; | |||
| 
 | |||
|     /** | |||
|      * 报事提到的人 | |||
|      */ | |||
|     private List<String> eventPerson; | |||
| 
 | |||
|     /** | |||
|      * 项目信息 | |||
|      */ | |||
|     private EventProjectInfoDTO projectInfo; | |||
| 
 | |||
|     public EventDetailResultDTO() { | |||
|         this.eventTime = ""; | |||
|         this.eventContent = ""; | |||
|         this.eventAddress = ""; | |||
|         this.gridName = ""; | |||
|         this.isClosed = false; | |||
|         this.isResolve = false; | |||
|         this.isRollback = false; | |||
|         this.eventImgs = new ArrayList<>(); | |||
|         this.eventPerson = new ArrayList<>(); | |||
|         this.projectInfo = new EventProjectInfoDTO(); | |||
|     } | |||
| } | |||
| @ -0,0 +1,48 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 10:41 上午 | |||
|  * @DESC | |||
|  */ | |||
| @Data | |||
| public class EventListResultDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = -8550265282744924930L; | |||
| 
 | |||
|     /** | |||
|      * 报事标题 | |||
|      */ | |||
|     private String eventContent; | |||
| 
 | |||
|     /** | |||
|      * 报事时间 | |||
|      */ | |||
|     private String eventTime; | |||
| 
 | |||
|     /** | |||
|      * 报事ID | |||
|      */ | |||
|     private String eventId; | |||
| 
 | |||
|     /** | |||
|      * 是否立项【true:是,false:否】 | |||
|      */ | |||
|     private Boolean isProject; | |||
| 
 | |||
|     /** | |||
|      * 红点显示【true:显示,false:不显示】 | |||
|      */ | |||
|     private Boolean redDot; | |||
| 
 | |||
|     /** | |||
|      * 报事图片 | |||
|      */ | |||
|     private List<String> eventImgs; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,55 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import com.fasterxml.jackson.annotation.JsonFormat; | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 报事列表 | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 14:11 | |||
|  */ | |||
| @Data | |||
| public class MyReportedResultDTO implements Serializable { | |||
|     private static final long serialVersionUID = -7372245830000262134L; | |||
| 
 | |||
|     /** | |||
|      * 事件id | |||
|      */ | |||
|     private String resiEventId; | |||
| 
 | |||
|     /** | |||
|      * 事件内容 | |||
|      */ | |||
|     private String eventContent; | |||
| 
 | |||
|     /** | |||
|      * 图片列表,可为空 | |||
|      */ | |||
|     private List<String> imgList; | |||
| 
 | |||
|     /** | |||
|      * true展示;false不展示 | |||
|      */ | |||
|     private Boolean redDot; | |||
| 
 | |||
|     /** | |||
|      * 处理中:processing;已办结:closed_case | |||
|      */ | |||
|     private String status; | |||
| 
 | |||
|     /** | |||
|      * true:已转项目;false:未立项 | |||
|      */ | |||
|     private Boolean shiftProject; | |||
| 
 | |||
|     /** | |||
|      * 列表显示时间用此列:yyyy-MM-dd HH:mm:ss;处理中:上报事件时间,处理中:最新一次处理事件;已办结:办结时间 | |||
|      */ | |||
|     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") | |||
|     private Date showTime; | |||
| } | |||
| @ -0,0 +1,18 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 11:07 上午 | |||
|  * @DESC | |||
|  */ | |||
| @Data | |||
| public class ReplyListResultDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = 4875335642497226847L; | |||
| 
 | |||
| 
 | |||
| } | |||
| @ -0,0 +1,24 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * 事件id | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 10:48 | |||
|  */ | |||
| @Data | |||
| public class ResiEventIdDTO implements Serializable { | |||
|     private static final long serialVersionUID = 1553798655658549134L; | |||
|     public interface ResiEventIdGroup { | |||
|     } | |||
|     /** | |||
|      * 居民端报的事件id | |||
|      */ | |||
|     @NotBlank(message = "事件id不能为空",groups = ResiEventIdGroup.class) | |||
|     private String resiEventId; | |||
| } | |||
| @ -0,0 +1,55 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import com.fasterxml.jackson.annotation.JsonFormat; | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 我要报事-人大代表未读/已读列表返参 | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/4 9:44 | |||
|  */ | |||
| @Data | |||
| public class UserMentionResultDTO implements Serializable { | |||
| 
 | |||
|     private static final long serialVersionUID = 8171079006237395425L; | |||
|     /** | |||
|      * 事件id | |||
|      */ | |||
|     private String resiEventId; | |||
| 
 | |||
|     /** | |||
|      * 事件内容 | |||
|      */ | |||
|     private String eventContent; | |||
| 
 | |||
|     /** | |||
|      * 图片列表,可为空 | |||
|      */ | |||
|     private List<String> imgList; | |||
| 
 | |||
|     /** | |||
|      * true展示;false不展示 | |||
|      */ | |||
|     private Boolean redDot; | |||
| 
 | |||
|     /** | |||
|      * 处理中:processing;已办结:closed_case | |||
|      */ | |||
|     private String status; | |||
| 
 | |||
|     /** | |||
|      * true:已转项目;false:未立项 | |||
|      */ | |||
|     private Boolean shiftProject; | |||
| 
 | |||
|     /** | |||
|      * 列表显示时间用此列:yyyy-MM-dd HH:mm:ss;处理中:上报事件时间,处理中:最新一次处理事件;已办结:办结时间 | |||
|      */ | |||
|     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") | |||
|     private Date showTime; | |||
| } | |||
| @ -0,0 +1,46 @@ | |||
| package com.epmet.constant; | |||
| 
 | |||
| /** | |||
|  * @Author zxc | |||
|  * @DateTime 2021/8/3 2:45 下午 | |||
|  * @DESC | |||
|  */ | |||
| public interface EventConstant { | |||
| 
 | |||
|     /** | |||
|      * 【处理中:processed 	待处理:undisposed 	已办结:transferred】 | |||
|      */ | |||
|     String EVENT_PROCESSED = "processed"; | |||
|     String EVENT_UN_DISPOSED = "undisposed"; | |||
|     String EVENT_TRANSFERRED = "transferred"; | |||
| 
 | |||
| 
 | |||
|     /** | |||
|      * 事件状态resi_event.status:处理中:processing;已办结:closed_case | |||
|      */ | |||
|     String EVENT_STATUS_PROCESSING="processing"; | |||
|     String EVENT_STATUS_CLOSED_CASE="closed_case"; | |||
| 
 | |||
|     String READ="read"; | |||
|     String UN_READ="un_read"; | |||
| 
 | |||
|     /** | |||
|      * 事件@人员表,用户身份 | |||
|      * resi_event_mention.user_type | |||
|      */ | |||
|     String NPC_USER="npc_user"; | |||
| 
 | |||
|     /** | |||
|      * 操作日志表用户来源:resi_event_operation_log.userIdentity | |||
|      * 居民端用户:resi_user;工作人员:staff;报事人:report_user | |||
|      */ | |||
|     String RESI_USER="resi_user"; | |||
|     String STAFF="staff"; | |||
|     String REPORT_USER="report_user"; | |||
| 
 | |||
|     /** | |||
|      * 事件是否解决:已解决 resolved,未解决 un_solved | |||
|      */ | |||
|     String RESOLVED="resolved"; | |||
|     String UN_SOLVED="un_solved"; | |||
| } | |||
| @ -0,0 +1,61 @@ | |||
| package com.epmet.constant; | |||
| 
 | |||
| import com.epmet.commons.tools.constant.StrConstant; | |||
| 
 | |||
| /** | |||
|  * resi_event_operation_log事件操作日志枚举类 | |||
|  * | |||
|  * @author yinzuomei@elink-cn.com | |||
|  * @date 2021/8/3 16:38 | |||
|  */ | |||
| public enum ResiEventAction { | |||
|     // 1、发布事件:publish;
 | |||
|     // 2、撤回事件:recall;
 | |||
|     // 3、复:reply;
 | |||
|     // 4、立项:shift_project;
 | |||
|     // 5、办结:close_case;
 | |||
|     // 6、选择是否已解决:choose_resolve;
 | |||
|     // 7、查看阅读事件:read:人大代表未读=>已读;工作人员待处理=>处理中;
 | |||
|      PUBLISH ( "publish",""), | |||
|      RECALL( "recall",""), | |||
|      REPLY ("reply",""), | |||
|      SHIFIT_PROJECT ( "shift_project",""), | |||
|      CLOSE_CASE ( "close_case",""), | |||
|      CHOOSE_RESOLVE ( "choose_resolve",""), | |||
|      READ( "read",""); | |||
| 
 | |||
| 
 | |||
|     private String code; | |||
|     private String desc; | |||
| 
 | |||
|     ResiEventAction(String code, String desc) { | |||
|         this.code = code; | |||
|         this.desc = desc; | |||
|     } | |||
| 
 | |||
|     public static String getDesc(String code) { | |||
|         ResiEventAction[] businessModeEnums = values(); | |||
|         for (ResiEventAction resiEventAction : businessModeEnums) { | |||
|             if (resiEventAction.getCode()==code) { | |||
|                 return resiEventAction.getDesc(); | |||
|             } | |||
|         } | |||
|         return StrConstant.EPMETY_STR; | |||
|     } | |||
| 
 | |||
|     public String getCode(){ | |||
|         return this.code; | |||
|     } | |||
| 
 | |||
|     public void setCode(String code) { | |||
|         this.code = code; | |||
|     } | |||
| 
 | |||
|     public String getDesc(){ | |||
|         return this.desc; | |||
|     } | |||
| 
 | |||
|     public void setDesc(String desc) { | |||
|         this.desc = desc; | |||
|     } | |||
| } | |||
| @ -0,0 +1,30 @@ | |||
| package com.epmet.controller; | |||
| 
 | |||
| import com.epmet.commons.tools.utils.Result; | |||
| import com.epmet.commons.tools.validator.ValidatorUtils; | |||
| import com.epmet.dto.form.EventListFormDTO; | |||
| import com.epmet.dto.form.UpdateViewTimeFormDTO; | |||
| import com.epmet.dto.result.EventListResultDTO; | |||
| import com.epmet.service.ResiEventService; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| 
 | |||
| /** | |||
|  * 居民报事表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @RestController | |||
| @RequestMapping("event") | |||
| public class EventController { | |||
|      | |||
|     @Autowired | |||
|     private ResiEventService resiEventService; | |||
| 
 | |||
| 
 | |||
| 
 | |||
| } | |||
| @ -0,0 +1,171 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.controller; | |||
| 
 | |||
| import com.epmet.commons.tools.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.form.*; | |||
| import com.epmet.dto.result.*; | |||
| import com.epmet.service.ResiEventService; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.PostMapping; | |||
| import org.springframework.web.bind.annotation.RequestBody; | |||
| import org.springframework.web.bind.annotation.RequestMapping; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| 
 | |||
| /** | |||
|  * 居民报事表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @RestController | |||
| @RequestMapping("resievent") | |||
| public class ResiEventController { | |||
|      | |||
|     @Autowired | |||
|     private ResiEventService resiEventService; | |||
| 
 | |||
|     /** | |||
|      * @Description  报事详情-两端通用 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 1:47 下午 | |||
|      */ | |||
|     @PostMapping("eventdetail") | |||
|     public Result<EventDetailResultDTO> eventDetail(@RequestBody EventDetailFormDTO formDTO){ | |||
|         ValidatorUtils.validateEntity(formDTO); | |||
|         return new Result<EventDetailResultDTO>().ok(resiEventService.eventDetail(formDTO)); | |||
|     } | |||
|     /** | |||
|      * 我要报事-提交(尹) | |||
|      * | |||
|      * @param formDTO | |||
|      * @return  com.epmet.commons.tools.utils.Result | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 10:46 | |||
|      */ | |||
|     @PostMapping("report") | |||
|     public Result<ResiEventIdDTO> report(@LoginUser TokenDto tokenDto, @RequestBody ResiEventFormDTO formDTO){ | |||
|         formDTO.setCustomerId(tokenDto.getCustomerId()); | |||
|         formDTO.setUserId(tokenDto.getUserId()); | |||
|         ValidatorUtils.validateEntity(formDTO,ResiEventFormDTO.AddUserShowGroup.class,ResiEventFormDTO.AddUserInternalGroup.class); | |||
|         return new Result<ResiEventIdDTO>().ok(resiEventService.report(formDTO)); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 我要报事-撤回(尹) | |||
|      * | |||
|      * @param formDTO | |||
|      * @return  com.epmet.commons.tools.utils.Result | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 10:54 | |||
|      */ | |||
|     @PostMapping("recall") | |||
|     public Result recall(@LoginUser TokenDto tokenDto,@RequestBody ReCallEventFormDTO formDTO){ | |||
|         formDTO.setCustomerId(tokenDto.getCustomerId()); | |||
|         formDTO.setUserId(tokenDto.getUserId()); | |||
|         ValidatorUtils.validateEntity(formDTO,ResiEventIdDTO.ResiEventIdGroup.class,ReCallEventFormDTO.AddUserInternalGroup.class); | |||
|         resiEventService.reCall(formDTO); | |||
|         return new Result(); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 选择已解决,未解决 | |||
|      * | |||
|      * @param tokenDto | |||
|      * @param formDTO | |||
|      * @return  com.epmet.commons.tools.utils.Result | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 13:57 | |||
|      */ | |||
|     @PostMapping("chooseresolve") | |||
|     public Result chooseResolve(@LoginUser TokenDto tokenDto,@RequestBody ChooseResolveFormDTO formDTO){ | |||
|         formDTO.setCustomerId(tokenDto.getCustomerId()); | |||
|         formDTO.setUserId(tokenDto.getUserId()); | |||
|         ValidatorUtils.validateEntity(formDTO,ResiEventIdDTO.ResiEventIdGroup.class,ChooseResolveFormDTO.AddUserInternalGroup.class); | |||
|         resiEventService.chooseResolve(formDTO); | |||
|         return new Result(); | |||
|     } | |||
| 
 | |||
| 
 | |||
|     /** | |||
|      * 我的报事列表查询 | |||
|      * | |||
|      * @param tokenDto | |||
|      * @param formDTO | |||
|      * @return  com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.MyReportedResultDTO>> | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 14:27 | |||
|      */ | |||
|     @PostMapping("myreported") | |||
|     public Result<List<MyReportedResultDTO>> queryMyReported(@LoginUser TokenDto tokenDto, @RequestBody MyReportedFormDTO formDTO){ | |||
|         formDTO.setCustomerId(tokenDto.getCustomerId()); | |||
|         formDTO.setUserId(tokenDto.getUserId()); | |||
|         ValidatorUtils.validateEntity(formDTO,MyReportedFormDTO.AddUserInternalGroup.class); | |||
|         return new Result<List<MyReportedResultDTO>>().ok(resiEventService.queryMyReported(formDTO)); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @Description  群众直报(待处理、处理中、已办结)列表 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 10:53 上午 | |||
|      */ | |||
|     @PostMapping("eventlist") | |||
|     public Result<List<EventListResultDTO>> eventList(@RequestBody EventListFormDTO formDTO){ | |||
|         ValidatorUtils.validateEntity(formDTO, EventListFormDTO.EventListForm.class); | |||
|         return new Result<List<EventListResultDTO>>().ok(resiEventService.eventList(formDTO)); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @Description  查看报事时,更新时间操作 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 11:01 上午 | |||
|      */ | |||
|     @PostMapping("updateviewtime") | |||
|     public Result updateViewTime(@RequestBody UpdateViewTimeFormDTO formDTO){ | |||
|         ValidatorUtils.validateEntity(formDTO, UpdateViewTimeFormDTO.UpdateViewTimeForm.class); | |||
|         resiEventService.updateViewTime(formDTO); | |||
|         return new Result(); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 我要报事-人大代表未读/已读列表 | |||
|      * | |||
|      * @param tokenDto | |||
|      * @param formDTO | |||
|      * @return  com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.MyReportedResultDTO>> | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/4 9:40 | |||
|      */ | |||
|     @PostMapping("mentionlist") | |||
|     public Result<List<UserMentionResultDTO>> mentionList(@LoginUser TokenDto tokenDto, @RequestBody UserMentionFormDTO formDTO){ | |||
|         formDTO.setCustomerId(tokenDto.getCustomerId()); | |||
|         formDTO.setUserId(tokenDto.getUserId()); | |||
|         ValidatorUtils.validateEntity(formDTO,UserMentionFormDTO.AddUserInternalGroup.class); | |||
|         return new Result<List<UserMentionResultDTO>>().ok(resiEventService.mentionList(formDTO)); | |||
|     } | |||
| 
 | |||
| } | |||
| @ -0,0 +1,59 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.controller; | |||
| 
 | |||
| import com.epmet.commons.tools.utils.Result; | |||
| import com.epmet.commons.tools.validator.ValidatorUtils; | |||
| import com.epmet.dto.form.ReplyListFormDTO; | |||
| import com.epmet.dto.result.ReplyListResultDTO; | |||
| import com.epmet.service.ResiEventReplyService; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.PostMapping; | |||
| import org.springframework.web.bind.annotation.RequestBody; | |||
| import org.springframework.web.bind.annotation.RequestMapping; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| 
 | |||
| /** | |||
|  * 事件回复表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @RestController | |||
| @RequestMapping("resieventreply") | |||
| public class ResiEventReplyController { | |||
|      | |||
|     @Autowired | |||
|     private ResiEventReplyService resiEventReplyService; | |||
| 
 | |||
|     /** | |||
|      * @Description  报事详情-回复列表-两端通用 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 11:11 上午 | |||
|      */ | |||
|     @PostMapping("list") | |||
|     public Result<List<ReplyListResultDTO>> replyList(@RequestBody ReplyListFormDTO formDTO){ | |||
|         ValidatorUtils.validateEntity(formDTO, ReplyListFormDTO.ReplyListForm.class); | |||
|         return new Result<List<ReplyListResultDTO>>().ok(resiEventReplyService.replyList(formDTO)); | |||
|     } | |||
| 
 | |||
| } | |||
| @ -0,0 +1,33 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.dao; | |||
| 
 | |||
| import com.epmet.commons.mybatis.dao.BaseDao; | |||
| import com.epmet.entity.ResiEventAttachmentEntity; | |||
| import org.apache.ibatis.annotations.Mapper; | |||
| 
 | |||
| /** | |||
|  * 事件附件表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Mapper | |||
| public interface ResiEventAttachmentDao extends BaseDao<ResiEventAttachmentEntity> { | |||
| 	 | |||
| } | |||
| @ -0,0 +1,57 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.dao; | |||
| 
 | |||
| import com.epmet.commons.mybatis.dao.BaseDao; | |||
| import com.epmet.dto.result.EventListResultDTO; | |||
| import com.epmet.dto.result.MyReportedResultDTO; | |||
| import com.epmet.entity.ResiEventEntity; | |||
| import org.apache.ibatis.annotations.Mapper; | |||
| import org.apache.ibatis.annotations.Param; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 居民报事表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Mapper | |||
| public interface ResiEventDao extends BaseDao<ResiEventEntity> { | |||
| 
 | |||
|     /** | |||
|      * @Description  查询报事列表 | |||
|      * @Param orgId | |||
|      * @Param eventType | |||
|      * @author zxc | |||
|      * @date 2021/8/3 4:21 下午 | |||
|      */ | |||
|     List<EventListResultDTO> eventUnDisposedList(@Param("orgId")String orgId,@Param("eventType")String eventType); | |||
| 
 | |||
|     /** | |||
|      * 居民端我的报事列表查询 | |||
|      *  | |||
|      * @param userId 报事人 | |||
|      * @param statusCondition  未处理:un_read;处理中:processing;已办结:closed_case | |||
|      * @return  java.util.List<com.epmet.dto.result.MyReportedResultDTO>  | |||
|      * @author yinzuomei  | |||
|      * @date 2021/8/3 23:21 | |||
|      */ | |||
|     List<MyReportedResultDTO> queryMyReported(@Param("userId") String userId, @Param("statusCondition")String statusCondition); | |||
| } | |||
| @ -0,0 +1,47 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.dao; | |||
| 
 | |||
| import com.epmet.commons.mybatis.dao.BaseDao; | |||
| import com.epmet.dto.result.UserMentionResultDTO; | |||
| import com.epmet.entity.ResiEventMentionEntity; | |||
| import org.apache.ibatis.annotations.Mapper; | |||
| import org.apache.ibatis.annotations.Param; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 事件被@人表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Mapper | |||
| public interface ResiEventMentionDao extends BaseDao<ResiEventMentionEntity> { | |||
| 
 | |||
|     /** | |||
|      * 人大代表未读、已读列表 | |||
|      * | |||
|      * @param userId | |||
|      * @param readFlag | |||
|      * @return  java.util.List<com.epmet.dto.result.UserMentionResultDTO> | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/4 9:54 | |||
|      */ | |||
|     List<UserMentionResultDTO> selectMentionList(@Param("userId")String userId, @Param("readFlag")String readFlag); | |||
| } | |||
| @ -0,0 +1,33 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.dao; | |||
| 
 | |||
| import com.epmet.commons.mybatis.dao.BaseDao; | |||
| import com.epmet.entity.ResiEventOperationLogEntity; | |||
| import org.apache.ibatis.annotations.Mapper; | |||
| 
 | |||
| /** | |||
|  * 事件操作日志表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Mapper | |||
| public interface ResiEventOperationLogDao extends BaseDao<ResiEventOperationLogEntity> { | |||
| 	 | |||
| } | |||
| @ -0,0 +1,33 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.dao; | |||
| 
 | |||
| import com.epmet.commons.mybatis.dao.BaseDao; | |||
| import com.epmet.entity.ResiEventReplyEntity; | |||
| import org.apache.ibatis.annotations.Mapper; | |||
| 
 | |||
| /** | |||
|  * 事件回复表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Mapper | |||
| public interface ResiEventReplyDao extends BaseDao<ResiEventReplyEntity> { | |||
| 	 | |||
| } | |||
| @ -0,0 +1,33 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.dao; | |||
| 
 | |||
| import com.epmet.commons.mybatis.dao.BaseDao; | |||
| import com.epmet.entity.ResiEventReportOrgEntity; | |||
| import org.apache.ibatis.annotations.Mapper; | |||
| 
 | |||
| /** | |||
|  * 事件相关组织表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Mapper | |||
| public interface ResiEventReportOrgDao extends BaseDao<ResiEventReportOrgEntity> { | |||
| 	 | |||
| } | |||
| @ -0,0 +1,76 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.entity; | |||
| 
 | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| 
 | |||
| import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| 
 | |||
| import java.util.Date; | |||
| 
 | |||
| /** | |||
|  * 事件附件表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Data | |||
| @EqualsAndHashCode(callSuper=false) | |||
| @TableName("resi_event_attachment") | |||
| public class ResiEventAttachmentEntity extends BaseEpmetEntity { | |||
| 
 | |||
| 	private static final long serialVersionUID = 1L; | |||
| 
 | |||
|     /** | |||
|      * 客户ID | |||
|      */ | |||
| 	private String customerId; | |||
| 
 | |||
|     /** | |||
|      * 事件Id,关联resi_event的id | |||
|      */ | |||
| 	private String resiEventId; | |||
| 
 | |||
|     /** | |||
|      * 附件名 | |||
|      */ | |||
| 	private String attachmentName; | |||
| 
 | |||
|     /** | |||
|      * 文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS) | |||
|      */ | |||
| 	private String attachmentFormat; | |||
| 
 | |||
|     /** | |||
|      * 附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc)) | |||
|      */ | |||
| 	private String attachmentType; | |||
| 
 | |||
|     /** | |||
|      * 附件地址 | |||
|      */ | |||
| 	private String attachmentUrl; | |||
| 
 | |||
|     /** | |||
|      * 排序字段 | |||
|      */ | |||
| 	private Integer sort; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,146 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.entity; | |||
| 
 | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| 
 | |||
| import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| 
 | |||
| import java.util.Date; | |||
| 
 | |||
| /** | |||
|  * 居民报事表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Data | |||
| @EqualsAndHashCode(callSuper=false) | |||
| @TableName("resi_event") | |||
| public class ResiEventEntity extends BaseEpmetEntity { | |||
| 
 | |||
| 	private static final long serialVersionUID = 1L; | |||
| 
 | |||
|     /** | |||
|      * 客户ID | |||
|      */ | |||
| 	private String customerId; | |||
| 
 | |||
|     /** | |||
|      * 居民端用户所在网格id | |||
|      */ | |||
| 	private String gridId; | |||
| 
 | |||
|     /** | |||
|      * 居民端用户所在网格的所属组织 | |||
|      */ | |||
| 	private String agencyId; | |||
| 
 | |||
|     /** | |||
|      * 居民端用户所在网格的所有上级组织,包含AGENCY_ID | |||
|      */ | |||
| 	private String pids; | |||
| 
 | |||
|     /** | |||
|      * 报事的人 | |||
|      */ | |||
| 	private String reportUserId; | |||
| 
 | |||
|     /** | |||
|      * 1:党员;0:不是党员;默认0 | |||
|      */ | |||
| 	private Boolean isParty; | |||
| 
 | |||
|     /** | |||
|      * 事件内容 | |||
|      */ | |||
| 	private String eventContent; | |||
| 
 | |||
|     /** | |||
|      * 纬度 | |||
|      */ | |||
| 	private String latitude; | |||
| 
 | |||
|     /** | |||
|      * 经度 | |||
|      */ | |||
| 	private String longitude; | |||
| 
 | |||
|     /** | |||
|      * 地址 | |||
|      */ | |||
| 	private String address; | |||
| 
 | |||
|     /** | |||
|      * 处理中:processing;已办结:closed_case | |||
|      */ | |||
| 	private String status; | |||
| 
 | |||
| 	/** | |||
| 	 * 办结时间 | |||
| 	 */ | |||
| 	private Date closeCaseTime; | |||
| 
 | |||
|     /** | |||
|      * 1:已转项目;0:未转项目;默认0 | |||
|      */ | |||
| 	private Boolean shiftProject; | |||
| 
 | |||
|     /** | |||
|      * 项目id;shift_project=1时,此列有值 | |||
|      */ | |||
| 	private String projectId; | |||
| 
 | |||
|     /** | |||
|      * 1:已撤回;0:未撤回正常展示;默认0 | |||
|      */ | |||
| 	private Boolean recallFlag; | |||
| 
 | |||
|     /** | |||
|      * 撤回时间 | |||
|      */ | |||
| 	private Date recallTime; | |||
| 
 | |||
|     /** | |||
|      * 事件是否被阅读过;1已读;针对报事人待处理列表 | |||
|      */ | |||
| 	private Boolean readFlag; | |||
| 
 | |||
|     /** | |||
|      * 报事人的红点:展示1;不展示:0;人大代表回复,工作人员回复/立项/办结更新为1;  | |||
|      */ | |||
| 	private Boolean redDot; | |||
| 
 | |||
|     /** | |||
|      * 最近一次操作时间(回复、立项、办结更新此列) | |||
|      */ | |||
| 	private Date latestOperatedTime; | |||
| 
 | |||
|     /** | |||
|      * 是否解决:已解决 resolved,未解决 un_solved | |||
|      */ | |||
| 	private String resolveStatus; | |||
| 
 | |||
|     /** | |||
|      * 结案说明可放这。 | |||
|      */ | |||
| 	private String closeRemark; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,83 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.entity; | |||
| 
 | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| 
 | |||
| /** | |||
|  * 事件被@人表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Data | |||
| @EqualsAndHashCode(callSuper=false) | |||
| @TableName("resi_event_mention") | |||
| public class ResiEventMentionEntity extends BaseEpmetEntity { | |||
| 
 | |||
| 	private static final long serialVersionUID = 1L; | |||
| 
 | |||
|     /** | |||
|      * 客户id | |||
|      */ | |||
| 	private String customerId; | |||
| 
 | |||
|     /** | |||
|      * 事件id | |||
|      */ | |||
| 	private String resiEventId; | |||
| 
 | |||
|     /** | |||
|      * 人大代表:npc_user | |||
|      */ | |||
| 	private String userType; | |||
| 
 | |||
|     /** | |||
|      * 居民端用户id | |||
|      */ | |||
| 	private String userId; | |||
| 
 | |||
|     /** | |||
|      * 居民注册网格ID | |||
|      */ | |||
| 	private String gridId; | |||
| 
 | |||
|     /** | |||
|      * 居民所属社区,就是grid_id的所属组织 | |||
|      */ | |||
| 	private String agencyId; | |||
| 
 | |||
|     /** | |||
|      * 居民注册网格的所有上级 | |||
|      */ | |||
| 	private String pids; | |||
| 
 | |||
|     /** | |||
|      * 含义:已读read,未读:un_read;人大代表从未读=>已读,点击查看详情前更新为已读; | |||
|      */ | |||
| 	private String readFlag; | |||
| 
 | |||
|     /** | |||
|      * (1)含义:1:展示红点;0:不展示;(2)注意:发布事件插入数据时为1,(3)何时更新?:报事人回复or工作人员回复、立项、办结更新为1; | |||
|      */ | |||
| 	private Boolean redDot; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,89 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.entity; | |||
| 
 | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| 
 | |||
| import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| 
 | |||
| import java.util.Date; | |||
| 
 | |||
| /** | |||
|  * 事件操作日志表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Data | |||
| @EqualsAndHashCode(callSuper=false) | |||
| @TableName("resi_event_operation_log") | |||
| public class ResiEventOperationLogEntity extends BaseEpmetEntity { | |||
| 
 | |||
| 	private static final long serialVersionUID = 1L; | |||
| 
 | |||
|     /** | |||
|      * 客户id | |||
|      */ | |||
| 	private String customerId; | |||
| 
 | |||
|     /** | |||
|      * 事件id | |||
|      */ | |||
| 	private String resiEventId; | |||
| 
 | |||
|     /** | |||
|      * 用户id | |||
|      */ | |||
| 	private String userId; | |||
| 
 | |||
|     /** | |||
|      * 居民端用户:resi_user;工作人员:staff;报事人:report_user | |||
|      */ | |||
| 	private String userIdentity; | |||
| 
 | |||
|     /** | |||
|      * 1、发布事件:publish; | |||
| 2、撤回事件:recall; | |||
| 3、复:reply; | |||
| 4、立项:shift_project; | |||
| 5、办结:close_case; | |||
| 6、选择是否已解决:choose_resolve; | |||
| 7、查看阅读事件:read:人大代表未读=>已读;工作人员待处理=>处理中; | |||
| 
 | |||
|      */ | |||
| 	private String actionCode; | |||
| 
 | |||
|     /** | |||
|      * 1、发布事件:publish; | |||
| 2、撤回事件:recall; | |||
| 3、复:reply; | |||
| 4、立项:shift_project; | |||
| 5、办结:close_case; | |||
| 6、选择是否已解决:choose_resolve; | |||
| 7、查看阅读事件:read:人大代表未读=>已读;工作人员待处理=>处理中; | |||
|      */ | |||
| 	private String actionDesc; | |||
| 
 | |||
|     /** | |||
|      * 操作时间 | |||
|      */ | |||
| 	private Date operateTime; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,66 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.entity; | |||
| 
 | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| 
 | |||
| import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| 
 | |||
| import java.util.Date; | |||
| 
 | |||
| /** | |||
|  * 事件回复表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Data | |||
| @EqualsAndHashCode(callSuper=false) | |||
| @TableName("resi_event_reply") | |||
| public class ResiEventReplyEntity extends BaseEpmetEntity { | |||
| 
 | |||
| 	private static final long serialVersionUID = 1L; | |||
| 
 | |||
|     /** | |||
|      * 客户ID | |||
|      */ | |||
| 	private String customerId; | |||
| 
 | |||
|     /** | |||
|      * 事件Id,关联resi_event的id | |||
|      */ | |||
| 	private String resiEventId; | |||
| 
 | |||
|     /** | |||
|      * 回复人用户Id | |||
|      */ | |||
| 	private String fromUserId; | |||
| 
 | |||
|     /** | |||
|      * 内容 | |||
|      */ | |||
| 	private String content; | |||
| 
 | |||
|     /** | |||
|      * 报事人:xxx路尹女士;人大:人大代表-张三;组织:组织名:阜新路社区 | |||
|      */ | |||
| 	private String userShowName; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,84 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.entity; | |||
| 
 | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| 
 | |||
| /** | |||
|  * 事件相关组织表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Data | |||
| @EqualsAndHashCode(callSuper=false) | |||
| @TableName("resi_event_report_org") | |||
| public class ResiEventReportOrgEntity extends BaseEpmetEntity { | |||
| 
 | |||
| 	private static final long serialVersionUID = 1L; | |||
| 
 | |||
|     /** | |||
|      * 客户ID | |||
|      */ | |||
| 	private String customerId; | |||
| 
 | |||
|     /** | |||
|      * 事件id | |||
|      */ | |||
| 	private String resiEventId; | |||
| 
 | |||
|     /** | |||
|      * 报给?: | |||
| 网格:grid; | |||
| 社区:community; | |||
| 乡(镇、街道)级:street; | |||
| 区县级: district; | |||
| 市级: city; | |||
| 省级:province。 | |||
|      */ | |||
| 	private String orgType; | |||
| 
 | |||
|     /** | |||
|      * 报给的组织或者网格id | |||
|      */ | |||
| 	private String orgId; | |||
| 
 | |||
|     /** | |||
|      * org_id的上级组织id,org_id是跟组织,此列为0 | |||
|      */ | |||
| 	private String orgPid; | |||
| 
 | |||
|     /** | |||
|      * org_id的所有上级组织id,org_id是跟组织,此列为0 | |||
|      */ | |||
| 	private String orgPids; | |||
| 
 | |||
|     /** | |||
|      * 含义:已读read,未读:un_read;组织下的工作人员从待处理=>处理中,点击查看详情前更新为已读; | |||
|      */ | |||
| 	private String orgRead; | |||
| 
 | |||
|     /** | |||
|      * (1)含义:1:展示红点;0:不展示;(2)注意:发布事件插入数据时为1,(3)何时更新?:人大代表回复or报事人回复or工作人员回复、立项、办结更新为1; | |||
|      */ | |||
| 	private Boolean redDot; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,44 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.service; | |||
| 
 | |||
| import com.epmet.commons.mybatis.service.BaseService; | |||
| import com.epmet.dto.form.ReplyListFormDTO; | |||
| import com.epmet.dto.result.ReplyListResultDTO; | |||
| import com.epmet.entity.ResiEventReplyEntity; | |||
| import org.springframework.web.bind.annotation.RequestBody; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 事件回复表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| public interface ResiEventReplyService extends BaseService<ResiEventReplyEntity> { | |||
| 
 | |||
|     /** | |||
|      * @Description  报事详情-回复列表-两端通用 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 11:11 上午 | |||
|      */ | |||
|     List<ReplyListResultDTO> replyList(ReplyListFormDTO formDTO); | |||
| 
 | |||
| } | |||
| @ -0,0 +1,91 @@ | |||
| package com.epmet.service; | |||
| 
 | |||
| import com.epmet.commons.mybatis.service.BaseService; | |||
| import com.epmet.dto.form.*; | |||
| import com.epmet.dto.result.*; | |||
| import com.epmet.entity.ResiEventEntity; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 居民报事表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| public interface ResiEventService extends BaseService<ResiEventEntity> { | |||
| 
 | |||
|     /** | |||
|      * @Description  群众直报(待处理、处理中、已办结)列表 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 10:53 上午 | |||
|      */ | |||
|     List<EventListResultDTO> eventList(EventListFormDTO formDTO); | |||
| 
 | |||
|     /** | |||
|      * @Description  查看报事时,更新时间操作 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 11:01 上午 | |||
|      */ | |||
|     void updateViewTime(UpdateViewTimeFormDTO formDTO); | |||
| 
 | |||
|     /** | |||
|      * @Description  报事详情-两端通用 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 1:47 下午 | |||
|      */ | |||
|     EventDetailResultDTO eventDetail(EventDetailFormDTO formDTO); | |||
| 
 | |||
|     /** | |||
|      * 我要报事-提交(尹) | |||
|      * | |||
|      * @param formDTO | |||
|      * @return  com.epmet.dto.result.ResiEventResultDTO | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 10:51 | |||
|      */ | |||
|     ResiEventIdDTO report(ResiEventFormDTO formDTO); | |||
| 
 | |||
|     /** | |||
|      * 撤回事件 | |||
|      * | |||
|      * @param formDTO | |||
|      * @return  void | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 13:45 | |||
|      */ | |||
|     void reCall(ReCallEventFormDTO formDTO); | |||
| 
 | |||
|     /** | |||
|      * 选择已解决,未解决 | |||
|      * | |||
|      * @param formDTO | |||
|      * @return  void | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 13:58 | |||
|      */ | |||
|     void chooseResolve(ChooseResolveFormDTO formDTO); | |||
| 
 | |||
|     /** | |||
|      * 我的报事列表查询 | |||
|      * | |||
|      * @param formDTO | |||
|      * @return  java.util.List<com.epmet.dto.result.MyReportedResultDTO> | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 14:28 | |||
|      */ | |||
|     List<MyReportedResultDTO> queryMyReported(MyReportedFormDTO formDTO); | |||
| 
 | |||
|     /** | |||
|      * 我要报事-人大代表未读/已读列表 | |||
|      * | |||
|      * @param formDTO | |||
|      * @return  java.util.List<com.epmet.dto.result.UserMentionResultDTO> | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/4 9:41 | |||
|      */ | |||
|     List<UserMentionResultDTO> mentionList(UserMentionFormDTO formDTO); | |||
| } | |||
| @ -0,0 +1,49 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.service.impl; | |||
| 
 | |||
| import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; | |||
| import com.epmet.dao.ResiEventReplyDao; | |||
| import com.epmet.dto.form.ReplyListFormDTO; | |||
| import com.epmet.dto.result.ReplyListResultDTO; | |||
| import com.epmet.entity.ResiEventReplyEntity; | |||
| import com.epmet.service.ResiEventReplyService; | |||
| import org.springframework.stereotype.Service; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 事件回复表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Service | |||
| public class ResiEventReplyServiceImpl extends BaseServiceImpl<ResiEventReplyDao, ResiEventReplyEntity> implements ResiEventReplyService { | |||
| 
 | |||
|     /** | |||
|      * @Description  报事详情-回复列表-两端通用 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 11:11 上午 | |||
|      */ | |||
|     @Override | |||
|     public List<ReplyListResultDTO> replyList(ReplyListFormDTO formDTO) { | |||
|         return null; | |||
|     } | |||
| } | |||
| @ -0,0 +1,400 @@ | |||
| /** | |||
|  * Copyright 2018 人人开源 https://www.renren.io
 | |||
|  * <p> | |||
|  * This program is free software: you can redistribute it and/or modify | |||
|  * it under the terms of the GNU General Public License as published by | |||
|  * the Free Software Foundation, either version 3 of the License, or | |||
|  * (at your option) any later version. | |||
|  * <p> | |||
|  * This program is distributed in the hope that it will be useful, | |||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
|  * GNU General Public License for more details. | |||
|  * <p> | |||
|  * You should have received a copy of the GNU General Public License | |||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| package com.epmet.service.impl; | |||
| 
 | |||
| import com.alibaba.fastjson.JSON; | |||
| import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; | |||
| import com.epmet.commons.tools.constant.NumConstant; | |||
| import com.epmet.commons.tools.constant.StrConstant; | |||
| import com.epmet.commons.tools.dto.form.FileCommonDTO; | |||
| import com.epmet.commons.tools.exception.EpmetErrorCode; | |||
| import com.epmet.commons.tools.exception.RenException; | |||
| import com.epmet.commons.tools.scan.param.ImgScanParamDTO; | |||
| import com.epmet.commons.tools.scan.param.ImgTaskDTO; | |||
| import com.epmet.commons.tools.scan.param.TextScanParamDTO; | |||
| import com.epmet.commons.tools.scan.param.TextTaskDTO; | |||
| import com.epmet.commons.tools.scan.result.SyncScanResult; | |||
| import com.epmet.commons.tools.utils.ConvertUtils; | |||
| import com.epmet.commons.tools.utils.Result; | |||
| import com.epmet.commons.tools.utils.ScanContentUtils; | |||
| import com.epmet.constant.EventConstant; | |||
| import com.epmet.constant.ResiEventAction; | |||
| import com.epmet.dao.*; | |||
| import com.epmet.dto.form.*; | |||
| import com.epmet.dto.result.*; | |||
| import com.epmet.entity.*; | |||
| import com.epmet.feign.EpmetUserOpenFeignClient; | |||
| import com.epmet.feign.GovOrgOpenFeignClient; | |||
| import com.epmet.service.ResiEventService; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Value; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.util.CollectionUtils; | |||
| 
 | |||
| import java.util.ArrayList; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import java.util.UUID; | |||
| 
 | |||
| /** | |||
|  * 居民报事表 | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2021-08-03 | |||
|  */ | |||
| @Slf4j | |||
| @Service | |||
| public class ResiEventServiceImpl extends BaseServiceImpl<ResiEventDao, ResiEventEntity> implements ResiEventService { | |||
|     @Value("${openapi.scan.server.url}") | |||
|     private String scanApiUrl; | |||
|     @Value("${openapi.scan.method.textSyncScan}") | |||
|     private String textSyncScanMethod; | |||
|     @Value("${openapi.scan.method.imgSyncScan}") | |||
|     private String imgSyncScanMethod; | |||
|     @Autowired | |||
|     private GovOrgOpenFeignClient govOrgOpenFeignClient; | |||
|     @Autowired | |||
|     private EpmetUserOpenFeignClient epmetUserOpenFeignClient; | |||
|     @Autowired | |||
|     private ResiEventAttachmentDao resiEventAttachmentDao; | |||
|     @Autowired | |||
|     private ResiEventReportOrgDao resiEventReportOrgDao; | |||
|     @Autowired | |||
|     private ResiEventMentionDao resiEventMentionDao; | |||
|     @Autowired | |||
|     private ResiEventOperationLogDao resiEventOperationLogDao; | |||
| 
 | |||
|     /** | |||
|      * @Description  群众直报(待处理、处理中、已办结)列表 | |||
|      *   未处理:按照创建时间正序; | |||
|      *   处理中:按照最新操作时间由近到远排序; | |||
|      *   已办结:按照办结时间由近到远排序; | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 10:53 上午 | |||
|      */ | |||
|     @Override | |||
|     public List<EventListResultDTO> eventList(EventListFormDTO formDTO) { | |||
|         List<EventListResultDTO> result = baseDao.eventUnDisposedList(formDTO.getOrgId(), formDTO.getEventType()); | |||
|         if (!CollectionUtils.isEmpty(result)){ | |||
|             return result; | |||
|         } | |||
|         return new ArrayList<>(); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @Description  查看报事时,更新时间操作 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 11:01 上午 | |||
|      */ | |||
|     @Override | |||
|     public void updateViewTime(UpdateViewTimeFormDTO formDTO) { | |||
| 
 | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @Description  报事详情-两端通用 | |||
|      * @Param formDTO | |||
|      * @author zxc | |||
|      * @date 2021/8/3 1:47 下午 | |||
|      */ | |||
|     @Override | |||
|     public EventDetailResultDTO eventDetail(EventDetailFormDTO formDTO) { | |||
|         return null; | |||
|     } | |||
|     /** | |||
|      * 我要报事-提交(尹) | |||
|      * | |||
|      * @param formDTO | |||
|      * @return com.epmet.dto.result.ResiEventResultDTO | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 10:51 | |||
|      */ | |||
|     @Override | |||
|     public ResiEventIdDTO report(ResiEventFormDTO formDTO) { | |||
|         //1、事件内容审核
 | |||
|         //2、图片审核
 | |||
|         this.scanContent(formDTO.getEventContent(), formDTO.getAttachmentList()); | |||
|         //3、查询当前所在网格的信息
 | |||
|         Result<GridInfoResultDTO> gridInfoRes=govOrgOpenFeignClient.queryGridInfo(formDTO.getGridId()); | |||
|         if(!gridInfoRes.success()||null==gridInfoRes.getData()){ | |||
|             throw new RenException("网格信息查询异常"); | |||
|         } | |||
| 
 | |||
|         ResiEventEntity resiEventEntity= ConvertUtils.sourceToTarget(formDTO,ResiEventEntity.class); | |||
|         resiEventEntity.setAgencyId(gridInfoRes.getData().getParentAgencyId()); | |||
|         resiEventEntity.setPids(gridInfoRes.getData().getPids()); | |||
|         resiEventEntity.setReportUserId(formDTO.getUserId()); | |||
|         Result<Boolean> partyRes=epmetUserOpenFeignClient.selectIsPartyMemberByUserId(formDTO.getUserId()); | |||
|         if(!partyRes.success()||null==partyRes.getData()){ | |||
|             throw new RenException("查询用户是否是党员异常"); | |||
|         } | |||
|         resiEventEntity.setIsParty(partyRes.getData()); | |||
|         resiEventEntity.setStatus(EventConstant.EVENT_STATUS_PROCESSING); | |||
|         resiEventEntity.setShiftProject(false); | |||
|         resiEventEntity.setProjectId(StrConstant.EPMETY_STR); | |||
|         resiEventEntity.setRecallFlag(false); | |||
|         resiEventEntity.setReadFlag(false); | |||
|         resiEventEntity.setRedDot(false); | |||
|         resiEventEntity.setLatestOperatedTime(new Date()); | |||
|         resiEventEntity.setCreatedTime(resiEventEntity.getLatestOperatedTime()); | |||
|         resiEventEntity.setUpdatedTime(resiEventEntity.getLatestOperatedTime()); | |||
|         //4、插入主表resi_event
 | |||
|         baseDao.insert(resiEventEntity); | |||
|         //5、插入附件表
 | |||
|         List<ResiEventAttachmentEntity> attachmentEntityList=getAttList(formDTO.getCustomerId(),resiEventEntity.getId(),formDTO.getAttachmentList()); | |||
|         attachmentEntityList.forEach(attachmentEntity->{ | |||
|             resiEventAttachmentDao.insert(attachmentEntity); | |||
|         }); | |||
|         //6、插入组织表
 | |||
|         List<ResiEventReportOrgEntity> orgEntityList=getOrgList(formDTO.getCustomerId(),resiEventEntity.getId(),formDTO.getOrgList()); | |||
|         orgEntityList.forEach(orgEntity->{ | |||
|             resiEventReportOrgDao.insert(orgEntity); | |||
|         }); | |||
|         //7、插入艾特人表
 | |||
|         List<ResiEventMentionEntity> npcList=getNpcList(formDTO.getCustomerId(),resiEventEntity.getId(),formDTO.getNpcUserList()); | |||
|         npcList.forEach(npc->{ | |||
|             resiEventMentionDao.insert(npc); | |||
|         }); | |||
|         //8、插入log日志
 | |||
|         ResiEventOperationLogEntity publishLog=new ResiEventOperationLogEntity(); | |||
|         publishLog.setCustomerId(formDTO.getCustomerId()); | |||
|         publishLog.setResiEventId(resiEventEntity.getId()); | |||
|         publishLog.setUserId(formDTO.getUserId()); | |||
|         publishLog.setUserIdentity(EventConstant.REPORT_USER); | |||
|         publishLog.setActionCode(ResiEventAction.PUBLISH.getCode()); | |||
|         publishLog.setActionDesc(ResiEventAction.PUBLISH.getDesc()); | |||
|         publishLog.setOperateTime(resiEventEntity.getCreatedTime()); | |||
|         resiEventOperationLogDao.insert(publishLog); | |||
|         //9、返回事件id
 | |||
|         ResiEventIdDTO resiEventIdDTO=new ResiEventIdDTO(); | |||
|         resiEventIdDTO.setResiEventId(resiEventEntity.getId()); | |||
|         return resiEventIdDTO; | |||
|     } | |||
| 
 | |||
|     private List<ResiEventMentionEntity> getNpcList(String customerId, String resiEventId, List<MentionUserFormDTO> npcUserList) { | |||
|         List<ResiEventMentionEntity> list=new ArrayList<>(); | |||
|         npcUserList.forEach(npc->{ | |||
|             ResiEventMentionEntity mentionEntity=new ResiEventMentionEntity(); | |||
|             mentionEntity.setCustomerId(customerId); | |||
|             mentionEntity.setResiEventId(resiEventId); | |||
|             mentionEntity.setUserType(EventConstant.NPC_USER); | |||
|             mentionEntity.setUserId(npc.getUserId()); | |||
|             mentionEntity.setGridId(npc.getGridId()); | |||
|             mentionEntity.setAgencyId(npc.getAgencyId()); | |||
|             mentionEntity.setPids(npc.getPids()); | |||
|             mentionEntity.setReadFlag(EventConstant.UN_READ); | |||
|             mentionEntity.setRedDot(true); | |||
|             list.add(mentionEntity); | |||
|         }); | |||
|         return list; | |||
|     } | |||
| 
 | |||
|     private List<ResiEventReportOrgEntity> getOrgList(String customerId, String resiEventId, List<ReportOrgFormDTO> orgList) { | |||
|         List<ResiEventReportOrgEntity> list=new ArrayList<>(); | |||
|         orgList.forEach(org->{ | |||
|             ResiEventReportOrgEntity entity=ConvertUtils.sourceToTarget(org,ResiEventReportOrgEntity.class); | |||
|             entity.setCustomerId(customerId); | |||
|             entity.setResiEventId(resiEventId); | |||
|             entity.setOrgType(org.getOrgLevel()); | |||
|             //默认是未读
 | |||
|             entity.setOrgRead(EventConstant.UN_READ); | |||
|             entity.setRedDot(true); | |||
|             list.add(entity); | |||
|         }); | |||
|         return list; | |||
|     } | |||
| 
 | |||
|     private List<ResiEventAttachmentEntity> getAttList(String customerId,String resiEventId, List<FileCommonDTO> attachmentList) { | |||
|         List<ResiEventAttachmentEntity> list=new ArrayList<>(); | |||
|         int sort= NumConstant.ONE; | |||
|         for(FileCommonDTO img:attachmentList){ | |||
|             ResiEventAttachmentEntity entity=new ResiEventAttachmentEntity(); | |||
|             entity.setCustomerId(customerId); | |||
|             entity.setResiEventId(resiEventId); | |||
|             entity.setAttachmentName(img.getName()); | |||
|             entity.setAttachmentFormat(img.getFormat()); | |||
|             entity.setAttachmentType(img.getType()); | |||
|             entity.setAttachmentUrl(img.getUrl()); | |||
|             entity.setSort(sort); | |||
|             sort++; | |||
|             list.add(entity); | |||
|         } | |||
|         return list; | |||
|     } | |||
| 
 | |||
|     private void scanContent(String eventContent, List<FileCommonDTO> attachmentList) { | |||
|         //事件内容
 | |||
|         if (StringUtils.isNotBlank(eventContent)) { | |||
|             TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); | |||
|             TextTaskDTO taskDTO = new TextTaskDTO(); | |||
|             taskDTO.setContent(eventContent); | |||
|             taskDTO.setDataId(UUID.randomUUID().toString().replace("-", "")); | |||
|             textScanParamDTO.getTasks().add(taskDTO); | |||
|             Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); | |||
|             if (!textSyncScanResult.success()) { | |||
|                 throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); | |||
|             } else { | |||
|                 if (!textSyncScanResult.getData().isAllPass()) { | |||
|                     throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode(), EpmetErrorCode.TEXT_SCAN_FAILED.getMsg()); | |||
|                 } | |||
|             } | |||
|         } | |||
|         List<String> imgList=new ArrayList<>(); | |||
|         for(FileCommonDTO fileCommonDTO:attachmentList){ | |||
|             if("image".equals(fileCommonDTO.getType())){ | |||
|                 imgList.add(fileCommonDTO.getUrl()); | |||
|             } | |||
|         } | |||
|         //事件图片
 | |||
|         if (!CollectionUtils.isEmpty(imgList)) { | |||
|             ImgScanParamDTO imgScanParamDTO = new ImgScanParamDTO(); | |||
|             imgList.forEach(imgUrl -> { | |||
|                 ImgTaskDTO task = new ImgTaskDTO(); | |||
|                 task.setDataId(UUID.randomUUID().toString().replace("-", "")); | |||
|                 task.setUrl(imgUrl); | |||
|                 imgScanParamDTO.getTasks().add(task); | |||
|             }); | |||
|             Result<SyncScanResult> imgScanResult = ScanContentUtils.imgSyncScan(scanApiUrl.concat(imgSyncScanMethod), imgScanParamDTO); | |||
|             if (!imgScanResult.success()) { | |||
|                 throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); | |||
|             } else { | |||
|                 if (!imgScanResult.getData().isAllPass()) { | |||
|                     throw new RenException(EpmetErrorCode.IMG_SCAN_FAILED.getCode(), EpmetErrorCode.IMG_SCAN_FAILED.getMsg()); | |||
|                 } | |||
|             } | |||
|         } | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 撤回事件 | |||
|      * | |||
|      * 需求描述:未处理状态中可撤回上报事件,撤回后不在展示列表内、@的人大代表或组织已读后按钮消失 | |||
|      * @param formDTO | |||
|      * @return void | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 13:45 | |||
|      */ | |||
|     @Override | |||
|     public void reCall(ReCallEventFormDTO formDTO) { | |||
|         ResiEventEntity resiEventEntity=baseDao.selectById(formDTO.getResiEventId()); | |||
|         if(null==resiEventEntity){ | |||
|             throw new RenException(String.format("根据事件id没有找到记录",formDTO.getResiEventId())); | |||
|         } | |||
|         // 我自己的发布的才可以删除
 | |||
|         if(!formDTO.getUserId().equals(resiEventEntity.getReportUserId())){ | |||
|             log.warn("撤回事件入参:"+JSON.toJSONString(formDTO)); | |||
|             throw new RenException(EpmetErrorCode.RESI_EVENT_NOT_MY_REPORTED.getCode(),EpmetErrorCode.RESI_EVENT_NOT_MY_REPORTED.getMsg()); | |||
|         } | |||
|         // 没有人看到过,才可以删除
 | |||
|         if(resiEventEntity.getReadFlag()){ | |||
|             throw new RenException(EpmetErrorCode.RESI_EVENT_READ.getCode(),EpmetErrorCode.RESI_EVENT_READ.getMsg()); | |||
|         } | |||
|         resiEventEntity.setLatestOperatedTime(new Date()); | |||
|         resiEventEntity.setRecallFlag(true); | |||
|         resiEventEntity.setRecallTime(resiEventEntity.getLatestOperatedTime()); | |||
|         //1、更新主表标记已撤回
 | |||
|         baseDao.updateById(resiEventEntity); | |||
|         //2、插入log日志
 | |||
|         ResiEventOperationLogEntity reCallLog=new ResiEventOperationLogEntity(); | |||
|         reCallLog.setCustomerId(formDTO.getCustomerId()); | |||
|         reCallLog.setResiEventId(resiEventEntity.getId()); | |||
|         reCallLog.setUserId(formDTO.getUserId()); | |||
|         reCallLog.setUserIdentity(EventConstant.REPORT_USER); | |||
|         reCallLog.setActionCode(ResiEventAction.RECALL.getCode()); | |||
|         reCallLog.setActionDesc(ResiEventAction.RECALL.getDesc()); | |||
|         reCallLog.setOperateTime(resiEventEntity.getLatestOperatedTime()); | |||
|         resiEventOperationLogDao.insert(reCallLog); | |||
| 
 | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 选择已解决,未解决 | |||
|      * | |||
|      * @param formDTO | |||
|      * @return void | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 13:58 | |||
|      */ | |||
|     @Override | |||
|     public void chooseResolve(ChooseResolveFormDTO formDTO) { | |||
|         ResiEventEntity resiEventEntity=baseDao.selectById(formDTO.getResiEventId()); | |||
|         if(null==resiEventEntity){ | |||
|             throw new RenException(String.format("根据事件id没有找到记录",formDTO.getResiEventId())); | |||
|         } | |||
|         // 我自己的发布的才可以
 | |||
|         if(!formDTO.getUserId().equals(resiEventEntity.getReportUserId())){ | |||
|             throw new RenException(EpmetErrorCode.RESI_EVENT_NOT_MY_REPORTED.getCode(),EpmetErrorCode.RESI_EVENT_NOT_MY_REPORTED.getMsg()); | |||
|         } | |||
|         if(!EventConstant.EVENT_STATUS_CLOSED_CASE.equals(resiEventEntity.getStatus())){ | |||
|             throw new RenException("事件办结后,才可以选择是否解决,当前状态为:"+resiEventEntity.getStatus()); | |||
|         } | |||
|         resiEventEntity.setResolveStatus(formDTO.getResolveStatus()); | |||
|         resiEventEntity.setUpdatedTime(new Date()); | |||
|         baseDao.updateById(resiEventEntity); | |||
|         //2、插入log日志
 | |||
|         ResiEventOperationLogEntity reCallLog=new ResiEventOperationLogEntity(); | |||
|         reCallLog.setCustomerId(formDTO.getCustomerId()); | |||
|         reCallLog.setResiEventId(resiEventEntity.getId()); | |||
|         reCallLog.setUserId(formDTO.getUserId()); | |||
|         reCallLog.setUserIdentity(EventConstant.REPORT_USER); | |||
|         reCallLog.setActionCode(ResiEventAction.CHOOSE_RESOLVE.getCode()); | |||
|         reCallLog.setActionDesc(ResiEventAction.CHOOSE_RESOLVE.getDesc()); | |||
|         reCallLog.setOperateTime(resiEventEntity.getUpdatedTime()); | |||
|         resiEventOperationLogDao.insert(reCallLog); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 我的报事列表查询 | |||
|      * | |||
|      * @param formDTO | |||
|      * @return java.util.List<com.epmet.dto.result.MyReportedResultDTO> | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/3 14:28 | |||
|      */ | |||
|     @Override | |||
|     public List<MyReportedResultDTO> queryMyReported(MyReportedFormDTO formDTO) { | |||
|         PageInfo<MyReportedResultDTO> result = PageHelper.startPage(formDTO.getPageNo(), | |||
|                 formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.queryMyReported(formDTO.getUserId(), | |||
|                     formDTO.getStatusCondition())); | |||
|         return result.getList(); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * 我要报事-人大代表未读/已读列表 | |||
|      * | |||
|      * @param formDTO | |||
|      * @return java.util.List<com.epmet.dto.result.UserMentionResultDTO> | |||
|      * @author yinzuomei | |||
|      * @date 2021/8/4 9:41 | |||
|      */ | |||
|     @Override | |||
|     public List<UserMentionResultDTO> mentionList(UserMentionFormDTO formDTO) { | |||
|         PageInfo<UserMentionResultDTO> result = PageHelper.startPage(formDTO.getPageNo(), | |||
|                 formDTO.getPageSize()).doSelectPageInfo(() -> resiEventMentionDao.selectMentionList(formDTO.getUserId(), | |||
|                 formDTO.getReadFlag())); | |||
|         return result.getList(); | |||
|     } | |||
| 
 | |||
| 
 | |||
| } | |||
| @ -0,0 +1,127 @@ | |||
| CREATE TABLE `resi_event` ( | |||
|   `ID` varchar(64) NOT NULL COMMENT '主键,事件id', | |||
|   `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', | |||
|   `GRID_ID` varchar(64) NOT NULL COMMENT '居民端用户所在网格id', | |||
|   `AGENCY_ID` varchar(64) NOT NULL COMMENT '居民端用户所在网格的所属组织', | |||
|   `PIDS` varchar(255) NOT NULL COMMENT '居民端用户所在网格的所有上级组织,包含AGENCY_ID', | |||
|   `REPORT_USER_ID` varchar(64) NOT NULL COMMENT '报事的人', | |||
|   `IS_PARTY` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:党员;0:不是党员;默认0', | |||
|   `EVENT_CONTENT` varchar(1024) NOT NULL COMMENT '事件内容', | |||
|   `LATITUDE` varchar(32) DEFAULT NULL COMMENT '纬度', | |||
|   `LONGITUDE` varchar(32) DEFAULT NULL COMMENT '经度', | |||
|   `ADDRESS` varchar(255) NOT NULL COMMENT '地址', | |||
|   `STATUS` varchar(32) NOT NULL COMMENT '处理中:processing;已办结:closed_case', | |||
|   `close_case_time` datetime DEFAULT NULL COMMENT '办结时间', | |||
|   `SHIFT_PROJECT` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:已转项目;0:未转项目;默认0', | |||
|   `PROJECT_ID` varchar(64) DEFAULT NULL COMMENT '项目id;shift_project=1时,此列有值', | |||
|   `RECALL_FLAG` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:已撤回;0:未撤回正常展示;默认0', | |||
|   `RECALL_TIME` datetime DEFAULT NULL COMMENT '撤回时间', | |||
|   `READ_FLAG` tinyint(1) NOT NULL DEFAULT '0' COMMENT '事件是否被阅读过;1已读;针对报事人待处理列表', | |||
|   `RED_DOT` tinyint(1) NOT NULL DEFAULT '0' COMMENT '报事人的红点:展示1;不展示:0;人大代表回复,工作人员回复/立项/办结更新为1; ', | |||
|   `LATEST_OPERATED_TIME` datetime NOT NULL COMMENT '最近一次操作时间(回复、立项、办结更新此列)', | |||
|   `RESOLVE_STATUS` varchar(32) DEFAULT NULL COMMENT '是否解决:已解决 resolved,未解决 un_solved', | |||
|   `CLOSE_REMARK` varchar(255) DEFAULT NULL COMMENT '结案说明可放这。', | |||
|   `DEL_FLAG` char(1) NOT NULL COMMENT '删除标识:0.未删除 1.已删除', | |||
|   `REVISION` int(11) NOT NULL COMMENT '乐观锁', | |||
|   `CREATED_BY` varchar(64) NOT NULL COMMENT '创建人', | |||
|   `CREATED_TIME` datetime NOT NULL COMMENT '展示红点:visible;隐藏:invisible;人大回复、工作人员回复/立项更新为visible; 插入数据默认不展示', | |||
|   `UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人', | |||
|   `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', | |||
|   PRIMARY KEY (`ID`) USING BTREE | |||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='居民报事表'; | |||
| 
 | |||
| CREATE TABLE `resi_event_attachment` ( | |||
|   `ID` varchar(64) NOT NULL COMMENT '主键', | |||
|   `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', | |||
|   `RESI_EVENT_ID` varchar(64) NOT NULL COMMENT '事件Id,关联resi_event的id', | |||
|   `ATTACHMENT_NAME` varchar(64) NOT NULL COMMENT '附件名', | |||
|   `ATTACHMENT_FORMAT` varchar(64) NOT NULL COMMENT '文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS)', | |||
|   `ATTACHMENT_TYPE` varchar(64) NOT NULL COMMENT '附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc))', | |||
|   `ATTACHMENT_URL` varchar(255) NOT NULL COMMENT '附件地址', | |||
|   `SORT` int(1) NOT NULL COMMENT '排序字段', | |||
|   `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除', | |||
|   `REVISION` int(11) NOT NULL COMMENT '乐观锁', | |||
|   `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', | |||
|   `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', | |||
|   `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', | |||
|   `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', | |||
|   PRIMARY KEY (`ID`) USING BTREE | |||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='事件附件表'; | |||
| 
 | |||
| 
 | |||
| CREATE TABLE `resi_event_mention` ( | |||
|   `ID` varchar(64) NOT NULL COMMENT '主键', | |||
|   `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id', | |||
|   `RESI_EVENT_ID` varchar(64) NOT NULL COMMENT '事件id', | |||
|   `USER_TYPE` varchar(32) NOT NULL COMMENT '人大代表:npc_user', | |||
|   `USER_ID` varchar(64) NOT NULL COMMENT '居民端用户id', | |||
|   `GRID_ID` varchar(64) NOT NULL COMMENT '居民注册网格ID', | |||
|   `AGENCY_ID` varchar(64) NOT NULL COMMENT '居民所属社区,就是grid_id的所属组织', | |||
|   `PIDS` varchar(255) NOT NULL COMMENT '居民注册网格的所有上级', | |||
|   `READ_FLAG` varchar(10) NOT NULL DEFAULT 'un_read' COMMENT '含义:已读read,未读:un_read;人大代表从未读=>已读,点击查看详情前更新为已读;', | |||
|   `RED_DOT` tinyint(1) NOT NULL DEFAULT '1' COMMENT '(1)含义:1:展示红点;0:不展示;(2)注意:发布事件插入数据时为1,(3)何时更新?:报事人回复or工作人员回复、立项、办结更新为1;', | |||
|   `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 1删除;0未删除', | |||
|   `REVISION` int(11) NOT NULL COMMENT '乐观锁', | |||
|   `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', | |||
|   `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', | |||
|   `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', | |||
|   `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', | |||
|   PRIMARY KEY (`ID`) USING BTREE | |||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='事件被@人表'; | |||
| 
 | |||
| 
 | |||
| CREATE TABLE `resi_event_report_org` ( | |||
|   `ID` varchar(64) NOT NULL COMMENT '主键', | |||
|   `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', | |||
|   `RESI_EVENT_ID` varchar(64) NOT NULL COMMENT '事件id', | |||
|   `ORG_TYPE` varchar(32) NOT NULL COMMENT '报给?:\r\n网格:grid;\r\n社区:community;\r\n乡(镇、街道)级:street;\r\n区县级: district;\r\n市级: city;\r\n省级:province。', | |||
|   `ORG_ID` varchar(64) NOT NULL COMMENT '报给的组织或者网格id', | |||
|   `ORG_PID` varchar(64) NOT NULL COMMENT 'org_id的上级组织id,org_id是跟组织,此列为0', | |||
|   `ORG_PIDS` varchar(255) NOT NULL COMMENT 'org_id的所有上级组织id,org_id是跟组织,此列为0', | |||
|   `ORG_READ` varchar(10) NOT NULL DEFAULT 'un_read' COMMENT '含义:已读read,未读:un_read;组织下的工作人员从待处理=>处理中,点击查看详情前更新为已读;', | |||
|   `RED_DOT` tinyint(1) NOT NULL DEFAULT '1' COMMENT '(1)含义:1:展示红点;0:不展示;(2)注意:发布事件插入数据时为1,(3)何时更新?:人大代表回复or报事人回复or工作人员回复、立项、办结更新为1;', | |||
|   `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 1删除;0未删除', | |||
|   `REVISION` int(11) NOT NULL COMMENT '乐观锁', | |||
|   `CREATED_BY` varchar(64) NOT NULL COMMENT '创建人', | |||
|   `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', | |||
|   `UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人', | |||
|   `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', | |||
|   PRIMARY KEY (`ID`) | |||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='事件相关组织表'; | |||
| 
 | |||
| 
 | |||
| 
 | |||
| CREATE TABLE `resi_event_reply` ( | |||
|   `ID` varchar(64) NOT NULL COMMENT '主键', | |||
|   `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', | |||
|   `RESI_EVENT_ID` varchar(64) NOT NULL COMMENT '事件Id,关联resi_event的id', | |||
|   `FROM_USER_ID` varchar(64) NOT NULL COMMENT '回复人用户Id', | |||
|   `CONTENT` varchar(255) NOT NULL COMMENT '内容', | |||
|   `USER_SHOW_NAME` varchar(64) NOT NULL COMMENT '报事人:xxx路尹女士;人大:人大代表-张三;组织:组织名:阜新路社区', | |||
|   `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除', | |||
|   `REVISION` int(11) NOT NULL COMMENT '乐观锁', | |||
|   `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', | |||
|   `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', | |||
|   `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', | |||
|   `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', | |||
|   PRIMARY KEY (`ID`) USING BTREE | |||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='事件回复表'; | |||
| 
 | |||
| 
 | |||
| CREATE TABLE `resi_event_operation_log` ( | |||
|   `ID` varchar(64) NOT NULL COMMENT '主键', | |||
|   `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id', | |||
|   `RESI_EVENT_ID` varchar(64) NOT NULL COMMENT '事件id', | |||
|   `USER_ID` varchar(64) NOT NULL COMMENT '用户id', | |||
|   `USER_IDENTITY` varchar(32) NOT NULL COMMENT '居民端用户:resi_user;工作人员:staff;报事人:report_user', | |||
|   `ACTION_CODE` varchar(32) NOT NULL COMMENT '1、发布事件:publish;\r\n2、撤回事件:recall;\r\n3、复:reply;\r\n4、立项:shift_project;\r\n5、办结:close_case;\r\n6、选择是否已解决:choose_resolve;\r\n7、查看阅读事件:read:人大代表未读=>已读;工作人员待处理=>处理中;\r\n', | |||
|   `ACTION_DESC` varchar(32) NOT NULL COMMENT '1、发布事件:publish;\r\n2、撤回事件:recall;\r\n3、复:reply;\r\n4、立项:shift_project;\r\n5、办结:close_case;\r\n6、选择是否已解决:choose_resolve;\r\n7、查看阅读事件:read:人大代表未读=>已读;工作人员待处理=>处理中;', | |||
|   `OPERATE_TIME` datetime NOT NULL COMMENT '操作时间', | |||
|   `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 1删除;0未删除', | |||
|   `REVISION` int(11) NOT NULL COMMENT '乐观锁', | |||
|   `CREATED_BY` varchar(64) NOT NULL COMMENT '创建人', | |||
|   `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', | |||
|   `UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人', | |||
|   `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', | |||
|   PRIMARY KEY (`ID`) USING BTREE | |||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='事件操作日志表'; | |||
| @ -0,0 +1,8 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| 
 | |||
| <mapper namespace="com.epmet.dao.ResiEventAttachmentDao"> | |||
| 
 | |||
| 
 | |||
| 
 | |||
| </mapper> | |||
| @ -0,0 +1,90 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| 
 | |||
| <mapper namespace="com.epmet.dao.ResiEventDao"> | |||
| 
 | |||
|     <!-- 查询报事列表 --> | |||
|     <resultMap id="eventUnDisposedListMap" type="com.epmet.dto.result.EventListResultDTO"> | |||
|         <result property="eventContent" column="eventContent"/> | |||
|         <result property="eventId" column="eventId"/> | |||
|         <result property="eventTime" column="eventTime"/> | |||
|         <result property="isProject" column="isProject"/> | |||
|         <result property="redDot" column="redDot"/> | |||
|         <collection property="eventImgs" ofType="java.lang.String"> | |||
|             <result column="img"/> | |||
|         </collection> | |||
|     </resultMap> | |||
|     <select id="eventUnDisposedList" resultMap="eventUnDisposedListMap"> | |||
|         SELECT IFNULL(rea.ATTACHMENT_URL,'') AS img,t.* FROM | |||
|         (SELECT | |||
|         re.EVENT_CONTENT AS eventContent, | |||
|         IFNULL(DATE_FORMAT(re.CREATED_TIME,'%Y-%m-%d %H:%i:%s'),'') AS eventTime, | |||
|         re.ID AS eventId, | |||
|         (CASE WHEN re.SHIFT_PROJECT = 1 THEN TRUE ELSE FALSE END) AS isProject, | |||
|         (CASE WHEN ro.RED_DOT = 1 THEN TRUE ELSE FALSE END) AS redDot | |||
|         FROM resi_event_report_org ro | |||
|         INNER JOIN resi_event re ON (ro.RESI_EVENT_ID = re.ID AND re.DEL_FLAG = '0') | |||
|         AND ro.DEL_FLAG = '0' | |||
|         <if test='eventType == "undisposed" '> | |||
|             AND ro.ORG_READ = 'un_read' | |||
|             ORDER BY re.CREATED_TIME | |||
|         </if> | |||
|         <if test='eventType == "processed" '> | |||
|             AND ro.ORG_READ = 'read' | |||
|             AND re.`STATUS` = 'processing' | |||
|             ORDER BY re.LATEST_OPERATED_TIME | |||
|         </if> | |||
|         <if test='eventType == "transferred" '> | |||
|             AND ro.ORG_READ = 'read' | |||
|             AND re.`STATUS` = 'closed_case' | |||
|             ORDER BY re.CLOSE_CASE_TIME | |||
|         </if> | |||
|         )t | |||
|         LEFT JOIN resi_event_attachment rea ON (rea.RESI_EVENT_ID = t.eventId AND rea.DEL_FLAG = '0' AND rea.ATTACHMENT_TYPE = 'image' AND (rea.SORT = 0 OR rea.SORT = 1 OR rea.SORT = 2)) | |||
|     </select> | |||
| 
 | |||
| 
 | |||
|     <resultMap id="MyReportedResultDTOMap" type="com.epmet.dto.result.MyReportedResultDTO"> | |||
|         <id property="resiEventId" column="id"/> | |||
|         <result property="eventContent" column="EVENT_CONTENT"/> | |||
|         <result property="redDot" column="RED_DOT" /> | |||
|         <result property="status" column="STATUS" /> | |||
|         <result property="shiftProject" column="SHIFT_PROJECT" /> | |||
|         <result property="showTime" column="LATEST_OPERATED_TIME" /> | |||
|         <collection property="imgList" ofType="java.lang.String"> | |||
|             <constructor> | |||
|                 <arg column="img_url"/> | |||
|             </constructor> | |||
|         </collection> | |||
|     </resultMap> | |||
| 
 | |||
|     <select id="queryMyReported" parameterType="map" resultMap="MyReportedResultDTOMap"> | |||
|         select | |||
|             re.id, | |||
|             re.EVENT_CONTENT, | |||
|             ( | |||
|             case when #{statusCondition} ='un_read' then '0' | |||
|             else re.RED_DOT | |||
|             end | |||
|             )as RED_DOT, | |||
|             re.`STATUS`, | |||
|             re.SHIFT_PROJECT, | |||
|             re.LATEST_OPERATED_TIME, | |||
|             rea.ATTACHMENT_URL as img_url | |||
|         from resi_event re | |||
|         left join resi_event_attachment rea | |||
|              on(re.id=rea.RESI_EVENT_ID | |||
|                 and rea.DEL_FLAG='0' | |||
|                 and rea.ATTACHMENT_TYPE='image') | |||
|         where re.DEL_FLAG='0' | |||
|             and re.RECALL_FLAG='0' | |||
|             and re.REPORT_USER_ID=#{userId} | |||
|             <if test='statusCondition == "un_read" '> | |||
|                 and re.READ_FLAG='0' | |||
|             </if> | |||
|             <if test='statusCondition != "un_read" '> | |||
|                 and re.`STATUS`=#{statusCondition} | |||
|             </if> | |||
|             order by re.LATEST_OPERATED_TIME desc | |||
|     </select> | |||
| </mapper> | |||
| @ -0,0 +1,57 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| 
 | |||
| <mapper namespace="com.epmet.dao.ResiEventMentionDao"> | |||
| 
 | |||
|     <resultMap id="UserMentionResultDTOMap" type="com.epmet.dto.result.UserMentionResultDTO"> | |||
|         <id property="resiEventId" column="RESI_EVENT_ID"/> | |||
|         <result property="eventContent" column="EVENT_CONTENT"/> | |||
|         <result property="redDot" column="RED_DOT" /> | |||
|         <result property="status" column="STATUS" /> | |||
|         <result property="shiftProject" column="SHIFT_PROJECT" /> | |||
|         <result property="showTime" column="LATEST_OPERATED_TIME" /> | |||
|         <collection property="imgList" ofType="java.lang.String"> | |||
|             <constructor> | |||
|                 <arg column="img_url"/> | |||
|             </constructor> | |||
|         </collection> | |||
|     </resultMap> | |||
| 
 | |||
|     <select id="selectMentionList" parameterType="map" resultMap="UserMentionResultDTOMap"> | |||
|         SELECT | |||
|             rem.RESI_EVENT_ID, | |||
|             re.EVENT_CONTENT, | |||
|             ( | |||
|             case when #{readFlag} ='un_read' then '0' | |||
|             else rem.RED_DOT | |||
|             end | |||
|             )as RED_DOT, | |||
|             re.`STATUS`, | |||
|             re.SHIFT_PROJECT, | |||
|             re.LATEST_OPERATED_TIME, | |||
|             rea.ATTACHMENT_URL as img_url | |||
|         FROM | |||
|             resi_event_mention rem | |||
|             LEFT JOIN resi_event re | |||
|             ON ( rem.RESI_EVENT_ID = re.id ) | |||
|             LEFT JOIN resi_event_attachment rea | |||
|                 ON ( re.id = rea.RESI_EVENT_ID | |||
|                     AND rea.DEL_FLAG = '0' | |||
|                     AND rea.ATTACHMENT_TYPE = 'image') | |||
|         WHERE | |||
|             rem.DEL_FLAG = '0' | |||
|             AND re.DEL_FLAG = '0' | |||
|             AND re.RECALL_FLAG = '0' | |||
|             AND rem.USER_ID = #{userId} | |||
|             AND rem.READ_FLAG =#{readFlag} | |||
|         <if test='readFlag == "un_read" '> | |||
|             ORDER BY | |||
|             re.CREATED_TIME ASC | |||
|         </if> | |||
|         <if test='readFlag == "read" '> | |||
|             ORDER BY | |||
|             re.LATEST_OPERATED_TIME DESC | |||
|         </if> | |||
|     </select> | |||
| 
 | |||
| </mapper> | |||
| @ -0,0 +1,8 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| 
 | |||
| <mapper namespace="com.epmet.dao.ResiEventOperationLogDao"> | |||
| 
 | |||
| 
 | |||
| 
 | |||
| </mapper> | |||
| @ -0,0 +1,8 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| 
 | |||
| <mapper namespace="com.epmet.dao.ResiEventReplyDao"> | |||
| 
 | |||
| 
 | |||
| 
 | |||
| </mapper> | |||
| @ -0,0 +1,8 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| 
 | |||
| <mapper namespace="com.epmet.dao.ResiEventReportOrgDao"> | |||
| 
 | |||
| 
 | |||
| 
 | |||
| </mapper> | |||
| @ -0,0 +1,13 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| /** | |||
|  * @Description 我要报事人大代表列表 | |||
|  * @author wxz | |||
|  * @date 2021.08.03 09:16:59 | |||
| */ | |||
| @Data | |||
| public class ResiEventNpcListFormDTO { | |||
|     private String gridId; | |||
| } | |||
| @ -0,0 +1,18 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| 
 | |||
| /** | |||
|  * @Description 群众直报-上报目标级别查询 | |||
|  * @author wxz | |||
|  * @date 2021.08.03 13:47:23 | |||
| */ | |||
| @Data | |||
| public class ResiEventTargetLevelFormDTO { | |||
| 
 | |||
|     @NotBlank(message = "网格ID不能为空") | |||
|     private String gridId; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,30 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import lombok.AllArgsConstructor; | |||
| import lombok.Data; | |||
| import lombok.NoArgsConstructor; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| 
 | |||
| /** | |||
|  * @Description 我要报事-人大代表列表 | |||
|  * @author wxz | |||
|  * @date 2021.08.03 09:12:57 | |||
| */ | |||
| @Data | |||
| @AllArgsConstructor | |||
| @NoArgsConstructor | |||
| public class ResiEventNpcResultDTO { | |||
| 
 | |||
|     private String userId; | |||
| 
 | |||
|     private String gridId; | |||
| 
 | |||
|     private String displayName; | |||
| 
 | |||
|     private String headImgUrl; | |||
| 
 | |||
|     private String agencyId; | |||
| 
 | |||
|     private String pids; | |||
| } | |||
| @ -0,0 +1,31 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import lombok.AllArgsConstructor; | |||
| import lombok.Data; | |||
| import lombok.NoArgsConstructor; | |||
| 
 | |||
| /** | |||
|  * @Description 群众直报目标层级Result | |||
|  * @author wxz | |||
|  * @date 2021.08.03 13:43:58 | |||
| */ | |||
| @Data | |||
| @NoArgsConstructor | |||
| @AllArgsConstructor | |||
| public class ResiEventTargetLevelResultDTO implements Comparable { | |||
| 
 | |||
|     private String orgLevel; | |||
|     private String levelName; | |||
|     private String orgId; | |||
|     private String orgPid; | |||
|     private String orgPids; | |||
| 
 | |||
|     //排序索引,用于排序
 | |||
|     private Integer index; | |||
| 
 | |||
|     @Override | |||
|     public int compareTo(Object o) { | |||
|         ResiEventTargetLevelResultDTO df = (ResiEventTargetLevelResultDTO) o; | |||
|         return this.index.compareTo(df.getIndex()); | |||
|     } | |||
| } | |||
| @ -0,0 +1,68 @@ | |||
| package com.epmet.controller; | |||
| 
 | |||
| import com.epmet.commons.tools.utils.Result; | |||
| import com.epmet.commons.tools.validator.ValidatorUtils; | |||
| import com.epmet.dto.form.ResiEventNpcListFormDTO; | |||
| import com.epmet.dto.form.ResiEventTargetLevelFormDTO; | |||
| import com.epmet.dto.result.ResiEventNpcResultDTO; | |||
| import com.epmet.dto.result.ResiEventTargetLevelResultDTO; | |||
| import com.epmet.service.ResiEventService; | |||
| 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 javax.validation.constraints.NotBlank; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.TreeSet; | |||
| 
 | |||
| /** | |||
|  * @author wxz | |||
|  * @Description 群众直报/报事controller | |||
|  * @date 2021.08.02 09:58:40 | |||
|  */ | |||
| @RestController | |||
| @RequestMapping("resi-event") | |||
| public class ResiEventController { | |||
| 
 | |||
|     @Autowired | |||
|     private ResiEventService resiEventService; | |||
| 
 | |||
|     /** | |||
|      * @return | |||
|      * @Description 查询人大代表列表 | |||
|      * @author wxz | |||
|      * @date 2021.08.03 09:17 | |||
|      */ | |||
|     @PostMapping("/npc-list-ingrid") | |||
|     public Result<HashMap<String, List<ResiEventNpcResultDTO>>> listNpc(@RequestBody ResiEventNpcListFormDTO input) { | |||
|         ValidatorUtils.validateEntity(input); | |||
|         String gridId = input.getGridId(); | |||
|         List<ResiEventNpcResultDTO> npcs = resiEventService.listNpcByGrid(gridId); | |||
| 
 | |||
|         HashMap<String, List<ResiEventNpcResultDTO>> wrapper = new HashMap<>(); | |||
|         wrapper.put("reportTargets", npcs); | |||
|         return new Result<HashMap<String, List<ResiEventNpcResultDTO>>>().ok(wrapper); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @return | |||
|      * @Description 查询上报目标列表 | |||
|      * @author wxz | |||
|      * @date 2021.08.03 13:47 | |||
|      */ | |||
|     @PostMapping("/report-target-level-list") | |||
|     public Result<HashMap> listReportTargetLevels(@RequestBody ResiEventTargetLevelFormDTO input) { | |||
|         ValidatorUtils.validateEntity(input); | |||
|         String gridId = input.getGridId(); | |||
|         TreeSet<ResiEventTargetLevelResultDTO> targetList = resiEventService.listReportTargetLevels(gridId); | |||
| 
 | |||
|         HashMap<String, TreeSet<ResiEventTargetLevelResultDTO>> warpper = new HashMap<>(); | |||
|         warpper.put("reportTargets", targetList); | |||
| 
 | |||
|         return new Result<HashMap>().ok(warpper); | |||
|     } | |||
| 
 | |||
| } | |||
| @ -0,0 +1,30 @@ | |||
| package com.epmet.service; | |||
| 
 | |||
| import com.epmet.dto.result.ResiEventNpcResultDTO; | |||
| import com.epmet.dto.result.ResiEventTargetLevelResultDTO; | |||
| 
 | |||
| import java.util.List; | |||
| import java.util.TreeSet; | |||
| 
 | |||
| /** | |||
|  * @Description 报事service | |||
|  * @author wxz | |||
|  * @date 2021.08.02 09:59:16 | |||
| */ | |||
| public interface ResiEventService { | |||
|     /** | |||
|      * @Description 查询网格的人大代表列表 | |||
|      * @return     | |||
|      * @author wxz | |||
|      * @date 2021.08.03 09:29 | |||
|     */ | |||
|     List<ResiEventNpcResultDTO> listNpcByGrid(String gridId); | |||
| 
 | |||
|     /** | |||
|      * @Description 查询上报目标列表 | |||
|      * @return | |||
|      * @author wxz | |||
|      * @date 2021.08.03 13:50 | |||
|     */ | |||
|     TreeSet<ResiEventTargetLevelResultDTO> listReportTargetLevels(String gridId); | |||
| } | |||
| @ -0,0 +1,102 @@ | |||
| package com.epmet.service.impl; | |||
| 
 | |||
| import com.epmet.commons.tools.constant.ServiceConstant; | |||
| import com.epmet.commons.tools.exception.RenException; | |||
| import com.epmet.commons.tools.feign.ResultDataResolver; | |||
| import com.epmet.commons.tools.utils.Result; | |||
| import com.epmet.constant.BadgeConstant; | |||
| import com.epmet.constant.OrgInfoConstant; | |||
| import com.epmet.dto.form.ListUserByBadgeFormDTO; | |||
| import com.epmet.dto.form.OrgInfoFormDTO; | |||
| import com.epmet.dto.result.*; | |||
| import com.epmet.enums.OrgLevelEnums; | |||
| import com.epmet.feign.EpmetUserOpenFeignClient; | |||
| import com.epmet.feign.GovOrgOpenFeignClient; | |||
| import com.epmet.service.ResiEventService; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| 
 | |||
| import java.util.*; | |||
| import java.util.stream.Collectors; | |||
| import java.util.stream.Stream; | |||
| 
 | |||
| /** | |||
|  * @author wxz | |||
|  * @Description 报事service | |||
|  * @date 2021.08.02 09:59:36 | |||
|  */ | |||
| @Service | |||
| public class ResiEventServiceImpl implements ResiEventService, ResultDataResolver { | |||
| 
 | |||
|     @Autowired | |||
|     GovOrgOpenFeignClient govOrgOpenFeignClient; | |||
| 
 | |||
|     @Autowired | |||
|     private EpmetUserOpenFeignClient epmetUserOpenFeignClient; | |||
| 
 | |||
|     @Override | |||
|     public List<ResiEventNpcResultDTO> listNpcByGrid(String gridId) { | |||
| 
 | |||
|         // 查询网格所属的组织信息
 | |||
|         Result<GridInfoResultDTO> gridInfoResult = govOrgOpenFeignClient.queryGridInfo(gridId); | |||
|         GridInfoResultDTO gridInfoData = getResultDataOrThrowsException(gridInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null); | |||
|         String parentAgencyId = gridInfoData.getParentAgencyId(); | |||
|         String pids = gridInfoData.getPids(); | |||
| 
 | |||
|         //查询人大代表列表
 | |||
|         ListUserByBadgeFormDTO npcForm = new ListUserByBadgeFormDTO(gridId, BadgeConstant.BADGE_KEY_NPC); | |||
|         Result<List<ListUserByBadgeResultDTO>> npcResult = epmetUserOpenFeignClient.listUsersByBadge(npcForm); | |||
|         List<ListUserByBadgeResultDTO> npcData = getResultDataOrThrowsException(npcResult, ServiceConstant.EPMET_USER_SERVER, null, null); | |||
| 
 | |||
|         List<ResiEventNpcResultDTO> npcResultList = npcData.stream() | |||
|                 .map(npc -> new ResiEventNpcResultDTO(npc.getUserId(), gridId, "人大代表-".concat(npc.getRealName()), npc.getHeadImgUrl(), parentAgencyId, pids)) | |||
|                 .collect(Collectors.toList()); | |||
| 
 | |||
|         return npcResultList; | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @Description 此处会调用org上游接口批量获取父级组织信息,由于上游接口排序不可控,因此此处需要使用TreeSet做排序 | |||
|      * @return | |||
|      * @author wxz | |||
|      * @date 2021.08.03 15:51 | |||
|     */ | |||
|     @Override | |||
|     public TreeSet<ResiEventTargetLevelResultDTO> listReportTargetLevels(String gridId) { | |||
|         TreeSet<ResiEventTargetLevelResultDTO> targetLevels = new TreeSet<>(); | |||
| 
 | |||
|         Result<GridInfoResultDTO> gridInfoResult = govOrgOpenFeignClient.queryGridInfo(gridId); | |||
|         GridInfoResultDTO gridInfoData = getResultDataOrThrowsException(gridInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null); | |||
|         String pidsPath = gridInfoData.getPids(); | |||
|         List<String> parentOrgIds = Arrays.asList(pidsPath.split(":")); | |||
|         // 翻转列表
 | |||
|         Collections.reverse(parentOrgIds); | |||
| 
 | |||
|         // 一.网格信息(只有一条,但是为了适应接口,组装成了列表)
 | |||
|         List<String> currentGridId = Arrays.asList(gridId); | |||
|         Result<List<OrgInfoResultDTO>> currentGridInfoResult = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.GRID, currentGridId)); | |||
|         List<OrgInfoResultDTO> currentGridInfos = getResultDataOrThrowsException(currentGridInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null); | |||
|         OrgInfoResultDTO currentGridInfo = currentGridInfos.get(0); | |||
| 
 | |||
|         // 因为上游接口的值对应问题,这里只好做一个适配,拼接起来,希望上游代码不要再改了...
 | |||
|         String pids = currentGridInfo.getPids().concat(":").concat(currentGridInfo.getAgencyId()); | |||
|         // 父ID列表的index排序字段是从0开始,网格要排在他们前面,则网格的index为-1
 | |||
|         targetLevels.add(new ResiEventTargetLevelResultDTO(OrgLevelEnums.GRID.getLevel(), OrgLevelEnums.GRID.getLevelName(), currentGridInfo.getOrgId(), currentGridInfo.getAgencyId(), pids, -1)); | |||
| 
 | |||
|         // 二.父级组织信息
 | |||
|         Result<List<OrgInfoResultDTO>> parentOrgInfoResult = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.AGENCY, parentOrgIds)); | |||
|         List<OrgInfoResultDTO> parentOrgInfos = getResultDataOrThrowsException(parentOrgInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null); | |||
|         parentOrgInfos.forEach(porg -> { | |||
|             String levelName = OrgLevelEnums.getLevelName(porg.getLevel()); | |||
|             if (StringUtils.isBlank(levelName)) { | |||
|                 throw new RenException(String.format("根据级别%s没有找到对应的组织级别枚举", porg.getLevel())); | |||
|             } | |||
|             //parentOrgIds.indexOf(porg.getOrgId()为当前orgId在pids中的位置,得到之后,赋值给index字段,treeset会利用这个字段进行排序
 | |||
|             ResiEventTargetLevelResultDTO pLevel = new ResiEventTargetLevelResultDTO(porg.getLevel(), levelName, porg.getOrgId(), porg.getPid(), porg.getPids(), parentOrgIds.indexOf(porg.getOrgId())); | |||
|             targetLevels.add(pLevel); | |||
|         }); | |||
| 
 | |||
|         return targetLevels; | |||
|     } | |||
| } | |||
| @ -0,0 +1,20 @@ | |||
| package com.epmet.dto.form; | |||
| 
 | |||
| import lombok.AllArgsConstructor; | |||
| import lombok.Data; | |||
| import lombok.NoArgsConstructor; | |||
| 
 | |||
| import javax.validation.constraints.NotBlank; | |||
| 
 | |||
| @Data | |||
| @AllArgsConstructor | |||
| @NoArgsConstructor | |||
| public class ListUserByBadgeFormDTO { | |||
| 
 | |||
|     @NotBlank(message = "网格ID不能为空") | |||
|     private String gridId; | |||
| 
 | |||
|     @NotBlank(message = "徽章key不能为空") | |||
|     private String badgeKey; | |||
| 
 | |||
| } | |||
| @ -0,0 +1,20 @@ | |||
| package com.epmet.dto.result; | |||
| 
 | |||
| import lombok.AllArgsConstructor; | |||
| import lombok.Data; | |||
| import lombok.NoArgsConstructor; | |||
| 
 | |||
| /** | |||
|  * @author wxz | |||
|  * @Description 根据徽章查询用户结果集 | |||
|  * @date 2021.08.02 10:23:37 | |||
|  */ | |||
| @Data | |||
| @NoArgsConstructor | |||
| @AllArgsConstructor | |||
| public class ListUserByBadgeResultDTO { | |||
|     private String userId; | |||
|     private String gridId; | |||
|     private String realName; | |||
|     private String headImgUrl; | |||
| } | |||
					Loading…
					
					
				
		Reference in new issue