yanguofeng 3 éve
szülő
commit
1a3a89eb01
16 módosított fájl, 413 hozzáadás és 92 törlés
  1. 5 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/common/AdmRequest.java
  2. 14 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/controller/AppController.java
  3. 14 92
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/SyncAppImpl.java
  4. 23 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmCadCheckUpdate.java
  5. 23 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmFileCheckUpdate.java
  6. 24 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmJobSpaceCheckUpdate.java
  7. 25 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmPipeCheckUpdate.java
  8. 30 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmProblemCheckUpdate.java
  9. 23 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmQrCodeCheckUpdate.java
  10. 23 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmServerAreaCheckUpdate.java
  11. 45 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/BdtpObjRelCreateByAppCheckUpdate.java
  12. 43 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/BdtpObjectCheckUpdate.java
  13. 5 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/CheckUpdate.java
  14. 68 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/CheckUpdateChain.java
  15. 9 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/CheckUpdateContext.java
  16. 39 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/MetaSpaceObjRelCheckUpdate.java

+ 5 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/common/AdmRequest.java

@@ -1,5 +1,6 @@
 package com.persagy.adm.server.custom.common;
 
+import com.alibaba.fastjson.JSON;
 import com.persagy.adm.server.custom.entity.UploadData;
 import lombok.Data;
 
@@ -34,4 +35,8 @@ public class AdmRequest {
 	/** 待废弃 */
 	private String uploadFlag;
 
+	@Override
+	public String toString() {
+		return JSON.toJSONString(this);
+	}
 }

+ 14 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/controller/AppController.java

@@ -1,6 +1,7 @@
 package com.persagy.adm.server.custom.controller;
 
 import cn.hutool.core.util.StrUtil;
+import com.persagy.adm.server.auth.service.AdmAuthService;
 import com.persagy.adm.server.custom.common.AdmRequest;
 import com.persagy.adm.server.custom.datatx.DataTxHandler;
 import com.persagy.adm.server.custom.dto.HasUpdateReq;
@@ -10,10 +11,12 @@ import com.persagy.adm.server.custom.entity.DownLoadData;
 import com.persagy.adm.server.custom.entity.UploadRtn;
 import com.persagy.adm.server.custom.service.ISyncApp;
 import com.persagy.adm.server.custom.service.ServiceUtil;
+import com.persagy.dmp.auth.domain.BossAuthUser;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -30,6 +33,7 @@ import java.util.Map;
  */
 @RestController
 @RequestMapping("/adm")
