package org.jeecg.ctop.finance.policy.mapper;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.elasticsearch.search.DocValueFormat;
import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * 政策信息表
 * @author jeecg-boot
 * 2021-07-27
 * @version V1.0
 */
public interface CwjsPolicyInfoMapper extends BaseMapper<CwjsPolicyInfo> {

    //查看政策列表
    List<CwjsPolicyInfo> selectPolicyInfos(CwjsPolicyInfo policyInfo);

    List<JSONObject> getAllSale();

    List<JSONObject> getAllSaleAndMeidaManager();

    /**
     * 查询所有 运营
     * @return
     */
    List<Map<String,Object>> getAllOperationUser();

    List<JSONObject> getAllSaleByUserId(String userId);

    void updatePolicyInfoById(CwjsPolicyInfo policyInfo);

    CwjsPolicyInfo getPolicyInfo(CwjsPolicyInfo policyInfo);




    //查询用户所属公司及区域 以及 上级领导 和 分公司负责人
    JSONObject getUserLeaderAndDirectorByRoleName(@Param("userId") String userId,@Param("roleName") String roleName);
    JSONObject getUserLeaderByUserId(@Param("userId") String userId);

    /**
     * 查询 自动转审条件
     * @param accountingPeriod 账期
     * @param mediaType 媒体类型 1-头条 2-快手 3-千川 4-UD 5-阿里内广 6-快手服务商 7-磁力金牛 8-头条内广
     * @param advancePay  是否预付：0：否  1：是'
     * @param rebateType 返点类型 返点类型：0:返现  1:返货   2:返现+返货 3-服务费
     * @param rebateRate 返点比例
     * @return
     */
    List<JSONObject> selAutoConveryInfo(@Param("accountingPeriod") String accountingPeriod,
                                        @Param("mediaType") Integer mediaType,
                                        @Param("advancePay") Integer advancePay,
                                        @Param("rebateType") Integer rebateType,
                                        @Param("rebateRate") BigDecimal rebateRate
                                        );



    //查询 政策审核记录
     List<JSONObject> getPolicyApprovalLogByPolicyId(@Param("policyId") Integer policyId);

     //查询 用户所属公司主题id
     List<Integer> getCompanySubjectByUserId(@Param("userId") String userId);

     //查询 法务人员
     List<JSONObject> getLegalAffairsUsers();

     //政策作废 修改状态
     void updatePolicyToVOidById(@Param("policyId") String policyId,@Param("delReason") String delReason);

    /**
     * 查询 结算单 没有上传账户图片的账户信息
     * @param productId 产品id
     * @param projectId 项目id
     * @param uploadYears 年-月
     * @param mediaIds 媒体类型 1-头条 2-快手 3-头条内广 4-快手内广
     * @return
     */
    List<JSONObject> getSettlementNoPictureAccountList(@Param("productId") String productId,
                                                            @Param("projectId") String projectId,
                                                            @Param("uploadYears") String uploadYears,
                                                            @Param("mediaIds") List<Integer> mediaIds);

    List<JSONObject> getSettlementNoPictureAccountAgentList(@Param("productId") String productId,
                                                            @Param("projectId") String projectId,
                                                            @Param("endTime") String endTime,
                                                            @Param("accountIds") List<String> accountIds);


    JSONObject queryInfo(@Param("advertiserName") String advertiserName,@Param("productName")  String productName,@Param("type") String type);
}
