feat: 完成售后投诉流程全链路优化与功能完善

本次提交完成了多项核心优化与功能新增:
1.  重构投诉受理流程状态,移除冗余的执行反馈阶段,简化为4个流程节点
2.  新增售后单关联客户、下游用户、工程信息等扩展字段,完善基础信息采集
3.  新增部门结构化意见表单与预览组件,优化部门意见填写与展示流程
4.  新增售后意见汇总页面,支持流程阶段筛选与详情查看
5.  优化合同列表页面,新增重置筛选按钮与默认备注逻辑
6.  新增PDF导出功能,完善钢卷信息展示列
7.  修复逻辑删除级联问题,新增任务过滤逻辑保障数据一致性
This commit is contained in:
2026-06-29 14:58:24 +08:00
parent 9484b64de7
commit da01bfaa48
21 changed files with 1723 additions and 65 deletions

View File

@@ -42,6 +42,30 @@ public class TsComplaintAccept extends BaseEntity {
* 客户诉求
*/
private String customerDemand;
/**
* 关联客户ID
*/
private Long customerId;
/**
* 下游使用用户名称
*/
private String downstreamUserName;
/**
* 电话
*/
private String phone;
/**
* 使用的工程名称
*/
private String projectName;
/**
* 工程使用地点
*/
private String projectLocation;
/**
* 产品用途
*/
private String productUsage;
/**
* 客户照片凭证等
*/
@@ -64,7 +88,7 @@ public class TsComplaintAccept extends BaseEntity {
private Date auditTime;
/**
* 流程阶段:
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=方案下发执行反馈中 5=全部办结
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=全部办结
*/
private Long flowStatus;
/**

View File

@@ -48,6 +48,36 @@ public class TsComplaintAcceptBo extends BaseEntity {
*/
private String customerDemand;
/**
* 关联客户ID
*/
private Long customerId;
/**
* 下游使用用户名称
*/
private String downstreamUserName;
/**
* 电话
*/
private String phone;
/**
* 使用的工程名称
*/
private String projectName;
/**
* 工程使用地点
*/
private String projectLocation;
/**
* 产品用途
*/
private String productUsage;
/**
* 客户照片凭证等
*/
@@ -75,7 +105,7 @@ public class TsComplaintAcceptBo extends BaseEntity {
/**
* 流程阶段:
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=方案下发执行反馈中 5=全部办结
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=全部办结
*/
private Long flowStatus;

View File

@@ -52,6 +52,42 @@ public class TsComplaintAcceptVo extends BaseEntity {
@ExcelProperty(value = "客户诉求")
private String customerDemand;
/**
* 关联客户ID
*/
@ExcelProperty(value = "关联客户ID")
private Long customerId;
/**
* 下游使用用户名称
*/
@ExcelProperty(value = "下游使用用户名称")
private String downstreamUserName;
/**
* 电话
*/
@ExcelProperty(value = "电话")
private String phone;
/**
* 使用的工程名称
*/
@ExcelProperty(value = "使用的工程名称")
private String projectName;
/**
* 工程使用地点
*/
@ExcelProperty(value = "工程使用地点")
private String projectLocation;
/**
* 产品用途
*/
@ExcelProperty(value = "产品用途")
private String productUsage;
/**
* 客户照片凭证等
*/
@@ -84,7 +120,7 @@ public class TsComplaintAcceptVo extends BaseEntity {
/**
* 流程阶段:
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=方案下发执行反馈中 5=全部办结
1=待审核 2=部门意见填写中 3=待总负责人汇总方案 4=全部办结
*/
@ExcelProperty(value = "流程阶段")
private Long flowStatus;

View File

@@ -268,13 +268,27 @@ public class TsComplaintAcceptServiceImpl implements ITsComplaintAcceptService {
}
/**
* 批量删除投诉受理单主
* 批量删除投诉受理单主(级联删除关联的部门任务和执行反馈)
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
if (ids == null || ids.isEmpty()) {
return false;
}
// 级联逻辑删除关联的部门意见任务
tsComplaintTaskMapper.delete(
Wrappers.<TsComplaintTask>lambdaQuery()
.in(TsComplaintTask::getAcceptId, ids)
);
// 级联逻辑删除关联的执行反馈记录
tsPlanExecuteRelMapper.delete(
Wrappers.<TsPlanExecuteRel>lambdaQuery()
.in(TsPlanExecuteRel::getAcceptId, ids)
);
// 删除受理单本身
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -47,6 +47,13 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
public TsComplaintTaskVo queryById(Long taskId){
TsComplaintTaskVo vo = baseMapper.selectVoById(taskId);
if (vo != null) {
// 过滤已逻辑删除的售后单关联任务
if (vo.getAcceptId() != null) {
TsComplaintAcceptVo acceptVo = tsComplaintAcceptMapper.selectVoById(vo.getAcceptId());
if (acceptVo == null) {
return null;
}
}
enrichWithAcceptInfo(Collections.singletonList(vo));
}
return vo;
@@ -115,6 +122,7 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
lqw.eq(bo.getFillTime() != null, TsComplaintTask::getFillTime, bo.getFillTime());
lqw.eq(StringUtils.isNotBlank(bo.getFillFile()), TsComplaintTask::getFillFile, bo.getFillFile());
lqw.eq(bo.getRejectMark() != null, TsComplaintTask::getRejectMark, bo.getRejectMark());
lqw.apply("accept_id IN (SELECT accept_id FROM ts_complaint_accept WHERE del_flag = 0)");
return lqw;
}

View File

@@ -10,6 +10,12 @@
<result property="complaintDate" column="complaint_date"/>
<result property="complaintContent" column="complaint_content"/>
<result property="customerDemand" column="customer_demand"/>
<result property="customerId" column="customer_id"/>
<result property="downstreamUserName" column="downstream_user_name"/>
<result property="phone" column="phone"/>
<result property="projectName" column="project_name"/>
<result property="projectLocation" column="project_location"/>
<result property="productUsage" column="product_usage"/>
<result property="file" column="file"/>
<result property="auditStatus" column="audit_status"/>
<result property="auditOpinion" column="audit_opinion"/>