|
@@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
@Service
|
|
@Service
|
|
@@ -89,40 +90,57 @@ public class DecisionTaskServiceImpl implements DecisionTaskService {
|
|
|
shape = "SRID=" + "4326" + ";" + shape;
|
|
shape = "SRID=" + "4326" + ";" + shape;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ Date now = new Date();
|
|
|
DecisionTask decisionTask = new DecisionTask();
|
|
DecisionTask decisionTask = new DecisionTask();
|
|
|
decisionTask.generateId();
|
|
decisionTask.generateId();
|
|
|
decisionTask.setName(name);
|
|
decisionTask.setName(name);
|
|
|
decisionTask.setStatus("1"); // 任务状态 0 创建 1 执行中 2 成功 3 失败
|
|
decisionTask.setStatus("1"); // 任务状态 0 创建 1 执行中 2 成功 3 失败
|
|
|
- decisionTask.setCreateTime(new Date());
|
|
|
|
|
|
|
+ decisionTask.setCreateTime(now);
|
|
|
|
|
+ decisionTask.setStartTime(now);
|
|
|
decisionTask.setGeom(shape);
|
|
decisionTask.setGeom(shape);
|
|
|
|
|
+ decisionTask.setTypeId(dataType.stream().map(Object::toString).collect(Collectors.joining(",")));// 这里将数据类型列表转换为逗号分隔的字符串存储
|
|
|
decisionTask.setShapeArea(BigDecimal.valueOf(0.0)); // 这里进行占位符
|
|
decisionTask.setShapeArea(BigDecimal.valueOf(0.0)); // 这里进行占位符
|
|
|
decisionTask.setFilePath(shapeFilePath);
|
|
decisionTask.setFilePath(shapeFilePath);
|
|
|
decisionTaskMapper.add(decisionTask);
|
|
decisionTaskMapper.add(decisionTask);
|
|
|
//return decisionTask;
|
|
//return decisionTask;
|
|
|
|
|
|
|
|
-
|
|
|
|
|
String finalShape = shape;
|
|
String finalShape = shape;
|
|
|
- Arrays.stream(DecisionType.values()).forEach(type -> {
|
|
|
|
|
- if(dataType.contains(Integer.parseInt(type.getCode()))) {
|
|
|
|
|
- List<String> tableIds = new ArrayList<>();
|
|
|
|
|
- DecisionIntersectsDetailsVo param = new DecisionIntersectsDetailsVo();
|
|
|
|
|
- param.setTaskId(decisionTask.getId());
|
|
|
|
|
- param.setTableName(type.getTable());
|
|
|
|
|
- param.setType(Integer.parseInt(type.getCode()));
|
|
|
|
|
- param.setSourceId(type.getSourceId());
|
|
|
|
|
- param.setDetailsName(type.getDetailsName());
|
|
|
|
|
- param.setEwkt(finalShape);
|
|
|
|
|
- param.setTableIds(tableIds);
|
|
|
|
|
- decisionTaskMapper.insertDecisionIntersection(param);
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ try{
|
|
|
|
|
+ Arrays.stream(DecisionType.values()).forEach(type -> {
|
|
|
|
|
+ if(dataType.contains(Integer.parseInt(type.getCode()))) {
|
|
|
|
|
+ List<String> tableIds = new ArrayList<>();
|
|
|
|
|
+ DecisionIntersectsDetailsVo param = new DecisionIntersectsDetailsVo();
|
|
|
|
|
+ param.setTaskId(decisionTask.getId());
|
|
|
|
|
+ param.setTableName(type.getTable());
|
|
|
|
|
+ param.setType(Integer.parseInt(type.getCode()));
|
|
|
|
|
+ param.setSourceId(type.getSourceId());
|
|
|
|
|
+ param.setDetailsName(type.getDetailsName());
|
|
|
|
|
+ param.setEwkt(finalShape);
|
|
|
|
|
+ param.setTableIds(tableIds);
|
|
|
|
|
+ decisionTaskMapper.insertDecisionIntersection(param);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ DecisionTask decisionTaskForUpdate = new DecisionTask();
|
|
|
|
|
+ decisionTaskForUpdate.setId(decisionTask.getId());
|
|
|
|
|
+ decisionTaskForUpdate.setStatus("2"); // 任务状态 0 创建 1 执行中 2 成功 3 失败
|
|
|
|
|
+ decisionTaskForUpdate.setEndTime(new Date());
|
|
|
|
|
+ decisionTaskMapper.update(decisionTaskForUpdate);
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ log.warn("------数据分析交集计算出现异常,{}",e);
|
|
|
|
|
+ }finally {
|
|
|
|
|
+ DecisionTask decisionTaskForUpdate = new DecisionTask();
|
|
|
|
|
+ decisionTaskForUpdate.setId(decisionTask.getId());
|
|
|
|
|
+ decisionTaskForUpdate.setStatus("3"); // 任务状态 0 创建 1 执行中 2 成功 3 失败
|
|
|
|
|
+ decisionTaskForUpdate.setEndTime(new Date());
|
|
|
|
|
+ decisionTaskMapper.update(decisionTaskForUpdate);
|
|
|
|
|
+ }
|
|
|
return decisionTask;
|
|
return decisionTask;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
*
|
|
*
|
|
|
* 根据当前任务id,返回此次任务的所有结果,并且需要根据不同类型动态查询
|
|
* 根据当前任务id,返回此次任务的所有结果,并且需要根据不同类型动态查询
|
|
@@ -150,6 +168,11 @@ public class DecisionTaskServiceImpl implements DecisionTaskService {
|
|
|
|
|
|
|
|
// 遍历所有 DecisionType,逐类型查询并组装结果
|
|
// 遍历所有 DecisionType,逐类型查询并组装结果
|
|
|
for (DecisionType decisionType : DecisionType.values()) {
|
|
for (DecisionType decisionType : DecisionType.values()) {
|
|
|
|
|
+ if(!StringUtils.containsAny(task.getTypeId(), decisionType.getCode())) {
|
|
|
|
|
+ log.info("------当前任务id:{},不包含数据类型:{},跳过查询", taskId, decisionType.getName());
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
DecisionTaskParamVo param = new DecisionTaskParamVo();
|
|
DecisionTaskParamVo param = new DecisionTaskParamVo();
|
|
|
param.setTaskId(taskId);
|
|
param.setTaskId(taskId);
|
|
|
param.setType(Integer.parseInt(decisionType.getCode()));
|
|
param.setType(Integer.parseInt(decisionType.getCode()));
|