+@Slf4j
 public class AppController {
 
 	@Autowired
@@ -39,6 +43,9 @@ public class AppController {
 	@Autowired
 	private DataTxHandler dataTxHandler;
 
+	@Autowired
+	private AdmAuthService admAuthService;
+
 	@RequestMapping("/clientId")
 	public CommonResult<Map<String, Object>> clientId(@RequestBody AdmRequest req){
 		HashMap<String, Object> rtn = new HashMap<>();
@@ -80,9 +87,16 @@ public class AppController {
 		return ResultHelper.single(syncApp.downloadProjectData(req.getGroupCode(), req.getProjectId(), req.getUserId(), req.getClientId(), req.getBdtpDownloadTs(), req.getAdmDownloadTs()));
 	}
 
+	/**
+	 * 上传离线数据
+	 * @param request
+	 * @return
+	 */
 	@RequestMapping("/upload")
 	public CommonResult<UploadRtn> upload(HttpServletRequest request){
 		AdmRequest admRequest = dataTxHandler.handleRequest(request);
+		BossAuthUser bossAuthUser = admAuthService.loginInfo();
+		log.info("用户:{},上传数据:{}",bossAuthUser,admRequest);
 		return ResultHelper.single(syncApp.uploadData(admRequest.getUploadData(), admRequest.getGroupCode(), admRequest.getProjectId(), admRequest.getUserId(), admRequest.getClientId()));
 	}
 

+ 14 - 92
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/SyncAppImpl.java

@@ -1,5 +1,6 @@
 package com.persagy.adm.server.custom.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateUtil;
@@ -26,12 +27,15 @@ import com.persagy.adm.server.custom.entity.*;
 import com.persagy.adm.server.custom.entity.db.*;
 import com.persagy.adm.server.custom.enums.DeliveryTypeEnum;
 import com.persagy.adm.server.custom.service.*;
+import com.persagy.adm.server.custom.service.impl.check_update.CheckUpdateChain;
+import com.persagy.adm.server.custom.service.impl.check_update.CheckUpdateContext;
 import com.persagy.adm.server.custom.util.DataExtrasUtil;
+import com.persagy.dmp.auth.domain.BossAuthUser;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.constant.ValidEnum;
-import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalObjectClient;
 import com.persagy.dmp.digital.client.DigitalRelationClient;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -40,6 +44,7 @@ import java.sql.Timestamp;
 import java.util.*;
 
 @Service
+@Slf4j
 public class SyncAppImpl implements ISyncApp {
 
 	@Autowired
@@ -446,98 +451,15 @@ public class SyncAppImpl implements ISyncApp {
 	 */
 	@Override
 	public boolean hasUpdate(HasUpdateReq hasUpdateReq) {
-
-		// downloadAdmTs
-		// 1.问题数据最容易变化,优先检查 adm库
-		LambdaQueryWrapper<AdmProblem> hasProblemUpdated = new LambdaQueryWrapper<AdmProblem>().select(AdmProblem::getId)
-				.gt(AdmProblem::getTs, hasUpdateReq.getDownloadAdmTs())
-				.eq(AdmProblem::getGroupCode,hasUpdateReq.getGroupCode())
-				.eq(AdmProblem::getProjectId,hasUpdateReq.getProjectId())
-				.last("limit 1");
-		AdmProblem admProblem = problemMapper.selectOne(hasProblemUpdated);
-		if (admProblem != null){
-			return true;
-		}
-
-		// downloadAdmTs
-		//管道数据,实验方案
-		AdmPipe admPipe = pipeMapper.selectOne(new LambdaQueryWrapper<AdmPipe>().select(AdmPipe::getId).eq(AdmPipe::getProjectId, hasUpdateReq.getProjectId()).gt(AdmPipe::getTs, hasUpdateReq.getDownloadAdmTs()).last("limit 1"));
-		if (admPipe != null){
-			return true;
-		}
-
-		//任务相关数据查询
-		AdmJobSpace jobSpace = jobSpaceMapper.selectOne(new LambdaQueryWrapper<AdmJobSpace>().select(AdmJobSpace::getId).eq(AdmJobSpace::getProjectId,hasUpdateReq.getProjectId()).gt(AdmJobSpace::getTs,hasUpdateReq.getDownloadAdmTs()).last("limit 1"));
-		if (jobSpace != null){
-			return true;
-		}
-
-		// 下载ADM图纸
-		AdmCad admCad = admCadMapper.selectOne(new LambdaQueryWrapper<AdmCad>().select(AdmCad::getId).eq(AdmCad::getProjectId,hasUpdateReq.getProjectId()).gt(AdmCad::getTs,hasUpdateReq.getDownloadAdmTs()).last("limit 1"));
-		if(admCad != null){
-			return true;
-		}
-
-		// 文件附件
-		AdmFile file = fileMapper.selectOne(new LambdaQueryWrapper<AdmFile>().select(AdmFile::getId).eq(AdmFile::getProjectId,hasUpdateReq.getProjectId()).gt(AdmFile::getTs,hasUpdateReq.getDownloadAdmTs()).last("limit 1"));
-		if (file != null){
-			return true;
-		}
-
-		// 二维码
-		AdmQrCode qrCode = qrCodeMapper.selectOne(new LambdaQueryWrapper<AdmQrCode>().select(AdmQrCode::getId).eq(AdmQrCode::getProjectId,hasUpdateReq.getProjectId()).gt(AdmQrCode::getTs,hasUpdateReq.getDownloadAdmTs()).last("limit 1"));
-		if (qrCode != null){
-			return true;
-		}
-
-		// 服务区域
-		AdmServeArea serveArea = serveAreaMapper.selectOne(new LambdaQueryWrapper<AdmServeArea>().select(AdmServeArea::getId).eq(AdmServeArea::getProjectId,hasUpdateReq.getProjectId()).gt(AdmServeArea::getTs,hasUpdateReq.getDownloadAdmTs()).last("limit 1"));
-		if (serveArea != null){
-			return true;
-		}
-
-//		String userId = admAuthService.loginInfo().getId();
-		String userId = "1";
-
-		// downloadBdtpTs
-		// 2.检查对象 bdtp库
-		QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper, AdmConst.OBJ_TYPE_BUILDING, AdmConst.OBJ_TYPE_FLOOR,AdmConst.OBJ_TYPE_SPACE, AdmConst.OBJ_TYPE_SHAFT, AdmConst.OBJ_TYPE_SYSTEM, AdmConst.OBJ_TYPE_EQUIPMENT, "ispace");
-		criteria.setOnlyCount(true);
-		criteria.setWithoutCount(true);
-		criteria.getCriteria().putObject("ts").put("$gt", hasUpdateReq.getDownloadBdtpTs());
-		CommonResult<List<ObjectNode>> query = objectClient.query(hasUpdateReq.getGroupCode(), hasUpdateReq.getProjectId(), AdmConst.APP_ID, userId, criteria);
-		if(query.getCount() > 0){
-			return true;
-		}
-
-		// downloadObjRelTs
-		// 3.检查对象关系
-		// 3.1 app端创建的关系 bdtp库
-		QueryCriteria objRelCriteria = ServiceUtil.getQueryCriteria(objectMapper);
-		objRelCriteria.getCriteria().putObject("ts").put("$gt", hasUpdateReq.getDownLoadObjRelTs());
-		objRelCriteria.getCriteria().put("createApp", AdmConst.CREATOR_APP);
-		objRelCriteria.setOnlyCount(true);
-		objRelCriteria.setWithoutCount(true);
-		CommonResult<List<ObjectNode>> objRelResult = rwdClient.queryRelation(hasUpdateReq.getGroupCode(), hasUpdateReq.getProjectId(), AdmConst.APP_ID, userId, objRelCriteria);
-		if (objRelResult.getCount() > 0){
-			return true;
-		}
-
-		// 3.2 元空间和空间的对应关系 bdtp库
-		QueryCriteria objRelCriteria2 = ServiceUtil.getQueryCriteria(objectMapper);
-		objRelCriteria2.setOnlyCount(true);
-		objRelCriteria2.setWithoutCount(true);
-		objRelCriteria2.getCriteria().put("graphCode", "MechInArch").put("relCode", "Sp2Si").put("relValue", "GeneralZone").putObject("ts").put("$gt",hasUpdateReq.getDownLoadObjRelTs());
-		CommonResult<List<ObjectNode>> objRelResult2 = rwdClient.queryRelation(hasUpdateReq.getGroupCode(), hasUpdateReq.getProjectId(), AdmConst.APP_ID, userId, objRelCriteria2);
-		if (objRelResult2.getCount() > 0){
-			return true;
-		}
-
-		return false;
+		CheckUpdateContext context = new CheckUpdateContext();
+		BeanUtil.copyProperties(hasUpdateReq,context);
+		BossAuthUser bossAuthUser = admAuthService.loginInfo();
+		log.info("获取到用户信息:{}",bossAuthUser);
+		context.setUserId(bossAuthUser.getId());
+		return checkUpdateChain.doCheck(context);
 	}
-
-	private AdmM2dEquipMapper m2dEquipMapper;
-
+	@Autowired
+	CheckUpdateChain checkUpdateChain;
 	private void autoRelations(List<ObjectNode> newObjs, List<ObjectNode> relations, UploadParams ps){
 		for(ObjectNode obj : newObjs) {
 			if (obj.get("objType") != null && AdmConst.OBJ_TYPE_EQUIPMENT.equals(obj.get("objType").asText())) {

+ 23 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmCadCheckUpdate.java

@@ -0,0 +1,23 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.persagy.adm.server.custom.dao.AdmCadMapper;
+import com.persagy.adm.server.custom.entity.db.AdmCad;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 检查CAD图纸数据有无更新
+ */
+@Component
+@Slf4j
+public class AdmCadCheckUpdate implements CheckUpdate{
+    @Autowired
+    AdmCadMapper admCadMapper;
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        log.info("开始检查CAD图纸是否有更新");
+        return admCadMapper.selectOne(new LambdaQueryWrapper<AdmCad>().select(AdmCad::getId).eq(AdmCad::getProjectId, hasUpdateReq.getProjectId()).gt(AdmCad::getTs, hasUpdateReq.getDownloadAdmTs()).last("limit 1")) != null;
+    }
+}

+ 23 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmFileCheckUpdate.java

@@ -0,0 +1,23 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.persagy.adm.server.custom.dao.AdmFileMapper;
+import com.persagy.adm.server.custom.entity.db.AdmFile;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 检查文件附件数据是否有更新
+ */
+@Component
+@Slf4j
+public class AdmFileCheckUpdate implements CheckUpdate{
+    @Autowired
+    AdmFileMapper fileMapper;
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        log.info("开始检查文件附件数据是否有更新");
+        return fileMapper.selectOne(new LambdaQueryWrapper<AdmFile>().select(AdmFile::getId).eq(AdmFile::getProjectId, hasUpdateReq.getProjectId()).gt(AdmFile::getTs, hasUpdateReq.getDownloadAdmTs()).last("limit 1")) != null;
+    }
+}

+ 24 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmJobSpaceCheckUpdate.java

@@ -0,0 +1,24 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.persagy.adm.server.custom.dao.AdmJobSpaceMapper;
+import com.persagy.adm.server.custom.entity.db.AdmJobSpace;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 检查任务数据是否有更新
+ */
+@Component
+@Slf4j
+public class AdmJobSpaceCheckUpdate implements CheckUpdate{
+    @Autowired
+    private AdmJobSpaceMapper jobSpaceMapper;
+
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        log.info("开始检查任务数据是否有更新");
+        return jobSpaceMapper.selectOne(new LambdaQueryWrapper<AdmJobSpace>().select(AdmJobSpace::getId).eq(AdmJobSpace::getProjectId, hasUpdateReq.getProjectId()).gt(AdmJobSpace::getTs, hasUpdateReq.getDownloadAdmTs()).last("limit 1")) != null;
+    }
+}

+ 25 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmPipeCheckUpdate.java

@@ -0,0 +1,25 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.persagy.adm.server.custom.dao.AdmPipeMapper;
+import com.persagy.adm.server.custom.entity.db.AdmPipe;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 检查管道数据是否有更新
+ */
+@Component
+@Slf4j
+public class AdmPipeCheckUpdate implements CheckUpdate{
+
+    @Autowired
+    private AdmPipeMapper pipeMapper;
+
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        log.info("检查管道数据是否有更新");
+        return pipeMapper.selectOne(new LambdaQueryWrapper<AdmPipe>().select(AdmPipe::getId).eq(AdmPipe::getProjectId, hasUpdateReq.getProjectId()).gt(AdmPipe::getTs, hasUpdateReq.getDownloadAdmTs()).last("limit 1")) != null;
+    }
+}

+ 30 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmProblemCheckUpdate.java

@@ -0,0 +1,30 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.persagy.adm.server.custom.dao.AdmProblemMapper;
+import com.persagy.adm.server.custom.entity.db.AdmProblem;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 检查核查问题数据是否有更新
+ */
+@Component
+@Slf4j
+public class AdmProblemCheckUpdate implements CheckUpdate{
+
+    @Autowired
+    AdmProblemMapper problemMapper;
+
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        log.info("检查核查问题数据是否有更新");
+        LambdaQueryWrapper<AdmProblem> hasProblemUpdated = new LambdaQueryWrapper<AdmProblem>().select(AdmProblem::getId)
+                .gt(AdmProblem::getTs, hasUpdateReq.getDownloadAdmTs())
+                .eq(AdmProblem::getGroupCode, hasUpdateReq.getGroupCode())
+                .eq(AdmProblem::getProjectId, hasUpdateReq.getProjectId())
+                .last("limit 1");
+        return problemMapper.selectOne(hasProblemUpdated) != null;
+    }
+}

+ 23 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmQrCodeCheckUpdate.java

@@ -0,0 +1,23 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.persagy.adm.server.custom.dao.AdmQrCodeMapper;
+import com.persagy.adm.server.custom.entity.db.AdmQrCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 检查二维码数据是否有更新
+ */
+@Component
+@Slf4j
+public class AdmQrCodeCheckUpdate implements CheckUpdate {
+    @Autowired
+    AdmQrCodeMapper qrCodeMapper;
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        log.info("开始检查二维码数据是否有更新");
+        return qrCodeMapper.selectOne(new LambdaQueryWrapper<AdmQrCode>().select(AdmQrCode::getId).eq(AdmQrCode::getProjectId, hasUpdateReq.getProjectId()).gt(AdmQrCode::getTs, hasUpdateReq.getDownloadAdmTs()).last("limit 1")) != null;
+    }
+}

+ 23 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/AdmServerAreaCheckUpdate.java

@@ -0,0 +1,23 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.persagy.adm.server.custom.dao.AdmServeAreaMapper;
+import com.persagy.adm.server.custom.entity.db.AdmServeArea;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 检查服务区域是否有数据更新
+ */
+@Component
+@Slf4j
+public class AdmServerAreaCheckUpdate implements CheckUpdate{
+    @Autowired
+    AdmServeAreaMapper serverAreaMapper;
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        log.info("开始检查检查服务区域是否有数据更新");
+        return serverAreaMapper.selectOne(new LambdaQueryWrapper<AdmServeArea>().select(AdmServeArea::getId).eq(AdmServeArea::getProjectId, hasUpdateReq.getProjectId()).gt(AdmServeArea::getTs, hasUpdateReq.getDownloadAdmTs()).last("limit 1")) != null;
+    }
+}

