package com.njcn.gather.tool.addledger.service;

import com.njcn.gather.tool.addledger.pojo.param.AddDeviceUnitSaveParam;
import com.njcn.gather.tool.addledger.pojo.param.AddLedgerEngineeringSaveParam;
import com.njcn.gather.tool.addledger.pojo.param.AddLedgerEquipmentSaveParam;
import com.njcn.gather.tool.addledger.pojo.param.AddLedgerLinePathQueryParam;
import com.njcn.gather.tool.addledger.pojo.param.AddLedgerLineSaveParam;
import com.njcn.gather.tool.addledger.pojo.param.AddLedgerProjectSaveParam;
import com.njcn.gather.tool.addledger.pojo.po.AddOverlimitPO;
import com.njcn.gather.tool.addledger.pojo.vo.AddDeviceUnitVO;
import com.njcn.gather.tool.addledger.pojo.vo.AddLedgerDetailVO;
import com.njcn.gather.tool.addledger.pojo.vo.AddLedgerLinePathVO;
import com.njcn.gather.tool.addledger.pojo.vo.AddLedgerTreeNodeVO;

import java.util.List;
import java.util.Map;

/**
 * 数据台账服务。
 */
public interface AddLedgerService {

    List<AddLedgerTreeNodeVO> tree(String keyword);

    AddLedgerDetailVO detail(String id, Integer level);

    AddLedgerDetailVO saveEngineering(AddLedgerEngineeringSaveParam param);

    AddLedgerDetailVO saveProject(AddLedgerProjectSaveParam param);

    AddLedgerDetailVO saveEquipment(AddLedgerEquipmentSaveParam param);

    AddDeviceUnitVO getDeviceUnit(String devId);

    AddDeviceUnitVO saveDeviceUnit(AddDeviceUnitSaveParam param);

    AddLedgerDetailVO saveLine(AddLedgerLineSaveParam param);

    AddOverlimitPO getLineOverlimit(String lineId);

    List<Integer> availableLineNos(String deviceId, String lineId);

    Map<String, AddLedgerLinePathVO> listLinePathByLineIds(List<String> lineIds);

    List<String> listLineIdsByPathQuery(AddLedgerLinePathQueryParam param);

    boolean deleteNode(String id, Integer level);
}
