diff --git a/htmlweb/web/backstage/oa/ocr/prevailcloudlog/list.html b/htmlweb/web/backstage/oa/ocr/prevailcloudlog/list.html
index e650d5ce..038e6ccc 100644
--- a/htmlweb/web/backstage/oa/ocr/prevailcloudlog/list.html
+++ b/htmlweb/web/backstage/oa/ocr/prevailcloudlog/list.html
@@ -5,7 +5,7 @@
数据拉取日志
-
+
<#include "/head/headlist.html" />
@@ -141,6 +141,7 @@
},
{width: 80, valign: "middle", field: 'responseParam', title: '响应参数', sortable: true},
{width: 80, valign: "middle", field: 'requestParam', title: '请求参数', sortable: true},
+ {width: 80, valign: "middle", field: 'time', title: '重试次数', sortable: true},
{
width:200,
field: 'id',
@@ -148,9 +149,8 @@
formatter:function(value,oData,index) {
var listOperation = "";
$(jspOperation).each(function (i, toolbar) {
- console.log(toolbar);
if (toolbar.text === '修改' && oData.status !== 100) {
- listOperation = listOperation + " " + "重试" + " ";
+ listOperation = listOperation + " " + "重试" + " ";
}
});
return listOperation;
@@ -167,7 +167,7 @@
_tableListPost.bootstrapTable('refreshOptions',{pageNumber:1});
}
- function updateData(jframeid,str){
+ function updateData(jframeid,str,id){
$(document).ready(function() {
// Encode the parameter string to be URL-safe
// Make an AJAX GET request
@@ -175,14 +175,17 @@
url: '${ctx}/test/api/pullPictureByParameter', // Replace with your server endpoint
type: 'GET',
headers: {"logintoken": parent.getLoginToken()},
- data: { parameterString: str },
+ data: { parameterString: str, id },
success: function(response) {
- console.log(response);
- toastr.success('Request was successful!');
+ if (response || "success" === response) {
+ refreshTable();
+ toastr.success('Request was successful!');
+ } else {
+ toastr.error('Request was failed!');
+ }
},
error: function(xhr, status, error) {
- console.log(error);
- toastr.error('Request was failed!');
+ toastr.error('Request has exception!');
}
});
});
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/PrevailCloudApiController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/PrevailCloudApiController.java
index 8e9d85dd..a30ba542 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/PrevailCloudApiController.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/PrevailCloudApiController.java
@@ -13,22 +13,21 @@ import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.api.thread.PullAllPictureSourceThread;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiPage;
+import cn.jyjz.xiaoyao.ocr.common.PrevailCloudConstant;
+import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import cn.jyjz.xiaoyao.ocr.util.RequestParameterFormat;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps;
-import lombok.extern.flogger.Flogger;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import sun.nio.ch.ThreadPool;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -38,7 +37,11 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
/**
* 无量云api控制器
@@ -70,7 +73,7 @@ public class PrevailCloudApiController {
/**
* 用于执行全量拉取的定长线程池
*/
- private ExecutorService pictureSourceAllPool = new ThreadPoolExecutor(
+ private ExecutorService pictureSourceAllPool = new ThreadPoolExecutor(
1,
1,
3,
@@ -87,32 +90,33 @@ public class PrevailCloudApiController {
/**
* 拉取无量云全量任务数据,根据业务主体
+ *
* @param request
* @return
*/
@GetMapping("pullPictureAllByAccountNo")
- public String pullPictureAllByAccountNo(HttpServletRequest request){
+ public String pullPictureAllByAccountNo(HttpServletRequest request) {
//检查是否已有全量拉取在执行
- if(pictureSourceAllPullMsg.isLock()){
+ if (pictureSourceAllPullMsg.isLock()) {
return pictureSourceAllPullMsg.getMsg();
}
//1.定义参数
String beginStr = request.getParameter("beginStr");
- if(StringUtils.isBlank(beginStr)){
+ if (StringUtils.isBlank(beginStr)) {
return "开始时间不能为空";
}
String endStr = request.getParameter("endStr");
- if(StringUtils.isBlank(endStr)){
+ if (StringUtils.isBlank(endStr)) {
return "结束时间不能为空";
}
String tenantNoStr = request.getParameter("tenantNo");
- if(StringUtils.isBlank(tenantNoStr)){
+ if (StringUtils.isBlank(tenantNoStr)) {
return "租户不能为空";
}
String accountNoStr = request.getParameter("accountNo");
- if(StringUtils.isBlank(accountNoStr)){
+ if (StringUtils.isBlank(accountNoStr)) {
return "业务主体不能为空";
}
Long tenantNo = Long.parseLong(tenantNoStr);
@@ -125,8 +129,8 @@ public class PrevailCloudApiController {
//3.调用线程
pictureSourceAllPool.execute(
- new PullAllPictureSourceThread(tenantNo,accountNo,startDate
- ,endDate,pictureSourceAllPullMsg,prevailCloudApi,apiConfig)
+ new PullAllPictureSourceThread(tenantNo, accountNo, startDate
+ , endDate, pictureSourceAllPullMsg, prevailCloudApi, apiConfig)
);
return "执行开始";
}
@@ -159,7 +163,7 @@ public class PrevailCloudApiController {
DateTime dateTime = DateUtil.parse(beginStr + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
// DateTime dateTime = DateUtil.parse("2024-03-31 07:00:000","yyyy-MM-dd HH:mm:ss");
Instant binstant = dateTime.toInstant();
- DateTime dateTime1 = DateUtil.parse(endStr+" 23:59:59","yyyy-MM-dd HH:mm:ss");
+ DateTime dateTime1 = DateUtil.parse(endStr + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
// DateTime dateTime1 = DateUtil.parse("2024-03-31 09:00:00","yyyy-MM-dd HH:mm:ss");
Instant einstant = dateTime1.toInstant();
pictureSourceParameter.setStartTime(Date.from(binstant));
@@ -279,11 +283,23 @@ public class PrevailCloudApiController {
}
@GetMapping("/pullPictureByParameter")
- public Boolean pullPictureByParameter(String parameterString) {
+ public Boolean pullPictureByParameter(String parameterString, Long id) {
+ OcrPrevailCloudLog byId = ocrPrevailCloudLogService.getById(id);
+ if (byId == null) {
+ return false;
+ }
+
PictureSourceParameter pictureSourceParameter = RequestParameterFormat.fromString(parameterString);
List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter);
if (CollectionUtils.isEmpty(resultList)) {
- return false;
+ //更新日志
+ OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
+ .status(100)
+ .id(id)
+ .time(byId.getTime() + 1)
+ .build();
+ ocrPrevailCloudLogService.updateById(ocrPrevailCloudLog);
+ return true;
}
for (PictureSourceResult pictureSourceResult : resultList) {
@@ -299,7 +315,7 @@ public class PrevailCloudApiController {
//赋值默认参数
pictureSourceResult.setRequestParam(pictureSourceParameter);
//将可以处理数据放入处理队列中
- TaskQueue.pictureDisposePushData(pictureSourceResult, ocrPictureService, ocrPrevailCloudLogService);
+ TaskQueue.pictureDisposePushDataUpdateLog(pictureSourceResult, id, ocrPictureService, ocrPrevailCloudLogService);
}
return true;
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPrevailCloudLog.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPrevailCloudLog.java
index 070821c3..1d24d759 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPrevailCloudLog.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPrevailCloudLog.java
@@ -113,4 +113,10 @@ public class OcrPrevailCloudLog {
*/
@TableField(value = "redundance")
private String redundance;
+
+ /**
+ * 重试次数
+ */
+ @TableField(value = "time")
+ private Integer time = 0;
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java
index 29a11c51..139c6d9b 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java
@@ -48,11 +48,11 @@ public class TaskQueue {
if (ocrPicture != null) {
OcrTaskchildPicture taskchildPicture = ocrPictureService.getOcrTaskChildPictureByPictureId(ocrPicture.getId().toString());
if (taskchildPicture != null && pictureSourceResult.getTaskStatus() != null
- && (pictureSourceResult.getTaskStatus() == 6 || pictureSourceResult.getTaskStatus() == 7) && (taskchildPicture.getStates() == 5 || taskchildPicture.getStates()==3)) {
- if(taskchildPicture.getStates() == 5){
+ && (pictureSourceResult.getTaskStatus() == 6 || pictureSourceResult.getTaskStatus() == 7) && (taskchildPicture.getStates() == 5 || taskchildPicture.getStates() == 3)) {
+ if (taskchildPicture.getStates() == 5) {
String result = ocrPictureService.getPictureApproveResult(ocrPicture.getId());
pictureSourceResult.setComment(result);
- }else{
+ } else {
pictureSourceResult.setComment("ocr审批全部通过,由无量云发起了重置审批流程的操作。");
}
ocrPictureService.deletePictureInfo(ocrPicture.getId());
@@ -68,6 +68,7 @@ public class TaskQueue {
.responseParam(pictureSourceResult.toString())
.type(PrevailCloudConstant.DISPOSE_PICTURE_SOURCE)
.status(100)
+ .time(0)
.build();
ocrPrevailCloudLogService.save(ocrPrevailCloudLog);
resultSet.add(String.valueOf(taskId));
@@ -79,6 +80,7 @@ public class TaskQueue {
.responseParam(pictureSourceResult.toString())
.type(PrevailCloudConstant.DISPOSE_PICTURE_SOURCE)
.status(500)
+ .time(0)
.build();
ocrPrevailCloudLogService.save(ocrPrevailCloudLog);
return false;
@@ -86,6 +88,67 @@ public class TaskQueue {
return true;
}
+ /**
+ * [重试]无量云接口数据处理 push 队列值bi
+ *
+ * @param pictureSourceResult //三方拉取 获取到的图片对象
+ * @return
+ */
+ public static boolean pictureDisposePushDataUpdateLog(PictureSourceResult pictureSourceResult, Long id, OcrPictureService ocrPictureService, OcrPrevailCloudLogService ocrPrevailCloudLogService) {
+ OcrPrevailCloudLog byId = ocrPrevailCloudLogService.getById(id);
+ if (byId == null) {
+ return false;
+ }
+
+ try {
+ Long taskId = pictureSourceResult.getTaskId();
+ OcrPicture ocrPicture = ocrPictureService.selectByRemark(String.valueOf(taskId));
+ if (ocrPicture != null) {
+ OcrTaskchildPicture taskchildPicture = ocrPictureService.getOcrTaskChildPictureByPictureId(ocrPicture.getId().toString());
+ if (taskchildPicture != null && pictureSourceResult.getTaskStatus() != null
+ && (pictureSourceResult.getTaskStatus() == 6 || pictureSourceResult.getTaskStatus() == 7) && (taskchildPicture.getStates() == 5 || taskchildPicture.getStates() == 3)) {
+ if (taskchildPicture.getStates() == 5) {
+ String result = ocrPictureService.getPictureApproveResult(ocrPicture.getId());
+ pictureSourceResult.setComment(result);
+ } else {
+ pictureSourceResult.setComment("ocr审批全部通过,由无量云发起了重置审批流程的操作。");
+ }
+ ocrPictureService.deletePictureInfo(ocrPicture.getId());
+ pictureSourceResult.setId(ocrPicture.getId());
+ } else {
+ return true;
+ }
+ }
+
+ //更新日志
+ OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
+ .formId(pictureSourceResult.getTaskId())
+ .requestParam(pictureSourceResult.getRequestParam().toString())
+ .responseParam(pictureSourceResult.toString())
+ .type(PrevailCloudConstant.DISPOSE_PICTURE_SOURCE)
+ .status(100)
+ .id(id)
+ .time(byId.getTime() + 1)
+ .build();
+ ocrPrevailCloudLogService.updateById(ocrPrevailCloudLog);
+ resultSet.add(String.valueOf(taskId));
+ pictureDisposeQueue.put(pictureSourceResult);
+ } catch (InterruptedException e) {
+ OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
+ .formId(pictureSourceResult.getTaskId())
+ .requestParam(pictureSourceResult.getRequestParam().toString())
+ .responseParam(pictureSourceResult.toString())
+ .type(PrevailCloudConstant.DISPOSE_PICTURE_SOURCE)
+ .status(500)
+ .time(byId.getTime() + 1)
+ .id(id)
+ .build();
+ ocrPrevailCloudLogService.updateById(ocrPrevailCloudLog);
+ return false;
+ }
+ return true;
+ }
+
/**
* 无量云接口数据处理 拉取队列值
*