package cn.iocoder.yudao.module.mes.service.record;

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.record.vo.RecordTemplatePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.record.vo.RecordTemplateSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.record.*;

import javax.validation.Valid;

/**
 * 记录表 Service 接口
 *
 * @author 内蒙必硕
 */
public interface RecordTemplateService {

    /**
     * 创建记录表
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createRecordTemplate(@Valid RecordTemplateSaveReqVO createReqVO);

    /**
     * 更新记录表
     *
     * @param updateReqVO 更新信息
     */
    void updateRecordTemplate(@Valid RecordTemplateSaveReqVO updateReqVO);

    /**
     * 删除记录表
     *
     * @param id 编号
     */
    void deleteRecordTemplate(Long id);

    /**
     * 获得记录表
     *
     * @param id 编号
     * @return 记录表
     */
    RecordTemplateDO getRecordTemplate(Long id);

    /**
     * 获得记录表分页
     *
     * @param pageReqVO 分页查询
     * @return 记录表分页
     */
    PageResult<RecordTemplateDO> getRecordTemplatePage(RecordTemplatePageReqVO pageReqVO);
    // ==================== 子表（碎浆记录） ====================

    /**
     * 获得碎浆记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  组织id
     * @return 碎浆记录分页
     */
    PageResult<RecordSuijiangDO> getRecordSuijiangPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建碎浆记录
     *
     * @param recordSuijiang 创建信息
     * @return 编号
     */
    Long createRecordSuijiang(@Valid RecordSuijiangDO recordSuijiang);

    /**
     * 更新碎浆记录
     *
     * @param recordSuijiang 更新信息
     */
    void updateRecordSuijiang(@Valid RecordSuijiangDO recordSuijiang);

    /**
     * 删除碎浆记录
     *
     * @param id 编号
     */
    void deleteRecordSuijiang(Long id);

    /**
     * 获得碎浆记录
     *
     * @param id 编号
     * @return 碎浆记录
     */
    RecordSuijiangDO getRecordSuijiang(Long id);

    // ==================== 子表（成型记录） ====================

    /**
     * 获得成型记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  记录id
     * @return 成型记录分页
     */
    PageResult<RecordChengxingDO> getRecordChengxingPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建成型记录
     *
     * @param recordChengxing 创建信息
     * @return 编号
     */
    Long createRecordChengxing(@Valid RecordChengxingDO recordChengxing);

    /**
     * 更新成型记录
     *
     * @param recordChengxing 更新信息
     */
    void updateRecordChengxing(@Valid RecordChengxingDO recordChengxing);

    /**
     * 删除成型记录
     *
     * @param id 编号
     */
    void deleteRecordChengxing(Long id);

    /**
     * 获得成型记录
     *
     * @param id 编号
     * @return 成型记录
     */
    RecordChengxingDO getRecordChengxing(Long id);

    // ==================== 子表（热压记录） ====================

    /**
     * 获得热压记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  记录id
     * @return 热压记录分页
     */
    PageResult<RecordReyaDO> getRecordReyaPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建热压记录
     *
     * @param recordReya 创建信息
     * @return 编号
     */
    Long createRecordReya(@Valid RecordReyaDO recordReya);

    /**
     * 更新热压记录
     *
     * @param recordReya 更新信息
     */
    void updateRecordReya(@Valid RecordReyaDO recordReya);

    /**
     * 删除热压记录
     *
     * @param id 编号
     */
    void deleteRecordReya(Long id);

    /**
     * 获得热压记录
     *
     * @param id 编号
     * @return 热压记录
     */
    RecordReyaDO getRecordReya(Long id);

    // ==================== 子表（切边记录） ====================

    /**
     * 获得切边记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  记录id
     * @return 切边记录分页
     */
    PageResult<RecordQiebianDO> getRecordQiebianPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建切边记录
     *
     * @param recordQiebian 创建信息
     * @return 编号
     */
    Long createRecordQiebian(@Valid RecordQiebianDO recordQiebian);

    /**
     * 更新切边记录
     *
     * @param recordQiebian 更新信息
     */
    void updateRecordQiebian(@Valid RecordQiebianDO recordQiebian);

    /**
     * 删除切边记录
     *
     * @param id 编号
     */
    void deleteRecordQiebian(Long id);

