package com.zt.plat.module.qms.resource.record.service.recordrecord;

import java.util.*;

import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyRespVO;
import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplySaveReqVO;
import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO;
import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordRespVO;
import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordSaveReqVO;
import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO;
import jakarta.validation.*;
import com.zt.plat.module.qms.resource.record.dal.dataobject.recordrecord.RecordRecordDO;
import com.zt.plat.framework.common.pojo.PageResult;

/**
 * 文件、模板、记录 Service 接口
 *
 * @author 后台管理
 */
public interface RecordRecordService {

    /**
     * 创建文件、模板、记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    RecordRecordRespVO createRecordRecord(@Valid RecordRecordSaveReqVO createReqVO);

    /**
     * 更新文件、模板、记录
     *
     * @param updateReqVO 更新信息
     */
    RecordRecordRespVO updateRecordRecord(@Valid RecordRecordSaveReqVO updateReqVO);

    /**
     * 删除文件、模板、记录
     *
     * @param id 编号
     */
    void deleteRecordRecord(Long id);

    /**
    * 批量删除文件、模板、记录
    *
    * @param ids 编号
    */
    void deleteRecordRecordListByIds(List<Long> ids);

    /**
     * 获得文件、模板、记录
     *
     * @param id 编号
     * @return 文件、模板、记录
     */
    RecordRecordDO getRecordRecord(Long id);

    /**
     * 获得文件、模板、记录分页
     *
     * @param pageReqVO 分页查询
     * @return 文件、模板、记录分页
     */
    PageResult<RecordRecordDO> getRecordRecordPage(RecordRecordPageReqVO pageReqVO);

    PageResult<RecordRecordDO> getRecordHistoryPage(RecordRecordPageReqVO pageReqVO);

    CommonResult<String> justRecordPermission(Long recordId);

    List<RecordPermissionDO> getMatchedPermissionList(Long parentCategoryId);

    /**
     * 提交申请-发起流程
     *
     * @return 申请信息
     */
//    CommonResult<RecordRecordRespVO> submitRecordApply(RecordApplyRespVO param);

    RecordRecordDO getRecordById(Long id);

    /**
     * 更新单条
     * @param recordDO
     * @return
     */

    RecordRecordRespVO updateRecordRecordById(RecordRecordDO recordDO);

    /**
     * 通过记录Id 批量更新
     * @param recordRecordDOS
     */

    void updateRecordRecordListByIds(List<RecordRecordDO> recordRecordDOS);
}