+ 45 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/BdtpObjRelCreateByAppCheckUpdate.java

@@ -0,0 +1,45 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.esotericsoftware.kryo.util.ObjectMap;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.adm.server.custom.client.RwdClient;
+import com.persagy.adm.server.custom.common.AdmConst;
+import com.persagy.adm.server.custom.service.ServiceUtil;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.model.response.CommonResult;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 检查app端创建的关系有无更新
+ */
+@Component
+@Slf4j
+public class BdtpObjRelCreateByAppCheckUpdate implements CheckUpdate{
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    RwdClient rwdClient;
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        try{
+            log.info("开始检查app端创建的关系有无更新");
+            QueryCriteria objRelCriteria = ServiceUtil.getQueryCriteria(objectMapper);
+            objRelCriteria.getCriteria().putObject("ts").put("$gt", hasUpdateReq.getDownLoadObjRelTs());
+            objRelCriteria.getCriteria().put("createApp", AdmConst.CREATOR_APP);
+            objRelCriteria.setOnlyCount(true);
+            objRelCriteria.setWithoutCount(true);
+            CommonResult<List<ObjectNode>> query = rwdClient.queryRelation(hasUpdateReq.getGroupCode(), hasUpdateReq.getProjectId(), AdmConst.APP_ID, hasUpdateReq.getUserId(), objRelCriteria);
+            return query != null && ResponseCode.A00000.getCode().equals(query.getResult()) && query.getCount() > 0;
+        }catch (Exception e){
+            log.error("检查app端创建的关系数据时异常",e);
+            return false;
+        }
+
+    }
+}

