Browse Source

涉访涉诉--实体

master
buaixuexideshitongxue 1 month ago
parent
commit
8d011bcad3
  1. 13
      src/main/java/com/biutag/supervision/mapper/ComplaintCollectionMapper.java
  2. 83
      src/main/java/com/biutag/supervision/pojo/dto/complaintCollection/ComplaintCollectionPageDTO.java
  3. 397
      src/main/java/com/biutag/supervision/pojo/entity/ComplaintCollection.java
  4. 30
      src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionExistParam.java
  5. 80
      src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionQueryParam.java
  6. 86
      src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionUpdateParam.java
  7. 152
      src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionAddRequest.java
  8. 31
      src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionDelRequest.java
  9. 83
      src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionPageRequest.java
  10. 85
      src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionUpdateRequest.java
  11. 47
      src/main/java/com/biutag/supervision/pojo/transfer/ComplaintCollectionTransfer.java
  12. 39
      src/main/java/com/biutag/supervision/pojo/vo/ComplaintCollectionPageVo.java
  13. 46
      src/main/java/com/biutag/supervision/util/CodeTranslateUtil.java
  14. 157
      src/main/resources/mapper/ComplaintCollectionMapper.xml

13
src/main/java/com/biutag/supervision/mapper/ComplaintCollectionMapper.java

@ -0,0 +1,13 @@
package com.biutag.supervision.mapper;
import com.biutag.supervision.pojo.entity.ComplaintCollection;
import com.biutag.supervision.repository.base.HBaseMapper;
import java.util.List;
public interface ComplaintCollectionMapper extends HBaseMapper<ComplaintCollection> {
int insertBatch(List<ComplaintCollection> list);
}

83
src/main/java/com/biutag/supervision/pojo/dto/complaintCollection/ComplaintCollectionPageDTO.java

@ -0,0 +1,83 @@
package com.biutag.supervision.pojo.dto.complaintCollection;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionSourceTableEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.YesOrNoEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @ClassName ComplaintCollectionPageDTO
* @Description 涉访涉诉PageDto
* @Author shihao
* @Date 2025/12/25 15:35
*/
@Getter
@Setter
@Schema(description = "涉访涉诉PageDto")
public class ComplaintCollectionPageDTO {
@Schema(description = "id")
private String id;
/**
* @see ComplaintCollectionSourceTableEnum
*/
@Schema(description = "来源表类型")
private String sourceTable;
@Schema(description = "案件编号")
private String originId;
@Schema(description = "发现时间 / 受理时间")
private LocalDateTime discoveryTime;
@Schema(description = "反映人姓名")
private String responderName;
@Schema(description = "投诉人身份证")
private String responderIdCode;
@Schema(description = "联系电话")
private String responderPhone;
@Schema(description = "办理二级单位名称")
private String secondDepartName;
@Schema(description = "办理二级单位id")
private String secondDepartId;
@Schema(description = "内容/正文")
private String thingDesc;
@Schema(description = "涉嫌问题")
private String involveProblem;
@Schema(description = "涉嫌问题字符串")
private String involveProblemStr;
/**
* @see YesOrNoEnum
*/
@Schema(description = "是否重复件")
private String repeatt;
/**
* @see YesOrNoEnum
*/
@Schema(description = "是否领导审批")
private String leadApproval;
@Schema(description = "标签id")
private String tag;
@Schema(description = "办理方式")
private String handleMethod;
}

397
src/main/java/com/biutag/supervision/pojo/entity/ComplaintCollection.java

