package com.yunzhupaas.onlinedev.service;

import com.yunzhupaas.base.UserInfo;
import com.yunzhupaas.base.model.VisualDevJsonModel;
import com.yunzhupaas.exception.WorkFlowException;
import com.yunzhupaas.onlinedev.model.OnlineDevListModel.VisualColumnSearchVO;
import com.yunzhupaas.onlinedev.model.PaginationModel;
import org.springframework.stereotype.Service;

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

/**
 * 列表临时接口
 *
 * @author 云筑产品开发平台组
 * @version V3.2.0
 * @copyright 深圳市乐程软件有限公司（http://www.szlecheng.cn）
 * @date 2024/7/28
 */
@Service
public interface VisualDevListService {


    /**
     * 无表数据
     *
     * @param modelId
     * @return
     */
    List<Map<String, Object>> getWithoutTableData(String modelId);

    /**
     * 有表查询
     *
     * @param visualDevJsonModel
     * @param paginationModel
     * @return
     */
    List<Map<String, Object>> getListWithTable(VisualDevJsonModel visualDevJsonModel, PaginationModel paginationModel, UserInfo userInfo, List<String> columnPropList);

    /**
     * 列表数据
     *
     * @param visualDevJsonModel
     * @param paginationModel
     * @return
     */
    List<Map<String, Object>> getDataList(VisualDevJsonModel visualDevJsonModel, PaginationModel paginationModel) throws WorkFlowException;

    /**
     * 外链列表数据
     *
     * @param visualDevJsonModel
     * @param paginationModel
     * @return
     */
    List<Map<String, Object>> getDataListLink(VisualDevJsonModel visualDevJsonModel, PaginationModel paginationModel) throws WorkFlowException;


    /**
     * 无表数据处理
     *
     * @param list
     * @param searchVOList
     * @param paginationModel
     * @return
     */
    List<Map<String, Object>> getList(List<Map<String, Object>> list, List<VisualColumnSearchVO> searchVOList, PaginationModel paginationModel);

    /**
     * 关联表单列表数据
     *
     * @param visualDevJsonModel
     * @param paginationModel
     * @return
     */
    List<Map<String, Object>> getRelationFormList(VisualDevJsonModel visualDevJsonModel, PaginationModel paginationModel);

    /**
     * 列表数据
     */
    List<Map<String,Object>> getListWithTableList(VisualDevJsonModel visualDevJsonModel, PaginationModel paginationModel, UserInfo userInfo);
}

