Browse Source

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/adm-middleware into develop

linhuili 3 years ago
parent
commit
4269f5aad7

+ 19 - 4
src/main/java/com/persagy/proxy/dictionary/service/IAdmModelRelService.java

@@ -3,6 +3,8 @@ package com.persagy.proxy.dictionary.service;
 import com.persagy.proxy.adm.service.IAdmBaseService;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 import com.persagy.proxy.dictionary.model.AdmModelRel;
+import com.persagy.proxy.object.model.AdmFloor;
+import org.springframework.scheduling.annotation.Async;
 
 /**
  * @ClassName IAdmModelRelService
@@ -15,10 +17,23 @@ public interface IAdmModelRelService extends IAdmBaseService<AdmModelRel> {
 
     /**
      * 修改
-     * @param context
-     * @param clazz
-     * @param vo
-     * @return
+     * @param context:上下文
+     * @param clazz:模型关系class
+     * @param vo:模型关系对象
      */
     void doUpdateModelInfo(InstanceUrlParam context, Class<AdmModelRel> clazz, AdmModelRel vo);
+    /**
+     * 处理在用模型文件的楼层计算状态
+     * @param context:上下文对象
+     * @param modelId:模型id
+     */
+    void processFloorCalState(InstanceUrlParam context, String modelId);
+    /**
+     * 处理关联的元空间和设备
+     * @param context:上下文对象
+     * @param oldBimId:旧的bimId
+     * @param bimId:新的bimId
+     * @param floor:楼层对象
+     */
+    void processRelObjects(InstanceUrlParam context, String oldBimId, String bimId, AdmFloor floor);
 }

+ 34 - 10
src/main/java/com/persagy/proxy/dictionary/service/impl/AdmModelRelServiceImpl.java

@@ -5,7 +5,9 @@ import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.dmp.common.helper.SpringHelper;
 import com.persagy.dmp.digital.entity.ObjectRelationProjectCal;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
@@ -23,8 +25,10 @@ import com.persagy.proxy.object.model.AdmISpace;
 import com.persagy.proxy.object.service.IAdmEquipmentService;
 import com.persagy.proxy.object.service.IAdmFloorService;
 import com.persagy.proxy.object.service.IAdmISpaceService;
+import com.persagy.proxy.object.service.IAdmSpaceService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -65,9 +69,10 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
         }
         log.info("模型修改设备元空间参数{},{}"+context,vo);
         // 在用模型的楼层计算状态改为2
-        processFloorCalState(context, vo.getModelId());
+        //处理关系标记
+        SpringHelper.getBean(IAdmModelRelService.class).processFloorCalState(context, vo.getModelId());
         AdmFloor floorEntity = admFloors.get(0);
-        processRelObjects(context, vo.getOldBimId(), vo.getBimId(), floorEntity);
+        SpringHelper.getBean(IAdmModelRelService.class).processRelObjects(context, vo.getOldBimId(), vo.getBimId(), floorEntity);
         // 补充楼层属性
         Map<String, Object> infos = floorEntity.getInfos();
         if(CollUtil.isEmpty(infos)){
@@ -87,10 +92,13 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
 
     /**
      * 处理在用模型文件的楼层计算状态
-     * @param context
-     * @param modelId
+     * @param context:上下文对象
+     * @param modelId:模型id
      */
-    private void processFloorCalState(InstanceUrlParam context, String modelId) {
+    @Async
+    @Override
+    public void processFloorCalState(InstanceUrlParam context, String modelId) {
+        resetContext(context);
         List<AdmFloor> floorList = queryFloorEntity(context, modelId, null);
         if(CollUtil.isEmpty(floorList)) {
             return;
@@ -109,12 +117,15 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
 
     /**
      * 处理关联的元空间和设备
-     * @param context
-     * @param oldBimId
-     * @param bimId
-     * @param floor
+     * @param context:上下文对象
+     * @param oldBimId:旧的bimId
+     * @param bimId:新的bimId
+     * @param floor:楼层对象
      */
-    private void processRelObjects(InstanceUrlParam context, String oldBimId, String bimId, AdmFloor floor) {
+    @Async
+    @Override
+    public void processRelObjects(InstanceUrlParam context, String oldBimId, String bimId, AdmFloor floor) {
+        resetContext(context);
         // 如果bimId不一致,则清空原来的楼层信息
         if(StrUtil.isNotBlank(oldBimId) && !StrUtil.equals(oldBimId, bimId)) {
             updateRelEquipments(context, oldBimId, floor, true);
@@ -124,6 +135,19 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
         updateRelEquipments(context, bimId, floor, false);
         updateRelISpace(context, bimId, floor, false);
     }
+    /***
+     * Description: 重新设置一下上下文
+     * @param context : 上下文对象
+     * return : void
+     * @author : lijie
+     * Update By 2021/12/21 11:57
+     */
+    private void resetContext(InstanceUrlParam context){
+        AppContext.getContext().setGroupCode(context.getGroupCode());
+        AppContext.getContext().setProjectId(context.getProjectId());
+        AppContext.getContext().setAccountId(context.getUserId());
+        AppContext.getContext().setAppId(context.getAppId());
+    }
 
     /**
      * 更新设备