Commit eaf659de authored by Data-王博's avatar Data-王博

湖北消金 - 因为时间范围的

parent dd8a6d1e
......@@ -52,12 +52,15 @@ public class HuBeiReturnDiscScheduler {
/**
* Seconds Minutes Hours DayofMonth Month DayofWeek
*/
@Scheduled(cron = "0 0 20 * * ?")
@Scheduled(cron = "1 0 0 * * ?")
public void dayScheduler(){
if(scheduledJudgeService.isOpenScheduled()){
try {
logger.info("HuBeiDayScheduler start ");
HuBeiDocName sendDebitDoc = iHuBeiCFCDao.getLastestDocByDataAndType(HubeiCFCDataType.SEND_DEBIT,new Date());
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)-1);
HuBeiDocName sendDebitDoc = iHuBeiCFCDao.getLastestDocByDataAndType(HubeiCFCDataType.SEND_DEBIT,calendar.getTime());
if(sendDebitDoc==null){
logger.warn("sendDebitDoc is null!!! , type={}",HubeiCFCDataType.SEND_DEBIT.get());
return;
......
......@@ -30,9 +30,6 @@ public class HuBeiSendDiscScheduler {
@Autowired
private IHuBeiService iHuBeiService;
@Autowired
private IHuBeiCFCDao iHuBeiCFCDao;
@Autowired
private IScheduledJudgeService scheduledJudgeService;
......
......@@ -84,7 +84,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
@Override
public HuBeiCFCResponse handleDiscData(HubeiCFCDataType hubeiCFCDataType,String docName,Long docId,Byte seqNo){
String applyDt = DateUtil.sampleDateFormatFormat(new Date());
// applyDt = "20170213";//测试
// applyDt = "20170223";//测试
return handleDiscData(hubeiCFCDataType,docName,docId,seqNo,applyDt);
}
......@@ -129,6 +129,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
if(logger.isDebugEnabled()){
logger.info("apiUrl={}, requestBody={}",hubeiApiUrl,requestBody);
}
logger.info("apiUrl={}, requestBody={}",hubeiApiUrl,requestBody);
requestMap.put(HubeiCFCField.xmlString,requestBody);
HttpResult httpResult = NetUtil.postRequestUrl(hubeiApiUrl,requestMap,headerMap, SysConstant.retryOneNums);
if(httpResult.getStatus()==NetUtil.RequestStatus.SUCCESS_STATUS){
......@@ -244,7 +245,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
if(index==size-1){
stringBuilder.append(huBeiHandlerDispatcher.builder(hubeiCFCDataType,history));
}else {
stringBuilder.append(huBeiHandlerDispatcher.builder(hubeiCFCDataType,history)).append("\r\n");
stringBuilder.append(huBeiHandlerDispatcher.builder(hubeiCFCDataType,history)).append("\r");
}
HuBeiJsonBean jsonBean = history.getData();
//应扣不等于实扣 需要发送异常邮件
......@@ -252,7 +253,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
if(hubeiCFCDataType.get().compareTo(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT.get())!=0){
if(jsonBean!=null&&jsonBean.getRepayAmount()!=null&&jsonBean.getReallyRepayAmount()!=null){
if(jsonBean.getReallyRepayAmount().compareTo(BigDecimal.ZERO)!=0&&jsonBean.getRepayAmount().compareTo(jsonBean.getReallyRepayAmount())!=0){
errorStringBuilder.append(huBeiHandlerDispatcher.builder(hubeiCFCDataType,history)).append("\r\n");
errorStringBuilder.append(huBeiHandlerDispatcher.builder(hubeiCFCDataType,history)).append("\r");
}
}else {
logger.info("jsonBean is null, history={}", JSON.toJSONString(history));
......@@ -302,12 +303,12 @@ public class HuBeiServiceImpl implements IHuBeiService {
* @return
*/
@Override
public List<HuBeiHistory> getReturnDisc(HuBeiDocName huBeiDocName){
public List<HuBeiHistory> getReturnDisc(HuBeiDocName sendHuBeiDocName){
/**
* 当日送盘文件只有合同号 没有期数以及loanHistoryId
* 需要先查到对应的loanHistoryId 同时按最近一期未代偿的作为需要查的期数
*/
List<HuBeiHistory> sendHuBeiHistoryList = huBeiCFCDao.getListByDocNameId(huBeiDocName.getId());
List<HuBeiHistory> sendHuBeiHistoryList = huBeiCFCDao.getListByDocNameId(sendHuBeiDocName.getId());
Set<String> contactNoSet = new HashSet<>();
Map<String,HuBeiHistory> contractMapHuiBeiHistory = new HashMap<>();
sendHuBeiHistoryList.forEach(huBeiHistroy ->{
......@@ -354,9 +355,10 @@ public class HuBeiServiceImpl implements IHuBeiService {
* 如果今天是代偿日 通过loanHistoryId list 查询是代偿的还款计划
*/
Map<String,RepaymentPlanDetail> compensationContractMapRepayPlan = new HashMap<>();
if(compensationDayService.isCompensationDay()){
Calendar calendar = Calendar.getInstance();
calendar.setTime(sendHuBeiDocName.getCreateTime());
if(compensationDayService.isCompensationDay(calendar)){
//代偿日
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1;
Date date = compensationDayService.getCompensationDay(year,month);
......@@ -404,7 +406,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
BigDecimal hubeiOverdueInterest = HubeiCFCUtil.caculateOverDueFee(repaymentPlanDetail.getDeadLine(),repayXyqbDetail.getPayCenterRepayAt(),repaymentPlanDetail.getPrincipal());
//批扣
BigDecimal reallyRepayAmount = repaymentPlanDetail.getPrincipal().add(repaymentPlanDetail.getInterest()).add(hubeiOverdueInterest);
returnHuBeiHistoryList.add(deitHuiBeiHistory(history,huBeiDocName.getCreateTime(),reallyRepayAmount,HubeiCFCField.tradeCodeSuccess));
returnHuBeiHistoryList.add(deitHuiBeiHistory(history, sendHuBeiDocName.getCreateTime(),reallyRepayAmount,HubeiCFCField.tradeCodeSuccess));
}
//去除第一个
repayXyqbDetailList = repayXyqbDetailList.subList(1,repayXyqbDetailList.size());
......@@ -425,12 +427,12 @@ public class HuBeiServiceImpl implements IHuBeiService {
BigDecimal hubeiOverdueInterest = HubeiCFCUtil.caculateOverDueFee(repaymentPlanDetail.getDeadLine(),new Date(),repaymentPlanDetail.getPrincipal());
//批扣
BigDecimal reallyRepayAmount = repaymentPlanDetail.getPrincipal().add(repaymentPlanDetail.getInterest()).add(hubeiOverdueInterest);
returnHuBeiHistoryList.add(compensationHuiBeiHistory(history,huBeiDocName.getCreateTime(),reallyRepayAmount));
returnHuBeiHistoryList.add(compensationHuiBeiHistory(history, sendHuBeiDocName.getCreateTime(),reallyRepayAmount));
continue;
}
//未还款 批扣 实际还款金额零
returnHuBeiHistoryList.add(deitHuiBeiHistory(history,huBeiDocName.getCreateTime(),BigDecimal.ZERO,HubeiCFCField.tradeCodeNoTrade));
returnHuBeiHistoryList.add(deitHuiBeiHistory(history, sendHuBeiDocName.getCreateTime(),BigDecimal.ZERO,HubeiCFCField.tradeCodeNoTrade));
}
return returnHuBeiHistoryList;
......
package cn.quantgroup.financial.service.sys;
import java.util.Calendar;
import java.util.Date;
/**
......@@ -14,6 +15,9 @@ public interface ICompensationDayService {
*/
boolean isCompensationDay();
boolean isCompensationDay(Calendar calendar);
/**
* 通过月查询代偿日
* @param month 1-12
......
......@@ -44,6 +44,16 @@ public class CompensationDayServiceImpl implements ICompensationDayService {
return compensationDayBean.isCompensationDay(calendar);
}
@Override
public boolean isCompensationDay(Calendar calendar) {
int year = calendar.get(Calendar.YEAR);
CompensationDayBean compensationDayBean = compensationDayBeanMap.get("y" + year);
if(compensationDayBean==null){
LOGGER.error("can`t find year={} compensation days information",year);
return false;
}
return compensationDayBean.isCompensationDay(calendar);
}
/**
* 通过月查询代偿日
* @param month 1-12
......
......@@ -168,31 +168,20 @@ public class HubeiCFCUtil {
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE) - 1);
Date gtDate = calendar.getTime();
calendar.set(Calendar.HOUR_OF_DAY,21);
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE) + 1);
Date ltDate = calendar.getTime();
Date[] dates = new Date[]{gtDate,ltDate};
return dates;
}
/**
* 构建文件名
* @param hubeiCFCDataType
* @return
*/
public static String getDocName(HubeiCFCDataType hubeiCFCDataType){
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
String docName = new StringBuilder(DateUtil.sampleDateFormatFormat(calendar.getTime()))
.append("_").append(HubeiCFCField.chanel_9009)
.append("_").append(HubeiCFCField.fileAlias.get(hubeiCFCDataType)).append("01").append(".txt").toString();
return docName;
}
public static String getDocName(HubeiCFCDataType hubeiCFCDataType,Byte seqNo){
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
//yyyyMMdd DateUtil.sampleDateFormatFormat(calendar.getTime())
//20170222
String docName = new StringBuilder(DateUtil.sampleDateFormatFormat(calendar.getTime()))
.append("_").append(HubeiCFCField.chanel_9009)
.append("_").append(HubeiCFCField.fileAlias.get(hubeiCFCDataType)).append(StringFormat.format0Right(seqNo,2)).append(".txt").toString();
......
......@@ -9,7 +9,7 @@
"y2017": {
"year": "2017",
"compensationDays": [
"1-27", "2-16","3-27","4-27","5-27","6-27","7-27","8-27","9-27",
"1-27", "2-27","3-27","4-27","5-27","6-27","7-27","8-27","9-27",
"10-27","11-27","12-27"
]
},
......
package cn.quantgroup.financial.service;
import cn.quantgroup.financial.BootStarter;
import cn.quantgroup.financial.constant.EncodingConfig;
import cn.quantgroup.financial.constant.HubeiCFCDataType;
import cn.quantgroup.financial.dao.IHuBeiCFCDao;
import cn.quantgroup.financial.model.huibeicfc.HuBeiHistory;
import cn.quantgroup.financial.scheduler.HuBeiReturnDiscScheduler;
import cn.quantgroup.financial.scheduler.HuBeiSendDiscScheduler;
import cn.quantgroup.financial.service.sys.IMailService;
import org.apache.commons.codec.binary.Base64;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
......@@ -57,8 +59,9 @@ public class HuBeiServiceTest {
/**
* 扣款明细
*/
@Test
public void testReturnDebitDisc(){
huBeiService.handleDiscData(HubeiCFCDataType.RETURN_BATCH_DEBIT,null,null,new Integer(1).byteValue());
huBeiService.handleDiscData(HubeiCFCDataType.RETURN_BATCH_DEBIT,null,188L,new Integer(1).byteValue());
}
/**
......@@ -86,7 +89,7 @@ public class HuBeiServiceTest {
public void testGetSendDisc(){
//20170119_9009_T01.txt
try {
huBeiService.handleDiscData(HubeiCFCDataType.SEND_DEBIT,null,null,new Integer(1).byteValue(),"20170216");
huBeiService.handleDiscData(HubeiCFCDataType.SEND_DEBIT,null,null,new Integer(1).byteValue(),"20170222");
} catch (Exception e) {
logger.error(e.getMessage(),e);
}
......@@ -114,6 +117,17 @@ public class HuBeiServiceTest {
huBeiSendDiscScheduler.dayScheduler();
}
@Test
public void parse(){
String line = "SFQxMDAwMDAyMDE2MTIxNzAwMjcwNDh85YiY5pWP5oyvfDIwfDQxMDgyNjE5OTIwNzA2MDUxNnxO\n" +
"RnwyMDE3LTAzLTIwfDB8MjA0Ni44OHwwOXwyMDE2LTEyLTIyDUhUMTAwMDAwMjAxNjEyMTcwMDI3\n" +
"MTk3fOaItOeni+e6onwyMHwyMTAxMDYxOTc2MDcxMDQ2NDV8TkZ8MjAxNy0wMy0xOXwwfDIwNDYu\n" +
"ODh8MDl8MjAxNy0wMS0yMQ==";
String result = (new String(Base64.decodeBase64(line), EncodingConfig.defaultCharset));
System.out.println(result);
}
@Test
public void testReturnScheduler(){
huBeiReturnDiscScheduler.dayScheduler();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment