|
@@ -341,11 +341,11 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
|
|
|
QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper);
|
|
|
buildDownloadQueryCriteria(criteria, operator, bdtpDownloadTs);
|
|
|
- criteria.getCriteria().put("createApp", AdmConst.CREATOR_APP);
|
|
|
+ criteria.getCriteria().put("createApp", AdmConst.CREATOR_APP); //TODO 临时逻辑,只下载app端创建的关系
|
|
|
|
|
|
List<ObjectNode> rels = ServiceUtil.queryAllPage(() -> rwdClient.queryRelation(groupCode, projectId, AdmConst.APP_ID, userId, criteria), criteria, new Pagination(500));
|
|
|
/*
|
|
|
- //TODO debug 关系数据量过大,测试下载1000条
|
|
|
+ //debug 关系数据量过大,测试下载1000条
|
|
|
criteria.setPage(1L);
|
|
|
criteria.setSize(1000L);
|
|
|
List<ObjectNode> rels = ServiceUtil.call(() -> rwdClient.queryRelation(groupCode, projectId, AdmConst.APP_ID, userId, criteria));
|
|
@@ -368,13 +368,16 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
return new UploadRtn(AdmConst.UPLOAD_FINISHED);
|
|
|
|
|
|
String operator = getOperator(clientId, userId);
|
|
|
+ String timestamp = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN);
|
|
|
+
|
|
|
+ UploadParams uploadParams = new UploadParams(groupCode, projectId, userId, uploadData.getUploadJobId(), operator, timestamp);
|
|
|
|
|
|
//检查上传任务状态
|
|
|
- String status = checkUploadStatus(uploadData.getUploadJobId(), operator, projectId);
|
|
|
+ String status = checkUploadStatus(uploadParams);
|
|
|
if(status != null)
|
|
|
return new UploadRtn(status);
|
|
|
|
|
|
- String timestamp = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN);
|
|
|
+
|
|
|
List<AdmUploadLog> logs = new ArrayList<>();
|
|
|
|
|
|
//TODO 分布式事务管理
|
|
@@ -382,18 +385,18 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
//上传bdtp数据
|
|
|
if (CollUtil.isNotEmpty(uploadData.getObjects())) {
|
|
|
D2mMessage d2mMessage = new D2mMessage("object");
|
|
|
- List<ObjectNode>[] objData = prepareBdtpData(uploadData.getObjects(), operator, timestamp, uploadData.getUploadJobId(), d2mMessage, logs);
|
|
|
- uploadObjs(groupCode, projectId, userId, objData);
|
|
|
+ List<ObjectNode>[] objData = prepareBdtpData(uploadData.getObjects(), uploadParams, d2mMessage, logs);
|
|
|
+ uploadObjs(uploadParams, objData);
|
|
|
|
|
|
- sendD2mMessage(d2mMessage, projectId, uploadData.getUploadJobId());
|
|
|
+ sendD2mMessage(d2mMessage, uploadParams);
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(uploadData.getRelations())) {
|
|
|
- List<ObjectNode>[] relData = prepareBdtpData(uploadData.getRelations(), operator, timestamp, uploadData.getUploadJobId(), null, logs);
|
|
|
- uploadRels(groupCode, projectId, userId, relData);
|
|
|
+ List<ObjectNode>[] relData = prepareBdtpData(uploadData.getRelations(), uploadParams, null, logs);
|
|
|
+ uploadRels(uploadParams, relData);
|
|
|
}
|
|
|
|
|
|
//上传adm数据
|
|
|
- uploadAdmData(uploadData, operator, timestamp, projectId, logs);
|
|
|
+ uploadAdmData(uploadData, uploadParams, logs);
|
|
|
} catch (Exception e) {
|
|
|
markStatus(uploadData.getUploadJobId(), AdmConst.UPLOAD_ERROR);
|
|
|
|
|
@@ -411,16 +414,16 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
return new UploadRtn(AdmConst.UPLOAD_FINISHED);
|
|
|
}
|
|
|
|
|
|
- private String checkUploadStatus(String uploadJobId, String operator, String projectId){
|
|
|
- AdmUploadJob job = uploadJobMapper.selectOne(new QueryWrapper<AdmUploadJob>().eq("id", uploadJobId));
|
|
|
+ private String checkUploadStatus(UploadParams uploadParams){
|
|
|
+ AdmUploadJob job = uploadJobMapper.selectOne(new QueryWrapper<AdmUploadJob>().eq("id", uploadParams.jobId));
|
|
|
if(job != null) {
|
|
|
if(!AdmConst.UPLOAD_ERROR.equals(job.getStatus()))
|
|
|
return job.getStatus();
|
|
|
} else {
|
|
|
job = new AdmUploadJob();
|
|
|
- job.setId(uploadJobId);
|
|
|
- job.setProjectId(projectId);
|
|
|
- job.setOperator(operator);
|
|
|
+ job.setId(uploadParams.jobId);
|
|
|
+ job.setProjectId(uploadParams.projectId);
|
|
|
+ job.setOperator(uploadParams.operator);
|
|
|
job.setStatus(AdmConst.UPLOAD_PROCESSING);
|
|
|
job.setStartTime(new Timestamp(System.currentTimeMillis()));
|
|
|
uploadJobMapper.insert(job);
|
|
@@ -436,21 +439,21 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
uploadJobMapper.updateById(job);
|
|
|
}
|
|
|
|
|
|
- private void uploadObjs(String groupCode, String projectId, String userId, List<ObjectNode>[] data) {
|
|
|
+ private void uploadObjs(UploadParams ps, List<ObjectNode>[] data) {
|
|
|
if(data[0].size() > 0)
|
|
|
- ServiceUtil.call(() -> objectClient.create(groupCode, projectId, AdmConst.APP_ID, userId, data[0]));
|
|
|
+ ServiceUtil.call(() -> objectClient.create(ps.groupCode, ps.projectId, AdmConst.APP_ID, ps.userId, data[0]));
|
|
|
if (data[1].size() > 0)
|
|
|
- ServiceUtil.call(() -> objectClient.update(groupCode, projectId, AdmConst.APP_ID, userId, data[1]));
|
|
|
+ ServiceUtil.call(() -> objectClient.update(ps.groupCode, ps.projectId, AdmConst.APP_ID, ps.userId, data[1]));
|
|
|
}
|
|
|
|
|
|
- private void uploadRels(String groupCode, String projectId, String userId, List<ObjectNode>[] data) {
|
|
|
+ private void uploadRels(UploadParams ps, List<ObjectNode>[] data) {
|
|
|
if(data[0].size() > 0)
|
|
|
- ServiceUtil.call(() -> relationClient.create(groupCode, projectId, AdmConst.APP_ID, userId, data[0]));
|
|
|
+ ServiceUtil.call(() -> relationClient.create(ps.groupCode, ps.projectId, AdmConst.APP_ID, ps.userId, data[0]));
|
|
|
if (data[1].size() > 0)
|
|
|
- ServiceUtil.call(() -> relationClient.update(groupCode, projectId, AdmConst.APP_ID, userId, data[1]));
|
|
|
+ ServiceUtil.call(() -> relationClient.update(ps.groupCode, ps.projectId, AdmConst.APP_ID, ps.userId, data[1]));
|
|
|
}
|
|
|
|
|
|
- private List<ObjectNode>[] prepareBdtpData(List<ObjectNode> list, String operator, String time, String jobId, D2mMessage d2mMessage, List<AdmUploadLog> logs){
|
|
|
+ private List<ObjectNode>[] prepareBdtpData(List<ObjectNode> list, UploadParams uploadParams, D2mMessage d2mMessage, List<AdmUploadLog> logs){
|
|
|
List<ObjectNode> updateList = new ArrayList<>();
|
|
|
Iterator<ObjectNode> iter = list.iterator();
|
|
|
while (iter.hasNext()) {
|
|
@@ -473,12 +476,12 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
d2mMessage.appendModifyItem(entity);
|
|
|
}
|
|
|
|
|
|
- log = new AdmUploadLog(jobId, operator, remove ? AdmUploadLog.REMOVE : AdmUploadLog.MODIFY);
|
|
|
+ log = new AdmUploadLog(uploadParams.jobId, uploadParams.operator, remove ? AdmUploadLog.REMOVE : AdmUploadLog.MODIFY);
|
|
|
log.setData(entity, objectMapper);
|
|
|
|
|
|
entity.put("updateApp", AdmConst.CREATOR_APP);
|
|
|
- entity.put("modifier", operator);
|
|
|
- entity.put("modifiedTime", time);
|
|
|
+ entity.put("modifier", uploadParams.operator);
|
|
|
+ entity.put("modifiedTime", uploadParams.time);
|
|
|
|
|
|
//TODO 可能需要进行删除信息点操作
|
|
|
|
|
@@ -486,16 +489,15 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
if(d2mMessage != null && needsD2m(entity))
|
|
|
d2mMessage.appendAddItem(entity);
|
|
|
|
|
|
- log = new AdmUploadLog(jobId, operator, AdmUploadLog.ADD);
|
|
|
+ log = new AdmUploadLog(uploadParams.jobId, uploadParams.operator, AdmUploadLog.ADD);
|
|
|
log.setData(entity, objectMapper);
|
|
|
|
|
|
entity.put("createApp", AdmConst.CREATOR_APP);
|
|
|
- entity.put("creator", operator);
|
|
|
- entity.put("creationTime", time);
|
|
|
+ entity.put("creator", uploadParams.operator);
|
|
|
+ entity.put("creationTime", uploadParams.time);
|
|
|
|
|
|
- //TODO 临时处理,方便之后的增量查询
|
|
|
- entity.put("modifier", operator);
|
|
|
- entity.put("modifiedTime", time);
|
|
|
+ entity.put("modifier", uploadParams.operator);
|
|
|
+ entity.put("modifiedTime", uploadParams.time);
|
|
|
}
|
|
|
logs.add(log);
|
|
|
}
|
|
@@ -508,32 +510,32 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void uploadAdmData(UploadData uploadData, String operator, String time, String projectId, List<AdmUploadLog> logs) {
|
|
|
+ public void uploadAdmData(UploadData uploadData, UploadParams uploadParams, List<AdmUploadLog> logs) {
|
|
|
if (CollUtil.isNotEmpty(uploadData.getPipes())) {
|
|
|
- uploadAdmEntities(uploadData.getPipes(), operator, time, projectId, uploadData.getUploadJobId(), pipeMapper, new D2mMessage("pipe"), logs, true);
|
|
|
+ uploadAdmEntities(uploadData.getPipes(), uploadParams, pipeMapper, new D2mMessage("pipe"), logs, true);
|
|
|
}
|
|
|
|
|
|
if (CollUtil.isNotEmpty(uploadData.getJobSpace())) {
|
|
|
- uploadAdmEntities(uploadData.getJobSpace(), operator, time, projectId, uploadData.getUploadJobId(), jobSpaceMapper, null, logs, false);
|
|
|
+ uploadAdmEntities(uploadData.getJobSpace(), uploadParams, jobSpaceMapper, null, logs, false);
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(uploadData.getProblemArch())) {
|
|
|
- uploadAdmEntities(uploadData.getProblemArch(), operator, time, projectId, uploadData.getUploadJobId(), problemArchMapper, null, logs, false);
|
|
|
+ uploadAdmEntities(uploadData.getProblemArch(), uploadParams, problemArchMapper, null, logs, false);
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(uploadData.getProblemEquip())) {
|
|
|
- uploadAdmEntities(uploadData.getProblemEquip(), operator, time, projectId, uploadData.getUploadJobId(), problemEquipMapper, null, logs, false);
|
|
|
+ uploadAdmEntities(uploadData.getProblemEquip(), uploadParams, problemEquipMapper, null, logs, false);
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(uploadData.getFile())) {
|
|
|
- uploadAdmEntities(uploadData.getFile(), operator, time, projectId, uploadData.getUploadJobId(), fileMapper, null, logs, false);
|
|
|
+ uploadAdmEntities(uploadData.getFile(), uploadParams, fileMapper, null, logs, false);
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(uploadData.getQrCode())) {
|
|
|
- uploadAdmEntities(uploadData.getQrCode(), operator, time, projectId, uploadData.getUploadJobId(), qrCodeMapper, null, logs, false);
|
|
|
+ uploadAdmEntities(uploadData.getQrCode(), uploadParams, qrCodeMapper, null, logs, false);
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(uploadData.getServeArea())) {
|
|
|
- uploadAdmEntities(uploadData.getServeArea(), operator, time, projectId, uploadData.getUploadJobId(), serveAreaMapper, null, logs, false);
|
|
|
+ uploadAdmEntities(uploadData.getServeArea(), uploadParams, serveAreaMapper, null, logs, false);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private <T extends BaseAdmDataEntity> void uploadAdmEntities(List<T> list, String operator, String time, String projectId, String jobId, BaseMapper<T> mapper, D2mMessage d2mMessage, List<AdmUploadLog> logs, boolean merge) {
|
|
|
+ private <T extends BaseAdmDataEntity> void uploadAdmEntities(List<T> list, UploadParams ps, BaseMapper<T> mapper, D2mMessage d2mMessage, List<AdmUploadLog> logs, boolean merge) {
|
|
|
List<T> updateList = new ArrayList<>();
|
|
|
Iterator<T> iter = list.iterator();
|
|
|
while (iter.hasNext()) {
|
|
@@ -553,7 +555,7 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
d2mMessage.appendModifyItem(entity);
|
|
|
}
|
|
|
|
|
|
- log = new AdmUploadLog(jobId, operator, remove ? AdmUploadLog.REMOVE : AdmUploadLog.MODIFY);
|
|
|
+ log = new AdmUploadLog(ps.jobId, ps.operator, remove ? AdmUploadLog.REMOVE : AdmUploadLog.MODIFY);
|
|
|
|
|
|
//任务空间不上传轮廓数据
|
|
|
if(entity instanceof AdmJobSpace)
|
|
@@ -562,7 +564,7 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
if(d2mMessage != null)
|
|
|
d2mMessage.appendAddItem(entity);
|
|
|
|
|
|
- log = new AdmUploadLog(jobId, operator, AdmUploadLog.ADD);
|
|
|
+ log = new AdmUploadLog(ps.jobId, ps.operator, AdmUploadLog.ADD);
|
|
|
}
|
|
|
log.setData(entity, objectMapper);
|
|
|
logs.add(log);
|
|
@@ -573,8 +575,8 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
//insert
|
|
|
if(list.size() > 0) {
|
|
|
for(T entity : list) {
|
|
|
- entity.setCreator(operator);
|
|
|
- entity.setCreationTime(time);
|
|
|
+ entity.setCreator(ps.operator);
|
|
|
+ entity.setCreationTime(ps.time);
|
|
|
mapper.insert(entity);
|
|
|
}
|
|
|
}
|
|
@@ -597,13 +599,13 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
if(merge)
|
|
|
entity = mergeEntity(entity, dbObjsMap.get(entity.getId()));
|
|
|
|
|
|
- entity.setModifier(operator);
|
|
|
- entity.setModifiedTime(time);
|
|
|
+ entity.setModifier(ps.operator);
|
|
|
+ entity.setModifiedTime(ps.time);
|
|
|
mapper.updateById(entity);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- sendD2mMessage(d2mMessage, projectId, jobId);
|
|
|
+ sendD2mMessage(d2mMessage, ps);
|
|
|
}
|
|
|
|
|
|
private <T extends BaseAdmDataEntity> T mergeEntity(T obj, T dbObj) {
|
|
@@ -623,7 +625,7 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
return infos;
|
|
|
}
|
|
|
|
|
|
- private void sendD2mMessage(D2mMessage d2mMessage, String projectId, String jobId){
|
|
|
+ private void sendD2mMessage(D2mMessage d2mMessage, UploadParams ps){
|
|
|
if (d2mMessage != null && d2mMessage.isNotEmpty()) {
|
|
|
// if(d2mMessage.getAddItems() != null){
|
|
|
// for(Object o : d2mMessage.getAddItems()) {
|
|
@@ -640,7 +642,7 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
// markM2dState(o);
|
|
|
// }
|
|
|
// }
|
|
|
- markM2dState(d2mMessage, projectId, jobId);
|
|
|
+ markM2dState(d2mMessage, ps);
|
|
|
syncModel.sendMessageToModel(d2mMessage);
|
|
|
}
|
|
|
}
|
|
@@ -657,7 +659,10 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
JsonNode l = node.get("location");
|
|
|
if(l != null) {
|
|
|
try {
|
|
|
- node.put("bimLocation", StrUtil.join(",", l.get("x").asDouble(), l.get("y").asDouble(), l.get("z").asDouble()));
|
|
|
+ if(l.get("x") != null)
|
|
|
+ node.put("bimLocation", StrUtil.join(",", l.get("x").asDouble(), l.get("y").asDouble(), l.get("z").asDouble()));
|
|
|
+ else if(l.get("X") != null)
|
|
|
+ node.put("bimLocation", StrUtil.join(",", l.get("X").asDouble(), l.get("Y").asDouble(), l.get("Z").asDouble()));
|
|
|
node.remove("location");
|
|
|
}catch (Exception e) {
|
|
|
|
|
@@ -665,12 +670,12 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void markM2dState(D2mMessage d2mMessage, String projectId, String jobId){
|
|
|
+ private void markM2dState(D2mMessage d2mMessage, UploadParams ps){
|
|
|
AdmMessageP message = new AdmMessageP();
|
|
|
message.setId(d2mMessage.getId());
|
|
|
- message.setProjectId(projectId);
|
|
|
+ message.setProjectId(ps.projectId);
|
|
|
message.setTriggerType("upload");
|
|
|
- message.setSender(jobId);
|
|
|
+ message.setSender(ps.jobId);
|
|
|
message.setContent(d2mMessage);
|
|
|
message.setStatus(AdmConst.UPLOAD_PROCESSING);
|
|
|
message.setSendTime(new Timestamp(System.currentTimeMillis()));
|
|
@@ -678,4 +683,29 @@ public class SyncAppImpl implements ISyncApp {
|
|
|
messageMapper.insert(message);
|
|
|
}
|
|
|
|
|
|
+ private class UploadParams{
|
|
|
+
|
|
|
+ String groupCode;
|
|
|
+
|
|
|
+ String projectId;
|
|
|
+
|
|
|
+ String userId;
|
|
|
+
|
|
|
+ String jobId;
|
|
|
+
|
|
|
+ String operator;
|
|
|
+
|
|
|
+ String time;
|
|
|
+
|
|
|
+ public UploadParams(String groupCode, String projectId, String userId, String jobId, String operator, String time) {
|
|
|
+ this.groupCode = groupCode;
|
|
|
+ this.projectId = projectId;
|
|
|
+ this.userId = userId;
|
|
|
+ this.jobId = jobId;
|
|
|
+ this.operator = operator;
|
|
|
+ this.time = time;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|