    /**
     * 获得切边记录
     *
     * @param id 编号
     * @return 切边记录
     */
    RecordQiebianDO getRecordQiebian(Long id);
    // ==================== 子表（打包记录） ====================

    /**
     * 获得打包记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  记录id
     * @return 打包记录分页
     */
    PageResult<RecordDabaoDO> getRecordDabaoPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建打包记录
     *
     * @param recordDabao 创建信息
     * @return 编号
     */
    Long createRecordDabao(@Valid RecordDabaoDO recordDabao);

    /**
     * 更新打包记录
     *
     * @param recordDabao 更新信息
     */
    void updateRecordDabao(@Valid RecordDabaoDO recordDabao);

    /**
     * 删除打包记录
     *
     * @param id 编号
     */
    void deleteRecordDabao(Long id);

    /**
     * 获得打包记录
     *
     * @param id 编号
     * @return 打包记录
     */
    RecordDabaoDO getRecordDabao(Long id);
    // ==================== 子表（打浆记录） ====================

    /**
     * 获得打浆记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  记录id
     * @return 打浆记录分页
     */
    PageResult<RecordDajiangDO> getRecordDajiangPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建打浆记录
     *
     * @param recordDajiang 创建信息
     * @return 编号
     */
    Long createRecordDajiang(@Valid RecordDajiangDO recordDajiang);

    /**
     * 更新打浆记录
     *
     * @param recordDajiang 更新信息
     */
    void updateRecordDajiang(@Valid RecordDajiangDO recordDajiang);

    /**
     * 删除打浆记录
     *
     * @param id 编号
     */
    void deleteRecordDajiang(Long id);

    /**
     * 获得打浆记录
     *
     * @param id 编号
     * @return 打浆记录
     */
    RecordDajiangDO getRecordDajiang(Long id);

    // ==================== 子表（干燥记录） ====================

    /**
     * 获得干燥记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  记录id
     * @return 干燥记录分页
     */
    PageResult<RecordGanzaoDO> getRecordGanzaoPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建干燥记录
     *
     * @param recordGanzao 创建信息
     * @return 编号
     */
    Long createRecordGanzao(@Valid RecordGanzaoDO recordGanzao);

    /**
     * 更新干燥记录
     *
     * @param recordGanzao 更新信息
     */
    void updateRecordGanzao(@Valid RecordGanzaoDO recordGanzao);

    /**
     * 删除干燥记录
     *
     * @param id 编号
     */
    void deleteRecordGanzao(Long id);

    /**
     * 获得干燥记录
     *
     * @param id 编号
     * @return 干燥记录
     */
    RecordGanzaoDO getRecordGanzao(Long id);
    // ==================== 子表（加湿记录） ====================

    /**
     * 获得加湿记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  记录id
     * @return 加湿记录分页
     */
    PageResult<RecordJiashiDO> getRecordJiashiPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建加湿记录
     *
     * @param recordJiashi 创建信息
     * @return 编号
     */
    Long createRecordJiashi(@Valid RecordJiashiDO recordJiashi);

    /**
     * 更新加湿记录
     *
     * @param recordJiashi 更新信息
     */
    void updateRecordJiashi(@Valid RecordJiashiDO recordJiashi);

    /**
     * 删除加湿记录
     *
     * @param id 编号
     */
    void deleteRecordJiashi(Long id);

    /**
     * 获得加湿记录
     *
     * @param id 编号
     * @return 加湿记录
     */
    RecordJiashiDO getRecordJiashi(Long id);

    // ==================== 子表（检验记录） ====================

    /**
     * 获得检验记录分页
     *
     * @param pageReqVO 分页查询
     * @param recordId  记录id
     * @return 检验记录分页
     */
    PageResult<RecordPinjianDO> getRecordPinjianPage(PageParam pageReqVO, Long recordId);

    /**
     * 创建检验记录
     *
     * @param recordPinjian 创建信息
     * @return 编号
     */
    Long createRecordPinjian(@Valid RecordPinjianDO recordPinjian);

    /**
     * 更新检验记录
     *
     * @param recordPinjian 更新信息
     */
    void updateRecordPinjian(@Valid RecordPinjianDO recordPinjian);

    /**
     * 删除检验记录
     *
     * @param id 编号
     */
    void deleteRecordPinjian(Long id);

    /**
     * 获得检验记录
     *
     * @param id 编号
     * @return 检验记录
     */
    RecordPinjianDO getRecordPinjian(Long id);
}