package com.goafanti.patent.service;

import java.util.Date;
import java.util.List;

import com.goafanti.common.model.Contract;
import com.goafanti.common.model.PatentInfo;
import com.goafanti.common.model.PatentLog;
import com.goafanti.core.mybatis.page.Pagination;
import com.goafanti.patent.bo.PatentAnnualFeeTaskBo;
import com.goafanti.patent.bo.PatentContractListBo;
import com.goafanti.patent.bo.PatentExpireBo;
import com.goafanti.patent.bo.PatentInfoDetailBo;
import com.goafanti.patent.bo.PatentManageListBo;
import com.goafanti.patent.bo.PatentNoticeOfCorrectionBo;
import com.goafanti.patent.bo.PatentPendingBo;

public interface PatentInfoService {

	PatentInfo insert(PatentInfo patentInfo);

	int updateByPrimaryKeySelective(PatentInfo patentInfo);

	PatentInfo selectByPrimaryKey(String id);

	Pagination<PatentInfo> getClientApplyList(String userId, String patentNumber, String patentName,
			Integer parentCatagory, Integer patentState, Integer pNo, Integer pSize);

	Pagination<PatentManageListBo> getManagePatentList(String contractId, Integer serialNumber, String patentNumber, String office,
			Integer locationProvince, String unitName, Integer patentCatagory, String patentName, Integer patentState,
			String[] createTime, String[] patentApplicationDate, String author, String uid, Integer pNo, Integer pSize);

	Pagination<PatentPendingBo> getManagePendingPaymentList(Integer locationProvince, Integer pNo, Integer pSize);

	Pagination<PatentNoticeOfCorrectionBo> getNoticeOfCorrectionList(Date authorizedDate, Integer serialNumber,
			String patentNumber, String office, Integer locationProvince, String unitName, Integer patentCatagory,
			String patentName, Integer patentState, String author, Integer pNo, Integer pSize);

	int batchDeleteByPrimaryKey(List<String> id);

	PatentInfo savePatentInfo(PatentInfo patentInfo, String salesman);

	void updatePatentInfo(PatentInfo patentInfo, PatentLog patentLog, Date recordTime);

	void updateNoticeOfCorrection(String pid, Integer patentState);

	PatentInfoDetailBo selectPatentInfoDetail(String pid);

	int batchCirculation(String[] ids, String recordTimeFormattedDate, PatentLog pl);

	List<PatentExpireBo> selectExpireRecord();

	PatentInfo insertPatentInfo(PatentInfo pi, String aid);

	List<PatentContractListBo> listContractPatentByContractId(String contractId);

	void batchInsertContractRecord(Contract c);

	List<PatentAnnualFeeTaskBo> findAnnualFeeTaskBo();


}
