任务添加上传时长、处理时长字段等

master
hansha 1 year ago
parent ca6d44fbbb
commit da3bf2d4f1

@ -1,10 +1,8 @@
package com.da.dangan.controller;
import cn.hutool.json.JSONObject;
import com.da.common.config.RuoYiConfig;
import com.da.common.core.controller.BaseController;
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.FileUtils;
import com.da.dangan.domain.DaPicturesRecard;
@ -29,7 +27,6 @@ import java.util.Date;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* Controller
@ -177,7 +174,7 @@ public class DangAnCollectController extends BaseController {
/**
*
*/
@PostMapping("/recongnize")
/*@PostMapping("/recongnize")
public AjaxResult recognize(@RequestBody List<DaPicturesRecard> picRecards) {
try {
//获取字典第三方任务最大数量
@ -207,7 +204,7 @@ public class DangAnCollectController extends BaseController {
daTask.setNum(picRecards.size());
daTask.setStatus("-1");//默认等待状态 接收成功后修改为1
daTask.setPicIds(StringUtils.join(ids, ","));//逗号分割);
daTask.setUpdateTime(new Date());//等待队列order by 字段
daTask.setUpdateTime(new Date());//开始等待时间,等待队列order by 字段
daTaskService.insertDaTask(daTask);
//获取识别中的任务
@ -216,22 +213,28 @@ public class DangAnCollectController extends BaseController {
List<DaTask> daTasks = daTaskService.selectDaTaskListByStatus(param);
//获取等待任务
DaTask waitTask = new DaTask();
waitTask.setStatus("-1"); //处理
waitTask.setStatus("-1"); //等待
List<DaTask> waitTasks = daTaskService.selectDaTaskListByStatus(waitTask);
if ((waitTasks != null && waitTasks.size() > 0)||(daTasks != null && daTasks.size() >= maxTask)){
//上面默认创建了一个等待中的任务
if ((waitTasks != null && waitTasks.size() > 1)||(daTasks != null && daTasks.size() >= maxTask)){
return AjaxResult.success("任务进入等待队列");
} else {
//识别中任务<10调用第三方接口
Long start = System.currentTimeMillis();
String result = CallThirdInterface.callThirdInterfaceUpload(url1, files, ywType, ids, daTask.getId());
Long end = System.currentTimeMillis();
//! 解析JSON字符串,获取键对应的值
JSONObject jsonobject = new JSONObject(result);
code = jsonobject.getStr("code");
msg = jsonobject.getStr("msg");
//如果code=0 任务接收失败code=1成功
if (code != null && code.equals("1")) {
//上传任务所用时长(毫秒)
daTask.setUpDuration(end-start);
if (code != null && code.equals("1")) { //如果code=0 任务接收失败code=1成功
daTask.setStatus("1"); //识别中
daTask.setUpdateTime(new Date()); //设置updateTime 因定时任务判断任务超时使用updatetime
daTask.setSbStart(new Date()); //设置识别开始时间 因定时任务判断任务超时使用
daTask.setSbEnd(null);//清空识别结束时间
daTaskService.updateDaTask(daTask);
return AjaxResult.success("任务接收成功");
} else {
daTask.setStatus("0");
daTask.setRemark(msg);
@ -247,13 +250,12 @@ public class DangAnCollectController extends BaseController {
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
return AjaxResult.success("任务接收成功");
}
}*/
/**
*
*/
/*@PostMapping("/recongnize")
@PostMapping("/recongnize")
public AjaxResult recognize(@RequestBody List<DaPicturesRecard> picRecards) {
//取所有id的集合 stream()有顺序
try {
@ -267,6 +269,7 @@ public class DangAnCollectController extends BaseController {
DaTask daTask = new DaTask();
daTask.setCreateBy(getUsername());
daTask.setCreateTime(new Date());
daTask.setUpdateTime(new Date());//等待开始时间
daTask.setMuId(muId);
daTask.setMuPath(muPath);
daTask.setYwType(ywType);
@ -282,12 +285,12 @@ public class DangAnCollectController extends BaseController {
return AjaxResult.error(e.getMessage());
}
return AjaxResult.success("任务创建成功");
}*/
}
/**
*
*/
@PostMapping("/reRecongnize")
/* @PostMapping("/reRecongnize")
public AjaxResult reRecongnize(Long taskId) {
try {
//获取字典第三方任务最大数量
@ -333,19 +336,20 @@ public class DangAnCollectController extends BaseController {
daTaskService.updateDaTask(daTask);
return AjaxResult.success("任务进入等待队列");
}else {//识别中任务<10
//调用第三方接口 先清数据
CallThirdInterface.callThirdInterfaceClearByTaskId(url4, taskId);
Long start = System.currentTimeMillis();
String result = CallThirdInterface.callThirdInterfaceUpload(url1, files, daTask.getYwType(), ids, taskId);
Long end = System.currentTimeMillis();
//! 解析JSON字符串,获取键对应的值
JSONObject jsonobject = new JSONObject(result);
code = jsonobject.getStr("code");
msg = jsonobject.getStr("msg");
//记录最后一次识别的操作时间
daTask.setUpdateTime(new Date());
daTask.setUpDuration(end-start);//上传时长
if (code != null && code.equals("1")) { //code=0 任务接收失败code=1成功
daTask.setStatus("1"); //识别中
daTask.setLastNum(picRecards.size());
daTask.setSbStart(new Date());//开始识别时间
daTask.setSbEnd(null);//清空识别结束时间
daTaskService.updateDaTask(daTask);
} else {
daTask.setStatus("0");
@ -360,26 +364,26 @@ public class DangAnCollectController extends BaseController {
return AjaxResult.error(e.getMessage());
}
return AjaxResult.success("任务接收成功");
}
}*/
/**
*
*/
/*@PostMapping("/reRecongnize")
@PostMapping("/reRecongnize")
public AjaxResult reRecongnize(Long taskId) {
try {
DaTask daTask = daTaskService.selectDaTaskById(taskId);
// daTask.setCreateBy(getUsername());//存入操作用户
//修改任务状态
daTask.setStatus("-1");//默认等待状态
daTask.setUpdateTime(new Date());//等待开始时间
daTaskService.updateDaTask(daTask);
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
return AjaxResult.success("提交成功");
}*/
return AjaxResult.success("任务提交成功");
}
/**
* ocr N-- 使

@ -1,9 +1,12 @@
package com.da.dangan.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.da.common.annotation.Excel;
import com.da.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* da_task
@ -66,6 +69,25 @@ public class DaTask extends BaseEntity
@Excel(name = "返回结果")
private String resultStr;
/** 上传时长(毫秒) */
@Excel(name = "上传时长(毫秒)")
private Long upDuration;
/** 识别开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "识别开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date sbStart;
/** 识别结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "识别结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date sbEnd;
/** 处理时长(毫秒) */
@Excel(name = "处理时长(毫秒)")
private Long processDuration;
/**
* id
*/
@ -196,6 +218,38 @@ public class DaTask extends BaseEntity
this.lastNum = lastNum;
}
public Long getUpDuration() {
return upDuration;
}
public void setUpDuration(Long upDuration) {
this.upDuration = upDuration;
}
public Date getSbStart() {
return sbStart;
}
public void setSbStart(Date sbStart) {
this.sbStart = sbStart;
}
public Date getSbEnd() {
return sbEnd;
}
public void setSbEnd(Date sbEnd) {
this.sbEnd = sbEnd;
}
public Long getProcessDuration() {
return processDuration;
}
public void setProcessDuration(Long processDuration) {
this.processDuration = processDuration;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@ -213,6 +267,10 @@ public class DaTask extends BaseEntity
.append("failIds", getFailIds())
.append("resultStr", getResultStr())
.append("remark", getRemark())
.append("upDuration", getUpDuration())
.append("sbStart", getSbStart())
.append("sbEnd", getSbEnd())
.append("processDuration", getProcessDuration())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())

