package com.bonus.material.repair.mapper;

import com.bonus.material.repair.domain.RepairApplyRecord;
import com.bonus.material.repair.domain.RepairPartDetails;
import com.bonus.material.repair.domain.RepairTask;
import com.bonus.material.repair.domain.RepairTaskDetails;
import com.bonus.material.repair.domain.vo.RepairDeviceListVo;
import com.bonus.system.api.domain.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * @author syruan
 */
@Mapper
public interface RepairMapper {
    /**
     * 获取维修任务列表
     * @param bean 维修任务信息--查询条件
     */
    List<RepairTask> getRepairTaskList(RepairTask bean);

    /**
     * 获取维修详细列表
     * @param bean 维修任务详情--查询条件
     */
    List<RepairDeviceListVo> getRepairMaTypeList(RepairTaskDetails bean);

    /**
     * 新增维修记录
     * @param bean 维修记录信息
     */
    int addRecord(RepairApplyRecord bean);

    /**
     * 根据id查询维修明细
     * @param id 主键key
     */
    RepairTaskDetails getById(Long id);

    /**
     * 修改维修数量
     * @param id 主键key
     * @param repairNum 维修数量
     * @param repairer 维修人员
     * @param userId 用户id
     */
    int updateRepairedNum(@Param("id") Long id, @Param("repairNum")int repairNum,@Param("repairer") Long repairer,@Param("userId") Long userId);

    /**
     * 修改报废数量
     * @param id 主键key
     * @param scrapNum 报废数量
     * @param userId 用户id
     */
    int updateScrapNum(@Param("id")Long id, @Param("scrapNum")int scrapNum,@Param("userId")Long userId);

    /**
     * 新增配件维修记录
     * @param partDetails 配件详情
     */
    int addPart(RepairPartDetails partDetails);

    /**
     * 完成维修--更改维修状态
     * @param ids 主键集合
     * @param userId 用户id
     */
    int completeRepair(@Param("ids") ArrayList<Long> ids, @Param("userId")Long userId);

    /**
     * 查询维修人员列表
     */
    List<SysUser> selectUserList();

    /**
     * 修改维修任务状态
     * @param taskList 任务列表集合
     * @param userid 用户id
     */
    int updateTaskStatus(@Param("taskList") List<RepairTask> taskList, @Param("userId") Long userid, @Param("taskStatus") Integer taskStatus);

    /**
     * 新增任务
     * @param task 任务信息
     */
    int addTask(RepairTask task);

    /**
     * 查询协议Id
     * @param task 任务信息
     */
    Long getAgreementId(RepairTask task);

    /**
     * 新增 协议与任务关联
     * @param task 任务信息
     */
    int createAgreementTask(RepairTask task);

    /**
     * 修改维修数量
     * @param id 主键 key
     * @param repairNum 维修数量
     * @param userid 用户id
     */
    int updateRepairedNumTwo(@Param("id") Long id, @Param("repairNum") int repairNum, @Param("userId") Long userid);

    /**
     * 查询是否存在未完成维修的
     * @param task 任务信息
     */
    int getUnFinish(RepairTask task);

    /**
     * 根据任务Id获取维修详细
     * @param task 任务信息
     */
    List<RepairTaskDetails> getDetailsListByTaskId(RepairTask task);

    /**
     * 新增修饰审核审核数据
     * @param details 数据详情
     */
    int addAuditDetails(RepairTaskDetails details);

    /**
     * 导出维修任务
     */
    List<RepairTask> exportRepairTaskList(RepairTask bean);

    /**
     * 新增维修费用
     */
    int addRepairCost(@Param("bean") RepairApplyRecord bean, @Param("costs") BigDecimal costs, @Param("partType") String partType);

    /**
     * 查询配件价格
     * @param partId 配件id
     */
    BigDecimal selectPartPrice(Long partId);
}
