package com.jwipc.order.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jwipc.order.entity.ShortagePlan;
import com.jwipc.order.model.po.ShortagePlanPO;
import com.jwipc.order.model.po.ShortagePlanReleasePO;
import com.jwipc.order.model.query.BasicPlanQuery;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 欠料标准预测计划 Mapper 接口
 * </p>
 *
 * @author swq
 * @since 2024-04-28
 */
public interface ShortagePlanMapper extends BaseMapper<ShortagePlan> {
    /**
     * 查询列表数据 不分页
     * @param query
     * @return
     */
    List<ShortagePlanPO> selectListByPage(@Param("query") BasicPlanQuery query);

    /**
     * 查询列表数据 分页
     * @param dbPage
     * @param query
     * @return
     */
    List<ShortagePlanPO> selectListByPage(@Param("dbPage") Page<ShortagePlan> dbPage, @Param("query") BasicPlanQuery query);

    /**
     * 查找最大的版本号
     */
    long findMaxVersion();

    /**
     * 根据当前版本查询上个版本
     *
     * @param version 当前版本
     * @return 上个版本
     */
    Long findPreviousVersion(Long version);

    /**
     * 获取待发布的计划数据
     *
     * @param query 查询条件
     * @return 结果
     */
    List<ShortagePlanReleasePO> findWaitReleaseData(@Param("query") BasicPlanQuery query);
    /**
     * 获取待发布的计划数据
     *
     * @param toPage 分页条件
     * @param query 查询条件
     * @return 结果
     */
    List<ShortagePlanReleasePO> findWaitReleaseData(Page<ShortagePlanReleasePO> toPage, @Param("query") BasicPlanQuery query);


    /**
     * 获取计划待发布总量，已发布总量和未发布总量
     *
     * @param query 查询条件
     * @return 结果
     */
    ShortagePlanReleasePO findPlanSituation(@Param("query") BasicPlanQuery query);

    /**
     * 获取最新的流水号
     *
     * @param tableName     表明
     * @param excludePlanId 排除的计划
     */
    String findNewSerialNumber(@Param("excludePlanId") Long excludePlanId);

}
