xiaoyi
4 天以前 05ab6e3f69a5e73624b2573db043f5923e8f7d8b
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/task/MesProTaskMapper.java
@@ -23,6 +23,17 @@
@Mapper
public interface MesProTaskMapper extends BaseMapperX<MesProTaskDO> {
    /** 所有排产写入口以相同顺序锁定工作站;事务提交后释放,跨进程防止资源竞态。 */
    @org.apache.ibatis.annotations.Select("SELECT id FROM mes_md_workstation WHERE deleted = 0 ORDER BY id FOR UPDATE")
    List<Long> lockSchedulingResources();
    default List<MesProTaskDO> selectSchedulingTasks() {
        return selectList(new LambdaQueryWrapperX<MesProTaskDO>()
                .and(query -> query.isNull(MesProTaskDO::getStatus).or()
                        .notIn(MesProTaskDO::getStatus, MesProTaskStatusEnum.CANCELED.getStatus(), MesProTaskStatusEnum.FINISHED.getStatus()))
                .orderByAsc(MesProTaskDO::getId));
    }
    default PageResult<MesProTaskDO> selectPage(MesProTaskPageReqVO reqVO) {
        MPJLambdaWrapperX<MesProTaskDO> query = new MPJLambdaWrapperX<>();
        query.selectAll(MesProTaskDO.class);
@@ -69,6 +80,19 @@
        return selectPage(reqVO, query);
    }
    /**
     * 查询工作站上正在运行的任务:生产中、部分完成、已停工
     */
    default MesProTaskDO selectRunningTaskByWorkstationId(Long workstationId) {
        return selectOne(new LambdaQueryWrapperX<MesProTaskDO>()
                .eq(MesProTaskDO::getWorkstationId, workstationId)
                .in(MesProTaskDO::getStatus, MesProTaskStatusEnum.PRODUCING.getStatus(),
                        MesProTaskStatusEnum.PARTIAL_FINISHED.getStatus(), MesProTaskStatusEnum.PAUSED.getStatus())
                .orderByDesc(MesProTaskDO::getLastFeedbackTime)
                .orderByDesc(MesProTaskDO::getId)
                .last("LIMIT 1"));
    }
    default List<MesProTaskDO> selectListByWorkOrderId(Long workOrderId) {
        return selectList(new LambdaQueryWrapperX<MesProTaskDO>()
                .eqIfPresent(MesProTaskDO::getWorkOrderId, workOrderId)