package com.zt.plat.module.qms.common.data.service;

import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.module.qms.common.data.controller.vo.DataCollectionFieldPageReqVO;
import com.zt.plat.module.qms.common.data.controller.vo.DataCollectionFieldRespVO;
import com.zt.plat.module.qms.common.data.controller.vo.DataCollectionFieldSaveReqVO;
import com.zt.plat.module.qms.common.data.dal.dataobject.DataCollectionFieldDO;
import jakarta.validation.Valid;

import java.util.List;

/**
 * 数据集字段 Service 接口
 *
 * @author 后台管理
 */
public interface DataCollectionFieldService {

    /**
     * 创建数据集字段
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    DataCollectionFieldRespVO createDataCollectionField(@Valid DataCollectionFieldSaveReqVO createReqVO);


    //保存字段
    CommonResult<String> saveFields(List<DataCollectionFieldSaveReqVO> fieldList, Long dcId, String newVersionFlag);

    //删除字段
    CommonResult<String> deleteFields(String deleteFieldIds, Long dcId);

    /**
     * 更新数据集字段
     *
     * @param updateReqVO 更新信息
     */
    void updateDataCollectionField(@Valid DataCollectionFieldSaveReqVO updateReqVO);

    /**
     * 删除数据集字段
     *
     * @param id 编号
     */
    void deleteDataCollectionField(Long id);

    /**
    * 批量删除数据集字段
    *
    * @param ids 编号
    */
    void deleteDataCollectionFieldListByIds(List<Long> ids);

    /**
     * 获得数据集字段
     *
     * @param id 编号
     * @return 数据集字段
     */
    DataCollectionFieldDO getDataCollectionField(Long id);

    /**
     * 获得数据集字段分页
     *
     * @param pageReqVO 分页查询
     * @return 数据集字段分页
     */
    PageResult<DataCollectionFieldDO> getDataCollectionFieldPage(DataCollectionFieldPageReqVO pageReqVO);


    List<DataCollectionFieldDO> queryEffectiveListByDataCollectionId(Long dataCollectionId);

}