feat(flow): 添加意见下发和反馈下发功能
- 在ITsComplaintAcceptService中新增opinionDispatch和feedbackDispatch方法 - 在TsComplaintAcceptController中添加对应的意见下发和反馈下发接口 - 实现opinionDispatch功能:修改flow_status=2并按字典创建代办任务 - 实现feedbackDispatch功能:修改flow_status=4并按字典创建执行反馈记录 - 调整同步流程状态逻辑,移除重复的状态更新代码 - 新增相关实体类和服务层依赖注入
This commit is contained in:
@@ -96,4 +96,28 @@ public class TsComplaintAcceptController extends BaseController {
|
||||
@PathVariable Long[] acceptIds) {
|
||||
return toAjax(iTsComplaintAcceptService.deleteWithValidByIds(Arrays.asList(acceptIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 意见下发:修改flow_status=2,按字典部门创建代办任务
|
||||
*
|
||||
* @param acceptId 受理单ID
|
||||
*/
|
||||
@Log(title = "意见下发", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/opinionDispatch/{acceptId}")
|
||||
public R<Void> opinionDispatch(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long acceptId) {
|
||||
return toAjax(iTsComplaintAcceptService.opinionDispatch(acceptId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 反馈下发:修改flow_status=4,按字典部门创建执行反馈记录
|
||||
*
|
||||
* @param acceptId 受理单ID
|
||||
*/
|
||||
@Log(title = "反馈下发", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/feedbackDispatch/{acceptId}")
|
||||
public R<Void> feedbackDispatch(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long acceptId) {
|
||||
return toAjax(iTsComplaintAcceptService.feedbackDispatch(acceptId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,4 +46,14 @@ public interface ITsComplaintAcceptService {
|
||||
* 校验并批量删除投诉受理单主信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 意见下发:修改flow_status=2,按字典flow_coil_objection部门创建代办任务
|
||||
*/
|
||||
Boolean opinionDispatch(Long acceptId);
|
||||
|
||||
/**
|
||||
* 反馈下发:修改flow_status=4,按字典flow_coil_objection部门创建执行反馈记录
|
||||
*/
|
||||
Boolean feedbackDispatch(Long acceptId);
|
||||
}
|
||||
|
||||
@@ -5,14 +5,21 @@ import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.klp.common.core.domain.entity.SysDictData;
|
||||
import com.klp.common.utils.DictUtils;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.flow.domain.bo.TsComplaintAcceptBo;
|
||||
import com.klp.flow.domain.vo.TsComplaintAcceptVo;
|
||||
import com.klp.flow.domain.TsComplaintAccept;
|
||||
import com.klp.flow.domain.TsComplaintTask;
|
||||
import com.klp.flow.domain.TsPlanExecuteRel;
|
||||
import com.klp.flow.mapper.TsComplaintAcceptMapper;
|
||||
import com.klp.flow.mapper.TsComplaintTaskMapper;
|
||||
import com.klp.flow.mapper.TsPlanExecuteRelMapper;
|
||||
import com.klp.flow.service.ITsComplaintAcceptService;
|
||||
|
||||
import java.util.List;
|
||||
@@ -31,6 +38,10 @@ public class TsComplaintAcceptServiceImpl implements ITsComplaintAcceptService {
|
||||
|
||||
private final TsComplaintAcceptMapper baseMapper;
|
||||
|
||||
private final TsComplaintTaskMapper tsComplaintTaskMapper;
|
||||
|
||||
private final TsPlanExecuteRelMapper tsPlanExecuteRelMapper;
|
||||
|
||||
/**
|
||||
* 查询投诉受理单主
|
||||
*/
|
||||
@@ -100,6 +111,66 @@ public class TsComplaintAcceptServiceImpl implements ITsComplaintAcceptService {
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 意见下发
|
||||
* 修改受理单flow_status=2,按字典flow_coil_objection的部门创建代办任务
|
||||
*/
|
||||
@Override
|
||||
public Boolean opinionDispatch(Long acceptId) {
|
||||
if (acceptId == null) {
|
||||
return false;
|
||||
}
|
||||
// 从字典获取需要下发的部门ID列表
|
||||
List<SysDictData> dictList = DictUtils.getDictCache("flow_coil_objection");
|
||||
if (dictList == null || dictList.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
// 更新受理单流程状态为2(部门意见填写中)
|
||||
LambdaUpdateWrapper<TsComplaintAccept> uw = Wrappers.lambdaUpdate();
|
||||
uw.eq(TsComplaintAccept::getAcceptId, acceptId)
|
||||
.set(TsComplaintAccept::getFlowStatus, 2L);
|
||||
baseMapper.update(null, uw);
|
||||
// 按部门创建代办任务
|
||||
for (SysDictData dict : dictList) {
|
||||
TsComplaintTask task = new TsComplaintTask();
|
||||
task.setAcceptId(acceptId);
|
||||
task.setDeptId(Long.valueOf(dict.getDictValue()));
|
||||
task.setTaskStatus(0L);
|
||||
tsComplaintTaskMapper.insert(task);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 反馈下发
|
||||
* 修改受理单flow_status=4,按字典flow_coil_objection的部门创建执行反馈记录
|
||||
*/
|
||||
@Override
|
||||
public Boolean feedbackDispatch(Long acceptId) {
|
||||
if (acceptId == null) {
|
||||
return false;
|
||||
}
|
||||
// 从字典获取需要下发的部门ID列表
|
||||
List<SysDictData> dictList = DictUtils.getDictCache("flow_coil_objection");
|
||||
if (dictList == null || dictList.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
// 更新受理单流程状态为4(方案下发执行反馈中)
|
||||
LambdaUpdateWrapper<TsComplaintAccept> uw = Wrappers.lambdaUpdate();
|
||||
uw.eq(TsComplaintAccept::getAcceptId, acceptId)
|
||||
.set(TsComplaintAccept::getFlowStatus, 4L);
|
||||
baseMapper.update(null, uw);
|
||||
// 按部门创建执行反馈记录
|
||||
for (SysDictData dict : dictList) {
|
||||
TsPlanExecuteRel rel = new TsPlanExecuteRel();
|
||||
rel.setAcceptId(acceptId);
|
||||
rel.setDeptId(Long.valueOf(dict.getDictValue()));
|
||||
rel.setExecuteStatus(0L);
|
||||
tsPlanExecuteRelMapper.insert(rel);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
|
||||
@@ -111,7 +111,7 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
|
||||
* 同步受理单流程状态
|
||||
* 查看当前受理单下所有代办任务:
|
||||
* - 所有task_status都为1 → flow_status = 3(待总负责人汇总方案)
|
||||
* - 存在任一task_status不为1 → flow_status = 2(部门意见填写中)
|
||||
* (flow_status=2由意见下发接口设置,此处不再处理)
|
||||
*/
|
||||
private void syncAcceptFlowStatus(Long acceptId) {
|
||||
if (acceptId == null) {
|
||||
@@ -125,12 +125,13 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
|
||||
// 判断所有任务是否都已完成(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);
|
||||
if (allCompleted) {
|
||||
// 更新受理单流程状态为3(待总负责人汇总方案)
|
||||
LambdaUpdateWrapper<TsComplaintAccept> uw = Wrappers.lambdaUpdate();
|
||||
uw.eq(TsComplaintAccept::getAcceptId, acceptId)
|
||||
.set(TsComplaintAccept::getFlowStatus, 3L);
|
||||
tsComplaintAcceptMapper.update(null, uw);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -110,8 +110,8 @@ public class TsPlanExecuteRelServiceImpl implements ITsPlanExecuteRelService {
|
||||
/**
|
||||
* 同步受理单流程状态
|
||||
* 查看当前受理单下所有执行反馈:
|
||||
* - 所有execute_status都为1 → flow_status = 5(执行完成)
|
||||
* - 存在任一execute_status不为1 → flow_status = 4(执行反馈中)
|
||||
* - 所有execute_status都为1 → flow_status = 5(全部办结)
|
||||
* (flow_status=4由反馈下发接口设置,此处不再处理)
|
||||
*/
|
||||
private void syncAcceptFlowStatus(Long acceptId) {
|
||||
if (acceptId == null) {
|
||||
@@ -125,12 +125,13 @@ public class TsPlanExecuteRelServiceImpl implements ITsPlanExecuteRelService {
|
||||
// 判断所有执行反馈是否都已完成(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);
|
||||
if (allCompleted) {
|
||||
// 更新受理单流程状态为5(全部办结)
|
||||
LambdaUpdateWrapper<TsComplaintAccept> uw = Wrappers.lambdaUpdate();
|
||||
uw.eq(TsComplaintAccept::getAcceptId, acceptId)
|
||||
.set(TsComplaintAccept::getFlowStatus, 5L);
|
||||
tsComplaintAcceptMapper.update(null, uw);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user