package com.goafanti.achievement.service;

import java.util.List;

import com.goafanti.achievement.bo.AchievementImportBo;
import com.goafanti.achievement.bo.AchievementListBo;
import com.goafanti.achievement.bo.AchievementOrgOwnerDetailBo;
import com.goafanti.achievement.bo.AchievementPartnerListBo;
import com.goafanti.achievement.bo.AchievementUserOwnerDetailBo;
import com.goafanti.common.model.Achievement;
import com.goafanti.core.mybatis.page.Pagination;
import com.goafanti.demand.bo.DemandAchievementListBo;
import com.goafanti.portal.bo.AchievementDetailBo;
import com.goafanti.portal.bo.AchievementPortalDetailBo;
import com.goafanti.portal.bo.AchievementPortalSimilarListBo;
import com.goafanti.portal.bo.AchievementSearchListBo;
import com.goafanti.portal.bo.BoutiqueListBo;
import com.goafanti.portal.bo.InternationalListBo;

public interface AchievementService {

	Pagination<AchievementListBo> listUserOwnerAchievement(Integer ownerType,String username, String ownerName, String ownerId, Integer auditStatus, Integer serialNumber,
			String name, String keyword, Integer category, Integer status, String releaseDateStartDate,
			String releaseDateEndDate,String createDateStartDate, String createDateEndDate, Integer releaseStatus, Integer pNo, Integer pSize,Integer boutique,Integer effective);

	void saveAchievement(Achievement a, String[] keywords);

	int updateAchievement(Achievement a, String[] keywords, Integer switchSign);

	Achievement selectByPrimaryKey(String id);

	int deleteByPrimaryKey(List<String> asList);

	Pagination<AchievementListBo> listUserAchievement(Integer auditStatus, Integer serialNumber, String name,
			String keyword, Integer category, Integer ownerType, Integer status, String releaseDateStartDate,
			String releaseDateEndDate,String createDateStartDate, String createDateEndDate, Integer releaseStatus, Integer pNo, Integer pSize);

	int updateAuditAchievement(Achievement a, String techBroderId, Integer auditStatus);

	int updateReleaseStatus(Achievement a);

	Pagination<AchievementListBo> listOrgOwnerAchievement(Integer ownerType,String unitName, String ownerName, String ownerId, Integer auditStatus, Integer serialNumber,
			String name, String keyword, Integer category, Integer status, String releaseDateStartDate,
			String releaseDateEndDate,String createDateStartDate, String createDateEndDate, Integer releaseStatus,String internationalFlag, Integer pNo, Integer pSize,Integer boutique,Integer hot,String recordPerson);

	AchievementUserOwnerDetailBo selectUserOwnerDetail(String id );

	AchievementOrgOwnerDetailBo selectOrgOwnerDetail(String id);

	List<DemandAchievementListBo> selectAchievementDemandListByAchievementId(String id);

	void insertImport(List<AchievementImportBo> data);

	Pagination<AchievementSearchListBo> listAchievementSearchList(String url,
			String keyword,Integer dataCategory ,Integer category, Integer fieldA,String transferMode, Integer pageNo, Integer pageSize,
			Integer timeSort,String upperPrice,String lowerPrice,Integer internationalFlag);

	AchievementDetailBo selectAchievementSearchDetail(String uid, String id);
	
	Achievement selectAchievementDetail(String id);

	int updateMatchDemand(Achievement a);

	Pagination<AchievementPartnerListBo> listPartnerAchievement(String ownerId, Integer pNo, Integer pSize);

	AchievementPortalDetailBo findUserPortalAchievementDetail(String id);

	AchievementPortalDetailBo findOrgPortalAchievementDetail(String id);

	List<AchievementPortalSimilarListBo> findByFieldA(Integer fieldA, String id, Integer type);

	int updateByPrimaryKeySelective(Achievement a);
	
	/** 查询国际化技术 **/
	List<InternationalListBo> selectInternationalAchievement(Integer internationalAchievementKey);
	
	/** 查询精品成果  **/
	Pagination<BoutiqueListBo> boutiqueSearchList(Integer dataCategory,Integer category,Integer fieldA,Integer pageNo, Integer pageSize);
	
	/** 查询精品成果  **/
	public List<AchievementListBo> getAchievement(Integer boutique);
	 
    /** 查询猜你喜欢  **/
    public List<AchievementListBo>  getPerhapLike();
    
    /**查询智者的科技成果**/
    public List<AchievementPartnerListBo> findPartnerAchievementList(String uid);

	Pagination<AchievementPartnerListBo> listAppUserAchievement(Integer auditStatus, Integer serialNumber, String name, String keyword,Integer dataCategory,
			Integer category, Integer ownerType, Integer status, String releaseDateStartDate, String releaseDateEndDate,
			Integer releaseStatus,String ownerId,Integer fieldA, Integer pNo, Integer pSize);

	Pagination<AchievementPartnerListBo> listAppMyAchievement(Integer pNo, Integer pSize);

	AchievementUserOwnerDetailBo selectAppUserOwnerDetail(String id);


	int saveAppAchievement(Achievement a, String[] keywords);

	Pagination<AchievementListBo> listManageAchievement(String techBrokerId,Integer ownerType,String unitName, String ownerName, String ownerId, Integer auditStatus, Integer serialNumber,
			String name, String keyword, Integer category, Integer status, String releaseDateStartDate,
			String releaseDateEndDate,String createDateStartDate, String createDateEndDate, Integer releaseStatus,String internationalFlag, Integer pNo, Integer pSize,Integer boutique,Integer hot,String recordPerson);
	
	Pagination<AchievementListBo> listMyAchievement(String techBrokerId,Integer ownerType,String unitName, String ownerName, String ownerId, Integer auditStatus, Integer serialNumber,
			String name, String keyword, Integer category, Integer status, String releaseDateStartDate,
			String releaseDateEndDate,String createDateStartDate, String createDateEndDate, Integer releaseStatus,String internationalFlag, Integer pNo, Integer pSize,Integer boutique,Integer hot);

	Pagination<AchievementListBo> listUserAchievement(String uid, Integer pageNo, Integer pageSize);

}
