| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package com.persagy.proxy.adm.controller;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import com.alibaba.fastjson.JSONObject;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.node.ObjectNode;
- import com.persagy.dmp.basic.dto.RequestData;
- import com.persagy.dmp.basic.model.QueryCriteria;
- import com.persagy.dmp.common.helper.SpringHelper;
- import com.persagy.dmp.common.model.response.CommonResult;
- import com.persagy.dmp.digital.client.DigitalRelationFacade;
- import com.persagy.dmp.digital.entity.ObjectDigital;
- import com.persagy.dmp.digital.entity.ObjectRelation;
- import com.persagy.proxy.adm.constant.AdmCommonConstant;
- import com.persagy.proxy.adm.constant.AdmObjectType;
- import com.persagy.proxy.adm.constant.AdmRelationType;
- import com.persagy.proxy.adm.constant.GraphCodeEnum;
- import com.persagy.proxy.adm.constant.RelCodeEnum;
- import com.persagy.proxy.adm.request.AdmQueryCriteria;
- import com.persagy.proxy.adm.request.AdmResponse;
- import com.persagy.proxy.adm.strategy.RelationObjectContext;
- import cn.hutool.core.collection.CollectionUtil;
- import cn.hutool.core.util.StrUtil;
- /**
- *
- * @version 1.0.0
- * @company persagy
- * @author zhangqiankun
- * @date 2021年9月8日 下午7:28:00
- */
- @RestController
- public class ComponentBuildingController {
- @Autowired
- private RelationObjectContext relationObjectContext;
-
- /**
- * 建筑查询,这里查楼层都是从属关系,而非服务关系
- * @param queryCriteria
- * @param request
- * @return
- */
- @RequestMapping("/building/query")
- public AdmResponse queryBuilding(@RequestBody AdmQueryCriteria queryCriteria, HttpServletRequest request) {
- String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
- String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
-
- // 查询出所有的建筑对象
- RequestData requestData = new RequestData();
- requestData.setGraphCode(GraphCodeEnum.ArchSubset.name());
- requestData.setRelCode(RelCodeEnum.Bd2Fl.name());
- requestData.setPage(1L);
- requestData.setSize(1000L);
-
- List<ObjectDigital> masterObjs = this.relationObjectContext.queryPageObjectInfo(requestData, groupCode, projectId, AdmRelationType.ARCHSUBSET_BD2FL);
- this.handleMasterObjs(masterObjs, groupCode, projectId);
- return AdmResponse.success(masterObjs);
- }
- /**
- * 处理响应结果集
- *
- * @param masterObjs
- * @param groupCode
- * @param projectId
- */
- private List<JSONObject> handleMasterObjs(List<ObjectDigital> masterObjs, String groupCode, String projectId) {
- Map<String, Long> modelIds = new HashMap<String, Long>();
- List<JSONObject> resultList = new ArrayList<JSONObject>();
-
- // 遍历所有主对象
- for (ObjectDigital master : masterObjs) {
- JSONObject result = new JSONObject();
-
- result.put("id", master.getId());
- result.put("localId", master.getLocalId());
- result.put("localName", master.getLocalName());
- result.put("name", master.getName());
- result.put("objectType", master.getObjType());
- result.put("projectId", master.getProjectId());
- result.put("infos", master.getInfos());
- result.put("createTime", master.getCreationTime() == null ? null : master.getCreationTime().toString("yyyy-DD-MM 24HH:mm:ss"));
- result.put("lastUpdate", master.getModifiedTime() == null ? null : master.getModifiedTime().toString("yyyy-DD-MM 24HH:mm:ss"));
- result.put("statistics", new JSONObject());
-
- List<ObjectDigital> slaveObjs = master.getRelObjs();
- if (CollectionUtil.isNotEmpty(slaveObjs)) {
- // 遍历所有的从对象
- for (ObjectDigital slave : slaveObjs) {
- ObjectNode infos = slave.getInfos();
- String outline = infos.get("outline") == null ? null : infos.get("outline").asText();
- String modelFile = infos.get("modelFile") == null ? null : infos.get("modelFile").asText();
- if (StrUtil.isEmpty(outline) && StrUtil.isNotBlank(modelFile)) {
- // 判断此模型是否被多处使用
- if (modelIds.containsKey(modelFile)) {
- result.put("count", modelIds.get(modelFile));
- } else {
- long count = this.getNumByModelId(groupCode, projectId, modelFile);
- result.put("count", count);
- modelIds.put(modelFile, count);
- }
- }
- }
- }
-
- resultList.add(result);
- }
-
- return resultList;
- }
-
- /**
- * 获取此项目使用此模型ID的所有楼层数量
- *
- * @param groupCode
- * @param projectId
- * @param modelId
- * @return
- */
- private long getNumByModelId(String groupCode, String projectId, String modelId) {
- QueryCriteria queryCriteria = new QueryCriteria();
- ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
- ObjectNode objectNode = objectMapper.createObjectNode();
- objectNode.put("classCode", AdmObjectType.FLOOR.getIndex());
- objectNode.put("modelFile", modelId);
- queryCriteria.setCriteria(objectNode);
- queryCriteria.setOnlyCount(true);
- CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
- return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
- }
-
- }
|