package com.ozs.plan.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ozs.common.core.domain.AjaxResult;
import com.ozs.common.core.domain.model.LoginUser;
import com.ozs.plan.doman.PlanYears;
import com.ozs.plan.doman.vo.requestVo.PlanYearsStandardVo;
import com.ozs.plan.doman.vo.responseVo.PlanQuarterResponseVo;
import com.ozs.plan.doman.vo.responseVo.PlanYearsResponseVo;

import java.util.List;

/**
 * 系统访问日志情况信息 服务层
 *
 * @author bu
 */
public interface PlanYearsService extends IService<PlanYears> {


    /**
     * 查询年度计划记录集合--导出
     *
     * @param vo 年度计划请求对象
     * @return 年度计划记录集合
     */
    public List<PlanYearsResponseVo> selectPlanYearsListEXP(PlanYearsStandardVo vo, LoginUser loginUser);

    /**
     * 查询年度计划记录集合(审核单位--导出）
     *
     * @param vo 年度计划请求对象
     * @return 年度计划记录集合
     */
    public List<PlanYearsResponseVo> selectPlanYearsExamineListEXP(PlanYearsStandardVo vo, LoginUser loginUser);

    /**
     * 创建年度计划
     *
     * @param yearsStandardVo 年度计划请求对象
     */
    public AjaxResult insertPlanYears(PlanYearsStandardVo yearsStandardVo);

    /**
     * 批量删除年度计划
     *
     * @param planIds 需要删除的年度计划ID
     * @return 结果
     */
    public AjaxResult deletePlanYearsByIds(Long[] planIds);

    /**
     * 批量删除年度计划
     *
     * @param planYearId 需要删除的年度计划ID
     * @return 结果
     */
    public AjaxResult deletePlanYearsById(Long planYearId);

    /**
     * 根据id获取年度计划信息
     *
     * @param yearsStandardVo 年度计划请求对象
     * @return 结果
     */
    public AjaxResult view(PlanYearsStandardVo yearsStandardVo);

    /**
     * 修改年度计划
     *
     * @param yearsStandardVo 修改年度计划请求对象
     * @return 结果
     */
    public AjaxResult update(PlanYearsStandardVo yearsStandardVo);

    /**
     * 导入年度计划数据
     *
     * @return 结果
     */
    public String importPlanYears(List<PlanYearsStandardVo> planYears, boolean isUpdateSupport, LoginUser loginUser);

    /**
     * 提交年度计划
     *
     * @param yearsStandardVo 提交年度计划请求对象
     * @return 结果
     */
    public AjaxResult commit(PlanYearsStandardVo yearsStandardVo);

    /**
     * 审核年度计划
     *
     * @param yearsStandardVo 需要审核的年度计划
     * @return 结果
     */
    public AjaxResult reviewTo(PlanYearsStandardVo yearsStandardVo);

    /**
     * 审核年度计划退回
     *
     * @param yearsStandardVo 需要审核的年度计划
     * @return 结果
     */
    public AjaxResult reviewReturn(PlanYearsStandardVo yearsStandardVo);

    /**
     * 申请修改年度计划
     *
     * @param yearsStandardVo 需要修改的年度计划
     * @return 结果
     */
    public AjaxResult appUpdate(PlanYearsStandardVo yearsStandardVo);

    /**
     * 发函催告
     *
     * @param yearsStandardVo 年度计划
     * @return 结果
     */
    AjaxResult sendLetter(PlanYearsStandardVo yearsStandardVo);

    /**
     * 上传计划关联文件后保存文件信息
     *
     * @param yearsStandardVo 年度计划
     * @return 结果
     */
    AjaxResult upLoadPlanFile(PlanYearsStandardVo yearsStandardVo);

    /**
     * 下载计划关联文件
     *
     * @param yearsStandardVo 年度计划
     * @return 结果
     */
    AjaxResult downLoadPlanFile(PlanYearsStandardVo yearsStandardVo);

    /**
     * 需求单位首页计划管理总数
     *
     * @return
     */
    AjaxResult demandUnitPlanManagementTotal();

    /**
     * 采购管理部门首页计划管理总数
     *
     * @return
     */
    AjaxResult purchasingManagementPurchasingManagementTotal();

    /**
     * 需求单位首页需求管理总数
     *
     * @return
     */
    AjaxResult demandUnitDemandManagementTotal();

    /**
     * 采购管理部门首页需求管理总数
     *
     * @return
     */
    AjaxResult purchasingManagementDemandManagementTotal();

    /**
     * 需求单位首页合同管理总数
     *
     * @return
     */
    AjaxResult demandUnitContractManagementTotal();

    /**
     * 需求单位首页建设管理总数
     *
     * @return
     */
    AjaxResult demandUnitConstructionManagementTotal();

    /**
     * 采购管理部门首页任务下达管理总数
     *
     * @return
     */
    AjaxResult purchasingManagementTaskReleaseTotal();

    /**
     * 采购办首页采购执行管理总数
     *
     * @return
     */
    AjaxResult procurementOfficeProcurementExecutionTotal();

    /**
     * 采购办首已中标项目理总数
     *
     * @return
     */
    AjaxResult procurementOfficeWinningTheBidTotal();

    /**
     * 采购办首未中标项目理总数
     *
     * @return
     */
    AjaxResult procurementOfficeFailureToWinTheBidTotal();

    /**
     * 查询需求单位待办事项(计划待提交)
     *
     * @return
     */
    List<PlanQuarterResponseVo> planWaitCommit();

    /**
     * 采购管理部门首页待办事项(计划待审核)
     *
     * @return
     */
    List<PlanQuarterResponseVo> planWaitExamine();


    /**
     * 需求单位首页待办事项（全部)
     *
     * @return
     */
    AjaxResult demandUnitWillManipulateTotal();

    /**
     * 采购办首页待办事项（发函催告）
     *
     * @return
     */
    List<PlanQuarterResponseVo> willSendLetter();

    /**
     * 采购管理部门首页待办事项（全部)
     *
     * @return
     */
    AjaxResult purchasingManagementWillManipulateTotal();

    /**
     * 通过年度ID，查询季度、临时计划详情，通过季度、临时计划ID查询项目
     *
     * @param yearsStandardVo
     * @return
     */
    AjaxResult projectDetails(PlanYearsStandardVo yearsStandardVo);

    /**
     * 查询审核分页
     */
    List<PlanYears> queryPage(PlanYearsStandardVo vo);

    List<PlanYearsResponseVo> changeTo(List<PlanYears> planYears);
}
