package com.usky.ems.service;

import com.usky.ems.domain.DmpDevice;
import com.usky.ems.domain.EmsEnergyItemCode;
import com.usky.ems.service.vo.EmsDeviceItemCodeSaveRequest;
import com.usky.ems.service.vo.EmsProductEnergyTypeSaveRequest;
import com.usky.ems.service.vo.EmsProjectResponse;
import com.usky.ems.service.vo.EmsProjectSaveRequest;

import java.util.List;

/**
 * 项目（ems_project）维护：新增、修改、删除（含空间树、省市区校验、设备系统关联）
 */
public interface EmsProjectService {

    EmsProjectResponse save(EmsProjectSaveRequest request);

    EmsProjectResponse update(EmsProjectSaveRequest request);

    void remove(Long spaceId);

    /**
     * 保存产品关联的能源类型：先删除当前租户下该能耗类型的记录，再按产品列表插入
     */
    void saveProductEnergyTypes(EmsProductEnergyTypeSaveRequest request);

    /**
     * 保存设备关联的能源分项：先删除当前租户下该分项编码的记录，再按设备列表插入
     */
    void saveDeviceItemCodes(EmsDeviceItemCodeSaveRequest request);

    /**
     * 区域设备信息：按空间及其子空间关联网关，查询 dmp_device 子设备列表
     */
    List<DmpDevice> listAreaDevices(Integer spaceId);

    /**
     * 区域能耗分项类型信息：按区域设备关联的分项编码查询 ems_energy_item_code
     */
    List<EmsEnergyItemCode> listAreaDeviceItemCodes(Integer spaceId);
}
