package com.dk.mdm.mapper.pur;

import com.dk.mdm.model.pojo.pur.Purchase;
import com.dk.common.mapper.BaseMapper;
import com.dk.mdm.model.query.pur.PurchaseItemQuery;
import com.dk.mdm.model.query.pur.PurchaseQuery;
import com.dk.mdm.model.response.pur.PurchaseResponse;
import com.dk.mdm.model.vo.pur.PurchaseVO;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

/**
*  采购订单 Mapper
*/
@Repository
public interface PurchaseMapper extends BaseMapper<Purchase>{

    /**
     * @desc   : 查询采购订单
     * @author : 常皓宁
     * @date   : 2024/2/28 9:48
     */
    List<PurchaseResponse> selectByCond(PurchaseQuery purchaseQuery);

    /**
     * @desc   : 采购入库 查询采购订单带明细（采购入库 查询采购订单 过滤已入库数据）
     * @author : 王英杰
     * @date   : 2024/2/28 15:17
     */
    List<Map<String, Object>>  selectPurOrderAndDeatil(PurchaseQuery purchaseQuery);

    /**
     * @desc   : 查询采购订单 带明细
     * @author : 王英杰
     * @date   : 2024/2/28 9:48
     */
    List<PurchaseResponse> selectByCondItem(PurchaseQuery purchaseQuery);

    /**
     * @desc   : 查询采购订单个数
     * @author : 常皓宁
     * @date   : 2024/2/28 9:48
     */
    Long countByCond(PurchaseQuery purchaseQuery);


    /**
     * @desc   : 根据id查询
     * @author : 常皓宁
     * @date   : 2024/3/2 11:39
     */
    PurchaseResponse  selectById(@Param("id") String id);

    /**
     * @desc   : 采购订单 待入库查询
     * @author : 王英杰
     * @date   : 2024/2/28 9:46
     */
    List<PurchaseResponse> noStoredSelectByCond(PurchaseQuery purchaseQuery);

    /**
     * @desc   : 采购订单 待入库查询 个数
     * @author : 王英杰
     * @date   : 2024/2/28 9:46
     */
    Long noStoredCountByCond(PurchaseQuery purchaseQuery);
    /**
     * @desc   : 修改金额数量
     * @author : 于继渤
     * @date : 2024/2/26 10:36
     */
    int updateAmount(Purchase purchase);

    Purchase selectPurchaseByRighting(PurchaseQuery purchaseQuery);

    /**
     * @desc   : 采购跟踪
     * @author : 常皓宁
     * @date   : 2024/4/22 10:19
     */
    Map<String, Object> selectTrackReport(Map param);

}

