package com.cf.imes.module.system.service.assemblyconfig;

import com.cf.imes.module.system.controller.admin.assemblyconfig.vo.AssemblyConfigImportReqVO;
import com.cf.imes.module.system.controller.admin.assemblyconfig.vo.AssemblyConfigListRespVO;
import com.cf.imes.module.system.controller.admin.assemblyconfig.vo.AssemblyConfigRespVO;
import com.cf.imes.module.system.controller.admin.assemblyconfig.vo.AssemblyConfigSaveReqVO;

import java.util.List;

/**
 * 装配设置 Service 接口
 *
 * @author Gqr
 * @since 2026/2/25 15:10
 */
public interface AssemblyConfigService {
    /**
     * 导入装配顺序
     *
     * @param reqVO
     */
    void importAssemblyConfigFromOrders(AssemblyConfigImportReqVO reqVO);

    /**
     * 查询组织装配设置列表
     *
     * @return
     */
    List<AssemblyConfigListRespVO> getOrgAssemblyConfigList(String name);

    /**
     * 获取装配设置
     *
     * @param configId
     * @return
     */
    AssemblyConfigRespVO getAssemblyConfig(Long configId);

    /**
     * 待选部件转加工部件
     *
     * @param configId
     */
    void doConfig(Long configId);

    /**
     * 新增加工部件
     *
     * @param configId
     */
    void newConfig(Long configId);

    /**
     * 移除已配置的加工部件
     *
     * @param configId
     */
    void delete(Long configId);

    /**
     * 保存装配设置
     *
     * @param reqVO
     */
    void saveConfig(AssemblyConfigSaveReqVO reqVO);

    /**
     * 根据部件名称获取组织的装配设置
     *
     * @param componentNameList
     * @return
     */
    List<AssemblyConfigRespVO> getAssemblyConfigByComponentNameList(List<String> componentNameList);

    /**
     * 根据部件名称获取组织不加工的装配设置
     *
     * @param componentNameList
     * @return
     */
    List<AssemblyConfigRespVO> getNotProcessAssemblyConfigByComponentNameList(List<String> componentNameList);
}