+ 43 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/BdtpObjectCheckUpdate.java

@@ -0,0 +1,43 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.adm.server.custom.common.AdmConst;
+import com.persagy.adm.server.custom.service.ServiceUtil;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.digital.client.DigitalObjectClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 检查对象数据是否有更新
+ */
+@Component
+@Slf4j
+public class BdtpObjectCheckUpdate implements CheckUpdate{
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    private DigitalObjectClient objectClient;
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        try{
+            log.info("检查对象数据是否有更新");
+            QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper, AdmConst.OBJ_TYPE_BUILDING, AdmConst.OBJ_TYPE_FLOOR,AdmConst.OBJ_TYPE_SPACE, AdmConst.OBJ_TYPE_SHAFT, AdmConst.OBJ_TYPE_SYSTEM, AdmConst.OBJ_TYPE_EQUIPMENT, "ispace");
+            criteria.setOnlyCount(true);
+            criteria.setWithoutCount(true);
+            criteria.getCriteria().putObject("ts").put("$gt", hasUpdateReq.getDownloadBdtpTs());
+            CommonResult<List<ObjectNode>> query = objectClient.query(hasUpdateReq.getGroupCode(), hasUpdateReq.getProjectId(), AdmConst.APP_ID, hasUpdateReq.getUserId(), criteria);
+            return query != null && ResponseCode.A00000.getCode().equals(query.getResult()) && query.getCount() > 0;
+        }catch (Exception e){
+            log.error("检查对象数据是否有更新时异常",e);
+            return false;
+        }
+
+    }
+}

