package com.foreverwin.mesnac.equip.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.foreverwin.mesnac.equip.model.ResourceRepairTask;
import com.baomidou.mybatisplus.extension.service.IService;
import com.foreverwin.modular.core.util.FrontPage;

import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * 设备报修任务表 服务类
 * </p>
 *
 * @author pavel.Liu
 * @since 2021-07-06
 */
public interface ResourceRepairTaskService extends IService<ResourceRepairTask> {

    HashMap<String,Object> init();

    /**
     *  分页查询
     * @param frontPage
     * @return
     */
    IPage<ResourceRepairTask> selectPage(FrontPage<ResourceRepairTask> frontPage, ResourceRepairTask resourceRepairTask);

    List<ResourceRepairTask> selectList(ResourceRepairTask resourceRepairTask);

    void deleteRepairTaskList(ResourceRepairTask resourceRepairTask);

    /**
     * 维修提报，保存提报信息
     * @param resourceRepairTask
     */
    void saveRepairTask(ResourceRepairTask resourceRepairTask);

    /**
     * 条件查询，查询维修任务
     * @param resourceRepairTask
     * @return
     */
    List<ResourceRepairTask> findResourceRepairTaskList(ResourceRepairTask resourceRepairTask);

    /**
     * 根据HANDLE查询维修任务；
     * 1、从总览界面，点击查询并返回维修任务；
     * 2、点击开始维修，仅修改状态、维修人员
     * @param resourceRepairTask
     * @return
     */
    ResourceRepairTask selOrStartRepairTask(ResourceRepairTask resourceRepairTask);

    /**
     * 取消、等待、完成，均使用当前方法
     * 1、状态码为301——维修中->维修完成
     * 2、状态码为302——维修中->维修取消
     * 3、状态码为502——维修中->维修等待
     * 4、状态码为501——维修等待->维修中
     * @param resourceRepairTask
     * @return
     */
    ResourceRepairTask saveOrUpdateTaskInfo(ResourceRepairTask resourceRepairTask);

    /**
     * 自定义sql：根据维修任务HANDLE查询维修任务详细数据
     **/
    ResourceRepairTask findResourceRepairTaskByHandleAndSite(String site,String handle);

    /**
     * 修改维修信息
     * @param resourceRepairTask
     * @return
     */
    Boolean updateResourceRepairTaskInfoByHandle(ResourceRepairTask resourceRepairTask);

    /**
     * 发送消息
     * 消息内容  以下为可在消息内容中替换的字段
     * #WORKCENTER#   车间
     * #RESRCE#       设备
     * #DESCRIPTION#  设备描述
     * #NCCODE#       故障代码（描述）
     * #NCDESCRIPTION 不良补充描述
     * @param resourceRepairTask 根据它的handle找到要替换的字段
     */
    void createAndSendMessage(ResourceRepairTask resourceRepairTask);

    /**
     * 格式化消息内容
     * @param resourceRepairTask 从这个实体类中找到要替换的消息内容
     * @param messageType  消息类型，根据它找到对应的消息内容
     * @param site 站点
     * @return
     */
    String formatMessage(ResourceRepairTask resourceRepairTask,String messageType,String site);

}