package com.persagy.proxy.object.service;

import com.persagy.proxy.adm.request.AdmQueryCriteria;
import com.persagy.proxy.adm.request.AdmResponse;
import com.persagy.proxy.adm.service.IAdmBaseService;
import com.persagy.proxy.common.entity.InstanceUrlParam;
import com.persagy.proxy.object.model.AdmFloor;

import java.util.List;

/**
 * ADM 楼层 接口类
 * @author lvxy
 * @date 2021/8/16
 */
public interface IAdmFloorService extends IAdmBaseService<AdmFloor> {

    /**
     * 查询outLine
     * @param request
     * @return
     */
    AdmResponse doQueryOutLine(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmFloor> clazz);

    /**
     * 查询建筑下的楼层
     * @param context
     * @param buildingId
     * @return
     */
    List<AdmFloor> queryFloorInBuilding(InstanceUrlParam context, String buildingId);

    /**
     * 楼层自定义信息点处理 新增，properties 转化为String类型，放到propertiesInfo信息点存储，查询相关，propertiesInfo转为为properties 页面展示
     * @param context
     * @param queryFlag true 查询，false 更新或者新增
     * @return
     */
    void ensureSpecialValues(InstanceUrlParam context, List<AdmFloor> vos, boolean queryFlag);
    /***
     * Description: 根据条件查询
     * @param criteria : 请求参数
     * @return : com.persagy.proxy.adm.request.AdmResponse
     * @author : lijie
     * @date :2021/10/28 20:13
     * Update By lijie 2021/10/28 20:13
     */
    AdmResponse query(AdmQueryCriteria criteria);

    /**
     * 关系计算处理
     * @param context: 上下文数据,因方法为异步方法,ThreadLocal无法多线程之间共享变量.暂时使用Spring的异步
     * @param vos: 楼层数据
     */
    void processRelationType(InstanceUrlParam context,List<AdmFloor> vos);
}
