package com.persagy.dmp.delivery.client;

import cn.hutool.extra.spring.SpringUtil;
import com.persagy.dmp.basic.model.QueryCriteria;
import com.persagy.dmp.common.model.response.CommonResult;
import com.persagy.dmp.common.utils.ResultHelper;
import com.persagy.dmp.delivery.entity.ObjectInfoCollect;
import com.persagy.dmp.delivery.entity.ObjectTypeCollect;

import java.util.List;

/**
 * 交付范围Client门面
 * @author Charlie Yu
 * @date 2021-05-15
 */
public class DigitalObjectTypeCollectFacade {

    private static DigitalObjectTypeCollectClient client = SpringUtil.getBean(DigitalObjectTypeCollectClient.class);

    /**
     * 查询信息点定义交付范围
     * @param groupCode 集团编码
     * @param projectId 项目ID
     * @param appId 应用ID
     * @param userId 用户ID
     * @param criteria 查询条件
     * @return 对象信息点对象集合
     */
    public static List<ObjectTypeCollect> query(String groupCode, String projectId, String appId, String userId, QueryCriteria criteria) {
        CommonResult<List<ObjectTypeCollect>> result = client.query(groupCode, projectId, appId, userId, criteria);
        return ResultHelper.getContent(result);
    }

    /**
     * 查询类型定义交付范围-原样返回结果
     * @param groupCode 集团编码
     * @param projectId 项目ID
     * @param appId 应用ID
     * @param userId 用户ID
     * @param criteria 查询条件
     * @return 对象类型对象集合
     */
    public static CommonResult<List<ObjectTypeCollect>> queryPrototype(String groupCode, String projectId, String appId, String userId, QueryCriteria criteria) {
        return client.query(groupCode, projectId, appId, userId, criteria);
    }

    /**
     * 创建类型定义交付范围
     * @param groupCode 集团编码
     * @param projectId 项目ID
     * @param appId 应用ID
     * @param userId 用户ID
     * @param vo 对象类型对象
     * @return 对象类型对象
     */
    public static ObjectTypeCollect create(String groupCode, String projectId, String appId, String userId, ObjectTypeCollect vo) {
        CommonResult<ObjectTypeCollect> commonResult = client.create(groupCode, projectId, appId, userId, vo);
        return commonResult.getData();
    }
    /**
     * 创建类型定义交付范围-批量新增
     * @param groupCode 集团编码
     * @param projectId 项目ID
     * @param appId 应用ID
     * @param userId 用户ID
     * @param voList 对象类型对象数组
     * @return 对象类型对象数组
     */
    public static List<ObjectTypeCollect> createBatch(String groupCode, String projectId, String appId, String userId, List<ObjectTypeCollect> voList) {
        CommonResult<List<ObjectTypeCollect>> commonResult = client.createBatch(groupCode, projectId, appId, userId, voList);
        return commonResult.getData();
    }
    /**
     * 更新类型定义交付范围
     * @param groupCode 集团编码
     * @param projectId 项目ID
     * @param appId 应用ID
     * @param userId 用户ID
     * @param vo 对象类型对象
     * @return 对象类型对象
     */
    public static ObjectTypeCollect update(String groupCode, String projectId, String appId, String userId, ObjectTypeCollect vo) {
        CommonResult<ObjectTypeCollect> commonResult = client.update(groupCode, projectId, appId, userId, vo);
        return commonResult.getData();
    }
    /**
     * 更新对象类型
     * @param groupCode 集团编码
     * @param projectId 项目ID
     * @param appId 应用ID
     * @param userId 用户ID
     * @param voList 对象类型对象数组
     * @return 对象类型对象数组
     */
    public static List<ObjectTypeCollect> updateBatch(String groupCode, String projectId, String appId, String userId, List<ObjectTypeCollect> voList) {
        CommonResult<List<ObjectTypeCollect>> commonResult = client.updateBatch(groupCode, projectId, appId, userId, voList);
        return commonResult.getData();
    }
    /**
     * 删除类型定义交付范围
     * @param groupCode 集团编码
     * @param projectId 项目ID
     * @param appId 应用ID
     * @param userId 用户ID
     * @param id 对象类型对象id
     * @return 对象类型对象
     */
    public static void delete(String groupCode, String projectId, String appId, String userId, String id) {
        client.delete(groupCode, projectId, appId, userId, id);
    }
    /**
     * 删除类型定义交付范围-批量删除
     * @param groupCode 集团编码
     * @param projectId 项目ID
     * @param appId 应用ID
     * @param userId 用户ID
     * @param ids 对象类型对象id数组
     * @return 对象类型对象数组
     */
    public static void deleteBatch(String groupCode, String projectId, String appId, String userId, List<String> ids) {
        client.deleteBatch(groupCode, projectId, appId, userId, ids);
    }
}
