package com.jxy.windminer.mapper;

import com.jxy.common.datasource.annotation.JXYHelp;
import com.jxy.common.datasource.annotation.Master;
import com.jxy.windminer.dto.TicketContentDto;
import com.jxy.windminer.dto.TicketDailyCountDto;
import com.jxy.windminer.dto.TicketDto;
import com.jxy.windminer.dto.TicketListDto;
import com.jxy.windminer.entity.JXYFile;
import com.jxy.windminer.entity.Ticket;
import com.jxy.windminer.vo.QueryVo;
import com.jxy.windminer.vo.ResponTicketVo;
import com.jxy.windminer.vo.ResubmitTicketVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Master
public interface TicketMapper {

    /**
     * 修改工单状态
     * @param id
     * @param status
     * @return
     */
    public boolean changeTicketStatus(@Param("id") long id, @Param("status") int status);

    public int checkTicketExist(@Param("id") long id);
    /**
     * 新增工单
     * @param data
     * @return
     */
    public boolean insertTicket(@Param("data") Ticket data);

    /**
     * 工单补充内容提交工单信息
     * @param vo
     * @return
     */
    public boolean insertTicketSupplement(@Param("vo") ResubmitTicketVo vo);

    public Integer getTicketSupplementCountByTicketId(@Param("id") long id);


    /**
     * 根据工单id 获取工单补充提交内容
     * @param id
     * @return
     */
    public List<TicketContentDto> getTicketSupplementListByTicketId(@Param("id") long id);

    ///**
    // * 根据工单id 获取工单审核内容
    // * @param id
    // * @return
    // */
    //public TicketAuditDto getTicketAuditByTicketId(@Param("id") long id);

    /**
     * 根据工单id 获取工单附件
     * @param id
     * @return
     */
    public String getFileUrlsByTicketId(@Param("id") long id);

    /**
     * 根据工单id 获取工单回复内容
     * @param id
     * @return
     */
    public List<TicketContentDto> getTicketResponListByTicketId(@Param("id") long id);

    /**
     * 查询个人工单列表
     * @return
     */
    public List<TicketListDto> getPrivateTicketList(@Param("userName") String userName);

    /**
     * 按状态查询个人工单列表
     * @return
     */
    public List<TicketListDto> getPrivateTicketListByStatus(@Param("userName") String userName,@Param("status") int status);


    /**
     * 查看工单详情
     * @param id
     * @return
     */
    public TicketDto getTicketById(@Param("id") long id);

    /**
     * 后台根据状态查询工单列表
     * @param status
     * @return
     */
    public List<TicketListDto> getBackendTicketList(@Param("status") int status);


    /**
     * 根据时间和状态查询未关闭工单列表
     * @param vo
     * @return
     */
    public List<TicketListDto> getTicketListByTime(@Param("vo") QueryVo vo);

    /**
     * 查询每日工单数量分布
     * @param vo
     * @return
     */
    public List<TicketDailyCountDto> getDailyCountList(@Param("vo") QueryVo vo);

    /**
     * 添加工单回复
     * @param vo
     * @return
     */
    public boolean insertRespon(@Param("vo") ResponTicketVo vo, @Param("name") String name);

    ///**
    // * 添加工单审核内容
    // * @param vo
    // * @return
    // */
    //public boolean insertAudit(@Param("vo") AuditTicketVo vo,@Param("name") String name);


    /**
     * 添加上传文件的保存信息
     * @param vo
     * @return
     */
    public boolean insertFileInfo(@Param("vo") JXYFile vo);

    /**
     * 根据id获取文件相关信息
     * @param id
     * @return
     */
    public JXYFile getFileInfoById(Long id);

}
