package com.yhy.module.core.service.config;

import com.yhy.module.core.controller.admin.config.vo.ConfigProjectInfoRespVO;
import com.yhy.module.core.controller.admin.config.vo.ConfigProjectInfoSaveReqVO;
import com.yhy.module.core.controller.admin.config.vo.ConfigProjectInfoSwapSortReqVO;
import java.util.List;
import javax.validation.Valid;

/**
 * 工程信息配置 Service 接口
 *
 * @author yhy
 */
public interface ConfigProjectInfoService {

    /**
     * 创建工程信息
     *
     * @param createReqVO 创建信息
     * @return ID
     */
    Long createConfigProjectInfo(@Valid ConfigProjectInfoSaveReqVO createReqVO);

    /**
     * 更新工程信息
     *
     * @param updateReqVO 更新信息
     */
    void updateConfigProjectInfo(@Valid ConfigProjectInfoSaveReqVO updateReqVO);

    /**
     * 删除工程信息
     *
     * @param id ID
     */
    void deleteConfigProjectInfo(Long id);

    /**
     * 获取工程信息详情
     *
     * @param id ID
     * @return 工程信息
     */
    ConfigProjectInfoRespVO getConfigProjectInfo(Long id);

    /**
     * 获取工程信息树（按行业节点）
     *
     * @param configTreeId 行业节点ID
     * @return 树形结构
     */
    List<ConfigProjectInfoRespVO> getConfigProjectInfoTree(Long configTreeId);

    /**
     * 交换排序
     *
     * @param swapReqVO 交换信息
     */
    void swapSort(@Valid ConfigProjectInfoSwapSortReqVO swapReqVO);
}
