Antiloveg лет назад: 8
Родитель
Сommit
429d058892

+ 3 - 0
src/main/java/com/goafanti/common/dao/PatentInfoMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.Map;
 
 import com.goafanti.common.model.PatentInfo;
+import com.goafanti.patent.bo.PatentExpireBO;
 import com.goafanti.patent.bo.PatentInfoDetailBo;
 import com.goafanti.patent.bo.PatentRecieveSendBo;
 
@@ -37,5 +38,7 @@ public interface PatentInfoMapper {
 	Integer countPatentDone(String uid);
 
 	Integer countPatentUndone(String uid);
+
+	List<PatentExpireBO> selectExpireRecord();
 	
 }

+ 10 - 0
src/main/java/com/goafanti/common/mapper/PatentInfoMapper.xml

@@ -968,5 +968,15 @@
 	   where uid = #{uid,jdbcType=VARCHAR}
 	   and deleted_sign = 0 and patent_state <![CDATA[ < ]]> 12 
   </select>
+  
+  <select id="selectExpireRecord"  resultType="com.goafanti.patent.bo.PatentExpireBO">	
+  	select p.id, p.uid, p.patent_name as patentName, 
+  	       p.patent_application_date as patentApplicationDate, oi.first_mobile as firstMobile
+  	from patent_info p 
+		LEFT JOIN patent_cost pc on p.id = pc.pid
+		LEFT JOIN organization_identity oi on oi.uid = p.uid
+	where p.deleted_sign = 0 and p.patent_state in (12, 13)
+	and pc.annual_fee_state = 0
+  </select>
 
 </mapper>

+ 67 - 1
src/main/java/com/goafanti/common/task/PatentTask.java

@@ -1,20 +1,86 @@
 package com.goafanti.common.task;
 
+import java.text.ParseException;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
 
+import javax.annotation.Resource;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.utils.DateUtils;
 import com.goafanti.common.utils.LoggerUtils;
+import com.goafanti.patent.bo.PatentExpireBO;
+import com.goafanti.patent.service.PatentInfoService;
 
 @Component
 public class PatentTask {
+	@Resource
+	private PatentInfoService patentInfoService;
+	
+	private static final String LEAP_DAY = "02-29";
+	
+	private static final String LEAP_DAY_ADD = "03-01";
+
 	/**
 	 * "0 0 10 * * ?" 每天上午10点触发一次
 	 */
+
 	@Scheduled(cron = "0 0 10 * * ?")
 	public void run() {
 		LoggerUtils.debug(getClass(), "开始检查专利到期");
+		List<PatentExpireBO> peb = patentInfoService.selectExpireRecord();
+		if (null != peb && peb.size() > 0) {
+			for (PatentExpireBO p : peb) {
+				if (!StringUtils.isBlank(p.getFirstMobile()) && StringUtils.isNumeric(p.getFirstMobile())
+						&& null != p.getPatentApplicationDate()) {
+					 try {
+						if (disposeExprire(p)){
+							//TODO 发送短信
+						}
+					} catch (ParseException e) {
+					}
+				}
+			}
+		}
 	}
-
 	
+	private Boolean disposeExprire(PatentExpireBO peb) throws ParseException{
+		Date addYear = disposeAddYear(peb.getPatentApplicationDate());//申请日5年后
+		Calendar now = Calendar.getInstance();
+		if (addYear.getTime() - now.getTime().getTime() >= 0){
+			return disposeExprireDate(peb.getPatentApplicationDate(), now.getTime());
+		}
+		return Boolean.FALSE;
+	}
+	
+	private Boolean disposeExprireDate(Date apd, Date now){
+		String sApd = DateFormatUtils.format(apd, AFTConstants.YYYYMMDD).substring(5,9);
+		String sNow = DateFormatUtils.format(now, AFTConstants.YYYYMMDD).substring(5,9);
+		if (LEAP_DAY.equals(sApd)){
+			if (LEAP_DAY_ADD.equals(sNow)){
+				return Boolean.TRUE;
+			}
+		} else {
+			if (sApd.equals(sNow)){
+				return Boolean.TRUE;
+			}
+		}
+		return Boolean.FALSE;
+	}
+	
+	private Date disposeAddYear(Date s) throws ParseException{
+		String d = DateFormatUtils.format(s, AFTConstants.YYYYMMDD);
+		String suffix = d.substring(4, 9);
+		int year = Integer.parseInt(d.substring(0, 3));
+		int expireYear = year + 5;
+		String expireDate = expireYear + suffix;
+		return DateUtils.parseDate(expireDate, AFTConstants.YYYYMMDD);
+	}
+
 }

