feat: TransportTaskMapper 新增幂等查询与条件更新方法

- 新增 selectUnfinishedByBiz 方法,按业务类型和业务ID查询未完结任务(幂等校验用)
- 新增 updateTaskStatus 方法,基于 CAS 机制条件更新任务状态
- 补充 LambdaUpdateWrapper 导入
This commit is contained in:
2026-07-14 17:10:04 +08:00
parent a0f1916cf8
commit 5684575abe

View File

@@ -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<TransportTaskDO> {
.orderByDesc(TransportTaskDO::getTaskId));
}
/**
* 按业务归属查询未完结任务(幂等校验用)
*/
default TransportTaskDO selectUnfinishedByBiz(String bizType, String bizId) {
return selectOne(new LambdaQueryWrapperX<TransportTaskDO>()
.eq(TransportTaskDO::getBizType, bizType)
.eq(TransportTaskDO::getBizId, bizId)
.lt(TransportTaskDO::getTaskStatus, "067"));
}
/**
* 条件更新任务状态CAS 抢占)
*/
default boolean updateTaskStatus(Long taskId, String expectedStatus, String newStatus) {
LambdaUpdateWrapper<TransportTaskDO> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(TransportTaskDO::getTaskId, taskId)
.eq(TransportTaskDO::getTaskStatus, expectedStatus)
.set(TransportTaskDO::getTaskStatus, newStatus);
return update(null, wrapper) > 0;
}
}