package com.dk.mdm.mapper.common;

import com.dk.common.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

/**
 * @author : 周兴
 * @desc : 控件数据源API
 * @date : 2023/1/3 17:21
 */
@Repository
public interface CommonMapper extends BaseMapper<Map<String, Object>> {
    /**
     * @desc : 获取表中的最大值
     * @author : 周兴
     * @date : 2022-3-8 15:47
     */
    Integer getMaxDisplayNo(Map param);

    /**
     * @desc : 获取编码
     * @author : 周兴
     * @date : 2024-3-1 15:47
     */
    Map<String, Object> getUniqueCode(Map param);

    /**
     * @desc : 获取单号
     * @author : 周兴
     * @date : 2024-3-1 15:47
     */
    Map<String, Object> getUniqueNote(Map param);

    /**
     * @desc : 获取用户菜单
     * @author : 周兴
     * @date : 2024/3/4 14:20
     */
    List<Map<String, Object>> getMenuByUser(Map param);

    /**
     * @desc : 获取数据字典项目
     * @author : 王英杰
     * @date : 2023/1/6 14:15
     */
    List<Map<String, Object>> getDictionaryItemData(Map param);

    /**
     * @desc : 获取系统表数据种类
     * @author : 周兴
     * @date : 2023/1/6 14:15
     */
    List<Map<String, Object>> getDataKind(Map param);

    /**
     * @desc : 获取组织部门
     * @author : 姜宁
     * @date : 2023/1/9 13:49
     */
    List<Map<String, Object>> getOrg(Map param);

    /**
     * @desc : 只获取二级部门 按照level_code 排序
     * @author : 王英杰
     * @date : 2023/1/9 13:49
     */
    List<Map<String, Object>> getProcureOrg(Map param);

    /**
     * @desc : 获取部门（数量）
     * @author : 姜宁
     * @date : 2023/1/29 17:04
     */
    Long getOrgCountByPage(Map param);

//    /**
//     * @desc : 获取用户菜单
//     * @author : 周兴
//     * @date : 2023/1/9 14:20
//     */
//    List<Map<String, Object>> getMenuByUser(@Param("appCode") String appCode, @Param("userId") Integer userId);

    /**
     * @desc : 获取角色
     * @author : 姜宁
     * @date : 2023/1/29 14:25
     */
    List<Map<String, Object>> getRole(Map param);

    /**
     * @desc : 获取员工
     * @author : 姜宁
     * @date : 2023/1/29 17:04
     */
    List<Map<String, Object>> getStaffByPage(Map param);

    /**
     * @desc : 获取员工（数量）
     * @author : 姜宁
     * @date : 2023/1/29 17:04
     */
    Long getStaffCountByPage(Map param);

    /**
     * @desc : f_get_setting_values 函数查询单个系统参数
     * @author : 周兴
     * @date : 2023/1/30 10:26
     */
    String getSettingValue(Map param);

    /**
     * @desc : getAllSettingValue 函数查询所有系统参数
     * @author : 周兴
     * @date : 2024/4/1 10:27
     */
    Map<String, Object> getAllSettingValue();

    /**
     * @desc : f_get_setting_values 函数查询多个系统参数
     * @author : 周兴
     * @date : 2023/1/30 10:27
     */
    Map<String, Map<String, String>> getSettingValues(Map param);

    /**
     * @desc : 查询系统参数分类
     * @author : 夏常明
     * @date : 2023/1/4 10:01
     */
    List<Map<String, Object>> getSettingKind(Map param);


    /**
     * @desc : 获取数据字典
     * @author : 姜宁
     * @date : 2023/2/7 14:45
     */
    List<Map<String, Object>> getDictionaryData(Map param);


    /**
     * @desc : 查出一个map对象
     * @author : 姜宁
     * @date : 2023/2/7 14:45
     */
    Map<String, Object> selectDictionaryData (Map param );
    /**
     * @desc : 获取用户隐藏列
     * @author : 周兴
     * @date : 2023/4/4 15:05
     */
    List<Map<String, Object>> getUserTableInfo(Map param);

    /**
     * @desc : 获取用户功能
     * @author : 周兴
     * @date : 2023/4/4 15:05
     */
    List<Map<String, Object>> getUserFunction(Map param);

    /**
     * @desc : 查导航菜单(自定义报表用)
     * @author : 周兴
     * @date : 2023/4/4 15:05
     */
    List<Map<String, Object>> getMenuNavigation(Map param);


    /**
     * @desc : 获取数据类型
     * @author : 周兴
     * @date : 2023/6/2 13:49
     */
    List<Map<String, Object>> getValueKind(Map param);


