package com.fjhx.supplier.service;

import com.fjhx.base.BaseService;
import com.fjhx.entity.supplier.Supplier;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 供应商 服务类
 * </p>
 *
 * @author ${author}
 * @since 2022-07-12
 */
public interface SupplierService extends BaseService<Supplier> {

    /**
     * 列表
     *
     * @param condition
     * @return
     */
    List<Supplier> getList(Map<String, Object> condition);

    /**
     * 列表-总条数
     *
     * @param condition
     * @return
     */
    Integer getListCount(Map<String, Object> condition);


    /**
     * 供应商采购列表
     *
     * @param condition
     * @return
     */
    List<Supplier> getPurList(Map<String, Object> condition);

    /**
     * 供应商采购列表-总条数
     *
     * @param condition
     * @return
     */
    Integer getPurListCount(Map<String, Object> condition);

    /**
     * 统计物料分类
     *
     * @return
     */
    List<Supplier> statisticsClassify(Map<String, Object> condition);

    /**
     * 添加
     *
     * @param supplier
     * @return
     */
    String add(Supplier supplier);

    /**
     * 修改
     *
     * @param supplier
     * @return
     */
    Boolean edit(Supplier supplier);

    /**
     * 删除
     *
     * @param supplier
     */
    void delete(Supplier supplier);

    /**
     * 详情
     *
     * @param id
     */
    Supplier detail(String id);

    /**
     * 供应商决策辅助详情
     *
     * @param id
     */
    Supplier getSuById(String id);

    /**
     * 供应商采购分析详情
     *
     * @param id
     * @return
     */
    Map<String, Integer> getSuCount(String id);

    /**
     * 供应商采购物料分析 列表
     *
     * @param condition
     * @return
     */
    List<Supplier> spmAnalyse(Map<String, Object> condition);

    /**
     * 供应商采购物料分析 列表
     *
     * @param condition
     * @return
     */
    Integer spmAnalyseCount(Map<String, Object> condition);

    /**
     * 月度退货记录分析
     *
     * @param id
     * @return
     */
    List<Supplier> getBackSumMoneyAndCount(String id, String date);

    /**
     * 退货记录总数和总金额
     *
     * @param id
     * @return
     */
    Map<String, Object> getAllSumMoneyAndCount(String id, String date);

    /**
     * 月度采购分析
     *
     * @param id
     * @param date
     * @return
     */
    List<Supplier> getMonthSumPurMoney(String id, String date);

    /**
     * 下拉列表
     *
     * @param condition
     * @return
     */
    List<Supplier> selectList(Map<String, Object> condition);

    List<Map<String, Object>> getAccountDate();

    List<Map<String, Object>> getSafetyWarnDayList();

    List<Map<String, Object>> getSafetyWarnDayBySupplier(String supplierId);

    BigDecimal paymentGetBackAmount(String purchaseBillNo);
}
