|
@@ -4,26 +4,14 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
|
import com.global.base.log.LogLevelFlag;
|
|
import com.global.base.log.LogLevelFlag;
|
|
import com.global.base.log.LogPrintMgr;
|
|
import com.global.base.log.LogPrintMgr;
|
|
import com.shkpr.service.alambizplugin.apiparam.GisSurveyCheckParams;
|
|
import com.shkpr.service.alambizplugin.apiparam.GisSurveyCheckParams;
|
|
-import com.shkpr.service.alambizplugin.components.checker.CrossLinesFinder;
|
|
|
|
-import com.shkpr.service.alambizplugin.components.checker.DuplicatePointsFinder;
|
|
|
|
-import com.shkpr.service.alambizplugin.components.checker.ElevationDiffFinder;
|
|
|
|
-import com.shkpr.service.alambizplugin.components.checker.InvalidLinesFinder;
|
|
|
|
-import com.shkpr.service.alambizplugin.components.checker.IsolatedLinesFinder;
|
|
|
|
-import com.shkpr.service.alambizplugin.components.checker.IsolatedPointsFinder;
|
|
|
|
-import com.shkpr.service.alambizplugin.components.checker.OverlapLinesFinder;
|
|
|
|
|
|
+import com.shkpr.service.alambizplugin.components.checker.*;
|
|
import com.shkpr.service.alambizplugin.constants.CommAsyncStatusEnum;
|
|
import com.shkpr.service.alambizplugin.constants.CommAsyncStatusEnum;
|
|
import com.shkpr.service.alambizplugin.constants.GisSurveyCheckTypeEnum;
|
|
import com.shkpr.service.alambizplugin.constants.GisSurveyCheckTypeEnum;
|
|
import com.shkpr.service.alambizplugin.constants.GisSurveySystemCheckKeys;
|
|
import com.shkpr.service.alambizplugin.constants.GisSurveySystemCheckKeys;
|
|
import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
|
|
import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisSurveyLayerApplyService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisSurveyLayerApplyService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.TypeDefineService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.TypeDefineService;
|
|
-import com.shkpr.service.alambizplugin.dto.CommAsyncResult;
|
|
|
|
-import com.shkpr.service.alambizplugin.dto.GisSurveyLayerApplyLine;
|
|
|
|
-import com.shkpr.service.alambizplugin.dto.GisSurveyLayerApplyPoint;
|
|
|
|
-import com.shkpr.service.alambizplugin.dto.GisSurveySystemCheckDefine;
|
|
|
|
-import com.shkpr.service.alambizplugin.dto.GisSurveySystemCheckId;
|
|
|
|
-import com.shkpr.service.alambizplugin.dto.GisSurveySystemCheckResultDetail;
|
|
|
|
-import com.shkpr.service.alambizplugin.dto.TypeDefine;
|
|
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.*;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.AsyncResult;
|
|
import org.springframework.scheduling.annotation.AsyncResult;
|
|
@@ -59,6 +47,7 @@ public class GisSurveySystemChecker {
|
|
private final AsyncResultManager asyncResultManager;
|
|
private final AsyncResultManager asyncResultManager;
|
|
private final GisSurveyLayerApplyService gisSurveyLayerApplyService;
|
|
private final GisSurveyLayerApplyService gisSurveyLayerApplyService;
|
|
private final TypeDefineService typeDefineService;
|
|
private final TypeDefineService typeDefineService;
|
|
|
|
+ private final InvalidPointsFinder invalidPointsFinder;
|
|
private final IsolatedPointsFinder isolatedPointsFinder;
|
|
private final IsolatedPointsFinder isolatedPointsFinder;
|
|
private final IsolatedLinesFinder isolatedLinesFinder;
|
|
private final IsolatedLinesFinder isolatedLinesFinder;
|
|
private final DuplicatePointsFinder duplicatePointsFinder;
|
|
private final DuplicatePointsFinder duplicatePointsFinder;
|
|
@@ -69,15 +58,16 @@ public class GisSurveySystemChecker {
|
|
|
|
|
|
public GisSurveySystemChecker(AsyncResultManager asyncResultManager
|
|
public GisSurveySystemChecker(AsyncResultManager asyncResultManager
|
|
, GisSurveyLayerApplyService gisSurveyLayerApplyService, TypeDefineService typeDefineService
|
|
, GisSurveyLayerApplyService gisSurveyLayerApplyService, TypeDefineService typeDefineService
|
|
- , IsolatedPointsFinder isolatedPointsFinder, IsolatedLinesFinder isolatedLinesFinder
|
|
|
|
- , DuplicatePointsFinder duplicatePointsFinder, InvalidLinesFinder invalidLinesFinder
|
|
|
|
- , OverlapLinesFinder overlapLinesFinder, CrossLinesFinder crossLinesFinder
|
|
|
|
- , ElevationDiffFinder elevationDiffFinder) {
|
|
|
|
|
|
+ , InvalidPointsFinder invalidPointsFinder, IsolatedPointsFinder isolatedPointsFinder
|
|
|
|
+ , IsolatedLinesFinder isolatedLinesFinder, DuplicatePointsFinder duplicatePointsFinder
|
|
|
|
+ , InvalidLinesFinder invalidLinesFinder, OverlapLinesFinder overlapLinesFinder
|
|
|
|
+ , CrossLinesFinder crossLinesFinder, ElevationDiffFinder elevationDiffFinder) {
|
|
mStrClassName = "GisSurveySystemChecker";
|
|
mStrClassName = "GisSurveySystemChecker";
|
|
mBizType = LogFlagBusiType.BUSI_GIS_SURVEY.toStrValue();
|
|
mBizType = LogFlagBusiType.BUSI_GIS_SURVEY.toStrValue();
|
|
this.asyncResultManager = asyncResultManager;
|
|
this.asyncResultManager = asyncResultManager;
|
|
this.gisSurveyLayerApplyService = gisSurveyLayerApplyService;
|
|
this.gisSurveyLayerApplyService = gisSurveyLayerApplyService;
|
|
this.typeDefineService = typeDefineService;
|
|
this.typeDefineService = typeDefineService;
|
|
|
|
+ this.invalidPointsFinder = invalidPointsFinder;
|
|
this.isolatedPointsFinder = isolatedPointsFinder;
|
|
this.isolatedPointsFinder = isolatedPointsFinder;
|
|
this.isolatedLinesFinder = isolatedLinesFinder;
|
|
this.isolatedLinesFinder = isolatedLinesFinder;
|
|
this.duplicatePointsFinder = duplicatePointsFinder;
|
|
this.duplicatePointsFinder = duplicatePointsFinder;
|
|
@@ -109,6 +99,8 @@ public class GisSurveySystemChecker {
|
|
CommAsyncResult<Map<String, GisSurveySystemCheckResultDetail>> result = CommAsyncResult.fail(systemCheckId.toString());
|
|
CommAsyncResult<Map<String, GisSurveySystemCheckResultDetail>> result = CommAsyncResult.fail(systemCheckId.toString());
|
|
result.setOperator(params.getOperator());
|
|
result.setOperator(params.getOperator());
|
|
|
|
|
|
|
|
+ //无效点任务
|
|
|
|
+ ListenableFuture<GisSurveySystemCheckResultDetail> invalidPointsFuture = null;
|
|
//孤立点任务
|
|
//孤立点任务
|
|
ListenableFuture<GisSurveySystemCheckResultDetail> isolatedPointsFuture = null;
|
|
ListenableFuture<GisSurveySystemCheckResultDetail> isolatedPointsFuture = null;
|
|
//孤立线任务
|
|
//孤立线任务
|
|
@@ -173,6 +165,13 @@ public class GisSurveySystemChecker {
|
|
//子任务
|
|
//子任务
|
|
HashMap<String, ListenableFuture<GisSurveySystemCheckResultDetail>> subtask = new HashMap<>();
|
|
HashMap<String, ListenableFuture<GisSurveySystemCheckResultDetail>> subtask = new HashMap<>();
|
|
|
|
|
|
|
|
+ //无效点检查
|
|
|
|
+ if (points != null) {
|
|
|
|
+ if (params.getStartSubitemKeys().contains(GisSurveySystemCheckKeys.INVALID_POINTS)) {
|
|
|
|
+ invalidPointsFuture = invalidPointsFinder.finderInvalidPoints(points, systemCheckId);
|
|
|
|
+ subtask.put(GisSurveySystemCheckKeys.INVALID_POINTS, invalidPointsFuture);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
//孤立点检查
|
|
//孤立点检查
|
|
if (points != null && lines != null) {
|
|
if (points != null && lines != null) {
|
|
if (params.getStartSubitemKeys().contains(GisSurveySystemCheckKeys.ISOLATED_POINTS)) {
|
|
if (params.getStartSubitemKeys().contains(GisSurveySystemCheckKeys.ISOLATED_POINTS)) {
|
|
@@ -231,13 +230,21 @@ public class GisSurveySystemChecker {
|
|
if (lastResult != null && lastResult.getRefreshTimes() != null) refreshTimes = lastResult.getRefreshTimes();
|
|
if (lastResult != null && lastResult.getRefreshTimes() != null) refreshTimes = lastResult.getRefreshTimes();
|
|
|
|
|
|
//等待结果,并存入返回,优先监听点相关(执行速度快且只需要点集合,优先释放点集合内存)
|
|
//等待结果,并存入返回,优先监听点相关(执行速度快且只需要点集合,优先释放点集合内存)
|
|
|
|
+ if (invalidPointsFuture != null) {
|
|
|
|
+ //监听无效点
|
|
|
|
+ final GisSurveySystemCheckResultDetail invalidPointsResult = invalidPointsFuture.get();
|
|
|
|
+ data.put(GisSurveySystemCheckKeys.INVALID_POINTS, invalidPointsResult);
|
|
|
|
+ refreshTimes.put(GisSurveySystemCheckKeys.INVALID_POINTS, params.getRefreshTime());
|
|
|
|
+ //释放点缓存
|
|
|
|
+ clearPoints(points, invalidPointsFuture, isolatedPointsFuture, duplicatePointsFuture, invalidLinesFuture);
|
|
|
|
+ }
|
|
if (isolatedPointsFuture != null) {
|
|
if (isolatedPointsFuture != null) {
|
|
//监听孤立点
|
|
//监听孤立点
|
|
final GisSurveySystemCheckResultDetail isolatedPointsResult = isolatedPointsFuture.get();
|
|
final GisSurveySystemCheckResultDetail isolatedPointsResult = isolatedPointsFuture.get();
|
|
data.put(GisSurveySystemCheckKeys.ISOLATED_POINTS, isolatedPointsResult);
|
|
data.put(GisSurveySystemCheckKeys.ISOLATED_POINTS, isolatedPointsResult);
|
|
refreshTimes.put(GisSurveySystemCheckKeys.ISOLATED_POINTS, params.getRefreshTime());
|
|
refreshTimes.put(GisSurveySystemCheckKeys.ISOLATED_POINTS, params.getRefreshTime());
|
|
//释放点缓存
|
|
//释放点缓存
|
|
- clearPoints(points, isolatedPointsFuture, duplicatePointsFuture, invalidLinesFuture);
|
|
|
|
|
|
+ clearPoints(points, invalidPointsFuture, isolatedPointsFuture, duplicatePointsFuture, invalidLinesFuture);
|
|
}
|
|
}
|
|
if (duplicatePointsFuture != null) {
|
|
if (duplicatePointsFuture != null) {
|
|
//监听重复点
|
|
//监听重复点
|
|
@@ -245,7 +252,7 @@ public class GisSurveySystemChecker {
|
|
data.put(GisSurveySystemCheckKeys.DUPLICATE_POINTS, duplicatePointsResult);
|
|
data.put(GisSurveySystemCheckKeys.DUPLICATE_POINTS, duplicatePointsResult);
|
|
refreshTimes.put(GisSurveySystemCheckKeys.DUPLICATE_POINTS, params.getRefreshTime());
|
|
refreshTimes.put(GisSurveySystemCheckKeys.DUPLICATE_POINTS, params.getRefreshTime());
|
|
//释放点缓存
|
|
//释放点缓存
|
|
- clearPoints(points, isolatedPointsFuture, duplicatePointsFuture, invalidLinesFuture);
|
|
|
|
|
|
+ clearPoints(points, invalidPointsFuture, isolatedPointsFuture, duplicatePointsFuture, invalidLinesFuture);
|
|
}
|
|
}
|
|
if (isolatedLinesFuture != null) {
|
|
if (isolatedLinesFuture != null) {
|
|
//监听孤立线
|
|
//监听孤立线
|
|
@@ -259,7 +266,7 @@ public class GisSurveySystemChecker {
|
|
data.put(GisSurveySystemCheckKeys.INVALID_LINES, invalidLinesResult);
|
|
data.put(GisSurveySystemCheckKeys.INVALID_LINES, invalidLinesResult);
|
|
refreshTimes.put(GisSurveySystemCheckKeys.INVALID_LINES, params.getRefreshTime());
|
|
refreshTimes.put(GisSurveySystemCheckKeys.INVALID_LINES, params.getRefreshTime());
|
|
//释放点缓存
|
|
//释放点缓存
|
|
- clearPoints(points, isolatedPointsFuture, duplicatePointsFuture, invalidLinesFuture);
|
|
|
|
|
|
+ clearPoints(points, invalidPointsFuture, isolatedPointsFuture, duplicatePointsFuture, invalidLinesFuture);
|
|
}
|
|
}
|
|
if (overlapLinesFuture != null) {
|
|
if (overlapLinesFuture != null) {
|
|
//监听重叠线
|
|
//监听重叠线
|
|
@@ -329,6 +336,7 @@ public class GisSurveySystemChecker {
|
|
log.error("StackTrac:", e);
|
|
log.error("StackTrac:", e);
|
|
|
|
|
|
//清除子任务
|
|
//清除子任务
|
|
|
|
+ if (invalidPointsFuture != null) invalidPointsFuture.cancel(true);
|
|
if (isolatedPointsFuture != null) isolatedPointsFuture.cancel(true);
|
|
if (isolatedPointsFuture != null) isolatedPointsFuture.cancel(true);
|
|
if (isolatedLinesFuture != null) isolatedLinesFuture.cancel(true);
|
|
if (isolatedLinesFuture != null) isolatedLinesFuture.cancel(true);
|
|
if (duplicatePointsFuture != null) duplicatePointsFuture.cancel(true);
|
|
if (duplicatePointsFuture != null) duplicatePointsFuture.cancel(true);
|
|
@@ -351,16 +359,18 @@ public class GisSurveySystemChecker {
|
|
* 清除点缓存
|
|
* 清除点缓存
|
|
*
|
|
*
|
|
* @param points 点集合
|
|
* @param points 点集合
|
|
|
|
+ * @param invalidPointsFuture 无效点任务
|
|
* @param isolatedPointsFuture 孤立点任务
|
|
* @param isolatedPointsFuture 孤立点任务
|
|
* @param duplicatePointsFuture 重复点任务
|
|
* @param duplicatePointsFuture 重复点任务
|
|
* @param invalidLinesFuture 无效线任务
|
|
* @param invalidLinesFuture 无效线任务
|
|
*/
|
|
*/
|
|
public void clearPoints(List<GisSurveyLayerApplyPoint> points
|
|
public void clearPoints(List<GisSurveyLayerApplyPoint> points
|
|
- , ListenableFuture<GisSurveySystemCheckResultDetail> isolatedPointsFuture
|
|
|
|
|
|
+ , ListenableFuture<GisSurveySystemCheckResultDetail> invalidPointsFuture, ListenableFuture<GisSurveySystemCheckResultDetail> isolatedPointsFuture
|
|
, ListenableFuture<GisSurveySystemCheckResultDetail> duplicatePointsFuture
|
|
, ListenableFuture<GisSurveySystemCheckResultDetail> duplicatePointsFuture
|
|
, ListenableFuture<GisSurveySystemCheckResultDetail> invalidLinesFuture) {
|
|
, ListenableFuture<GisSurveySystemCheckResultDetail> invalidLinesFuture) {
|
|
//点相关任务都完成,则清除缓存
|
|
//点相关任务都完成,则清除缓存
|
|
- if (isolatedPointsFuture != null && isolatedPointsFuture.isDone() &&
|
|
|
|
|
|
+ if (invalidPointsFuture != null && invalidPointsFuture.isDone() &&
|
|
|
|
+ isolatedPointsFuture != null && isolatedPointsFuture.isDone() &&
|
|
duplicatePointsFuture != null && duplicatePointsFuture.isDone() &&
|
|
duplicatePointsFuture != null && duplicatePointsFuture.isDone() &&
|
|
invalidLinesFuture != null && invalidLinesFuture.isDone()) points.clear();
|
|
invalidLinesFuture != null && invalidLinesFuture.isDone()) points.clear();
|
|
}
|
|
}
|