package com.bonus.sgzb.base.mapper;

import com.bonus.sgzb.base.domain.RepairApplyRecord;
import com.bonus.sgzb.base.domain.RepairPartDetails;
import com.bonus.sgzb.base.domain.RepairTask;
import com.bonus.sgzb.base.domain.RepairTaskDetails;
import com.bonus.sgzb.base.domain.vo.DictVo;
import com.bonus.sgzb.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 c liu
 * @date 2023/12/11
 */
@Mapper
public interface RepairMapper {
    /**
     * 获取维修任务列表
     * @param bean
     * @return
     */
    List<RepairTask> getRepairTaskList(RepairTask bean);

    /**
     * 获取维修详细列表
     * @param bean
     * @return
     */
    List<RepairTaskDetails> getRepairMaTypeList(RepairTaskDetails bean);

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

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

    /**
     * 修改维修数量
     * @param id
     * @param repairNum
     * @param repairer
     * @param userId
     * @return
     */
    int updateRepairedNum(@Param("id") Long id, @Param("repairNum")int repairNum,@Param("repairer") Long repairer,@Param("userId") Long userId);

    /**
     * 修改报废数量
     * @param id
     * @param scrapNum
     * @param userId
     * @return
     */
    int updateScrapNum(@Param("id")Long id, @Param("scrapNum")int scrapNum,@Param("userId")Long userId);

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

    /**
     * 完成维修更改维修状态
     * @param ids
     * @param userId
     * @return
     */
    int completeRepair(@Param("ids") ArrayList<Long> ids, @Param("userId")Long userId);

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

    /**
     * 修改维修任务状态
     * @param taskList
     * @param userid
     * @return
     */
    int updateTaskStatus(@Param("taskList")List<RepairTask> taskList,@Param("userId") Long userid);

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

    /**
     * 查询协议Id
     * @param task
     * @return
     */
    Long getAgreementId(RepairTask task);

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

    /**
     * 修改维修数量
     * @param id
     * @param repairNum
     * @param userid
     * @return
     */
    int updateRepairedNumTwo(@Param("id")Long id, @Param("repairNum")int repairNum, @Param("userId")Long userid);

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

    /**
     * 根据value获取字典数据
     * @param value
     * @return
     */
    List<DictVo> getDicSelect(String value);

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

    /**
     * 新增实验建议审核数据
     * @param details
     * @return
     */
    int addAuditDetails(RepairTaskDetails details);

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

    int addRepairCost(@Param("bean") RepairApplyRecord bean, @Param("costs") BigDecimal costs,@Param("partType") String partType);

    BigDecimal selectPartPrice(Long partId);
}
