Browse Source

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/digital-delivery into develop

lijie 3 years ago
parent
commit
7f6fcc9287
15 changed files with 304 additions and 408 deletions
  1. 8 1
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/dictionary/service/IAdmDictBaseService.java
  2. 3 1
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/DefineInfoMigration.java
  3. 3 1
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/DefineTypeMigration.java
  4. 3 2
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/ObjectDigitalMigration.java
  5. 3 2
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/ObjectRelationMigration.java
  6. 18 18
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/controller/ComponentBuildingController.java
  7. 19 1
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/service/IRelationReportService.java
  8. 69 0
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/service/impl/RelationReportService.java
  9. 33 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/client/RwdClient.java
  10. 0 362
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/controller/ToolController.java
  11. 5 3
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/Dict.java
  12. 45 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/ObjectInfoCollect.java
  13. 41 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/ObjectTypeCollect.java
  14. 43 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/RelationDefineCollect.java
  15. 11 17
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/SyncAppImpl.java

+ 8 - 1
adm-business/adm-middleware/src/main/java/com/persagy/proxy/dictionary/service/IAdmDictBaseService.java

@@ -76,13 +76,20 @@ public interface IAdmDictBaseService<T>{
     AdmResponse doQueryObjectTypeCollect(InstanceUrlParam context, QueryCriteria queryCriteria);
 
     /**
-     * 设置采集信息点
+     * 查询采集 类型
      * @param context
      * @param clazz
      * @param voList
      * @return
      */
     List<T> doSetObjectInfoCollect(InstanceUrlParam context, Class<T> clazz, List<T> voList);
+
+    /**
+     * 设置采集 类型
+     * @param typeList
+     * @param collectTypeList
+     * @return
+     */
     List<AdmObjectType> doSetObjectTypeCollect(List<AdmObjectType> typeList, List<ObjectTypeCollect> collectTypeList);
 
 

+ 3 - 1
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/DefineInfoMigration.java

@@ -79,6 +79,8 @@ public class DefineInfoMigration extends MigrationAbstractServiceImpl<ObjectInfo
             log.info("######################### DefineInfo 批量插入数据 #########################");
             DataMigrationResponse response = insertBatch(admDefineList, ObjectInfoDefine.class, insertUrl);
             syncDataList.addAll(processDataForLog(response, MigrationType.CREATE.getCode()));
+            super.addSynLog(context, syncDataList);
+            return AdmResponse.success(syncDataList);
         }
         List<ObjectNode> objectNodeListPro = JsonNodeUtils.toListNode(projectDefineList, null, null);
         Map<String,Object> projectDefineMap = toEntityMap(objectNodeListPro, ObjectInfoDefine.class);
@@ -314,7 +316,7 @@ public class DefineInfoMigration extends MigrationAbstractServiceImpl<ObjectInfo
             excel.setCode(define.getCode());
             excel.setName(define.getName());
             excel.setType(type);
-            excel.setCreateTime(define.getCreationTime().toString());
+            excel.setCreateTime(define.getCreationTime() == null ? "" : define.getCreationTime().toString());
             excel.setUpdateTime(define.getModifiedTime() == null ? "" : define.getModifiedTime().toString());
             dataMigrationExcels.add(excel);
         }

+ 3 - 1
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/DefineTypeMigration.java

@@ -81,6 +81,8 @@ public class DefineTypeMigration extends MigrationAbstractServiceImpl<ObjectType
             log.info("######################### DefineType 批量插入数据 #########################");
             DataMigrationResponse dataMigrationResponse = insertBatch(admDefineList, ObjectTypeDefine.class, insertUrl);
             syncDataList.addAll(processDataForLog(dataMigrationResponse, MigrationType.CREATE.getCode()));
+            super.addSynLog(context, syncDataList);
+            return AdmResponse.success(syncDataList);
         }
         List<ObjectNode> objectNodeListPro = JsonNodeUtils.toListNode(objectNodeList, null, null);
         Map<String,Object> projectDefineMap = toEntityMap(objectNodeListPro, ObjectTypeDefine.class);
@@ -283,7 +285,7 @@ public class DefineTypeMigration extends MigrationAbstractServiceImpl<ObjectType
             excel.setCode(objectTypeDefine.getCode());
             excel.setName(objectTypeDefine.getName());
             excel.setType(type);
-            excel.setCreateTime(objectTypeDefine.getCreationTime().toString());
+            excel.setCreateTime(objectTypeDefine.getCreationTime() == null ? "" : objectTypeDefine.getCreationTime().toString());
             excel.setUpdateTime(objectTypeDefine.getModifiedTime() == null ? "" : objectTypeDefine.getModifiedTime().toString());
             if(objectTypeDefine.getGroupCode().equals("0") && objectTypeDefine.getProjectId().equals("0")){
                 excel.setMark("标准字典");

+ 3 - 2
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/ObjectDigitalMigration.java

@@ -212,7 +212,8 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
 
             DataMigrationResponse dataMigrationResponse = insertBatch(admData, ObjectDigital.class, insertUrl);
             syncDataList.addAll(processDataForLog(dataMigrationResponse, MigrationType.CREATE.getCode()));
-
+            super.addSynLog(context, syncDataList);
+            return;
         }
         Map<String,Object> projectMap = toEntityMap(projObjectNodeList, ObjectDigital.class);
         Map<String,Object> admMap = toEntityMap(admData, ObjectDigital.class);