    /**
     * @desc : 获取应用
     * @author : 洪旭东
     * @date : 2023-06-30 14:56
     */
    List<Map<String, String>> getApplication();

    /**
     * @desc : 获取单据
     * @author : 周兴
     * @date : 2023/9/14 11:06
     */
    List<Map<String, Object>> getDoc(Map param);


    /**
     * @desc : 获取商品
     * @author : 姜宁
     * @date : 2023/1/9 13:49
     */
    List<Map<String, Object>> getGoods(Map param);

    /**
     * @desc : 获取商品（数量）
     * @author : 姜宁
     * @date : 2023/1/29 17:04
     */
    Long getGoodsCountByPage(Map param);

    /**
     * @desc   : 获取商品（销售订单开单用）
     * @author : 付斌
     * @date   : 2024-03-09 9:57
     */
    List<Map<String, Object>> getGoodsForOrder(Map param);

    /**
     * @desc   : 获取商品（销售订单开单用）(数量)
     * @author : 付斌
     * @date   : 2024-03-09 9:57
     */
    Long getGoodsForOrderCountByPage(Map param);

    /**
     * @desc   : 获取商品（采购订单开单用）
     * @author : 常皓宁
     * @date   : 2024/3/9 10:08
     */
    List<Map<String, Object>> getGoodsForPurchase(Map param);

    /**
     * @desc   : 获取商品（采购订单开单用）（分页）
     * @author : 常皓宁
     * @date   : 2024/3/9 10:08
     */
    Long getGoodsForPurchaseCountByPage(Map param);

    /**
     * @desc : 获取客户
     * @author : 付斌
     * @date : 2024-03-09 9:55
     */
    List<Map<String, Object>> getCustomer(Map param);

    /**
     * @desc : 获取客户(数量)
     * @author : 付斌
     * @date : 2024-03-09 9:55
     */
    Long getCustomerCountByPage(Map param);

    /**
     * @desc : 获取单据Id
     * @author : 付斌
     * @date : 2024-03-01 10:13
     */
    Object getUuidSeq();

    /**
     * @desc : 获取单据单号
     * @author : 常皓宁
     * @date : 2024/2/28 9:35
     */
    String getDocNo(@Param("cpId") Integer cpId, @Param("purId") String purId, @Param("docCode") String docCode);

    /**
     * @desc : 获取供应商
     * @author : 常皓宁
     * @date : 2024/3/1 9:21
     */
    List<Map<String, Object>> getSupplier(Map param);

    /**
     * @desc : 获取供应商数量
     * @author : 常皓宁
     * @date : 2024/3/1 9:21
     */
    Long countSupplier(Map<String, Object> param);

    /**
     * @desc : 获取渠道
     * @author : 付斌
     * @date : 2024-03-02 10:18
     */
    List<Map<String, Object>> getChannel(Map param);


    /**
     * @desc : 获取商品品牌
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    List<Map<String, Object>> getGoodsBrand(Map param);
    /**
     * @desc : 获取商品品牌 树形查询
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    List<Map<String, Object>> getGoodsCategoryTree(Map param);

    /**
     * @desc : 获取商品品牌数量
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    Long countGoodsBrand(Map<String, Object> param);

    /**
     * @desc : 获取商品种类
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    List<Map<String, Object>> getGoodsCategory(Map param);

    /**
     * @desc : 获取商品种类数量
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    Long countGoodsCategory(Map<String, Object> param);

    /**
     * @desc : 获取商品系列
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    List<Map<String, Object>> getGoodsSeries(Map param);

    /**
     * @desc : 获取商品系列数量
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    Long countGoodsSeries(Map<String, Object> param);

    /**
     * @desc : 获取计量单位
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    List<Map<String, Object>> getUnit(Map<String, Object> param);

    /**
     * @desc : 获取计量单位数量
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    Long countUnit(Map<String, Object> param);


    /**
     * @desc : 获取仓库档案
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    List<Map<String, Object>> getWarehouseByPage(Map param);

    /**
     * @desc : 获取获取仓库档案个数
     * @author : 王英杰
     * @date : 2024/3/1 9:21
     */
    Long countWarehouseByPage(Map param);

    /**
     * @desc : 获取仓库
     * @author : 常皓宁
     * @date : 2024/3/4 10:50
     */
    List<Map<String, Object>> getWarehouse(Map param);

    /**
     * @desc : 查询库存
     * @author : 付斌
     * @date : 2024-03-05 10:53
     */
    List<Map<String, Object>> getInventory(Map param);

    /**
     * @desc : 查询库存（数量）
     * @author : 付斌
     * @date : 2024-03-05 10:52
     */
    Long getInventoryCountByPage(Map param);

