master
周文涛 2 years ago
parent 4012766341
commit 84f3ca2808

@ -67,8 +67,8 @@ public class RestUtil {
static {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(300000);
requestFactory.setReadTimeout(300000);
requestFactory.setConnectTimeout(3000000);
requestFactory.setReadTimeout(3000000);
RT = new RestTemplate(requestFactory);
// 解决乱码问题
RT.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));

@ -2,6 +2,7 @@ package org.jeecg.modules.api.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;
@ -14,8 +15,10 @@ import org.jeecg.common.util.AssertUtils;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.common.util.RestUtil;
import org.jeecg.modules.ocr.entity.OcrIdentify;
import org.jeecg.modules.ocr.entity.OcrIdentifyDetail;
import org.jeecg.modules.ocr.entity.OcrRuleCheck;
import org.jeecg.modules.ocr.model.TaskModel;
import org.jeecg.modules.ocr.service.IOcrIdentifyDetailService;
import org.jeecg.modules.ocr.service.IOcrIdentifyService;
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
import org.jeecg.modules.ocr.utils.FileOUtils;
@ -48,6 +51,8 @@ public class ApiController {
@Resource
private IOcrIdentifyService ocrIdentifyService;
@Resource
private IOcrIdentifyDetailService ocrIdentifyDetailService;
@Resource
private ISysDictService sysDictService;
@Resource
private RedisUtil redisUtil;
@ -196,169 +201,19 @@ public class ApiController {
}
//==========================================================================================
/*@ApiOperation(value = "模拟创建任务", notes = "模拟创建任务")
@PostMapping(value = "/pushTask")
@Transactional(rollbackFor = Exception.class)
public Result pushTask(@RequestBody JSONObject jsonObject) {
//获取优先级1的任务
String taskId = jsonObject.getString("taskId");
String taskType = jsonObject.getString("taskType");
int taskLevel= jsonObject.getInteger("taskLevel");
String task_1 = (String) redisUtil.get("task_"+taskLevel);
if (task_1 == null || task_1.equals("[]")) {
//无历史任务
TaskModel task = new TaskModel();
task.setTaskId(taskId);
task.setTaskType(taskType);
task.setTaskStatus("0");//任务 待运行
task.setTaskLevel(taskLevel);
List<TaskModel> jsonObjects = Arrays.asList(task);
task_1 = JSONObject.toJSONString(jsonObjects);
} else {
//有历史任务
JSONArray jsonArray = JSONObject.parseArray(task_1);
if (jsonArray != null) {
List<TaskModel> taskList = jsonArray.toJavaList(TaskModel.class);
List<TaskModel> staskList = taskList.stream().filter(t -> t.getTaskId().equals(taskId)).collect(Collectors.toList());
TaskModel task = null;
if (staskList==null || staskList.size()==0) {
//该任务不存在, 看看 库表里 该任务是否已执行成功了
String overTask = (String) redisUtil.get("over_task");
if (StringUtils.isNotBlank(overTask)&&Arrays.asList(overTask.split(",")).contains(taskId)) {
//库表里已执行过
return Result.OK("该任务已执行结束");
} else {
//库表中未执行过,追加任务
taskList.add(new TaskModel(taskId, taskLevel, taskType, "0", ""));
task_1 = JSONObject.toJSONString(taskList);
}
} else if ("0".equals(staskList.get(0).getTaskStatus())) {
//该任务 待运行
return Result.OK("该任务还处于排队中");
} else if ("1".equals(staskList.get(0).getTaskStatus())) {
//该任务 运行中
return Result.OK("该任务还处于运行中");
}
}
}
//存入redis
redisUtil.set("task_"+taskLevel, task_1);
//执行任务
executeTask();
return Result.OK("已追加到任务");
}*/
/*@Transactional(rollbackFor = Exception.class)
@Async
public void executeTask() {
//获取任务
List<TaskModel> taskList=getTaskList();
//查看是否有执行中的任务
long executingCount = taskList.stream().filter(t -> t.getTaskStatus().equals("1")).count();
if (executingCount>0) {
//该方法正在执行中
log.error("该方法正在执行中");
}
List<TaskModel> waitingTaskList = taskList.stream().filter(t -> t.getTaskStatus().equals("0")).collect(Collectors.toList());
if (waitingTaskList!=null) {
while (waitingTaskList.size()>0){
//取第一个任务
TaskModel taskModel = waitingTaskList.get(0);
waitingTaskList.get(0).setTaskStatus("1");
//刷新redis执行中
flushTask(taskModel.getTaskId(),1);
//执行
executeTaskp(taskModel);
//刷新已知任务
taskList=getTaskList();
//刷新待运行任务
waitingTaskList = taskList.stream().filter(t -> t.getTaskStatus().equals("0")).collect(Collectors.toList());
@ApiOperation(value = "刷新为完成的任务", notes = "任务完结通知")
@GetMapping("/restartTask")
public Result restartTask(){
//获取未执行完的任务
List<OcrIdentify> list = ocrIdentifyService.list(new LambdaQueryWrapper<OcrIdentify>().eq(OcrIdentify::getStatus, "0"));
List<String> identifyIdList = list.stream().map(l -> l.getId()).collect(Collectors.toList());
if (identifyIdList.size()>0) {
ocrIdentifyDetailService.remove(new LambdaQueryWrapper<OcrIdentifyDetail>().in(OcrIdentifyDetail::getIdentifyId,identifyIdList));
for (OcrIdentify ocrIdentify : list) {
List<String> identifyUrlList = FileOUtils.fileLists(null, ocrIdentify.getIdentifyUrl());
ocrIdentifyService.postSemantic(ocrIdentify,identifyUrlList);
}
}
log.error("任务已全部执行");
return Result.OK(list.size()+"个任务.");
}
*//**
*
* @param taskId
* @param status 1 2
*//*
public void flushTask(String taskId,int status) {
List<TaskModel> taskList = getTaskList();
if (taskList!=null && taskList.size()>0) {
TaskModel taskModel = taskList.stream().filter(t -> t.getTaskId().equals(taskId)).findFirst().get();
if (taskModel!=null) {
int taskLevel = taskModel.getTaskLevel();
String task=(String) redisUtil.get("task_"+taskLevel);
JSONArray taskJsonArray = JSONObject.parseArray(task);
taskList=new ArrayList<>();
if (task!=null) {
taskList.addAll(taskJsonArray.toJavaList(TaskModel.class));
}
if (status==1) {
//更新任务状态
taskList.forEach(t->{
if (t.getTaskId().equals(taskId)) {
t.setTaskStatus("1");
}
});
}else if(status==2){
//删除任务
taskList=taskList.stream().filter(t->!t.getTaskId().equals(taskId)).collect(Collectors.toList());
}
String s = JSONObject.toJSONString(taskList);
//存入redis
redisUtil.set("task_"+taskLevel,s);
}
}
}
//执行任务
public void executeTaskp(TaskModel taskModel){
//睡眠
try {
Thread.sleep(20000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
//模拟执行成功
String overTaskIds = (String) redisUtil.get("over_task");
if (StringUtils.isBlank(overTaskIds)) {
overTaskIds=taskModel.getTaskId();
}else{
if (!Arrays.asList(overTaskIds.split(",")).contains(taskModel.getTaskId())) {
//该任务未执行过
overTaskIds+=","+taskModel.getTaskId();
}else{
//该任务已结束过
}
}
//存入已执行 redis里
redisUtil.set("over_task",overTaskIds);
log.error( taskModel.getTaskLevel()+"-级别,"+ taskModel.getTaskId()+"-已执行");
//从3中任务集中删除该任务
flushTask(taskModel.getTaskId(),2);
}
//获取全部任务
public List<TaskModel> getTaskList(){
String task_1 = (String) redisUtil.get("task_1");
String task_2 = (String) redisUtil.get("task_2");
String task_3 = (String) redisUtil.get("task_3");
JSONArray task1JsonArray = JSONObject.parseArray(task_1);
JSONArray task2JsonArray = JSONObject.parseArray(task_2);
JSONArray task3JsonArray = JSONObject.parseArray(task_3);
List<TaskModel> taskList=new ArrayList<>();
if (task1JsonArray!=null) {
taskList.addAll(task1JsonArray.toJavaList(TaskModel.class));
}
if (task2JsonArray!=null) {
taskList.addAll(task2JsonArray.toJavaList(TaskModel.class));
}
if (task3JsonArray!=null) {
taskList.addAll(task3JsonArray.toJavaList(TaskModel.class));
}
return taskList;
}*/
}

Loading…
Cancel
Save