@ -0,0 +1,397 @@
package com.biutag.supervision.pojo.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionHandleMethodEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionSourceTableEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.YesOrNoEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @ClassName ComplaintCollection
* @Description 涉访涉诉表
* @Author shihao
* @Date 2025/12/23 15:52
*/
@Getter
@Setter
@Schema(description = "涉访涉诉归集表(投诉/核查/信箱归集)")
@TableName("complaint_collection")
public class ComplaintCollection {
/* =========================
* 0) 归集表基础字段溯源/去重
* ========================= */
@Schema(description = "新表主键ID")
@TableId(value = "id",type = IdType.AUTO)
private String id;
/**
* @see ComplaintCollectionSourceTableEnum
*/
@Schema(description = "来源表类型:PETITION/CASE_VERIF/MAILBOX")
@TableField("source_table")
private String sourceTable;
/* =========================
* 1) 三表合并字段3表都有/语义相同 -> 合并为1个
* ========================= */
@Schema(description = "信件编号(PETITION.origin_id;CASE_VERIF.originId;MAILBOX.origin_id)")
@TableField("origin_id")
private String originId;
@Schema(description = "发现时间(PETITION.discovery_time;CASE_VERIF.discovery_time;MAILBOX.discoveryTime)")
@TableField("discovery_time")
private LocalDateTime discoveryTime;
@Schema(description = "反映人姓名(PETITION.responder_name;CASE_VERIF.responder_name;MAILBOX.responderName)")
@TableField("responder_name")
private String responderName;
@Schema(description = "联系电话(PETITION.responder_phone;CASE_VERIF.responder_phone;MAILBOX.contactPhone)")
@TableField("responder_phone")
private String responderPhone;
@Schema(description = "业务类型名称(PETITION.business_type_name;CASE_VERIF.business_type_name;MAILBOX.businessTypeName)")
@TableField("business_type_name")
private String businessTypeName;
@Schema(description = "内容/正文(PETITION.thing_desc;CASE_VERIF.thing_desc;MAILBOX.thingDesc)")
@TableField("thing_desc")
private String thingDesc;
@Schema(description = "涉企涉冻(PETITION.involved_issue;MAILBOX.involved_issue;CASE_VERIF.involved_issue 若存在也迁移写入)")
@TableField("involved_issue")
private String involvedIssue;
@Schema(description = "涉及单位名称/办理二级单位(PETITION.second_depart_name;CASE_VERIF.second_depart_name;MAILBOX.handleSecondDepartName 语义相同迁移写入)")
@TableField("second_depart_name")
private String secondDepartName;
@Schema(description = "涉及科所队名称/办理三级单位(PETITION.third_depart_name;CASE_VERIF.third_depart_name;MAILBOX.handleThreeDepartName 语义相同迁移写入)")
@TableField("third_depart_name")
private String thirdDepartName;
/* =========================
* 2) 两表合并字段2表共有/语义相同 -> 合并为1个
* ========================= */
@Schema(description = "涉嫌问题(PETITION.involve_problem;CASE_VERIF.involve_problem)")
@TableField("involve_problem")
private String involveProblem;
@Schema(description = "分发状态(PETITION.distribution_state;CASE_VERIF.distribution_state)")
@TableField("distribution_state")
private String distributionState;
@Schema(description = "涉及单位ID(PETITION.second_depart_id;CASE_VERIF.second_depart_id)")
@TableField("second_depart_id")
private String secondDepartId;
@Schema(description = "涉及科所队ID(PETITION.third_depart_id;CASE_VERIF.third_depart_id)")
@TableField("third_depart_id")
private String thirdDepartId;
@Schema(description = "问题来源code(PETITION.problem_sources_code;MAILBOX.problemSourcesCode)")
@TableField("problem_sources_code")
private String problemSourcesCode;
@Schema(description = "问题来源名称(CASE_VERIF.problem_sources;MAILBOX.problemSources)")
@TableField("problem_sources")
private String problemSources;
@Schema(description = "涉及警种名称(PETITION.police_type_name;CASE_VERIF.police_type_name)")
@TableField("police_type_name")
private String policeTypeName;
/* =========================
* 3) 单表独有字段仅单表有 -> 单独字段
* ========================= */
/* ---- PETITION 独有(data_petition_complaint) ---- */
@Schema(description = "投诉渠道(PETITION.channel_for_filing_complaints)")
@TableField("channel_for_filing_complaints")
private String channelForFilingComplaints;
@Schema(description = "受理层级(PETITION.acceptance_level)")
@TableField("acceptance_level")
private String acceptanceLevel;
@Schema(description = "初重信访(PETITION.initial_petition)")
@TableField("initial_petition")
private String initialPetition;
@Schema(description = "缠访闹访(PETITION.entanglement_visits)")
@TableField("entanglement_visits")
private String entanglementVisits;
@Schema(description = "群众集访(PETITION.mass_visits)")
@TableField("mass_visits")
private String massVisits;
@Schema(description = "涉及警种(PETITION.police_type)")
@TableField("police_type")
private String policeType;
@Schema(description = "投诉人身份证(PETITION.responder_id_code)")
@TableField("responder_id_code")
private String responderIdCode;
@Schema(description = "信访人数(PETITION.people_number)")
@TableField("people_number")
private Integer peopleNumber;
@Schema(description = "信访诉求(PETITION.appeal)")
@TableField("appeal")
private String appeal;
@Schema(description = "公安业务分类(PETITION.business_class)")
@TableField("business_class")
private String businessClass;
@Schema(description = "登记单位(PETITION.register_depart_name)")
@TableField("register_depart_name")
private String registerDepartName;
@Schema(description = "转往处(PETITION.transfer_depart)")
@TableField("transfer_depart")
private String transferDepart;
/**
* @see ComplaintCollectionHandleMethodEnum
*/
@Schema(description = "办理方式(PETITION.handle_method) 原表中没用 现改为3表通用")
@TableField("handle_method")
private String handleMethod;
@Schema(description = "具体承办单位(PETITION.handle_depart_name)")
@TableField("handle_depart_name")
private String handleDepartName;
@Schema(description = "办结时间(PETITION.completed_time)")
@TableField("completed_time")
private LocalDateTime completedTime;
@Schema(description = "责任单位(PETITION.involve_depart_name)")
@TableField("involve_depart_name")
private String involveDepartName;
@Schema(description = "接访领导姓名(PETITION.receiving_leader_name)")
@TableField("receiving_leader_name")
private String receivingLeaderName;
@Schema(description = "是否主要责任(PETITION.is_mian_responsib)")
@TableField("is_mian_responsib")
private String isMianResponsib;
@Schema(description = "领导接访单位(PETITION.receiving_depart_name)")
@TableField("receiving_depart_name")
private String receivingDepartName;
@Schema(description = "关联负面清单id(PETITION.negative_id)")
@TableField("negative_id")
private String negativeId;
@Schema(description = "信访类型(PETITION.petition_type)")
@TableField("petition_type")
private String petitionType;
@Schema(description = "信访办理情况(PETITION.petition_processing_status)")
@TableField("petition_processing_status")
private String petitionProcessingStatus;
/* ---- CASE_VERIF 独有(data_case_verif) ---- */
@Schema(description = "问题发生时间(CASE_VERIF.happen_time)")
@TableField("happen_time")
private LocalDateTime happenTime;
@Schema(description = "是否属实(1属实 2部分属实 3不属实)(CASE_VERIF.is_real)")
@TableField("is_real")
private Integer isReal;
@Schema(description = "线索来源(CASE_VERIF.source)")
@TableField("source")
private String source;
@Schema(description = "创建人(业务字段)(CASE_VERIF.creator)")
@TableField("creator")
private String creator;
@Schema(description = "来源涉及单位名称(CASE_VERIF.source_involve_depart_name)")
@TableField("source_involve_depart_name")
private String sourceInvolveDepartName;
@Schema(description = "外部id(CASE_VERIF.outer_id)")
@TableField("outer_id")
private String outerId;
@Schema(description = "状态(CASE_VERIF.crx_state)")
@TableField("crx_state")
private String crxState;
/* ---- MAILBOX 独有(data_mailbox) ---- */
@Schema(description = "业务类型code(MAILBOX.businessTypeCode)")
@TableField("business_type_code")
private String businessTypeCode;
@Schema(description = "核查情况(MAILBOX.checkStatus)")
@TableField("check_status")
private String checkStatus;
@Schema(description = "核查情况名称(MAILBOX.checkStatusName)")
@TableField("check_status_name")
private String checkStatusName;
@Schema(description = "核查情况内容(MAILBOX.checkStatusDesc)")
@TableField("check_status_desc")
private String checkStatusDesc;
@Schema(description = "办理状态(MAILBOX.processingStatus)")
@TableField("processing_status")
private String processingStatus;
@Schema(description = "转责对象(MAILBOX.accountabilityTarget)")
@TableField("accountability_target")
private String accountabilityTarget;
@Schema(description = "来源表创建时间(业务字段)(MAILBOX.crtTime)")
@TableField("crt_time")
private LocalDateTime crtTime;
/* =========================
* 4) 新加字段
* ========================= */
/**
* @see YesOrNoEnum
*/
@Schema(description = "是否重复件")
@TableField("repeatt")
private String repeatt;
/**
* @see YesOrNoEnum
*/
@Schema(description = "是否领导审批")
@TableField("lead_approval")
private String leadApproval;
@Schema(description = "标签id")
@TableField("tag")
private String tag;
/* =========================
* 4) 扩展字段最后
* ========================= */
@Schema(description = "自定义1")
@TableField("gwf1")
private String gwf1;
@Schema(description = "自定义2")
@TableField("gwf2")
private String gwf2;
@Schema(description = "自定义3")
@TableField("gwf3")
private String gwf3;
@Schema(description = "自定义4")
@TableField("gwf4")
private String gwf4;
@Schema(description = "自定义5")
@TableField("gwf5")
private String gwf5;
@Schema(description = "自定义6")
@TableField("gwf6")
private String gwf6;
@Schema(description = "自定义7")
@TableField("gwf7")
private String gwf7;
@Schema(description = "自定义8")
@TableField("gwf8")
private String gwf8;
@Schema(description = "自定义9")
@TableField("gwf9")
private String gwf9;
@Schema(description = "自定义10")
@TableField("gwf10")
private String gwf10;
@Schema(description = "自定义11")
@TableField("gwf11")
private String gwf11;
@Schema(description = "自定义12")
@TableField("gwf12")
private String gwf12;
@Schema(description = "自定义13")
@TableField("gwf13")
private String gwf13;
@Schema(description = "自定义14")
@TableField("gwf14")
private String gwf14;
@Schema(description = "自定义15")
@TableField("gwf15")
private String gwf15;
@Schema(description = "自定义16")
@TableField("gwf16")
private String gwf16;
@Schema(description = "自定义17")
@TableField("gwf17")
private String gwf17;
@Schema(description = "自定义18")
@TableField("gwf18")
private String gwf18;
@Schema(description = "自定义19")
@TableField("gwf19")
private String gwf19;
@Schema(description = "自定义20")
@TableField("gwf20")
private String gwf20;
@Schema(description = "创建人(新表字段)")
@TableField("create_by")
private String createBy;
@Schema(description = "创建时间(新表字段)")
@TableField("create_time")
private LocalDateTime createTime;
@Schema(description = "更新人(新表字段)")
@TableField("update_by")
private String updateBy;
@Schema(description = "更新时间(新表字段)")
@TableField("update_time")
private LocalDateTime updateTime;
// @Schema(description = "逻辑删除标记(0未删 1已删)")
// @TableField("delete_flag")
// @TableLogic(value = "0", delval = "1")
// private Integer deleteFlag;
}

