package org.qinan.safetyeval.domain.gateway;

import org.qinan.safetyeval.domain.change.model.QualFilingCommitmentChangeE;
import org.qinan.safetyeval.domain.change.model.QualFilingEquipmentChangeE;
import org.qinan.safetyeval.domain.change.model.QualFilingMaterialChangeE;
import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelCertChangeE;
import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingChangeEntity;
import org.qinan.safetyeval.domain.query.QualFilingChangeQuery;
import org.qinan.safetyeval.domain.query.PageResult;
import java.util.List;

/**
 * 备案变更Gateway接口（Domain层定义）
 *
 * @author safety-eval
 */
public interface QualFilingChangeGateway {

    QualFilingChangeEntity save(QualFilingChangeEntity entity);

    QualFilingChangeEntity get(Long id);

    List<QualFilingChangeEntity> listByFilingId(Long filingId);

    int countByFilingIdAndStatusNot(Long filingId, Integer excludeStatusCode);

    QualFilingChangeEntity modify(QualFilingChangeEntity entity);

    void delete(Long id);

    PageResult<QualFilingChangeEntity> page(QualFilingChangeQuery query);

    Long aggregationSaveOrEdit(QualFilingChangeEntity entity, QualFilingCommitmentChangeE commitmentEntity,
                               List<QualFilingEquipmentChangeE> equipmentEntities, List<QualFilingMaterialChangeE> materialEntities,
                               List<QualFilingPersonnelChangeE> personnelEntities, List<QualFilingPersonnelCertChangeE> personnelCertEntities, boolean add);
}
