添加定时任务

master
hansha 1 year ago
parent a7b446cda7
commit e624cfbad9

@ -169,7 +169,7 @@ public class Constants
/** /**
* 访 * 访
*/ */
public static final String[] JOB_WHITELIST_STR = { "com.da.quartz.task" }; public static final String[] JOB_WHITELIST_STR = { "com.da.quartz.task","com.da.dangan.timetask" };
/** /**
* *

@ -0,0 +1,347 @@
package com.da.dangan.timetask;
import cn.hutool.json.JSONObject;
import com.alibaba.fastjson2.JSONArray;
import com.da.common.utils.DictUtils;
import com.da.dangan.domain.*;
import com.da.dangan.domain.vo.*;
import com.da.dangan.service.*;
import com.da.dangan.util.CallThirdInterface;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
*
*
* @author ruoyi
*/
@Component("timeTask")
public class TimeTask
{
@Autowired
private IDaTaskService daTaskService;
@Autowired
private IDaPicturesRecardService daPicturesRecardService;
@Autowired
private IDaCzrkdjService daCzrkdjService;
@Autowired
private IDaBirthDjService daBirthDjService;
@Autowired
private IDaQyzService daQyzService;
@Autowired
private IDaZqzService daZqzService;
@Autowired
private IDaYtzmService daYtzmService;
@Autowired
private IDaZfnyhkcgService daZfnyhkcgService;
@Value("${ocr.url2}")
private String url2;
@Value("${ocr.url4}")
private String url4;
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@Transactional
public void daNoParams() throws Exception {
DaTask param = new DaTask();
param.setStatus("1"); //处理中
//查询所有未完成的任务
List<DaTask> daTasks = daTaskService.selectDaTaskList(param);
if(daTasks!=null&&daTasks.size()>0){
for(DaTask datask:daTasks){
//查看认识是否超时, 计算两个日期之间的差值(毫秒) 分钟-> / (1000 * 60)
long diff = (new Date().getTime()-datask.getUpdateTime().getTime())/(1000 * 60 );
String expired = DictUtils.getDictValue("task_time_out", "task_timeout");
if(diff> Long.parseLong(expired)){
datask.setStatus("3"); //设置状态任务超时
daTaskService.updateDaTask(datask);
continue;
}
//获取当前任务相关信息
String ywType = datask.getYwType();
Long muId = datask.getMuId();
String muPath = datask.getMuPath();
logger.info("--------开启任务:"+datask.getId()+"结果查询");
//调用第三方接口查看识别任务状态 已结束直接取结果,处理中跳过
String result = CallThirdInterface.callThirdInterfaceGetByTaskId(url2, datask.getId());
//! 解析JSON字符串,获取键对应的值
JSONObject jsonobject = new JSONObject(result);
String status = jsonobject.getStr("status");
// if(status!=null&&!status.trim().equals("")){
if(status.equals("1")){ //1处理中
continue;
}else if(status.equals("2")){ //识别任务已结束,获取并存储数据
String code = jsonobject.getStr("code");
Integer success = jsonobject.getInt("success");
Integer total = jsonobject.getInt("total");
//失败id
String failPicid = jsonobject.getStr("failPicid");
//获取失败的id集合
List<Long> failIds = JSONArray.parseArray(failPicid, Long.class);
//更新任务记录信息
datask.setStatus("2");//已结束
datask.setFailIds(StringUtils.join(failIds, ","));
//获取成功的图片ids 重传任务时 成功ids=alls-fails
List<Long> allpicIds = Stream.of(datask.getPicIds().split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
List<Long> successIds = allpicIds.stream().filter(item -> !failIds.contains(item)).collect(Collectors.toList());
datask.setSuccessIds(StringUtils.join(successIds, ","));
datask.setFailNum(failIds.size());
datask.setSuccessNum(allpicIds.size()-failIds.size());
datask.setResultStr(result);
daTaskService.updateDaTask(datask);
//如果code=0 识别失败 无需存储响应的合集信息 code=1 识别成功或者部分成功
if (code.equals("0")) {
} else {
//数据解析 根据业务类型存储识别后的信息
String datas = jsonobject.getStr("datas");
switch (ywType) {
case "option1": //常住人口登记表1
//break;
case "option2": //常住卡
// break;
case "option3": //常住人口登记表2
//break;
case "option9": //常住人口登记表3
//获取常住人口信息集合
List<CzrkDatas> czrkDatas = JSONArray.parseArray(datas, CzrkDatas.class);
for (CzrkDatas czrkData : czrkDatas) {
List<Long> picids = czrkData.getPicid();
String picIds = StringUtils.join(picids, ",");//逗号分割
//根据picIds查找对应的图片记录
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
List<String> picUrls = picRecards.stream()
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
String pictures = StringUtils.join(picUrls, ",");//逗号分割
List<DaCzrkdj> info = czrkData.getInfo();
if (info != null && info.size() > 0) {
for (DaCzrkdj daCzrkdj : info) {
//判断返回结果是否都是字符串 "无"
/*if(CallThirdInterface.allFieldsEqualTo(daCzrkdj,"无")){
continue;
}*/
daCzrkdj.setAllPicIds(picIds);
daCzrkdj.setAllPics(pictures);
daCzrkdj.setPicIds(picIds);
daCzrkdj.setPictures(pictures);
//其他字段存储
daCzrkdj.setYwType(ywType);
daCzrkdj.setMuId(muId);
daCzrkdj.setMuPath(muPath);
daCzrkdj.setAuditStatus("0");
daCzrkdj.setErrorCorrect("0");
daCzrkdj.setTaskId(datask.getId());
//daCzrkdj.setCreateBy();
daCzrkdjService.insertDaCzrkdj(daCzrkdj);
}
}
}
break;
case "option4":
//获取出生医学证明信息集合
List<CszmDatas> cszmDatas = JSONArray.parseArray(datas, CszmDatas.class);
for (CszmDatas cszmData : cszmDatas) {
List<Long> picids = cszmData.getPicid();
String picIds = StringUtils.join(picids, ",");//逗号分割
//根据picIds查找对应的图片记录
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
List<String> picUrls = picRecards.stream()
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
String pictures = StringUtils.join(picUrls, ",");//逗号分割
List<DaBirthDj> info = cszmData.getInfo();
if (info != null && info.size() > 0) {
for (DaBirthDj daBirthdj : info) {
//判断返回结果是否都是字符串 "无"
/*if(CallThirdInterface.allFieldsEqualTo(daBirthdj,"无")){
continue;
}*/
daBirthdj.setAllPicIds(picIds);
daBirthdj.setAllPics(pictures);
daBirthdj.setPicIds(picIds);
daBirthdj.setPictures(pictures);
//其他字段存储
daBirthdj.setTaskId(datask.getId());
daBirthdj.setYwType(ywType);
daBirthdj.setMuId(muId);
daBirthdj.setMuPath(muPath);
daBirthdj.setAuditStatus("0");
daBirthdj.setErrorCorrect("0");
daBirthDjService.insertDaBirthDj(daBirthdj);
}
}
}
break;
case "option5":
//获取迁移证信息集合
List<QyzDatas> qyzDatas = JSONArray.parseArray(datas, QyzDatas.class);
for (QyzDatas qyzData : qyzDatas) {
List<Long> picids = qyzData.getPicid();
String picIds = StringUtils.join(picids, ",");//逗号分割
//根据picIds查找对应的图片记录
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
List<String> picUrls = picRecards.stream()
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
String pictures = StringUtils.join(picUrls, ",");//逗号分割
List<DaQyz> info = qyzData.getInfo();
if (info != null && info.size() > 0) {
for (DaQyz qyz : info) {
//判断返回结果是否都是字符串 "无"
/*if(CallThirdInterface.allFieldsEqualTo(qyz,"无")){
continue;
}*/
qyz.setAllPicIds(picIds);
qyz.setAllPics(pictures);
qyz.setPicIds(picIds);
qyz.setPictures(pictures);
//其他字段存储
qyz.setYwType(ywType);
qyz.setMuId(muId);
qyz.setMuPath(muPath);
qyz.setAuditStatus("0");
qyz.setErrorCorrect("0");
qyz.setTaskId(datask.getId());
daQyzService.insertDaQyz(qyz);
}
}
}
break;
case "option6":
//获取一胎证明信息集合
List<YtzmDatas> ytzmDatas = JSONArray.parseArray(datas, YtzmDatas.class);
for (YtzmDatas ytzmData : ytzmDatas) {
List<Long> picids = ytzmData.getPicid();
String picIds = StringUtils.join(picids, ",");//逗号分割
//根据picIds查找对应的图片记录
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
List<String> picUrls = picRecards.stream()
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
String pictures = StringUtils.join(picUrls, ",");//逗号分割
List<DaYtzm> info = ytzmData.getInfo();
if (info != null && info.size() > 0) {
for (DaYtzm ytzm : info) {
//判断返回结果是否都是字符串 "无"
/* if(CallThirdInterface.allFieldsEqualTo(ytzm,"无")){
continue;
}*/
ytzm.setAllPicIds(picIds);
ytzm.setAllPics(pictures);
ytzm.setPicIds(picIds);
ytzm.setPictures(pictures);
//其他字段存储
ytzm.setYwType(ywType);
ytzm.setMuId(muId);
ytzm.setMuPath(muPath);
ytzm.setAuditStatus("0");
ytzm.setErrorCorrect("0");
ytzm.setTaskId(datask.getId());
daYtzmService.insertDaYtzm(ytzm);
}
}
}
break;
case "option7":
//获取转非农业人口批复存根信息集合
List<ZfnyDatas> zfnyDatas = JSONArray.parseArray(datas, ZfnyDatas.class);
for (ZfnyDatas zfnyData : zfnyDatas) {
List<Long> picids = zfnyData.getPicid();
String picIds = StringUtils.join(picids, ",");//逗号分割
//根据picIds查找对应的图片记录
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
List<String> picUrls = picRecards.stream()
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
String pictures = StringUtils.join(picUrls, ",");//逗号分割
List<DaZfnyhkcg> info = zfnyData.getInfo();
if (info != null && info.size() > 0) {
for (DaZfnyhkcg zfnyhkcg : info) {
//判断返回结果是否都是字符串 "无"
/*if(CallThirdInterface.allFieldsEqualTo(zfnyhkcg,"无")){
continue;
}*/
zfnyhkcg.setAllPicIds(picIds);
zfnyhkcg.setAllPics(pictures);
zfnyhkcg.setPicIds(picIds);
zfnyhkcg.setPictures(pictures);
//其他字段存储
zfnyhkcg.setYwType(ywType);
zfnyhkcg.setMuId(muId);
zfnyhkcg.setMuPath(muPath);
zfnyhkcg.setAuditStatus("0");
zfnyhkcg.setErrorCorrect("0");
zfnyhkcg.setTaskId(datask.getId());
daZfnyhkcgService.insertDaZfnyhkcg(zfnyhkcg);
}
}
}
break;
case "option8":
//获取准迁证信息集合
List<ZqzDatas> zqzDatas = JSONArray.parseArray(datas, ZqzDatas.class);
for (ZqzDatas zqzData : zqzDatas) {
List<Long> picids = zqzData.getPicid();
String picIds = StringUtils.join(picids, ",");//逗号分割
//根据picIds查找对应的图片记录
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
List<String> picUrls = picRecards.stream()
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
String pictures = StringUtils.join(picUrls, ",");//逗号分割
List<DaZqz> info = zqzData.getInfo();
if (info != null && info.size() > 0) {
for (DaZqz zqz : info) {
//判断返回结果是否都是字符串 "无"
/*if(CallThirdInterface.allFieldsEqualTo(zqz,"无")){
continue;
}*/
zqz.setAllPicIds(picIds);
zqz.setAllPics(pictures);
zqz.setPicIds(picIds);
zqz.setPictures(pictures);
//其他字段存储
zqz.setYwType(ywType);
zqz.setMuId(muId);
zqz.setMuPath(muPath);
zqz.setAuditStatus("0");
zqz.setErrorCorrect("0");
zqz.setTaskId(datask.getId());
daZqzService.insertDaZqz(zqz);
}
}
}
break;
}
//获取数据成功后清除对应taskId的信息
clearThirdTaskResult(datask.getId());
}
}
}
}else{
System.out.println("-------------------------------------暂时没有未完成的识别任务----------------------------------");
}
}
public void clearThirdTaskResult(Long taskId) throws Exception {
String result = CallThirdInterface.callThirdInterfaceClearByTaskId(url4,taskId);
//! 解析JSON字符串,获取键对应的值
JSONObject jsonobject = new JSONObject(result);
String msg = jsonobject.getStr("msg");
String code = jsonobject.getStr("code");
logger.info("clearByTaskId------------------------------------"+taskId+" ---"+code+"---"+msg);
}
}
Loading…
Cancel
Save