|
@@ -17,11 +17,13 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
import com.google.common.collect.Sets;
|
|
|
import com.persagy.dmp.basic.model.QueryCriteria;
|
|
|
import com.persagy.dmp.basic.utils.JsonNodeUtils;
|
|
|
+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.define.entity.ObjectTypeDefine;
|
|
|
import com.persagy.dmp.digital.client.DigitalObjectFacade;
|
|
|
+import com.persagy.dmp.digital.client.DigitalRelationProjectCalFacade;
|
|
|
import com.persagy.dmp.digital.entity.ObjectDigital;
|
|
|
import com.persagy.dmp.digital.entity.ObjectRelation;
|
|
|
import com.persagy.dmp.simple.client.DigitalObjectSimpleFacade;
|
|
@@ -91,7 +93,9 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
|
|
|
|
|
|
@Override
|
|
|
public List<AdmSpace> doInsertExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList) {
|
|
|
- Map<String, List<AdmSpace>> spaceMapByFlId = voList.stream().filter(admSpace -> StringUtils.isNotEmpty(admSpace.getFloorId())).collect(Collectors.groupingBy(AdmSpace::getFloorId));
|
|
|
+ Map<String, List<AdmSpace>> spaceMapByFlId = voList.stream()
|
|
|
+ .filter(admSpace -> StringUtils.isNotEmpty(admSpace.getFloorId()))
|
|
|
+ .collect(Collectors.groupingBy(AdmSpace::getFloorId));
|
|
|
//查询空间中floorId 对应的floor
|
|
|
if(CollUtil.isNotEmpty(spaceMapByFlId)){
|
|
|
List<ObjectNode> floors = queryFloorsByFloorIds(context, spaceMapByFlId.keySet());
|
|
@@ -438,17 +442,90 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
|
|
|
@Async
|
|
|
@Override
|
|
|
public void processRelationType(InstanceUrlParam context,List<AdmSpace> vos) {
|
|
|
- admRelCalService.calcRelation(context,
|
|
|
- CollUtil.newArrayList(
|
|
|
- AdmRelationTypeEnum.SP2SP_SPACENEIGHBORHOOD_5,
|
|
|
- AdmRelationTypeEnum.SP2SP_TRAFFICNETWORK_3,
|
|
|
- AdmRelationTypeEnum.SP2SP_CONVECTIONNETWORK_1,
|
|
|
- AdmRelationTypeEnum.SP2SP_RADIATIONNETWORK_1),null);
|
|
|
-
|
|
|
- vos.forEach(admSpace -> {
|
|
|
- admRelCalService.calcRelation(context,
|
|
|
- CollUtil.newArrayList(AdmRelationTypeEnum.EQ2SP_IN),admSpace.getClassCode());
|
|
|
- });
|
|
|
+ // 2021年12月15日11:12:22 by lijie
|
|
|
+ // 更改逻辑,改为原有逻辑:仅更新计算标记.而非进行关系计算
|
|
|
+ // 1.根据关系枚举查询对应项目的关系计算数据
|
|
|
+ List<AdmRelationTypeEnum> admRelationTypeEnums = CollUtil.newArrayList(
|
|
|
+ AdmRelationTypeEnum.SP2SP_SPACENEIGHBORHOOD_5,
|
|
|
+ AdmRelationTypeEnum.SP2SP_TRAFFICNETWORK_3,
|
|
|
+ AdmRelationTypeEnum.SP2SP_CONVECTIONNETWORK_1,
|
|
|
+ AdmRelationTypeEnum.SP2SP_RADIATIONNETWORK_1,
|
|
|
+ AdmRelationTypeEnum.EQ2SP_IN);
|
|
|
+ Set<String> graphCodes = admRelationTypeEnums.stream()
|
|
|
+ .filter(admRelationTypeEnum -> StrUtil.isNotBlank(admRelationTypeEnum.getGraphCode()))
|
|
|
+ .map(AdmRelationTypeEnum::getGraphCode)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ Set<String> relCodes = admRelationTypeEnums.stream()
|
|
|
+ .filter(admRelationTypeEnum -> StrUtil.isNotBlank(admRelationTypeEnum.getRelCode()))
|
|
|
+ .map(AdmRelationTypeEnum::getRelCode)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ QueryCriteria queryCriteria = new QueryCriteria();
|
|
|
+ ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
|
|
|
+ ObjectNode criteria = objectMapper.createObjectNode();
|
|
|
+ criteria.putPOJO(ObjectRelation.GRAPH_CODE_HUM,graphCodes);
|
|
|
+ criteria.putPOJO(ObjectRelation.REL_CODE_HUM,relCodes);
|
|
|
+ criteria.put(ObjectRelation.PROP_VALID,Boolean.TRUE);
|
|
|
+ queryCriteria.setCriteria(criteria);
|
|
|
+ CommonResult<List<ObjectNode>> commonResult = DigitalRelationProjectCalFacade
|
|
|
+ .queryPrototype(AppContext.getContext().getGroupCode(),
|
|
|
+ AppContext.getContext().getProjectId(), AppContext.getContext().getAppId(),
|
|
|
+ AppContext.getContext().getAccountId(), queryCriteria);
|
|
|
+ if (!CommonConstant.QUERY_SUCCESS.equals(commonResult.getResult())
|
|
|
+ || CollUtil.isEmpty(commonResult.getData())){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<ObjectNode> updateDatas = CollUtil.newArrayList();
|
|
|
+ // 2.过滤及处理数据
|
|
|
+ Set<String> graphRelSet = new HashSet<>();
|
|
|
+ graphRelSet.add(AdmRelationTypeEnum.SP2SP_SPACENEIGHBORHOOD_5.getGraphCode()+StrUtil.UNDERLINE
|
|
|
+ +AdmRelationTypeEnum.SP2SP_SPACENEIGHBORHOOD_5.getRelCode());
|
|
|
+ graphRelSet.add(AdmRelationTypeEnum.SP2SP_TRAFFICNETWORK_3.getGraphCode()+StrUtil.UNDERLINE
|
|
|
+ +AdmRelationTypeEnum.SP2SP_TRAFFICNETWORK_3.getRelCode());
|
|
|
+ graphRelSet.add(AdmRelationTypeEnum.SP2SP_CONVECTIONNETWORK_1.getGraphCode()+StrUtil.UNDERLINE
|
|
|
+ +AdmRelationTypeEnum.SP2SP_CONVECTIONNETWORK_1.getRelCode());
|
|
|
+ graphRelSet.add(AdmRelationTypeEnum.SP2SP_RADIATIONNETWORK_1.getGraphCode()+StrUtil.UNDERLINE
|
|
|
+ +AdmRelationTypeEnum.SP2SP_RADIATIONNETWORK_1.getRelCode());
|
|
|
+ for (AdmSpace admSpace : vos) {
|
|
|
+ String classCode = admSpace.getClassCode();
|
|
|
+ if (StrUtil.isBlank(classCode)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ graphRelSet.add(AdmRelationTypeEnum.EQ2SP_IN.getGraphCode()+StrUtil.UNDERLINE
|
|
|
+ +AdmRelationTypeEnum.EQ2SP_IN.getRelCode()+StrUtil.UNDERLINE+admSpace.getClassCode());
|
|
|
+ }
|
|
|
+ for (ObjectNode objectNode : commonResult.getData()) {
|
|
|
+ if (!objectNode.has(ObjectRelation.GRAPH_CODE_HUM)
|
|
|
+ || !objectNode.get(ObjectRelation.GRAPH_CODE_HUM).isTextual()
|
|
|
+ || StrUtil.isBlank(objectNode.get(ObjectRelation.GRAPH_CODE_HUM).asText())
|
|
|
+ || !objectNode.has(ObjectRelation.REL_CODE_HUM)
|
|
|
+ || !objectNode.get(ObjectRelation.REL_CODE_HUM).isTextual()
|
|
|
+ || StrUtil.isBlank(objectNode.get(ObjectRelation.REL_CODE_HUM).asText())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String key = objectNode.get(ObjectRelation.GRAPH_CODE_HUM).asText()+StrUtil.UNDERLINE
|
|
|
+ +objectNode.get(ObjectRelation.REL_CODE_HUM).asText();
|
|
|
+ if (graphRelSet.contains(key)){
|
|
|
+ objectNode.put("computationalState","2");
|
|
|
+ updateDatas.add(objectNode);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (!objectNode.has("zoneType")
|
|
|
+ || !objectNode.get("zoneType").isTextual()
|
|
|
+ || StrUtil.isBlank(objectNode.get("zoneType").asText())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ key = key+StrUtil.UNDERLINE+objectNode.get("zoneType").asText();
|
|
|
+ if (graphRelSet.contains(key)){
|
|
|
+ objectNode.put("computationalState","2");
|
|
|
+ updateDatas.add(objectNode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(updateDatas)){
|
|
|
+ // 3.批量更新数据
|
|
|
+ DigitalRelationProjectCalFacade.update(AppContext.getContext().getGroupCode(),
|
|
|
+ AppContext.getContext().getProjectId(), AppContext.getContext().getAppId(),
|
|
|
+ AppContext.getContext().getAccountId(),updateDatas);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/***
|