30
src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionExistParam.java

@ -0,0 +1,30 @@
package com.biutag.supervision.pojo.param.ComplaintCollection;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionSourceTableEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName ComplaintCollectionExistParam
* @Description ComplaintCollectionExistParam
* @Author shihao
* @Date 2025/12/25 19:33
*/
@Getter
@Setter
@Schema(description = "涉访涉诉表校验存在实体")
public class ComplaintCollectionExistParam {
@Schema(description = "id")
private String id;
@Schema(description = "信件编号")
private String originId;
/**
* @see ComplaintCollectionSourceTableEnum
*/
@Schema(description = "来源表类型:PETITION/CASE_VERIF/MAILBOX")
private String sourceTable;
}

80
src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionQueryParam.java

@ -0,0 +1,80 @@
package com.biutag.supervision.pojo.param.ComplaintCollection;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionSourceTableEnum;
import com.biutag.supervision.pojo.param.BasePage;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Set;
/**
* @ClassName ComplaintCollectionQueryParam
* @Description 涉访涉诉表查询实体
* @Author shihao
* @Date 2025/12/23 16:57
*/
@Getter
@Setter
@Schema(description = "涉访涉诉表查询实体")
public class ComplaintCollectionQueryParam extends BasePage {
@Schema(description = "主键ID")
private String id;
@Schema(description = "主键ID集合")
private Set<String> ids;
@Schema(description = "信件编号")
private String originId;
@Schema(description = "信件编号集合")
private Set<String> originIds;
/**
* @see ComplaintCollectionSourceTableEnum
*/
@Schema(description = "来源表类型:PETITION/CASE_VERIF/MAILBOX")
private String sourceTable;
@Schema(description = "信件来源")
private Set<String> sourceTables;
@Schema(description = "反映人姓名(PETITION.responder_name;CASE_VERIF.responder_name;MAILBOX.responderName)")
private String responderName;
@Schema(description = "受理时间")
private List<LocalDateTime> discoveryTimeList;
@Schema(description = "来件人信息")
private String personInfo;
@Schema(description = "被投诉二级机构Id")
private String secondDepartId;
@Schema(description = "被投诉二级机构名字")
private String secondDepartName;
@Schema(description = "办理方式")
private String handleMethod;
@Schema(description = "来件内容")
private String thingDesc;
@Schema(description = "是否重复件")
private String repeatt;
@Schema(description = "是否领导批示")
private String leadApproval;
@Schema(description = "标签")
private List<String> tags;
// @Schema(description = "部门ID集合")
// private Set<String> secondDepartIds;
}