    List<Map<String, Object>> getSaleChannel(Map param);
    /**
     * @desc : 结算方式-小程序
     * @author : 姜永辉
     * @date : 2024-03-05 10:52
     */
    List<Map<String, Object>> getSettlement(Map param);
    /**
     * @desc : 渠道-小程序
     * @author : 姜永辉
     * @date : 2024-03-05 10:52
     */
    List<Map<String, Object>> getSaleChannelPurviewType(Map param);


    /**
     * @desc   : 获取供应商和客户数据
     * @date   : 2024/3/13 14:03
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getSupplierAndCustomer(Map param);

    /**
     * @desc   : 获取供应商和客户数据分页
     * @date   : 2024/3/13 14:03
     * @author : 寇珊珊
     */
    List<Map<String,Object>> getSupplierAndCustomerByPage(Map param);

    /**
     * @desc   : 获取供应商和客户数据分页数量
     * @date   : 2024/3/13 14:53
     * @author : 寇珊珊
     */
    Long getSupplierAndCustomerByPageCount(Map param);

    /**
     * @desc   : 获取员工
     * @date   : 2024/3/13 16:24
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getStaff(Map param);

    /**
     * @desc   : 获取员工-范围权限
     * @date   : 2024/3/13 16:24
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getStaffPurviewType(Map param);


    /**
     * @desc   : 获取组织机构
     * @date   : 2024/3/13 17:03
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getOrganization(Map param);

    /**
     * @desc   : 获取组织机构分页
     * @date   : 2024/3/13 17:03
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getOrganizationByPage(Map param);

    /**
     * @desc   : 获取组织机构数量
     * @date   : 2024/3/13 17:03
     * @author : 寇珊珊
     */
    Long getOrganizationCount(Map<String, Object> param);

    /**
     * @desc   : 获取资金账户（下拉）
     * @author : 付斌
     * @date   : 2024-03-14 11:35
     */
    List<Map<String, Object>> getMac(Map param);

    /**
     * @desc : 获取资金账户（放大镜）
     * @author : 付斌
     * @date : 2024-03-05 10:53
     */
    List<Map<String, Object>> getMoneyAccount(Map param);

    /**
     * @desc : 获取资金账户（数量）
     * @author : 付斌
     * @date : 2024-03-05 10:52
     */
    Long getMoneyAccountCountByPage(Map param);

    /**
     * @desc   : 获取多业务部门
     * @author : 付斌
     * @date   : 2024-03-20 16:52
     */
    List<Map<String, Object>> selectMultiOrg(Map param);

    /**
     * @desc   : 获取多业务员
     * @author : 付斌
     * @date   : 2024-03-20 16:52
     */
    List<Map<String, Object>> selectMultiStaff(Map param);

    /**
     * @desc   : 组织仓库
     * @author : 宋扬
     * @date   : 2024/3/22 15:22
     */
    List<Map<String, Object>> selectMultiWarehouse(Map param);

    /**
     * @desc   : 组织资金账户
     * @author : 宋扬
     * @date   : 2024/3/22 15:22
     */
    List<Map<String, Object>> selectMultiMoneyAccount(Map param);

    /**
     * @desc   : 获取商品（采购订单开单用）
     * @author : 常皓宁
     * @date   : 2024/3/9 10:08
     */
    List<Map<String, Object>> getGoodsForPurchaseReturn(Map param);

    /**
     * @desc   : 获取商品（采购订单开单用）（分页）
     * @author : 常皓宁
     * @date   : 2024/3/9 10:08
     */
    Long getGoodsForPurchaseReturnByPage(Map param);

    /**
     * @desc   : 获取员工的范围权限类型
     * @author : 常皓宁
     * @date   : 2024/4/2 10:15
     */
    List<Map<String, Object>> getPurviewType(Map param);
    List<Map<String, Object>> getInventoryByList(Map param);

    List<Map<String,Object>> getLabelPrintItem(Map param);

    /**
     * @desc   : 获取组织仓库
     * @author : 付斌
     * @date   : 2024-04-10 13:31
     */
    List<Map<String, Object>> getOrgWh(Map param);


    /**
     * @desc   :  获取商品（其他入库开单用）
     * @date   : 2024/4/20 11:21
     * @author : 寇珊珊
     */
    List<Map<String, Object>> getGoodsForInto(Map param);

    /**
     * @desc   : 获取商品（其他入库开单用）（数量）
     * @date   : 2024/4/20 11:21
     * @author : 寇珊珊
     */
    Long getGoodsForIntoCountByPage(Map param);
}