@ -15,6 +15,7 @@ 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.io.File;
import java.util.ArrayList;
@ -59,6 +60,7 @@ public class TimeTask {
*
* @throws Exception
*/
@Transactional
public void getTaskResult() {
String result = "";
try {
@ -69,7 +71,7 @@ public class TimeTask {
if (daTasks != null && daTasks.size() > 0) {
for (DaTask datask : daTasks) {
//查看认识是否超时, 计算两个日期之间的差值(毫秒) 分钟-> / (1000 * 60)
long diff = (new Date().getTime() - datask.getUpdateTime().getTime()) / (1000 * 60);
long diff = (new Date().getTime() - datask.getSbStart().getTime()) / (1000 * 60);
String expired = DictUtils.getDictValue("task_time_out", "task_timeout");
if (diff > Long.parseLong(expired)) {
datask.setStatus("3"); //设置状态任务超时
@ -91,9 +93,12 @@ public class TimeTask {
try {
jsonobject = new JSONObject(result);
} catch (JSONException e) {
Date date = new Date();
//todo 处理json异常 之前测试多次出现返回结果Internal Server Error
datask.setStatus("4"); //任务异常
datask.setRemark(result);
datask.setSbEnd(date);//识别结束时间
datask.setProcessDuration(date.getTime()-datask.getSbStart().getTime());
daTaskService.updateDaTask(datask);
e.printStackTrace();
System.err.println("get_result:" + result);
@ -104,9 +109,7 @@ public class TimeTask {
if (status.equals("1")) { //1处理中
continue;
} else if (status.equals("2")) { //2识别任务已结束获取并存储数据
datask.setRemark(msg); //记录返回结果的msg信息
String code = jsonobject.getStr("code");
// Integer total = jsonobject.getInt("total");
//获取失败id
String failPicid = jsonobject.getStr("failPicid");
//获取失败的id集合
@ -114,15 +117,17 @@ public class TimeTask {
//更新任务记录信息
datask.setStatus("2");//已结束
datask.setRemark(msg); //记录返回结果的msg信息
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> 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());
Date date = new Date();
datask.setSbEnd(date);//识别结束时间
datask.setProcessDuration(date.getTime()-datask.getSbStart().getTime());
daTaskService.updateDaTask(datask);
// code=1 识别成功或者部分成功如果code=0 识别全部失败 无需存储信息
@ -348,15 +353,17 @@ public class TimeTask {
}
break;
}
//获取数据成功后清除对应taskId的信息
clearThirdTaskResult(datask.getId());
}
} else if (status.equals("3")) { //=3第三方服务崩溃或者其他异常---任务丢失
} else { //=3或者其他值第三方服务崩溃或者其他异常---任务丢失
Date date = new Date();
datask.setRemark(msg); //记录返回结果的msg信息
datask.setStatus("4"); //设置状态任务异常
datask.setSbEnd(date);//识别结束时间
datask.setProcessDuration(date.getTime()-datask.getSbStart().getTime());
daTaskService.updateDaTask(datask);
continue;
}
//获取数据成功后清除对应taskId的信息
clearThirdTaskResult(datask.getId());
}
} else {
logger.info("-------------------------------------暂时没有识别中的任务----------------------------------");
@ -378,7 +385,7 @@ public class TimeTask {
//1.获取所有等待任务
DaTask param = new DaTask();
param.setStatus("-1"); //等待中
//查询所有识别中的任务
//查询所有等待中的任务
List<DaTask> daTasks = daTaskService.selectDaTaskListByStatus(param);
if (daTasks != null && daTasks.size() > 0) {
for (DaTask daTask : daTasks) {
@ -392,7 +399,7 @@ public class TimeTask {
} else {
List<Long> ids;
//判断需要上传的图片
if (daTask.getSuccessNum() != null && daTask.getSuccessNum() > 0) {
if (daTask.getSuccessNum() != null &&(daTask.getNum()> daTask.getSuccessNum() && daTask.getSuccessNum() > 0)){
String failIds = daTask.getFailIds();
ids = Stream.of(failIds.split(","))
.map(Long::parseLong)
@ -414,18 +421,20 @@ public class TimeTask {
File file = new File(path);
files.add(file);
}
//调用第三方接口 先清数据
CallThirdInterface.callThirdInterfaceClearByTaskId(url4, daTask.getId());
Long start = System.currentTimeMillis();
result = CallThirdInterface.callThirdInterfaceUpload(url1, files, daTask.getYwType(), ids, daTask.getId());
Long end = System.currentTimeMillis();
//! 解析JSON字符串,获取键对应的值
JSONObject jsonobject = null;
jsonobject = new JSONObject(result);
code = jsonobject.getStr("code");
msg = jsonobject.getStr("msg");
//记录最后一次识别的操作时间
daTask.setUpdateTime(new Date());
//上传任务所用时长(毫秒)
daTask.setUpDuration(end-start);
if (code != null && code.equals("1")) { //code=0 任务接收失败code=1成功
daTask.setStatus("1"); //识别中
daTask.setSbStart(new Date()); //识别开始时间
daTask.setSbEnd(null);//清空识别结束时间
daTask.setLastNum(picRecards.size());
daTaskService.updateDaTask(daTask);
} else {

@ -19,6 +19,10 @@
<result property="failIds" column="fail_ids" />
<result property="resultStr" column="result_str" />
<result property="remark" column="remark" />
<result property="upDuration" column="up_duration" />
<result property="sbStart" column="sb_start" />
<result property="sbEnd" column="sb_end" />
<result property="processDuration" column="process_duration" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
@ -26,7 +30,7 @@
</resultMap>
<sql id="selectDaTaskVo">
select id, mu_id, yw_type, mu_path, num, pic_ids, last_num, status, success_num, success_ids, fail_num, fail_ids, result_str, remark, create_by, create_time, update_by, update_time from da_task
select id, mu_id, yw_type, mu_path, num, pic_ids, last_num, status, success_num, success_ids, fail_num, fail_ids, result_str, remark, up_duration, sb_start, sb_end, process_duration, create_by, create_time, update_by, update_time from da_task
</sql>
<select id="selectDaTaskList" parameterType="DaTask" resultMap="DaTaskResult">
@ -47,6 +51,10 @@
<if test="failIds != null and failIds != ''"> and fail_ids = #{failIds}</if>
<if test="resultStr != null and resultStr != ''"> and result_str = #{resultStr}</if>
<if test="remark != null and remark != ''">and remark like concat('%', #{remark}, '%') </if>
<!--<if test="upDuration != null "> and up_duration = #{upDuration}</if>
<if test="sbStart != null "> and sb_start = #{sbStart}</if>
<if test="sbEnd != null "> and sb_end = #{sbEnd}</if>
<if test="processDuration != null "> and process_duration = #{processDuration}</if>-->
</where>
order by id desc
</select>
@ -81,6 +89,10 @@
<if test="failIds != null">fail_ids,</if>
<if test="resultStr != null">result_str,</if>
<if test="remark != null">remark,</if>
<if test="upDuration != null">up_duration,</if>
<if test="sbStart != null">sb_start,</if>
<if test="sbEnd != null">sb_end,</if>
<if test="processDuration != null">process_duration,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
@ -100,6 +112,10 @@
<if test="failIds != null">#{failIds},</if>
<if test="resultStr != null">#{resultStr},</if>
<if test="remark != null">#{remark},</if>
<if test="upDuration != null">#{upDuration},</if>
<if test="sbStart != null">#{sbStart},</if>
<if test="sbEnd != null">#{sbEnd},</if>
<if test="processDuration != null">#{processDuration},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
@ -123,6 +139,10 @@
<if test="failIds != null">fail_ids = #{failIds},</if>
<if test="resultStr != null">result_str = #{resultStr},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="upDuration != null">up_duration = #{upDuration},</if>
<if test="sbStart != null">sb_start = #{sbStart},</if>
<if test="sbEnd != null">sb_end = #{sbEnd},</if>
<if test="processDuration != null">process_duration = #{processDuration},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>

Loading…
Cancel
Save