xiaoyi
7 天以前 9daeb6eac6e46710055e625bbbd56331b8890e21
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/mps/MesProMpsMapper.java
@@ -63,15 +63,34 @@
        return selectOne(MesProMpsDO::getCode, code);
    }
    /**
     * 按工单查询 MPS。
     *
     * 合并下发时多个 MPS 会指向同一个工单,因此这里必须限制只取一条,
     * 否则 MyBatis-Plus 的 selectOne 会抛 TooManyResultsException,导致报工无法完工。
     */
    default MesProMpsDO selectByWorkOrderId(Long workOrderId) {
        return selectOne(new LambdaQueryWrapperX<MesProMpsDO>()
                .eq(MesProMpsDO::getWorkOrderId, workOrderId)
                .orderByDesc(MesProMpsDO::getId)
                .last("LIMIT 1"));
    }
    default MesProMpsDO selectBySaleOrderItemId(Long saleOrderItemId) {
        return selectOne(MesProMpsDO::getSaleOrderItemId, saleOrderItemId);
        return selectOne(new LambdaQueryWrapperX<MesProMpsDO>()
                .eq(MesProMpsDO::getSaleOrderItemId, saleOrderItemId)
                .orderByDesc(MesProMpsDO::getId)
                .last("LIMIT 1"));
    }
    default List<MesProMpsDO> selectListBySaleOrderItemIds(Collection<Long> saleOrderItemIds) {
        if (saleOrderItemIds == null || saleOrderItemIds.isEmpty()) {
            return Collections.emptyList();
        }
        return selectList(MesProMpsDO::getSaleOrderItemId, saleOrderItemIds);
        // 同一销售明细可能存在“旧计划已取消、新计划重新创建”的历史记录;按 ID 升序,调用方取最后一条即最新计划
        return selectList(new LambdaQueryWrapperX<MesProMpsDO>()
                .in(MesProMpsDO::getSaleOrderItemId, saleOrderItemIds)
                .orderByAsc(MesProMpsDO::getId));
    }
    /**