package com.yeejoin.amos.boot.module.jg.api.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.jg.api.dto.JgMaintainNoticeDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintainNotice;

import java.util.Map;

/**
 * 接口类
 *
 * @author system_generator
 * @date 2023-12-12
 */
public interface IJgMaintainNoticeService extends IService<JgMaintainNotice> {

    /**
     * 根据sequenceNbr查询
     *
     * @param sequenceNbr 主键
     * @return 维修告知
     */
    Map<String, Map<String, Object>> queryBySequenceNbr(Long sequenceNbr);

    /**
     * 更新维修告知
     *
     * @param noticeDto 维修告知
     * @param op        操作类型
     */
    JgMaintainNoticeDto updateMaintainNotice(String submitType, JgMaintainNoticeDto noticeDto, String op);

    /**
     * 分页查询
     *
     * @param page  分页对象
     * @param model 查询参数
     * @param type  类型：enterprise-企业端、supervision-监管端
     * @return 维修告知列表
     */
    Page<JgMaintainNoticeDto> queryForJgMaintainNoticePage(Page<JgMaintainNotice> page, JgMaintainNoticeDto model, String type, ReginParams reginParams);

    /**
     * 批量删除
     *
     * @param sequenceNbrs 主键
     * @return 是否删除成功
     */
    Boolean deleteForBatch(Long[] sequenceNbrs);

    /**
     * 保存维修告知单
     *
     * @param model      数据
     * @param submitType 保存类型
     */
    void saveNotice(String submitType, Map<String, JgMaintainNoticeDto> model, ReginParams reginParams);

    /**
     * 打印告知单
     *
     * @param sequenceNbr 主键
     * @return pdf文件路径
     */
    String generateMaintainNoticeReport(Long sequenceNbr);
}