+ 86 - 0
src/main/java/com/goafanti/patent/bo/PatentExpireBO.java

@@ -0,0 +1,86 @@
+package com.goafanti.patent.bo;
+
+import java.util.Date;
+
+import org.apache.commons.lang3.time.DateFormatUtils;
+
+import com.goafanti.common.constant.AFTConstants;
+
+/**
+ * 专利年费缴费通知BO
+ */
+public class PatentExpireBO {
+	
+	private String id;
+	
+	private String uid;
+	
+	/**
+	 * 专利名称
+	 */
+	private String patentName;
+	
+	/**
+	 * 专利申请日
+	 */
+	private Date patentApplicationDate;
+	
+	/**
+	 * 第一联系人
+	 */
+	private String firstMobile;
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getUid() {
+		return uid;
+	}
+
+	public void setUid(String uid) {
+		this.uid = uid;
+	}
+
+	public String getPatentName() {
+		return patentName;
+	}
+
+	public void setPatentName(String patentName) {
+		this.patentName = patentName;
+	}
+
+	public Date getPatentApplicationDate() {
+		return patentApplicationDate;
+	}
+
+	public void setPatentApplicationDate(Date patentApplicationDate) {
+		this.patentApplicationDate = patentApplicationDate;
+	}
+
+	public String getFirstMobile() {
+		return firstMobile;
+	}
+
+	public void setFirstMobile(String firstMobile) {
+		this.firstMobile = firstMobile;
+	}
+	
+	public String getPatentApplicationFormattedDate() {
+		if (this.patentApplicationDate == null) {
+			return null;
+		} else {
+			return DateFormatUtils.format(this.getPatentApplicationDate(), AFTConstants.YYYYMMDD);
+		}
+	}
+
+	public void setPatentApplicationFormattedDate(String patentApplicationFormattedDate) {
+
+	}
+	
+	
+}

+ 3 - 0
src/main/java/com/goafanti/patent/service/PatentInfoService.java

@@ -6,6 +6,7 @@ import java.util.List;
 import com.goafanti.common.model.PatentInfo;
 import com.goafanti.common.model.PatentLog;
 import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.patent.bo.PatentExpireBO;
 import com.goafanti.patent.bo.PatentInfoDetailBo;
 import com.goafanti.patent.bo.PatentManageListBo;
 import com.goafanti.patent.bo.PatentNoticeOfCorrectionBo;
@@ -44,4 +45,6 @@ public interface PatentInfoService {
 
 	int batchCirculation(String[] ids, String recordTimeFormattedDate, PatentLog pl);
 
+	List<PatentExpireBO> selectExpireRecord();
+
 }

+ 9 - 0
src/main/java/com/goafanti/patent/service/impl/PatentInfoServiceImpl.java

@@ -41,6 +41,7 @@ import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.patent.bo.PatentExpireBO;
 import com.goafanti.patent.bo.PatentInfoDetailBo;
 import com.goafanti.patent.bo.PatentManageListBo;
 import com.goafanti.patent.bo.PatentNoticeOfCorrectionBo;
@@ -524,4 +525,12 @@ public class PatentInfoServiceImpl extends BaseMybatisDao<PatentInfoMapper> impl
 		noticeMapper.insert(n);
 	}
 
+	
+	
+	//专利年费到期
+	@Override
+	public List<PatentExpireBO> selectExpireRecord() {
+		return patentInfoMapper.selectExpireRecord();
+	}
+
 }