package com.dxhy.jxpt.baseService.config.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dxhy.api.model.config.sys.SysTabulateDeptEntity;
import com.dxhy.api.model.config.sys.SysTabulateEntity;
import com.dxhy.common.utils.PageUtils;

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

/**
 * @author jiaohongyang（焦红阳）
 * @date 2020-09-22
 */
public interface SysTabulateDeptService extends IService<SysTabulateDeptEntity> {
    /**
     * 保存 显示列表信息
     *
     * @param dataList
     *            显示列表信息
     * @return 返回信息
     */
    int saveTablateDeptJson(String dataList);

    /**
     * 保存 显示列表信息
     *
     * @param tabulateDeptEntities
     *            显示列表信息
     * @param type
     *            类型
     * @return 返回信息
     */
    int saveTablateDept(List<SysTabulateDeptEntity> tabulateDeptEntities, String type);

    /**
     * 查询条数
     *
     * @param company
     *            集团编码
     * @param menuId
     *            菜单id
     * @return 查询数量
     */
    int getTablateCount(long menuId, String company);

    /**
     * 删除 显示列表信息
     *
     * @param tabulateDeptId
     *            列表id
     * @return 显示信息
     */
    int deleteTabulate(long tabulateDeptId);

    /**
     * 查询显示列表信息
     *
     * @param company
     *            集团编码
     * @param menuId
     *            菜单id 显示编码
     * @return 显示列表信息
     */
    List<SysTabulateEntity> getTablateDept(long menuId, String company);

    /**
     * 查询为分配的显示列表信息
     *
     * @param params
     *            入参
     * @return 返回显示列表信息
     */
    List<SysTabulateEntity> getTablateNotDept(Map<String, Object> params);

    /**
     * 分页查询显示列表信息
     *
     * @param params
     *            查询信息
     * @return 显示信息
     */
    PageUtils queryPage(Map<String, Object> params);

    /**
     * 组装报文存储redis
     *
     * @param company
     *            集团编码
     * @param menuId
     *            菜单id
     * @param tabluteList
     *            显示列表信息
     */
    void tabulateRedisValue(String company, long menuId, List<SysTabulateEntity> tabluteList);


    /**
     * 根据集团编码刷新换位，如果几天编码为空，则刷新中心企业缓存
     *
     * @param company
     *            集团编码
     * @return 是否成功
     */
    int refreshCache(String company);

    /**
     * 批量刷新缓存
     *
     * @return 是否成功
     */
    int listRefreshCache();

    /**
     * 根据集团编码 删除显示列表信息
     *
     * @param params
     *            入参信息
     * @return 返回信息
     */
    int deleteTabulateDept(Map<String, Object> params);

    /**
     * 根据集团编码 修改显示列表信息，只可以修改显示列名于序号
     *
     * @param params
     *            入参信息
     * @return 返回信息
     */
    int updateTabulateDept(Map<String, Object> params);

    /**
     * 批量保存显示列表信息
     *
     * @param dataList
     *            列表信息
     * @return 返回
     */
    int saveListTablateDeptJson(String dataList);

    int saveTablateDeptList(String datalist);

    /**
     * 查询集团显示列表不分页
     * @param params
     * @return
     */
    List<SysTabulateDeptEntity> deptTabulateListNoPage(Map<String, Object> params);
}
