package com.bonus.material.purchase.mapper;

import com.bonus.common.biz.domain.purchase.PurchaseDto;
import com.bonus.material.purchase.domain.vo.PurchaseVo;
import org.apache.ibatis.annotations.Param;

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

/**
 * 新购验收入库Mapper接口
 * @Author ma_sh
 * @create 2024/10/21 13:55
 */
public interface PurchaseStorageMapper {

    /**
     * 查询新购验收入库列表
     * @param dto
     * @return
     */
    List<PurchaseVo> selectAll(PurchaseDto dto);

    /**
     * 查询详情
     * @param dto
     * @return
     */
    List<PurchaseVo> getDetails(PurchaseDto dto);

    /**
     * 更新入库数量
     * @param purchaseId
     * @param bindNum
     * @return
     */
    int updateNum(@Param("id") Long purchaseId, @Param("bindNum") BigDecimal bindNum);

    /**
     * 更新状态
     * @param updatedStatus
     * @param id
     * @return
     */
    int updateStatusById(@Param("updatedStatus") Integer updatedStatus, @Param("id") Integer id);

    /**
     * 更新入库状态
     * @param updatedStatus 要修改的状态
     * @param id 要修改的details表id
     * @return 修改条数
     */
    int updateInputStatusById(@Param("updatedStatus") Integer updatedStatus, @Param("id") Integer id);

    /**
     * 新增机具入库记录
     * @param dto
     * @return
     */
    int insertMachine(PurchaseDto dto);

    /**
     * 更新库存数量
     * @param inputNum
     * @param typeId
     * @return
     */
    int updateStorageNum(@Param("inputNum") BigDecimal inputNum, @Param("typeId") Integer typeId);

    /**
     * 查询详情单子状态
     * @param taskId
     * @return
     */
    List<PurchaseVo> select(String taskId);

    /**
     * 更新机具入库状态
     * @param dto
     * @return
     */
    int updateMachineByCode(PurchaseDto dto);

    Long selectIdByTaskId(@Param("taskId") Long taskId, @Param("typeId") Long typeId);

    /**
     * 更新机具绑定状态
     * @param status
     * @param taskId
     * @param typeId
     * @return
     */
    int updatePurchaseBindByTaskIdAndTypeId(@Param("status") Integer status, @Param("taskId") String taskId, @Param("typeId") Long typeId);

    /**
     * 更新机具绑定状态
     * @param status
     * @param taskId
     * @param typeId
     * @return
     */
    int updatePurchaseBindBy(@Param("status") Integer status, @Param("taskId") String taskId, @Param("typeId") Long typeId);
}