86
src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionUpdateParam.java

@ -0,0 +1,86 @@
package com.biutag.supervision.pojo.param.ComplaintCollection;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionHandleMethodEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionSourceTableEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.YesOrNoEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @ClassName ComplaintCollectionUpdateRequest
* @Description ComplaintCollectionUpdateRequest
* @Author shihao
* @Date 2025/12/25 19:31
*/
@Getter
@Setter
@Schema(description = "涉访涉诉表更新实体")
public class ComplaintCollectionUpdateParam {
@Schema(description = "id")
private String id;
/**
* @see ComplaintCollectionSourceTableEnum
*/
@Schema(description = "来源表类型")
private String sourceTable;
@Schema(description = "编号")
private String originId;
@Schema(description = "受理时间")
private LocalDateTime discoveryTime;
@Schema(description = "来件人姓名")
private String responderName;
@Schema(description = "身份证号")
private String responderIdCode;
@Schema(description = "联系电话")
private String responderPhone;
@Schema(description = "被投诉二级机构Id")
private String secondDepartId;
@Schema(description = "被投诉二级机构")
private String secondDepartName;
@Schema(description = "来信内容")
private String thingDesc;
@Schema(description = "涉嫌问题")
private String involveProblem;
/**
* @see YesOrNoEnum
*/
@Schema(description = "是否重复件")
private String repeatt;
/**
* @see YesOrNoEnum
*/
@Schema(description = "是否领导审批")
private String leadApproval;
@Schema(description = "标签")
private String tag;
/**
* @see ComplaintCollectionHandleMethodEnum
*/
@Schema(description = "办理方式")
private String handleMethod;
@Schema(description = "更新人(新表字段)")
private String updateBy;
@Schema(description = "更新时间(新表字段)")
private LocalDateTime updateTime;
}