+ 5 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/CheckUpdate.java

@@ -0,0 +1,5 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+public interface CheckUpdate {
+    boolean doCheck(CheckUpdateContext hasUpdateReq);
+}

+ 68 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/CheckUpdateChain.java

@@ -0,0 +1,68 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+@Component
+public class CheckUpdateChain{
+    @Autowired
+    AdmProblemCheckUpdate admProblemCheck;
+    @Autowired
+    AdmPipeCheckUpdate admPipeCheckUpdate;
+    @Autowired
+    AdmJobSpaceCheckUpdate admJobSpaceCheckUpdate;
+    @Autowired
+    AdmCadCheckUpdate admCadCheckUpdate;
+    @Autowired
+    AdmFileCheckUpdate admFileCheckUpdate;
+    @Autowired
+    AdmQrCodeCheckUpdate admQrCodeCheckUpdate;
+    @Autowired
+    AdmServerAreaCheckUpdate admServerAreaCheckUpdate;
+    @Autowired
+    BdtpObjectCheckUpdate bdtpObjectCheckUpdate;
+    @Autowired
+    BdtpObjRelCreateByAppCheckUpdate bdtpObjRelCreateByAppCheckUpdate;
+    @Autowired
+    MetaSpaceObjRelCheckUpdate metaSpaceObjRelCheckUpdate;
+
+
+    static List<CheckUpdate> checkUpdates;
+
+    @PostConstruct
+    public void init(){
+        checkUpdates = Lists.newArrayList();
+        // 核查问题
+        checkUpdates.add(admProblemCheck);
+        // 管道数据
+        checkUpdates.add(admPipeCheckUpdate);
+        // 任务数据
+        checkUpdates.add(admJobSpaceCheckUpdate);
+        // cad图纸
+        checkUpdates.add(admCadCheckUpdate);
+        // 文件附件
+        checkUpdates.add(admFileCheckUpdate);
+        // 二维码
+        checkUpdates.add(admQrCodeCheckUpdate);
+        // 服务区域
+        checkUpdates.add(admServerAreaCheckUpdate);
+        // 对象数据
+        checkUpdates.add(bdtpObjectCheckUpdate);
+        // app端创建关系数据
+        checkUpdates.add(bdtpObjRelCreateByAppCheckUpdate);
+        // 元空间关系数据
+        checkUpdates.add(metaSpaceObjRelCheckUpdate);
+    }
+
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        for (CheckUpdate checkUpdate : checkUpdates){
+            if (checkUpdate.doCheck(hasUpdateReq)){
+                return true;
+            }
+        }
+        return false;
+    }
+}

