From c33b27d17470b443f20d7563785c6feca9677dbf Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sun, 21 Jun 2026 14:57:38 +0800 Subject: [PATCH] =?UTF-8?q?feat(flow):=20=E6=B7=BB=E5=8A=A0=E6=84=8F?= =?UTF-8?q?=E8=A7=81=E4=B8=8B=E5=8F=91=E5=92=8C=E5=8F=8D=E9=A6=88=E4=B8=8B?= =?UTF-8?q?=E5=8F=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在ITsComplaintAcceptService中新增opinionDispatch和feedbackDispatch方法 - 在TsComplaintAcceptController中添加对应的意见下发和反馈下发接口 - 实现opinionDispatch功能:修改flow_status=2并按字典创建代办任务 - 实现feedbackDispatch功能:修改flow_status=4并按字典创建执行反馈记录 - 调整同步流程状态逻辑,移除重复的状态更新代码 - 新增相关实体类和服务层依赖注入 --- .../TsComplaintAcceptController.java | 24 +++++++ .../service/ITsComplaintAcceptService.java | 10 +++ .../impl/TsComplaintAcceptServiceImpl.java | 71 +++++++++++++++++++ .../impl/TsComplaintTaskServiceImpl.java | 15 ++-- .../impl/TsPlanExecuteRelServiceImpl.java | 17 ++--- 5 files changed, 122 insertions(+), 15 deletions(-) diff --git a/klp-flow/src/main/java/com/klp/flow/controller/TsComplaintAcceptController.java b/klp-flow/src/main/java/com/klp/flow/controller/TsComplaintAcceptController.java index ce31c4e8..f53911f8 100644 --- a/klp-flow/src/main/java/com/klp/flow/controller/TsComplaintAcceptController.java +++ b/klp-flow/src/main/java/com/klp/flow/controller/TsComplaintAcceptController.java @@ -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 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 feedbackDispatch(@NotNull(message = "主键不能为空") + @PathVariable Long acceptId) { + return toAjax(iTsComplaintAcceptService.feedbackDispatch(acceptId)); + } } diff --git a/klp-flow/src/main/java/com/klp/flow/service/ITsComplaintAcceptService.java b/klp-flow/src/main/java/com/klp/flow/service/ITsComplaintAcceptService.java index d3276533..c1ab0a4a 100644 --- a/klp-flow/src/main/java/com/klp/flow/service/ITsComplaintAcceptService.java +++ b/klp-flow/src/main/java/com/klp/flow/service/ITsComplaintAcceptService.java @@ -46,4 +46,14 @@ public interface ITsComplaintAcceptService { * 校验并批量删除投诉受理单主信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 意见下发:修改flow_status=2,按字典flow_coil_objection部门创建代办任务 + */ + Boolean opinionDispatch(Long acceptId); + + /** + * 反馈下发:修改flow_status=4,按字典flow_coil_objection部门创建执行反馈记录 + */ + Boolean feedbackDispatch(Long acceptId); } diff --git a/klp-flow/src/main/java/com/klp/flow/service/impl/TsComplaintAcceptServiceImpl.java b/klp-flow/src/main/java/com/klp/flow/service/impl/TsComplaintAcceptServiceImpl.java index fa863cd5..860fe559 100644 --- a/klp-flow/src/main/java/com/klp/flow/service/impl/TsComplaintAcceptServiceImpl.java +++ b/klp-flow/src/main/java/com/klp/flow/service/impl/TsComplaintAcceptServiceImpl.java @@ -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 dictList = DictUtils.getDictCache("flow_coil_objection"); + if (dictList == null || dictList.isEmpty()) { + return false; + } + // 更新受理单流程状态为2(部门意见填写中) + LambdaUpdateWrapper 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 dictList = DictUtils.getDictCache("flow_coil_objection"); + if (dictList == null || dictList.isEmpty()) { + return false; + } + // 更新受理单流程状态为4(方案下发执行反馈中) + LambdaUpdateWrapper 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; + } + /** * 保存前的数据校验 */ diff --git a/klp-flow/src/main/java/com/klp/flow/service/impl/TsComplaintTaskServiceImpl.java b/klp-flow/src/main/java/com/klp/flow/service/impl/TsComplaintTaskServiceImpl.java index 28b0a808..538b5d64 100644 --- a/klp-flow/src/main/java/com/klp/flow/service/impl/TsComplaintTaskServiceImpl.java +++ b/klp-flow/src/main/java/com/klp/flow/service/impl/TsComplaintTaskServiceImpl.java @@ -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 uw = Wrappers.lambdaUpdate(); - uw.eq(TsComplaintAccept::getAcceptId, acceptId) - .set(TsComplaintAccept::getFlowStatus, targetFlowStatus); - tsComplaintAcceptMapper.update(null, uw); + if (allCompleted) { + // 更新受理单流程状态为3(待总负责人汇总方案) + LambdaUpdateWrapper uw = Wrappers.lambdaUpdate(); + uw.eq(TsComplaintAccept::getAcceptId, acceptId) + .set(TsComplaintAccept::getFlowStatus, 3L); + tsComplaintAcceptMapper.update(null, uw); + } } /** diff --git a/klp-flow/src/main/java/com/klp/flow/service/impl/TsPlanExecuteRelServiceImpl.java b/klp-flow/src/main/java/com/klp/flow/service/impl/TsPlanExecuteRelServiceImpl.java index b13a61df..55145c70 100644 --- a/klp-flow/src/main/java/com/klp/flow/service/impl/TsPlanExecuteRelServiceImpl.java +++ b/klp-flow/src/main/java/com/klp/flow/service/impl/TsPlanExecuteRelServiceImpl.java @@ -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 uw = Wrappers.lambdaUpdate(); - uw.eq(TsComplaintAccept::getAcceptId, acceptId) - .set(TsComplaintAccept::getFlowStatus, targetFlowStatus); - tsComplaintAcceptMapper.update(null, uw); + if (allCompleted) { + // 更新受理单流程状态为5(全部办结) + LambdaUpdateWrapper uw = Wrappers.lambdaUpdate(); + uw.eq(TsComplaintAccept::getAcceptId, acceptId) + .set(TsComplaintAccept::getFlowStatus, 5L); + tsComplaintAcceptMapper.update(null, uw); + } } /**