package com.unis.base.client;

import com.unis.base.common.vo.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import com.unis.common.utils.ResponseWrapper;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

/**
 * @author huangxing
 * @version 1.0
 * @Title: TzSlqyFeign
 * @ProjectName TzSlqyFeign
 * @Description:TzSlqyfegin接口
 * @date 2019/7/7 18:05
 */
@FeignClient(name = "base-server")
@Component
@Api(value = "企业信息", tags = "企业信息维护")
public interface CompanyFeign {

	/**	q
	 * @author huangxing
	 * @Description 获取企业信息列表
	 * @param 社会统一行政编码，企业名称，企业类型，企业性质，法定代表人
	 * @return 企业信息列表
	 */
	@ApiOperation(value = "获取企业信息列表", notes = "参数：社会统一行政编码，企业名称，企业类型，企业性质，法定代表人，企业状态")
	@PostMapping(value = "/companyList")
    public ResponseWrapper getCompanyList(@RequestBody CompanyQueryVO companyQueryVO);

	@ApiOperation(value = "综合查询企业信息列表", notes = "")
	@PostMapping(value = "/qyxxList")
	public ResponseWrapper qyxxList(@RequestBody QyxxVO qyxxVO);
	
	/**
	 * @author huangxing
	 * @Description 获取企业信息列表
	 * @param 社会统一行政编码，企业名称，企业类型，企业性质，法定代表人
	 * @return 企业信息列表
	 */
	@ApiOperation(value = "分页获取企业信息列表", notes = "参数：社会统一行政编码，企业名称，企业类型，企业性质，法定代表人")
	@PostMapping(value = "/companyPage/{pageNum}/{pageSize}")
    public ResponseWrapper getCompanyPage(@RequestBody CompanyQueryVO companyVO,@PathVariable("pageNum")Integer pageNum,@PathVariable("pageSize") Integer pageSize);
	
	/**
	 * @author huangxing
	 * @Description 新增企业信息
	 * @param 参数：企业信息实体 models
	 * @return 新增状态
	 */
	@PostMapping(value = "/company")
	@ApiOperation(value = "新增企业信息", notes = "参数：企业信息实体 models")
    public ResponseWrapper insert(@RequestBody CompanyVO companyVO);
	
	/**
	 * @author huangxing
	 * @Description 修改企业信息
	 * @param 参数：企业信息实体 models
	 * @return 新增状态
	 */
    @PutMapping(value = "/company")
	@ApiOperation(value = "更新企业信息", notes = "参数：企业信息实体 models")
    public ResponseWrapper update(@RequestBody CompanyVO companyVO);
    
    /**
     * @author ldq
     * @Description 修改企业信息
     * @param 参数：企业信息实体 models
     * @return 新增状态
     */
    @PutMapping(value = "/updateSimple")
    @ApiOperation(value = "更新企业信息单表", notes = "参数：企业信息实体 models")
    public ResponseWrapper updateSimple(@RequestBody CompanyVO companyVO);
	
	/**
	 * @author huangxing
	 * @Description 获取企业信息
	 * @param 参数：社会行政代码
	 * @return 企业信息实体
	 */
    @GetMapping(value="/company/{tyshxydm}")
	@ApiOperation(value = "根据统一社会行政代码获取企业信息", notes = "参数：社会行政代码")
	public ResponseWrapper getCompanyBytyshxydm(@PathVariable("tyshxydm") String tyshxydm);

	@PostMapping(value = "/organization/selectByEntity")
	@ApiOperation(value = "根据企业机构代码查询企业", notes = "参数：企业机构代码")
	public ResponseWrapper selectByEntity(@RequestBody CompanyQueryVO companyQueryVO);

	@PostMapping(value = "/organization/selectById")
	@ApiOperation(value = "根据企业机构代码查询企业", notes = "参数：企业机构代码")
	public ResponseWrapper selectById(@RequestBody CompanyQueryVO companyQueryVO);

	@GetMapping(value="/companyType/{qyjgdm}")
	@ApiOperation(value = "根据企业机构代码获取企业的类型", notes = "参数：企业机构代码")
	public ResponseWrapper companyType(@PathVariable("qyjgdm") String qyjgdm);
	
