bim同步增加层级名称(区、栋、专业、层)
This commit is contained in:
parent
9fcd7b03e5
commit
1728d185bd
@ -1,15 +1,13 @@
|
|||||||
package com.zhgd.xmgl.modules.project.entity;
|
package com.zhgd.xmgl.modules.project.entity;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* BIM协同管理平台进度信息的保存接口发送body
|
* BIM协同管理平台进度信息的保存接口发送body
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class BIMProgressTaskRqBody {
|
public class BIMProgressTaskRqBody {
|
||||||
|
private Long progressTaskId;
|
||||||
/**
|
/**
|
||||||
* floor 是 String 楼层-->例如:"floor": "B1"
|
* floor 是 String 楼层-->例如:"floor": "B1"
|
||||||
*/
|
*/
|
||||||
@ -48,4 +46,13 @@ public class BIMProgressTaskRqBody {
|
|||||||
* project=2 是坪山沙湖那个
|
* project=2 是坪山沙湖那个
|
||||||
*/
|
*/
|
||||||
private Integer projectId;
|
private Integer projectId;
|
||||||
|
/**
|
||||||
|
* 区
|
||||||
|
*/
|
||||||
|
private String district;
|
||||||
|
/**
|
||||||
|
* 栋
|
||||||
|
*/
|
||||||
|
private String building;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -197,6 +197,9 @@ public class ProgressTask implements Serializable {
|
|||||||
@ApiModelProperty(value = "前置任务id列表,使用英文“,”分割")
|
@ApiModelProperty(value = "前置任务id列表,使用英文“,”分割")
|
||||||
private String predecessorIds;
|
private String predecessorIds;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "层级名称(区、栋、专业、层)")
|
||||||
|
private String levelName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 子节点列表
|
* 子节点列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.zhgd.xmgl.modules.project.enums;
|
||||||
|
|
||||||
|
public enum LevelNameEnum {
|
||||||
|
district("区"), building("栋"), major("专业"), floor("层");
|
||||||
|
private String levelName;
|
||||||
|
|
||||||
|
LevelNameEnum(String levelName) {
|
||||||
|
this.levelName = levelName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLevelName() {
|
||||||
|
return levelName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLevelName(String levelName) {
|
||||||
|
this.levelName = levelName;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
duty_user_id, duty_user_name, progress_ratio, actual_start_date, create_date,
|
duty_user_id, duty_user_name, progress_ratio, actual_start_date, create_date,
|
||||||
update_date,
|
update_date,
|
||||||
create_user_id, status, file_url, remark, start_date, finish_date,
|
create_user_id, status, file_url, remark, start_date, finish_date,
|
||||||
actual_finish_date, predecessor_ids)
|
actual_finish_date, predecessor_ids, level_name)
|
||||||
values
|
values
|
||||||
<foreach collection="entities" item="entity" separator=",">
|
<foreach collection="entities" item="entity" separator=",">
|
||||||
(#{entity.id}, #{entity.projectSn}, #{entity.taskName}, #{entity.level}, #{entity.taskTypeId},
|
(#{entity.id}, #{entity.projectSn}, #{entity.taskName}, #{entity.level}, #{entity.taskTypeId},
|
||||||
@ -15,7 +15,7 @@
|
|||||||
#{entity.progressRatio},
|
#{entity.progressRatio},
|
||||||
#{entity.actualStartDate}, default, default, #{entity.createUserId},
|
#{entity.actualStartDate}, default, default, #{entity.createUserId},
|
||||||
#{entity.status}, #{entity.fileUrl}, #{entity.remark}, #{entity.startDate}, #{entity.finishDate},
|
#{entity.status}, #{entity.fileUrl}, #{entity.remark}, #{entity.startDate}, #{entity.finishDate},
|
||||||
#{entity.actualFinishDate}, #{entity.predecessorIds})
|
#{entity.actualFinishDate}, #{entity.predecessorIds}, #{entity.levelName})
|
||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
|||||||
@ -7,9 +7,11 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.scheduling.annotation.AsyncResult;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 异步调用bim
|
* 异步调用bim
|
||||||
@ -21,7 +23,7 @@ public class AsyBim {
|
|||||||
private String bimProgressIpPort;
|
private String bimProgressIpPort;
|
||||||
|
|
||||||
@Async("bimExecutor")
|
@Async("bimExecutor")
|
||||||
public void asynAddProgressTask(BIMProgressTaskRqBody bimProgressTaskRqBody) {
|
public Future<Object> asyncAddProgressTask(BIMProgressTaskRqBody bimProgressTaskRqBody) {
|
||||||
if (StringUtils.isNotBlank(bimProgressIpPort)) {
|
if (StringUtils.isNotBlank(bimProgressIpPort)) {
|
||||||
String url = bimProgressIpPort + "/Other/SaveProgress";
|
String url = bimProgressIpPort + "/Other/SaveProgress";
|
||||||
String body = JSON.toJSONString(bimProgressTaskRqBody);
|
String body = JSON.toJSONString(bimProgressTaskRqBody);
|
||||||
@ -58,12 +60,24 @@ public class AsyBim {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
return new AsyncResult<>(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async("bimExecutor")
|
@Async("bimExecutor")
|
||||||
public void asynDeleteProgressTask(String floor, String major) {
|
public Future<Object> asyncDeleteProgressTask(BIMProgressTaskRqBody body) {
|
||||||
if (StringUtils.isNotBlank(bimProgressIpPort)) {
|
if (StringUtils.isNotBlank(bimProgressIpPort)) {
|
||||||
String url = bimProgressIpPort + "/Other/DeleteProgress?floor=" + floor + "&major=" + major;
|
String floor = body.getFloor();
|
||||||
|
String major = body.getMajor();
|
||||||
|
String district = body.getDistrict();
|
||||||
|
String building = body.getBuilding();
|
||||||
|
Integer projectId = body.getProjectId();
|
||||||
|
String url = bimProgressIpPort + "/Other/DeleteProgress?floor=" + floor + "&major=" + major + "&projectId=" + projectId;
|
||||||
|
if (StringUtils.isNotBlank(district)) {
|
||||||
|
url += "&district=" + district;
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(building)) {
|
||||||
|
url += "&building=" + building;
|
||||||
|
}
|
||||||
log.info("http调用bim删除进度:url:{}", url);
|
log.info("http调用bim删除进度:url:{}", url);
|
||||||
String rs = HttpUtil.post(url, new HashMap<>());
|
String rs = HttpUtil.post(url, new HashMap<>());
|
||||||
log.info("http调用bim删除进度结果:{}", rs);
|
log.info("http调用bim删除进度结果:{}", rs);
|
||||||
@ -82,5 +96,6 @@ public class AsyBim {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
return new AsyncResult<>(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUnit;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.text.CharSequenceUtil;
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.crypto.SecureUtil;
|
import cn.hutool.crypto.SecureUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
@ -24,6 +25,7 @@ import com.zhgd.xmgl.modules.project.entity.BIMProgressTaskRqBody;
|
|||||||
import com.zhgd.xmgl.modules.project.entity.ProgressTask;
|
import com.zhgd.xmgl.modules.project.entity.ProgressTask;
|
||||||
import com.zhgd.xmgl.modules.project.entity.dto.ProgressTaskPredecessorDTO;
|
import com.zhgd.xmgl.modules.project.entity.dto.ProgressTaskPredecessorDTO;
|
||||||
import com.zhgd.xmgl.modules.project.entity.vo.ActualProgressVO;
|
import com.zhgd.xmgl.modules.project.entity.vo.ActualProgressVO;
|
||||||
|
import com.zhgd.xmgl.modules.project.enums.LevelNameEnum;
|
||||||
import com.zhgd.xmgl.modules.project.mapper.ProgressTaskMapper;
|
import com.zhgd.xmgl.modules.project.mapper.ProgressTaskMapper;
|
||||||
import com.zhgd.xmgl.modules.project.service.ProgressTaskService;
|
import com.zhgd.xmgl.modules.project.service.ProgressTaskService;
|
||||||
import com.zhgd.xmgl.util.ProfileJudgeUtil;
|
import com.zhgd.xmgl.util.ProfileJudgeUtil;
|
||||||
@ -43,10 +45,13 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进度甘特图(ProgressTask)表服务实现类
|
* 进度甘特图(ProgressTask)表服务实现类
|
||||||
@ -96,64 +101,110 @@ public class ProgressTaskServiceImpl extends ServiceImpl<ProgressTaskMapper, Pro
|
|||||||
log.info("原progressTasks:{}", JSON.toJSONString(progressTasks));
|
log.info("原progressTasks:{}", JSON.toJSONString(progressTasks));
|
||||||
progressTaskMapper.delete(Wrappers.lambdaQuery(ProgressTask.class).eq(ProgressTask::getProjectSn, projectSn));
|
progressTaskMapper.delete(Wrappers.lambdaQuery(ProgressTask.class).eq(ProgressTask::getProjectSn, projectSn));
|
||||||
|
|
||||||
if (isBIMAsyncEnable()) {
|
Collection<ProgressTask> progressTaskList = analysisMpp(mppFile, projectSn, createUserId);
|
||||||
//调用BIM同步删除数据
|
log.info("importData的新增数据:{}", progressTaskList);
|
||||||
List<BIMProgressTaskRqBody> deleteList = getBimTasksByProgressTasks(progressTasks);
|
|
||||||
if (CollUtil.isNotEmpty(deleteList)) {
|
|
||||||
for (BIMProgressTaskRqBody body : deleteList) {
|
checkBIMLevelName(progressTaskList);
|
||||||
asyBim.asynDeleteProgressTask(body.getFloor(), body.getMajor());
|
List<Future<Object>> futures = deleteBimTasksIfEnable(progressTasks);
|
||||||
|
|
||||||
|
if (CollUtil.isNotEmpty(progressTaskList)) {
|
||||||
|
progressTaskMapper.insertBatch(progressTaskList);
|
||||||
|
|
||||||
|
waitBIMDone(futures);
|
||||||
|
addBimTasksIfEnable(progressTaskList.stream().collect(Collectors.toList()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void waitBIMDone(List<Future<Object>> futures) {
|
||||||
|
for (Future<Object> future : futures) {
|
||||||
|
try {
|
||||||
|
future.get();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (ExecutionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Collection<ProgressTask> progressTaskList = analysisMpp(mppFile, projectSn, createUserId);
|
private void checkBIMLevelName(Collection<ProgressTask> progressTasks) {
|
||||||
log.info("importData的新增数据:{}", progressTaskList);
|
if (isBIMAsyncEnable()) {
|
||||||
if (CollUtil.isNotEmpty(progressTaskList)) {
|
List<String> levelNames = Stream.of(LevelNameEnum.values()).map(LevelNameEnum::getLevelName).collect(Collectors.toList());
|
||||||
progressTaskMapper.insertBatch(progressTaskList);
|
if (!progressTasks.stream().allMatch(e -> StringUtils.isNotBlank(e.getLevelName()) && levelNames.contains(e.getLevelName()))) {
|
||||||
|
throw new OpenAlertException("层级名称为空或不在(区、栋、专业、层)之中");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addBimTasksIfEnable(List<ProgressTask> progressTasks) {
|
||||||
if (isBIMAsyncEnable()) {
|
if (isBIMAsyncEnable()) {
|
||||||
//调用BIM同步添加数据
|
//调用BIM同步添加数据
|
||||||
List<BIMProgressTaskRqBody> bimProgressTaskRqBodies = getBimTasksByProgressTasks(progressTasks);
|
List<BIMProgressTaskRqBody> bimProgressTaskRqBodies = buildBimTasksByProgressTasks(progressTasks);
|
||||||
if (CollUtil.isNotEmpty(bimProgressTaskRqBodies)) {
|
if (CollUtil.isNotEmpty(bimProgressTaskRqBodies)) {
|
||||||
for (BIMProgressTaskRqBody bimProgressTaskRqBody : bimProgressTaskRqBodies) {
|
for (BIMProgressTaskRqBody bimProgressTaskRqBody : bimProgressTaskRqBodies) {
|
||||||
asyBim.asynAddProgressTask(bimProgressTaskRqBody);
|
asyBim.asyncAddProgressTask(bimProgressTaskRqBody);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Future<Object>> deleteBimTasksIfEnable(List<ProgressTask> progressTasks) {
|
||||||
|
ArrayList<Future<Object>> futures = new ArrayList<>();
|
||||||
|
if (isBIMAsyncEnable()) {
|
||||||
|
//调用BIM同步删除数据
|
||||||
|
List<BIMProgressTaskRqBody> deleteList = buildBimTasksByProgressTasks(progressTasks);
|
||||||
|
if (CollUtil.isNotEmpty(deleteList)) {
|
||||||
|
for (BIMProgressTaskRqBody body : deleteList) {
|
||||||
|
futures.add(asyBim.asyncDeleteProgressTask(body));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return futures;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算BIM同步添加数据
|
* 构建BIM同步的数据
|
||||||
*
|
*
|
||||||
* @param progressTasks
|
* @param progressTasks
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private List<BIMProgressTaskRqBody> getBimTasksByProgressTasks(List<ProgressTask> progressTasks) {
|
private List<BIMProgressTaskRqBody> buildBimTasksByProgressTasks(List<ProgressTask> progressTasks) {
|
||||||
ArrayList<BIMProgressTaskRqBody> bimProgressTaskRqBodies = new ArrayList<>();
|
ArrayList<BIMProgressTaskRqBody> bimProgressTaskRqBodies = new ArrayList<>();
|
||||||
Map<Long, ProgressTask> topIdMap = progressTasks.stream().filter(progressTask -> progressTask.getParentId().equals(0L))
|
Map<Long, ProgressTask> idMap = progressTasks.stream().collect(Collectors.toMap(ProgressTask::getId, progressTask -> progressTask));
|
||||||
.collect(Collectors.toMap(ProgressTask::getId, progressTask -> progressTask));
|
|
||||||
if (CollUtil.isNotEmpty(topIdMap)) {
|
|
||||||
for (ProgressTask progressTask : progressTasks) {
|
for (ProgressTask progressTask : progressTasks) {
|
||||||
ProgressTask pt = topIdMap.get(progressTask.getParentId());
|
|
||||||
Matcher matcher = floorPattern.matcher(progressTask.getTaskName());
|
Matcher matcher = floorPattern.matcher(progressTask.getTaskName());
|
||||||
if (matcher.find()) {
|
if (matcher.find()) {
|
||||||
BIMProgressTaskRqBody body = buildBimTask(progressTask, pt.getTaskName(), matcher.group());
|
BIMProgressTaskRqBody body = buildBimTask(progressTask,
|
||||||
|
getLevelContent(progressTask, idMap, LevelNameEnum.major.getLevelName()),
|
||||||
|
matcher.group(),
|
||||||
|
getLevelContent(progressTask, idMap, LevelNameEnum.district.getLevelName()),
|
||||||
|
getLevelContent(progressTask, idMap, LevelNameEnum.building.getLevelName()));
|
||||||
bimProgressTaskRqBodies.add(body);
|
bimProgressTaskRqBodies.add(body);
|
||||||
} else {
|
} else if (progressTask.getTaskName().contains(basement)) {
|
||||||
/*
|
//只有 地下室地板 是不带楼层的,那么我传给你:major:结构施工,floor:地下室地板
|
||||||
只有 地下室地板 是不带楼层的,那么我传给你:
|
BIMProgressTaskRqBody body = buildBimTask(progressTask,
|
||||||
major:结构施工,floor:地下室地板
|
"结构施工",
|
||||||
*/
|
basement,
|
||||||
if (progressTask.getTaskName().contains(basement)) {
|
getLevelContent(progressTask, idMap, LevelNameEnum.district.getLevelName()),
|
||||||
BIMProgressTaskRqBody body = buildBimTask(progressTask, "结构施工", basement);
|
getLevelContent(progressTask, idMap, LevelNameEnum.building.getLevelName()));
|
||||||
bimProgressTaskRqBodies.add(body);
|
bimProgressTaskRqBodies.add(body);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
return bimProgressTaskRqBodies;
|
return bimProgressTaskRqBodies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getLevelContent(ProgressTask progressTask, Map<Long, ProgressTask> idMap, String levelName) {
|
||||||
|
while (progressTask != null) {
|
||||||
|
if (Objects.equals(progressTask.getLevelName(), levelName)) {
|
||||||
|
return progressTask.getTaskName();
|
||||||
|
}
|
||||||
|
progressTask = idMap.get(progressTask.getParentId());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取bim的添加进度管理的md5签名
|
* 获取bim的添加进度管理的md5签名
|
||||||
*
|
*
|
||||||
@ -308,6 +359,8 @@ public class ProgressTaskServiceImpl extends ServiceImpl<ProgressTaskMapper, Pro
|
|||||||
}
|
}
|
||||||
// 负责人名称
|
// 负责人名称
|
||||||
String dutyUserName = task.getText(1);
|
String dutyUserName = task.getText(1);
|
||||||
|
//层级名称(区、栋、专业、层)
|
||||||
|
progressTask.setLevelName(task.getText(3));
|
||||||
progressTask.setDutyUserName(dutyUserName);
|
progressTask.setDutyUserName(dutyUserName);
|
||||||
userNameSet.add(dutyUserName);
|
userNameSet.add(dutyUserName);
|
||||||
|
|
||||||
@ -365,6 +418,15 @@ public class ProgressTaskServiceImpl extends ServiceImpl<ProgressTaskMapper, Pro
|
|||||||
throw new RuntimeException("progressTask不存在");
|
throw new RuntimeException("progressTask不存在");
|
||||||
}
|
}
|
||||||
List<ProgressTask> progressTasks = progressTaskMapper.selectList(new LambdaQueryWrapper<ProgressTask>().eq(ProgressTask::getProjectSn, progressTask.getProjectSn()));
|
List<ProgressTask> progressTasks = progressTaskMapper.selectList(new LambdaQueryWrapper<ProgressTask>().eq(ProgressTask::getProjectSn, progressTask.getProjectSn()));
|
||||||
|
if (isBIMAsyncEnable()) {
|
||||||
|
try {
|
||||||
|
//同步数据到bim,删除bim
|
||||||
|
List<ProgressTask> allList = progressTaskMapper.selectList(new LambdaQueryWrapper<ProgressTask>().eq(ProgressTask::getProjectSn, progressTask.getProjectSn()));
|
||||||
|
deleteBimTaskIfExistInList(allList, id);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("err:", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
List<ProgressTask> childrenList = getChildrenAsList(progressTask, progressTasks);
|
List<ProgressTask> childrenList = getChildrenAsList(progressTask, progressTasks);
|
||||||
childrenList.add(progressTask);
|
childrenList.add(progressTask);
|
||||||
@ -405,23 +467,16 @@ public class ProgressTaskServiceImpl extends ServiceImpl<ProgressTaskMapper, Pro
|
|||||||
progressTaskMapper.updateById(progressTask);
|
progressTaskMapper.updateById(progressTask);
|
||||||
|
|
||||||
if (isBIMAsyncEnable()) {
|
if (isBIMAsyncEnable()) {
|
||||||
//同步数据到bim,先删除再更新bim
|
try {
|
||||||
if (progressTask.getParentId() != 0) {
|
//同步数据到bim,先删除再添加bim
|
||||||
ProgressTask top = progressTaskMapper.selectById(progressTask.getParentId());
|
List<ProgressTask> allList = progressTaskMapper.selectList(new LambdaQueryWrapper<ProgressTask>().eq(ProgressTask::getProjectSn, old.getProjectSn()));
|
||||||
String floorName = getFloorName(old);
|
List<ProgressTask> oldList = ObjectUtil.cloneByStream(allList);
|
||||||
if (floorName != null) {
|
oldList.stream().filter(e -> e.getId().equals(old.getId())).forEach(e -> e.setTaskName(old.getTaskName()));
|
||||||
asyBim.asynDeleteProgressTask(floorName, top.getTaskName());
|
List<Future<Object>> futures = deleteBimTaskIfExistInList(oldList, old.getId());
|
||||||
}
|
waitBIMDone(futures);
|
||||||
String newFloorName = getFloorName(progressTask);
|
addBimTaskIfExistInList(allList, progressTask.getId());
|
||||||
if (newFloorName != null) {
|
} catch (Exception e) {
|
||||||
BIMProgressTaskRqBody body = buildBimTask(progressTask, top.getTaskName(), newFloorName);
|
log.error("err:", e);
|
||||||
asyBim.asynAddProgressTask(body);
|
|
||||||
} else {
|
|
||||||
if (progressTask.getTaskName().contains(basement)) {
|
|
||||||
BIMProgressTaskRqBody body = buildBimTask(progressTask, "结构施工", basement);
|
|
||||||
asyBim.asynAddProgressTask(body);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,23 +492,18 @@ public class ProgressTaskServiceImpl extends ServiceImpl<ProgressTaskMapper, Pro
|
|||||||
return profileJudgeUtil.isZjsj() || profileJudgeUtil.isShahu();
|
return profileJudgeUtil.isZjsj() || profileJudgeUtil.isShahu();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private BIMProgressTaskRqBody buildBimTask(ProgressTask progressTask, String major, String floorName, String district, String building) {
|
||||||
* 构建bim的task对象
|
|
||||||
*
|
|
||||||
* @param progressTask
|
|
||||||
* @param major
|
|
||||||
* @param newFloorName
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private BIMProgressTaskRqBody buildBimTask(ProgressTask progressTask, String major, String newFloorName) {
|
|
||||||
BIMProgressTaskRqBody body = new BIMProgressTaskRqBody();
|
BIMProgressTaskRqBody body = new BIMProgressTaskRqBody();
|
||||||
body.setFloor(convertFloorName(newFloorName));
|
body.setFloor(convertFloorName(floorName));
|
||||||
body.setMajor(major);
|
body.setMajor(major);
|
||||||
body.setPlanStartTime(getDateFormatForBimAddProgressTask(progressTask.getStartDate()));
|
body.setPlanStartTime(getDateFormatForBimAddProgressTask(progressTask.getStartDate()));
|
||||||
body.setPlanFinishTime(getDateFormatForBimAddProgressTask(progressTask.getFinishDate()));
|
body.setPlanFinishTime(getDateFormatForBimAddProgressTask(progressTask.getFinishDate()));
|
||||||
body.setActualStartTime(getDateFormatForBimAddProgressTask(progressTask.getActualStartDate()));
|
body.setActualStartTime(getDateFormatForBimAddProgressTask(progressTask.getActualStartDate()));
|
||||||
body.setActualFinishTime(getDateFormatForBimAddProgressTask(progressTask.getActualFinishDate()));
|
body.setActualFinishTime(getDateFormatForBimAddProgressTask(progressTask.getActualFinishDate()));
|
||||||
body.setStatus(convertToBimProgressTaskStatus(progressTask));
|
body.setStatus(convertToBimProgressTaskStatus(progressTask));
|
||||||
|
body.setDistrict(district);
|
||||||
|
body.setBuilding(building);
|
||||||
|
body.setProgressTaskId(progressTask.getId());
|
||||||
if (profileJudgeUtil.isZjsj()) {
|
if (profileJudgeUtil.isZjsj()) {
|
||||||
body.setProjectId(1);
|
body.setProjectId(1);
|
||||||
} else if (profileJudgeUtil.isShahu()) {
|
} else if (profileJudgeUtil.isShahu()) {
|
||||||
@ -517,21 +567,34 @@ public class ProgressTaskServiceImpl extends ServiceImpl<ProgressTaskMapper, Pro
|
|||||||
progressTaskMapper.insert(progressTask);
|
progressTaskMapper.insert(progressTask);
|
||||||
|
|
||||||
sanjiangDataCall.sendAddProgressTask(progressTask);
|
sanjiangDataCall.sendAddProgressTask(progressTask);
|
||||||
|
|
||||||
|
if (isBIMAsyncEnable()) {
|
||||||
|
try {
|
||||||
|
//同步数据到bim,先删除再更新bim
|
||||||
|
List<ProgressTask> allList = progressTaskMapper.selectList(new LambdaQueryWrapper<ProgressTask>().eq(ProgressTask::getProjectSn, progressTask.getProjectSn()));
|
||||||
|
addBimTaskIfExistInList(allList, progressTask.getId());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("err:", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getFloorName(ProgressTask progressTask) {
|
private List<Future<Object>> deleteBimTaskIfExistInList(List<ProgressTask> allList, Long id) {
|
||||||
String name = null;
|
List<BIMProgressTaskRqBody> bimProgressTaskRqBodies = buildBimTasksByProgressTasks(allList);
|
||||||
Matcher matcher = floorPattern.matcher(progressTask.getTaskName());
|
ArrayList<Future<Object>> futures = new ArrayList<>();
|
||||||
if (matcher.find()) {
|
bimProgressTaskRqBodies.stream().filter(e -> e.getProgressTaskId().equals(id))
|
||||||
name = convertFloorName(matcher.group());
|
.forEach(e -> {
|
||||||
} else {
|
futures.add(asyBim.asyncDeleteProgressTask(e));
|
||||||
if (StringUtils.isNotBlank(progressTask.getTaskName())) {
|
});
|
||||||
if (progressTask.getTaskName().contains(basement)) {
|
return futures;
|
||||||
name = basement;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
private void addBimTaskIfExistInList(List<ProgressTask> allList, Long id) {
|
||||||
return name;
|
List<BIMProgressTaskRqBody> bimProgressTaskRqBodies = buildBimTasksByProgressTasks(allList);
|
||||||
|
bimProgressTaskRqBodies.stream().filter(e -> e.getProgressTaskId().equals(id))
|
||||||
|
.forEach(e -> {
|
||||||
|
asyBim.asyncAddProgressTask(e);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -693,14 +756,14 @@ public class ProgressTaskServiceImpl extends ServiceImpl<ProgressTaskMapper, Pro
|
|||||||
public void autoTaskUpdateForBim() {
|
public void autoTaskUpdateForBim() {
|
||||||
if (isBIMAsyncEnable()) {
|
if (isBIMAsyncEnable()) {
|
||||||
List<ProgressTask> progressTasks = progressTaskMapper.selectList(new LambdaQueryWrapper<>());
|
List<ProgressTask> progressTasks = progressTaskMapper.selectList(new LambdaQueryWrapper<>());
|
||||||
List<BIMProgressTaskRqBody> bimTasksByProgressTasks = getBimTasksByProgressTasks(progressTasks);
|
List<BIMProgressTaskRqBody> bimTasksByProgressTasks = buildBimTasksByProgressTasks(progressTasks);
|
||||||
if (CollUtil.isNotEmpty(bimTasksByProgressTasks)) {
|
if (CollUtil.isNotEmpty(bimTasksByProgressTasks)) {
|
||||||
for (BIMProgressTaskRqBody body : bimTasksByProgressTasks) {
|
for (BIMProgressTaskRqBody body : bimTasksByProgressTasks) {
|
||||||
//0未开始不同步,其他的全部同步
|
//0未开始不同步,其他的全部同步
|
||||||
//0未开始 ,1进行中,2已完成,3已逾期
|
//0未开始 ,1进行中,2已完成,3已逾期
|
||||||
Integer status = body.getStatus();
|
Integer status = body.getStatus();
|
||||||
if (!Objects.equals(status, 0)) {
|
if (!Objects.equals(status, 0)) {
|
||||||
asyBim.asynAddProgressTask(body);
|
asyBim.asyncAddProgressTask(body);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -129,10 +129,6 @@ public class TckwWireRopeInspectionRecord implements Serializable {
|
|||||||
@ApiModelProperty(value = "远程设备id")
|
@ApiModelProperty(value = "远程设备id")
|
||||||
private Long remoteId;
|
private Long remoteId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "报警信息")
|
|
||||||
@TableField(exist = false)
|
|
||||||
private String alarmInfo;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "钢丝绳检测损伤记录列表")
|
@ApiModelProperty(value = "钢丝绳检测损伤记录列表")
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private List<TckwWireRopeInspectionDamageRecord> damageRecordList;
|
private List<TckwWireRopeInspectionDamageRecord> damageRecordList;
|
||||||
|
|||||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user