feat(flow): 添加投诉任务和执行反馈的流程状态同步功能

- 在TsComplaintTaskServiceImpl中新增syncAcceptFlowStatus方法
- 在TsPlanExecuteRelServiceImpl中新增syncAcceptFlowStatus方法
- 添加TsComplaintAcceptMapper依赖注入
- 实现任务状态变更时自动同步受理单流程状态
- 完善部门意见填写和执行反馈的状态判断逻辑
- 添加必要的LambdaUpdateWrapper和相关导入包
This commit is contained in:
2026-06-21 14:46:06 +08:00
parent ca094574f5
commit 691c8289dd
2 changed files with 76 additions and 2 deletions

View File

@@ -1,12 +1,15 @@
package com.klp.flow.service.impl; package com.klp.flow.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery; import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils; import com.klp.common.utils.StringUtils;
import com.klp.flow.domain.TsComplaintAccept;
import com.klp.flow.mapper.TsComplaintAcceptMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.klp.flow.domain.bo.TsComplaintTaskBo; import com.klp.flow.domain.bo.TsComplaintTaskBo;
@@ -31,6 +34,8 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
private final TsComplaintTaskMapper baseMapper; private final TsComplaintTaskMapper baseMapper;
private final TsComplaintAcceptMapper tsComplaintAcceptMapper;
/** /**
* 查询各部门投诉代办任务&意见 * 查询各部门投诉代办任务&意见
*/ */
@@ -82,6 +87,8 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setTaskId(add.getTaskId()); bo.setTaskId(add.getTaskId());
// 同步受理单流程状态
syncAcceptFlowStatus(add.getAcceptId());
} }
return flag; return flag;
} }
@@ -93,7 +100,37 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
public Boolean updateByBo(TsComplaintTaskBo bo) { public Boolean updateByBo(TsComplaintTaskBo bo) {
TsComplaintTask update = BeanUtil.toBean(bo, TsComplaintTask.class); TsComplaintTask update = BeanUtil.toBean(bo, TsComplaintTask.class);
validEntityBeforeSave(update); validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0; boolean flag = baseMapper.updateById(update) > 0;
if (flag){
syncAcceptFlowStatus(update.getAcceptId());
}
return flag;
}
/**
* 同步受理单流程状态
* 查看当前受理单下所有代办任务:
* - 所有task_status都为1 → flow_status = 3待总负责人汇总方案
* - 存在任一task_status不为1 → flow_status = 2部门意见填写中
*/
private void syncAcceptFlowStatus(Long acceptId) {
if (acceptId == null) {
return;
}
// 查询该受理单下所有未删除的代办任务
List<TsComplaintTask> taskList = baseMapper.selectList(
Wrappers.<TsComplaintTask>lambdaQuery()
.eq(TsComplaintTask::getAcceptId, acceptId)
);
// 判断所有任务是否都已完成taskStatus = 1
boolean allCompleted = !taskList.isEmpty() && taskList.stream()
.allMatch(task -> task.getTaskStatus() != null && task.getTaskStatus() == 1L);
Long targetFlowStatus = allCompleted ? 3L : 2L;
// 更新受理单流程状态
LambdaUpdateWrapper<TsComplaintAccept> uw = Wrappers.lambdaUpdate();
uw.eq(TsComplaintAccept::getAcceptId, acceptId)
.set(TsComplaintAccept::getFlowStatus, targetFlowStatus);
tsComplaintAcceptMapper.update(null, uw);
} }
/** /**

View File

@@ -5,8 +5,11 @@ import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery; import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils; import com.klp.common.utils.StringUtils;
import com.klp.flow.domain.TsComplaintAccept;
import com.klp.flow.mapper.TsComplaintAcceptMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.klp.flow.domain.bo.TsPlanExecuteRelBo; import com.klp.flow.domain.bo.TsPlanExecuteRelBo;
@@ -31,6 +34,8 @@ public class TsPlanExecuteRelServiceImpl implements ITsPlanExecuteRelService {
private final TsPlanExecuteRelMapper baseMapper; private final TsPlanExecuteRelMapper baseMapper;
private final TsComplaintAcceptMapper tsComplaintAcceptMapper;
/** /**
* 查询最终方案下发部门及执行反馈 * 查询最终方案下发部门及执行反馈
*/ */
@@ -82,6 +87,8 @@ public class TsPlanExecuteRelServiceImpl implements ITsPlanExecuteRelService {
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setRelId(add.getRelId()); bo.setRelId(add.getRelId());
// 同步受理单流程状态
syncAcceptFlowStatus(add.getAcceptId());
} }
return flag; return flag;
} }
@@ -93,7 +100,37 @@ public class TsPlanExecuteRelServiceImpl implements ITsPlanExecuteRelService {
public Boolean updateByBo(TsPlanExecuteRelBo bo) { public Boolean updateByBo(TsPlanExecuteRelBo bo) {
TsPlanExecuteRel update = BeanUtil.toBean(bo, TsPlanExecuteRel.class); TsPlanExecuteRel update = BeanUtil.toBean(bo, TsPlanExecuteRel.class);
validEntityBeforeSave(update); validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0; boolean flag = baseMapper.updateById(update) > 0;
if (flag) {
syncAcceptFlowStatus(update.getAcceptId());
}
return flag;
}
/**
* 同步受理单流程状态
* 查看当前受理单下所有执行反馈:
* - 所有execute_status都为1 → flow_status = 5执行完成
* - 存在任一execute_status不为1 → flow_status = 4执行反馈中
*/
private void syncAcceptFlowStatus(Long acceptId) {
if (acceptId == null) {
return;
}
// 查询该受理单下所有执行反馈记录
List<TsPlanExecuteRel> relList = baseMapper.selectList(
Wrappers.<TsPlanExecuteRel>lambdaQuery()
.eq(TsPlanExecuteRel::getAcceptId, acceptId)
);
// 判断所有执行反馈是否都已完成executeStatus = 1
boolean allCompleted = !relList.isEmpty() && relList.stream()
.allMatch(rel -> rel.getExecuteStatus() != null && rel.getExecuteStatus() == 1L);
Long targetFlowStatus = allCompleted ? 5L : 4L;
// 更新受理单流程状态
LambdaUpdateWrapper<TsComplaintAccept> uw = Wrappers.lambdaUpdate();
uw.eq(TsComplaintAccept::getAcceptId, acceptId)
.set(TsComplaintAccept::getFlowStatus, targetFlowStatus);
tsComplaintAcceptMapper.update(null, uw);
} }
/** /**