package cn.ey.biz.module.external.api.fd.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import cn.ey.biz.module.external.api.fd.feign.config.FdFeignConfiguration;
import cn.ey.biz.module.external.api.fd.feign.reqdto.DelEngagementInfoRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.EngagementActiveInfoRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.EngagementStatusinfoRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.ExternalEngmentRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.ExternalEngmentRoleRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetBusinessUnitRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetCodeBlockRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetCompentencyRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetCurrencyIdRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetDictInfoRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetFsfInfoRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetGcrateRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetGdsEngagementInfoRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetGdsRateRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetMercuryCompetencyRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetSubMgmtGdsRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetSubMgmtUnitRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetSubServiceLineRequest;
import cn.ey.biz.module.external.api.fd.feign.reqdto.GetTrateInfoRequest;
import cn.ey.biz.module.external.common.Constants;

/**
 * 财务中台 接口feign服务
 * @author 86182
 *
 */

@FeignClient(name= Constants.FD_FEIGN_NAME, url="${fd.service.url}", configuration = FdFeignConfiguration.class,contextId = "FD")
public interface IFdFeignService {
	/**
	 * 获取项目状态
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getengagementstatusinfo",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getEngagementStatusinfo(@RequestBody EngagementStatusinfoRequest request);
	
	
	/**
	 * 创建及更新外部项目
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/saveOrUpdateModeData/createexternalengment",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String createOrUpdateExternalEngment(@RequestBody ExternalEngmentRequest request);
	
	/**
	 * 更新外部项目
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/saveOrUpdateModeData/updateexternalengment",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String updateExternalEngment(@RequestBody ExternalEngmentRequest request);
	
	/**
	 * 新增或更新项目角色信息
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/saveOrUpdateModeData/SaveEngagementRole",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String saveEngagementRole(@RequestBody ExternalEngmentRoleRequest request);
	
	
	/**
	 * 删除项目
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/deleteModeDataByPK/delengagementinfo",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String delEngagementInfo(@RequestBody DelEngagementInfoRequest request);
	
	
	/**
	 * 获取汇率基础数据
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getrateinfo",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getRateInfo(@RequestBody GetTrateInfoRequest request);
	
	/**
	 * 获取币种ID
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getCurrencyID",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getCurrencyId(@RequestBody GetCurrencyIdRequest request);
	
	/**
	 * 获取Fee Sharing Factor数据
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getfsfinfo",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getFsfInfo(@RequestBody GetFsfInfoRequest request);
	
	/**
	 * 获取获取Rate信息数据
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getgcrate",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getGcrate(@RequestBody GetGcrateRequest request);
	
	/**
	 * 获取获取Gds Rate数据
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getgdsrateinfo",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getGdsRate(@RequestBody GetGdsRateRequest request);
	
	/**
	 * 获取项目活动信息总数
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageCount/getengagementactivecount",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getEngagementActiveCount(@RequestBody EngagementActiveInfoRequest request);
	
	/**
	 * 获取项目活动信息
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getengagementactiveinfo",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getEngagementActiveInfo(@RequestBody EngagementActiveInfoRequest request);
	
	/**
	 * 获取GDS项目信息
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getgdsengagementinfo",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getGdsEngagementInfo(@RequestBody GetGdsEngagementInfoRequest request);
	
	/**
	 * 获取GDS项目总数
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageCount/getgdsengagementcount",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getGdsEngagementCount(@RequestBody GetGdsEngagementInfoRequest request);
	
	
	/**
	 * 获取通用字典
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getDictInfoByCategoryCode",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getDictInfoByCategoryCode(@RequestBody GetDictInfoRequest request);
	
	
	/**
	 * 获取 business unit
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getBusinessUnit",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getBusinessUnit(@RequestBody GetBusinessUnitRequest request);
	
	/**
	 * 获取compentency
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getCompentency",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getCompentency(@RequestBody GetCompentencyRequest request);
	
	/**
	 * 获取CodeBlock
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getCodeBlock",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getCodeBlock(@RequestBody GetCodeBlockRequest request);
	
	/**
	 * 获取SMU_firm
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getSubMgmtUnit",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getSubMgmtUnit(@RequestBody GetSubMgmtUnitRequest request);
	
	
	/**
	 * 获取SubServiceLine
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getSubServiceLine",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getSubServiceLine(@RequestBody GetSubServiceLineRequest request);
	
	
	/**
	 * 获取SubMgmtGds
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getSubMgmtGds",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getSubMgmtGds(@RequestBody GetSubMgmtGdsRequest request);
	
	/**
	 * 获取mercury Competency
	 * @param request
	 * @return
	 */
	@RequestMapping(method= RequestMethod.POST, value="/api/cube/restful/interface/getModeDataPageList/getMercuryCompetency",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
	String getMercuryCompetency(@RequestBody GetMercuryCompetencyRequest request);
	
	
	
	
	
}
