Commit 29d0decb authored by 郝彦辉's avatar 郝彦辉

百行每天的重新报送优化成定时任务

parent 192ffb45
...@@ -4,11 +4,15 @@ import cn.quantgroup.report.response.GlobalResponse; ...@@ -4,11 +4,15 @@ import cn.quantgroup.report.response.GlobalResponse;
import cn.quantgroup.report.service.common.CommonQueryService; import cn.quantgroup.report.service.common.CommonQueryService;
import cn.quantgroup.report.service.manualTool.CleanningTransactionLogService; import cn.quantgroup.report.service.manualTool.CleanningTransactionLogService;
import cn.quantgroup.report.service.manualTool.ManualToolService; import cn.quantgroup.report.service.manualTool.ManualToolService;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.ImmutableMap;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping(value = "/manualtool") @RequestMapping(value = "/manualtool")
...@@ -40,12 +44,13 @@ public class ManualToolController { ...@@ -40,12 +44,13 @@ public class ManualToolController {
@RequestMapping("/send/baihang") @RequestMapping("/send/baihang")
public GlobalResponse sendBaihang(String p1,String p2,String p3,String p4,String p5,String secretKey, String isSend,String errorCode, String isProduct, String sendIncludeType) { public String sendBaihang(String p1,String p2,String p3,String p4,String p5,String secretKey, String isSend,String errorCode, String isProduct, String sendIncludeType) {
try{ try{
return manualToolService.sendBaiHangData(p1,p2,p3,p4,p5,secretKey,isSend,errorCode, isProduct, sendIncludeType); Map<String,String> resultMap = manualToolService.sendBaiHangData(p1,p2,p3,p4,p5,secretKey,isSend,errorCode, isProduct, sendIncludeType);
return JSON.toJSONString(resultMap);
}catch (Exception e){ }catch (Exception e){
log.error("众信利民助贷模式To百行征信手动报送异常, {} , {} ", e.getMessage(), e); log.error("众信利民助贷模式To百行征信手动报送异常, {} , {} ", e.getMessage(), e);
return GlobalResponse.generate(e.getMessage()); return "众信利民助贷模式To百行征信手动报送异常";
} }
} }
...@@ -188,4 +193,25 @@ public class ManualToolController { ...@@ -188,4 +193,25 @@ public class ManualToolController {
return "deleteTidbCallRecordCF调度完成"; return "deleteTidbCallRecordCF调度完成";
} }
@RequestMapping("/deleteRedisKey")
public Map<String,Object> deleteRedisKey(String key1, String key2, String key3){
try{
manualToolService.deleteRedisKey(key1, key2, key3);
return ImmutableMap.of("code", 0, "msg", "手动删除redisKey成功");
}catch(Exception e){
return ImmutableMap.of("code", 1, "msg", "手动设置redisKey异常");
}
}
@RequestMapping("/getRedisVal")
public String getRedisVal(String key){
try{
return manualToolService.getRedisVal(key);
}catch(Exception e){
return "获取redis值异常";
}
}
} }
...@@ -119,13 +119,14 @@ public class ExZhuDaiBaiHangReSendController { ...@@ -119,13 +119,14 @@ public class ExZhuDaiBaiHangReSendController {
* 创建时间: 2019.10.29 <br/> * 创建时间: 2019.10.29 <br/>
*/ */
@RequestMapping("/manual/buquan/mainApplySend") @RequestMapping("/manual/buquan/mainApplySend")
public GlobalResponse mainApplySend(){ public String mainApplySend(){
try{ try{
baiHangZhuDaiService.sendHandApplyToBaiHang(true,null); return baiHangZhuDaiService.sendHandApplyToBaiHang(true,null);
return GlobalResponse.generate("百行征信助贷模式手动报送D2数据成功"); //return GlobalResponse.generate("百行征信助贷模式手动报送D2数据成功");
}catch(Exception e){ }catch(Exception e){
log.error("百行征信助贷模式手动报送申请异常", e); log.error("众信利民助贷模式手动报送A1申请异常", e);
return GlobalResponse.generate("百行征信助贷模式手动报送A1数据失败"); //return GlobalResponse.generate("百行征信助贷模式手动报送A1数据失败");
return "众信利民助贷模式手动报送A1数据失败";
} }
} }
...@@ -137,13 +138,14 @@ public class ExZhuDaiBaiHangReSendController { ...@@ -137,13 +138,14 @@ public class ExZhuDaiBaiHangReSendController {
* 创建时间: 2019.10.29 <br/> * 创建时间: 2019.10.29 <br/>
*/ */
@RequestMapping("/manual/buquan/mainLoanInfoSend") @RequestMapping("/manual/buquan/mainLoanInfoSend")
public GlobalResponse mainLoanInfoSend(String isSaveLogBean){ public String mainLoanInfoSend(String isSaveLogBean){
try{ try{
baiHangZhuDaiService.sendHandLoaInfoReportToBaiHang2(true,null,isSaveLogBean); return baiHangZhuDaiService.sendHandLoaInfoReportToBaiHang2(true,null,isSaveLogBean);
return GlobalResponse.generate("百行征信助贷模式手动报送D2数据成功"); //return GlobalResponse.generate("百行征信助贷模式手动报送D2数据成功");
}catch(Exception e){ }catch(Exception e){
log.error("百行征信助贷模式报送放款异常", e); log.error("众信利民助贷模式手动报送D2放款异常", e);
return GlobalResponse.generate("百行征信助贷模式手动报送D2数据失败"); //return GlobalResponse.generate("百行征信助贷模式手动报送D2数据失败");
return "众信利民助贷模式手动报送D2数据失败";
} }
} }
...@@ -155,13 +157,14 @@ public class ExZhuDaiBaiHangReSendController { ...@@ -155,13 +157,14 @@ public class ExZhuDaiBaiHangReSendController {
* 创建时间: 2019.10.29 <br/> * 创建时间: 2019.10.29 <br/>
*/ */
@RequestMapping("/manual/buquan/mainRepaymentLoanInfo") @RequestMapping("/manual/buquan/mainRepaymentLoanInfo")
public GlobalResponse mainRepaymentLoanInfo(){ public String mainRepaymentLoanInfo(){
try{ try{
baiHangZhuDaiService.sendHandRepaymentReportToBaiHang1(true,null); return baiHangZhuDaiService.sendHandRepaymentReportToBaiHang1(true,null);
return GlobalResponse.generate("百行征信助贷模式手动报送D3数据成功"); //return GlobalResponse.generate("百行征信助贷模式手动报送D3数据成功");
}catch(Exception e){ }catch(Exception e){
log.error("百行征信助贷模式报送还款异常", e); log.error("众信利民助贷模式手动报送D3还款异常", e);
return GlobalResponse.generate("百行征信助贷模式手动报送D3数据失败"); //return GlobalResponse.generate("百行征信助贷模式手动报送D3数据失败");
return "众信利民助贷模式手动报送D3还款数据失败";
} }
} }
......
package cn.quantgroup.report.job;
import cn.quantgroup.report.response.RiskHttpResponse;
import cn.quantgroup.report.service.baihang.BaiHangZhuDaiService;
import cn.quantgroup.report.utils.dingtalk.DingTalk;
import cn.quantgroup.report.utils.http.HttpRequestUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Stopwatch;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 一些繁琐的日正常工作task<br>
* 作者:yanhui.Hao <br>
* 时间:2020.03.11 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Component
public class RoutineWorkTask {
private static final Logger log = LoggerFactory.getLogger(RoutineWorkTask.class);
@Autowired
private RedisTemplate<String,String> redisTemplate;
@Autowired
private DingTalk dingTalk;
/** 百行报送工程RoutineWorkTask锁key */
public static final String ROUTINE_WORK_BH_LOCK_KEY_1 = "ROUTINE_WORK_BH_LOCK_KEY_1";
public static final String ROUTINE_WORK_BH_LOCK_KEY_2 = "ROUTINE_WORK_BH_LOCK_KEY_2";
public static final String ZXLM_A1_INTERFACE_SEND = "ZXLM_A1_INTERFACE_SEND";
public static final String ZXLM_D2_INTERFACE_SEND = "ZXLM_D2_INTERFACE_SEND";
public static final String ZXLM_D3_INTERFACE_SEND = "ZXLM_D3_INTERFACE_SEND";
@Async
@Scheduled(cron = "0 0 17 * * ?")
public void downloadLog() {
if (increment(ROUTINE_WORK_BH_LOCK_KEY_1)) {
redisTemplate.expire(ROUTINE_WORK_BH_LOCK_KEY_1, 10, TimeUnit.SECONDS);
Stopwatch stopwatch = Stopwatch.createStarted();
//yyyy-MM-dd
String newDatenyr = LocalDateTime.now().plusDays(-1).format(DateTimeFormatter.ISO_DATE);
newDatenyr = newDatenyr.replace("-", "");
//指定只有172.21.10.8服务器
String downloadUrl = "http://172.21.10.8:9021/manualtool/send/baihang?key=b5140fb2-2c85-4b5a-abcf-3e97528014db";
Map<String, Object> body = new HashMap<>();
body.put("p1", "L0hNMklnTjNPenA1aDdqSHpreld1UT09");
body.put("p2", "UTg1UFN4SjN3TThuVXFIVEFUUFR0QT09");
body.put("p3", "Mm12NTBKU1JkVFE3MjlCK3RnZTNRdz09");
body.put("p4", "MmJJMzNUQVRMSXQ4V3VDbUswZGNlUT09");
body.put("p5", newDatenyr);
body.put("secretKey", "UY1I5dHb3iq/DtEAm1f3yu7emYzlSvpFNPkxpOMSegqYJ08M2drTtNiqLyaxjbERWR0yS5CHPKpHwGjTXWHP3DEEDfXX4LhRtmiN1LIpZPdl87YWpDJ1qg07EN671JcY406oPbh7KsHFO0I0B32Hee1iZanKL4tzqmgF4dvsUNs=");
body.put("isSend", "false");//不自动报送
body.put("sendIncludeType", "D2,D3");//不不自动报送,该参数没有用
body.put("isProduct", "true");
body.put("errorCode", "D3_035,");//以后发现其他错误code,可以追加
log.info("下载(众信利民助贷)百行反馈日志开始, newTime: {} , newDatenyr: {} ", LocalDateTime.now(), newDatenyr);
try {
Stopwatch stopwatch1 = Stopwatch.createStarted();
RiskHttpResponse riskHttpResponse = HttpRequestUtil.doPost(downloadUrl, body);
//manualToolService.sendBaiHangData
log.info("处理结束, result: {} , 耗时: {} ", JSONObject.toJSONString(riskHttpResponse), stopwatch1.stop().elapsed(TimeUnit.MILLISECONDS));
int statusCode = riskHttpResponse.getCode();
JSONObject jsonObject = riskHttpResponse.getJsonObject();
if (statusCode == 200 && jsonObject != null) {
String success = jsonObject.getString("success");
String alarm = jsonObject.getString("alarm");
if (StringUtils.isNotEmpty(success)) {
if (StringUtils.isNotEmpty(alarm)) {
dingTalk.talk("Info", "下载&处理" + newDatenyr + "(众信利民助贷)百行反馈日志结束", success);
dingTalk.talk_ToUser("下载(众信利民助贷)百行反馈主日志文件不存在", "下载" + newDatenyr + "反馈主日志文件不存在,反馈日志主文件不存在,请注意确认!");
log.info("下载(众信利民助贷)百行反馈日志结束, newDatenyr: {}, 耗时: {} ", newDatenyr, stopwatch.stop().elapsed(TimeUnit.MILLISECONDS));
return;
} else {
dingTalk.talk("Info", "下载&处理" + newDatenyr + "(众信利民助贷)百行反馈日志结束", success + "————10分钟后将会自动重新报送,若有问题请及时停止!");
String json_sq_A1 = jsonObject.getString("json_sq_A1");
if(StringUtils.isNotEmpty(json_sq_A1) && "true".equals(json_sq_A1)){
setRedisValStr(ZXLM_A1_INTERFACE_SEND);
}
String json_fk_D2 = jsonObject.getString("json_fk_D2");
if(StringUtils.isNotEmpty(json_fk_D2) && "true".equals(json_fk_D2)){
setRedisValStr(ZXLM_D2_INTERFACE_SEND);
}
String json_hk_D3 = jsonObject.getString("json_hk_D3");
if(StringUtils.isNotEmpty(json_hk_D3) && "true".equals(json_hk_D3)){
setRedisValStr(ZXLM_D3_INTERFACE_SEND);
}
log.info("下载(众信利民助贷)百行反馈日志结束, newDatenyr: {}, 耗时: {} ", newDatenyr, stopwatch.stop().elapsed(TimeUnit.MILLISECONDS));
return;
}
}
}
} catch (Exception e) {
log.error("下载(众信利民助贷)百行反馈日志异常, newDatenyr: {} ", newDatenyr, e);
dingTalk.talk("Error", "报送服务内部异常", e);
dingTalk.talk_ToUser("数据报送异常", "报送服务内部异常,请尽快手动处理!");
}
dingTalk.talk_ToUser("下载(众信利民助贷)百行反馈日志未知异常", "下载" + newDatenyr + "反馈日志失败,请尽快手动处理!");
log.info("下载(众信利民助贷)百行反馈日志结束, newDatenyr: {}, 耗时: {} ", newDatenyr, stopwatch.stop().elapsed(TimeUnit.MILLISECONDS));
}
}
@Async
@Scheduled(cron = "0 15 17 * * ?")
public void sendBaoSong() {
if (increment(ROUTINE_WORK_BH_LOCK_KEY_2)) {
redisTemplate.expire(ROUTINE_WORK_BH_LOCK_KEY_2, 10, TimeUnit.SECONDS);
Stopwatch stopwatch = Stopwatch.createStarted();
//yyyy-MM-dd
String newDatenyr = LocalDateTime.now().plusDays(-1).format(DateTimeFormatter.ISO_DATE);
newDatenyr = newDatenyr.replace("-", "");
//指定只有172.21.10.8服务器 172.21.10.8:9021
String send_A1_url = "http://172.21.10.8:9021/zhudai/re_send/manual/buquan/mainApplySend?key=b5140fb2-2c85-4b5a-abcf-3e97528014db";
String send_D2_url = "http://172.21.10.8:9021/zhudai/re_send/manual/buquan/mainLoanInfoSend?key=b5140fb2-2c85-4b5a-abcf-3e97528014db";
String send_D3_url = "http://172.21.10.8:9021/zhudai/re_send/manual/buquan/mainRepaymentLoanInfo?key=b5140fb2-2c85-4b5a-abcf-3e97528014db";
log.info("众信利民助贷-百行重新报送开始, newTime: {} , newDatenyr: {} ", LocalDateTime.now(), newDatenyr);
if(getRedisValStr(ZXLM_A1_INTERFACE_SEND)){
try {
redisTemplate.delete(ZXLM_A1_INTERFACE_SEND);
String result = HttpRequestUtil.doPostTool(send_A1_url, new HashMap<>());
log.info("众信利民助贷-百行重新报送A1结束, newTime: {} , newDatenyr: {} , result: {} ", LocalDateTime.now(), newDatenyr, result);
dingTalk.talk("Info", "众信利民助贷-重新报送 A1 结束", "("+newDatenyr+")"+result);
Thread.sleep(10*1000);//10秒
}catch (Exception e){
log.info("(众信利民助贷)重新报送A1异常, newTime: {} , newDatenyr: {} ", LocalDateTime.now(), newDatenyr, e);
dingTalk.talk_ToUser("众信利民助贷-重新报送 A1 异常", "("+newDatenyr+") A1报送异常,请尽快查看处理!");
}
}
if(getRedisValStr(ZXLM_D2_INTERFACE_SEND)){
try {
redisTemplate.delete(ZXLM_D2_INTERFACE_SEND);
String result = HttpRequestUtil.doPostTool(send_D2_url, new HashMap<>());
log.info("众信利民助贷-百行重新报送D2结束, newTime: {} , newDatenyr: {} , result: {} ", LocalDateTime.now(), newDatenyr, result);
dingTalk.talk("Info", "众信利民助贷-重新报送 D2 结束", "("+newDatenyr+")"+result);
Thread.sleep(10*1000);//10秒
}catch (Exception e){
log.info("(众信利民助贷)重新报送D2异常, newTime: {} , newDatenyr: {} ", LocalDateTime.now(), newDatenyr, e);
dingTalk.talk_ToUser("众信利民助贷-重新报送 D2 异常", "("+newDatenyr+") D2报送异常,请尽快查看处理!");
}
}
if(getRedisValStr(ZXLM_D3_INTERFACE_SEND)){
try {
redisTemplate.delete(ZXLM_D3_INTERFACE_SEND);
String result = HttpRequestUtil.doPostTool(send_D3_url, new HashMap<>());
log.info("众信利民助贷-百行重新报送D3结束, newTime: {} , newDatenyr: {} , result: {} ", LocalDateTime.now(), newDatenyr, result);
dingTalk.talk("Info", "众信利民助贷-重新报送 D2 结束", "("+newDatenyr+")"+result);
Thread.sleep(10*1000);//10秒
}catch (Exception e){
log.info("(众信利民助贷)重新报送D3异常, newTime: {} , newDatenyr: {} ", LocalDateTime.now(), newDatenyr, e);
dingTalk.talk_ToUser("众信利民助贷-重新报送 D3 异常", "("+newDatenyr+") D3报送异常,请尽快查看处理!");
}
}
log.info("众信利民助贷-百行重新报送结束, newDatenyr: {}, 耗时: {} ", newDatenyr, stopwatch.stop().elapsed(TimeUnit.MILLISECONDS));
}
}
private Boolean increment(String key){
Long increment = redisTemplate.opsForValue().increment(key, 1);
return increment <= 1;
}
private void setRedisValStr(String key){
try {
redisTemplate.opsForValue().set(key, "true", 15, TimeUnit.MINUTES);
}catch (Exception e){
log.error("Redis中set值异常, key: {} ", key, e);
}
}
private boolean getRedisValStr(String key){
String value = null;
try {
value = redisTemplate.opsForValue().get(key);
}catch (Exception e){
log.error("Redis中get值异常, key: {} ", key, e);
}
if(StringUtils.isNotEmpty(value) && "true".equals(value)){
return true;
}else{
return false;
}
}
}
...@@ -514,7 +514,7 @@ public class BaiHangZhuDaiService { ...@@ -514,7 +514,7 @@ public class BaiHangZhuDaiService {
* 创建人: yanhui.Hao <br/> * 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.29 <br/> * 创建时间: 2019.10.29 <br/>
*/ */
public void sendHandApplyToBaiHang(boolean isReadFile,List<String> paramJsonStr) throws Exception { public String sendHandApplyToBaiHang(boolean isReadFile,List<String> paramJsonStr) throws Exception {
Stopwatch sendWatch = Stopwatch.createStarted(); Stopwatch sendWatch = Stopwatch.createStarted();
List<String> handApplys = null; List<String> handApplys = null;
if(isReadFile){ if(isReadFile){
...@@ -522,12 +522,13 @@ public class BaiHangZhuDaiService { ...@@ -522,12 +522,13 @@ public class BaiHangZhuDaiService {
}else{ }else{
if(paramJsonStr==null || paramJsonStr.size()==0){ if(paramJsonStr==null || paramJsonStr.size()==0){
log.warn("众信利民助贷模式TO百行手动报送贷款申请错误, paramJsonStr is Null , isReadFile: {} ",isReadFile); log.warn("众信利民助贷模式TO百行手动报送贷款申请错误, paramJsonStr is Null , isReadFile: {} ",isReadFile);
return; return "众信利民助贷模式手动报送A1申请参数为空";
}else{ }else{
handApplys = paramJsonStr; handApplys = paramJsonStr;
} }
} }
AtomicInteger succ_atomicInteger = new AtomicInteger();
for(int i=0;i<handApplys.size();i++){ for(int i=0;i<handApplys.size();i++){
try { try {
ApplyLoanInfoZhuDai applyInfo = new Gson().fromJson(handApplys.get(i), new TypeToken<ApplyLoanInfoZhuDai>(){}.getType()); ApplyLoanInfoZhuDai applyInfo = new Gson().fromJson(handApplys.get(i), new TypeToken<ApplyLoanInfoZhuDai>(){}.getType());
...@@ -546,12 +547,19 @@ public class BaiHangZhuDaiService { ...@@ -546,12 +547,19 @@ public class BaiHangZhuDaiService {
/*if (Objects.isNull(resultStr) || !(resultStr.contains("queryHistory") && resultStr.contains("nonRevolvingLoan") && resultStr.contains("revolvingLoan"))) { /*if (Objects.isNull(resultStr) || !(resultStr.contains("queryHistory") && resultStr.contains("nonRevolvingLoan") && resultStr.contains("revolvingLoan"))) {
log.info("量化派助贷TO百行报送-贷款申请返回结果不正确, loanId: {} ", applyInfo.getLoanId()); log.info("量化派助贷TO百行报送-贷款申请返回结果不正确, loanId: {} ", applyInfo.getLoanId());
}*/ }*/
if (Objects.isNull(resultStr) || "success".equalsIgnoreCase(JSON.parseObject(resultStr).getString("status"))) {
succ_atomicInteger.getAndIncrement();
}
log.info("众信利民助贷模式TO百行手动报送贷款申请记录 bean: {} , result: {} ", logJson, resultStr); log.info("众信利民助贷模式TO百行手动报送贷款申请记录 bean: {} , result: {} ", logJson, resultStr);
} catch (Exception e) { } catch (Exception e) {
log.error("百行征信助贷模式手动报送贷款申请记录异常, params: {} ", handApplys.get(i), e); log.error("百行征信助贷模式手动报送贷款申请记录异常, params: {} ", handApplys.get(i), e);
} }
} }
log.info("众信利民助贷模式TO百行手动报送贷款申请结束, 大小: {} , 耗时: {} ", handApplys.size(), ((sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s")); log.info("众信利民助贷模式TO百行手动报送贷款申请结束, 大小: {} , 耗时: {} ", handApplys.size(), ((sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s"));
return "众信利民助贷模式手动报送A1申请列表大小: "+handApplys.size()+" , 报送成功条数: "+succ_atomicInteger.get();
} }
/** /**
...@@ -663,7 +671,7 @@ public class BaiHangZhuDaiService { ...@@ -663,7 +671,7 @@ public class BaiHangZhuDaiService {
} }
//D2手动报送,有账单日列表,和totalTerm //D2手动报送,有账单日列表,和totalTerm
public void sendHandLoaInfoReportToBaiHang2(boolean isReadFile, List<String> paramJsonStr, String isSaveLogBean) throws Exception { public String sendHandLoaInfoReportToBaiHang2(boolean isReadFile, List<String> paramJsonStr, String isSaveLogBean) throws Exception {
Stopwatch sendWatch = Stopwatch.createStarted(); Stopwatch sendWatch = Stopwatch.createStarted();
List<String> handLoanInfos = null; List<String> handLoanInfos = null;
if(isReadFile){ if(isReadFile){
...@@ -671,7 +679,7 @@ public class BaiHangZhuDaiService { ...@@ -671,7 +679,7 @@ public class BaiHangZhuDaiService {
}else{ }else{
if(paramJsonStr==null || paramJsonStr.size()==0){ if(paramJsonStr==null || paramJsonStr.size()==0){
log.warn("众信利民助贷模式TO百行手动报送放款数据错误, paramJsonStr is Null , isReadFile: {} ",isReadFile); log.warn("众信利民助贷模式TO百行手动报送放款数据错误, paramJsonStr is Null , isReadFile: {} ",isReadFile);
return; return "众信利民助贷模式手动报送D2参数为空";
}else{ }else{
handLoanInfos = paramJsonStr; handLoanInfos = paramJsonStr;
} }
...@@ -682,6 +690,7 @@ public class BaiHangZhuDaiService { ...@@ -682,6 +690,7 @@ public class BaiHangZhuDaiService {
is_saveLogBean = true; is_saveLogBean = true;
} }
AtomicInteger succ_atomicInteger = new AtomicInteger();
for(int i=0;i<handLoanInfos.size();i++){ for(int i=0;i<handLoanInfos.size();i++){
try{ try{
if(handLoanInfos.get(i).length()<30){ if(handLoanInfos.get(i).length()<30){
...@@ -753,6 +762,9 @@ public class BaiHangZhuDaiService { ...@@ -753,6 +762,9 @@ public class BaiHangZhuDaiService {
loanInfo.setPid(interfaceUploadClient(loanInfo.getPid())); loanInfo.setPid(interfaceUploadClient(loanInfo.getPid()));
String resultStr = iHttpService.postBaiHang(baiHangLoanInfoUrl, getHeader(), JSON.toJSONString(loanInfo)); String resultStr = iHttpService.postBaiHang(baiHangLoanInfoUrl, getHeader(), JSON.toJSONString(loanInfo));
if (Objects.isNull(resultStr) || "success".equalsIgnoreCase(JSON.parseObject(resultStr).getString("status"))) {
succ_atomicInteger.getAndIncrement();
}
log.info("众信利民助贷模式TO百行手动报送放款记录 loanInfoReqId: {} , loanId: {} , bean: {} , result: {} ", loanInfoReqId, loanInfo.getLoanId(), logJson, resultStr); log.info("众信利民助贷模式TO百行手动报送放款记录 loanInfoReqId: {} , loanId: {} , bean: {} , result: {} ", loanInfoReqId, loanInfo.getLoanId(), logJson, resultStr);
}catch (Exception e){ }catch (Exception e){
...@@ -760,6 +772,8 @@ public class BaiHangZhuDaiService { ...@@ -760,6 +772,8 @@ public class BaiHangZhuDaiService {
} }
} }
log.info("众信利民助贷模式TO百行手动报送放款记录结束, 大小: {} , 耗时: {} ", handLoanInfos.size(), ((sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s")); log.info("众信利民助贷模式TO百行手动报送放款记录结束, 大小: {} , 耗时: {} ", handLoanInfos.size(), ((sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s"));
return "众信利民助贷模式手动报送放款D2列表大小: "+handLoanInfos.size()+" , 报送成功条数: "+succ_atomicInteger.get();
} }
/** /**
...@@ -769,7 +783,7 @@ public class BaiHangZhuDaiService { ...@@ -769,7 +783,7 @@ public class BaiHangZhuDaiService {
* 创建人: yanhui.Hao <br/> * 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.29 <br/> * 创建时间: 2019.10.29 <br/>
*/ */
public void sendHandRepaymentReportToBaiHang1(boolean isReadFile, List<String> paramJsonStr) throws Exception{ public String sendHandRepaymentReportToBaiHang1(boolean isReadFile, List<String> paramJsonStr) throws Exception{
Stopwatch sendWatch = Stopwatch.createStarted(); Stopwatch sendWatch = Stopwatch.createStarted();
List<String> repaymentLoanInfos = null; List<String> repaymentLoanInfos = null;
if(isReadFile){ if(isReadFile){
...@@ -777,12 +791,13 @@ public class BaiHangZhuDaiService { ...@@ -777,12 +791,13 @@ public class BaiHangZhuDaiService {
}else{ }else{
if(paramJsonStr==null || paramJsonStr.size()==0){ if(paramJsonStr==null || paramJsonStr.size()==0){
log.warn("众信利民助贷模式TO百行手动报送还款数据错误, paramJsonStr is Null , isReadFile: {} ",isReadFile); log.warn("众信利民助贷模式TO百行手动报送还款数据错误, paramJsonStr is Null , isReadFile: {} ",isReadFile);
return; return "众信利民助贷模式手动报送D3还款参数为空";
}else{ }else{
repaymentLoanInfos = paramJsonStr; repaymentLoanInfos = paramJsonStr;
} }
} }
AtomicInteger succ_atomicInteger = new AtomicInteger();
//log.info("众信利民助贷模式TO百行报送还款数据, {}", JSON.toJSONString(repaymentLoanInfos)); //log.info("众信利民助贷模式TO百行报送还款数据, {}", JSON.toJSONString(repaymentLoanInfos));
for(int i=0;i<repaymentLoanInfos.size();i++){ for(int i=0;i<repaymentLoanInfos.size();i++){
try { try {
...@@ -819,6 +834,9 @@ public class BaiHangZhuDaiService { ...@@ -819,6 +834,9 @@ public class BaiHangZhuDaiService {
repaymentLoanInfo.setMobile(interfaceUploadClient(repaymentLoanInfo.getMobile())); repaymentLoanInfo.setMobile(interfaceUploadClient(repaymentLoanInfo.getMobile()));
String resultStr = iHttpService.postBaiHang(baiHangRepayMentLoanInfoUrl, getHeader(), JSON.toJSONString(repaymentLoanInfo)); String resultStr = iHttpService.postBaiHang(baiHangRepayMentLoanInfoUrl, getHeader(), JSON.toJSONString(repaymentLoanInfo));
if (Objects.isNull(resultStr) || "success".equalsIgnoreCase(JSON.parseObject(resultStr).getString("status"))) {
succ_atomicInteger.getAndIncrement();
}
log.info("众信利民助贷模式TO百行手动报送还款记录 reqID: {} , bean: {} , result: {} ", repaymentLoanInfo.getReqID(), logJson, resultStr); log.info("众信利民助贷模式TO百行手动报送还款记录 reqID: {} , bean: {} , result: {} ", repaymentLoanInfo.getReqID(), logJson, resultStr);
} catch (Exception e) { } catch (Exception e) {
...@@ -826,6 +844,8 @@ public class BaiHangZhuDaiService { ...@@ -826,6 +844,8 @@ public class BaiHangZhuDaiService {
} }
} }
log.info("众信利民助贷模式TO百行手动报送还款记录结束, 大小: {} , 耗时: {} ", repaymentLoanInfos.size(), ((sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s")); log.info("众信利民助贷模式TO百行手动报送还款记录结束, 大小: {} , 耗时: {} ", repaymentLoanInfos.size(), ((sendWatch.stop().elapsed(TimeUnit.MILLISECONDS)/1000)+".s"));
return "众信利民助贷模式手动报送D3还款列表大小: "+repaymentLoanInfos.size()+" , 报送成功条数: "+succ_atomicInteger.get();
} }
//-----------------------------------------------存量整理--------------------------------------------------------------------- //-----------------------------------------------存量整理---------------------------------------------------------------------
......
...@@ -5,7 +5,6 @@ import cn.quantgroup.report.config.aop.DistributedLock; ...@@ -5,7 +5,6 @@ import cn.quantgroup.report.config.aop.DistributedLock;
import cn.quantgroup.report.config.aop.Monitor; import cn.quantgroup.report.config.aop.Monitor;
import cn.quantgroup.report.config.aop.MonitorType; import cn.quantgroup.report.config.aop.MonitorType;
import cn.quantgroup.report.domain.baihang.*; import cn.quantgroup.report.domain.baihang.*;
import cn.quantgroup.report.domain.master.TransactionLogPO;
import cn.quantgroup.report.mapper.baihang.LoanInfoMapper; import cn.quantgroup.report.mapper.baihang.LoanInfoMapper;
import cn.quantgroup.report.mapper.master.ApplyLoanInfoDbMapper; import cn.quantgroup.report.mapper.master.ApplyLoanInfoDbMapper;
import cn.quantgroup.report.mapper.master.LoanInfoDbMapper; import cn.quantgroup.report.mapper.master.LoanInfoDbMapper;
...@@ -14,7 +13,6 @@ import cn.quantgroup.report.response.GlobalResponse; ...@@ -14,7 +13,6 @@ 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.service.baihang.util.TuoMinUtils;
import cn.quantgroup.report.utils.ReadOrWriteTxt; import cn.quantgroup.report.utils.ReadOrWriteTxt;
import cn.quantgroup.report.utils.StringUtil;
import cn.quantgroup.report.utils.commonutil.AesCrypto; import cn.quantgroup.report.utils.commonutil.AesCrypto;
import cn.quantgroup.report.utils.commonutil.Base64; import cn.quantgroup.report.utils.commonutil.Base64;
import cn.quantgroup.report.utils.commonutil.MD5Util; import cn.quantgroup.report.utils.commonutil.MD5Util;
...@@ -30,13 +28,13 @@ import org.apache.commons.io.FileUtils; ...@@ -30,13 +28,13 @@ import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.*; import java.io.*;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
...@@ -69,6 +67,8 @@ public class ManualToolService implements CommonSuperService { ...@@ -69,6 +67,8 @@ public class ManualToolService implements CommonSuperService {
@Autowired @Autowired
public LoanInfoDbMapper loanInfoDbMapper; public LoanInfoDbMapper loanInfoDbMapper;
@Autowired
private RedisTemplate<String,String> redisTemplate;
...@@ -90,7 +90,8 @@ public class ManualToolService implements CommonSuperService { ...@@ -90,7 +90,8 @@ public class ManualToolService implements CommonSuperService {
@Monitor({MonitorType.EXCEPTION, MonitorType.FEE, MonitorType.HIT, MonitorType.RESULT}) @Monitor({MonitorType.EXCEPTION, MonitorType.FEE, MonitorType.HIT, MonitorType.RESULT})
@DistributedLock @DistributedLock
public GlobalResponse sendBaiHangData(String p1, String p2, String p3, String p4, String p5, String secretKey, String isSend,String errorCode, String isProduct, String sendIncludeType) { public Map<String,String> sendBaiHangData(String p1, String p2, String p3, String p4, String p5, String secretKey, String isSend,String errorCode, String isProduct, String sendIncludeType) {
Map<String,String> resultMap = new HashMap<>();
StringBuffer resultMsg = new StringBuffer(); StringBuffer resultMsg = new StringBuffer();
log.info("ManualToolService.sendBaiHangData Start>>>>>>"); log.info("ManualToolService.sendBaiHangData Start>>>>>>");
String base_path = "/home/quant_group/baihang-report/data"; String base_path = "/home/quant_group/baihang-report/data";
...@@ -105,13 +106,16 @@ public class ManualToolService implements CommonSuperService { ...@@ -105,13 +106,16 @@ public class ManualToolService implements CommonSuperService {
String D3_url = "/manual/buquan/mainRepaymentLoanInfo"; String D3_url = "/manual/buquan/mainRepaymentLoanInfo";
if (StringUtils.isBlank(RSA_PRIVATEKEY)) { if (StringUtils.isBlank(RSA_PRIVATEKEY)) {
return new GlobalResponse("1012", "参数错误"); resultMap.put("error","参数错误1");
return resultMap;
} }
if (StringUtils.isBlank(secretKey)) { if (StringUtils.isBlank(secretKey)) {
return new GlobalResponse("1012", "参数错误"); resultMap.put("error","参数错误2");
return resultMap;
} }
if (StringUtils.isAnyBlank(p1, p2, p3)) { if (StringUtils.isAnyBlank(p1, p2, p3)) {
return new GlobalResponse("1012", "参数错误"); resultMap.put("error","参数错误3");
return resultMap;
} }
try { try {
...@@ -121,27 +125,32 @@ public class ManualToolService implements CommonSuperService { ...@@ -121,27 +125,32 @@ public class ManualToolService implements CommonSuperService {
//p1为127.0.0.1时p4必须是ip,且和172.21.10.8的MDd一致校验 //p1为127.0.0.1时p4必须是ip,且和172.21.10.8的MDd一致校验
p1 = AesCrypto.decrypt(Base64.decode(p1.trim()), aes_key).trim(); p1 = AesCrypto.decrypt(Base64.decode(p1.trim()), aes_key).trim();
if (!(MD5Util.verify48Md5(p1, P1_48MD5_01) || MD5Util.verify48Md5(p1, P1_48MD5_02))) { if (!(MD5Util.verify48Md5(p1, P1_48MD5_01) || MD5Util.verify48Md5(p1, P1_48MD5_02))) {
return new GlobalResponse("1012", "参数错误"); resultMap.put("error","参数错误4");
return resultMap;
} }
p2 = AesCrypto.decrypt(Base64.decode(p2.trim()), aes_key).trim(); p2 = AesCrypto.decrypt(Base64.decode(p2.trim()), aes_key).trim();
if (!MD5Util.verify48Md5(p2, P2_48MD5)) { if (!MD5Util.verify48Md5(p2, P2_48MD5)) {
return new GlobalResponse("1012", "参数错误"); resultMap.put("error","参数错误5");
return resultMap;
} }
p3 = AesCrypto.decrypt(Base64.decode(p3.trim()), aes_key).trim(); p3 = AesCrypto.decrypt(Base64.decode(p3.trim()), aes_key).trim();
if (!MD5Util.verify48Md5(p3, P3_48MD5)) { if (!MD5Util.verify48Md5(p3, P3_48MD5)) {
return new GlobalResponse("1012", "参数错误"); resultMap.put("error","参数错误6");
return resultMap;
} }
//不是127.0.0.1时,p4不能为空 //不是127.0.0.1时,p4不能为空
//if (MD5Util.verify48Md5(p1, P1_48MD5_01)) { //if (MD5Util.verify48Md5(p1, P1_48MD5_01)) {
if (StringUtils.isBlank(p4)) { if (StringUtils.isBlank(p4)) {
return new GlobalResponse("1012", "参数错误"); resultMap.put("error","参数错误7");
return resultMap;
} else { } else {
p4 = AesCrypto.decrypt(Base64.decode(p4.trim()), aes_key).trim(); p4 = AesCrypto.decrypt(Base64.decode(p4.trim()), aes_key).trim();
} }
//} //}
} catch (Exception e) { } catch (Exception e) {
log.error("参数解析错误."); log.error("参数解析错误!", e);
return new GlobalResponse("1012", "参数错误"); resultMap.put("error","参数错误8");
return resultMap;
} }
if (StringUtils.isEmpty(p5)) { if (StringUtils.isEmpty(p5)) {
...@@ -191,7 +200,6 @@ public class ManualToolService implements CommonSuperService { ...@@ -191,7 +200,6 @@ public class ManualToolService implements CommonSuperService {
JSONArray jsonArray = JSONArray.parseArray(jsaonResult); JSONArray jsonArray = JSONArray.parseArray(jsaonResult);
resultMsg.append("getReqIdByRemoteLog size=" + (jsonArray!=null ? jsonArray.size() : "null") ); resultMsg.append("getReqIdByRemoteLog size=" + (jsonArray!=null ? jsonArray.size() : "null") );
resultMsg.append("|");
for (int i = 0; i < jsonArray.size(); i++) { for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i); JSONObject jsonObj = jsonArray.getJSONObject(i);
boolean flag = false; boolean flag = false;
...@@ -208,14 +216,14 @@ public class ManualToolService implements CommonSuperService { ...@@ -208,14 +216,14 @@ public class ManualToolService implements CommonSuperService {
log.error("deal with reqIdByRemoteLog error!",e); log.error("deal with reqIdByRemoteLog error!",e);
}finally { }finally {
if(!flag){ if(!flag){
resultMsg.append("\n##OTHER ERRORCODE:" + jsonObj.toJSONString()+"##"); resultMsg.append("|##OTHER ERRORCODE:" + jsonObj.toJSONString()+"##");
log.info("ManualToolService OTHER ERRORCODE:" + jsonObj.toJSONString()); log.info("ManualToolService OTHER ERRORCODE:" + jsonObj.toJSONString());
} }
} }
} }
resultMsg.append("\n|reqIDList size=" + reqIDList.size() ); resultMsg.append("|reqIDList size=" + reqIDList.size() );
if (reqIDList.size() > 0) {//还款D3 if (reqIDList.size() > 0) { //还款D3
String[] recordIdArray = reqIDList.toArray(new String[reqIDList.size()]); String[] recordIdArray = reqIDList.toArray(new String[reqIDList.size()]);
log.info("RepaymentLoanInfoDbMapper getReqIdByRemoteLog reqID to D3:" + JSON.toJSONString(recordIdArray)); log.info("RepaymentLoanInfoDbMapper getReqIdByRemoteLog reqID to D3:" + JSON.toJSONString(recordIdArray));
List<RepaymentLoanInfoLog> tmpLogList = repaymentLoanInfoDbMapper.findByD3RecordId(recordIdArray); List<RepaymentLoanInfoLog> tmpLogList = repaymentLoanInfoDbMapper.findByD3RecordId(recordIdArray);
...@@ -253,7 +261,7 @@ public class ManualToolService implements CommonSuperService { ...@@ -253,7 +261,7 @@ public class ManualToolService implements CommonSuperService {
} }
if (loanIdList.size() > 0) {//放款D2 及 申请A1 if (loanIdList.size() > 0) { //放款D2 及 申请A1
List<LoanInfoZhuDai> loanInfoVoList = new ArrayList<LoanInfoZhuDai>(); List<LoanInfoZhuDai> loanInfoVoList = new ArrayList<LoanInfoZhuDai>();
String[] orderNoArray = loanIdList.toArray(new String[loanIdList.size()]); String[] orderNoArray = loanIdList.toArray(new String[loanIdList.size()]);
...@@ -325,6 +333,8 @@ public class ManualToolService implements CommonSuperService { ...@@ -325,6 +333,8 @@ public class ManualToolService implements CommonSuperService {
resultMsg.append("|"); resultMsg.append("|");
resultMsg.append("write A1 end.(local By shell)"); resultMsg.append("write A1 end.(local By shell)");
} }
resultMap.put("json_sq_A1", "true");
//掉A1手动报送接口 //掉A1手动报送接口
if (httpSend) { if (httpSend) {
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = new HashMap<String, Object>();
...@@ -354,6 +364,8 @@ public class ManualToolService implements CommonSuperService { ...@@ -354,6 +364,8 @@ public class ManualToolService implements CommonSuperService {
resultMsg.append("|"); resultMsg.append("|");
resultMsg.append("write D2 end.(local By shell)"); resultMsg.append("write D2 end.(local By shell)");
} }
resultMap.put("json_fk_D2", "true");
//掉D2手动报送接口 //掉D2手动报送接口
if (httpSend) { if (httpSend) {
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = new HashMap<String, Object>();
...@@ -383,6 +395,8 @@ public class ManualToolService implements CommonSuperService { ...@@ -383,6 +395,8 @@ public class ManualToolService implements CommonSuperService {
resultMsg.append("|"); resultMsg.append("|");
resultMsg.append("write D3 end.(local By shell)"); resultMsg.append("write D3 end.(local By shell)");
} }
resultMap.put("json_hk_D3", "true");
//掉D3手动报送接口 //掉D3手动报送接口
if (httpSend) { if (httpSend) {
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = new HashMap<String, Object>();
...@@ -397,8 +411,6 @@ public class ManualToolService implements CommonSuperService { ...@@ -397,8 +411,6 @@ public class ManualToolService implements CommonSuperService {
resultMsg.append("还款D3 json_hk_D3 isEmpty."); resultMsg.append("还款D3 json_hk_D3 isEmpty.");
} }
//退出登录 //退出登录
List<String> cmdList = new ArrayList<String>(); List<String> cmdList = new ArrayList<String>();
cmdList.add("echo '++CMD LAST++' \n\r"); cmdList.add("echo '++CMD LAST++' \n\r");
...@@ -406,15 +418,43 @@ public class ManualToolService implements CommonSuperService { ...@@ -406,15 +418,43 @@ public class ManualToolService implements CommonSuperService {
cmdList.add("exit \n\r"); cmdList.add("exit \n\r");
executeCommand.execute(cmdList, false); executeCommand.execute(cmdList, false);
return GlobalResponse.generate(resultMsg); resultMap.put("success", resultMsg.toString());
return resultMap;
} else { } else {
log.info("RepaymentLoanInfoDbMapper.getReqIdByRemoteLog redult isEmpty."); log.info("RepaymentLoanInfoDbMapper.getReqIdByRemoteLog redult isEmpty.");
return GlobalResponse.generate("百行征信手动报送,获取日志为空"); resultMap.put("success","百行征信手动报送,获取日志为空");
ArrayList<String> fileNameList = new ArrayList<>();
String logPath = base_path + "/" +p5;
try{
getAllFileName("D:\\JavaTeam\\test", fileNameList);
}catch (Exception e){
log.error("获取报送日志文件夹下文件异常, path: {} ", e);
}
boolean have_logFile = false;
if(fileNameList!=null && fileNameList.size()>0){
for (String name : fileNameList) {
if(StringUtils.isNotEmpty(name) && name.endsWith(".log")
&& !name.endsWith("_logicerror.log") && !name.endsWith("_inputerror.log")){
have_logFile = true;
} }
}
}
if(!have_logFile){
resultMap.put("alarm","反馈日志主文件不存在,请注意确认");
}
return resultMap;
}
} }
} catch (Exception e) { } catch (Exception e) {
log.error("ManualToolService.sendBaiHangData Error,", e); log.error("ManualToolService.sendBaiHangData Error,", e);
return new GlobalResponse("1001", "百行征信手动报送异常," + e.getMessage()); resultMap.put("error", "百行征信手动报送异常"+e.getMessage());
return resultMap;
} finally { } finally {
if (executeCommand != null) { if (executeCommand != null) {
executeCommand.ioclose(); executeCommand.ioclose();
...@@ -428,7 +468,8 @@ public class ManualToolService implements CommonSuperService { ...@@ -428,7 +468,8 @@ public class ManualToolService implements CommonSuperService {
} }
} }
log.info("ManualToolService.sendBaiHangData All END<<<<<<"); log.info("ManualToolService.sendBaiHangData All END<<<<<<");
return new GlobalResponse("1000", "百行征信手动报送失败"); resultMap.put("error","百行征信手动报送失败");
return resultMap;
} }
/** /**
...@@ -2126,6 +2167,39 @@ public class ManualToolService implements CommonSuperService { ...@@ -2126,6 +2167,39 @@ public class ManualToolService implements CommonSuperService {
} }
public void deleteRedisKey(String key1, String key2, String key3) {
String full_rediskey = "";
if (StringUtils.isNotEmpty(key1)) {
full_rediskey += key1;
}
if (StringUtils.isNotEmpty(key2)) {
full_rediskey += key2;
}
if (StringUtils.isNotEmpty(key3)) {
full_rediskey += key3;
}
redisTemplate.delete(full_rediskey);
log.info("删除RedisKey成功, key1: {} , key2: {} , key3: {} , full_rediskey: {} ", key1, key2, key3, full_rediskey);
}
public String getRedisVal(String key) {
Map<String,Object> map = new HashMap<>();
map.put("key",key);
if(StringUtils.isBlank(key)){
return JSONObject.toJSONString(map);
}
try{
String value = redisTemplate.opsForValue().get(key);
Long expire = redisTemplate.getExpire(key);
map.put("value",value);
map.put("expire", expire);
}catch (Exception e){
log.error("获取redis里值异常, key: {} ", key, e);
}
return map.toString();
}
private static void build_newkey_oldKey() { private static void build_newkey_oldKey() {
try{ try{
...@@ -3232,6 +3306,78 @@ public class ManualToolService implements CommonSuperService { ...@@ -3232,6 +3306,78 @@ public class ManualToolService implements CommonSuperService {
} }
private static void d3_build_20200309() {
//String sql = "select * from repayment_loan_info_zhudai r where r.created_at >= DATE_FORMAT('2020-03-09 00:04:00','%Y-%m-%d %H:%i:%s') and r.loan_id='##loan_id##' and r.term_no=##term_no## UNION All ";
String sql = "select * from repayment_loan_info r where r.created_at >= DATE_FORMAT('2020-03-09 00:04:00','%Y-%m-%d %H:%i:%s') and r.loan_id='##loan_id##' and r.term_no=##term_no## UNION All ";
try{
//String path = "C:\\Users\\Administrator\\Desktop\\百行漏报2020-03-09\\助贷\\D3_20200308_20200309_huankuan.txt";
String path = "C:\\Users\\Administrator\\Desktop\\百行漏报2020-03-09\\广达\\还款D3_896.txt";
List<String> d3JsonList_hk = ReadOrWriteTxt.readTxtList(path);
log.info("d3_build_manua() files d3JsonList_hk size="+d3JsonList_hk.size());
for(int i=0; i<d3JsonList_hk.size(); i++){
String jsonStr = d3JsonList_hk.get(i).trim();
if(jsonStr.length()<30){
continue;
}
//log.info("ST:"+i);
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
System.out.println(sql.replace("##loan_id##",jsonObject.getString("loanId")).replace("##term_no##",jsonObject.getString("termNo")));
}
log.info("d3_build_manua() All D3还款 LOG:保存记录结束");
}catch (Exception e){
log.error("d3_build_manua()处理还款记录异常!", e);
}
}
private static void d3_build_20200309_ok() {
try{
String path2 = "C:\\Users\\Administrator\\Desktop\\百行漏报2020-03-09\\广达\\误报逾期_403.txt";
List<String> jsonList_1 = ReadOrWriteTxt.readTxtList(path2);
HashMap<String,String> map_recordId = new HashMap<>();
for(String str : jsonList_1){
String[] arry = str.trim().split("[|]");
map_recordId.put(arry[1]+"|"+arry[2], arry[0]);
}
log.info("d3_build_manua() read files jsonList_1 size:{} , map_recordId siez:{} ", jsonList_1.size(), map_recordId.size());
String path = "C:\\Users\\Administrator\\Desktop\\百行漏报2020-03-09\\广达\\还款D3_896.txt";
List<String> d3JsonList_hk = ReadOrWriteTxt.readTxtList(path);
log.info("d3_build_manua() files d3JsonList_hk size="+d3JsonList_hk.size());
for(int i=0; i<d3JsonList_hk.size(); i++){
String jsonStr = d3JsonList_hk.get(i).trim();
if(jsonStr.length()<30){
continue;
}
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
String key = jsonObject.getString("loanId") + "|" + jsonObject.getString("termNo");
if(map_recordId.containsKey(key)){
jsonObject.put("recordId",map_recordId.get(key));
jsonObject.put("opCode","M");
FileUtils.write(new File("C:\\Users\\Administrator\\Desktop\\百行漏报2020-03-09\\广达\\D3_M.txt"), JSON.toJSONString(jsonObject)+"\n", "UTF-8", true);
map_recordId.remove(key);
}else{
jsonObject.put("recordId", UUID.randomUUID().toString().replaceAll("-", ""));
jsonObject.put("opCode","A");
FileUtils.write(new File("C:\\Users\\Administrator\\Desktop\\百行漏报2020-03-09\\广达\\D3_A.txt"), JSON.toJSONString(jsonObject)+"\n", "UTF-8", true);
}
}
log.info("d3_build_manua() All D3还款 LOG:保存记录结束");
}catch (Exception e){
log.error("d3_build_manua()处理还款记录异常!", e);
}
}
public static void main33(String[] args) { public static void main33(String[] args) {
// List<String> lineList = ReadOrWriteTxt.readTxtList("D:\\用户目录\\Downloads\\D2_M_01.txt"); // List<String> lineList = ReadOrWriteTxt.readTxtList("D:\\用户目录\\Downloads\\D2_M_01.txt");
...@@ -3318,11 +3464,52 @@ public class ManualToolService implements CommonSuperService { ...@@ -3318,11 +3464,52 @@ public class ManualToolService implements CommonSuperService {
//d3_build_manua(); //d3_build_manua();
//checkTGd3_build(); //checkTGd3_build();
application_build(); //application_build();
//check_application(); //check_application();
}
/**
* 获取某个文件夹下的所有文件
*
* @param fileNameList 存放文件名称的list
* @param path 文件夹的路径
* @return
*/
private static void getAllFileName(String path, ArrayList<String> fileNameList) {
boolean flag = false;
File file = new File(path);
File[] tempList = file.listFiles();
if(tempList==null || tempList.length<=0){
return;
}
for (int i = 0; i < tempList.length; i++) {
if (tempList[i].isFile()) {
fileNameList.add(tempList[i].getName());
}
if (tempList[i].isDirectory()) {
getAllFileName(tempList[i].getAbsolutePath(),fileNameList);
}
}
return;
} }
public static void main(String[] args) {
//d3_build_20200309();
//d3_build_20200309_ok();
ArrayList<String> fileNameList = new ArrayList<>();
getAllFileName("D:\\JavaTeam\\test", fileNameList);
for (String name: fileNameList) {
System.out.println(name);
}
}
......
...@@ -825,5 +825,36 @@ public class HttpRequestUtil { ...@@ -825,5 +825,36 @@ public class HttpRequestUtil {
} }
} }
public static String doPostTool(String apiUrl, Map<String, Object> params) {
String result = "";
httpClient = getHttpClient();
HttpPost httpPost = new HttpPost(apiUrl);
try {
List<NameValuePair> pairList = new ArrayList<>(params.size());
for (Map.Entry<String, Object> entry : params.entrySet()) {
NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry
.getValue().toString());
pairList.add(pair);
}
httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8")));
HttpResponse response = httpClient.execute(httpPost);
//int statusCode = response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
result = EntityUtils.toString(entity);
EntityUtils.consume(entity);
} catch (IOException e) {
log.error("doPostTool请求apiUrl: " + apiUrl + "请求失败", e);
throw new QGException(QGExceptionType.COMMON_THIRD_PART_CALL_EXCEPTION, e.toString() + ";url:" + apiUrl);
} finally {
httpPost.releaseConnection();
}
return result;
}
} }
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