152
src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionAddRequest.java

@ -0,0 +1,152 @@
package com.biutag.supervision.pojo.request.complaintCollection;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.biutag.supervision.aop.ParamChecked;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionHandleMethodEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionSourceTableEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.YesOrNoEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
/**
* @ClassName complaintCollectionRequest
* @Description 涉访涉诉添加请求
* @Author shihao
* @Date 2025/12/23 18:02
*/
@Setter
@Getter
@Schema(description = "涉访涉诉添加请求")
public class ComplaintCollectionAddRequest implements ParamChecked {
/**
* @see ComplaintCollectionSourceTableEnum
*/
@Schema(description = "来源表类型")
private String sourceTable;
@Schema(description = "编号")
private String originId;
@Schema(description = "受理时间")
private LocalDateTime discoveryTime;
@Schema(description = "来件人姓名")
private String responderName;
@Schema(description = "身份证号")
private String responderIdCode;
@Schema(description = "联系电话")
private String responderPhone;
@Schema(description = "被投诉二级机构Id")
private String secondDepartId;
@Schema(description = "被投诉二级机构")
private String secondDepartName;
@Schema(description = "来信内容")
private String thingDesc;
@Schema(description = "涉嫌问题")
private List<String> involveProblemIdList;
@Schema(description = "涉嫌问题")
private String involveProblemIdStr;
/**
* @see YesOrNoEnum
*/
@Schema(description = "是否重复件")
private String repeatt;
/**
* @see YesOrNoEnum
*/
@Schema(description = "是否领导审批")
private String leadApproval;
/**
*
*/
@Schema(description = "标签")
private String tag;
@Schema(description = "标签集合")
private List<String> tags;
/**
* @see ComplaintCollectionHandleMethodEnum
*/
@Schema(description = "办理方式")
private String handleMethod;
@Override
public void check() {
if (StrUtil.isBlank(sourceTable)) {
throw new IllegalArgumentException("来源不能为空");
}
if (ObjectUtil.isNull(discoveryTime)) {
throw new IllegalArgumentException("受理时间不能为空");
}
if (discoveryTime.isAfter(LocalDateTime.now())) {
throw new IllegalArgumentException("受理时间不能晚于当前时间");
}
if (StrUtil.isNotBlank(responderIdCode) && !IdcardUtil.isValidCard(responderIdCode)){
throw new IllegalArgumentException("身份证格式不对!");
}
if (StrUtil.hasBlank(secondDepartId,secondDepartName)) {
throw new IllegalArgumentException("被投诉二级机构不能为空");
}
if (StrUtil.isBlank(thingDesc)) {
throw new IllegalArgumentException("来信内容不能为空");
}
if (ObjectUtil.isNull(involveProblemIdList)) {
throw new IllegalArgumentException("涉嫌问题不能为空");
}
if (StrUtil.isBlank(repeatt)) {
throw new IllegalArgumentException("是否重复不能为空");
}
if (StrUtil.isBlank((leadApproval))) {
throw new IllegalArgumentException("是否领导审批不能为空");
}
if (CollectionUtil.isEmpty(tags)){
throw new IllegalArgumentException("标签不能为空");
}
if (StrUtil.isEmpty(handleMethod)){
throw new IllegalArgumentException("办理方法不能为空");
}
if (CollectionUtil.isNotEmpty(involveProblemIdList)){
involveProblemIdStr = involveProblemIdList.stream()
.filter(StrUtil::isNotBlank)
.distinct()
.collect(Collectors.joining(","));
}
if (CollectionUtil.isNotEmpty(tags)){
tag = tags.stream()
.filter(StrUtil::isNotBlank)
.distinct()
.collect(Collectors.joining(","));
}
}
}

