|
|
|
@ -2,6 +2,7 @@ package com.da.dangan.timetask;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
|
|
|
|
|
import com.da.common.config.RuoYiConfig;
|
|
|
|
import com.da.common.utils.DictUtils;
|
|
|
|
import com.da.common.utils.DictUtils;
|
|
|
|
import com.da.dangan.domain.*;
|
|
|
|
import com.da.dangan.domain.*;
|
|
|
|
import com.da.dangan.domain.vo.*;
|
|
|
|
import com.da.dangan.domain.vo.*;
|
|
|
|
@ -13,8 +14,9 @@ import org.slf4j.LoggerFactory;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
@ -26,8 +28,7 @@ import java.util.stream.Stream;
|
|
|
|
* @author ruoyi
|
|
|
|
* @author ruoyi
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Component("timeTask")
|
|
|
|
@Component("timeTask")
|
|
|
|
public class TimeTask
|
|
|
|
public class TimeTask {
|
|
|
|
{
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IDaTaskService daTaskService;
|
|
|
|
private IDaTaskService daTaskService;
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
@ -48,300 +49,403 @@ public class TimeTask
|
|
|
|
private String url2;
|
|
|
|
private String url2;
|
|
|
|
@Value("${ocr.url4}")
|
|
|
|
@Value("${ocr.url4}")
|
|
|
|
private String url4;
|
|
|
|
private String url4;
|
|
|
|
|
|
|
|
@Value("${ocr.url1}")
|
|
|
|
|
|
|
|
private String url1;
|
|
|
|
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
|
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
/**
|
|
|
|
public void daNoParams() throws Exception {
|
|
|
|
* 定时任务查询识别中任务的结果,并对结果进行解析存储,相应的改变任务状态
|
|
|
|
DaTask param = new DaTask();
|
|
|
|
*
|
|
|
|
param.setStatus("1"); //处理中
|
|
|
|
* @throws Exception
|
|
|
|
//查询所有未完成的任务
|
|
|
|
*/
|
|
|
|
List<DaTask> daTasks = daTaskService.selectDaTaskList(param);
|
|
|
|
public void getTaskResult() {
|
|
|
|
if(daTasks!=null&&daTasks.size()>0){
|
|
|
|
String result = "";
|
|
|
|
for(DaTask datask:daTasks){
|
|
|
|
try {
|
|
|
|
//查看认识是否超时, 计算两个日期之间的差值(毫秒) 分钟-> / (1000 * 60)
|
|
|
|
DaTask param = new DaTask();
|
|
|
|
long diff = (new Date().getTime()-datask.getUpdateTime().getTime())/(1000 * 60 );
|
|
|
|
param.setStatus("1"); //处理中
|
|
|
|
String expired = DictUtils.getDictValue("task_time_out", "task_timeout");
|
|
|
|
//查询所有识别中的任务
|
|
|
|
if(diff> Long.parseLong(expired)){
|
|
|
|
List<DaTask> daTasks = daTaskService.selectDaTaskListByStatus(param);
|
|
|
|
datask.setStatus("3"); //设置状态任务超时
|
|
|
|
if (daTasks != null && daTasks.size() > 0) {
|
|
|
|
daTaskService.updateDaTask(datask);
|
|
|
|
for (DaTask datask : daTasks) {
|
|
|
|
continue;
|
|
|
|
//查看认识是否超时, 计算两个日期之间的差值(毫秒) 分钟-> / (1000 * 60)
|
|
|
|
}
|
|
|
|
long diff = (new Date().getTime() - datask.getUpdateTime().getTime()) / (1000 * 60);
|
|
|
|
//获取当前任务相关信息
|
|
|
|
String expired = DictUtils.getDictValue("task_time_out", "task_timeout");
|
|
|
|
String ywType = datask.getYwType();
|
|
|
|
if (diff > Long.parseLong(expired)) {
|
|
|
|
Long muId = datask.getMuId();
|
|
|
|
datask.setStatus("3"); //设置状态任务超时
|
|
|
|
String muPath = datask.getMuPath();
|
|
|
|
daTaskService.updateDaTask(datask);
|
|
|
|
logger.info("--------开启任务:"+datask.getId()+"结果查询");
|
|
|
|
continue;
|
|
|
|
//调用第三方接口查看识别任务状态 已结束直接取结果,处理中跳过
|
|
|
|
}
|
|
|
|
String result = CallThirdInterface.callThirdInterfaceGetByTaskId(url2, datask.getId());
|
|
|
|
//获取当前任务相关信息
|
|
|
|
//! 解析JSON字符串,获取键对应的值
|
|
|
|
String ywType = datask.getYwType();
|
|
|
|
JSONObject jsonobject = new JSONObject(result);
|
|
|
|
Long muId = datask.getMuId();
|
|
|
|
String status = jsonobject.getStr("status");
|
|
|
|
String muPath = datask.getMuPath();
|
|
|
|
// if(status!=null&&!status.trim().equals("")){
|
|
|
|
logger.info("--------开启任务:" + datask.getId() + "结果查询");
|
|
|
|
if(status.equals("1")){ //1处理中
|
|
|
|
//调用第三方接口查看识别任务状态 已结束直接取结果,处理中跳过
|
|
|
|
continue;
|
|
|
|
result = CallThirdInterface.callThirdInterfaceGetByTaskId(url2, datask.getId());
|
|
|
|
}else if(status.equals("2")){ //识别任务已结束,获取并存储数据
|
|
|
|
//! 解析JSON字符串,获取键对应的值
|
|
|
|
String code = jsonobject.getStr("code");
|
|
|
|
JSONObject jsonobject = null;
|
|
|
|
Integer success = jsonobject.getInt("success");
|
|
|
|
String status = null;
|
|
|
|
Integer total = jsonobject.getInt("total");
|
|
|
|
String msg = null;
|
|
|
|
//失败id
|
|
|
|
jsonobject = new JSONObject(result);
|
|
|
|
String failPicid = jsonobject.getStr("failPicid");
|
|
|
|
status = jsonobject.getStr("status");
|
|
|
|
//获取失败的id集合
|
|
|
|
msg = jsonobject.getStr("msg");
|
|
|
|
List<Long> failIds = JSONArray.parseArray(failPicid, Long.class);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//更新任务记录信息
|
|
|
|
if (status.equals("1")) { //1处理中
|
|
|
|
datask.setStatus("2");//已结束
|
|
|
|
continue;
|
|
|
|
datask.setFailIds(StringUtils.join(failIds, ","));
|
|
|
|
}else if (status.equals("2")) { //2识别任务已结束,获取并存储数据
|
|
|
|
//获取成功的图片ids 重传任务时 成功ids=alls-fails
|
|
|
|
datask.setRemark(msg); //记录返回结果的msg信息
|
|
|
|
List<Long> allpicIds = Stream.of(datask.getPicIds().split(","))
|
|
|
|
String code = jsonobject.getStr("code");
|
|
|
|
.map(Long::parseLong)
|
|
|
|
// Integer total = jsonobject.getInt("total");
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
//获取失败id
|
|
|
|
List<Long> successIds = allpicIds.stream().filter(item -> !failIds.contains(item)).collect(Collectors.toList());
|
|
|
|
String failPicid = jsonobject.getStr("failPicid");
|
|
|
|
datask.setSuccessIds(StringUtils.join(successIds, ","));
|
|
|
|
//获取失败的id集合
|
|
|
|
datask.setFailNum(failIds.size());
|
|
|
|
List<Long> failIds = JSONArray.parseArray(failPicid, Long.class);
|
|
|
|
datask.setSuccessNum(allpicIds.size()-failIds.size());
|
|
|
|
//更新任务记录信息
|
|
|
|
datask.setResultStr(result);
|
|
|
|
datask.setStatus("2");//已结束
|
|
|
|
daTaskService.updateDaTask(datask);
|
|
|
|
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 识别成功或者部分成功
|
|
|
|
// code=1 识别成功或者部分成功,如果code=0 识别全部失败 无需存储信息
|
|
|
|
if (code.equals("0")) {
|
|
|
|
if (code.equals("1")) {
|
|
|
|
} else {
|
|
|
|
//数据解析 根据业务类型存储识别后的信息
|
|
|
|
//数据解析 根据业务类型存储识别后的信息
|
|
|
|
String datas = jsonobject.getStr("datas");
|
|
|
|
String datas = jsonobject.getStr("datas");
|
|
|
|
switch (ywType) {
|
|
|
|
switch (ywType) {
|
|
|
|
case "option1": //常住人口登记表1
|
|
|
|
case "option1": //常住人口登记表1
|
|
|
|
//break;
|
|
|
|
//break;
|
|
|
|
case "option2": //常住卡
|
|
|
|
case "option2": //常住卡
|
|
|
|
// break;
|
|
|
|
// break;
|
|
|
|
case "option3": //常住人口登记表2
|
|
|
|
case "option3": //常住人口登记表2
|
|
|
|
//break;
|
|
|
|
//break;
|
|
|
|
case "option9": //常住人口登记表3
|
|
|
|
case "option9": //常住人口登记表3
|
|
|
|
//获取常住人口信息集合
|
|
|
|
//获取常住人口信息集合
|
|
|
|
List<CzrkDatas> czrkDatas = JSONArray.parseArray(datas, CzrkDatas.class);
|
|
|
|
List<CzrkDatas> czrkDatas = JSONArray.parseArray(datas, CzrkDatas.class);
|
|
|
|
for (CzrkDatas czrkData : czrkDatas) {
|
|
|
|
for (CzrkDatas czrkData : czrkDatas) {
|
|
|
|
List<Long> picids = czrkData.getPicid();
|
|
|
|
List<Long> picids = czrkData.getPicid();
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DaCzrkdj> info = czrkData.getInfo();
|
|
|
|
List<DaCzrkdj> info = czrkData.getInfo();
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
for (DaCzrkdj daCzrkdj : info) {
|
|
|
|
for (DaCzrkdj daCzrkdj : info) {
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(daCzrkdj,"无")){
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(daCzrkdj,"无")){
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}*/
|
|
|
|
}*/
|
|
|
|
daCzrkdj.setAllPicIds(picIds);
|
|
|
|
daCzrkdj.setAllPicIds(picIds);
|
|
|
|
daCzrkdj.setAllPics(pictures);
|
|
|
|
daCzrkdj.setAllPics(pictures);
|
|
|
|
daCzrkdj.setPicIds(picIds);
|
|
|
|
daCzrkdj.setPicIds(picIds);
|
|
|
|
daCzrkdj.setPictures(pictures);
|
|
|
|
daCzrkdj.setPictures(pictures);
|
|
|
|
//其他字段存储
|
|
|
|
//其他字段存储
|
|
|
|
daCzrkdj.setYwType(ywType);
|
|
|
|
daCzrkdj.setYwType(ywType);
|
|
|
|
daCzrkdj.setMuId(muId);
|
|
|
|
daCzrkdj.setMuId(muId);
|
|
|
|
daCzrkdj.setMuPath(muPath);
|
|
|
|
daCzrkdj.setMuPath(muPath);
|
|
|
|
daCzrkdj.setAuditStatus("0");
|
|
|
|
daCzrkdj.setAuditStatus("0");
|
|
|
|
daCzrkdj.setErrorCorrect("0");
|
|
|
|
daCzrkdj.setErrorCorrect("0");
|
|
|
|
daCzrkdj.setTaskId(datask.getId());
|
|
|
|
daCzrkdj.setTaskId(datask.getId());
|
|
|
|
//daCzrkdj.setCreateBy();
|
|
|
|
//daCzrkdj.setCreateBy();
|
|
|
|
daCzrkdjService.insertDaCzrkdj(daCzrkdj);
|
|
|
|
daCzrkdjService.insertDaCzrkdj(daCzrkdj);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "option4":
|
|
|
|
case "option4":
|
|
|
|
//获取出生医学证明信息集合
|
|
|
|
//获取出生医学证明信息集合
|
|
|
|
List<CszmDatas> cszmDatas = JSONArray.parseArray(datas, CszmDatas.class);
|
|
|
|
List<CszmDatas> cszmDatas = JSONArray.parseArray(datas, CszmDatas.class);
|
|
|
|
for (CszmDatas cszmData : cszmDatas) {
|
|
|
|
for (CszmDatas cszmData : cszmDatas) {
|
|
|
|
List<Long> picids = cszmData.getPicid();
|
|
|
|
List<Long> picids = cszmData.getPicid();
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DaBirthDj> info = cszmData.getInfo();
|
|
|
|
List<DaBirthDj> info = cszmData.getInfo();
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
for (DaBirthDj daBirthdj : info) {
|
|
|
|
for (DaBirthDj daBirthdj : info) {
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(daBirthdj,"无")){
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(daBirthdj,"无")){
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}*/
|
|
|
|
}*/
|
|
|
|
daBirthdj.setAllPicIds(picIds);
|
|
|
|
daBirthdj.setAllPicIds(picIds);
|
|
|
|
daBirthdj.setAllPics(pictures);
|
|
|
|
daBirthdj.setAllPics(pictures);
|
|
|
|
daBirthdj.setPicIds(picIds);
|
|
|
|
daBirthdj.setPicIds(picIds);
|
|
|
|
daBirthdj.setPictures(pictures);
|
|
|
|
daBirthdj.setPictures(pictures);
|
|
|
|
//其他字段存储
|
|
|
|
//其他字段存储
|
|
|
|
daBirthdj.setTaskId(datask.getId());
|
|
|
|
daBirthdj.setTaskId(datask.getId());
|
|
|
|
daBirthdj.setYwType(ywType);
|
|
|
|
daBirthdj.setYwType(ywType);
|
|
|
|
daBirthdj.setMuId(muId);
|
|
|
|
daBirthdj.setMuId(muId);
|
|
|
|
daBirthdj.setMuPath(muPath);
|
|
|
|
daBirthdj.setMuPath(muPath);
|
|
|
|
daBirthdj.setAuditStatus("0");
|
|
|
|
daBirthdj.setAuditStatus("0");
|
|
|
|
daBirthdj.setErrorCorrect("0");
|
|
|
|
daBirthdj.setErrorCorrect("0");
|
|
|
|
daBirthDjService.insertDaBirthDj(daBirthdj);
|
|
|
|
daBirthDjService.insertDaBirthDj(daBirthdj);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "option5":
|
|
|
|
case "option5":
|
|
|
|
//获取迁移证信息集合
|
|
|
|
//获取迁移证信息集合
|
|
|
|
List<QyzDatas> qyzDatas = JSONArray.parseArray(datas, QyzDatas.class);
|
|
|
|
List<QyzDatas> qyzDatas = JSONArray.parseArray(datas, QyzDatas.class);
|
|
|
|
for (QyzDatas qyzData : qyzDatas) {
|
|
|
|
for (QyzDatas qyzData : qyzDatas) {
|
|
|
|
List<Long> picids = qyzData.getPicid();
|
|
|
|
List<Long> picids = qyzData.getPicid();
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DaQyz> info = qyzData.getInfo();
|
|
|
|
List<DaQyz> info = qyzData.getInfo();
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
for (DaQyz qyz : info) {
|
|
|
|
for (DaQyz qyz : info) {
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(qyz,"无")){
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(qyz,"无")){
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}*/
|
|
|
|
}*/
|
|
|
|
qyz.setAllPicIds(picIds);
|
|
|
|
qyz.setAllPicIds(picIds);
|
|
|
|
qyz.setAllPics(pictures);
|
|
|
|
qyz.setAllPics(pictures);
|
|
|
|
qyz.setPicIds(picIds);
|
|
|
|
qyz.setPicIds(picIds);
|
|
|
|
qyz.setPictures(pictures);
|
|
|
|
qyz.setPictures(pictures);
|
|
|
|
//其他字段存储
|
|
|
|
//其他字段存储
|
|
|
|
qyz.setYwType(ywType);
|
|
|
|
qyz.setYwType(ywType);
|
|
|
|
qyz.setMuId(muId);
|
|
|
|
qyz.setMuId(muId);
|
|
|
|
qyz.setMuPath(muPath);
|
|
|
|
qyz.setMuPath(muPath);
|
|
|
|
qyz.setAuditStatus("0");
|
|
|
|
qyz.setAuditStatus("0");
|
|
|
|
qyz.setErrorCorrect("0");
|
|
|
|
qyz.setErrorCorrect("0");
|
|
|
|
qyz.setTaskId(datask.getId());
|
|
|
|
qyz.setTaskId(datask.getId());
|
|
|
|
daQyzService.insertDaQyz(qyz);
|
|
|
|
daQyzService.insertDaQyz(qyz);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "option6":
|
|
|
|
case "option6":
|
|
|
|
//获取一胎证明信息集合
|
|
|
|
//获取一胎证明信息集合
|
|
|
|
List<YtzmDatas> ytzmDatas = JSONArray.parseArray(datas, YtzmDatas.class);
|
|
|
|
List<YtzmDatas> ytzmDatas = JSONArray.parseArray(datas, YtzmDatas.class);
|
|
|
|
for (YtzmDatas ytzmData : ytzmDatas) {
|
|
|
|
for (YtzmDatas ytzmData : ytzmDatas) {
|
|
|
|
List<Long> picids = ytzmData.getPicid();
|
|
|
|
List<Long> picids = ytzmData.getPicid();
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DaYtzm> info = ytzmData.getInfo();
|
|
|
|
List<DaYtzm> info = ytzmData.getInfo();
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
for (DaYtzm ytzm : info) {
|
|
|
|
for (DaYtzm ytzm : info) {
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
/* if(CallThirdInterface.allFieldsEqualTo(ytzm,"无")){
|
|
|
|
/* if(CallThirdInterface.allFieldsEqualTo(ytzm,"无")){
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}*/
|
|
|
|
}*/
|
|
|
|
ytzm.setAllPicIds(picIds);
|
|
|
|
ytzm.setAllPicIds(picIds);
|
|
|
|
ytzm.setAllPics(pictures);
|
|
|
|
ytzm.setAllPics(pictures);
|
|
|
|
ytzm.setPicIds(picIds);
|
|
|
|
ytzm.setPicIds(picIds);
|
|
|
|
ytzm.setPictures(pictures);
|
|
|
|
ytzm.setPictures(pictures);
|
|
|
|
//其他字段存储
|
|
|
|
//其他字段存储
|
|
|
|
ytzm.setYwType(ywType);
|
|
|
|
ytzm.setYwType(ywType);
|
|
|
|
ytzm.setMuId(muId);
|
|
|
|
ytzm.setMuId(muId);
|
|
|
|
ytzm.setMuPath(muPath);
|
|
|
|
ytzm.setMuPath(muPath);
|
|
|
|
ytzm.setAuditStatus("0");
|
|
|
|
ytzm.setAuditStatus("0");
|
|
|
|
ytzm.setErrorCorrect("0");
|
|
|
|
ytzm.setErrorCorrect("0");
|
|
|
|
ytzm.setTaskId(datask.getId());
|
|
|
|
ytzm.setTaskId(datask.getId());
|
|
|
|
daYtzmService.insertDaYtzm(ytzm);
|
|
|
|
daYtzmService.insertDaYtzm(ytzm);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "option7":
|
|
|
|
case "option7":
|
|
|
|
//获取转非农业人口批复存根信息集合
|
|
|
|
//获取转非农业人口批复存根信息集合
|
|
|
|
List<ZfnyDatas> zfnyDatas = JSONArray.parseArray(datas, ZfnyDatas.class);
|
|
|
|
List<ZfnyDatas> zfnyDatas = JSONArray.parseArray(datas, ZfnyDatas.class);
|
|
|
|
for (ZfnyDatas zfnyData : zfnyDatas) {
|
|
|
|
for (ZfnyDatas zfnyData : zfnyDatas) {
|
|
|
|
List<Long> picids = zfnyData.getPicid();
|
|
|
|
List<Long> picids = zfnyData.getPicid();
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DaZfnyhkcg> info = zfnyData.getInfo();
|
|
|
|
List<DaZfnyhkcg> info = zfnyData.getInfo();
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
for (DaZfnyhkcg zfnyhkcg : info) {
|
|
|
|
for (DaZfnyhkcg zfnyhkcg : info) {
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(zfnyhkcg,"无")){
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(zfnyhkcg,"无")){
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}*/
|
|
|
|
}*/
|
|
|
|
zfnyhkcg.setAllPicIds(picIds);
|
|
|
|
zfnyhkcg.setAllPicIds(picIds);
|
|
|
|
zfnyhkcg.setAllPics(pictures);
|
|
|
|
zfnyhkcg.setAllPics(pictures);
|
|
|
|
zfnyhkcg.setPicIds(picIds);
|
|
|
|
zfnyhkcg.setPicIds(picIds);
|
|
|
|
zfnyhkcg.setPictures(pictures);
|
|
|
|
zfnyhkcg.setPictures(pictures);
|
|
|
|
//其他字段存储
|
|
|
|
//其他字段存储
|
|
|
|
zfnyhkcg.setYwType(ywType);
|
|
|
|
zfnyhkcg.setYwType(ywType);
|
|
|
|
zfnyhkcg.setMuId(muId);
|
|
|
|
zfnyhkcg.setMuId(muId);
|
|
|
|
zfnyhkcg.setMuPath(muPath);
|
|
|
|
zfnyhkcg.setMuPath(muPath);
|
|
|
|
zfnyhkcg.setAuditStatus("0");
|
|
|
|
zfnyhkcg.setAuditStatus("0");
|
|
|
|
zfnyhkcg.setErrorCorrect("0");
|
|
|
|
zfnyhkcg.setErrorCorrect("0");
|
|
|
|
zfnyhkcg.setTaskId(datask.getId());
|
|
|
|
zfnyhkcg.setTaskId(datask.getId());
|
|
|
|
daZfnyhkcgService.insertDaZfnyhkcg(zfnyhkcg);
|
|
|
|
daZfnyhkcgService.insertDaZfnyhkcg(zfnyhkcg);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "option8":
|
|
|
|
case "option8":
|
|
|
|
//获取准迁证信息集合
|
|
|
|
//获取准迁证信息集合
|
|
|
|
List<ZqzDatas> zqzDatas = JSONArray.parseArray(datas, ZqzDatas.class);
|
|
|
|
List<ZqzDatas> zqzDatas = JSONArray.parseArray(datas, ZqzDatas.class);
|
|
|
|
for (ZqzDatas zqzData : zqzDatas) {
|
|
|
|
for (ZqzDatas zqzData : zqzDatas) {
|
|
|
|
List<Long> picids = zqzData.getPicid();
|
|
|
|
List<Long> picids = zqzData.getPicid();
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
String picIds = StringUtils.join(picids, ",");//逗号分割
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
//根据picIds查找对应的图片记录
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(picids.toArray(new Long[picids.size()]));
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
List<String> picUrls = picRecards.stream()
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
.map(DaPicturesRecard::getPicUrl).collect(Collectors.toList());
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
String pictures = StringUtils.join(picUrls, ",");//逗号分割
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DaZqz> info = zqzData.getInfo();
|
|
|
|
List<DaZqz> info = zqzData.getInfo();
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
if (info != null && info.size() > 0) {
|
|
|
|
for (DaZqz zqz : info) {
|
|
|
|
for (DaZqz zqz : info) {
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
//判断返回结果是否都是字符串 "无"
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(zqz,"无")){
|
|
|
|
/*if(CallThirdInterface.allFieldsEqualTo(zqz,"无")){
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}*/
|
|
|
|
}*/
|
|
|
|
zqz.setAllPicIds(picIds);
|
|
|
|
zqz.setAllPicIds(picIds);
|
|
|
|
zqz.setAllPics(pictures);
|
|
|
|
zqz.setAllPics(pictures);
|
|
|
|
zqz.setPicIds(picIds);
|
|
|
|
zqz.setPicIds(picIds);
|
|
|
|
zqz.setPictures(pictures);
|
|
|
|
zqz.setPictures(pictures);
|
|
|
|
//其他字段存储
|
|
|
|
//其他字段存储
|
|
|
|
zqz.setYwType(ywType);
|
|
|
|
zqz.setYwType(ywType);
|
|
|
|
zqz.setMuId(muId);
|
|
|
|
zqz.setMuId(muId);
|
|
|
|
zqz.setMuPath(muPath);
|
|
|
|
zqz.setMuPath(muPath);
|
|
|
|
zqz.setAuditStatus("0");
|
|
|
|
zqz.setAuditStatus("0");
|
|
|
|
zqz.setErrorCorrect("0");
|
|
|
|
zqz.setErrorCorrect("0");
|
|
|
|
zqz.setTaskId(datask.getId());
|
|
|
|
zqz.setTaskId(datask.getId());
|
|
|
|
daZqzService.insertDaZqz(zqz);
|
|
|
|
daZqzService.insertDaZqz(zqz);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
//获取数据成功后,清除对应taskId的信息
|
|
|
|
|
|
|
|
clearThirdTaskResult(datask.getId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if (status.equals("3")) { //=3第三方服务崩溃或者其他异常---任务丢失
|
|
|
|
|
|
|
|
datask.setRemark(msg); //记录返回结果的msg信息
|
|
|
|
|
|
|
|
datask.setStatus("4"); //设置状态任务丢失
|
|
|
|
|
|
|
|
daTaskService.updateDaTask(datask);
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
logger.info("-------------------------------------暂时没有识别中的任务----------------------------------");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
System.err.println("get_result:" + result);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 定时任务,对等待中的任务进行提交(识别中任务<third_task_max值时)
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void submitTask(){
|
|
|
|
|
|
|
|
String result="";
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
//获取字典第三方任务最大数量
|
|
|
|
|
|
|
|
Integer maxTask = Integer.parseInt(DictUtils.getDictValue("total_task", "third_task_max"));
|
|
|
|
|
|
|
|
//1.获取所有等待任务
|
|
|
|
|
|
|
|
DaTask param = new DaTask();
|
|
|
|
|
|
|
|
param.setStatus("-1"); //等待中
|
|
|
|
|
|
|
|
//查询所有识别中的任务
|
|
|
|
|
|
|
|
List<DaTask> daTasks = daTaskService.selectDaTaskListByStatus(param);
|
|
|
|
|
|
|
|
if (daTasks != null && daTasks.size() > 0) {
|
|
|
|
|
|
|
|
for (DaTask daTask : daTasks) {
|
|
|
|
|
|
|
|
DaTask sbz = new DaTask();
|
|
|
|
|
|
|
|
sbz.setStatus("1"); //处理中
|
|
|
|
|
|
|
|
//2.获取所有识别中的任务
|
|
|
|
|
|
|
|
List<DaTask> sbzTasks = daTaskService.selectDaTaskListByStatus(sbz);
|
|
|
|
|
|
|
|
if (sbzTasks != null && sbzTasks.size() >= maxTask) {//识别中任务>=10
|
|
|
|
|
|
|
|
logger.info("-------------------------------------当前识别中的任务数:" + sbzTasks.size() + " --系统稍后提交任务--------------------------------");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
List<Long> ids;
|
|
|
|
|
|
|
|
//判断需要上传的图片
|
|
|
|
|
|
|
|
if (daTask.getSuccessNum() != null && daTask.getSuccessNum() > 0) {
|
|
|
|
|
|
|
|
String failIds = daTask.getFailIds();
|
|
|
|
|
|
|
|
ids = Stream.of(failIds.split(","))
|
|
|
|
|
|
|
|
.map(Long::parseLong)
|
|
|
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
String picIds = daTask.getPicIds();
|
|
|
|
|
|
|
|
ids = Stream.of(picIds.split(","))
|
|
|
|
|
|
|
|
.map(Long::parseLong)
|
|
|
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//获取所有需要重新识别上传的图片
|
|
|
|
|
|
|
|
List<DaPicturesRecard> picRecards = daPicturesRecardService.selectDaPicturesRecardByIds(ids.toArray(new Long[ids.size()]));
|
|
|
|
|
|
|
|
String code;
|
|
|
|
|
|
|
|
String msg;
|
|
|
|
|
|
|
|
//获取所有的文件
|
|
|
|
|
|
|
|
List<File> files = new ArrayList<>();
|
|
|
|
|
|
|
|
for (DaPicturesRecard picRecard : picRecards) {
|
|
|
|
|
|
|
|
String path = getPath(picRecard.getPicUrl());
|
|
|
|
|
|
|
|
File file = new File(path);
|
|
|
|
|
|
|
|
files.add(file);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//调用第三方接口 先清数据
|
|
|
|
|
|
|
|
CallThirdInterface.callThirdInterfaceClearByTaskId(url4, daTask.getId());
|
|
|
|
|
|
|
|
result = CallThirdInterface.callThirdInterfaceUpload(url1, files, daTask.getYwType(), ids, daTask.getId());
|
|
|
|
|
|
|
|
//! 解析JSON字符串,获取键对应的值
|
|
|
|
|
|
|
|
JSONObject jsonobject = new JSONObject(result);
|
|
|
|
|
|
|
|
code = jsonobject.getStr("code");
|
|
|
|
|
|
|
|
msg = jsonobject.getStr("msg");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//记录最后一次识别的操作时间
|
|
|
|
|
|
|
|
daTask.setUpdateTime(new Date());
|
|
|
|
|
|
|
|
if (code.equals("1")) { //code=0 任务接收失败,code=1成功
|
|
|
|
|
|
|
|
daTask.setStatus("1"); //识别中
|
|
|
|
|
|
|
|
daTask.setLastNum(picRecards.size());
|
|
|
|
|
|
|
|
daTaskService.updateDaTask(daTask);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
daTask.setStatus("0");
|
|
|
|
|
|
|
|
daTask.setRemark(msg);
|
|
|
|
|
|
|
|
daTaskService.updateDaTask(daTask);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//获取数据成功后,清除对应taskId的信息
|
|
|
|
|
|
|
|
clearThirdTaskResult(datask.getId());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
logger.info("-------------------------------------当前等待队列中没有任务----------------------------------");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
} catch (Exception e) {
|
|
|
|
System.out.println("-------------------------------------暂时没有未完成的识别任务----------------------------------");
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
System.out.println("upload_api接口:"+result);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void clearThirdTaskResult(Long taskId) throws Exception {
|
|
|
|
public void clearThirdTaskResult(Long taskId) throws Exception {
|
|
|
|
String result = CallThirdInterface.callThirdInterfaceClearByTaskId(url4,taskId);
|
|
|
|
String result = CallThirdInterface.callThirdInterfaceClearByTaskId(url4, taskId);
|
|
|
|
//! 解析JSON字符串,获取键对应的值
|
|
|
|
//! 解析JSON字符串,获取键对应的值
|
|
|
|
JSONObject jsonobject = new JSONObject(result);
|
|
|
|
JSONObject jsonobject = new JSONObject(result);
|
|
|
|
String msg = jsonobject.getStr("msg");
|
|
|
|
String msg = jsonobject.getStr("msg");
|
|
|
|
String code = jsonobject.getStr("code");
|
|
|
|
String code = jsonobject.getStr("code");
|
|
|
|
logger.info("clearByTaskId------------------------------------"+taskId+" ---"+code+"---"+msg);
|
|
|
|
logger.info("clearByTaskId------------------------------------" + taskId + " ---" + code + "---" + msg);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getPath(String path) {
|
|
|
|
|
|
|
|
String profile = RuoYiConfig.getUploadPath();
|
|
|
|
|
|
|
|
int i = path.indexOf("upload");
|
|
|
|
|
|
|
|
String filePath = profile + path.substring(i + 6);
|
|
|
|
|
|
|
|
return filePath;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|