package com.xisc.pm.app.service;

import com.xisc.pm.api.dto.PmPlateThickAddvBtDTO;
import io.choerodon.core.domain.Page;
import io.choerodon.mybatis.pagehelper.domain.PageRequest;
import com.xisc.pm.domain.entity.PmPlateThickAddvBt;

import java.util.List;

/**
 * 钢板轧制规格及厚度余量基准表(PmPlateThickAddvBt)应用服务
 *
 * @author 纪文桃 wentao.ji01@hand-china.com
 * @since 2024-07-23 17:19:39
 */
public interface PmPlateThickAddvBtService {

    /**
     * 查询数据
     *
     * @param pageRequest        分页参数
     * @param pmPlateThickAddvBt 查询条件
     * @return 返回值
     */
    Page<PmPlateThickAddvBt> selectList(PageRequest pageRequest, PmPlateThickAddvBt pmPlateThickAddvBt);

    /**
     * 保存数据
     *
     * @param tenantId               租户
     * @param pmPlateThickAddvBtList 对象集合
     */
    void saveData(Long tenantId, List<PmPlateThickAddvBt> pmPlateThickAddvBtList);

    /**
     * 删除数据
     *
     * @param pmPlateThickAddvBtList 对象集合
     */
    void deleteForUi(List<PmPlateThickAddvBt> pmPlateThickAddvBtList);

    /**
     * 导出
     *
     * @param pmPlateThickAddvBt 查询条件
     * @return
     */
    List<PmPlateThickAddvBtDTO> exportList(PmPlateThickAddvBt pmPlateThickAddvBt);

    /**
     * 校验新增或者更新的记录区间是否交叉
     *
     * @param pmPlateThickAddvBtList 新增或者更新的记录
     */
    void checkNewAddOrUpdateDataInterval(List<PmPlateThickAddvBt> pmPlateThickAddvBtList);

    /**
     * 校验新增或者更新的记录区间是否与数据库记录区间交叉
     *
     * @param tenantId               租户
     * @param pmPlateThickAddvBtList 新增或者更新的记录
     */
    void checkExistDataIntervalByDb(Long tenantId, List<PmPlateThickAddvBt> pmPlateThickAddvBtList);

    /**
     * 获取钢板厚度校验Key
     *
     * @param pmPlateThickAddvBt 对象
     * @return
     */
    String getPlateThickKey(PmPlateThickAddvBt pmPlateThickAddvBt);

    /**
     * 获取组合板宽度的Key
     *
     * @param pmPlateThickAddvBt 对象
     * @return
     */
    String getCombinePlateWidthKey(PmPlateThickAddvBt pmPlateThickAddvBt);
}

