feat(flow): 添加投诉处理流程模块及相关服务接口

- 创建受理单关联钢卷中间表服务接口及实现类
- 添加投诉受理单主服务接口及相应控制器
- 实现各部门投诉代办任务服务功能
- 集成最终方案下发部门及执行反馈服务
- 在员工信息表中新增是否吃辣字段
- 配置klp-flow模块依赖并注册到系统中
This commit is contained in:
2026-06-18 11:19:55 +08:00
parent 2fc4bf4043
commit 5b0cb314e4
36 changed files with 2129 additions and 1 deletions

View File

@@ -0,0 +1,45 @@
package com.klp.flow.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 受理单关联钢卷中间对象 ts_accept_coil_rel
*
* @author klp
* @date 2026-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ts_accept_coil_rel")
public class TsAcceptCoilRel extends BaseEntity {
private static final long serialVersionUID=1L;
/**
*
*/
@TableId(value = "rel_id")
private Long relId;
/**
* 投诉受理单ID
*/
private Long acceptId;
/**
* 钢卷ID
*/
private Long coilId;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,88 @@
package com.klp.flow.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 投诉受理单主对象 ts_complaint_accept
*
* @author klp
* @date 2026-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ts_complaint_accept")
public class TsComplaintAccept extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 受理单主键
*/
@TableId(value = "accept_id")
private Long acceptId;
/**
* 投诉编号 TS-2026-001
*/
private String complaintNo;
/**
* 投诉日期
*/
private Date complaintDate;
/**
* 投诉情况描述
*/
private String complaintContent;
/**
* 客户诉求
*/
private String customerDemand;
/**
* 客户照片凭证等
*/
private String file;
/**
* 审核状态 0待审核 1已通过 2未通过
*/
private Long auditStatus;
/**
* 审核意见
*/
private String auditOpinion;
/**
* 审核人ID
*/
private Long auditUserId;
/**
* 审核时间
*/
private Date auditTime;
/**
* 流程阶段:
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=方案下发执行反馈中 5=全部办结
*/
private Long flowStatus;
/**
* 总负责人ID
*/
private Long principalUserId;
/**
* 总负责人整合后的完整处理方案
*/
private String planContent;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,71 @@
package com.klp.flow.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 各部门投诉代办任务&意见对象 ts_complaint_task
*
* @author klp
* @date 2026-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ts_complaint_task")
public class TsComplaintTask extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 代办任务ID
*/
@TableId(value = "task_id")
private Long taskId;
/**
* 关联投诉受理单ID
*/
private Long acceptId;
/**
* 负责部门ID销售/质量/生产)
*/
private Long deptId;
/**
* 任务状态 0待填写意见 1已完成填写
*/
private Long taskStatus;
/**
* 意见单号
*/
private String fillNo;
/**
* 部门处理意见
*/
private String deptOpinion;
/**
* 填写意见的部门员工ID
*/
private Long fillUserId;
/**
* 意见填写时间
*/
private Date fillTime;
/**
* 意见文件
*/
private String fillFile;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,71 @@
package com.klp.flow.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 最终方案下发部门及执行反馈对象 ts_plan_execute_rel
*
* @author klp
* @date 2026-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ts_plan_execute_rel")
public class TsPlanExecuteRel extends BaseEntity {
private static final long serialVersionUID=1L;
/**
*
*/
@TableId(value = "rel_id")
private Long relId;
/**
* 关联最终方案ID
*/
private Long acceptId;
/**
* 被下发执行的部门ID
*/
private Long deptId;
/**
* 执行状态 0待执行反馈 1已反馈完成
*/
private Long executeStatus;
/**
* 部门执行结果反馈
*/
private String executeResult;
/**
* 反馈单号
*/
private String feedbackNo;
/**
* 反馈人
*/
private Long feedbackUserId;
/**
* 反馈时间
*/
private Date feedbackTime;
/**
* 反馈文件
*/
private String feedbackFile;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,41 @@
package com.klp.flow.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
/**
* 受理单关联钢卷中间业务对象 ts_accept_coil_rel
*
* @author klp
* @date 2026-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TsAcceptCoilRelBo extends BaseEntity {
/**
*
*/
private Long relId;
/**
* 投诉受理单ID
*/
private Long acceptId;
/**
* 钢卷ID
*/
private Long coilId;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,94 @@
package com.klp.flow.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 投诉受理单主业务对象 ts_complaint_accept
*
* @author klp
* @date 2026-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TsComplaintAcceptBo extends BaseEntity {
/**
* 受理单主键
*/
private Long acceptId;
/**
* 投诉编号 TS-2026-001
*/
private String complaintNo;
/**
* 投诉日期
*/
private Date complaintDate;
/**
* 投诉情况描述
*/
private String complaintContent;
/**
* 客户诉求
*/
private String customerDemand;
/**
* 客户照片凭证等
*/
private String file;
/**
* 审核状态 0待审核 1已通过 2未通过
*/
private Long auditStatus;
/**
* 审核意见
*/
private String auditOpinion;
/**
* 审核人ID
*/
private Long auditUserId;
/**
* 审核时间
*/
private Date auditTime;
/**
* 流程阶段:
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=方案下发执行反馈中 5=全部办结
*/
private Long flowStatus;
/**
* 总负责人ID
*/
private Long principalUserId;
/**
* 总负责人整合后的完整处理方案
*/
private String planContent;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,73 @@
package com.klp.flow.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 各部门投诉代办任务&意见业务对象 ts_complaint_task
*
* @author klp
* @date 2026-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TsComplaintTaskBo extends BaseEntity {
/**
* 代办任务ID
*/
private Long taskId;
/**
* 关联投诉受理单ID
*/
private Long acceptId;
/**
* 负责部门ID销售/质量/生产)
*/
private Long deptId;
/**
* 任务状态 0待填写意见 1已完成填写
*/
private Long taskStatus;
/**
* 意见单号
*/
private String fillNo;
/**
* 部门处理意见
*/
private String deptOpinion;
/**
* 填写意见的部门员工ID
*/
private Long fillUserId;
/**
* 意见填写时间
*/
private Date fillTime;
/**
* 意见文件
*/
private String fillFile;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,73 @@
package com.klp.flow.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 最终方案下发部门及执行反馈业务对象 ts_plan_execute_rel
*
* @author klp
* @date 2026-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TsPlanExecuteRelBo extends BaseEntity {
/**
*
*/
private Long relId;
/**
* 关联最终方案ID
*/
private Long acceptId;
/**
* 被下发执行的部门ID
*/
private Long deptId;
/**
* 执行状态 0待执行反馈 1已反馈完成
*/
private Long executeStatus;
/**
* 部门执行结果反馈
*/
private String executeResult;
/**
* 反馈单号
*/
private String feedbackNo;
/**
* 反馈人
*/
private Long feedbackUserId;
/**
* 反馈时间
*/
private Date feedbackTime;
/**
* 反馈文件
*/
private String feedbackFile;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,47 @@
package com.klp.flow.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 受理单关联钢卷中间视图对象 ts_accept_coil_rel
*
* @author klp
* @date 2026-06-18
*/
@Data
@ExcelIgnoreUnannotated
public class TsAcceptCoilRelVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long relId;
/**
* 投诉受理单ID
*/
@ExcelProperty(value = "投诉受理单ID")
private Long acceptId;
/**
* 钢卷ID
*/
@ExcelProperty(value = "钢卷ID")
private Long coilId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,110 @@
package com.klp.flow.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 投诉受理单主视图对象 ts_complaint_accept
*
* @author klp
* @date 2026-06-18
*/
@Data
@ExcelIgnoreUnannotated
public class TsComplaintAcceptVo {
private static final long serialVersionUID = 1L;
/**
* 受理单主键
*/
@ExcelProperty(value = "受理单主键")
private Long acceptId;
/**
* 投诉编号 TS-2026-001
*/
@ExcelProperty(value = "投诉编号 TS-2026-001")
private String complaintNo;
/**
* 投诉日期
*/
@ExcelProperty(value = "投诉日期")
private Date complaintDate;
/**
* 投诉情况描述
*/
@ExcelProperty(value = "投诉情况描述")
private String complaintContent;
/**
* 客户诉求
*/
@ExcelProperty(value = "客户诉求")
private String customerDemand;
/**
* 客户照片凭证等
*/
@ExcelProperty(value = "客户照片凭证等")
private String file;
/**
* 审核状态 0待审核 1已通过 2未通过
*/
@ExcelProperty(value = "审核状态 0待审核 1已通过 2未通过")
private Long auditStatus;
/**
* 审核意见
*/
@ExcelProperty(value = "审核意见")
private String auditOpinion;
/**
* 审核人ID
*/
@ExcelProperty(value = "审核人ID")
private Long auditUserId;
/**
* 审核时间
*/
@ExcelProperty(value = "审核时间")
private Date auditTime;
/**
* 流程阶段:
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=方案下发执行反馈中 5=全部办结
*/
@ExcelProperty(value = "流程阶段")
private Long flowStatus;
/**
* 总负责人ID
*/
@ExcelProperty(value = "总负责人ID")
private Long principalUserId;
/**
* 总负责人整合后的完整处理方案
*/
@ExcelProperty(value = "总负责人整合后的完整处理方案")
private String planContent;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,86 @@
package com.klp.flow.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 各部门投诉代办任务&意见视图对象 ts_complaint_task
*
* @author klp
* @date 2026-06-18
*/
@Data
@ExcelIgnoreUnannotated
public class TsComplaintTaskVo {
private static final long serialVersionUID = 1L;
/**
* 代办任务ID
*/
@ExcelProperty(value = "代办任务ID")
private Long taskId;
/**
* 关联投诉受理单ID
*/
@ExcelProperty(value = "关联投诉受理单ID")
private Long acceptId;
/**
* 负责部门ID销售/质量/生产)
*/
@ExcelProperty(value = "负责部门ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "销=售/质量/生产")
private Long deptId;
/**
* 任务状态 0待填写意见 1已完成填写
*/
@ExcelProperty(value = "任务状态 0待填写意见 1已完成填写")
private Long taskStatus;
/**
* 意见单号
*/
@ExcelProperty(value = "意见单号")
private String fillNo;
/**
* 部门处理意见
*/
@ExcelProperty(value = "部门处理意见")
private String deptOpinion;
/**
* 填写意见的部门员工ID
*/
@ExcelProperty(value = "填写意见的部门员工ID")
private Long fillUserId;
/**
* 意见填写时间
*/
@ExcelProperty(value = "意见填写时间")
private Date fillTime;
/**
* 意见文件
*/
@ExcelProperty(value = "意见文件")
private String fillFile;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,85 @@
package com.klp.flow.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 最终方案下发部门及执行反馈视图对象 ts_plan_execute_rel
*
* @author klp
* @date 2026-06-18
*/
@Data
@ExcelIgnoreUnannotated
public class TsPlanExecuteRelVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long relId;
/**
* 关联最终方案ID
*/
@ExcelProperty(value = "关联最终方案ID")
private Long acceptId;
/**
* 被下发执行的部门ID
*/
@ExcelProperty(value = "被下发执行的部门ID")
private Long deptId;
/**
* 执行状态 0待执行反馈 1已反馈完成
*/
@ExcelProperty(value = "执行状态 0待执行反馈 1已反馈完成")
private Long executeStatus;
/**
* 部门执行结果反馈
*/
@ExcelProperty(value = "部门执行结果反馈")
private String executeResult;
/**
* 反馈单号
*/
@ExcelProperty(value = "反馈单号")
private String feedbackNo;
/**
* 反馈人
*/
@ExcelProperty(value = "反馈人")
private Long feedbackUserId;
/**
* 反馈时间
*/
@ExcelProperty(value = "反馈时间")
private Date feedbackTime;
/**
* 反馈文件
*/
@ExcelProperty(value = "反馈文件")
private String feedbackFile;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}