package com.yh.saas.plugin.news.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.winsea.svc.base.base.entity.CommonVessel;
import com.winsea.svc.base.base.view.DeptInfoView;
import com.yh.saas.plugin.news.command.*;
import com.yh.saas.plugin.news.entity.CircularManagementInfo;
import com.yh.saas.plugin.news.entity.CircularManagementReceive;
import com.yh.saas.plugin.news.vo.CircularManagementInfoVo;
import com.yh.saas.plugin.news.vo.CircularManagementReceiveVo;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 记录体系通函管理表 服务类
 * </p>
 *
 * @author wxg
 * @since 2019-10-15
 */
public interface INewsCircularManagementInfoService extends IService<CircularManagementInfo> {

    /**
     * 查询通知通函信息列表
     *
     * @param example
     * @return Page<CircularManagementInfoVo>
     */
    Page<CircularManagementInfoVo> queryCircularManagementInfoList(CircularManagementInfoSearchCommand example);

    /**
     * 导出通知通函
     *
     * @param example
     */
    void exportCircularManagementInfoList(CircularManagementInfoSearchCommand example, HttpServletResponse response);

    /**
     * 查询通知通函详情信息
     *
     * @param id
     * @return CircularManagementInfoVo
     */
    CircularManagementInfoVo getInfoById(String id);


    /**
     * 新增通知通函
     *
     * @param example
     * @return Id
     */
    String saveCircularManagementInfo(CircularManagementInfoSaveCommand example);

    /**
     * 修改通知通函
     *
     * @param example
     * @return
     */
    String updateCircularManagementInfo(CircularManagementInfoSaveCommand example);

    /**
     * 删除通知通函
     *
     * @param id
     * @return
     */
    void moveCircularManagementInfo(String id);

    /**
     * 发送通知通函
     *
     * @param example
     * @return
     */
    void sendCircularManagementInfo(CircularManagementInfoSendCommand example);

    /**
     * 退回通知通函
     *
     * @param id
     * @return
     */
    void backCircularManagementInfo(CircularManagementReceiveCommand example);

    /**
     * 查询接收通知通函信息列表
     *
     * @param id
     * @return List<CircularManagementReceiveVo>
     */
    List<CircularManagementReceiveVo> queryCircularManagementReceiveListById(CircularManagementReceiveSearchCommand example);

    /**
     * 取得通知通函接收人id集合
     *
     * @param receiveInfo
     * @return
     */
    List<String> getReceiveStaffIdList(CircularManagementReceive receiveInfo);


    /**
     * 取得船舶信息
     *
     * @param example
     * @return
     */
    List<CommonVessel> getVesselList(CircularManagementInfoSearchCommand example);

    /**
     * 取得部门信息
     *
     * @param example
     * @return
     */
    List<DeptInfoView> getDeptList(CircularManagementInfoSearchCommand example);
}
