feat: TransportTaskMapper 新增幂等查询与条件更新方法
- 新增 selectUnfinishedByBiz 方法,按业务类型和业务ID查询未完结任务(幂等校验用) - 新增 updateTaskStatus 方法,基于 CAS 机制条件更新任务状态 - 补充 LambdaUpdateWrapper 导入
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user