feat(flow): 添加投诉任务和执行反馈的流程状态同步功能
- 在TsComplaintTaskServiceImpl中新增syncAcceptFlowStatus方法 - 在TsPlanExecuteRelServiceImpl中新增syncAcceptFlowStatus方法 - 添加TsComplaintAcceptMapper依赖注入 - 实现任务状态变更时自动同步受理单流程状态 - 完善部门意见填写和执行反馈的状态判断逻辑 - 添加必要的LambdaUpdateWrapper和相关导入包
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user