@@ -428,7 +429,7 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
             excel.setId(digital.getId());
             excel.setName(String.join(StrUtil.DASHED, digital.getLocalId() == null ? "" : digital.getLocalId(), digital.getLocalName() == null ? "" : digital.getLocalName()));
             excel.setType(type);
-            excel.setCreateTime(digital.getCreationTime().toString());
+            excel.setCreateTime(digital.getCreationTime() == null ? "" : digital.getCreationTime().toString());
             excel.setUpdateTime(digital.getModifiedTime() == null ? "" :digital.getModifiedTime().toString());
             dataMigrationExcels.add(excel);
         }

+ 3 - 2
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/ObjectRelationMigration.java

@@ -333,7 +333,8 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
         if(CollUtil.isEmpty(projectRelations)){
             DataMigrationResponse dataMigrationResponse = insertBatch(admRelations, ObjectRelation.class, insertUrl);
             syncDataList = processDataForLog(dataMigrationResponse, MigrationType.CREATE.getCode());
-
+            super.addSynLog(context, syncDataList);
+            return;
         }
         List<ObjectNode> objectNodeListPro = JsonNodeUtils.toListNode(projectRelations, null, null);
         Map<String,Object> projectDefineMap = toEntityMap(objectNodeListPro, ObjectRelation.class);
@@ -471,7 +472,7 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
             excel.setObjFrom(objectRelation.getObjFrom());
             excel.setObjTo(objectRelation.getObjTo());
             excel.setType(type);
-            excel.setCreateTime(objectRelation.getCreationTime().toString());
+            excel.setCreateTime(objectRelation.getCreationTime() == null ? "" : objectRelation.getCreationTime().toString());
             excel.setUpdateTime(objectRelation.getModifiedTime() == null ? "" :objectRelation.getModifiedTime().toString());
             dataMigrationExcels.add(excel);
         }

+ 18 - 18
adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/controller/ComponentBuildingController.java

@@ -1,15 +1,14 @@
 package com.persagy.proxy.report.controller;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import com.persagy.proxy.object.model.AdmBuilding;
-import com.persagy.proxy.object.model.AdmFloor;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
-import com.persagy.proxy.object.service.IAdmBuildingService;
-import com.persagy.proxy.object.service.IAdmFloorService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
+import com.persagy.proxy.object.model.AdmBuilding;
+import com.persagy.proxy.object.model.AdmFloor;
+import com.persagy.proxy.object.service.IAdmBuildingService;
+import com.persagy.proxy.object.service.IAdmFloorService;
 import com.persagy.proxy.object.service.impl.AdmFloorServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -68,7 +67,6 @@ public class ComponentBuildingController {
 		if(CollUtil.isEmpty(buildings)) {
 			return;
 		}
-		// 按建筑计算模型数量 - 这里先这样写,这种统计不太合理,统计建筑里所有楼层模型总计被使用次数。确认是否需要后再考虑是否移除
 		// 收集建筑下的楼层,处理信息点
 		List<AdmFloor> admFloors = new ArrayList<>(16);
 		for(AdmBuilding building:buildings) {
@@ -77,19 +75,21 @@ public class ComponentBuildingController {
 				continue;
 			}
 			admFloors.addAll(floors);
+			/** 20220117 新版ADM中,不再存在不同楼层使用同一模型的场景,此查询不需要有了。删除 */
+			// 按建筑计算模型数量 - 这里先这样写,这种统计不太合理,统计建筑里所有楼层模型总计被使用次数。确认是否需要后再考虑是否移除
 			// 收集所有模型Id
-			List<Object> modelIds = CollUtil.getFieldValues(floors, "modelId", true);
-			if(CollUtil.isEmpty(modelIds)) {
-				continue;
-			}
-			// 查询模型使用次数
-			AdmQueryCriteria floorCriteria = new AdmQueryCriteria();
-			String inSql = CollUtil.join(modelIds, StrUtil.COMMA,"'","'");
-			floorCriteria.setFilters(" modelId in (" + inSql + ") ");
-			floorCriteria.setOnlyCount(true);
-			AdmResponse floorRs = floorService.query(floorCriteria);
-			// 设置次数
-			building.setCount(floorRs.getCount());
+//			List<Object> modelIds = CollUtil.getFieldValues(floors, "modelId", true);
+//			if(CollUtil.isEmpty(modelIds)) {
+//				continue;
+//			}
+//			// 查询模型使用次数
+//			AdmQueryCriteria floorCriteria = new AdmQueryCriteria();
+//			String inSql = CollUtil.join(modelIds, StrUtil.COMMA,"'","'");
+//			floorCriteria.setFilters(" modelId in (" + inSql + ") ");
+//			floorCriteria.setOnlyCount(true);
+//			AdmResponse floorRs = floorService.query(floorCriteria);
+//			// 设置次数
+//			building.setCount(floorRs.getCount());
 		}
 		floorService.ensureSpecialValues(AdmContextUtil.toDmpContext(), admFloors, AdmFloorServiceImpl.QUERY);
 	}

