Commit fb19cf96 by liuyongshuai

1.去除区域碰撞标识号的重复数据,优化效率,这样入库标识号就会少很多,调取关联关系也会节省很多时间;

2.优化第二步调取关联信息定时线程,添加根据taskCaseId过滤条件
parent a000c746
......@@ -105,7 +105,7 @@ public class ScheduledService {
* 2.开启新线程调取标识号的关联数据
* 3.调取标识号关联数据完成,然后更新任务
*/
@Scheduled(initialDelay = 120000,fixedDelay = 180000) //项目启动后延迟两分钟执行,每次执行完后两分钟后再次执行
@Scheduled(initialDelay = 120000,fixedDelay = 60000) //项目启动后延迟两分钟执行,每次执行完后两分钟后再次执行
public void queryFinishTaskResult(){
System.out.println("=============开始执行调取关联数据定时任务================");
System.out.println("线程名称========== " + Thread.currentThread().getName());
......@@ -114,26 +114,21 @@ public class ScheduledService {
List<RegionalTask> taskList = regionalTaskRepository.findAll(new Specification<RegionalTask>() {
@Override
public Predicate toPredicate(Root<RegionalTask> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> list = new ArrayList<>();
Expression<String> exp = root.<String>get("state");
list.add(exp.in(Arrays.asList("FINISHED")));
Predicate[] p = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(p));
Predicate p1 = criteriaBuilder.like(root.get("taskCaseId").as(String.class), "A%");
Predicate p2 = criteriaBuilder.equal(root.get("state").as(String.class), "FINISHED");
criteriaQuery.where(criteriaBuilder.and(p1,p2));
return criteriaQuery.getRestriction();
}
});
System.out.println("开始查询ddddd============================================================");
System.out.println(taskList);
if(taskList != null && !taskList.isEmpty()){
for (RegionalTask task:taskList) {
List<RegionalTaskResult> taskResults = taskResultRepository.findAllByTaskId(task.getTaskId());
//保存区域碰撞结果翻译后的数据
getAndSaveRydetail(taskResults);
//查询状态,并更新状态
Map<String,String> taskMap = queryTaskStates(task.getTaskId());
String progress = taskMap.get("progress");
String state = taskMap.get("state");
//判断当前任务状态和查询任务状态是否一致,如果不一致 进行更新
if(!state.equals(task.getState())){
updateTaskStates(task.getTaskId(), progress, state);
}
updateTaskStates(task.getTaskId(), "2", "END");
}
}
}catch (Exception e){
......@@ -141,6 +136,13 @@ public class ScheduledService {
}
}
/**
* 通过区域碰撞的结果 使用第四个接口调取关联数据
*/
......@@ -233,6 +235,7 @@ public class ScheduledService {
JSONArray jsonArray = o.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
List<RegionalTaskResult> taskResults = jsonArray.toJavaList(RegionalTaskResult.class);
taskResults = removeDuplicate(taskResults);
if(taskResults != null && !taskResults.isEmpty()){
Iterator<RegionalTaskResult> resultIterator = taskResults.iterator();
while (resultIterator.hasNext()){
......@@ -280,6 +283,23 @@ public class ScheduledService {
return map;
}
/**
* 去除重复数据
* @param list
* @return
*/
public static List<RegionalTaskResult> removeDuplicate(List<RegionalTaskResult> list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).getObjectValue().equals(list.get(i).getObjectValue())&&list.get(j).getObjectType().equals(list.get(i).getObjectType())) {
list.remove(j);
}
}
}
return list;
}
/**
* 修改任务状态
* @param taskId
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment