|
@@ -12,11 +12,13 @@ import com.fasterxml.jackson.databind.JsonNode;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
|
+import com.persagy.adm.server.auth.service.AdmAuthService;
|
|
import com.persagy.adm.server.custom.client.DicClient;
|
|
import com.persagy.adm.server.custom.client.DicClient;
|
|
import com.persagy.adm.server.custom.client.RwdClient;
|
|
import com.persagy.adm.server.custom.client.RwdClient;
|
|
import com.persagy.adm.server.custom.common.AdmConst;
|
|
import com.persagy.adm.server.custom.common.AdmConst;
|
|
import com.persagy.adm.server.custom.dao.*;
|
|
import com.persagy.adm.server.custom.dao.*;
|
|
import com.persagy.adm.server.custom.datatx.ObjectMapper4Tx;
|
|
import com.persagy.adm.server.custom.datatx.ObjectMapper4Tx;
|
|
|
|
+import com.persagy.adm.server.custom.dto.HasUpdateReq;
|
|
import com.persagy.adm.server.custom.dto.ObjectInfoCollectDTO;
|
|
import com.persagy.adm.server.custom.dto.ObjectInfoCollectDTO;
|
|
import com.persagy.adm.server.custom.dto.ObjectTypeCollectDTO;
|
|
import com.persagy.adm.server.custom.dto.ObjectTypeCollectDTO;
|
|
import com.persagy.adm.server.custom.dto.RelationDefineCollectDTO;
|
|
import com.persagy.adm.server.custom.dto.RelationDefineCollectDTO;
|
|
@@ -27,6 +29,7 @@ import com.persagy.adm.server.custom.service.*;
|
|
import com.persagy.adm.server.custom.util.DataExtrasUtil;
|
|
import com.persagy.adm.server.custom.util.DataExtrasUtil;
|
|
import com.persagy.dmp.basic.model.QueryCriteria;
|
|
import com.persagy.dmp.basic.model.QueryCriteria;
|
|
import com.persagy.dmp.common.constant.ValidEnum;
|
|
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.DigitalObjectClient;
|
|
import com.persagy.dmp.digital.client.DigitalRelationClient;
|
|
import com.persagy.dmp.digital.client.DigitalRelationClient;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -99,6 +102,9 @@ public class SyncAppImpl implements ISyncApp {
|
|
AdmDefineProblemInfoMapper admDefineProblemInfoMapper;
|
|
AdmDefineProblemInfoMapper admDefineProblemInfoMapper;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
+ private AdmAuthService admAuthService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
public SyncAppImpl(ObjectMapper4Tx mapper4Tx) {
|
|
public SyncAppImpl(ObjectMapper4Tx mapper4Tx) {
|
|
this.mapper4Tx = mapper4Tx;
|
|
this.mapper4Tx = mapper4Tx;
|
|
}
|
|
}
|
|
@@ -127,6 +133,7 @@ public class SyncAppImpl implements ISyncApp {
|
|
QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper,AdmConst.OBJ_TYPE_SYSTEM, AdmConst.OBJ_TYPE_EQUIPMENT);
|
|
QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper,AdmConst.OBJ_TYPE_SYSTEM, AdmConst.OBJ_TYPE_EQUIPMENT);
|
|
// 增加现场交付查询条件
|
|
// 增加现场交付查询条件
|
|
criteria.getCriteria().put("deliveryType", DeliveryTypeEnum.SCENE.getCode());
|
|
criteria.getCriteria().put("deliveryType", DeliveryTypeEnum.SCENE.getCode());
|
|
|
|
+ criteria.getCriteria().put("projectId", projectId);
|
|
List<ObjectTypeCollectDTO> typeList = ServiceUtil.queryAllPage(() -> rwdClient.queryDefineTypeCollect(groupCode, projectId, AdmConst.APP_ID, userId, criteria), criteria, new Pagination(500));
|
|
List<ObjectTypeCollectDTO> typeList = ServiceUtil.queryAllPage(() -> rwdClient.queryDefineTypeCollect(groupCode, projectId, AdmConst.APP_ID, userId, criteria), criteria, new Pagination(500));
|
|
|
|
|
|
|
|
|
|
@@ -149,6 +156,7 @@ public class SyncAppImpl implements ISyncApp {
|
|
QueryCriteria queryCriteria = new QueryCriteria();
|
|
QueryCriteria queryCriteria = new QueryCriteria();
|
|
ObjectNode objectNode = objectMapper.createObjectNode();
|
|
ObjectNode objectNode = objectMapper.createObjectNode();
|
|
objectNode.put("deliveryType",DeliveryTypeEnum.SCENE.getCode());
|
|
objectNode.put("deliveryType",DeliveryTypeEnum.SCENE.getCode());
|
|
|
|
+ objectNode.put("projectId", projectId);
|
|
queryCriteria.setCriteria(objectNode);
|
|
queryCriteria.setCriteria(objectNode);
|
|
List<RelationDefineCollectDTO> relList = ServiceUtil.call(() -> rwdClient.queryDefineRelCollect(groupCode, projectId, AdmConst.APP_ID, userId, queryCriteria));
|
|
List<RelationDefineCollectDTO> relList = ServiceUtil.call(() -> rwdClient.queryDefineRelCollect(groupCode, projectId, AdmConst.APP_ID, userId, queryCriteria));
|
|
data.setRelation(relList);
|
|
data.setRelation(relList);
|
|
@@ -158,6 +166,7 @@ public class SyncAppImpl implements ISyncApp {
|
|
if(includeInfos) {
|
|
if(includeInfos) {
|
|
QueryCriteria qc = new QueryCriteria();
|
|
QueryCriteria qc = new QueryCriteria();
|
|
ObjectNode objectNode = objectMapper.createObjectNode();
|
|
ObjectNode objectNode = objectMapper.createObjectNode();
|
|
|
|
+ objectNode.put("projectId", projectId);
|
|
objectNode.put("deliveryType",DeliveryTypeEnum.SCENE.getCode());
|
|
objectNode.put("deliveryType",DeliveryTypeEnum.SCENE.getCode());
|
|
qc.setCriteria(objectNode);
|
|
qc.setCriteria(objectNode);
|
|
List<ObjectInfoCollectDTO> funcList = ServiceUtil.call(() -> rwdClient.queryDefineInfoCollect(groupCode, projectId, AdmConst.APP_ID, userId, qc));
|
|
List<ObjectInfoCollectDTO> funcList = ServiceUtil.call(() -> rwdClient.queryDefineInfoCollect(groupCode, projectId, AdmConst.APP_ID, userId, qc));
|
|
@@ -273,7 +282,7 @@ public class SyncAppImpl implements ISyncApp {
|
|
List<AdmProblem> problems = problemMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<>(),projectId,buildingId,operator,admDownloadTs));
|
|
List<AdmProblem> problems = problemMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<>(),projectId,buildingId,operator,admDownloadTs));
|
|
|
|
|
|
// 下载ADM图纸
|
|
// 下载ADM图纸
|
|
- List<AdmCad> admCads = admCadMapper.selectList(new LambdaQueryWrapper<AdmCad>().eq(AdmCad::getProjectId,projectId).eq(AdmCad::getBuildingId,buildingId));
|
|
|
|
|
|
+ List<AdmCad> admCads = admCadMapper.selectList(new LambdaQueryWrapper<AdmCad>().eq(AdmCad::getProjectId,projectId).eq(AdmCad::getBuildingId,buildingId).gt(AdmCad::getTs,admDownloadTs));
|
|
|
|
|
|
List<AdmFile> file = fileMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<AdmFile>(), projectId, buildingId, operator, admDownloadTs));
|
|
List<AdmFile> file = fileMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<AdmFile>(), projectId, buildingId, operator, admDownloadTs));
|
|
List<AdmQrCode> qrCode = qrCodeMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<AdmQrCode>(), projectId, buildingId, operator, admDownloadTs));
|
|
List<AdmQrCode> qrCode = qrCodeMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<AdmQrCode>(), projectId, buildingId, operator, admDownloadTs));
|
|
@@ -429,6 +438,106 @@ public class SyncAppImpl implements ISyncApp {
|
|
return new UploadRtn(AdmConst.UPLOAD_FINISHED);
|
|
return new UploadRtn(AdmConst.UPLOAD_FINISHED);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * app端是否有数据需要更新
|
|
|
|
+ * @param hasUpdateReq 传各个数据类型的最后更新时
|
|
|
|
+ * @return true/false
|
|
|
|
+ */
|
|
|
|
+ @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;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private AdmM2dEquipMapper m2dEquipMapper;
|
|
|
|
+
|
|
private void autoRelations(List<ObjectNode> newObjs, List<ObjectNode> relations, UploadParams ps){
|
|
private void autoRelations(List<ObjectNode> newObjs, List<ObjectNode> relations, UploadParams ps){
|
|
for(ObjectNode obj : newObjs) {
|
|
for(ObjectNode obj : newObjs) {
|
|
if (obj.get("objType") != null && AdmConst.OBJ_TYPE_EQUIPMENT.equals(obj.get("objType").asText())) {
|
|
if (obj.get("objType") != null && AdmConst.OBJ_TYPE_EQUIPMENT.equals(obj.get("objType").asText())) {
|