From 5684575abead00e905a0b3aa6c676668cf57aab0 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Tue, 14 Jul 2026 17:10:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20TransportTaskMapper=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=B9=82=E7=AD=89=E6=9F=A5=E8=AF=A2=E4=B8=8E=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=9B=B4=E6=96=B0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 selectUnfinishedByBiz 方法,按业务类型和业务ID查询未完结任务(幂等校验用) - 新增 updateTaskStatus 方法,基于 CAS 机制条件更新任务状态 - 补充 LambdaUpdateWrapper 导入 --- .../transporttask/TransportTaskMapper.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/dal/mysql/transporttask/TransportTaskMapper.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/dal/mysql/transporttask/TransportTaskMapper.java index 0a4b932c..66d2a5f4 100644 --- a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/dal/mysql/transporttask/TransportTaskMapper.java +++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/dal/mysql/transporttask/TransportTaskMapper.java @@ -4,6 +4,7 @@ import java.util.*; import cn.code.nl.framework.common.pojo.PageResult; import cn.code.nl.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import cn.code.nl.framework.mybatis.core.mapper.BaseMapperX; import cn.code.nl.module.task.dal.dataobject.transporttask.TransportTaskDO; import org.apache.ibatis.annotations.Mapper; @@ -57,4 +58,25 @@ public interface TransportTaskMapper extends BaseMapperX { .orderByDesc(TransportTaskDO::getTaskId)); } + /** + * 按业务归属查询未完结任务(幂等校验用) + */ + default TransportTaskDO selectUnfinishedByBiz(String bizType, String bizId) { + return selectOne(new LambdaQueryWrapperX() + .eq(TransportTaskDO::getBizType, bizType) + .eq(TransportTaskDO::getBizId, bizId) + .lt(TransportTaskDO::getTaskStatus, "067")); + } + + /** + * 条件更新任务状态(CAS 抢占) + */ + default boolean updateTaskStatus(Long taskId, String expectedStatus, String newStatus) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(TransportTaskDO::getTaskId, taskId) + .eq(TransportTaskDO::getTaskStatus, expectedStatus) + .set(TransportTaskDO::getTaskStatus, newStatus); + return update(null, wrapper) > 0; + } + } \ No newline at end of file