package com.hzya.frame.mdm.service;

import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.mdm.entity.MdmDataFiledDto;
import com.hzya.frame.web.entity.JsonResultEntity;

import java.util.List;

/**
 * 主数据服务接口
 */
public interface IMdmService {

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据列表显示 树、查询条件、列表字段、按钮
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity queryMdmShow(JSONObject jsonObject);
    //
    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据查询所有字段
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity queryMdmShowAll(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  查询模版数据（list 或者 分页）
     * @Date 1:33 下午 2023/7/12
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryTemplateData(JSONObject jsonObject);
    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据列表显示 业务数据
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity queryMdmShowData(JSONObject jsonObject);
    //
    ///**
    // * @param jsonObject
    // * @return com.hzya.frame.web.entity.JsonResultEntity
    // * @Author lvleigang
    // * @Description 主数据业务数据
    // * @Date 9:40 上午 2023/10/18
    // **/
    //JsonResultEntity queryMdmShowDistribute(JSONObject jsonObject);
    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据业务数据树结构
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity queryMdmShowTreeData(JSONObject jsonObject);
    ///**
    // * @param jsonObject
    // * @return com.hzya.frame.web.entity.JsonResultEntity
    // * @Author lvleigang
    // * @Description 主数据业务数据树结构
    // * @Date 9:40 上午 2023/10/18
    // **/
    //JsonResultEntity queryMdmOptionData(JSONObject jsonObject);
    //
    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据详情 区分类型 新增、修改、查看
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity queryMdmShowDetails(JSONObject jsonObject);
    //
    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据详情数据 区分类型 新增、修改、查看
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity queryMdmShowDetailsData(JSONObject jsonObject);

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据详情数据字典
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity queryMdmShowDetailsDictionary(JSONObject jsonObject);
    //
    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据详情数据修改
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity updateMdmShowDetailsData(JSONObject jsonObject);
    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据详情数据新增
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity saveMdmShowDetailsData(JSONObject jsonObject);

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 主数据删除业务数据
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity deleteMdmShowDetailsData(JSONObject jsonObject);
    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 处理分发数据
     * @Date 9:40 上午 2023/10/18
     **/
    JsonResultEntity doMdmDistribute(JSONObject jsonObject) throws Exception;
    /**
     * @Author lvleigang
     * @Description  修改树结构的下级以及其他使用地方数据
     * @Date 9:12 上午 2024/8/2
     * @param mdmId 主数据mdmId
     * @param tableName 主数据的表名
     * @param id 数据id
     * @param mdmDataFiledDtos 数据
     * @return void
     **/
    void updateTreeUseData(String mdmId, String tableName, String id, List<MdmDataFiledDto> mdmDataFiledDtos);
}
