Commit 224afef1 authored by 郝彦辉's avatar 郝彦辉

UserOcr同步增加定时任务

parent 3b220689
......@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.sql.SQLException;
import java.util.Map;
@Slf4j
......@@ -49,7 +50,11 @@ public class ManualToolController {
@RequestMapping("/synGrowingUser")
public String synGrowingUser(String startnyr, String endnyr) {
try {
userOcrService.synGrowingUserOcr(startnyr, endnyr);
} catch (Exception e) {
log.error("执行方法synGrowingUser异常,", e);
}
return "synGrowingUser方法调度成功";
}
......@@ -68,7 +73,11 @@ public class ManualToolController {
@RequestMapping("/synValidDateEndUserOcr")
public String synValidDateEndUserOcr() {
try {
userOcrService.synValidDateEndUserOcr();
} catch (Exception e) {
log.error("执行方法synValidDateEndUserOcr异常,", e);
}
return "synValidDateEndUserOcr方法调度成功";
}
......
package cn.quantgroup.report.job;
import cn.quantgroup.report.service.baihang.constant.Constant;
import cn.quantgroup.report.utils.dingtalk.DingTalk;
import com.google.common.base.Stopwatch;
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.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.TimeUnit;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 量化派助贷模式(非循环贷) -
* (贷款申请/放款/还款(逾期)三类实时批量数据)-To百行报送<br>
* 每日凌晨5点报送 <br>
* 作者:yanhui.Hao <br>
* 时间:2019.10.25 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Component
public class QuantGroupZhuDaiReportToBaiHang {
private static final Logger log = LoggerFactory.getLogger(QuantGroupZhuDaiReportToBaiHang.class);
@Autowired
private RedisTemplate<String,String> redisTemplate;
/* @Autowired
private BaiHangZhuDaiService baiHangZhuDaiService;
*/
@Autowired
private DingTalk dingTalk;
@Async
//@Scheduled(cron = "0 0 05 * * ?")
/* public void startZhuDaiReport(){
if(increment()){
redisTemplate.expire(Constant.QG_ZHU_DAI_REPORT_LOCK_KEY, 10, TimeUnit.SECONDS);
Stopwatch stopwatch = Stopwatch.createStarted();
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);
String msg_A1 = baiHangZhuDaiService.sendZhuDaiApplyToBaiHang(startnyr,endnyr); //生产 助贷-贷款申请 报送T+1 暂时先不报送C1 因为百行还没有开放查询接口
dingTalk.talk("Info","报送"+startnyr+"申请A1结束",msg_A1);
if(msg_A1.indexOf("[false]")!=-1){
dingTalk.talk_ToUser("申请A1报送失败", "报送"+startnyr+"申请A1有部分失败,请尽快手动处理!");
}
String msg_D2 = baiHangZhuDaiService.sendZhuDaiLoanToBaiHang(startnyr,endnyr); //生产 助贷-放款信息 报送T+1
dingTalk.talk("Info","报送"+startnyr+"放款D2结束",msg_D2);
if(msg_D2.indexOf("[false]")!=-1){
dingTalk.talk_ToUser("放款D2报送失败", "报送"+startnyr+"放款D2有部分失败,请尽快手动处理!");
}
String msg_D3 =baiHangZhuDaiService.sendZhuDaiRepaymentToBaiHang(startnyr,endnyr); //生产 助贷-还款&逾期信息 报送T+1
dingTalk.talk("Info","报送"+startnyr+"还款D3结束",msg_D3);
if(msg_D3.indexOf("[false]")!=-1){
dingTalk.talk_ToUser("还款D3报送失败", "报送"+startnyr+"还款D3有部分失败,请尽快手动处理!");
}
log.info("量化派-助贷模式报送贷款信息结束, newTime: {}, 耗时: {} , msg: {} ", LocalDateTime.now(), stopwatch.stop().elapsed(TimeUnit.MILLISECONDS), (msg_A1 + msg_D2 + msg_D3));
}catch (Exception e){
log.error("量化派-助贷模式报送贷款信息异常, newTime: {}, 耗时: {} ", LocalDateTime.now(), stopwatch.stop().elapsed(TimeUnit.MILLISECONDS), e);
dingTalk.talk("Error","报送服务内部异常", e);
dingTalk.talk_ToUser("数据报送异常", "报送服务内部异常,请尽快手动处理!");
}
}else{
log.error("量化派-助贷模式报送贷款信息失败, 原因是同步历史表数据返回false, 请尽快人工处理, newTime: {} ", LocalDateTime.now());
}
}
}*/
public Boolean increment(){
Long increment = redisTemplate.opsForValue().increment(Constant.QG_ZHU_DAI_REPORT_LOCK_KEY, 1);
return increment <= 1;
}
}
package cn.quantgroup.report.job;
import cn.quantgroup.report.service.baihang.constant.Constant;
import cn.quantgroup.report.service.renhang.UserOcrService;
import cn.quantgroup.report.utils.dingtalk.DingTalk;
import com.google.common.base.Stopwatch;
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.concurrent.TimeUnit;
/**
* -----------------------------------------------------------------------------<br>
* 类描述: 同步广达人行报送-新增用户ocr信息 <br>
* 创建人: yanhui.Hao <br>
* 创建时间: 2020.06.16 10:39 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Component
public class SynUserOcrJob {
private static final Logger log = LoggerFactory.getLogger(SynUserOcrJob.class);
@Autowired
private RedisTemplate<String,String> redisTemplate;
@Autowired
private UserOcrService userOcrService;
@Autowired
private DingTalk dingTalk;
/**
* -----------------------------------------------------------------------------<br>
* 描 述: 其他7张表同步是DBA同步的,大概每天2点开始,4点结束;
* 该同步ocr的身份证有效期就从4:30开始的,大概5点前肯定能同步结束。
* 信加这边每天提取数据,建议每天5点以后开始 <br>
* 创建人: yanhui.Hao <br>
* 创建时间: 2020.06.16 10:37 <br>
* 最后修改人: <br>
* 最后修改时间: 2020.06.16 10:37 <br>
* 入参说明: <br>
* 出参说明: <br>
* -----------------------------------------------------------------------------
*/
@Async
@Scheduled(cron = "0 30 04 * * ?")
public void startSynUserOcr() {
if (increment()) {
redisTemplate.expire(Constant.QG_RENHANG_REPORT_SYN_USEROCR_LOCK_KEY, 10, TimeUnit.SECONDS);
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("同步广达人行报送用户ocr信息开始, newTime: {} , startnyr: {} , endnyr: {} ", LocalDateTime.now(), startnyr, endnyr);
try {
String msg_growing = userOcrService.synGrowingUserOcr(startnyr, endnyr);
log.info("广达人行报送-同步新增用户ocr信息结束, result: {} ", msg_growing);
} catch (Exception e) {
log.error("广达人行报送-同步新增用户ocr信息异常, newTime: {}, 耗时: {} ", LocalDateTime.now(), stopwatch.stop().elapsed(TimeUnit.MILLISECONDS), e);
dingTalk.talk("Error", "广达人行报送-同步新增用户ocr信息异常", e);
dingTalk.talk_ToUser("数据同步异常", "广达人行报送-同步新增用户ocr信息异常,请尽快手动处理!");
}
try {
String msg_validDateEnd = userOcrService.synValidDateEndUserOcr();
log.info("广达人行报送-同步ocr身份证有效期过期用户信息结束, result: {} ", msg_validDateEnd);
} catch (Exception e) {
log.error("广达人行报送-同步ocr身份证有效期过期用户信息异常, newTime: {}, 耗时: {} ", LocalDateTime.now(), stopwatch.stop().elapsed(TimeUnit.MILLISECONDS), e);
dingTalk.talk("Error", "广达人行报送-同步ocr身份证有效期过期用户信息异常", e);
dingTalk.talk_ToUser("数据同步异常", "广达人行报送-同步ocr身份证有效期过期用户信息异常,请尽快手动处理!");
}
}
}
public Boolean increment(){
Long increment = redisTemplate.opsForValue().increment(Constant.QG_RENHANG_REPORT_SYN_USEROCR_LOCK_KEY, 1);
return increment <= 1;
}
}
......@@ -2,10 +2,9 @@ package cn.quantgroup.report.service.baihang.constant;
public class Constant {
/** 量化派助贷模式-(贷款申请/放款/还款(逾期)三类实时数据)-To百行报送 */
public static final String QG_ZHU_DAI_REPORT_LOCK_KEY = "QG_ZHU_DAI_REPORT_LOCK_KEY";
/** 同步广达人行报送用户ocr信息的锁 */
public static final String QG_RENHANG_REPORT_SYN_USEROCR_LOCK_KEY = "QG_RENHANG_REPORT_SYN_USEROCR_LOCK_KEY";
public static final String XYQB_HISTORY_DAI_REPORT_LOCK_KEY = "XYQB_HISTORY_DAI_REPORT_LOCK_KEY";
}
......@@ -113,67 +113,4 @@ public class TuoMinUtils {
return false;
}
public static void main(String[] args) {
//System.out.println(random_name("郝彦辉"));
// System.out.println(random_idcard("622726198911100236"));
// System.out.println(random_mobile("18010105506"));
/* String readAddr = "E:\\桌面_工作\\数据备份\\201911061315贷款申请关联用户.json";
String writeAddr = "E:\\桌面_工作\\数据备份\\201911061315用户脱敏.txt";
try {
long log_stUtc = System.currentTimeMillis();
String sourceStr = FileUtils.readFileToString(new File(readAddr), "utf-8");
JSONObject sourceJson = JSON.parseObject(sourceStr);
JSONArray recordsJsonArr = sourceJson.getJSONArray("RECORDS");
System.out.println("总条数:"+recordsJsonArr.size());
for (int i = 0; i < recordsJsonArr.size(); i++) {
System.out.println("第:"+i);
JSONObject jsonObj = recordsJsonArr.getJSONObject(i);
try {
String name = jsonObj.getString("name");
String pid = jsonObj.getString("pid");
String mobile = jsonObj.getString("mobile");
StringBuffer out = new StringBuffer();
out.append(pid);
out.append("=");
out.append(random_idcard(pid));
out.append(",");
out.append(random_mobile(mobile));
out.append(",");
out.append(random_name(name));
out.append("\n");
FileUtils.write(new File(writeAddr), out , "utf-8", true);
}catch (Exception e){
System.err.println("Error 第:"+i+",pid="+jsonObj.getString("pid"));
}
}
System.out.println("脱敏结束, 耗时: "+((System.currentTimeMillis()-log_stUtc)/1000)+".s");
} catch (IOException e) {
e.printStackTrace();
}
*/
String email = "630226318@QQ.COM";
//String email = "294603191@qq.c0m";
//String email = "139@139.com13902502392";
//System.out.println(checkEmail(email));
//System.out.println(isEmail(email));
System.out.println(checkEmail("630226318@qq.com"));
System.out.println(checkEmail("630226318@QQ.C OM"));
System.out.println(checkEmail("630226318@QQ.COM"));
System.out.println(checkEmail("139@139.com13902502392"));
System.out.println(checkEmail("294603191@qq.c0m"));
}
}
......@@ -27,7 +27,7 @@ public class RenHangBatchExecuteJdbc {
public static void batchInsertExecute(List<UserOcrVo> ocrInfoList){
public static void batchInsertExecute(List<UserOcrVo> ocrInfoList) throws SQLException {
int commit_count = 1000;
String insert_sql = "INSERT INTO `user_ocr` (`uuid`, `address`, `birthday`, `citizen_id`, `gender`, `name`, `nation`, `agency`, `valid_date_begin`, `valid_date_end`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
Connection conn = null;
......@@ -69,14 +69,15 @@ public class RenHangBatchExecuteJdbc {
log.info("所有保存提交结束");
}catch(Exception e){
}catch(SQLException e){
log.error("执行batchInsertExecute异常, SQL:{} , count: last ", insert_sql, e);
throw e;
}finally {
close(conn, ps,null);
}
}
public static void batchUpdateExecute(List<UserOcrVo> ocrInfoList){
public static void batchUpdateExecute(List<UserOcrVo> ocrInfoList) throws SQLException {
int commit_count = 1000;
String update_sql = "update user_ocr set valid_date_begin=?, valid_date_end=?, updated_at=? where uuid=? ";
Connection conn = null;
......@@ -107,8 +108,9 @@ public class RenHangBatchExecuteJdbc {
}
ps.executeBatch();
conn.commit();
}catch(Exception e){
}catch(SQLException e){
log.error("执行batchUpdateExecute异常, SQL:{} , count: last ", update_sql, e);
throw e;
}finally {
close(conn, ps,null);
}
......
......@@ -21,9 +21,9 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
......@@ -130,12 +130,11 @@ public class UserOcrService {
* 出参说明: <br>
* -----------------------------------------------------------------------------
*/
@Async
public String synGrowingUserOcr(String startnyr, String endnyr) {
//@Async
public String synGrowingUserOcr(String startnyr, String endnyr) throws Exception {
try {
long start1 = System.currentTimeMillis();
List<User> growUsersList = userMapper.queryGrowingUser();
log.info("查询DB新增用户结束, 大小: {} , 耗时: {} ", growUsersList!=null?growUsersList.size():0, (System.currentTimeMillis()-start1));
long start2 = System.currentTimeMillis();
......@@ -147,7 +146,8 @@ public class UserOcrService {
}
}catch (Exception e){
log.error("执行同步增量ocr信息异常,", e);
return "执行异常";
throw e;
//return "执行异常";
}
return "执行结束";
......@@ -155,7 +155,7 @@ public class UserOcrService {
@Async
//@Async
public String synUserOcrByUuids(String uuids) {
try {
long start1 = System.currentTimeMillis();
......@@ -185,8 +185,8 @@ public class UserOcrService {
}
@Async
public String synValidDateEndUserOcr() {
//@Async
public String synValidDateEndUserOcr() throws Exception {
try {
long start1 = System.currentTimeMillis();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
......@@ -204,9 +204,9 @@ public class UserOcrService {
}
}catch (Exception e){
log.error("执行同步增量ocr信息异常,", e);
return "执行异常";
throw e;
//return "执行异常";
}
return "执行结束";
}
......
......@@ -14,7 +14,7 @@ import java.util.Map;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 量化派2百行钉钉提醒 <br>
* 描述: 人行广达报送同步数据钉钉提醒 <br>
* 作者:yanhui.Hao <br>
* 时间:2020.01.06 <br>
* 授权: (C) Copyright (c) 2017 <br>
......@@ -27,8 +27,8 @@ public class DingTalk {
@Autowired
private IHttpService iHttpService;
public static final String talkUri = "https://alertserv-dataservice.quantgroup.cn/common/alert/dingtalk";
//量化派2百行
public static final String webHook = "https://oapi.dingtalk.com/robot/send?access_token=ef3cafb299ec6cb7442b2795d4d0c48e940756f7f267cfa895dbb419adb00128";
//人行广达报送同步数据
public static final String webHook = "https://oapi.dingtalk.com/robot/send?access_token=c0196f129b027c4d0e37f0783a0b575a27155a6d9408de0801ca0bb7312894b2";
@Async
......@@ -37,7 +37,7 @@ public class DingTalk {
Map<String, String> param = new HashMap<>();
param.put("webhook", webHook);
param.put("alarmLevel", alarmLevel);//"Warn"
param.put("msgTitle", "量化派2百行:" + msgTitle);
param.put("msgTitle", "人行广达报送同步数据:" + msgTitle);
param.put("msgContent", msgContent);
// param.put("toUsers", "15542661376,18612632691");
String resp = iHttpService.post(talkUri, param);
......@@ -58,7 +58,7 @@ public class DingTalk {
Map<String, String> param = new HashMap<>();
param.put("webhook", webHook);
param.put("alarmLevel", alarmLevel);//"Warn"
param.put("msgTitle", "量化派2百行:" + msgTitle);
param.put("msgTitle", "人行广达报送同步数据:" + msgTitle);
param.put("msgContent", sw.toString().length() > 500 ? sw.toString().substring(0, 499) : sw.toString());
// param.put("toUsers", "15542661376,18612632691");
String resp = iHttpService.post(talkUri, param);
......@@ -75,9 +75,9 @@ public class DingTalk {
Map<String, String> param = new HashMap<>();
param.put("webhook", webHook);
param.put("alarmLevel", "ERROE");//
param.put("msgTitle", "量化派2百行:"+msgTitle);
param.put("msgTitle", "人行广达报送同步数据:"+msgTitle);
param.put("msgContent", msgContent);
param.put("toUsers", "18010105506");
param.put("toUsers", "18631397041");
String resp = iHttpService.post(talkUri, param);
log.info("钉钉报警接口调用结束, resp: {} ", resp);
}catch (Exception e){
......@@ -90,7 +90,7 @@ public class DingTalk {
Map<String, String> param = new HashMap<>();
param.put("webhook", webHook);
param.put("alarmLevel", alarmLevel);//"Warn"
param.put("msgTitle", "量化派2百行:" + msgTitle);
param.put("msgTitle", "人行广达报送同步数据:" + msgTitle);
param.put("msgContent", exceptionToString(e));
// param.put("toUsers", "15542661376,18612632691");
String resp = iHttpService.post(talkUri, param);
......
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