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

湖北消金 - 生成回盘文件批名 批次

parent 144875fe
...@@ -25,4 +25,5 @@ public enum HubeiCFCDataType { ...@@ -25,4 +25,5 @@ public enum HubeiCFCDataType {
public String getFlag(){ public String getFlag(){
return flag; return flag;
} }
} }
...@@ -20,8 +20,7 @@ import org.springframework.context.annotation.Lazy; ...@@ -20,8 +20,7 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Date; import java.util.*;
import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
...@@ -74,23 +73,17 @@ public class HuBeiReturnDiscScheduler { ...@@ -74,23 +73,17 @@ public class HuBeiReturnDiscScheduler {
} }
public void saveAndPushReturnDisc(List<HuBeiHistory> huBeiHistoryList){ public void saveAndPushReturnDisc(List<HuBeiHistory> huBeiHistoryList){
String docName = HubeiCFCUtil.getDocName(HubeiCFCDataType.RETURN_BATCH_DEBIT);
HuBeiDocName huBeiDocName = new HuBeiDocName(); HuBeiDocName debitDoc = iHuBeiService.generateHuBeiDoc(HubeiCFCDataType.RETURN_BATCH_DEBIT,new Integer(1).byteValue());
huBeiDocName.setDocName(docName); Long docDebitId = debitDoc.getId();
huBeiDocName.setDataType(HubeiCFCDataType.RETURN_BATCH_DEBIT.get()); HuBeiDocName compensationDoc = iHuBeiService.generateHuBeiDoc(HubeiCFCDataType.RETURN_BATCH_COMPENSATION,new Integer(1).byteValue());
Long docDebitId = iHuBeiCFCDao.saveDocName(huBeiDocName); Long docCompensationId = compensationDoc.getId();
HuBeiDocName advanceDoc = iHuBeiService.generateHuBeiDoc(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,new Integer(1).byteValue());
docName = HubeiCFCUtil.getDocName(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT); Long advanceDocId = advanceDoc.getId();
huBeiDocName = new HuBeiDocName(); Map<Byte,Long> advanceIdMap = new HashMap<Byte,Long>();
huBeiDocName.setDocName(docName); Byte maxReqNo = new Integer(1).byteValue();
huBeiDocName.setDataType(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT.get()); advanceIdMap.put(maxReqNo,advanceDocId);
Long docAdvanceRepayId = iHuBeiCFCDao.saveDocName(huBeiDocName);
docName = HubeiCFCUtil.getDocName(HubeiCFCDataType.RETURN_BATCH_COMPENSATION);
huBeiDocName = new HuBeiDocName();
huBeiDocName.setDocName(docName);
huBeiDocName.setDataType(HubeiCFCDataType.RETURN_BATCH_COMPENSATION.get());
Long docCompensationId = iHuBeiCFCDao.saveDocName(huBeiDocName);
for(HuBeiHistory history:huBeiHistoryList){ for(HuBeiHistory history:huBeiHistoryList){
if(HubeiCFCDataType.RETURN_BATCH_DEBIT.get().equals(history.getDataType())){ if(HubeiCFCDataType.RETURN_BATCH_DEBIT.get().equals(history.getDataType())){
...@@ -98,19 +91,25 @@ public class HuBeiReturnDiscScheduler { ...@@ -98,19 +91,25 @@ public class HuBeiReturnDiscScheduler {
}else if(HubeiCFCDataType.RETURN_BATCH_COMPENSATION.get().equals(history.getDataType())){ }else if(HubeiCFCDataType.RETURN_BATCH_COMPENSATION.get().equals(history.getDataType())){
history.setDocNameId(docCompensationId); history.setDocNameId(docCompensationId);
}else if(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT.get().equals(history.getDataType())){ }else if(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT.get().equals(history.getDataType())){
history.setDocNameId(docAdvanceRepayId); if(advanceIdMap.containsKey(history.getSeqNo())){
history.setDocNameId(advanceIdMap.get(history.getSeqNo()));
}else {
advanceDoc = iHuBeiService.generateHuBeiDoc(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,history.getSeqNo());
advanceIdMap.put(history.getSeqNo(),advanceDoc.getId());
history.setDocNameId(advanceDoc.getId());
}
} }
iHuBeiCFCDao.saveHistory(history); iHuBeiCFCDao.saveHistory(history);
} }
Integer currentReqNo = new Integer(1); Byte currentReqNo = new Integer(1).byteValue();
//推送回盘文件 //推送回盘文件
HuBeiCFCResponse debitResponse = iHuBeiService.handleDiscData(HubeiCFCDataType.RETURN_BATCH_DEBIT,null,docDebitId,currentReqNo.byteValue()); HuBeiCFCResponse debitResponse = iHuBeiService.handleDiscData(HubeiCFCDataType.RETURN_BATCH_DEBIT,null,docDebitId,currentReqNo);
HuBeiCFCResponse advanceResponse = iHuBeiService.handleDiscData(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,null,docAdvanceRepayId,currentReqNo.byteValue()); HuBeiCFCResponse advanceResponse = iHuBeiService.handleDiscData(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,null,advanceIdMap.get(currentReqNo),currentReqNo);
HuBeiCFCResponse compensationResponse = iHuBeiService.handleDiscData(HubeiCFCDataType.RETURN_BATCH_COMPENSATION,null,docCompensationId,currentReqNo.byteValue()); HuBeiCFCResponse compensationResponse = iHuBeiService.handleDiscData(HubeiCFCDataType.RETURN_BATCH_COMPENSATION,null,docCompensationId,currentReqNo);
Integer maxReqNo = iHuBeiCFCDao.getMaxSeqNoByDocId(docAdvanceRepayId);
if(maxReqNo!=null&&maxReqNo.compareTo(currentReqNo)>0){ if(maxReqNo!=null&&maxReqNo.compareTo(currentReqNo)>0){
logger.info("start scheduleAdvanceRepay currentReqNo={},maxReqNo={},docAdvanceRepayId={}",currentReqNo,maxReqNo,docAdvanceRepayId); logger.info("start scheduleAdvanceRepay currentReqNo={},maxReqNo={},docAdvanceRepayId={}",currentReqNo,maxReqNo,advanceDocId);
ScheduleAdvanceRepay scheduleAdvanceRepay = new ScheduleAdvanceRepay(currentReqNo,maxReqNo,docAdvanceRepayId); ScheduleAdvanceRepay scheduleAdvanceRepay = new ScheduleAdvanceRepay(currentReqNo,maxReqNo,advanceIdMap);
scheduleAdvanceRepay.registerService(scheduledExecutorService,iHuBeiService,iHuBeiCFCDao,huBeiHandlerDispatcher); scheduleAdvanceRepay.registerService(scheduledExecutorService,iHuBeiService,iHuBeiCFCDao,huBeiHandlerDispatcher);
scheduledExecutorService.schedule(scheduleAdvanceRepay, HubeiCFCField.thirtyMintes, TimeUnit.MINUTES); scheduledExecutorService.schedule(scheduleAdvanceRepay, HubeiCFCField.thirtyMintes, TimeUnit.MINUTES);
} }
...@@ -122,9 +121,9 @@ public class HuBeiReturnDiscScheduler { ...@@ -122,9 +121,9 @@ public class HuBeiReturnDiscScheduler {
class ScheduleAdvanceRepay implements Runnable{ class ScheduleAdvanceRepay implements Runnable{
private Integer currentReqNo; private Byte currentReqNo;
private Integer maxReqNo; private Byte maxReqNo;
private Long docAdvanceRepayId; private Map<Byte,Long> advanceIdMap;
private IApiScheduledExecutorService scheduledExecutorService; private IApiScheduledExecutorService scheduledExecutorService;
private IHuBeiDispatcher huBeiHandlerDispatcher; private IHuBeiDispatcher huBeiHandlerDispatcher;
private IHuBeiService iHuBeiService; private IHuBeiService iHuBeiService;
...@@ -132,10 +131,10 @@ class ScheduleAdvanceRepay implements Runnable{ ...@@ -132,10 +131,10 @@ class ScheduleAdvanceRepay implements Runnable{
private static final Logger logger = LoggerFactory.getLogger(ScheduleAdvanceRepay.class); private static final Logger logger = LoggerFactory.getLogger(ScheduleAdvanceRepay.class);
public ScheduleAdvanceRepay(Integer currentReqNo,Integer maxReqNo,Long docId){ public ScheduleAdvanceRepay(Byte currentReqNo,Byte maxReqNo,Map<Byte,Long> advanceIdMap){
this.currentReqNo = currentReqNo; this.currentReqNo = currentReqNo;
this.maxReqNo = maxReqNo; this.maxReqNo = maxReqNo;
this.docAdvanceRepayId = docId; this.advanceIdMap = advanceIdMap;
} }
public void registerService(IApiScheduledExecutorService scheduledExecutorService,IHuBeiService iHuBeiService, public void registerService(IApiScheduledExecutorService scheduledExecutorService,IHuBeiService iHuBeiService,
IHuBeiCFCDao iHuBeiCFCDao,IHuBeiDispatcher huBeiHandlerDispatcher){ IHuBeiCFCDao iHuBeiCFCDao,IHuBeiDispatcher huBeiHandlerDispatcher){
...@@ -150,21 +149,22 @@ class ScheduleAdvanceRepay implements Runnable{ ...@@ -150,21 +149,22 @@ class ScheduleAdvanceRepay implements Runnable{
public void run() { public void run() {
try { try {
logger.info("ScheduleAdvanceRepay method start"); logger.info("ScheduleAdvanceRepay method start");
logger.info("currentReqNo={},maxReqNo={},docAdvanceRepayId={}",currentReqNo,maxReqNo,docAdvanceRepayId); logger.info("currentReqNo={},maxReqNo={}",currentReqNo,maxReqNo);
//先前的reqNo //先前的reqNo
String docName = HubeiCFCUtil.getDocName(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,currentReqNo.byteValue()); String docName = HubeiCFCUtil.getDocName(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,currentReqNo);
HuBeiCFCResponse response = iHuBeiService.handleDiscData(HubeiCFCDataType.SEND_ADVANCE_REPAYMENT_CHECK,docName,null,currentReqNo.byteValue()); HuBeiCFCResponse response = iHuBeiService.handleDiscData(HubeiCFCDataType.SEND_ADVANCE_REPAYMENT_CHECK,docName,null,currentReqNo);
//检查提前还款送盘文件 成功 //检查提前还款送盘文件 成功
if(response!=null&&HubeiCFCField.EC_SUCCESS_CODE.equals(response.getEc())){ if(response!=null&&HubeiCFCField.EC_SUCCESS_CODE.equals(response.getEc())){
checkAdvanceRepayResponse(response.getFileId()); checkAdvanceRepayResponse(response.getFileId());
if(currentReqNo.compareTo(maxReqNo)<0){ if(currentReqNo.compareTo(maxReqNo)<0){
//下一批次提前还款文件 //下一批次提前还款文件
currentReqNo++; currentReqNo++;
iHuBeiService.handleDiscData(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,null,docAdvanceRepayId,currentReqNo.byteValue());
iHuBeiService.handleDiscData(HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,null,advanceIdMap.get(currentReqNo),currentReqNo);
if(currentReqNo.compareTo(maxReqNo)<=0){ if(currentReqNo.compareTo(maxReqNo)<=0){
//30分钟后执行 //30分钟后执行
ScheduleAdvanceRepay scheduleAdvanceRepay = new ScheduleAdvanceRepay(currentReqNo,maxReqNo,docAdvanceRepayId); ScheduleAdvanceRepay scheduleAdvanceRepay = new ScheduleAdvanceRepay(currentReqNo,maxReqNo,advanceIdMap);
scheduleAdvanceRepay.registerService(scheduledExecutorService,iHuBeiService,iHuBeiCFCDao,huBeiHandlerDispatcher); scheduleAdvanceRepay.registerService(scheduledExecutorService,iHuBeiService,iHuBeiCFCDao,huBeiHandlerDispatcher);
scheduledExecutorService.schedule(scheduleAdvanceRepay, HubeiCFCField.thirtyMintes, TimeUnit.MINUTES); scheduledExecutorService.schedule(scheduleAdvanceRepay, HubeiCFCField.thirtyMintes, TimeUnit.MINUTES);
}else { }else {
...@@ -178,7 +178,7 @@ class ScheduleAdvanceRepay implements Runnable{ ...@@ -178,7 +178,7 @@ class ScheduleAdvanceRepay implements Runnable{
} }
}else if(response!=null&&response.getEc().equals(HubeiCFCField.EC_FILENOTEXIST)) { }else if(response!=null&&response.getEc().equals(HubeiCFCField.EC_FILENOTEXIST)) {
//未获取到提前还款检验文件 后续再轮序 10分钟 //未获取到提前还款检验文件 后续再轮序 10分钟
ScheduleAdvanceRepay scheduleAdvanceRepay = new ScheduleAdvanceRepay(currentReqNo,maxReqNo,docAdvanceRepayId); ScheduleAdvanceRepay scheduleAdvanceRepay = new ScheduleAdvanceRepay(currentReqNo,maxReqNo,advanceIdMap);
scheduleAdvanceRepay.registerService(scheduledExecutorService,iHuBeiService,iHuBeiCFCDao,huBeiHandlerDispatcher); scheduleAdvanceRepay.registerService(scheduledExecutorService,iHuBeiService,iHuBeiCFCDao,huBeiHandlerDispatcher);
scheduledExecutorService.schedule(scheduleAdvanceRepay, HubeiCFCField.tenMinutes, TimeUnit.MINUTES); scheduledExecutorService.schedule(scheduleAdvanceRepay, HubeiCFCField.tenMinutes, TimeUnit.MINUTES);
}else { }else {
......
...@@ -53,4 +53,6 @@ public interface IHuBeiService { ...@@ -53,4 +53,6 @@ public interface IHuBeiService {
* @param attachedBytes * @param attachedBytes
*/ */
void sendMailAttachment(HubeiCFCDataType hubeiCFCDataType,ArrayList<DataSource> attachedBytes); void sendMailAttachment(HubeiCFCDataType hubeiCFCDataType,ArrayList<DataSource> attachedBytes);
HuBeiDocName generateHuBeiDoc(HubeiCFCDataType hubeiCFCDataType,Byte seqNo);
} }
...@@ -258,8 +258,6 @@ public class HuBeiServiceImpl implements IHuBeiService { ...@@ -258,8 +258,6 @@ public class HuBeiServiceImpl implements IHuBeiService {
logger.info("jsonBean is null, history={}", JSON.toJSONString(history)); logger.info("jsonBean is null, history={}", JSON.toJSONString(history));
} }
} }
} }
String errorMessage = errorStringBuilder.toString(); String errorMessage = errorStringBuilder.toString();
if(!StringUtils.isEmpty(errorMessage)){ if(!StringUtils.isEmpty(errorMessage)){
...@@ -697,4 +695,15 @@ public class HuBeiServiceImpl implements IHuBeiService { ...@@ -697,4 +695,15 @@ public class HuBeiServiceImpl implements IHuBeiService {
} }
} }
@Override
public HuBeiDocName generateHuBeiDoc(HubeiCFCDataType hubeiCFCDataType,Byte seqNo){
String docName = HubeiCFCUtil.getDocName(hubeiCFCDataType,seqNo);
HuBeiDocName huBeiDocName = new HuBeiDocName();
huBeiDocName.setDocName(docName);
huBeiDocName.setDataType(hubeiCFCDataType.get());
Long docId = huBeiCFCDao.saveDocName(huBeiDocName);
huBeiDocName.setId(docId);
return huBeiDocName;
}
} }
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