+ 9 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/CheckUpdateContext.java

@@ -0,0 +1,9 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.persagy.adm.server.custom.dto.HasUpdateReq;
+import lombok.Data;
+
+@Data
+public class CheckUpdateContext extends HasUpdateReq {
+    private String userId;
+}

+ 39 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/check_update/MetaSpaceObjRelCheckUpdate.java

@@ -0,0 +1,39 @@
+package com.persagy.adm.server.custom.service.impl.check_update;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.adm.server.custom.client.RwdClient;
+import com.persagy.adm.server.custom.common.AdmConst;
+import com.persagy.adm.server.custom.service.ServiceUtil;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.model.response.CommonResult;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 检查更新:元空间和空间的对应关系 bdtp库
+ */
+@Component
+@Slf4j
+public class MetaSpaceObjRelCheckUpdate implements CheckUpdate{
+    @Autowired
+    RwdClient rwdClient;
+
+    @Autowired
+    ObjectMapper objectMapper;
+
+    @Override
+    public boolean doCheck(CheckUpdateContext hasUpdateReq) {
+        log.info("开始检查元空间和空间的对应关系是否有更新");
+        QueryCriteria objRelCriteria2 = ServiceUtil.getQueryCriteria(objectMapper);
+        objRelCriteria2.setOnlyCount(true);
+        objRelCriteria2.setWithoutCount(true);
+        objRelCriteria2.getCriteria().put("graphCode", "MechInArch").put("relCode", "Sp2Si").put("relValue", "GeneralZone").putObject("ts").put("$gt", hasUpdateReq.getDownLoadObjRelTs());
+        CommonResult<List<ObjectNode>> query = rwdClient.queryRelation(hasUpdateReq.getGroupCode(), hasUpdateReq.getProjectId(), AdmConst.APP_ID, hasUpdateReq.getUserId(), objRelCriteria2);
+        return query != null && ResponseCode.A00000.getCode().equals(query.getResult()) && query.getCount() > 0;
+    }
+}