31
src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionDelRequest.java

@ -0,0 +1,31 @@
package com.biutag.supervision.pojo.request.complaintCollection;
import cn.hutool.core.util.StrUtil;
import com.biutag.supervision.aop.ParamChecked;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName complaintCollectionRequest
* @Description 涉访涉诉添加请求
* @Author shihao
* @Date 2025/12/23 18:02
*/
@Setter
@Getter
@Schema(description = "涉访涉诉删除请求")
public class ComplaintCollectionDelRequest implements ParamChecked {
@Schema(description = "ComplaintCollection自己的Id")
private String id;
@Override
public void check() {
if (StrUtil.isBlank(id)) {
throw new IllegalArgumentException("编号不能为空");
}
}
}

83
src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionPageRequest.java

@ -0,0 +1,83 @@
package com.biutag.supervision.pojo.request.complaintCollection;
import cn.hutool.core.collection.CollectionUtil;
import com.biutag.supervision.aop.ParamChecked;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionHandleMethodEnum;
import com.biutag.supervision.pojo.param.BasePage;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
/**
* @ClassName complaintCollectionRequest
* @Description 涉访涉诉分页请求
* @Author shihao
* @Date 2025/12/23 18:02
*/
@Setter
@Getter
@Schema(description = "涉访涉诉分页请求")
public class ComplaintCollectionPageRequest extends BasePage implements ParamChecked {
@Schema(description = "信件来源")
private Set<String> sourceTables;
@Schema(description = "信件编号")
private String originId;
@Schema(description = "受理时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private List<LocalDateTime> discoveryTimeList;
@Schema(description = "来件人信息")
private String personInfo;
@Schema(description = "被投诉二级机构Id")
private String secondDepartId;
@Schema(description = "被投诉二级机构名字")
private String secondDepartName;
/**
* @see ComplaintCollectionHandleMethodEnum
*/
@Schema(description = "办理方式")
private String handleMethod;
@Schema(description = "来件内容")
private String thingDesc;
@Schema(description = "是否重复件")
private String repeatt;
@Schema(description = "是否领导批示")
private String leadApproval;
@Schema(description = "标签")
private Set<String> tags;
@Override
public void check() {
if (CollectionUtil.isNotEmpty(discoveryTimeList)){
if (discoveryTimeList.size() != 2) {
throw new IllegalArgumentException("受理时间区间不合法");
}
LocalDateTime startTime = discoveryTimeList.get(0);
LocalDateTime endTime = discoveryTimeList.get(1);
if (startTime == null || endTime == null) {
throw new IllegalArgumentException("受理时间不能为空");
}
// 结束时间不能早于开始时间
if (endTime.isBefore(startTime)) {
throw new IllegalArgumentException("结束时间不能早于开始时间");
}
}
}
}

85
src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionUpdateRequest.java

@ -0,0 +1,85 @@
package com.biutag.supervision.pojo.request.complaintCollection;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.StrUtil;
import com.biutag.supervision.aop.ParamChecked;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "涉访涉诉修改请求")
@Getter
@Setter
public class ComplaintCollectionUpdateRequest implements ParamChecked {
@Schema(description = "主键ID")
private String id;
@Schema(description = "受理时间")
private LocalDateTime discoveryTime;
@Schema(description = "来件人姓名")
private String responderName;
@Schema(description = "身份证号")
private String responderIdCode;
@Schema(description = "联系电话")
private String responderPhone;
@Schema(description = "被投诉二级机构Id")
private String secondDepartId;
@Schema(description = "被投诉二级机构")
private String secondDepartName;
@Schema(description = "来信内容")
private String thingDesc;
@Schema(description = "涉嫌问题(逗号分隔存 involve_problem)")
private List<String> involveProblemIdList;
@Schema(description = "是否重复件")
private String repeatt;
@Schema(description = "是否领导审批")
private String leadApproval;
@Schema(description = "标签集合(逗号分隔存 tag)")
private List<String> tags;
@Schema(description = "办理方式")
private String handleMethod;
@Override
public void check() {
if (StrUtil.isBlank(id)) {
throw new IllegalArgumentException("id不能为空");
}
boolean nothingToUpdate =
discoveryTime == null
&& StrUtil.isBlank(responderName)
&& StrUtil.isBlank(responderIdCode)
&& StrUtil.isBlank(responderPhone)
&& StrUtil.isBlank(secondDepartId)
&& StrUtil.isBlank(secondDepartName)
&& StrUtil.isBlank(thingDesc)
&& CollectionUtil.isEmpty(involveProblemIdList)
&& StrUtil.isBlank(repeatt)
&& StrUtil.isBlank(leadApproval)
&& CollectionUtil.isEmpty(tags)
&& StrUtil.isBlank(handleMethod);
if (nothingToUpdate) {
throw new IllegalArgumentException("请至少修改一个字段");
}
if (StrUtil.isNotBlank(responderIdCode) && !IdcardUtil.isValidCard(responderIdCode)){
throw new IllegalArgumentException("身份证格式不对!");
}
}
}