+ 19 - 1
adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/service/IRelationReportService.java

@@ -13,8 +13,9 @@ import com.persagy.dmp.define.entity.GraphDefine;
 import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.define.entity.RelationDefine;
+import com.persagy.dmp.delivery.entity.RelationDefineCollect;
 import com.persagy.dmp.digital.entity.ObjectRelation;
-import lombok.SneakyThrows;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
 
 /**
  * 报表/模板下载
@@ -272,4 +273,21 @@ public interface IRelationReportService {
 	 * @return
 	 */
 	Map<String, List<ObjectNode>> findObjectNodesByPage(String groupCode, String projectId, Set<String> objTypes, String infoKey, Set<String> codes);
+
+
+	/**
+	 * 查询采集 范围
+	 * @param context
+	 * @param queryCriteria
+	 * @return
+	 */
+	List<RelationDefineCollect> doQueryRelationDefineCollect(InstanceUrlParam context, QueryCriteria queryCriteria);
+
+	/**
+	 * 设置采集 范围
+	 * @param relList
+	 * @param collectRelList
+	 * @return
+	 */
+	void doSetRelationDefineCollect(List<JSONObject> relList, List<RelationDefineCollect> collectRelList);
 }

+ 69 - 0
adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/service/impl/RelationReportService.java

@@ -21,6 +21,7 @@ import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.helper.SpringHelper;
 import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.JsonHelper;
 import com.persagy.dmp.define.client.DigitalDefineFacade;
 import com.persagy.dmp.define.client.DigitalGraphDefineFacade;
 import com.persagy.dmp.define.client.DigitalObjectInfoFacade;
@@ -29,6 +30,7 @@ import com.persagy.dmp.define.entity.GraphDefine;
 import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.define.entity.RelationDefine;
+import com.persagy.dmp.delivery.entity.RelationDefineCollect;
 import com.persagy.dmp.digital.client.DigitalObjectFacade;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.client.DigitalRelationProjectCalFacade;
