package com.unis.base.server.service;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.unis.base.common.vo.*;
import com.unis.base.server.entity.TzSlqyDO;
import com.unis.common.utils.ResponseWrapper;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author huangxing
 * @version 1.0
 * @Title TzSlqyService
 * @ProjectName TzSlqyService
 * @Description
 * @date 2019/07/22 17点26分
 */
public interface CompanyService {

	/**
	 * 获取企业信息列表
	 * @param tzSlqyVO
	 * @return
	 */
	List<CompanyVO> getCompanyList(CompanyQueryVO companyQueryVO);

	/**
	 * 分页获取企业信息列表
	 * @param tzSlqyVO
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	List<CompanyVO> getCompanyPage(CompanyQueryVO companyQueryVO, Integer pageNum, Integer pageSize);

	/**
	 * 添加企业信息
	 * @param tzSlqyVO
	 * @return
	 */
	int insert(CompanyVO companyVO);

	/**
	 * 更新企业信息
	 * @param tzSlqyVO
	 * @return
	 */
	int update(CompanyVO companyVO);

	/**
	 * 根据统一社会信用代码获取企业信息
	 * @param tyshxydm统一社会信用代码
	 * @return
	 */
	CompanyVO getCompanyBytyshxydm(String tyshxydm);

	/**
	 * 根据统一社会信用代码删除企业信息
	 * @param tyshxydm统一社会信用代码
	 * @return
	 */
	int delete(String tyshxydm);

	/**
	 * 企业机构关联添加
	 * @param qyjgdm 企业机构代码
	 * @return
	 */
	int insertQyjg(TzQyjgVO tzQyjgDO);

	/**
	 * 根据企业机构代码 查找企业信息
	 * @param qYJGDM
	 * @return
	 */
	TzSlqyDO getSlqy(String qyjgdm);

	/**
	 * 根据企业机构代码 查找企业信息
	 * @param companyQueryVO
	 * @return
	 */
	public List<TzSlqyDO> selectByEntity(CompanyQueryVO companyQueryVO);

	/**
	 * 根据企业机构代码 查找企业信息
	 * @param companyQueryVO
	 * @return
	 */
	TzSlqyDO selectById(CompanyQueryVO companyQueryVO);

	/**
	 * 更新涉粮企业信息
	 * @param tzSlqyTO
	 * @return
	 */
	int updateSlqyInfo(CompanyVO companyVO);

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

	/**
	 * 随机抽取企业信息
	 * @param randomCompanyQuery
	 * @return
	 */
	Set<CompanyVO> randomCompany(RandomCompanyQuery randomCompanyQuery);

	/**
	 * 更新企业状态
	 * @param qyzt
	 */
    Integer updateQyzt(Integer qyzt, Integer id);

	/**
	 * 更改备案状态
	 * @param companyRecordsVO
	 * @return
	 */
	Integer updateFilingStatus(CompanyRecordsVO companyRecordsVO);

	/**
	 * @param companyQueryVO
	 * @param pageNum  根据条件获取企业列表
	 * @param pageSize
	 * @return
	 */
	List<CompanyVO> getCompanyListByLaLo(CompanyQueryVO companyQueryVO, Integer pageNum, Integer pageSize);

	/**
	 * 企业信息审核
	 */

	Integer auditCompany(Integer id,Integer qyzt,String shyj) throws UnsupportedEncodingException;

	/**
	 * @Author lidiaoquan
	 * @version V1.0
	 * @Description 企业列表查询-应急
	 * @Date 2019年11月8日 上午9:27:10
	 * @param companyQueryVO
	 * @return List<CompanyVO>
	 */
	List<CompanyVO> getYjCompanyPage(CompanyQueryVO companyQueryVO, Integer pageNum, Integer pageSize);

	/**
	 * 获取企业信息列表-应急
	 * @param tzSlqyVO
	 * @return
	 */
	List<CompanyVO> getYjCompanyList(CompanyQueryVO companyQueryVO);

    Integer updatesSfba(Integer id, Integer sfba, String shyj);

	/**
	 * 获取承储库企业
	 * @return
	 */
	List<CompanyKdVO> getCompanyKdList();

	CompanyVO findByCompany(String qymc);

	List<String> companyType(String qyjgdm);

	ResponseWrapper sgzgBar(SgzgBarVO sgzgBarVO);

	ResponseWrapper sgzgLine(SgzgLineVO sgzgLineVO);

	/**
	 * <TZ_SLQY-企业信息表>
	 * 根据条件导出数据
	 * @param companyVO    <企业信息表>对象
	 * @author lipenghe with LAPTOP-DPSC399A
	 */
	List<CompanyVO> exportByEntityResult(CompanyQueryVO companyVO);

	/**
	 * <TZ_SLQY-企业信息表>
	 * 根据条件导入数据
	 * @param companyVO    <企业信息表>对象
	 * @author lipenghe with LAPTOP-DPSC399A
	 */
	ResponseWrapper importByEntityResult(CompanyVO companyVO, List<MultipartFile> fileList, ImportConfigVO importConfigVO) throws IOException;

    List<QyxxVO> qyxxList(QyxxVO qyxxVO);

	List<QyxxVO> getQyxxListPage(QyxxVO qyxxVO, Integer pageNum, Integer pageSize);

	ResponseWrapper saveCompany(CompanyVO companyVO);

	int updateByEntitySelective(CompanyVO companyVO);
}