47
src/main/java/com/biutag/supervision/pojo/transfer/ComplaintCollectionTransfer.java

@ -0,0 +1,47 @@
package com.biutag.supervision.pojo.transfer;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.biutag.supervision.pojo.dto.complaintCollection.ComplaintCollectionPageDTO;
import com.biutag.supervision.pojo.entity.ComplaintCollection;
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionQueryParam;
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionUpdateParam;
import com.biutag.supervision.pojo.request.complaintCollection.ComplaintCollectionAddRequest;
import com.biutag.supervision.pojo.request.complaintCollection.ComplaintCollectionPageRequest;
import com.biutag.supervision.pojo.request.complaintCollection.ComplaintCollectionUpdateRequest;
import com.biutag.supervision.pojo.vo.ComplaintCollectionPageVo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* @ClassName ComplaintCollectionTansfer
* @Description ComplaintCollectionTransfer
* @Author shihao
* @Date 2025/12/23 18:10
*/
@Mapper
public interface ComplaintCollectionTransfer {
ComplaintCollectionTransfer INSTANCE = Mappers.getMapper(ComplaintCollectionTransfer.class);
List<ComplaintCollectionPageVo> toPageVoList(List<ComplaintCollection> complaintCollections);
@Mapping(source = "total", target = "total")
@Mapping(source = "pages", target = "pages")
@Mapping(source = "current", target = "current")
@Mapping(source = "size", target = "size")
ComplaintCollectionPageVo toPageVo(IPage<ComplaintCollection> page);
List<ComplaintCollectionPageDTO> entityToPageDTOList(List<ComplaintCollection> records);
ComplaintCollectionQueryParam pageRequestToPageParam(ComplaintCollectionPageRequest request);
ComplaintCollection updateRequestToEntity(ComplaintCollectionUpdateRequest request);
@Mapping(source = "involveProblemIdStr", target = "involveProblem")
ComplaintCollection addRequestToEntity(ComplaintCollectionAddRequest request);
ComplaintCollectionUpdateParam updateRequestToParam(ComplaintCollectionUpdateRequest request);
}

39
src/main/java/com/biutag/supervision/pojo/vo/ComplaintCollectionPageVo.java

@ -0,0 +1,39 @@
package com.biutag.supervision.pojo.vo;
import com.biutag.supervision.pojo.dto.complaintCollection.ComplaintCollectionPageDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @ClassName ComplaintCollectionVo
* @Description 涉访涉诉VO
* @Author shihao
* @Date 2025/12/23 17:28
*/
@Getter
@Setter
@Schema(description = "涉访涉诉PageVO")
public class ComplaintCollectionPageVo {
@Schema(description = "总条数")
private Long total;
@Schema(description = "总页数")
private Long pages;
@Schema(description = "当前页")
private Long current;
@Schema(description = "每页条数")
private Long size;
@Schema(description = "返回DTO")
private List<ComplaintCollectionPageDTO> complaintCollectionPageDTOS;
}

46
src/main/java/com/biutag/supervision/util/CodeTranslateUtil.java

