package com.dk.mdm.mapper.report;

import com.alibaba.fastjson.JSONObject;
import com.dk.common.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.postgresql.util.PGobject;
import org.springframework.stereotype.Repository;

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

/**
 * @desc   : 报表数据源
 * @author : 常皓宁
 * @date   : 2024/4/11 8:49
 */
@Repository
public interface ReportMapper extends BaseMapper<JSONObject> {

    /**
     * @desc   : 查询库存
     * @author : 常皓宁
     * @date   : 2024/4/11 8:52
     */
    List<Map<String, Object>> getIvtDetailReport(Map param);


    /**
     * @desc   : 采购明细表（主表）
     * @author : 宋扬
     * @date   : 2024/4/10 16:43
     */
    List<Map<String, Object>> getPurReport(Map param);
    Long getPurReportCount(Map<String, Object> param);

    /**
     * @desc   : 采购明细表（明细）
     * @author : 宋扬
     * @date   : 2024/4/10 16:43
     */
    List<Map<String, Object>> getPurDetailReport(Map param);
    Long getPurDetailReportCount(Map<String, Object> param);

    /**
     * @desc   : 销售明细报表（主表）
     * @author : 宋扬
     * @date   : 2024/4/11 16:28
     */
    List<Map<String, Object>> getOrderReport(Map param);
    Long getOrderReportCount(Map<String, Object> param);

    /**
     * @desc   : 销售明细报表（明细）
     * @author : 宋扬
     * @date   : 2024/4/11 16:28
     */
    List<Map<String, Object>> getOrderDetailReport(Map param);
    Long getOrderDetailReportCount(Map<String, Object> param);

    /**
     * @desc   : 出库明细报表（主表）
     * @author : 宋扬
     * @date   : 2024/4/11 16:55
     */
    List<Map<String, Object>> getOutboundReport(Map param);
    Long getOutboundReportCount(Map<String, Object> param);

    /**
     * @desc   : 出库明细报表（明细）
     * @author : 宋扬
     * @date   : 2024/4/11 16:55
     */
    List<Map<String, Object>> getOutboundDetailReport(Map param);
    Long getOutboundDetailReportCount(Map<String, Object> param);

    /**
     * @desc   : 入库明细报表（主表）
     * @author : 宋扬
     * @date   : 2024/4/11 16:56
     */
    List<Map<String, Object>> getInboundlReport(Map param);
    Long getInboundlReportCount(Map<String, Object> param);

    /**
     * @desc   : 入库明细报表（明细）
     * @author : 宋扬
     * @date   : 2024/4/11 16:56
     */
    List<Map<String, Object>> getInboundDetailReport(Map param);
    Long getInboundDetailReportCount(Map<String, Object> param);

    /**
     * @desc   : 客户收款明细表（主表）
     * @author : 宋扬
     * @date   : 2024/4/16 11:30
     */
    List<Map<String, Object>> getRecPayDetailReport(Map param);
    Long getRecPayDetailReportCount(Map<String, Object> param);
    /**
     * @desc   : 销售跟踪表 列表查询
     * @author : 于继渤
     * @date   : 2024/4/16 11:27
     */
    List<Map<String, Object>> getSalesTrackingReport(Map param);

    /**
     * @desc   : 销售明细表 列表查询
     * @author : 于继渤
     * @date   : 2024/4/16 11:27
     */
    List<Map<String, Object>> getSalesItemReport(Map param);

    List<Map<String, Object>> getSalesTrackingReportDetail(String id);
    Long getSalesTrackingReportCount(Map<String, Object> param);

    Long getSalesItemReportCount(Map<String, Object> param);


    /**
     * @desc   : 采购跟踪表 列表查询
     * @author : 王英杰
     * @date   : 2024/4/16 11:27
     */
    List<Map<String, Object>> getPurTrackingReport(Map param);
    Long getPurTrackingReportCount(Map<String, Object> param);


    List<Map<String, Object>>  getPurTrackingReportDetail(@Param("id") String id);


    /**
     * @desc   : 日结对账表列表查询
     * @date   : 2024/4/24 15:22
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getDailyReconciliationReport(Map param);

    /**
     * @desc   : 日结对账表列表查询数量
     * @date   : 2024/4/24 15:22
     * @author : 寇珊珊
     */
    Long getDailyReconciliationReportCount(Map<String, Object> param);

    /**
     * @desc   : 日结对账表-查销售订单
     * @date   : 2024/4/24 15:22
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getDailyReconciliationReportByOrder(Map param);


    /**
     * @desc   : 日结对账表-查销售订单数量
     * @date   : 2024/4/24 15:22
     * @author : 寇珊珊
     */
    Long getDailyReconciliationReportByOrderCount(Map<String, Object> param);

    /**
     * @desc   : 日结对账表-查销售出库
     * @date   : 2024/4/24 15:22
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getDailyReconciliationReportByOut(Map param);


    /**
     * @desc   : 日结对账表-查销售出库数量
     * @date   : 2024/4/24 15:22
     * @author : 寇珊珊
     */
    Long getDailyReconciliationReportByOutCount(Map<String, Object> param);


    /**
     * @desc   : 日结对账表-查收款单
     * @date   : 2024/4/24 15:22
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getDailyReconciliationReportByPay(Map param);


    /**
     * @desc   : 日结对账表-查收款单数量
     * @date   : 2024/4/24 15:22
     * @author : 寇珊珊
     */
    Long getDailyReconciliationReportByPayCount(Map<String, Object> param);

    /**
     * @desc   : 收发存汇总报表
     * @author : 宋扬
     * @date   : 2024/4/20 13:34
     */
    List<Map<String, Object>> getIvtSumReport(Map param);

    /**
     * @desc   : 收发存汇总报表明细
     * @author : 宋扬
     * @date   : 2024/4/23 15:52
     */
    List<Map<String, Object>> getIvtItemReport(Map param);

    /**
     * @desc   : 供应商往来余额表
     * @author : 常皓宁
     * @date   : 2024/4/25 13:26
     */
    List<Map<String, Object>> getSupAccount(Map param);

    /**
     * @desc   : 供应商往来余额表明细
     * @author : 常皓宁
     * @date   : 2024/4/25 13:26
     */
    List<Map<String, Object>> getSupAccountItem(Map param);

    /**
     * @desc   : 资金日记账
     * @author : 常皓宁
     * @date   : 2024/4/26 16:43
     */
    List<Map<String, Object>> getFundReport(Map param);



    /**
     * @desc   : 销售简报
     * @date   : 2024/5/6 13:32
     * @author : 寇珊珊
     */
    Map<String, PGobject> getReportBatch(@Param("param")Map<String,Object> param);


}
