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

import com.yhy.module.core.controller.admin.workbench.vo.WbBoqMarketMaterialRespVO;
import com.yhy.module.core.controller.admin.workbench.vo.WbBoqMarketMaterialSaveReqVO;
import com.yhy.module.core.dal.dataobject.workbench.WbBoqMarketMaterialDO;
import java.util.List;
import javax.validation.Valid;

/**
 * 工作台市场主材设备 Service 接口
 *
 * @author yhy
 */
public interface WbBoqMarketMaterialService {

    /**
     * 创建市场主材设备
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createMarketMaterial(@Valid WbBoqMarketMaterialSaveReqVO createReqVO);

    /**
     * 更新市场主材设备
     *
     * @param updateReqVO 更新信息
     */
    void updateMarketMaterial(@Valid WbBoqMarketMaterialSaveReqVO updateReqVO);

    /**
     * 删除市场主材设备
     *
     * @param id 编号
     */
    void deleteMarketMaterial(Long id);

    /**
     * 获得市场主材设备
     *
     * @param id 编号
     * @return 市场主材设备
     */
    WbBoqMarketMaterialDO getMarketMaterial(Long id);

    /**
     * 获得市场主材设备列表
     *
     * @param divisionId 分部分项ID
     * @return 市场主材设备列表
     */
    List<WbBoqMarketMaterialRespVO> getMarketMaterialList(Long divisionId);

    /**
     * 从定额复制市场主材设备到工作台
     *
     * @param divisionId 分部分项ID（定额节点）
     * @param quotaItemId 定额基价ID
     */
    void copyFromQuota(Long divisionId, Long quotaItemId);

    /**
     * 批量删除分部分项下的所有市场主材设备
     *
     * @param divisionIds 分部分项ID列表
     */
    void deleteByDivisionIds(List<Long> divisionIds);
}
