package com.engine.htsc.trip.service;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * Created by qlk
 */
public interface ReimbursementService {

    /**
     * 带出费用明细
     * @param formTable
     * @param requestIds
     * @return
     */
	List<List<String>> bringDt12(String formTable, String requestIds);

    /**
     * 带出行程明细
     * @param formTable
     * @param requestIds
     * @return
     */
	List<List<String>> bringDt13(String formTable, String requestIds);

    /**
     * 报销人带出
     * @param formTable
     * @param requestIds
     * @return
     */
	Map<String, Object> bringClaimant(String formTable, String requestIds);

    /**
     * 是否领导报销
     * @param ngr 拟稿人
     * @return boolean
     */
	Boolean checkLeader(String ngr);

	/**
	 * 关联出差申请的报销次数
	 * @param lcs 流程按逗号
	 * @return 流程名称和报销次数
	 */
	List<Map<String, Object>> getApInfo(String lcs);

    /**
     * 多部门浏览按钮
     * @param ccr 出差人
     * @param lc 流程编号
     * @return map
     */
	Map<String, Object> getBrowserBtn(String ccr, String lc);

    /**
     * 获取用户账户信息
     * @param ngr 拟稿人
     * @param bxr 报销人
     * @return 银行信息
     */
	Map<String, String> getBankInfo(String ngr, String bxr);

	/**
	 * 单个明细行的差旅标准
	 * @param traveler    出差人
	 * @param destination 省市区,逗号分隔
	 * @return 差标
	 */
	List<String> getTravelStandardForSingle(String traveler, String destination);

	/**
	 * 获取关联出差流程的投行项目
	 * @param ccr 出差人
	 * @param lc  流程号
	 * @return 浏览按钮
	 */
	Map<String, Object> getGsxmBrowserBtn(String ccr, String lc);

	/**
	 * 根据报销地确认报销地费用会计
	 * @param bxd 报销地点
	 * @return List<String>
	 */
	List<String> getAccountingByLocation(String bxd);

    /**
     * 获取出差流程的出差人对应补贴标准值
     * @param requestid 流程编号
     * @return map key:出差人code value:标准补贴
     */
	List<Map<String, String>> getSubsidyStandard(String requestid);

	/**
	 * 通过工号从建模中获取银行信息
	 * @param hrmId 人员id
	 * @return 银行信息map
	 * yxmc:银行名称
	 * yxkh:银行卡号
	 */
	Map<String, String> getBankInfoFormOADB(String hrmId);

	/**
	 * 出差流程已关联报销单次数
	 * @param lcs 出差流程字符串
	 * @return map
	 * key:出差流程编号(string)
	 * value:已关联过的报销编号(list)
	 */
	Map<String, List<String>> getRelatedInfo(String lcs);

	/**
	 * 预算接口 出纳建模按钮
	 * @param requestid 申请流程id
	 * @param billStatus 实占 1
	 * @return
	 */
	String doBudgetCommit(String requestid, String billStatus);

	/**
	 * 预算接口,同步写入预算中间表
	 * @param reqMap 数据信息
	 * @return 是否成功
	 */
	Boolean doBudgetMiddleTable(Map<String, Object> reqMap);

	/**
	 * 月度补贴
	 * @param request2Map 条件
	 * @return 按人员组成list
	 */
	List<Map<String, Object>> monthlyAllowance(Map<String, String> request2Map);

	/**
	 * 月度补贴 -- 出差申请
	 * @param queryParam 条件
	 * @return 按人员,出差申请维度
	 */
	List<Map<String, Object>> monthlyAllowance4BusinessTrip(Map<String, String> queryParam) throws Exception;
}
