feat: 完成售后投诉流程全链路优化与功能完善
本次提交完成了多项核心优化与功能新增: 1. 重构投诉受理流程状态,移除冗余的执行反馈阶段,简化为4个流程节点 2. 新增售后单关联客户、下游用户、工程信息等扩展字段,完善基础信息采集 3. 新增部门结构化意见表单与预览组件,优化部门意见填写与展示流程 4. 新增售后意见汇总页面,支持流程阶段筛选与详情查看 5. 优化合同列表页面,新增重置筛选按钮与默认备注逻辑 6. 新增PDF导出功能,完善钢卷信息展示列 7. 修复逻辑删除级联问题,新增任务过滤逻辑保障数据一致性
This commit is contained in:
@@ -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;
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user