|
@@ -0,0 +1,376 @@
|
|
|
+package com.persagy.dmp.rwd.validators.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.hutool.core.text.CharSequenceUtil;
|
|
|
+import cn.hutool.core.util.EnumUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
+import com.persagy.common.json.JacksonMapper;
|
|
|
+import com.persagy.dmp.rwd.constants.*;
|
|
|
+import com.persagy.dmp.rwd.entity.ObjectInstance;
|
|
|
+import com.persagy.dmp.rwd.entity.RelationInstance;
|
|
|
+import com.persagy.dmp.rwd.enums.ObjType;
|
|
|
+import com.persagy.dmp.rwd.handler.SpringHelper;
|
|
|
+import com.persagy.dmp.rwd.model.rwd.UploadDTO;
|
|
|
+import com.persagy.dmp.rwd.repository.ObjectInstanceRepository;
|
|
|
+import com.persagy.dmp.rwd.repository.RelationInstanceRepository;
|
|
|
+import com.persagy.dmp.rwd.service.BaseService;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Component
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class CommonFileCheckServiceImpl extends AbstractFileCheckService {
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 校验数据的正确性
|
|
|
+ * @param errorList : 错误列表
|
|
|
+ * @param uploadDTO : 整体上传数据
|
|
|
+ * @return : void
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/26 15:01
|
|
|
+ * Update By lijie 2021/9/26 15:01
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void checkDataIsValid(List<String> errorList, UploadDTO uploadDTO) {
|
|
|
+ int startRowIndex=3;
|
|
|
+ List<List<Object>> commonObjectUploadData = uploadDTO.getCommonObjectUploadData();
|
|
|
+ if (commonObjectUploadData.size()<=startRowIndex){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Map<String, ObjectInstance> projectMap = uploadDTO.getProjectMap();
|
|
|
+ Map<String, Map<String, List<ObjectInstance>>> buildMap = uploadDTO.getBuildMap();
|
|
|
+ Map<String, String> buildingFuncTypesMap = uploadDTO.getBuildingFuncTypesMap();
|
|
|
+ Map<String, Map<String, List<ObjectInstance>>> floorMap = uploadDTO.getFloorMap();
|
|
|
+ Map<String, String> floorIdentitiesMap = uploadDTO.getFloorIdentitiesMap();
|
|
|
+ Map<String, String> spaceZonesMap = uploadDTO.getSpaceZonesMap();
|
|
|
+ Map<String, String> spaceFuncTypesMap = uploadDTO.getSpaceFuncTypesMap();
|
|
|
+ Map<String, Map<String, List<ObjectInstance>>> spaceMap = uploadDTO.getSpaceMap();
|
|
|
+ Map<String,String> floorBuildLocalIdMap = new HashMap<>();
|
|
|
+ Map<String, String> spaceFloorIdMap = new HashMap<>();
|
|
|
+ int objSize = commonObjectUploadData.size();
|
|
|
+ for (int i = startRowIndex; i < objSize; i++) {
|
|
|
+ String relCol = StrUtil.format(CommonConstant.REL_COL_FORMAT,CommonConstant.COMMON_SHEET_NAME,i+1);
|
|
|
+ List<Object> datas = commonObjectUploadData.get(i);
|
|
|
+ // 1.项目id:必填,是否存在
|
|
|
+ String projectId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,0)));
|
|
|
+ checkProjectValid(errorList,projectId,projectMap,relCol);
|
|
|
+ // 2.建筑本地编码:必填,是否在项目下有重复
|
|
|
+ String buildLocalId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,1)));
|
|
|
+ checkLocalIdExists(errorList,buildLocalId,projectId,buildMap,relCol,CommonObjectColumnEnum.BUILD_LOCAL_ID.getRealName());
|
|
|
+ // 3.建筑本地名称:必填
|
|
|
+ checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,2))),relCol,CommonObjectColumnEnum.BUILD_LOCAL_NAME.getRealName());
|
|
|
+ // 4.建筑功能类型:必填,是否存在
|
|
|
+ String buildFuncType = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,3)));
|
|
|
+ checkContentBlank(errorList,buildFuncType,relCol,CommonObjectColumnEnum.BUILD_FUNC_TYPE.getRealName());
|
|
|
+ if (StrUtil.isNotBlank(buildFuncType) && !buildingFuncTypesMap.containsKey(buildFuncType)){
|
|
|
+ errorList.add(StrUtil.format(CommonConstant.THREE_FORMAT,relCol, CommonObjectColumnEnum.BUILD_FUNC_TYPE.getRealName(),ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
+ }
|
|
|
+ // 5.楼层本地编码:必填,是否在项目下有重复
|
|
|
+ String floorLocalId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,4)));
|
|
|
+ checkLocalIdExists(errorList,floorLocalId,projectId,floorMap,relCol,CommonObjectColumnEnum.FLOOR_LOCAL_ID.getRealName());
|
|
|
+ checkLocalIdRepeated(floorLocalId,buildLocalId,projectId,floorBuildLocalIdMap,relCol,CommonObjectColumnEnum.FLOOR_LOCAL_ID.getRealName(),errorList);
|
|
|
+ // 6.楼层本地名称:必填
|
|
|
+ checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,5))),relCol,CommonObjectColumnEnum.FLOOR_LOCAL_NAME.getRealName());
|
|
|
+ // 7.楼层编码:必填,是否存在
|
|
|
+ String floorIdentity = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,6)));
|
|
|
+ checkContentBlank(errorList,floorIdentity,relCol,CommonObjectColumnEnum.FLOOR_IDENTITY.getRealName());
|
|
|
+ if (StrUtil.isNotBlank(floorIdentity) && !floorIdentitiesMap.containsKey(floorIdentity)){
|
|
|
+ errorList.add(StrUtil.format(CommonConstant.THREE_FORMAT,relCol, CommonObjectColumnEnum.FLOOR_IDENTITY.getRealName(), ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
+ }
|
|
|
+ // 8.空间本地编码:必填,是否在项目下有重复
|
|
|
+ String spaceLocalId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas, 7)));
|
|
|
+ checkLocalIdExists(errorList,spaceLocalId,
|
|
|
+ projectId,spaceMap,relCol,CommonObjectColumnEnum.SPACE_LOCAL_ID.getRealName());
|
|
|
+ checkLocalIdRepeated(spaceLocalId,floorLocalId,projectId,spaceFloorIdMap,relCol,CommonObjectColumnEnum.SPACE_LOCAL_ID.getRealName(),errorList);
|
|
|
+ // 9.空间名称:必填
|
|
|
+ checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,8))),
|
|
|
+ relCol,CommonObjectColumnEnum.SPACE_LOCAL_NAME.getRealName());
|
|
|
+ // 10.空间分区:必填,是否存在
|
|
|
+ String spaceZone = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,9)));
|
|
|
+ checkContentBlank(errorList,spaceZone,relCol,CommonObjectColumnEnum.SPACE_ZONE.getRealName());
|
|
|
+ if (StrUtil.isNotBlank(spaceZone) && !spaceZonesMap.containsKey(spaceZone)){
|
|
|
+ errorList.add(StrUtil.format(CommonConstant.THREE_FORMAT,relCol, CommonObjectColumnEnum.SPACE_ZONE.getRealName(),ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
+ }
|
|
|
+ // 11.空间功能类型:必填,是否存在
|
|
|
+ String spaceFuncType = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(CollUtil.get(datas,10)));
|
|
|
+ checkContentBlank(errorList,spaceFuncType,relCol,CommonObjectColumnEnum.SPACE_FUNC_TYPE.getRealName());
|
|
|
+ if (StrUtil.isNotBlank(spaceFuncType) && !spaceFuncTypesMap.containsKey(spaceFuncType)){
|
|
|
+ errorList.add(StrUtil.format(CommonConstant.THREE_FORMAT,relCol, CommonObjectColumnEnum.SPACE_FUNC_TYPE.getRealName(),ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /***
|
|
|
+ * Description: 校验楼层本地编码或空间本地编码是否重复
|
|
|
+ * @param sonLocalId : 子级本地编码
|
|
|
+ * @param parentLocalId : 父级本地编码
|
|
|
+ * @param projectId : 项目id
|
|
|
+ * @param localIdMap : 本地编码_项目id与父级本地编码的映射
|
|
|
+ * @param relCol : 关系字段
|
|
|
+ * @param realName : 关系名称
|
|
|
+ * @return : void
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/27 21:20
|
|
|
+ * Update By lijie 2021/9/27 21:20
|
|
|
+ */
|
|
|
+ private void checkLocalIdRepeated(String sonLocalId, String parentLocalId, String projectId,
|
|
|
+ Map<String, String> localIdMap, String relCol, String realName,List<String> errorList) {
|
|
|
+ if (StrUtil.isNotBlank(sonLocalId)
|
|
|
+ && StrUtil.isNotBlank(parentLocalId)
|
|
|
+ && StrUtil.isNotBlank(projectId)){
|
|
|
+ // 判断楼层本地编码对应的建筑本地编码是否一致
|
|
|
+ String otherParentLocalId = localIdMap.getOrDefault(StrUtil.format("{}_{}", sonLocalId, projectId), "");
|
|
|
+ if (StrUtil.isNotBlank(otherParentLocalId)
|
|
|
+ && !otherParentLocalId.equals(parentLocalId)){
|
|
|
+ errorList.add(StrUtil.format("{}{}{}{}{}",
|
|
|
+ relCol,realName,"在",parentLocalId,"下已存在"));
|
|
|
+ }else {
|
|
|
+ localIdMap.put(StrUtil.format("{}_{}", sonLocalId, projectId),parentLocalId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 批量处理物理世界对象数据
|
|
|
+ * @param uploadDTO : 整体上传数据
|
|
|
+ * @return : void
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/26 15:22
|
|
|
+ * Update By lijie 2021/9/26 15:22
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void batchHandleUploadDatas(UploadDTO uploadDTO) {
|
|
|
+ int startRowIndex=3;
|
|
|
+ List<List<Object>> commonObjectUploadData = uploadDTO.getCommonObjectUploadData();
|
|
|
+ if (commonObjectUploadData.size()<=startRowIndex){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Object> infosData = commonObjectUploadData.get(1);
|
|
|
+ int objSize = commonObjectUploadData.size();
|
|
|
+ Map<String,List<ObjectInstance>> instanceMap = new HashMap<>();
|
|
|
+ Map<String,List<RelationInstance>> relationMap = new HashMap<>();
|
|
|
+ for (int i = startRowIndex; i < objSize; i++) {
|
|
|
+ List<Object> datas = commonObjectUploadData.get(i);
|
|
|
+ // 1.项目id:必填,是否存在
|
|
|
+ String projectId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(0)));
|
|
|
+ // 2.建筑本地编码:必填,是否在项目下有重复
|
|
|
+ String buildLocalId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(1)));
|
|
|
+ // 3.建筑本地名称:必填
|
|
|
+ String buildLocalName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(2)));
|
|
|
+ // 4.建筑功能类型:必填,是否存在
|
|
|
+ String buildFuncType = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(3)));
|
|
|
+ String buildFuncTypeInfo = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(infosData.get(3)));
|
|
|
+ String buildingId = handleBuildObject(projectId, buildLocalId, buildLocalName, buildFuncType,
|
|
|
+ instanceMap, relationMap, buildFuncTypeInfo, uploadDTO);
|
|
|
+ // 5.楼层本地编码:必填,是否在项目下有重复
|
|
|
+ String floorLocalId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(4)));
|
|
|
+ // 6.楼层本地名称:必填
|
|
|
+ String floorLocalName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(5)));
|
|
|
+ // 7.楼层编码:必填,是否存在
|
|
|
+ String floorIdentity = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(6)));
|
|
|
+ String floorIdentityInfoCode = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(infosData.get(6)));
|
|
|
+ String floorId = handleFloorObject(projectId,floorLocalId,floorLocalName,floorIdentity,floorIdentityInfoCode,
|
|
|
+ buildingId,instanceMap,relationMap,uploadDTO);
|
|
|
+ // 8.空间本地编码:必填,是否在项目下有重复
|
|
|
+ String spaceLocalId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(7)));
|
|
|
+ // 9.空间名称:必填
|
|
|
+ String spaceLocalName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(8)));
|
|
|
+ // 10.空间分区:必填,是否存在
|
|
|
+ String spaceZone = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(9)));
|
|
|
+ // 11.空间功能类型:必填,是否存在
|
|
|
+ String spaceFuncType = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(10)));
|
|
|
+ String spaceFuncTypeInfo = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(infosData.get(10)));
|
|
|
+ handleSpaceObject(projectId,spaceLocalId,spaceLocalName,spaceZone,spaceFuncType,buildingId,floorId,
|
|
|
+ instanceMap,relationMap,uploadDTO,spaceFuncTypeInfo);
|
|
|
+ }
|
|
|
+ commonUpdateInstances(instanceMap,relationMap,uploadDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 获得excel的sheet名称
|
|
|
+ * @return : java.lang.String
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/24 16:54
|
|
|
+ * Update By lijie 2021/9/24 16:54
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected String getExcelSheetName() {
|
|
|
+ return "基础对象录入";
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 获得不可变行头的映射
|
|
|
+ * @return : java.util.Map<java.lang.String,java.lang.String>
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/24 16:09
|
|
|
+ * Update By lijie 2021/9/24 16:09
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected Map<Integer, String> getPersistentHeadMap() {
|
|
|
+ List<CommonObjectColumnEnum> list = CollUtil.list(false, EnumUtil.getEnumMap(CommonObjectColumnEnum.class).values());
|
|
|
+ return list.stream()
|
|
|
+ .collect(Collectors.toMap(CommonObjectColumnEnum::getIndex, CommonObjectColumnEnum::getName, (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 获得excel行头索引
|
|
|
+ * @return : java.lang.Integer
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/24 15:59
|
|
|
+ * Update By lijie 2021/9/24 15:59
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected Integer getExcelHeadIndex() {
|
|
|
+ return 2;
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 处理空间对象
|
|
|
+ * @param projectId : 项目id
|
|
|
+ * @param spaceLocalId : 空间本地编码
|
|
|
+ * @param spaceLocalName : 空间本地名称
|
|
|
+ * @param spaceZone : 空间分区
|
|
|
+ * @param spaceFuncType : 空间功能类型
|
|
|
+ * @param buildingId : 建筑id
|
|
|
+ * @param floorId : 楼层id
|
|
|
+ * @param instanceMap : 实例映射
|
|
|
+ * @param relationMap : 关系映射
|
|
|
+ * @param uploadDTO : 上传数据
|
|
|
+ * @param spaceFuncTypeInfo : 空间功能类型信息点code
|
|
|
+ * @return : void
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/26 22:53
|
|
|
+ * Update By lijie 2021/9/26 22:53
|
|
|
+ */
|
|
|
+ private void handleSpaceObject(String projectId, String spaceLocalId, String spaceLocalName, String spaceZone,
|
|
|
+ String spaceFuncType, String buildingId, String floorId,
|
|
|
+ Map<String, List<ObjectInstance>> instanceMap,
|
|
|
+ Map<String, List<RelationInstance>> relationMap,
|
|
|
+ UploadDTO uploadDTO,
|
|
|
+ String spaceFuncTypeInfo) {
|
|
|
+ Map<String, String> spaceZonesMap = uploadDTO.getSpaceZonesMap();
|
|
|
+ Map<String, String> spaceFuncTypesMap = uploadDTO.getSpaceFuncTypesMap();
|
|
|
+ Map<String, Map<String, List<ObjectInstance>>> spaceMap = uploadDTO.getSpaceMap();
|
|
|
+ if (spaceMap.containsKey(spaceLocalId)
|
|
|
+ && spaceMap.getOrDefault(spaceLocalId,new HashMap<>()).containsKey(projectId)){
|
|
|
+ // 更新对象
|
|
|
+ ObjectNode infos = SpringHelper.getBean(ObjectMapper.class)
|
|
|
+ .createObjectNode()
|
|
|
+ .put(spaceFuncTypeInfo, spaceFuncTypesMap.get(spaceFuncType));
|
|
|
+ commonUpdateObjectInstance(spaceLocalId,spaceLocalName,uploadDTO,projectId, spaceMap,instanceMap, infos,null);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 新增对象
|
|
|
+ ObjectNode infos = SpringHelper.getBean(ObjectMapper.class).createObjectNode();
|
|
|
+ infos.put(spaceFuncTypeInfo,spaceFuncTypesMap.get(spaceFuncType));
|
|
|
+ ObjectInstance objectInstance = commonCreateObjectInstance("Sp",spaceLocalId,
|
|
|
+ spaceLocalName,projectId,uploadDTO,ObjType.space.name(),spaceZonesMap.get(spaceZone),
|
|
|
+ infos,instanceMap,spaceMap,Boolean.TRUE);
|
|
|
+ // 新增关系
|
|
|
+ List<RelationInstance> rels = relationMap.getOrDefault(projectId, new ArrayList<>());
|
|
|
+ rels.add(commmonCreateRelationInstance(projectId,uploadDTO,GraphCodeEnum.ARCH_SUBSET.getIndex(),
|
|
|
+ RelCodeEnum.BD_2_SP.getIndex(),buildingId,objectInstance.getId(),spaceZonesMap.get(spaceZone)));
|
|
|
+ rels.add(commmonCreateRelationInstance(projectId,uploadDTO,GraphCodeEnum.ARCH_SUBSET.getIndex(),
|
|
|
+ RelCodeEnum.FL_2_SP.getIndex(),floorId,objectInstance.getId(),spaceZonesMap.get(spaceZone)));
|
|
|
+ relationMap.put(projectId,rels);
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 处理楼层对象
|
|
|
+ * @param projectId : 项目id
|
|
|
+ * @param floorLocalId : 楼层本地编码
|
|
|
+ * @param floorLocalName : 楼层本地名称
|
|
|
+ * @param floorIdentity : 楼层编码
|
|
|
+ * @param floorIdentityInfoCode : 楼层编码信息点
|
|
|
+ * @param buildingId : 建筑id
|
|
|
+ * @param instanceMap : 实例映射
|
|
|
+ * @param relationMap : 关系映射
|
|
|
+ * @param uploadDTO : 上传数据对象
|
|
|
+ * @return : java.lang.String
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/26 22:10
|
|
|
+ * Update By lijie 2021/9/26 22:10
|
|
|
+ */
|
|
|
+ private String handleFloorObject(String projectId, String floorLocalId, String floorLocalName,
|
|
|
+ String floorIdentity, String floorIdentityInfoCode, String buildingId,
|
|
|
+ Map<String, List<ObjectInstance>> instanceMap,
|
|
|
+ Map<String, List<RelationInstance>> relationMap,
|
|
|
+ UploadDTO uploadDTO) {
|
|
|
+ Map<String, String> floorIdentitiesMap = uploadDTO.getFloorIdentitiesMap();
|
|
|
+ Map<String, Map<String, List<ObjectInstance>>> floorMap = uploadDTO.getFloorMap();
|
|
|
+ if (floorMap.containsKey(floorLocalId)
|
|
|
+ && floorMap.getOrDefault(floorLocalId,new HashMap<>()).containsKey(projectId)){
|
|
|
+ // 更新对象
|
|
|
+ ObjectInstance floor = floorMap.getOrDefault(floorLocalId, new HashMap<>())
|
|
|
+ .getOrDefault(projectId,new ArrayList<>()).get(0);
|
|
|
+ ObjectNode infos = SpringHelper.getBean(ObjectMapper.class)
|
|
|
+ .createObjectNode()
|
|
|
+ .put(floorIdentityInfoCode,floorIdentitiesMap.get(floorIdentity));
|
|
|
+ commonUpdateObjectInstance(floorLocalId, floorLocalName,uploadDTO,projectId, floorMap,instanceMap,infos,null);
|
|
|
+ return floor.getId();
|
|
|
+ }
|
|
|
+ // 新增对象
|
|
|
+ ObjectNode infos = SpringHelper.getBean(ObjectMapper.class).createObjectNode();
|
|
|
+ infos.put(floorIdentityInfoCode,floorIdentitiesMap.get(floorIdentity));
|
|
|
+ ObjectInstance objectInstance = commonCreateObjectInstance("Fl",floorLocalId,floorLocalName,projectId,
|
|
|
+ uploadDTO,ObjType.floor.name(),ObjType.floor.name(),infos,instanceMap,floorMap,Boolean.TRUE);
|
|
|
+ // 新增关系
|
|
|
+ List<RelationInstance> rels = relationMap.getOrDefault(projectId, new ArrayList<>());
|
|
|
+ rels.add(commmonCreateRelationInstance(projectId,uploadDTO,GraphCodeEnum.ARCH_SUBSET.getIndex(),
|
|
|
+ RelCodeEnum.BD_2_FL.getIndex(),buildingId,objectInstance.getId(),null));
|
|
|
+ relationMap.put(projectId,rels);
|
|
|
+ return objectInstance.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 处理建筑对象
|
|
|
+ * @param projectId : 项目id
|
|
|
+ * @param buildLocalId : 建筑本地编码
|
|
|
+ * @param buildLocalName : 建筑本地名称
|
|
|
+ * @param buildFuncType : 建筑功能类型
|
|
|
+ * @param instanceMap : 更新实例映射
|
|
|
+ * @param relationMap : 关系实例映射
|
|
|
+ * @return : void
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/26 18:52
|
|
|
+ * Update By lijie 2021/9/26 18:52
|
|
|
+ */
|
|
|
+ private String handleBuildObject(String projectId, String buildLocalId, String buildLocalName, String buildFuncType,
|
|
|
+ Map<String, List<ObjectInstance>> instanceMap,
|
|
|
+ Map<String, List<RelationInstance>> relationMap,
|
|
|
+ String buildFuncTypeInfo,UploadDTO uploadDTO) {
|
|
|
+ Map<String, Map<String, List<ObjectInstance>>> buildMap = uploadDTO.getBuildMap();
|
|
|
+ Map<String, String> buildingFuncTypesMap = uploadDTO.getBuildingFuncTypesMap();
|
|
|
+ if (buildMap.containsKey(buildLocalId)
|
|
|
+ && buildMap.getOrDefault(buildLocalId,new HashMap<>()).containsKey(projectId)){
|
|
|
+ // 更新建筑
|
|
|
+ ObjectInstance building = buildMap.getOrDefault(buildLocalId, new HashMap<>())
|
|
|
+ .getOrDefault(projectId,new ArrayList<>()).get(0);
|
|
|
+ ObjectNode infos = SpringHelper.getBean(ObjectMapper.class)
|
|
|
+ .createObjectNode()
|
|
|
+ .put(buildFuncTypeInfo,buildingFuncTypesMap.get(buildFuncType));
|
|
|
+ commonUpdateObjectInstance(buildLocalId, buildLocalName,uploadDTO,projectId, buildMap,instanceMap,infos,null);
|
|
|
+ return building.getId();
|
|
|
+ }
|
|
|
+ // 新增建筑
|
|
|
+ ObjectNode infos = SpringHelper.getBean(ObjectMapper.class).createObjectNode();
|
|
|
+ infos.put(buildFuncTypeInfo,buildingFuncTypesMap.get(buildFuncType));
|
|
|
+ ObjectInstance objectInstance = commonCreateObjectInstance("Bd",buildLocalId,buildLocalName,projectId,
|
|
|
+ uploadDTO,ObjType.building.name(),ObjType.building.name(),infos,instanceMap,buildMap,Boolean.TRUE);
|
|
|
+ return objectInstance.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|