package com.bonus.material.repair.service;


import com.bonus.common.core.web.domain.AjaxResult;
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.*;
import com.bonus.system.api.domain.SysUser;

import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;

/**
 * @author syruan
 */
public interface RepairService {

    /**
     * 获取维修任务列表
     * @param bean
     * @return
     */
    List<RepairTask> getRepairTaskList(RepairTask bean);

    /**
     * 获取维修详细列表
     */
//    List<RepairDeviceListVo> getRepairMaTypeList(RepairTaskDetails bean, boolean isGroup);


    List<RepairDeviceSummaryVo> getRepairDeviceSummary(RepairTaskDetails bean);


//    default List<RepairDeviceListVo> getRepairMaTypeList(RepairTaskDetails bean) {
//        return getRepairMaTypeList(bean, true);
//    }

    /**
     * 查询维修单
     */
    AjaxResult getRepairDocumentInfo(Long taskId);

    /**
     * 提交维修记录
     */
    AjaxResult submitRepairApply(@NotNull(message = "参数不能为空") RepairApplyRecord bean);

    /**
     * 快捷维修记录
     */
    AjaxResult fastRepairApply(List<RepairTaskDetails> list);

    /**
     * 批量维修
     */
    AjaxResult batchRepairApply(@NotNull List<RepairDeviceVO> repairDeviceVOList);

    /**
     * 维修明细--批量合格--更新明细status，以及repairedNum
     */
    int batchQualified(ArrayList<Long> ids);

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

    /**
     * 提交审核
     * @param taskList 任务信息集合
     */
    AjaxResult endRepairTask(@NotNull List<RepairTask> taskList);

    /**
     * 维修驳回
     * @param bean
     * @return
     */
    AjaxResult rejectRepair(RepairTask  bean);


    /**
     * 导出维修列表
     */
    List<RepairTask> exportRepairTaskList(RepairTask bean);

    List<RepairInputDetailsVo> getRepairedList(RepairInputDetailsVo dto);

    List<RepairInputDetailsVo> getRepairedDetailList(RepairInputDetailsVo dto);

    /**
     * 获取维修明细列表
     * @param bean
     * @return
     */
    List<RepairPartDetails> getDetailsList(RepairPartDetails bean);

    /**
     * 查询修试查询-维修配件查询列表
     * @param dto
     * @return
     */
    List<RepairPartVo> selectRepairPartList(RepairPartVo dto);

    /**
     * 查询修试查询-维修配件查询二级列表
     * @param dto
     * @return
     */
    List<RepairPartInfo> selectSecondRepairPartList(RepairPartInfo dto);

    /**
     * 获取维修任务列表--app
     * @param bean
     * @return
     */
    List<RepairPartDetails> getDetailsListApp(RepairPartDetails bean);

    /**
     * 获取定损配件
     * @param bean
     * @return
     */
    List<RepairPartInfo> getLossPart(RepairPartInfo bean);

    /**
     * 获取维修任务机具列表--三级页面详情列表--编码
     * @param bean
     * @return
     */
    List<RepairTaskDetails> getRepairCodeList(RepairTaskDetails bean);

    /**
     * 查询试验记录表数据
     * @param bean
     * @return
     */
    List<RepairTaskDetails> getTestRecordData(RepairTaskDetails bean);

    /**
     * 获取维修任务机具列表--app
     * @param bean
     * @return
     */
    List<RepairDeviceVO> getAppRepairMaTypeListByTaskIdAndTypeId(RepairTaskDetails bean);

    List<RepairInspection> getRepairInspection(RepairInspection dto);

    List<TestRecord> getTestRecord(TestRecord dto);

    List<RepairTaskDetails> getTestRecordDetails(TestRecord bean);

    /**
     * 获取维修任务机具列表--app
     * @param bean
     * @return
     */
    List<RepairDeviceSummaryVo> getAppRepairMaTypeListNew(RepairTaskDetails bean);

    /**
     * 查询在修工程维修列表
     * @param bean
     * @return
     */
    List<RepairProjectInfo> getRepairProjectList(RepairProjectInfo bean);
}
