|
@@ -18,14 +18,21 @@ import com.shkpr.service.alambizplugin.constants.CommCRSDefine;
|
|
import com.shkpr.service.alambizplugin.constants.ExcelEnum;
|
|
import com.shkpr.service.alambizplugin.constants.ExcelEnum;
|
|
import com.shkpr.service.alambizplugin.constants.GisMetadataDefine;
|
|
import com.shkpr.service.alambizplugin.constants.GisMetadataDefine;
|
|
import com.shkpr.service.alambizplugin.constants.GisSurveyExcelDefine;
|
|
import com.shkpr.service.alambizplugin.constants.GisSurveyExcelDefine;
|
|
-import com.shkpr.service.alambizplugin.constants.GisSurveyImportStatusEnum;
|
|
|
|
|
|
+import com.shkpr.service.alambizplugin.constants.GisSurveyThirdImportKeys;
|
|
import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
|
|
import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisMetadataLayerTemplateService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisMetadataLayerTemplateService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisSurveyJobInfoService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisSurveyJobInfoService;
|
|
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.GisSurveyLayerApplyThirdCopyService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisSurveyLayerApplyThirdCopyService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisSurveyProjectInfoService;
|
|
import com.shkpr.service.alambizplugin.dbdao.services.intef.GisSurveyProjectInfoService;
|
|
-import com.shkpr.service.alambizplugin.dto.*;
|
|
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.CommAsyncResult;
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.GisMetadataLayerTemplate;
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.GisMetadataPropertyTemplate;
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.GisSurveyCondition;
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.GisSurveyLayerApplyThirdCopy;
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.GisSurveyPropertyValueThirdCopy;
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.GisSurveyThirdImportElement;
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.GisSurveyThirdImportResultDetail;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.math.NumberUtils;
|
|
import org.apache.commons.lang3.math.NumberUtils;
|
|
@@ -64,11 +71,17 @@ import java.util.stream.Collectors;
|
|
@Component
|
|
@Component
|
|
public class GisSurveyThirdImporter {
|
|
public class GisSurveyThirdImporter {
|
|
/**
|
|
/**
|
|
|
|
+ * 结果前缀
|
|
|
|
+ */
|
|
|
|
+ public final static String RESULT_PREFIX = "third-import-";
|
|
|
|
+ /**
|
|
* log
|
|
* log
|
|
*/
|
|
*/
|
|
private final String mStrClassName;
|
|
private final String mStrClassName;
|
|
private final String mBizType;
|
|
private final String mBizType;
|
|
|
|
+
|
|
private final GeometryFactory geometryFactory;
|
|
private final GeometryFactory geometryFactory;
|
|
|
|
+ private final AsyncResultManager asyncResultManager;
|
|
private final GisSurveyProjectInfoService projectInfoService;
|
|
private final GisSurveyProjectInfoService projectInfoService;
|
|
private final GisSurveyJobInfoService jobInfoService;
|
|
private final GisSurveyJobInfoService jobInfoService;
|
|
private final GisMetadataLayerTemplateService layerTemplateService;
|
|
private final GisMetadataLayerTemplateService layerTemplateService;
|
|
@@ -78,7 +91,7 @@ public class GisSurveyThirdImporter {
|
|
private final InvalidLinesFinder invalidLinesFinder;
|
|
private final InvalidLinesFinder invalidLinesFinder;
|
|
private final InvalidPropertiesFinder invalidPropertiesFinder;
|
|
private final InvalidPropertiesFinder invalidPropertiesFinder;
|
|
|
|
|
|
- public GisSurveyThirdImporter(GisSurveyProjectInfoService projectInfoService
|
|
|
|
|
|
+ public GisSurveyThirdImporter(AsyncResultManager asyncResultManager, GisSurveyProjectInfoService projectInfoService
|
|
, GisSurveyJobInfoService jobInfoService
|
|
, GisSurveyJobInfoService jobInfoService
|
|
, GisMetadataLayerTemplateService layerTemplateService
|
|
, GisMetadataLayerTemplateService layerTemplateService
|
|
, GisSurveyLayerApplyThirdCopyService layerApplyThirdCopyService
|
|
, GisSurveyLayerApplyThirdCopyService layerApplyThirdCopyService
|
|
@@ -89,6 +102,7 @@ public class GisSurveyThirdImporter {
|
|
mStrClassName = "GisSurveyThirdImporter";
|
|
mStrClassName = "GisSurveyThirdImporter";
|
|
mBizType = LogFlagBusiType.BUSI_GIS_SURVEY.toStrValue();
|
|
mBizType = LogFlagBusiType.BUSI_GIS_SURVEY.toStrValue();
|
|
geometryFactory = new GeometryFactory(new PrecisionModel(), 4490);
|
|
geometryFactory = new GeometryFactory(new PrecisionModel(), 4490);
|
|
|
|
+ this.asyncResultManager = asyncResultManager;
|
|
this.projectInfoService = projectInfoService;
|
|
this.projectInfoService = projectInfoService;
|
|
this.jobInfoService = jobInfoService;
|
|
this.jobInfoService = jobInfoService;
|
|
this.layerTemplateService = layerTemplateService;
|
|
this.layerTemplateService = layerTemplateService;
|
|
@@ -109,13 +123,15 @@ public class GisSurveyThirdImporter {
|
|
* @return 系统检查返回
|
|
* @return 系统检查返回
|
|
*/
|
|
*/
|
|
@Async
|
|
@Async
|
|
- public ListenableFuture<GisSurveyThirdImportResult> thirdImportTask(GisSurveyThirdImportParams params, List<InputStream> inputStreams
|
|
|
|
- , Consumer<GisSurveyThirdImportSubtask> onStartSubtask, Consumer<String> onDeprecatedSubtask) {
|
|
|
|
|
|
+ public ListenableFuture<CommAsyncResult<Map<String, GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>>>>> thirdImportTask(
|
|
|
|
+ GisSurveyThirdImportParams params, List<InputStream> inputStreams
|
|
|
|
+ , Consumer<Map<String, ListenableFuture<?>>> onStartSubtask, Consumer<String> onDeprecatedSubtask) {
|
|
//构建返回
|
|
//构建返回
|
|
- GisSurveyThirdImportResult result = GisSurveyThirdImportResult.fail(params);
|
|
|
|
|
|
+ CommAsyncResult<Map<String, GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>>>> result
|
|
|
|
+ = CommAsyncResult.fail(params.getJobId());
|
|
result.setOperator(params.getOperator());
|
|
result.setOperator(params.getOperator());
|
|
//无效属性任务
|
|
//无效属性任务
|
|
- ListenableFuture<GisSurveyThirdImportResultDetail<Map<String, List<GisSurveyThirdImportElement>>>> invalidPropertiesFuture = null;
|
|
|
|
|
|
+ ListenableFuture<Map<String, GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>>>> invalidPropertiesFuture = null;
|
|
//重复点号任务
|
|
//重复点号任务
|
|
ListenableFuture<GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>>> duplicatePointsFuture = null;
|
|
ListenableFuture<GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>>> duplicatePointsFuture = null;
|
|
//无效线任务
|
|
//无效线任务
|
|
@@ -144,35 +160,53 @@ public class GisSurveyThirdImporter {
|
|
List<GisMetadataLayerTemplate> pointLayerTemplates = layerTemplateService.findByNatureAndNameIn(params.getNature(), pointLayerNames);
|
|
List<GisMetadataLayerTemplate> pointLayerTemplates = layerTemplateService.findByNatureAndNameIn(params.getNature(), pointLayerNames);
|
|
List<GisMetadataLayerTemplate> lineLayerTemplates = layerTemplateService.findByNatureAndNameIn(params.getNature(), lineLayerNames);
|
|
List<GisMetadataLayerTemplate> lineLayerTemplates = layerTemplateService.findByNatureAndNameIn(params.getNature(), lineLayerNames);
|
|
|
|
|
|
|
|
+ //结果flag
|
|
|
|
+ final String FLAG = RESULT_PREFIX + params.getJobId();
|
|
|
|
+ //创建临时文件夹
|
|
|
|
+ if (!asyncResultManager.createTempDirectory(FLAG))
|
|
|
|
+ return new AsyncResult<>(result);
|
|
|
|
+
|
|
|
|
+ //子任务
|
|
|
|
+ Map<String, ListenableFuture<?>> subtask = new HashMap<>();
|
|
|
|
+
|
|
//无效属性检查
|
|
//无效属性检查
|
|
invalidPropertiesFuture = invalidPropertiesFinder.findInvalidProperties(points, lines
|
|
invalidPropertiesFuture = invalidPropertiesFinder.findInvalidProperties(points, lines
|
|
- , pointLayerTemplates, lineLayerTemplates, params.getCheckConstraint(), projectConstraints);
|
|
|
|
|
|
+ , pointLayerTemplates, lineLayerTemplates, params.getCheckConstraint(), projectConstraints, params.getJobId());
|
|
|
|
+ subtask.put(GisSurveyThirdImportKeys.INVALID_PROPERTIES, invalidPropertiesFuture);
|
|
//重复点检查
|
|
//重复点检查
|
|
- duplicatePointsFuture = duplicatePointsFinder.findDuplicatePoints(points, pointLayerTemplates);
|
|
|
|
|
|
+ duplicatePointsFuture = duplicatePointsFinder.findDuplicatePoints(points, pointLayerTemplates, params.getJobId());
|
|
|
|
+ subtask.put(GisSurveyThirdImportKeys.DUPLICATE_POINTS, duplicatePointsFuture);
|
|
//无效线检查
|
|
//无效线检查
|
|
- invalidLinesFuture = invalidLinesFinder.finderInvalidLines(points, lines, pointLayerTemplates, lineLayerTemplates);
|
|
|
|
|
|
+ invalidLinesFuture = invalidLinesFinder.finderInvalidLines(points, lines, pointLayerTemplates, lineLayerTemplates, params.getJobId());
|
|
|
|
+ subtask.put(GisSurveyThirdImportKeys.INVALID_LINES, invalidLinesFuture);
|
|
|
|
|
|
//返回子任务
|
|
//返回子任务
|
|
- onStartSubtask.accept(
|
|
|
|
- new GisSurveyThirdImportSubtask(invalidPropertiesFuture, duplicatePointsFuture, invalidLinesFuture)
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- //等待结果
|
|
|
|
- GisSurveyThirdImportResultDetail<Map<String, List<GisSurveyThirdImportElement>>> invalidPropertiesResult = invalidPropertiesFuture.get();
|
|
|
|
- //存入无效属性结果
|
|
|
|
- result.setInvalidLayersResult(untarInvalidProperties(invalidPropertiesResult, GisSurveyExcelDefine.RESULT.INVALID_LAYERS));
|
|
|
|
- result.setMissingRequirementsResult(untarInvalidProperties(invalidPropertiesResult, GisSurveyExcelDefine.RESULT.MISSING_REQUIREMENTS));
|
|
|
|
- result.setInvalidTypesResult(untarInvalidProperties(invalidPropertiesResult, GisSurveyExcelDefine.RESULT.INVALID_TYPES));
|
|
|
|
- result.setOutRangesResult(untarInvalidProperties(invalidPropertiesResult, GisSurveyExcelDefine.RESULT.OUT_RANGES));
|
|
|
|
- result.setOutConstraintResult(untarInvalidProperties(invalidPropertiesResult, GisSurveyExcelDefine.RESULT.OUT_CONSTRAINT));
|
|
|
|
- //存入重复点结果
|
|
|
|
- result.setDuplicatePointsResult(duplicatePointsFuture.get());
|
|
|
|
- //存入无效线结果
|
|
|
|
- result.setInvalidLinesResult(invalidLinesFuture.get());
|
|
|
|
|
|
+ onStartSubtask.accept(subtask);
|
|
|
|
+
|
|
|
|
+ //数据
|
|
|
|
+ Map<String, GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>>> data = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ //等待子任务
|
|
|
|
+ Map<String, GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>>> invalidPropertiesResult = invalidPropertiesFuture.get();
|
|
|
|
+ //存入无效属性数据
|
|
|
|
+ data.put(GisSurveyThirdImportKeys.INVALID_LAYERS, invalidPropertiesResult.get(GisSurveyThirdImportKeys.INVALID_LAYERS));
|
|
|
|
+ data.put(GisSurveyThirdImportKeys.MISSING_REQUIREMENTS, invalidPropertiesResult.get(GisSurveyThirdImportKeys.MISSING_REQUIREMENTS));
|
|
|
|
+ data.put(GisSurveyThirdImportKeys.INVALID_TYPES, invalidPropertiesResult.get(GisSurveyThirdImportKeys.INVALID_TYPES));
|
|
|
|
+ data.put(GisSurveyThirdImportKeys.OUT_RANGES, invalidPropertiesResult.get(GisSurveyThirdImportKeys.OUT_RANGES));
|
|
|
|
+ data.put(GisSurveyThirdImportKeys.OUT_CONSTRAINT, invalidPropertiesResult.get(GisSurveyThirdImportKeys.OUT_CONSTRAINT));
|
|
|
|
+ //存入重复点数据
|
|
|
|
+ data.put(GisSurveyThirdImportKeys.DUPLICATE_POINTS, duplicatePointsFuture.get());
|
|
|
|
+ //存入无效线数据
|
|
|
|
+ data.put(GisSurveyThirdImportKeys.INVALID_LINES, invalidLinesFuture.get());
|
|
|
|
+ //存入数据
|
|
|
|
+ result.setData(data);
|
|
|
|
+
|
|
|
|
+ //替换结果
|
|
|
|
+ asyncResultManager.replaceResult(FLAG);
|
|
|
|
|
|
//结果未通过
|
|
//结果未通过
|
|
- if (!checkResult(result)) {
|
|
|
|
- result.setImportStatus(GisSurveyImportStatusEnum.DATA_ERROR.getCode());
|
|
|
|
|
|
+ if (!checkResult(data)) {
|
|
|
|
+ result.setStatus(CommAsyncStatusEnum.RESULT_ERROR.getCode());
|
|
result.setCompleteTime(LocalDateTime.now());
|
|
result.setCompleteTime(LocalDateTime.now());
|
|
LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName
|
|
LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName
|
|
, String.format(
|
|
, String.format(
|
|
@@ -209,7 +243,7 @@ public class GisSurveyThirdImporter {
|
|
}
|
|
}
|
|
|
|
|
|
//完成任务
|
|
//完成任务
|
|
- result.setImportStatus(GisSurveyImportStatusEnum.SUCCESS.getCode());
|
|
|
|
|
|
+ result.setStatus(CommAsyncStatusEnum.SUCCESS.getCode());
|
|
result.setCompleteTime(LocalDateTime.now());
|
|
result.setCompleteTime(LocalDateTime.now());
|
|
|
|
|
|
LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName
|
|
LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName
|
|
@@ -237,7 +271,7 @@ public class GisSurveyThirdImporter {
|
|
if (invalidLinesFuture != null) invalidLinesFuture.cancel(true);
|
|
if (invalidLinesFuture != null) invalidLinesFuture.cancel(true);
|
|
|
|
|
|
//失败信息
|
|
//失败信息
|
|
- result.setImportStatus(CommAsyncStatusEnum.FAIL.getCode());
|
|
|
|
|
|
+ result.setStatus(CommAsyncStatusEnum.FAIL.getCode());
|
|
result.setCompleteTime(LocalDateTime.now());
|
|
result.setCompleteTime(LocalDateTime.now());
|
|
|
|
|
|
//弃用子任务
|
|
//弃用子任务
|
|
@@ -337,35 +371,25 @@ public class GisSurveyThirdImporter {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 解包无效属性
|
|
|
|
|
|
+ * 检查数据
|
|
*
|
|
*
|
|
- * @param invalidPropertiesResult 无效属性结果
|
|
|
|
- * @param resultKey 结果key
|
|
|
|
- * @return 具体结果
|
|
|
|
- */
|
|
|
|
- private GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>> untarInvalidProperties(
|
|
|
|
- GisSurveyThirdImportResultDetail<Map<String, List<GisSurveyThirdImportElement>>> invalidPropertiesResult
|
|
|
|
- , String resultKey) {
|
|
|
|
- //获取结果
|
|
|
|
- List<GisSurveyThirdImportElement> importElements = invalidPropertiesResult.getResults().get(resultKey);
|
|
|
|
-
|
|
|
|
- return new GisSurveyThirdImportResultDetail<>(true, importElements);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 检查结果
|
|
|
|
- *
|
|
|
|
- * @param result 结果
|
|
|
|
|
|
+ * @param data 数据
|
|
* @return 结果通过状态
|
|
* @return 结果通过状态
|
|
*/
|
|
*/
|
|
- private Boolean checkResult(GisSurveyThirdImportResult result) {
|
|
|
|
- List<GisSurveyThirdImportElement> invalidLayers = result.getInvalidLayersResult().getResults();
|
|
|
|
- List<GisSurveyThirdImportElement> missingRequirements = result.getMissingRequirementsResult().getResults();
|
|
|
|
- List<GisSurveyThirdImportElement> invalidTypesResult = result.getInvalidTypesResult().getResults();
|
|
|
|
- List<GisSurveyThirdImportElement> outRanges = result.getOutRangesResult().getResults();
|
|
|
|
- List<GisSurveyThirdImportElement> outConstraint = result.getOutConstraintResult().getResults();
|
|
|
|
- List<GisSurveyThirdImportElement> duplicatePoints = result.getDuplicatePointsResult().getResults();
|
|
|
|
- List<GisSurveyThirdImportElement> invalidLines = result.getInvalidLinesResult().getResults();
|
|
|
|
|
|
+ private Boolean checkResult(Map<String, GisSurveyThirdImportResultDetail<List<GisSurveyThirdImportElement>>> data) {
|
|
|
|
+ //检查key
|
|
|
|
+ if (!data.containsKey(GisSurveyThirdImportKeys.INVALID_LAYERS) || !data.containsKey(GisSurveyThirdImportKeys.MISSING_REQUIREMENTS) ||
|
|
|
|
+ !data.containsKey(GisSurveyThirdImportKeys.INVALID_TYPES) || !data.containsKey(GisSurveyThirdImportKeys.OUT_RANGES) ||
|
|
|
|
+ !data.containsKey(GisSurveyThirdImportKeys.OUT_CONSTRAINT) || !data.containsKey(GisSurveyThirdImportKeys.DUPLICATE_POINTS) ||
|
|
|
|
+ !data.containsKey(GisSurveyThirdImportKeys.INVALID_LINES)) return false;
|
|
|
|
+ //获取结果
|
|
|
|
+ List<GisSurveyThirdImportElement> invalidLayers = data.get(GisSurveyThirdImportKeys.INVALID_LAYERS).getResults();
|
|
|
|
+ List<GisSurveyThirdImportElement> missingRequirements = data.get(GisSurveyThirdImportKeys.MISSING_REQUIREMENTS).getResults();
|
|
|
|
+ List<GisSurveyThirdImportElement> invalidTypesResult = data.get(GisSurveyThirdImportKeys.INVALID_TYPES).getResults();
|
|
|
|
+ List<GisSurveyThirdImportElement> outRanges = data.get(GisSurveyThirdImportKeys.OUT_RANGES).getResults();
|
|
|
|
+ List<GisSurveyThirdImportElement> outConstraint = data.get(GisSurveyThirdImportKeys.OUT_CONSTRAINT).getResults();
|
|
|
|
+ List<GisSurveyThirdImportElement> duplicatePoints = data.get(GisSurveyThirdImportKeys.DUPLICATE_POINTS).getResults();
|
|
|
|
+ List<GisSurveyThirdImportElement> invalidLines = data.get(GisSurveyThirdImportKeys.INVALID_LINES).getResults();
|
|
//检查是否都为空
|
|
//检查是否都为空
|
|
return CollectionUtils.isEmpty(invalidLayers) && CollectionUtils.isEmpty(missingRequirements) &&
|
|
return CollectionUtils.isEmpty(invalidLayers) && CollectionUtils.isEmpty(missingRequirements) &&
|
|
CollectionUtils.isEmpty(invalidTypesResult) && CollectionUtils.isEmpty(outRanges) &&
|
|
CollectionUtils.isEmpty(invalidTypesResult) && CollectionUtils.isEmpty(outRanges) &&
|