package com.bonus.sgzb.material.mapper;

import com.bonus.sgzb.material.domain.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
* @description 新购配件任务
* @author hay
* @date   2024/1/16 13:12
*/
@Mapper
public interface PurchaseAccessoryMapper
{


    /**
     * 新增新购配件任务 purchase_part_info
     * 
     * @param purchasePartInfo 新增新购配件任务 purchase_part_info
     * @return 结果
     */
    public int insertPurchasePartInfo(PurchasePartInfo purchasePartInfo);

    /**
     * 新增
    * @param purchasePartDetailsList
    * @return 结果
    * @description 新增新购任务详情
    * @author hay
    * @date 2024/1/16 14:05
    */
    int insertPurchasePartDetailsList(@Param("purchasePartDetailsList") List<PurchasePartDetails> purchasePartDetailsList);

    /**
     *查询新购配件任务验收列表
     * @param purchasePartInfo
     * @return 结果
     */
    List<PurchasePartInfo> selectPurchasePartInfoList(PurchasePartInfo purchasePartInfo);

    /**
     * 查询
     * @param taskId
     * @param type
     * @return String
     */
    String selectTypeNameByTaskId(@Param("taskId") Long taskId,@Param("type") String type);

    /**
     * 查询
     * @param taskId
     * @return 结果
     */
    PurchasePartInfo selectPurchasePartInfoByTaskId(Long taskId);

    /**
     * 查询
     * @param purchasePartDetails
     * @return 结果
     */
    List<PurchasePartDetails> selectPurchasePartDetailsList(PurchasePartDetails purchasePartDetails);

    /**
     * 先删除全部的任务详情信息
    * @param taskId
    * @return int
    */
    int deletePartDetailsByTaskId(Long taskId);

    /**
    * 修改新购配件任务purchase_part_info
    * @param purchasePartInfo
    * @return int
    */
    int updatePurchasePartInfo(PurchasePartInfo purchasePartInfo);

    /**
     * 删除新购配件任务
     * @param  taskIds
     * @return int
     */
    int deletePurchasePartInfoByTaskIds(Long[] taskIds);

    /**
     * 新购配件入库列表
     * @param purchasePartInfo
     * @return List<PurchasePartInfo>
     */
    List<PurchasePartInfo> selectPutInListList(PurchasePartInfo purchasePartInfo);

    /**
     * 修改
     * @param purchasePartDetails
     * @return 结果
     */
    int updatePurchasePartDetails(PurchasePartDetails purchasePartDetails);

    /**
     * 查询
     * @param taskId
     * @return 结果
     */
    int selectPurchasePartDetailsStatus(@Param("taskId") Long taskId);

    /**
     * 获取配件信息
     * @param level 等级
     * @return List<PurchasePartInfo>
     */
    List<PurchasePartInfo> getPartList(String level);

    /**
     * 查询
     * @param purchasePartDetails
     * @return 结果
     */
    List<PurchasePartDetails> selectPutinDetails(PurchasePartDetails purchasePartDetails);

    /**
     * 修改
     * @param partId
     * @param inputNum
     * @return 结果
     */
    int updatePartTypeNum(@Param("partId") Long partId,@Param("inputNum") Integer inputNum);

    /**
     * 查询
     * @param id
     * @return 结果
     */
    int setlectStatusById(Long id);

    /**
     * 新购配件导出
     * @param  bean
     * @return List<PurchasePartInfo>
     */
    List<PurchasePartInfo> exportList(PurchasePartInfo bean);

    /**
     * 新购配件入库导出
     * @param  bean
     * @return List<PurchasePartInfo>
     */
    List<PurchasePartDetails> inputExport(PurchasePartDetails bean);

    /**
     * 判断是否全部已操作（不通过或通过）
     * @param taskId
     * @return int
     */
    int isOperateAll(Long taskId);

    /**
     * 是否为全部不通过
     * @param taskId
     * @return 结果
     */
    int selectPurchasePartDetailsStatusIsNoPass(Long taskId);

    /**
    * 新购验收单
    * @param purchasePartDetails
    * @return 结果
    */
    List<PurchasePartDetails> getAcceptanceForm(PurchasePartDetails purchasePartDetails);

    /**
    * 新购入库单
    * @param purchasePartDetails
    * @return 结果
    */
    List<PurchasePartDetails> warehousingEntry(PurchasePartDetails purchasePartDetails);
}
