package com.jwipc.order.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jwipc.order.entity.BasicPlan;
import com.jwipc.order.model.po.BasicForecastPlanReleasePO;
import com.jwipc.order.model.po.BasicPlanPO;
import com.jwipc.order.model.query.BasicPlanQuery;

import java.util.List;

/**
 * @Author: swq
 * @Date: 2024/3/12 16:38
 */
public interface IBasicPlanService extends IService<BasicPlan> {
    /**
     * 查询列表数据
     * @param dbPage
     * @param query
     * @return
     */
    List<BasicPlanPO> selectListByPage(Page<BasicPlan> dbPage, BasicPlanQuery query);

    long findMaxVersion();

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

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


    /**
     * 获取计划待发布总量，已发布总量和未发布总量
     *
     * @param query 查询条件
     * @return 结果
     */
    BasicForecastPlanReleasePO findPlanSituation(BasicPlanQuery query);
    /**
     * 获取最新的流水号
     *
     * @param tableName     表明
     * @param excludePlanId 排除的计划
     */
    String findNewSerialNumber(String tableName,Long excludePlanId,Integer jitFlag);
    /**
     * 失效所有计划
     */
    void invalidAllPlanData();

    /**
     * 物料号对应配额调整
     */
    void updateQuota(String productCode,String supplierCode, String factoryCode, String oriQuota,String adjustmentQuota);
}
