Commit db93dad1 authored by 郝彦辉's avatar 郝彦辉

修改优化

parent 44bdcc8e
...@@ -2,6 +2,7 @@ package cn.quantgroup.report.job; ...@@ -2,6 +2,7 @@ package cn.quantgroup.report.job;
import cn.quantgroup.report.service.baihang.BaiHangZhuDaiService; import cn.quantgroup.report.service.baihang.BaiHangZhuDaiService;
import cn.quantgroup.report.service.baihang.constant.Constant; import cn.quantgroup.report.service.baihang.constant.Constant;
import cn.quantgroup.report.utils.dingtalk.DingTalk;
import com.google.common.base.Stopwatch; import com.google.common.base.Stopwatch;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -38,26 +39,45 @@ public class QuantGroupZhuDaiReportToBaiHang { ...@@ -38,26 +39,45 @@ public class QuantGroupZhuDaiReportToBaiHang {
@Autowired @Autowired
private BaiHangZhuDaiService baiHangZhuDaiService; private BaiHangZhuDaiService baiHangZhuDaiService;
@Autowired
private SynLoanInfoHistoryTask synLoanInfoHistoryTask;
@Autowired
private DingTalk dingTalk;
@Async @Async
/* @Scheduled(cron = "0 0 5 * * ?")*/ //@Scheduled(cron = "0 0 5 * * ?")
public void startZhuDaiReport(){ public void startZhuDaiReport(){
if(increment()){ if(increment()){
redisTemplate.expire(Constant.QG_ZHU_DAI_REPORT_LOCK_KEY, 10, TimeUnit.SECONDS); redisTemplate.expire(Constant.QG_ZHU_DAI_REPORT_LOCK_KEY, 10, TimeUnit.SECONDS);
Stopwatch stopwatch = Stopwatch.createStarted(); Stopwatch stopwatch = Stopwatch.createStarted();
//yyyy-MM-dd
String startnyr = LocalDateTime.now().plusDays(-1).format(DateTimeFormatter.ISO_DATE);
String endnyr = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE);
log.info("量化派-助贷模式报送贷款信息开始, newTime: {} , startnyr: {} , endnyr: {} ", LocalDateTime.now(), startnyr, endnyr); boolean tableIsSyn = synLoanInfoHistoryTask.syn_historyAndplan_by_id();
if(tableIsSyn){
try{
//yyyy-MM-dd
String startnyr = LocalDateTime.now().plusDays(-1).format(DateTimeFormatter.ISO_DATE);
String endnyr = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE);
log.info("量化派-助贷模式报送贷款信息开始, newTime: {} , startnyr: {} , endnyr: {} ", LocalDateTime.now(), startnyr, endnyr);
baiHangZhuDaiService.sendZhuDaiApplyToBaiHang(startnyr,endnyr); //生产 助贷-贷款申请 报送T+1 暂时先不报送C1 因为百行还没有开放查询接口 String msg_A1 = baiHangZhuDaiService.sendZhuDaiApplyToBaiHang(startnyr,endnyr); //生产 助贷-贷款申请 报送T+1 暂时先不报送C1 因为百行还没有开放查询接口
String msg_D2 = baiHangZhuDaiService.sendZhuDaiLoanToBaiHang(startnyr,endnyr); //生产 助贷-放款信息 报送T+1
String msg_D3 =baiHangZhuDaiService.sendZhuDaiRepaymentToBaiHang(startnyr,endnyr); //生产 助贷-还款&逾期信息 报送T+1
baiHangZhuDaiService.sendZhuDaiLoanToBaiHang(startnyr,endnyr); //生产 助贷-放款信息 报送T+1 log.info("量化派-助贷模式报送贷款信息结束, newTime: {}, 耗时: {} , msg: {} ", LocalDateTime.now(), stopwatch.stop().elapsed(TimeUnit.MILLISECONDS), (msg_A1 + msg_D2 + msg_D3));
dingTalk.talk("Info","报送贷款信息结束",msg_A1 + msg_D2 + msg_D3);
baiHangZhuDaiService.sendZhuDaiRepaymentToBaiHang(startnyr,endnyr); //生产 助贷-还款&逾期信息 报送T+1 }catch (Exception e){
log.error("量化派-助贷模式报送贷款信息异常, newTime: {}, 耗时: {} ", LocalDateTime.now(), stopwatch.stop().elapsed(TimeUnit.MILLISECONDS), e);
dingTalk.talk("Error","报送服务内部异常", e);
dingTalk.talk_ToUser("报送服务内部异常,请尽快手动处理!");
}
log.info("量化派-助贷模式报送贷款信息息结束, endTime: {}, 耗时: {} ", LocalDateTime.now(), stopwatch.stop().elapsed(TimeUnit.MILLISECONDS)); }else{
log.error("量化派-助贷模式报送贷款信息失败, 原因是同步历史表数据返回false, 请尽快人工处理, newTime: {} ", LocalDateTime.now());
}
} }
} }
......
...@@ -31,9 +31,9 @@ import java.util.concurrent.atomic.AtomicBoolean; ...@@ -31,9 +31,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
*/ */
@Component @Component
public class LoanApplicationManifestHistoryTask { public class SynLoanInfoHistoryTask {
private static final Logger log = LoggerFactory.getLogger(LoanApplicationManifestHistoryTask.class); private static final Logger log = LoggerFactory.getLogger(SynLoanInfoHistoryTask.class);
@Autowired @Autowired
private RedisTemplate<String,String> redisTemplate; private RedisTemplate<String,String> redisTemplate;
...@@ -73,13 +73,13 @@ public class LoanApplicationManifestHistoryTask { ...@@ -73,13 +73,13 @@ public class LoanApplicationManifestHistoryTask {
} }
public Boolean increment(){ private Boolean increment(){
Long increment = redisTemplate.opsForValue().increment(Constant.XYQB_HISTORY_DAI_REPORT_LOCK_KEY, 1); Long increment = redisTemplate.opsForValue().increment(Constant.XYQB_HISTORY_DAI_REPORT_LOCK_KEY, 1);
return increment <= 1; return increment <= 1;
} }
@Deprecated
public void syn_history_by_CreatedAt(){ private void syn_history_by_CreatedAt(){
LocalDateTime erlyDate = LocalDateTime.parse("2016-08-23T00:00:00");//2016-08-23T16:29:10 LocalDateTime erlyDate = LocalDateTime.parse("2016-08-23T00:00:00");//2016-08-23T16:29:10
LocalDateTime endDate = LocalDateTime.parse("2019-11-01T00:00:00");//2019-11-11 12:32:08 LocalDateTime endDate = LocalDateTime.parse("2019-11-01T00:00:00");//2019-11-11 12:32:08
int counter = 0; int counter = 0;
...@@ -111,7 +111,8 @@ public class LoanApplicationManifestHistoryTask { ...@@ -111,7 +111,8 @@ public class LoanApplicationManifestHistoryTask {
} }
} }
public void syn_plan_by_CreatedAt(){ @Deprecated
private void syn_plan_by_CreatedAt(){
LocalDateTime erlyDate = LocalDateTime.parse("2016-08-23T00:00:00");//2016-08-23T16:29:10 LocalDateTime erlyDate = LocalDateTime.parse("2016-08-23T00:00:00");//2016-08-23T16:29:10
LocalDateTime endDate = LocalDateTime.parse("2019-11-01T00:00:00");//2019-11-11 12:32:08 LocalDateTime endDate = LocalDateTime.parse("2019-11-01T00:00:00");//2019-11-11 12:32:08
int counter = 0; int counter = 0;
......
...@@ -167,7 +167,7 @@ public class BaiHangZhuDaiService { ...@@ -167,7 +167,7 @@ public class BaiHangZhuDaiService {
* 助贷模式-实时批量报送用户贷款申请A1数据 * 助贷模式-实时批量报送用户贷款申请A1数据
* Scheduled 贷款申请(百行征信报送) * Scheduled 贷款申请(百行征信报送)
*/ */
public void sendZhuDaiApplyToBaiHang(String startnyr, String endnyr) { public String sendZhuDaiApplyToBaiHang(String startnyr, String endnyr) {
//yyyy-MM-dd //yyyy-MM-dd
Stopwatch queryWatch1 = Stopwatch.createStarted(); Stopwatch queryWatch1 = Stopwatch.createStarted();
BaiHangTimeRecord timeRecord = BaiHangTimeRecord.builder().startTime(startnyr).endTime(endnyr).build(); BaiHangTimeRecord timeRecord = BaiHangTimeRecord.builder().startTime(startnyr).endTime(endnyr).build();
...@@ -213,6 +213,9 @@ public class BaiHangZhuDaiService { ...@@ -213,6 +213,9 @@ public class BaiHangZhuDaiService {
} }
} }
log.info("量化派助贷TO百行报送-贷款申请报送完成, 实际大小: {} , 报送成功大小: {} , 耗时: {} ", applyLoanInfos.size(), atomicInteger.get(), (sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s"); log.info("量化派助贷TO百行报送-贷款申请报送完成, 实际大小: {} , 报送成功大小: {} , 耗时: {} ", applyLoanInfos.size(), atomicInteger.get(), (sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s");
String resMsgTemp = "申请A1报送: 查询 %d条(联合贷%d条), 报送成功 %d条; ";
return String.format(resMsgTemp, applyLoanInfos.size(), (applyLoanInfosLh!=null?applyLoanInfosLh.size():0),atomicInteger.get());
} }
...@@ -220,13 +223,14 @@ public class BaiHangZhuDaiService { ...@@ -220,13 +223,14 @@ public class BaiHangZhuDaiService {
* 助贷模式-实时批量报送放款D2数据 * 助贷模式-实时批量报送放款D2数据
* Scheduled 实时放款数据(百行征信报送) * Scheduled 实时放款数据(百行征信报送)
*/ */
public void sendZhuDaiLoanToBaiHang(String startnyr, String endnyr) { public String sendZhuDaiLoanToBaiHang(String startnyr, String endnyr) {
//yyyy-MM-dd //yyyy-MM-dd
BaiHangTimeRecord timeRecord = BaiHangTimeRecord.builder().startTime(startnyr).endTime(endnyr).build(); BaiHangTimeRecord timeRecord = BaiHangTimeRecord.builder().startTime(startnyr).endTime(endnyr).build();
AtomicInteger atomicInteger = new AtomicInteger(); AtomicInteger atomicInteger = new AtomicInteger();
List<LoanInfoZhuDai> loanInfos = new ArrayList<>(); List<LoanInfoZhuDai> loanInfos = new ArrayList<>();
Stopwatch sendWatch = Stopwatch.createStarted(); Stopwatch sendWatch = Stopwatch.createStarted();
int loanInfosLhSize = 0;
try{ try{
Stopwatch queryWatch1 = Stopwatch.createStarted(); Stopwatch queryWatch1 = Stopwatch.createStarted();
loanInfos = loanInfoMapper.findRealTimeLoanInfoZhuDai(timeRecord); loanInfos = loanInfoMapper.findRealTimeLoanInfoZhuDai(timeRecord);
...@@ -234,7 +238,9 @@ public class BaiHangZhuDaiService { ...@@ -234,7 +238,9 @@ public class BaiHangZhuDaiService {
Stopwatch queryWatch2 = Stopwatch.createStarted(); Stopwatch queryWatch2 = Stopwatch.createStarted();
List<LoanInfoZhuDai> loanInfosLh = loanInfoMapper.findRealTimeLoanInfoZhuDaiLh(timeRecord); List<LoanInfoZhuDai> loanInfosLh = loanInfoMapper.findRealTimeLoanInfoZhuDaiLh(timeRecord);
log.info("量化派助贷TO百行报送-联合贷放款申请报送开始, 大小: {} , 耗时: {} ", loanInfosLh.size(), (queryWatch2.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s");
loanInfosLhSize = loanInfosLh!=null ? loanInfosLh.size() : 0;
log.info("量化派助贷TO百行报送-联合贷放款申请报送开始, 大小: {} , 耗时: {} ", loanInfosLhSize, (queryWatch2.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s");
if(loanInfos==null){ if(loanInfos==null){
loanInfos = new ArrayList<LoanInfoZhuDai>(); loanInfos = new ArrayList<LoanInfoZhuDai>();
...@@ -316,6 +322,9 @@ public class BaiHangZhuDaiService { ...@@ -316,6 +322,9 @@ public class BaiHangZhuDaiService {
log.error("量化派助贷TO百行报送-异常", e); log.error("量化派助贷TO百行报送-异常", e);
} }
log.info("量化派助贷TO百行报送-放款申请完成, 实际大小: {} , 报送成功大小: {} , 耗时: {} ", loanInfos.size(), atomicInteger.get(), (sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s"); log.info("量化派助贷TO百行报送-放款申请完成, 实际大小: {} , 报送成功大小: {} , 耗时: {} ", loanInfos.size(), atomicInteger.get(), (sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s");
String resMsgTemp = "放款D2报送: 查询 %d条(联合贷%d条), 报送成功 %d条; ";
return String.format(resMsgTemp, loanInfos.size(), loanInfosLhSize, atomicInteger.get());
} }
...@@ -323,9 +332,12 @@ public class BaiHangZhuDaiService { ...@@ -323,9 +332,12 @@ public class BaiHangZhuDaiService {
* 助贷模式-实时还款&实时逾期还款D3数据报送 * 助贷模式-实时还款&实时逾期还款D3数据报送
* Scheduled 还款&逾期(百行征信报送) * Scheduled 还款&逾期(百行征信报送)
*/ */
public void sendZhuDaiRepaymentToBaiHang(String startnyr, String endnyr) { public String sendZhuDaiRepaymentToBaiHang(String startnyr, String endnyr) {
//yyyy-MM-dd //yyyy-MM-dd
BaiHangTimeRecord timeRecord = BaiHangTimeRecord.builder().startTime(startnyr).endTime(endnyr).build(); BaiHangTimeRecord timeRecord = BaiHangTimeRecord.builder().startTime(startnyr).endTime(endnyr).build();
String resMsg = "";
String temp_huanKuan = "还款D3报送: 查询 %d条(联合贷%d条), 报送成功 %d条; ";
String temp_yuQi = "逾期D3报送: 查询 %d条(联合贷%d条), 报送成功 %d条; ";
for (int j = 0; j < 2; j++) { for (int j = 0; j < 2; j++) {
Stopwatch sendWatch = Stopwatch.createStarted(); Stopwatch sendWatch = Stopwatch.createStarted();
...@@ -397,11 +409,20 @@ public class BaiHangZhuDaiService { ...@@ -397,11 +409,20 @@ public class BaiHangZhuDaiService {
log.error("量化派助贷TO百行报送-还款信息异常, reqId_log: {} , recordId: {} , loanId: {} ", reqId_log, id, repaymentLoanInfo.getLoanId(), e); log.error("量化派助贷TO百行报送-还款信息异常, reqId_log: {} , recordId: {} , loanId: {} ", reqId_log, id, repaymentLoanInfo.getLoanId(), e);
} }
} }
if (j == 0) {
resMsg+=String.format(temp_huanKuan, repaymentLoanInfos.size(), (repaymentLoanInfosLh!=null ? repaymentLoanInfosLh.size() : 0), atomicInteger.get());
}else{
resMsg+=String.format(temp_yuQi, repaymentLoanInfos.size(), (repaymentLoanInfosLh!=null ? repaymentLoanInfosLh.size() : 0), atomicInteger.get());
}
log.info("量化派助贷TO百行报送-还款申请完成 J: {} , 开始时间: {} , 结束时间: {} , 实际大小: {} , 报送成功大小: {} , 耗时: {} ", j, startnyr, endnyr, repaymentLoanInfos.size(), atomicInteger.get(), (sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s"); log.info("量化派助贷TO百行报送-还款申请完成 J: {} , 开始时间: {} , 结束时间: {} , 实际大小: {} , 报送成功大小: {} , 耗时: {} ", j, startnyr, endnyr, repaymentLoanInfos.size(), atomicInteger.get(), (sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s");
} catch (Exception e) { } catch (Exception e) {
log.error("量化派助贷TO百行报送-异常 J: {} , 开始时间: {} , 结束时间: {} ", j, startnyr, endnyr, e); log.error("量化派助贷TO百行报送-异常 J: {} , 开始时间: {} , 结束时间: {} ", j, startnyr, endnyr, e);
} }
} }
return resMsg;
} }
......
...@@ -10,7 +10,6 @@ import cn.quantgroup.report.mapper.baihang.LoanInfoMapper; ...@@ -10,7 +10,6 @@ import cn.quantgroup.report.mapper.baihang.LoanInfoMapper;
import cn.quantgroup.report.mapper.master.RepaymentLoanInfoDbMapper; import cn.quantgroup.report.mapper.master.RepaymentLoanInfoDbMapper;
import cn.quantgroup.report.response.GlobalResponse; import cn.quantgroup.report.response.GlobalResponse;
import cn.quantgroup.report.service.CommonSuperService; import cn.quantgroup.report.service.CommonSuperService;
import cn.quantgroup.report.service.baihang.util.TuoMinUtils;
import cn.quantgroup.report.utils.IdUtils; import cn.quantgroup.report.utils.IdUtils;
import cn.quantgroup.report.utils.ReadOrWriteTxt; import cn.quantgroup.report.utils.ReadOrWriteTxt;
import cn.quantgroup.report.utils.commonutil.AesCrypto; import cn.quantgroup.report.utils.commonutil.AesCrypto;
...@@ -937,16 +936,17 @@ public class ManualToolService implements CommonSuperService { ...@@ -937,16 +936,17 @@ public class ManualToolService implements CommonSuperService {
public static void buildD3_logicerror() { public static void buildD3_logicerror() {
//"D3_041", 贷款账户编号loanId+还款期数termNo+还款状态确认时间statusConfirmAt+业务发生机构代码在还款记录中唯一。
List<String> logicerrorList = ReadOrWriteTxt.readTxtList("D:\\JavaTeam\\D3_build\\d3_041_errData.txt"); List<String> logicerrorList = ReadOrWriteTxt.readTxtList("D:\\JavaTeam\\D3_build\\d3_041_errData.txt");
Map<String,String> err_log_loanIdMap = new HashMap<>(logicerrorList.size()); Map<String,String> err_log_loanIdMap = new HashMap<>(logicerrorList.size());
for (String strs : logicerrorList){ for (String strs : logicerrorList){
String[] tmpArr = strs.split("[|]"); String[] tmpArr = strs.split("[|]");
err_log_loanIdMap.put(tmpArr[1],strs); //err_log_loanIdMap.put(tmpArr[1], strs);
err_log_loanIdMap.put(tmpArr[1]+","+tmpArr[2]+","+tmpArr[3], strs);
} }
System.out.println("err_log_loanIdMap 大小:"+err_log_loanIdMap.size()); System.out.println("err_log_loanIdMap 大小:"+err_log_loanIdMap.size());
List<String> lineList = ReadOrWriteTxt.readTxtList("D:\\JavaTeam\\D3_build\\D3_04.txt"); List<String> lineList = ReadOrWriteTxt.readTxtList("D:\\JavaTeam\\D3_build\\D3_04.txt");
System.out.println("lineList:"+lineList.size()); System.out.println("lineList:"+lineList.size());
String fileName = "D:\\JavaTeam\\D3_build\\new_D3_04.txt"; String fileName = "D:\\JavaTeam\\D3_build\\new_D3_04.txt";
...@@ -963,9 +963,7 @@ public class ManualToolService implements CommonSuperService { ...@@ -963,9 +963,7 @@ public class ManualToolService implements CommonSuperService {
RepaymentInfoZhuDai repaymentLoanInfo = new Gson().fromJson(str, new TypeToken<RepaymentInfoZhuDai>(){}.getType()); RepaymentInfoZhuDai repaymentLoanInfo = new Gson().fromJson(str, new TypeToken<RepaymentInfoZhuDai>(){}.getType());
String loanId = repaymentLoanInfo.getLoanId(); String loanId = repaymentLoanInfo.getLoanId();
/*if(err_log_loanIdMap.containsKey(loanId)){
if(err_log_loanIdMap.containsKey(loanId)){
//2|100011189|9|2019-02-22T00:00:00| //2|100011189|9|2019-02-22T00:00:00|
String[] errMsgArr = err_log_loanIdMap.get(loanId).split("[|]"); String[] errMsgArr = err_log_loanIdMap.get(loanId).split("[|]");
if(repaymentLoanInfo.getTermNo()==Integer.parseInt(errMsgArr[2]) && repaymentLoanInfo.getStatusConfirmAt().equals(errMsgArr[3])){ if(repaymentLoanInfo.getTermNo()==Integer.parseInt(errMsgArr[2]) && repaymentLoanInfo.getStatusConfirmAt().equals(errMsgArr[3])){
...@@ -977,9 +975,21 @@ public class ManualToolService implements CommonSuperService { ...@@ -977,9 +975,21 @@ public class ManualToolService implements CommonSuperService {
} }
} }
} }
}*/
String key = loanId+","+repaymentLoanInfo.getTermNo()+","+repaymentLoanInfo.getStatusConfirmAt();
if (err_log_loanIdMap.containsKey(key)) {
//100011189,9,2019-02-22T00:00:00
if (repaymentLoanInfo.getRealRepayment() == null || repaymentLoanInfo.getRealRepayment().intValue() == 0) {
if (repaymentLoanInfo.getRealRepaymentDate() == null || repaymentLoanInfo.getRealRepaymentDate().equals("")) {
writeLog(JSON.toJSONString(repaymentLoanInfo));
removeCount++;
continue;
}
}
} }
try { try {
FileUtils.write(new File(fileName), JSON.toJSONString(repaymentLoanInfo)+"\r\n", "UTF-8", true); FileUtils.write(new File(fileName), JSON.toJSONString(repaymentLoanInfo)+"\r\n", "UTF-8", true);
} catch (IOException e) { } catch (IOException e) {
...@@ -1007,6 +1017,9 @@ public class ManualToolService implements CommonSuperService { ...@@ -1007,6 +1017,9 @@ public class ManualToolService implements CommonSuperService {
// } // }
// System.out.println(buff.toString()); // System.out.println(buff.toString());
/*String resMsgTemp = "申请A1报送: 查询 %d条(联合贷%d条), 报送成功 %d条; ";
System.out.println(String.format(resMsgTemp, 10, 2, 10));*/
//buildD2_inputerror(); //buildD2_inputerror();
...@@ -1014,5 +1027,8 @@ public class ManualToolService implements CommonSuperService { ...@@ -1014,5 +1027,8 @@ public class ManualToolService implements CommonSuperService {
buildD3_logicerror(); buildD3_logicerror();
} }
} }
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