@@ -40,10 +42,17 @@ import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.strategy.relationdata.RelationObjectStrategy;
+import com.persagy.proxy.adm.utils.AdmContextUtil;
+import com.persagy.proxy.adm.utils.AdmEntityTransferUtil;
+import com.persagy.proxy.common.client.DmpRwdClient;
+import com.persagy.proxy.common.entity.DmpResult;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
 import com.persagy.proxy.report.service.IRelationReportService;
 import lombok.SneakyThrows;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -59,6 +68,9 @@ import java.util.stream.Collectors;
 @Service
 public class RelationReportService implements IRelationReportService {
 
+	@Autowired
+	private DmpRwdClient rwdClient;
+
 	@Override
 	public List<ObjectTypeDefine> queryClassList(String groupCode, String projectId, Set<String> classCodes, Set<String> objTypes, List<OrderItem> orderItems) {
 		ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
@@ -393,6 +405,57 @@ public class RelationReportService implements IRelationReportService {
 		return result;
 	}
 
+	/**
+	 * 查询采集 范围
+	 *
+	 * @param context
+	 * @param queryCriteria
+	 * @return
+	 */
+	@Override
+	public List<RelationDefineCollect> doQueryRelationDefineCollect(InstanceUrlParam context, QueryCriteria queryCriteria) {
+		// 转换参数
+		JSONObject para = null;
+		try {
+			para = JsonHelper.toJsonObject(queryCriteria);
+		} catch (IOException e) {
+			return null;
+		}
+		// 调用中台查询
+		DmpResult<JSONArray> dmpResult = rwdClient.queryObjectRelCollect(context, para);
+		List<RelationDefineCollect> admVOs = AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.getData(), null, RelationDefineCollect.class);
+		return  admVOs;
+	}
+
+	/**
+	 * 设置采集 范围
+	 *
+	 * @param relList
+	 * @param collectRelList
+	 * @return
+	 */
+	@Override
+	public void doSetRelationDefineCollect(List<JSONObject> relList, List<RelationDefineCollect> collectRelList) {
+		if(CollUtil.isEmpty(relList)){
+			return ;
+		}
+		if(CollUtil.isEmpty(collectRelList)){
+			return ;
+		}
+		for (RelationDefineCollect relCol : collectRelList){
+			if(relCol.getDeliveryType() == null){
+				continue;
+			}
+			for(JSONObject jsonObject : relList){
+				if(relCol.getRelCode().equals(jsonObject.getString("code")) && relCol.getGraphCode().equals(jsonObject.getString("graphicId"))){
+					jsonObject.put("deliveryType", relCol.getDeliveryType());
+				}
+			}
+		}
+
+	}
+
+
 	@Override
 	public ObjectNode getObjectByCodeAndId(String groupCode, String projectId, String graphCode, String relCode, String objFrom, String objTo) {
 		// 获取出关联对象
@@ -742,6 +805,9 @@ public class RelationReportService implements IRelationReportService {
 	 */
 	private List<JSONObject> getGraphRelationProjectTree(String groupCode, String projectId, String content) {
 		List<JSONObject> resultList = new ArrayList<>();
+
+		//获取交付范围
+		List<RelationDefineCollect> relationDefineCollects = doQueryRelationDefineCollect(AdmContextUtil.toDmpContext(), new QueryCriteria());
 		// 1.获取所有的一级,二级图类型定义
 		QueryCriteria parentCriteria = new QueryCriteria();
 		List<GraphDefine> graphDefines = DigitalGraphDefineFacade.query(groupCode, projectId,
@@ -799,6 +865,7 @@ public class RelationReportService implements IRelationReportService {
 		if(MapUtil.isEmpty(relMap)) {
 			return resultList;
 		}
+
 		// 组装&排序
 		resultList = CollUtil.sort(typeMap.values(), Comparator.comparing(b -> b.getIntValue("sort")));
 		for(JSONObject result:resultList) {
@@ -818,6 +885,8 @@ public class RelationReportService implements IRelationReportService {
 					continue;
 				}
 				List<JSONObject> relList = CollUtil.sort(rels.values(), Comparator.comparing(b -> b.getString("relationTypeCode")));
+				//设置关系交付范围
+				doSetRelationDefineCollect(relList, relationDefineCollects);
 				graph.put("relationTypeProjectList", relList);
 			}
 		}

+ 33 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/client/RwdClient.java

@@ -3,6 +3,9 @@ package com.persagy.adm.server.custom.client;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.adm.server.custom.entity.InfoDef;
 import com.persagy.adm.server.custom.entity.TypeDef;
+import com.persagy.adm.server.custom.entity.db.ObjectInfoCollect;
+import com.persagy.adm.server.custom.entity.db.ObjectTypeCollect;
+import com.persagy.adm.server.custom.entity.db.RelationDefineCollect;
 import com.persagy.dmp.basic.config.DigitalFeignConfig;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.model.response.CommonResult;
@@ -20,6 +23,36 @@ import java.util.List;
 public interface RwdClient {
 
 	/**
+	 * 查询交付范围内类型定义
+	 */
+	@PostMapping("/rwd/def/class/collect/query")
+	CommonResult<List<ObjectTypeCollect>> queryDefineTypeCollect(@RequestParam("groupCode") String groupCode,
+												@RequestParam("projectId") String projectId,
+												@RequestParam("appId") String appId,
+												@RequestParam("userId") String userId,
+												@RequestBody QueryCriteria criteria);
+
+	/**
+	 * 查询交付范围内关系定义
+	 */
+	@PostMapping("/rwd/def/rel/collect/query")
+	CommonResult<List<RelationDefineCollect>> queryDefineRelCollect(@RequestParam("groupCode") String groupCode,
+															 @RequestParam("projectId") String projectId,
+															 @RequestParam("appId") String appId,
+															 @RequestParam("userId") String userId,
+															 @RequestBody QueryCriteria criteria);
+
+	/**
+	 * 查询交付范围内信息点定义
+	 */
+	@PostMapping("/rwd/def/funcid/collect/query")
+	CommonResult<List<ObjectInfoCollect>> queryDefineInfoCollect(@RequestParam("groupCode") String groupCode,
+												@RequestParam("projectId") String projectId,
+												@RequestParam("appId") String appId,
+												@RequestParam("userId") String userId,
+												@RequestBody QueryCriteria criteria);
+
+	/**
 	 * 查询类型定义
 	 * @param groupCode 集团编码
 	 * @param projectId 项目ID

+ 0 - 362
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/controller/ToolController.java

@@ -1,362 +0,0 @@
-package com.persagy.adm.server.custom.controller;
-
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.persagy.adm.server.custom.client.RwdClient;
-import com.persagy.adm.server.custom.common.AdmConst;
-import com.persagy.adm.server.custom.common.AdmRequest;
-import com.persagy.adm.server.custom.dao.*;
-import com.persagy.adm.server.custom.entity.Dict;
-import com.persagy.adm.server.custom.entity.InfoDef;
-import com.persagy.adm.server.custom.entity.TypeDef;
-import com.persagy.adm.server.custom.entity.db.*;
-import com.persagy.adm.server.custom.service.IConfigService;
-import com.persagy.adm.server.custom.service.ISyncApp;
-import com.persagy.adm.server.custom.service.ServiceUtil;
-import com.persagy.dmp.basic.model.QueryCriteria;
-import com.persagy.dmp.common.constant.ResponseCode;
-import com.persagy.dmp.common.exception.BusinessException;
-import com.persagy.dmp.common.model.response.CommonResult;
-import com.persagy.dmp.common.utils.ResultHelper;
-import com.persagy.dmp.define.entity.GraphDefine;
-import com.persagy.dmp.define.entity.RelationDefine;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.*;
-
-@CrossOrigin
-@RestController
-@RequestMapping("/tool")
-public class ToolController {
-
-	@Autowired
-	private ObjectMapper objectMapper;
-
-	@Autowired
-	@Qualifier(ServiceUtil.SYNC_APP_IMPL)
-	private ISyncApp syncApp;
-
-	@Autowired
-	private RwdClient rwdClient;
-
-	@Autowired
-	private IConfigService configService;
-
-	@Autowired
-	private AdmM2dEquipMapper m2dEquipMapper;
-
-	@GetMapping("/hello")
-	public CommonResult<Integer> hello(){
-		return ResultHelper.single(configService.queryCommonConfig(null).size());
-	}
-
-	@RequestMapping("/dict")
-	public CommonResult<Dict> dict(@RequestBody AdmRequest req, @RequestParam(required = false) String module){
-		Dict map = syncApp.queryDict(req.getGroupCode(), req.getProjectId(), req.getUserId(), !"infos".equals(module), false);
-
-		List<Map<String, Object>> majorList = map.getMajor();
-		List<TypeDef> sysList = map.getSystem();
-		List<TypeDef> equipList = map.getEquipment();
-		distinct(sysList);
-		distinct(equipList);
-
-		clearTime(majorList);
-		clearTime(sysList);
-		clearTime(equipList);
-
-		//设置正向交付类型
-		List<AdmM2dEquip> m2dList = configService.queryM2dEquip(req.getProjectId());
-		HashSet<String> m2dSet = new HashSet<>();
-		m2dList.forEach(item -> m2dSet.add(item.getClassCode()));
-		for(TypeDef eqType : equipList) {
-			if(m2dSet.contains(eqType.getCode()))
-				eqType.setM2d(true);
-		}
-
-		//组织专业-系统树形结构
-		for(Map<String, Object> major : majorList){
-			ArrayList<TypeDef> childrenSys = new ArrayList<>();
-			major.put("children", childrenSys);
-			String majorCode = (String) major.get("code");
-			for(Iterator<TypeDef> sysIter = sysList.iterator(); sysIter.hasNext();){
-				TypeDef sysDef = sysIter.next();
-				if(sysDef.getMajorCode() != null && sysDef.getMajorCode().equals(majorCode)){
-					childrenSys.add(sysDef);
-					sysIter.remove();
-				}
-			}
-		}
-		map.setSystem(null);
-
-		if("infos".equals(module)) { //信息点配置
-
-		} else { //关系、管道、无模型设备
-			List<RelationDefine> relDefs = (List<RelationDefine>)map.getRelation();
-			List<GraphDefine> graph = ServiceUtil.call (() -> rwdClient.queryGraphDef(req.getGroupCode(), req.getProjectId(), AdmConst.APP_ID, req.getUserId(), new QueryCriteria()));
-			List<Map<String, Object>> rels = new ArrayList<>();
-			for(GraphDefine gd : graph){
-				HashMap<String, Object> m = new HashMap<>();
-				m.put("code", gd.getCode());
-				m.put("name", gd.getName());
-				m.put("type", "graph");
-				rels.add(m);
-
-				ArrayList<RelationDefine> chidren = new ArrayList<>();
-				m.put("children", chidren);
-				for(RelationDefine relDef : relDefs) {
-					if(relDef.getGraphCode().equals(gd.getCode()))
-						chidren.add(relDef);
-				}
-			}
-			map.setRelation(rels);
-		}
-
-		return ResultHelper.single(map);
-	}
-
-	private <T> void distinct(List<T> list){
-		List<T> result = new ArrayList<>();
-		HashSet<String> codes = new HashSet<>();
-		for(T def : list) {
-			String code = null;
-			if(def instanceof TypeDef)
-				code = ((TypeDef) def).getCode();
-			else if(def instanceof InfoDef)
-				code = ((InfoDef) def).getCode();
-			if(!codes.contains(code)) {
-				codes.add(code);
-				result.add(def);
-			}
-		}
-		list.clear();
-		list.addAll(result);
-	}
-
-	private void clearTime(List<?> list){
-		for(Object o : list) {
-			if(o instanceof TypeDef) {
-				((TypeDef) o).setCreationTime(null);
-				((TypeDef) o).setModifiedTime(null);
-			} else if(o instanceof Map) {
-				((Map) o).put("creationTime", null);
-				((Map) o).put("modifiedTime", null);
-				((Map) o).put("name", ((Map) o).get("label")); //handle major
-			}
-		}
-	}
-
-	@RequestMapping("/cfgs")
-	public CommonResult<Object> cfgs(@RequestBody AdmRequest req, @RequestParam(required = false) String module){
-		String projectId = req.getProjectId();
-		HashMap<String, Object> data = new HashMap<>();
-
-		//配置数据查询
-		if("infos".equals(module)) { //信息点配置
-			List<AdmInfosConfig> infoConfig = configService.queryInfosConfig(projectId);
-			data.put("infoConfig", infoConfig);
-		} else {
-			List<AdmRelsConfig> relConfig = configService.queryRelsConfig(projectId);
-			List<AdmPipeConfig> pipeConfig = configService.queryPipeConfig(projectId);
-			List<AdmContainerConfig> containerConfig = configService.queryContainerConfig(projectId);
-
-			data.put("relConfig", relConfig);
-			data.put("pipeConfig", pipeConfig);
-			data.put("containerConfig", containerConfig);
-		}
-
-		return ResultHelper.single(data);
-	}
-
-	@RequestMapping("/typeInfos")
-	public CommonResult<Object> typeInfos(@RequestBody AdmRequest req, @RequestParam String typeCode){
-		QueryCriteria criteria = new QueryCriteria();
-		ObjectNode node = objectMapper.createObjectNode();
-		node.put("classCode", typeCode);
-		criteria.setCriteria(node);
-
-		List<Object> roots = new ArrayList<>();
-
-		List<InfoDef> funcList = ServiceUtil.call(() -> rwdClient.queryFunc(req.getGroupCode(), req.getProjectId(), AdmConst.APP_ID, req.getUserId(), criteria));
-		distinct(funcList);
-		for(InfoDef infoDef : funcList) {
-			if("交付工具".equals(infoDef.getFirstTag()))
-				continue;
-			buildInfosTree(roots, infoDef);
-		}
-
-		return ResultHelper.single(roots);
-	}
-
-	private void buildInfosTree(List<Object> roots, InfoDef infoDef){
-		Map<String, Object> folder = null;
-		if(StrUtil.isNotBlank(infoDef.getFirstTag())) {
-			folder = findParent(roots, infoDef.getFirstTag());
-			if(StrUtil.isNotBlank(infoDef.getSecondTag())){
-				folder = findParent((List<Object>) folder.get("children"), infoDef.getSecondTag());
-			}
-		}
-		if(folder == null)
-			roots.add(infoDef);
-		else
-			((List<Object>) folder.get("children")).add(infoDef);
-	}
-
-	private Map<String, Object> findParent(List<Object> list, String tag){
-		for(Object o : list){
-			if(o instanceof Map){
-				if(tag.equals(((Map) o).get("code")))
-					return (Map<String, Object>) o;
-			}
-		}
-
-		Map<String, Object> p = new HashMap<>();
-		p.put("code", tag);
-		p.put("name", tag);
-		p.put("info_tag", true);
-		p.put("children", new ArrayList<>());
-		list.add(p);
-		return p;
-	}
-
-	@Autowired
-	private AdmRelsConfigMapper relsConfigMapper;
-	@Autowired
-	private AdmPipeConfigMapper pipeConfigMapper;
-	@Autowired
-	private AdmContainerConfigMapper containerConfigMapper;
-
-	@PostMapping("/updateCfgItem")
-	public CommonResult<Object> updateCfgItem(@RequestBody Map<String, Object> content) {
-		String type = (String) content.get("type");
-		Map<String, Object> itemMap = (Map<String, Object>) content.get("item");
-		String delId = (String) content.get("delId");
-		String newId = null;
-		if(itemMap != null && !itemMap.containsKey("id")){
-			newId = IdUtil.fastSimpleUUID();
-			itemMap.put("id", newId);
-		}
-
-		boolean create = newId != null;
-		if("rel".equals(type)) {
-			doUpdateItem(delId, itemMap, create, AdmRelsConfig.class, relsConfigMapper);
-		} else if ("pipe".equals(type)) {
-			doUpdateItem(delId, itemMap, create, AdmPipeConfig.class, pipeConfigMapper);
-		} else if("container".equals(type)) {
-			doUpdateItem(delId, itemMap, create, AdmContainerConfig.class, containerConfigMapper);
-		}
-
-		return ResultHelper.single(newId);
-	}
-	
-	private <T extends BaseAdmEntity> void doUpdateItem(String delId, Map<String, Object> itemMap, boolean create, Class<T> cls, BaseMapper<T> mapper){
-		if(StrUtil.isNotBlank(delId))
-			mapper.deleteById(delId);
-		else {
-			T cfg = mapToObj(itemMap, cls);
-			if(create)
-				mapper.insert(cfg);
-			else
-				mapper.updateById(cfg);
-		}
-	}
-
-	private <T extends BaseAdmEntity> T mapToObj(Map<String, Object> map, Class<T> cls){
-		try {
-			String json = objectMapper.writeValueAsString(map);
-			return objectMapper.readValue(json, cls);
-		} catch (IOException e) {
-			e.printStackTrace();
-			throw new BusinessException(ResponseCode.A0427.getCode(), ResponseCode.A0427.getDesc());
-		}
-	}
-
-	@Autowired
-	private AdmInfosConfigMapper infosConfigMapper;
-
-	@PostMapping("/updateInfos")
-	public CommonResult<Object> updateInfos(@RequestBody AdmInfosConfig cfg) {
-		String newId = null;
-		if(StrUtil.isBlank(cfg.getId())){
-			newId = IdUtil.fastSimpleUUID();
-			cfg.setId(newId);
-		}
-		if(cfg.getInfos() != null) {
-			for(Object o : cfg.getInfos()) {
-				if(o instanceof Map){
-					((Map<?, ?>) o).remove("name");
-					((Map<?, ?>) o).remove("cfgItemType");
-				}
-			}
-		}
-
-		if(newId != null)
-			infosConfigMapper.insert(cfg);
-		else
-			infosConfigMapper.updateById(cfg);
-
-		return ResultHelper.single(newId);
-	}
-
-	@PostMapping("/updateM2d")
-	public CommonResult<Object> updateM2d(@RequestBody Map<String, Object> cfg){
-		String code = (String) cfg.get("code");
-		boolean m2d = (Boolean)cfg.get("m2d");
-		AdmM2dEquip item = m2dEquipMapper.selectOne(new QueryWrapper<AdmM2dEquip>().eq("class_code", code));
-		if(m2d){
-			if(item == null){
-				item = new AdmM2dEquip();
-				item.setId(IdUtil.simpleUUID());
-				item.setClassCode(code);
-				m2dEquipMapper.insert(item);
-			}
-		} else {
-			if(item != null)
-				m2dEquipMapper.deleteById(item.getId());
-		}
-		return ResultHelper.success();
-	}
-
-	@PostMapping("/bdAndFls")
-	public CommonResult<List<ObjectNode>> bdAndFls(@RequestBody AdmRequest req){
-		Map<String, Object> data = syncApp.downloadFrameData(req.getGroupCode(), req.getProjectId(), req.getUserId());
-		List<ObjectNode> bdAndFls = (List<ObjectNode>)data.get("buildingsAndFloors");
-
-		List<ObjectNode> bds = new ArrayList<>();
-		Iterator<ObjectNode> iter = bdAndFls.iterator();
-		while (iter.hasNext()){
-			ObjectNode node = iter.next();
-			if(AdmConst.OBJ_TYPE_BUILDING.equals(node.get("objType").asText())) {
-				bds.add(node);
-				iter.remove();
-			}
-		}
-
-		for(ObjectNode bd : bds) {
-			String id = bd.get("id").asText();
-			for(ObjectNode fl : bdAndFls) {
-				JsonNode node = fl.get("buildingId");
-				if(node != null){
-					String bdId = node.asText();
-					if(bdId.equals(id)){
-						ArrayNode children = (ArrayNode)bd.get("children");
-						if(children == null)
-							children = bd.putArray("children");
-						children.add(fl);
-					}
-				}
-			}
-		}
-
-		return ResultHelper.single(bds);
-	}
-
-}

+ 5 - 3
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/Dict.java

@@ -1,5 +1,7 @@
 package com.persagy.adm.server.custom.entity;
 
+import com.persagy.adm.server.custom.entity.db.ObjectInfoCollect;
+import com.persagy.adm.server.custom.entity.db.ObjectTypeCollect;
 import lombok.Data;
 
 import java.util.List;
@@ -13,12 +15,12 @@ public class Dict {
 
 	private List<Map<String, Object>> major;
 
-	private List<TypeDef> system;
+	private List<ObjectTypeCollect> system;
 
-	private List<TypeDef> equipment;
+	private List<ObjectTypeCollect> equipment;
 
 	private List<? extends Object> relation;
 
-	private List<InfoDef> infos;
+	private List<ObjectInfoCollect> infos;
 
 }

+ 45 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/ObjectInfoCollect.java

@@ -0,0 +1,45 @@
+package com.persagy.adm.server.custom.entity.db;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.persagy.dmp.common.model.entity.AuditableEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 平台/项目级采集的信息点定义
+ * @author linhuili
+ * @date 2021-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "dt_define_info_collect", autoResultMap = true)
+public class ObjectInfoCollect extends AuditableEntity {
+    /** 集团编码 */
+    private String groupCode;
+    /** 项目ID 0-平台级 1-项目级 */
+    private String projectId;
+    /** 关联信息点id */
+    @NotNull(message = "信息点ID不能为空")
+    private String defineInfoId;
+    /** 信息点编码 */
+    private String code;
+    /** 信息点类型 */
+    private String classCode;
+    /** 是否为关键信息点(台账详情使用)  */
+    private Boolean keyWord;
+    /** 交付类型:0-项目交付 1-现场交付  */
+    private Integer deliveryType;
+    /** 是否交付 0-否 1-是 */
+    private Boolean isDelivery;
+    /** 交付实例范围 */
+    private String instanceScope;
+    /** 交付数据来源 */
+    private String dataSource;
+    /** 现场收集信息 */
+    private String collectInfo;
+    /** 备注 */
+    private String remark;
+
+}

+ 41 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/ObjectTypeCollect.java

@@ -0,0 +1,41 @@
+package com.persagy.adm.server.custom.entity.db;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.persagy.dmp.common.model.entity.AuditableEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 平台/项目级采集的信息点定义
+ * @author linhuili
+ * @date 2021-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "dt_define_type_collect", autoResultMap = true)
+public class ObjectTypeCollect extends AuditableEntity {
+    /** 集团编码 */
+    private String groupCode;
+    /** 项目ID 0-平台级 1-项目级 */
+    private String projectId;
+    /** 关联类型ID */
+    @NotNull(message = "类型ID不能为空")
+    private String defineTypeId;
+    /** 类型编码编码 */
+    private String code;
+    /** 对象类型 */
+    private String objType;
+    /** 交付类型:0-项目交付 1-现场交付  */
+    private Integer deliveryType;
+    /** 是否交付 0-否 1-是 */
+    private Integer isDelivery;
+    /** 交付范围:实例范围 */
+    private String instanceScope;
+    /** 交付范围:依赖&关联 */
+    private String associationRelation;
+    /** 备注 */
+    private String remark;
+
+}

+ 43 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/RelationDefineCollect.java

@@ -0,0 +1,43 @@
+package com.persagy.adm.server.custom.entity.db;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.persagy.dmp.common.model.entity.AuditableEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 平台/项目级采集的信息点定义
+ * @author linhuili
+ * @date 2021-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "dt_define_relation_collect", autoResultMap = true)
+public class RelationDefineCollect extends AuditableEntity {
+    /** 集团编码 */
+    private String groupCode;
+    /** 项目ID 0-平台级 1-项目级 */
+    private String projectId;
+    /** 交付类型:0-项目交付 1-现场交付  */
+    private Integer deliveryType;
+    /** 源端对象类型编码 */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private ArrayNode sourceTypeCodes;
+    /** 末端对象类型编码 */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private ArrayNode endTypeCodes;
+    /** 图类型编码 */
+    private String graphCode;
+    /** 边类型编码  */
+    private String relCode;
+    /** 计算方式:0-手动计算 1-自动计算 */
+    private Integer automaticFlag;
+    /** 管道用途 */
+    private String pipeUse;
+    /** 备注 */
+    private String remark;
+
+}

+ 11 - 17
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/SyncAppImpl.java

@@ -23,7 +23,6 @@ import com.persagy.adm.server.custom.service.*;
 import com.persagy.adm.server.custom.util.DataExtrasUtil;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.constant.ValidEnum;
-import com.persagy.dmp.define.entity.RelationDefine;
 import com.persagy.dmp.digital.client.DigitalObjectClient;
 import com.persagy.dmp.digital.client.DigitalRelationClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -61,12 +60,6 @@ public class SyncAppImpl implements ISyncApp {
 	private AdmJobSpaceMapper jobSpaceMapper;
 
 	@Autowired
-	private AdmProblemArchMapper problemArchMapper;
-
-	@Autowired
-	private AdmProblemEquipMapper problemEquipMapper;
-
-	@Autowired
 	private AdmFileMapper fileMapper;
 
 	@Autowired
@@ -126,13 +119,14 @@ public class SyncAppImpl implements ISyncApp {
 		majorCriteria.getCriteria().put("type", "major");
 		List<Map<String, Object>> majorList = ServiceUtil.call (() -> dicClient.dataQuery(groupCode, projectId, AdmConst.APP_ID, userId, majorCriteria));
 
-		//查询系统和设备定义
-		QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper, AdmConst.OBJ_TYPE_SYSTEM, AdmConst.OBJ_TYPE_EQUIPMENT);
-		List<TypeDef> typeList = ServiceUtil.queryAllPage(() -> rwdClient.queryObjectType(groupCode, projectId, AdmConst.APP_ID, userId, criteria), criteria, new Pagination(500));
+		// 查询基于交付范围的系统和设备定义
+		QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper,AdmConst.OBJ_TYPE_SYSTEM, AdmConst.OBJ_TYPE_EQUIPMENT);
+		List<ObjectTypeCollect> typeList = ServiceUtil.queryAllPage(() -> rwdClient.queryDefineTypeCollect(groupCode, projectId, AdmConst.APP_ID, userId, criteria), criteria, new Pagination(500));
+
 
-		LinkedList<TypeDef> sysList = new LinkedList<>();
-		LinkedList<TypeDef> equipList = new LinkedList<>();
-		for(TypeDef def : typeList){
+		LinkedList<ObjectTypeCollect> sysList = new LinkedList<>();
+		LinkedList<ObjectTypeCollect> equipList = new LinkedList<>();
+		for(ObjectTypeCollect def : typeList){
 			if(def.getObjType().equals(AdmConst.OBJ_TYPE_SYSTEM))
 				sysList.add(def);
 			else if(def.getObjType().equals(AdmConst.OBJ_TYPE_EQUIPMENT))
@@ -144,17 +138,17 @@ public class SyncAppImpl implements ISyncApp {
 		data.setSystem(sysList);
 		data.setEquipment(equipList);
 
-		//查询关系定义
+//		查询基于交付范围的关系定义
 		if(includeRel) {
-			List<RelationDefine> relList = ServiceUtil.call(() -> rwdClient.queryRelDef(groupCode, projectId, AdmConst.APP_ID, userId, new QueryCriteria()));
+			List<RelationDefineCollect> relList = ServiceUtil.call(() -> rwdClient.queryDefineRelCollect(groupCode, projectId, AdmConst.APP_ID, userId, new QueryCriteria()));
 			data.setRelation(relList);
 		}
 
-		//查询信息点定义
+		//查询基于交付范围的信息点定义
 		if(includeInfos) {
 			QueryCriteria qc = new QueryCriteria();
 			qc.setCriteria(objectMapper.createObjectNode());
-			List<InfoDef> funcList = ServiceUtil.call(() -> rwdClient.queryFunc(groupCode, projectId, AdmConst.APP_ID, userId, qc));
+			List<ObjectInfoCollect> funcList = ServiceUtil.call(() -> rwdClient.queryDefineInfoCollect(groupCode, projectId, AdmConst.APP_ID, userId, qc));
 			data.setInfos(funcList);
 		}