package com.bonus.material.back.mapper;

import com.bonus.material.back.domain.BackCsDeviceDetails;
import com.bonus.material.back.domain.BackCsDeviceInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * @author ma_sh
 */
@Mapper
public interface BackChangeMapper {

    /**
     * 获取添加设备详情
     *
     * @param dto
     * @return
     */
    List<BackCsDeviceDetails> getDevDetailsInfo(BackCsDeviceDetails dto);

    /**
     * 获取退料申请编号
     *
     * @param year
     * @param month
     * @param taskType
     * @return
     */
    int getMonthMaxOrderByDate(@Param("year") String year, @Param("month") String month, @Param("taskType") Integer taskType);

    /**
     * 新增退料申请
     *
     * @param devInfo
     * @return
     */
    int addChangeInfoNew(BackCsDeviceInfo devInfo);

    /**
     * 添加设备详情
     *
     * @param devDetailsList
     * @return
     */
    int addDetails(List<BackCsDeviceDetails> devDetailsList);

    /**
     * 修改主任务
     *
     * @param devInfo
     * @return
     */
    int updateCsDevInfo(BackCsDeviceInfo devInfo);

    /**
     * 删除设备详情
     *
     * @param id
     * @return
     */
    int deleteChangeDetails(Long id);

    /**
     * 删除主任务
     *
     * @param csDeviceInfo
     * @return
     */
    int deleteChangeInfo(BackCsDeviceInfo csDeviceInfo);

    /**
     * 获取退料申请详情
     *
     * @param dto
     * @return
     */
    BackCsDeviceInfo getDevInfoById(BackCsDeviceDetails dto);

    /**
     * 根据id查询设备详情表数据
     *
     * @param dto
     * @return
     */
    List<BackCsDeviceDetails> getDevDetailsById(BackCsDeviceDetails dto);

    /**
     * 根据devType去查询装备或工具详情
     *
     * @param csDeviceDetails
     * @return
     */
    BackCsDeviceDetails getTypeMaDevInfo(BackCsDeviceDetails csDeviceDetails);

    /**
     * 根据devType去查询装备或工具详情
     *
     * @param csDeviceDetails
     * @return
     */
    BackCsDeviceDetails getTypeToolInfo(BackCsDeviceDetails csDeviceDetails);

    /**
     * 获取退料申请列表
     *
     * @param dto
     * @return
     */
    List<BackCsDeviceInfo> getList(BackCsDeviceInfo dto);

    /**
     * 审核退料申请
     *
     * @param backCsDeviceDetails
     * @return
     */
    int approve(BackCsDeviceDetails backCsDeviceDetails);

    /**
     * 修改装备详情
     *
     * @param csDeviceDetails
     * @return
     */
    int updateMaDevInfo(BackCsDeviceDetails csDeviceDetails);

    /**
     * 修改工具详情
     *
     * @param csDeviceDetails
     * @return
     */
    int updateToolInfo(BackCsDeviceDetails csDeviceDetails);

    /**
     * 修改工具详情数量
     *
     * @param csDeviceDetails
     * @return
     */
    int updateToolInfoNum(BackCsDeviceDetails csDeviceDetails);

    /**
     * 修改工具详情报修
     *
     * @param csDeviceDetails
     * @return
     */
    int updateToolInfoRepair(BackCsDeviceDetails csDeviceDetails);

    /**
     * 修改工具详情报修数量
     *
     * @param csDeviceDetails
     * @return
     */
    int updateToolInfoRepairNum(BackCsDeviceDetails csDeviceDetails);

    BigDecimal getDetailsNum(BackCsDeviceDetails details);
}
