package com.zd.airbottle.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.zd.airbottle.domain.QpTask;
import com.zd.airbottle.domain.vo.QpAirGoodsConfigRelationVo;
import com.zd.airbottle.domain.vo.QpTaskVO;

/**
 * 待办清单Service接口
 *
 * @author zd
 * @date 2022-05-11
 */
public interface IQpTaskService
{
    /**
     * 查询待办清单
     *
     * @param id 待办清单主键
     * @return 待办清单
     */
    QpTaskVO selectQpTaskById(Long id);

    /**
     * 查询待办清单列表
     *
     * @param qpTask 待办清单
     * @return 待办清单集合
     */
    List<QpTaskVO> selectQpTaskList(QpTaskVO qpTask);

    /**
     * 查询申领记录列表
     *
     * @param qpTask 申领记录
     * @return 申领记录集合
     */
    List<QpTaskVO> selectQpTaskRecordList(QpTaskVO qpTask);

    /**
     * 新增待办清单
     *
     * @param qpTaskVO 待办清单
     * @return 结果
     */
    int insertQpTask(QpTaskVO qpTaskVO);

    /**
     * 修改待办清单
     *
     * @param qpTaskVO 待办清单
     * @return 结果
     */
    int updateQpTask(QpTaskVO qpTaskVO);

    /**
     * 批量删除待办清单
     *
     * @param ids 需要删除的待办清单主键集合
     * @return 结果
     */
    int deleteQpTaskByIds(Long[] ids);

    /**
     * 删除待办清单信息
     *
     * @param id 待办清单主键
     * @return 结果
     */
    int deleteQpTaskById(Long id);

    /**
     * 小程序日期查询
     * @param qpTaskVO
     * @return
     */
    List<QpTaskVO> selectQpTaskListOrderByDate(QpTaskVO qpTaskVO);

    /**
     * 小程序供气回收记录日期查询
     * @param qpTaskVO
     * @return
     */
    List<QpTaskVO> selectQpTaskListOrderByDateReclaim(QpTaskVO qpTaskVO);

    /**
     * 申请记录列表
     * @param applyName 申请人/联系电话/实验地点
     * @param applyTime 申请时间
     * @return 数据集合
     */
    List<QpTask> getApplyList(String applyName, Date applyTime);

    /**
     * 实验室信息关联查询
     * @param qpTaskVO
     * @return
     */
    public List<QpTaskVO> selectQpTaskBySubjectRelation(QpTaskVO qpTaskVO);

    /***
     * 气瓶使用记录按照实验室分组
     * @param qpTaskVO
     * @return
     */
    List<QpTaskVO> selectUseRecord(QpTaskVO qpTaskVO);

    /***
     * 实验室下的气瓶使用情况
     * @param qpTaskVO
     * @return
     */
    List<QpAirGoodsConfigRelationVo> selectUseRecordBySubjectId(QpTaskVO qpTaskVO);

    /**
     * 根据当前登录用户 查询待办清单申请集合
     * @param qpTaskVO
     * @return
     */
    List<QpTaskVO> selectQpTaskListCount(QpTaskVO qpTaskVO);

    /**
     * 查询某个实验室配置的气瓶数量信息
     * @return
     */
    List<Map<String, Object>> selectSubjectDetail(Long subjectId);

    /**
     * 根基主键集合获取任务集合
     * @param ids 主键集合
     * @return 结果集
     */
    List<QpTask> getByIds(List<Long> ids);
}