@ -0,0 +1,46 @@
package com.biutag.supervision.util;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName CodeTranslateUtil
* @Description CodeTranslateUtil
* @Author shihao
* @Date 2025/12/25 21:54
*/
public final class CodeTranslateUtil {
private CodeTranslateUtil() {
}
public static String joinDistinct(List<String> items) {
if (CollectionUtil.isEmpty(items)) {
return null;
}
return items.stream()
.map(StrUtil::trim)
.filter(StrUtil::isNotBlank)
.distinct()
.collect(Collectors.joining(","));
}
public static String translateCodesToLabels(String codes, Map<String, String> dictLabelMap) {
if (StrUtil.isBlank(codes) || CollectionUtil.isEmpty(dictLabelMap)) {
return "";
}
return Arrays.stream(codes.split(","))
.map(String::trim)
.filter(StrUtil::isNotBlank)
.distinct()
.map(dictLabelMap::get)
.filter(StrUtil::isNotBlank)
.collect(Collectors.joining(","));
}
}

157
src/main/resources/mapper/ComplaintCollectionMapper.xml

@ -0,0 +1,157 @@
<?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.biutag.supervision.mapper.ComplaintCollectionMapper">
<!-- 批量插入:全字段 -->
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO complaint_collection (
id,
source_table,
source_origin_id,
origin_id,
discovery_time,
responder_name,
responder_phone,
business_type_name,
thing_desc,
involved_issue,
second_depart_name,
third_depart_name,
involve_problem,
distribution_state,
second_depart_id,
third_depart_id,
problem_sources_code,
problem_sources,
police_type_name,
channel_for_filing_complaints,
acceptance_level,
initial_petition,
entanglement_visits,
mass_visits,
police_type,
responder_id_code,
people_number,
appeal,
business_class,
register_depart_name,
transfer_depart,
handle_method,
handle_depart_name,
completed_time,
involve_depart_name,
receiving_leader_name,
is_mian_responsib,
receiving_depart_name,
negative_id,
petition_type,
petition_processing_status,
happen_time,
is_real,
source,
creator,
source_involve_depart_name,
outer_id,
crx_state,
business_type_code,
check_status,
check_status_name,
check_status_desc,
processing_status,
accountability_target,
crt_time,
gwf1, gwf2, gwf3, gwf4, gwf5,
gwf6, gwf7, gwf8, gwf9, gwf10,
gwf11, gwf12, gwf13, gwf14, gwf15,
gwf16, gwf17, gwf18, gwf19, gwf20,
create_by,
create_time,
update_by,
update_time,
delete_flag
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.id},
#{item.sourceTable},
#{item.sourceOriginId},
#{item.originId},
#{item.discoveryTime},
#{item.responderName},
#{item.responderPhone},
#{item.businessTypeName},
#{item.thingDesc},
#{item.involvedIssue},
#{item.secondDepartName},
#{item.thirdDepartName},
#{item.involveProblem},
#{item.distributionState},
#{item.secondDepartId},
#{item.thirdDepartId},
#{item.problemSourcesCode},
#{item.problemSources},
#{item.policeTypeName},
#{item.channelForFilingComplaints},
#{item.acceptanceLevel},
#{item.initialPetition},
#{item.entanglementVisits},
#{item.massVisits},
#{item.policeType},
#{item.responderIdCode},
#{item.peopleNumber},
#{item.appeal},
#{item.businessClass},
#{item.registerDepartName},
#{item.transferDepart},
#{item.handleMethod},
#{item.handleDepartName},
#{item.completedTime},
#{item.involveDepartName},
#{item.receivingLeaderName},
#{item.isMianResponsib},
#{item.receivingDepartName},
#{item.negativeId},
#{item.petitionType},
#{item.petitionProcessingStatus},
#{item.happenTime},
#{item.isReal},
#{item.source},
#{item.creator},
#{item.sourceInvolveDepartName},
#{item.outerId},
#{item.crxState},
#{item.businessTypeCode},
#{item.checkStatus},
#{item.checkStatusName},
#{item.checkStatusDesc},
#{item.processingStatus},
#{item.accountabilityTarget},
#{item.crtTime},
#{item.gwf1}, #{item.gwf2}, #{item.gwf3}, #{item.gwf4}, #{item.gwf5},
#{item.gwf6}, #{item.gwf7}, #{item.gwf8}, #{item.gwf9}, #{item.gwf10},
#{item.gwf11}, #{item.gwf12}, #{item.gwf13}, #{item.gwf14}, #{item.gwf15},
#{item.gwf16}, #{item.gwf17}, #{item.gwf18}, #{item.gwf19}, #{item.gwf20},
#{item.createBy},
#{item.createTime},
#{item.updateBy},
#{item.updateTime},
#{item.deleteFlag}
)
</foreach>
</insert>
</mapper>
Loading…
Cancel
Save