package cn.cslg.report.service;

import cn.cslg.report.common.model.QueryFUEntity;
import cn.cslg.report.common.model.dto.FollowUpDTO;
import cn.cslg.report.common.model.dto.FollowUpUpdateDTO;
import cn.cslg.report.common.model.dto.RegisterDTO;
import cn.cslg.report.common.model.vo.FollowUpVO;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.text.ParseException;
import java.util.List;

/**
 * @Author xiexiang
 * @Date 2023/4/1
 */
public interface IFollowUpService {
    /**
     * 新增后续事项
     *
     * @param followUps 新增后续事项的前端传输DTO数据对象
     */
    @Transactional
    void add(List<FollowUpDTO> followUps);

    /**
     * 修改后续事项
     *
     * @param followUpUpdateDTOList 修改后续事项的前端传输DTO数据对象
     */
    @Transactional
    void update(List<FollowUpUpdateDTO> followUpUpdateDTOList);

    /**
     * 根据报告id分页查询查询后续事项数据
     *
     * @param reportId 报告id
     * @return 返回查询到的数据
     */
    List<FollowUpVO> query(Integer reportId);

    /**
     * 分页查询
     */
    List<FollowUpVO> findAllByPage(QueryFUEntity queryFUEntity);

    /**
     * 根据ids删除许可记录数据
     *
     * @param ids
     */
    @Transactional
    void delete(List<Integer> ids);

    /**
     * 根据后续事项id和文件id删除许可记录数据
     *
     * @param followUpId 后续事项id
     * @param fileIds 文件id
     */
    @Transactional
    void deleteAssoId(Integer followUpId,List<Integer> fileIds);

    /**
     * 登记结果
     *
     * @param register
     * @param files
     */
    @Transactional
    void register(RegisterDTO register, List<MultipartFile> files) throws ParseException;

    /**
     * 上传关联后续事项id和附件ids
     *
     * @param followUpId
     * @param fileIds
     * @return
     */
    @Transactional
    String addAsso(Integer followUpId, List<Integer> fileIds);

}
