添加处理返回结果json异常、接口调整等

master
hansha 1 year ago
parent d38a1e062b
commit a8e95dfa95

@ -1,8 +1,10 @@
package com.da.dangan.controller; package com.da.dangan.controller;
import cn.hutool.json.JSONObject;
import com.da.common.config.RuoYiConfig; import com.da.common.config.RuoYiConfig;
import com.da.common.core.controller.BaseController; import com.da.common.core.controller.BaseController;
import com.da.common.core.domain.AjaxResult; import com.da.common.core.domain.AjaxResult;
import com.da.common.utils.DictUtils;
import com.da.common.utils.file.FileUploadUtils; import com.da.common.utils.file.FileUploadUtils;
import com.da.common.utils.file.FileUtils; import com.da.common.utils.file.FileUtils;
import com.da.dangan.domain.DaPicturesRecard; import com.da.dangan.domain.DaPicturesRecard;
@ -27,6 +29,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* Controller * Controller
@ -174,7 +177,6 @@ public class DangAnCollectController extends BaseController {
/** /**
* *
*/ */
/*@Transactional
@PostMapping("/recongnize") @PostMapping("/recongnize")
public AjaxResult recognize(@RequestBody List<DaPicturesRecard> picRecards) { public AjaxResult recognize(@RequestBody List<DaPicturesRecard> picRecards) {
try { try {
@ -208,11 +210,15 @@ public class DangAnCollectController extends BaseController {
daTask.setUpdateTime(new Date());//等待队列order by 字段 daTask.setUpdateTime(new Date());//等待队列order by 字段
daTaskService.insertDaTask(daTask); daTaskService.insertDaTask(daTask);
//判断识别中的任务数量 //获取识别中的任务
DaTask param = new DaTask(); DaTask param = new DaTask();
param.setStatus("1"); //处理中 param.setStatus("1"); //处理中
List<DaTask> daTasks = daTaskService.selectDaTaskListByStatus(param); List<DaTask> daTasks = daTaskService.selectDaTaskListByStatus(param);
if (daTasks != null && daTasks.size() >= maxTask) {//当前识别任务超过10个 //获取等待任务
DaTask waitTask = new DaTask();
waitTask.setStatus("-1"); //处理中
List<DaTask> waitTasks = daTaskService.selectDaTaskListByStatus(waitTask);
if ((waitTasks != null && waitTasks.size() > 0)||(daTasks != null && daTasks.size() >= maxTask)){
return AjaxResult.success("任务进入等待队列"); return AjaxResult.success("任务进入等待队列");
} else { } else {
//识别中任务<10调用第三方接口 //识别中任务<10调用第三方接口
@ -222,15 +228,18 @@ public class DangAnCollectController extends BaseController {
code = jsonobject.getStr("code"); code = jsonobject.getStr("code");
msg = jsonobject.getStr("msg"); msg = jsonobject.getStr("msg");
//如果code=0 任务接收失败code=1成功 //如果code=0 任务接收失败code=1成功
if (code.equals("0")) { if (code != null && code.equals("1")) {
return AjaxResult.error(msg).put("taskId", daTask.getId()); daTask.setStatus("1"); //识别中
daTask.setUpdateTime(new Date()); //设置updateTime 因定时任务判断任务超时使用updatetime
daTaskService.updateDaTask(daTask);
} else { } else {
daTask.setStatus("1"); daTask.setStatus("0");
daTask.setUpdateTime(new Date());//同时设置updateTime 因定时任务判断任务超时使用updatetime daTask.setRemark(msg);
daTask.setResultStr(result);
daTaskService.updateDaTask(daTask); daTaskService.updateDaTask(daTask);
return AjaxResult.error(msg).put("taskId", daTask.getId());
} }
} }
return AjaxResult.success("任务接收成功");
} else { } else {
return AjaxResult.error("识别图片不能为空"); return AjaxResult.error("识别图片不能为空");
} }
@ -238,12 +247,13 @@ public class DangAnCollectController extends BaseController {
e.printStackTrace(); e.printStackTrace();
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());
} }
}*/ return AjaxResult.success("任务接收成功");
}
/** /**
* *
*/ */
@PostMapping("/recongnize") /*@PostMapping("/recongnize")
public AjaxResult recognize(@RequestBody List<DaPicturesRecard> picRecards) { public AjaxResult recognize(@RequestBody List<DaPicturesRecard> picRecards) {
//取所有id的集合 stream()有顺序 //取所有id的集合 stream()有顺序
try { try {
@ -272,12 +282,11 @@ public class DangAnCollectController extends BaseController {
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());
} }
return AjaxResult.success("任务创建成功"); return AjaxResult.success("任务创建成功");
} }*/
/** /**
* *
*/ */
/*@Transactional
@PostMapping("/reRecongnize") @PostMapping("/reRecongnize")
public AjaxResult reRecongnize(Long taskId) { public AjaxResult reRecongnize(Long taskId) {
try { try {
@ -309,17 +318,21 @@ public class DangAnCollectController extends BaseController {
File file = new File(path); File file = new File(path);
files.add(file); files.add(file);
} }
//获取识别中的任务数量
//判断第三方接口识别中的任务数量
DaTask param = new DaTask(); DaTask param = new DaTask();
param.setStatus("1"); //处理中 param.setStatus("1"); //处理中
List<DaTask> daTasks = daTaskService.selectDaTaskListByStatus(param); List<DaTask> daTasks = daTaskService.selectDaTaskListByStatus(param);
if (daTasks != null && daTasks.size() >= maxTask) {//当前识别任务超过10个
//获取等待任务
DaTask waitTask = new DaTask();
waitTask.setStatus("-1"); //处理中
List<DaTask> waitTasks = daTaskService.selectDaTaskListByStatus(waitTask);
if ((waitTasks != null && waitTasks.size() > 0)||(daTasks != null && daTasks.size() >= maxTask)) {
daTask.setStatus("-1"); //设置状态等待 daTask.setStatus("-1"); //设置状态等待
daTask.setUpdateTime(new Date());//等待队列order by 字段 daTask.setUpdateTime(new Date()); //等待队列order by 字段
daTaskService.updateDaTask(daTask); daTaskService.updateDaTask(daTask);
return AjaxResult.success("任务进入等待队列"); return AjaxResult.success("任务进入等待队列");
} else {//识别中任务<10 }else {//识别中任务<10
//调用第三方接口 先清数据 //调用第三方接口 先清数据
CallThirdInterface.callThirdInterfaceClearByTaskId(url4, taskId); CallThirdInterface.callThirdInterfaceClearByTaskId(url4, taskId);
String result = CallThirdInterface.callThirdInterfaceUpload(url1, files, daTask.getYwType(), ids, taskId); String result = CallThirdInterface.callThirdInterfaceUpload(url1, files, daTask.getYwType(), ids, taskId);
@ -330,14 +343,16 @@ public class DangAnCollectController extends BaseController {
//记录最后一次识别的操作时间 //记录最后一次识别的操作时间
daTask.setUpdateTime(new Date()); daTask.setUpdateTime(new Date());
if (code.equals("0")) { //code=0 任务接收失败code=1成功 if (code != null && code.equals("1")) { //code=0 任务接收失败code=1成功
daTask.setStatus("0"); daTask.setStatus("1"); //识别中
daTask.setLastNum(picRecards.size());
daTaskService.updateDaTask(daTask); daTaskService.updateDaTask(daTask);
return AjaxResult.error(msg);
} else { } else {
daTask.setStatus("1"); daTask.setStatus("0");
daTask.setLastNum(picRecards.size()); daTask.setRemark(msg);
daTask.setResultStr(result);
daTaskService.updateDaTask(daTask); daTaskService.updateDaTask(daTask);
return AjaxResult.error(msg);
} }
} }
} catch (Exception e) { } catch (Exception e) {
@ -345,12 +360,12 @@ public class DangAnCollectController extends BaseController {
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());
} }
return AjaxResult.success("任务接收成功"); return AjaxResult.success("任务接收成功");
}*/ }
/** /**
* *
*/ */
@PostMapping("/reRecongnize") /*@PostMapping("/reRecongnize")
public AjaxResult reRecongnize(Long taskId) { public AjaxResult reRecongnize(Long taskId) {
try { try {
DaTask daTask = daTaskService.selectDaTaskById(taskId); DaTask daTask = daTaskService.selectDaTaskById(taskId);
@ -364,7 +379,7 @@ public class DangAnCollectController extends BaseController {
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());
} }
return AjaxResult.success("提交成功"); return AjaxResult.success("提交成功");
} }*/
/** /**
* ocr N-- 使 * ocr N-- 使

@ -1,5 +1,6 @@
package com.da.dangan.timetask; package com.da.dangan.timetask;
import cn.hutool.json.JSONException;
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.config.RuoYiConfig;
@ -82,17 +83,27 @@ public class TimeTask {
logger.info("--------开启任务:" + datask.getId() + "结果查询"); logger.info("--------开启任务:" + datask.getId() + "结果查询");
//调用第三方接口查看识别任务状态 已结束直接取结果,处理中跳过 //调用第三方接口查看识别任务状态 已结束直接取结果,处理中跳过
result = CallThirdInterface.callThirdInterfaceGetByTaskId(url2, datask.getId()); result = CallThirdInterface.callThirdInterfaceGetByTaskId(url2, datask.getId());
datask.setResultStr(result);
//! 解析JSON字符串,获取键对应的值 //! 解析JSON字符串,获取键对应的值
JSONObject jsonobject = null; JSONObject jsonobject = null;
String status = null; String status = null;
String msg = null; String msg = null;
try {
jsonobject = new JSONObject(result); jsonobject = new JSONObject(result);
} catch (JSONException e) {
//todo 处理json异常 之前测试多次出现返回结果Internal Server Error
datask.setStatus("4"); //任务异常
datask.setRemark(result);
daTaskService.updateDaTask(datask);
e.printStackTrace();
System.err.println("get_result:" + result);
continue;
}
status = jsonobject.getStr("status"); status = jsonobject.getStr("status");
msg = jsonobject.getStr("msg"); msg = jsonobject.getStr("msg");
if (status.equals("1")) { //1处理中 if (status.equals("1")) { //1处理中
continue; continue;
}else if (status.equals("2")) { //2识别任务已结束获取并存储数据 } else if (status.equals("2")) { //2识别任务已结束获取并存储数据
datask.setRemark(msg); //记录返回结果的msg信息 datask.setRemark(msg); //记录返回结果的msg信息
String code = jsonobject.getStr("code"); String code = jsonobject.getStr("code");
// Integer total = jsonobject.getInt("total"); // Integer total = jsonobject.getInt("total");
@ -100,6 +111,7 @@ public class TimeTask {
String failPicid = jsonobject.getStr("failPicid"); String failPicid = jsonobject.getStr("failPicid");
//获取失败的id集合 //获取失败的id集合
List<Long> failIds = JSONArray.parseArray(failPicid, Long.class); List<Long> failIds = JSONArray.parseArray(failPicid, Long.class);
//更新任务记录信息 //更新任务记录信息
datask.setStatus("2");//已结束 datask.setStatus("2");//已结束
datask.setFailIds(StringUtils.join(failIds, ",")); datask.setFailIds(StringUtils.join(failIds, ","));
@ -111,7 +123,6 @@ public class TimeTask {
datask.setSuccessIds(StringUtils.join(successIds, ",")); datask.setSuccessIds(StringUtils.join(successIds, ","));
datask.setFailNum(failIds.size()); datask.setFailNum(failIds.size());
datask.setSuccessNum(allpicIds.size() - failIds.size()); datask.setSuccessNum(allpicIds.size() - failIds.size());
datask.setResultStr(result);
daTaskService.updateDaTask(datask); daTaskService.updateDaTask(datask);
// code=1 识别成功或者部分成功如果code=0 识别全部失败 无需存储信息 // code=1 识别成功或者部分成功如果code=0 识别全部失败 无需存储信息
@ -342,7 +353,7 @@ public class TimeTask {
} }
} else if (status.equals("3")) { //=3第三方服务崩溃或者其他异常---任务丢失 } else if (status.equals("3")) { //=3第三方服务崩溃或者其他异常---任务丢失
datask.setRemark(msg); //记录返回结果的msg信息 datask.setRemark(msg); //记录返回结果的msg信息
datask.setStatus("4"); //设置状态任务丢失 datask.setStatus("4"); //设置状态任务异常
daTaskService.updateDaTask(datask); daTaskService.updateDaTask(datask);
continue; continue;
} }
@ -359,8 +370,8 @@ public class TimeTask {
/** /**
* <third_task_max * <third_task_max
*/ */
public void submitTask(){ public void submitTask() {
String result=""; String result = "";
try { try {
//获取字典第三方任务最大数量 //获取字典第三方任务最大数量
Integer maxTask = Integer.parseInt(DictUtils.getDictValue("total_task", "third_task_max")); Integer maxTask = Integer.parseInt(DictUtils.getDictValue("total_task", "third_task_max"));
@ -407,13 +418,13 @@ public class TimeTask {
CallThirdInterface.callThirdInterfaceClearByTaskId(url4, daTask.getId()); CallThirdInterface.callThirdInterfaceClearByTaskId(url4, daTask.getId());
result = CallThirdInterface.callThirdInterfaceUpload(url1, files, daTask.getYwType(), ids, daTask.getId()); result = CallThirdInterface.callThirdInterfaceUpload(url1, files, daTask.getYwType(), ids, daTask.getId());
//! 解析JSON字符串,获取键对应的值 //! 解析JSON字符串,获取键对应的值
JSONObject jsonobject = new JSONObject(result); JSONObject jsonobject = null;
jsonobject = new JSONObject(result);
code = jsonobject.getStr("code"); code = jsonobject.getStr("code");
msg = jsonobject.getStr("msg"); msg = jsonobject.getStr("msg");
//记录最后一次识别的操作时间 //记录最后一次识别的操作时间
daTask.setUpdateTime(new Date()); daTask.setUpdateTime(new Date());
if (code.equals("1")) { //code=0 任务接收失败code=1成功 if (code != null && code.equals("1")) { //code=0 任务接收失败code=1成功
daTask.setStatus("1"); //识别中 daTask.setStatus("1"); //识别中
daTask.setLastNum(picRecards.size()); daTask.setLastNum(picRecards.size());
daTaskService.updateDaTask(daTask); daTaskService.updateDaTask(daTask);
@ -429,7 +440,7 @@ public class TimeTask {
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
System.out.println("upload_api接口:"+result); System.out.println("upload_api接口:" + result);
} }
} }

@ -55,7 +55,7 @@ public class CallThirdInterface {
System.out.println("---clear"+result); System.out.println("---clear"+result);
} catch (HttpException e) { } catch (HttpException e) {
e.printStackTrace(); e.printStackTrace();
throw new Exception("清除数据接口连接超时"); throw new Exception("清除数据接口连接失败");
} }
return result; return result;
} }
@ -98,7 +98,7 @@ public class CallThirdInterface {
//System.out.println(simpleDateFormat.format(new Date())+""+result); //System.out.println(simpleDateFormat.format(new Date())+""+result);
} catch (HttpException e) { } catch (HttpException e) {
e.printStackTrace(); e.printStackTrace();
throw new Exception("查询结果接口连接超时"); throw new Exception("查询结果接口连接失败");
} }
return result; return result;
} }
@ -120,7 +120,7 @@ public class CallThirdInterface {
// 1. 创建HttpRequest对象 - 指定好 url 地址 // 1. 创建HttpRequest对象 - 指定好 url 地址
HttpRequest httpRequest = new HttpRequest(url1); HttpRequest httpRequest = new HttpRequest(url1);
// 2. 设置请求方式默认是GET请求 // 2. 设置请求方式默认是GET请求
httpRequest.timeout(120000).setMethod(Method.POST); //设置2min超时 httpRequest.timeout(180000).setMethod(Method.POST); //设置3min超时
// 3. 设置请求参数 可通过 form表单方法 设置 可以是文件类型 // 3. 设置请求参数 可通过 form表单方法 设置 可以是文件类型
// form方法有很多重载方法,可以一个一个参数设置也可以将参数封装进一个map集合然后一块儿 // form方法有很多重载方法,可以一个一个参数设置也可以将参数封装进一个map集合然后一块儿
// File file = new File("C:\\Users\\hssym\\Downloads\\UBQ.png"); // File file = new File("C:\\Users\\hssym\\Downloads\\UBQ.png");
@ -154,7 +154,7 @@ public class CallThirdInterface {
System.out.println("---上传结果:"+body); System.out.println("---上传结果:"+body);
} catch (HttpException e) { } catch (HttpException e) {
e.printStackTrace(); e.printStackTrace();
throw new Exception("识别上传接口连接超时"); throw new Exception("识别上传接口连接失败");
} }
return body; return body;
} }

Loading…
Cancel
Save