	/**
	 * @author huangxing
	 * @Description 删除企业信息
	 * @param 参数：社会行政代码
	 * @return 状态
	 */
    @DeleteMapping(value="/company/{tyshxydm}")
	@ApiOperation(value = "根据统一社会行政代码删除企业信息", notes = "参数：社会行政代码")
	public ResponseWrapper delete(@PathVariable("tyshxydm") String tyshxydm);
	
	/**
	 * 企业机构关联添加
	 * @param tzQyjgDO
	 * @return
	 */
    @PostMapping(value = "/organization")
	@ApiOperation(value = "企业机构关联添加", notes = "参数：企业机构代码")
	public ResponseWrapper insertQyjg(@RequestBody TzQyjgVO tzQyjgDO);
	
	/**
	 * 根据企业机构代码查询企业
	 * @param qyjgdm
	 * @return
	 */
	@GetMapping(value = "/organization/{qyjgdm}")
	@ApiOperation(value = "根据企业机构代码查询企业", notes = "参数：企业机构代码")
	public ResponseWrapper getSlqy(@PathVariable("qyjgdm") String qyjgdm);
	
	/**
	 * 根据企业机构代码查询企业
	 * @param qyjgdm
	 * @return
	 */
	@PostMapping(value = "/randomcompany")
	@ApiOperation(value = "随机抽取企业", notes = "参数：随机抽取企业查询信息")
	public ResponseWrapper randomcompany(@RequestBody RandomCompanyQuery randomCompanyQuery);

	/**
	 * 传入规避条件,返回企业列表
	 * @param randomCompanyQuery
	 * @return
	 */
	@PostMapping(value = "/companyAll")
	@ApiOperation(value = "传入规避条件,返回企业列表")
	public ResponseWrapper companyAll(@RequestBody RandomCompanyQuery randomCompanyQuery);


	/**
	 * 禁用/启用
	 * @param qyzt
	 * @return
	 */
	@PostMapping(value = "/companyStatus/{qyzt}/{id}")
	@ApiOperation(value = "企业信息-更新启用状态", notes = "参数：启用状态，企业ID")
	public ResponseWrapper updateQyzt(@PathVariable(value="qyzt") Integer qyzt,
									  @PathVariable(value="id") Integer id) ;

	@PostMapping(value = "/companyFiling")
	@ApiOperation(value = "企业信息-企业备案", notes = "参数：备案信息")
	public ResponseWrapper updateFilingStatus(@RequestBody CompanyRecordsVO companyRecordsVO) ;
	
	@ApiOperation(value = "获取企业信息列表", notes = "参数：经纬度")
	@PostMapping(value = "/companyListLaLo/{pageNum}/{pageSize}")
    public ResponseWrapper getCompanyListByLaLo(@RequestBody CompanyQueryVO companyQueryVO,@PathVariable(value="pageNum") Integer pageNum,@PathVariable(value="pageSize") Integer pageSize);

	
	/**
	 * @author lidiaoquan
	 * @Description 获取企业信息列表 根据orgCode
	 * @param 社会统一行政编码，企业名称，企业类型，企业性质，法定代表人
	 * @return 企业信息列表
	 */
	@ApiOperation(value = "分页获取企业信息列表", notes = "参数：orgCode，社会统一行政编码，企业名称，企业类型，企业性质，法定代表人")
	@PostMapping(value = "/getYjCompanyPage/{pageNum}/{pageSize}")
    public ResponseWrapper getYjCompanyPage(@RequestBody CompanyQueryVO companyVO,@PathVariable("pageNum")Integer pageNum,@PathVariable("pageSize") Integer pageSize);

	@PutMapping(value = "/saveCompany")
	@ApiOperation(value = "保存企业信息", notes = "参数：保存企业信息 models")
	public ResponseWrapper saveCompany(@RequestBody CompanyVO companyVO);

	@PostMapping(value = "/updateByEntitySelective")
	@ApiOperation(value = "更新企业信息")
	public ResponseWrapper updateByEntitySelective(@RequestBody CompanyVO companyVO);
}
