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);
    Long getIvtDetailReportCount(Map<String, Object> param);

    /**
     * @desc   : 查询库存批次
     * @author : 姜宁
     * @date   : 2024/8/7 15:20
     */
    List<Map<String, Object>> getIvtDetailBatchReport(Map param);
    Long getIvtDetailBatchReportCount(Map<String, Object> 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);

   /**
    * @desc   : 客户往来账
    * @author : 宋扬
    * @date   : 2024/5/10 10:37
    */
    List<Map<String, Object>> getMacRecCurrentReport(Map param);

   /**
    * @desc   : 客户往来账明细
    * @author : 宋扬
    * @date   : 2024/5/10 10:37
    */
    List<Map<String, Object>> getMacRecCurrentItemReport(Map param);


    /**
     * @desc   : 供应商往来账
     * @author : 宋扬
     * @date   : 2024/5/10 10:37
     */
    List<Map<String, Object>> getMacPayCurrentReport(Map param);

    /**
     * @desc   : 供应商往来账明细
     * @author : 宋扬
     * @date   : 2024/5/10 10:37
     */
    List<Map<String, Object>> getMacPayCurrentItemReport(Map param);

    /**
     * @desc   : 根据用户信息和筛选信息查询账款明细
     * @author : 刘尧
     * @date   : 2024/6/5 17:25
     * */
    List<Map<String, Object>> getCusRecPayReportItemByUser(Map params);

    /**
     * @desc   : 查询用户欠款
     * @author : 刘尧
     * @date   : 2024/6/5 17:28
     * */
    List<Map<String, Object>> getUserArrears(Map params);

    /**
     * @desc   : 查询销售利润
     * @author : 洪旭东
     * @date   : 2024-06-07 16:48
     */
    Map<String, Object> getSaleProfit(Map params);

    /**
     * @desc   : 查询销售利润 按日或按月
     * @author : 洪旭东
     * @date   : 2024-06-07 16:48
     */
    List<Map<String, Object>> getSaleProfitGroupByDate(Map params);

    /**
     * @desc   : 查询部门利润
     * @author : 洪旭东
     * @date   : 2024-06-07 16:48
     */
    List<Map<String, Object>> getSaleProfitGroupByOrg(Map params);

    /**
     * @desc   : 查询业务员利润
     * @author : 洪旭东
     * @date   : 2024-06-07 16:48
     */
    List<Map<String, Object>> getSaleProfitGroupByStaff(Map params);

    /**
     * @desc   : 查询商品利润
     * @author : 洪旭东
     * @date   : 2024-06-07 16:48
     */
    List<Map<String, Object>> getSaleProfitGroupBySku(Map params);

    /**
     * @desc   : 根据用户查询订单明细
     * @author : 刘尧
     * @date   : 2024-06-26 14:31
     */
    List<Map<String, Object>> getPsiOrderByUser(Map<String, Object> params);

    /**
     * @desc   : 获取销售额
     * @author : 刘尧
     * @date   : 2024-06-26 17:28
     */
    Map<String, Object> getOrderAmt(Map<String, Object> params);
    /**
     * @desc   : 获取退货额
     * @author : 刘尧
     * @date   : 2024-06-26 17:28
     */
    Map<String, Object> getOutboundAmt(Map<String, Object> params);
    /**
     * @desc   : 获取收支额
     * @author : 刘尧
     * @date   : 2024-06-26 17:28
     */
    Map<String, Object> getIncomeExpenditure(Map<String, Object> params);
    // 获取欠款额 !!!!
    /**
     * @desc   : 获取欠款额
     * @author : 刘尧
     * @date   : 2024-06-26 17:28
     */
    Map<String, Object> getDebt(Map<String, Object> params);

    /**
     * @desc   : 经营概况
     * @author : 常皓宁
     * @date   : 2024/7/2 8:55
     */
    Map<String, Object> getBusinessOverview(Map param);

    /**
     * @desc   : 销售汇总
     * @author : 付斌
     * @date   : 2024-07-04 11:34
     */
    Map<String, Object> getOrderSummary(Map param);

    /**
     * @desc   : 销售汇总明细
     * @author : 付斌
     * @date   : 2024-07-04 11:34
     */
    Map<String, Object> getOrderSummaryItem(Map param);

    /**
     * @desc   : 资金日记账
     * @author : 姜宁
     * @date   : 2024/7/19 15:50
     */
    List<Map<String, Object>> getFundReportWeb(Map param);

    List<Map<String, Object>> getOutboundAmtByUser(Map<String, Object> params);

    Map<String, Object> getStartAmt(Map<String, Object> params);
}
