|
@@ -3,7 +3,6 @@ package com.persagy.proxy.adm.service.impl;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
@@ -15,9 +14,9 @@ import com.persagy.dmp.basic.model.QueryCriteria;
|
|
|
import com.persagy.dmp.common.model.entity.BaseEntity;
|
|
|
import com.persagy.dmp.define.entity.ObjectTypeDefine;
|
|
|
import com.persagy.proxy.adm.model.*;
|
|
|
-import com.persagy.proxy.adm.request.AdmQueryCriteria;
|
|
|
import com.persagy.proxy.adm.request.AdmResponse;
|
|
|
import com.persagy.proxy.adm.service.IAdmSpaceService;
|
|
|
+import com.persagy.proxy.adm.utils.AdmQueryCriteriaHelper;
|
|
|
import com.persagy.proxy.common.client.DmpRwdClient;
|
|
|
import com.persagy.proxy.common.entity.DmpResult;
|
|
|
import com.persagy.proxy.common.entity.InstanceUrlParam;
|
|
@@ -47,8 +46,8 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
|
|
|
Map<String, AdmSpace> spaceIdMap = CollUtil.fieldValueMap(voList, BaseEntity.PROP_ID);
|
|
|
//key spid, value floorId
|
|
|
Map<String, String> spId2FlId_map = voList.stream().filter(admSpace -> StrUtil.isNotEmpty(admSpace.getFloorId())).collect(Collectors.toMap(AdmSpace::getId,AdmSpace::getFloorId));
|
|
|
- //查询空间中floorId 对应的flool
|
|
|
- DmpResult<JSONArray> floors = queryFloors(context, spId2FlId_map);
|
|
|
+ //查询空间中floorId 对应的floor
|
|
|
+ DmpResult<JSONArray> floors = queryFloorsByFloorIds(context, spId2FlId_map.values());
|
|
|
ArrayList<AdmFloor> floorList = CollUtil.newArrayList(JSONUtil.toList(floors.getData().toString(),AdmFloor.class));
|
|
|
//space.height = floor.infos.height
|
|
|
List<AdmSpace> vos = processHeight(spaceIdMap, floorList, spId2FlId_map);
|
|
@@ -63,59 +62,17 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<AdmSpace> doUpdateExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<AdmSpace> doUpdateFloorORBuilding(InstanceUrlParam context, List<AdmUpDataFloorAndBuildingRequests> voList) {
|
|
|
-
|
|
|
- voList.stream().forEach(requestData -> {
|
|
|
-
|
|
|
- });
|
|
|
-
|
|
|
- //根据id查询对象集合
|
|
|
- //处理关系
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<AdmSpace> doUpdateOutline(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void doDeleteExt(InstanceUrlParam context, List<AdmSpace> voList) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
public AdmResponse doQueryType(InstanceUrlParam context, AdmDCSQueryRequest request) {
|
|
|
//查询定义类型
|
|
|
- DmpResult<JSONArray> resultDef = queryDefineType(context);
|
|
|
+ ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
|
|
|
+ criteriaEq.put("parentCode", "space");
|
|
|
+ DmpResult<JSONArray> resultDef = queryDefineType(context, criteriaEq);
|
|
|
List<JSONObject> defineList = null;
|
|
|
if(resultDef.getResult().equals(DmpResult.SUCCESS)){
|
|
|
defineList = JSONUtil.toList(resultDef.getData().toString(), JSONObject.class);
|
|
|
//获取实际空间对象的数量
|
|
|
- Map<String, JSONObject> classCodeMap = CollUtil.fieldValueMap(defineList, "code");
|
|
|
- if(StrUtil.isNotEmpty(request.getFloorId())){
|
|
|
- //根据classCode floorId 查询查询实际存在的空间
|
|
|
- //根据floorId查询关系 Fl2Sp
|
|
|
- DmpResult<List<ObjRelationDTO>> relationDmpResult = queryRelationByFloorId(context, "Fl2Sp", request.getFloorId());
|
|
|
- //根据关系查询结果中的spaceId查询存在的空间数量
|
|
|
- Map<String, ObjRelationDTO> relationMap = new HashMap<>(16);
|
|
|
- if(CollUtil.isEmpty(relationDmpResult.getData())){
|
|
|
- relationMap = CollUtil.fieldValueMap(relationDmpResult.getData(), "objTo");
|
|
|
- }
|
|
|
- transTo(context, defineList, relationMap.keySet());
|
|
|
- }
|
|
|
+ //根据classCode floorId 查询查询实际存在的空间
|
|
|
+ assembleDefineTypes(context, defineList, request.getFloorId());
|
|
|
// 设置返回值
|
|
|
AdmResponse response = AdmResponse.success(defineList);
|
|
|
Long total = resultDef.getCount() == null ? null : resultDef.getCount().longValue();
|
|
@@ -127,45 +84,212 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public AdmResponse doQuerySpaces(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmSpace> clazz) {
|
|
|
- return null;
|
|
|
+ public AdmResponse doQuerySpaces(InstanceUrlParam context, AdmDCSQueryRequest request) {
|
|
|
+ QueryCriteria dmpRequest = AdmQueryCriteriaHelper.toDmpCriteria(request);
|
|
|
+ //查询的时候,floorId,buildingId 按照空间对象的自定义信息点处理
|
|
|
+ //TODO 这个ifelse判断是原来的代码实现,写此方法实现的时候不清楚实际业务,保留原来的判断,之后了解业务再根据业务调整
|
|
|
+ DmpResult<JSONArray> dmpResult = new DmpResult<>();
|
|
|
+ List spaceArray = new ArrayList();
|
|
|
+ List<String> zoneTypeList = StrUtil.isNotEmpty(request.getZoneType()) ? CollUtil.newArrayList(request.getZoneType()) : request.getZoneTypeList();
|
|
|
+ if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isNotEmpty(request.getFloorId()) && !request.getFloorId().equals("isnull")){
|
|
|
+ querySpaceByFl(dmpRequest,context, spaceArray, zoneTypeList, request.getFloorId(), "Fl2Sp");
|
|
|
+
|
|
|
+ }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isNotEmpty(request.getFloorId()) && request.getFloorId().equals("isnull")){
|
|
|
+ QueryCriteria queryFloor = ensureQueryCommParm(dmpRequest,context, Arrays.asList("floor"), "floor");
|
|
|
+ ObjectNode criteriaFl = queryFloor.getCriteria();
|
|
|
+ criteriaFl.put("buildingId", request.getBuildingId());
|
|
|
+ queryFloor.setCriteria(criteriaFl);
|
|
|
+ DmpResult<JSONArray> dmpResultFloors = queryObj(context, queryFloor);
|
|
|
+ List<AdmFloor> floorList = JSONUtil.toList(JSONUtil.toJsonStr(dmpResultFloors.getData()), AdmFloor.class);
|
|
|
+ Map<String, AdmFloor> floorMap = CollUtil.fieldValueMap(floorList, BaseEntity.PROP_ID);
|
|
|
+
|
|
|
+ if(CollUtil.isNotEmpty(floorMap)){
|
|
|
+ QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
|
|
|
+ ObjectNode criteriaPe = queryCriteria.getCriteria();
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ floorMap.keySet().forEach(floorId -> jsonArray.add(floorId));
|
|
|
+ criteriaPe.putPOJO("floorId", jsonArray);
|
|
|
+ queryCriteria.setCriteria(criteriaPe);
|
|
|
+ dmpResult = queryObj(context, queryCriteria);
|
|
|
+ if(CollUtil.isNotEmpty(dmpResult.getData())){
|
|
|
+ spaceArray.addAll(dmpResult.getData());
|
|
|
+ }
|
|
|
+ querySpaceByFl(dmpRequest, context, spaceArray, zoneTypeList, request.getBuildingId(), "Bd2Sp");
|
|
|
+ }
|
|
|
+ }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId()) && !request.getBuildingId().equals("isnull")){
|
|
|
+ querySpaceByFl(dmpRequest,context, spaceArray, zoneTypeList, request.getBuildingId(), "Bd2Sp");
|
|
|
+ }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId()) && request.getBuildingId().equals("isnull")){
|
|
|
+ //未明确建筑
|
|
|
+ QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
|
|
|
+ ObjectNode criteriaPe = queryCriteria.getCriteria();
|
|
|
+ JSONObject isnull = new JSONObject();
|
|
|
+ isnull.put("$null", true);
|
|
|
+ criteriaPe.putPOJO("buildingId", isnull);
|
|
|
+ queryCriteria.setCriteria(criteriaPe);
|
|
|
+ dmpResult = queryObj(context, queryCriteria);
|
|
|
+ if(CollUtil.isNotEmpty(dmpResult.getData())){
|
|
|
+ spaceArray.addAll(dmpResult.getData());
|
|
|
+ }
|
|
|
+ }else if(StrUtil.isEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId())){
|
|
|
+ QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
|
|
|
+ ObjectNode criteriaPe = queryCriteria.getCriteria();
|
|
|
+ JSONObject isnull = new JSONObject();
|
|
|
+ isnull.put("$null", false);
|
|
|
+ criteriaPe.putPOJO("floorId", isnull);
|
|
|
+ queryCriteria.setCriteria(criteriaPe);
|
|
|
+ dmpResult = queryObj(context, queryCriteria);
|
|
|
+ if(CollUtil.isNotEmpty(dmpResult.getData())){
|
|
|
+ spaceArray.addAll(dmpResult.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //处理查询结果转化为目标返回值
|
|
|
+ List<JSONObject> jsonObjects = new ArrayList<JSONObject>();
|
|
|
+ if(CollUtil.isNotEmpty(spaceArray)){
|
|
|
+ List<AdmSpace> spaceList = JSONUtil.toList(JSONUtil.toJsonStr(spaceArray), AdmSpace.class);
|
|
|
+ Map<String, AdmSpace> admSpaceMap = CollUtil.fieldValueMap(spaceList, BaseEntity.PROP_ID);
|
|
|
+ admSpaceMap.values().stream().forEach(admSpace -> {
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("zoneType", admSpace.getClassCode());
|
|
|
+ jsonObject.put("floorId", admSpace.getFloorId());
|
|
|
+ jsonObjects.add(jsonObject);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ AdmResponse admResponse = new AdmResponse();
|
|
|
+ admResponse.setContent(jsonObjects);
|
|
|
+ admResponse.setTotal(jsonObjects.size()*1l);
|
|
|
+ admResponse.setPageSize(request.getPageSize());
|
|
|
+ admResponse.setPageNumber(request.getPageNumber());
|
|
|
+ return admResponse;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据信息点查询空间
|
|
|
+ * @param context
|
|
|
+ * @param spaceArray
|
|
|
+ * @param zoneTypeList
|
|
|
+ * @param objFrom flooIds / bulidingIds
|
|
|
+ * @param relCode
|
|
|
+ */
|
|
|
+ private void querySpaceByFl(QueryCriteria dmpRequest, InstanceUrlParam context, List spaceArray, List<String> zoneTypeList, String objFrom, String relCode){
|
|
|
+ QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest,context, zoneTypeList, "space");
|
|
|
+ addRelationTo(queryCriteria,objFrom,relCode);
|
|
|
+ DmpResult<JSONArray> dmpResult = queryObj(context, queryCriteria);
|
|
|
+ if(CollUtil.isNotEmpty(dmpResult.getData())){
|
|
|
+ spaceArray.addAll(dmpResult.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * 查询空间flooId对应的infos中height存在的 flool
|
|
|
+ * 空间的类型是根据项目自定义的
|
|
|
+ * 参见中心
|
|
|
+ * @Select("SELECT s.object_type as type,d.name FROM zone_space_base s
|
|
|
+ * LEFT JOIN dict.dict_space_project d ON s.object_type = d.id WHERE s.project_id = #{projectId} AND d.project_id = #{projectId}
|
|
|
+ * GROUP BY object_type, d.name")
|
|
|
* @param context
|
|
|
- * @param spId2FlId_map
|
|
|
* @return
|
|
|
*/
|
|
|
- private DmpResult<JSONArray> queryFloors(InstanceUrlParam context, Map<String, String> spId2FlId_map){
|
|
|
- QueryCriteria criteriaObject = new QueryCriteria();
|
|
|
- ObjectNode criteriaPe = JsonNodeFactory.instance.objectNode();
|
|
|
- ArrayNode array = criteriaPe.putObject("id").putArray("$in");
|
|
|
- spId2FlId_map.values().forEach(floorId -> array.add(floorId));
|
|
|
- criteriaPe.put("classCode", "floor");
|
|
|
- criteriaPe.put("objType", "floor");
|
|
|
-
|
|
|
- JSONObject height = new JSONObject();
|
|
|
- height.put("$gt", 0f);
|
|
|
- criteriaPe.putPOJO("height", height);
|
|
|
+ @Override
|
|
|
+ public List<JSONObject> doQuerySpaceTypes(InstanceUrlParam context) {
|
|
|
+ //根据项目id查询空间类型
|
|
|
+ Map<String, String> codeNameMap = queryProjectDefineType(context);
|
|
|
+ if(CollUtil.isNotEmpty(codeNameMap)){
|
|
|
+ //查询object
|
|
|
+ JSONArray demObjs = queryAndDealObjs(context, codeNameMap.keySet());
|
|
|
+ if(CollUtil.isNotEmpty(demObjs)){
|
|
|
+ List<AdmSpace> spaceList = JSONArray.parseArray(JSONUtil.toJsonStr(demObjs), AdmSpace.class);
|
|
|
+ Set<String> classCodes = spaceList.stream().map(space -> space.getClassCode()).collect(Collectors.toSet());
|
|
|
+ if(CollUtil.isNotEmpty(classCodes)){
|
|
|
+ codeNameMap.keySet().removeIf(code -> !classCodes.contains(code));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(CollUtil.isNotEmpty(codeNameMap)){
|
|
|
+ List<JSONObject> list = new ArrayList<>(codeNameMap.size());
|
|
|
+ codeNameMap.keySet().stream().forEach(code ->{
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("name",codeNameMap.get(code));
|
|
|
+ jsonObject.put("code",code);
|
|
|
+ list.add(jsonObject);
|
|
|
+ });
|
|
|
+ return list;
|
|
|
+ }else{
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- criteriaObject.setCriteria(criteriaPe);
|
|
|
- criteriaObject.setSize(spId2FlId_map.size() * 1L);
|
|
|
- criteriaObject.setPage(1L);
|
|
|
- criteriaObject.setWithoutCount(true);
|
|
|
- // 转换参数
|
|
|
+ private DmpResult<JSONArray> queryObj(InstanceUrlParam context, QueryCriteria criteriaObject){
|
|
|
JSONObject paraPe = null;
|
|
|
try {
|
|
|
String paraStr = objectMapper.writeValueAsString(criteriaObject);
|
|
|
paraPe = JSONObject.parseObject(paraStr);
|
|
|
} catch (JsonProcessingException e) {
|
|
|
- log.error(e.getMessage(), e);
|
|
|
- return null;
|
|
|
+ throw new RuntimeException("转换查询条件出错:" + e.getMessage());
|
|
|
}
|
|
|
return rwdClient.queryObject(context, paraPe);
|
|
|
}
|
|
|
|
|
|
+ private QueryCriteria ensureQueryCommParm(QueryCriteria dmpRequest, InstanceUrlParam context, Collection<String> classCodes, String objType){
|
|
|
+ ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
|
|
|
+ if(CollUtil.isNotEmpty(classCodes)){
|
|
|
+ ArrayNode array = criteriaEq.putObject("classCode").putArray("$in");
|
|
|
+ classCodes.forEach(code -> array.add(code));
|
|
|
+ }
|
|
|
+ criteriaEq.put("objType", objType);
|
|
|
+ dmpRequest.setCriteria(criteriaEq);
|
|
|
+ return dmpRequest;
|
|
|
+ }
|
|
|
+
|
|
|
+ private JSONArray queryAndDealObjs(InstanceUrlParam context, Set<String> codes){
|
|
|
+ QueryCriteria criteriaObject = ensureQueryCommParm(new QueryCriteria(), context, codes,"space");
|
|
|
+ criteriaObject.setSize(50L);
|
|
|
+ DmpResult<JSONArray> dmpResult = queryObj(context, criteriaObject);
|
|
|
+ if(CollUtil.isEmpty(dmpResult.getData())){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ JSONArray demObjs = dmpResult.getData();
|
|
|
+ if(dmpResult.getCount() > criteriaObject.getSize()){
|
|
|
+ for(int page = 2; page < dmpResult.getCount()/criteriaObject.getSize()+1; page++){
|
|
|
+ criteriaObject.setPage(page*1L);
|
|
|
+ demObjs.addAll(queryObj(context, criteriaObject).getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return demObjs;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Map<String, String> queryProjectDefineType(InstanceUrlParam context){
|
|
|
+ Map<String, String> codeNameMap = null;
|
|
|
+ ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
|
|
|
+ criteriaEq.put("projectId", context.getProjectId());
|
|
|
+ criteriaEq.put("objType", "space");
|
|
|
+ DmpResult<JSONArray> resultDef = queryDefineType(context, criteriaEq);
|
|
|
+ if(resultDef.getResult().equals(DmpResult.SUCCESS) && CollUtil.isNotEmpty(resultDef.getData())){
|
|
|
+ List<ObjectTypeDefine> defineList = JSONUtil.toList(resultDef.getData().toString(), ObjectTypeDefine.class);
|
|
|
+ codeNameMap = defineList.stream().collect(Collectors.toMap(ObjectTypeDefine::getCode, ObjectTypeDefine::getName, (k1,k2)->k1));
|
|
|
+ }
|
|
|
+ return codeNameMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询空间flooId对应的infos中height存在的 flool
|
|
|
+ * @param context
|
|
|
+ * @param floolIds
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private DmpResult<JSONArray> queryFloorsByFloorIds(InstanceUrlParam context, Collection<String> floolIds){
|
|
|
+ QueryCriteria queryCriteria = ensureQueryCommParm(new QueryCriteria(),context, CollUtil.newArrayList("floor"),"floor");
|
|
|
+ ObjectNode criteriaPe = queryCriteria.getCriteria();
|
|
|
+ if(CollUtil.isNotEmpty(floolIds)){
|
|
|
+ ArrayNode array = criteriaPe.putObject("id").putArray("$in");
|
|
|
+ floolIds.forEach(floorId -> array.add(floorId));
|
|
|
+ }
|
|
|
+ JSONObject height = new JSONObject();
|
|
|
+ height.put("$gt", 0f);
|
|
|
+ criteriaPe.putPOJO("height", height);
|
|
|
+ queryCriteria.setCriteria(criteriaPe);
|
|
|
+ queryCriteria.setWithoutCount(true);
|
|
|
+ return queryObj(context, queryCriteria);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* space.height = floor.infos.height
|
|
|
* @param spaceIdMap
|
|
@@ -254,74 +378,72 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
|
|
|
private void deleteRelation(InstanceUrlParam context, String relCode, String ObjType){
|
|
|
}
|
|
|
|
|
|
- /** 根据floorId查询关系 Fl2Sp
|
|
|
- * @return*/
|
|
|
- private DmpResult<List<ObjRelationDTO>> queryRelationByFloorId(InstanceUrlParam context, String relCode, String objFrom){
|
|
|
- QueryCriteria dmpRequest = new QueryCriteria();
|
|
|
- ObjectNode criteria = JsonNodeFactory.instance.objectNode();
|
|
|
- criteria.put("relCode", relCode);
|
|
|
- if(StrUtil.isNotEmpty(objFrom)){
|
|
|
- criteria.put("objFrom", objFrom);
|
|
|
- }
|
|
|
- dmpRequest.setCriteria(criteria);
|
|
|
- dmpRequest.setPage(1L);
|
|
|
- dmpRequest.setWithoutCount(true);
|
|
|
- // 转换参数
|
|
|
- JSONObject paraRel = null;
|
|
|
- try {
|
|
|
- String paraStr = objectMapper.writeValueAsString(dmpRequest);
|
|
|
- paraRel = JSONObject.parseObject(paraStr);
|
|
|
- } catch (JsonProcessingException e) {
|
|
|
- log.error(e.getMessage(), e);
|
|
|
- }
|
|
|
- return rwdClient.queryRelation(context, dmpRequest);
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* 转换为目标实体,并增加属性
|
|
|
*/
|
|
|
- private void transTo(InstanceUrlParam context, List<JSONObject> defineList, Set<String> relations){
|
|
|
+ private void assembleDefineTypes(InstanceUrlParam context, List<JSONObject> defineList, String floorId){
|
|
|
boolean needCount = true;
|
|
|
defineList.stream().forEach(defineType -> {
|
|
|
//查询空间数量
|
|
|
- int count = needCount ? countSpace(context, defineType.getString("code"), relations) : 0;
|
|
|
- defineType.put("count", count);
|
|
|
- defineType.put("projectId", context.getProjectId());
|
|
|
+ int count = needCount ? countSpace(context, defineType.getString("code"), floorId) : 0;
|
|
|
+ //处理单个对象
|
|
|
+ assembleDefineObj(defineType, count, context.getProjectId());
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 查询存在空间的数量
|
|
|
+ * 单个转换为目标实体,并增加属性
|
|
|
+ */
|
|
|
+ private void assembleDefineObj(JSONObject defineType, int count, String projectId){
|
|
|
+ defineType.put("count", count);
|
|
|
+ defineType.put("projectId", projectId);
|
|
|
+ defineType.remove("aliasName");
|
|
|
+ defineType.remove("aliasCode");
|
|
|
+ defineType.remove("valid");
|
|
|
+ defineType.remove("objType");
|
|
|
+ defineType.remove("groupCode");
|
|
|
+ defineType.remove("parentCode");
|
|
|
+ defineType.remove("id");
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addRelationTo(QueryCriteria rwdQueryCriteria, String objFrom, String relCode){
|
|
|
+ ObjectNode relationTO = JsonNodeFactory.instance.objectNode();
|
|
|
+ relationTO.put("relCode", relCode);
|
|
|
+ relationTO.put("objFrom", objFrom);
|
|
|
+ ObjectNode criteria = rwdQueryCriteria.getCriteria();
|
|
|
+ criteria.putPOJO("relationTo", relationTO);
|
|
|
+ rwdQueryCriteria.setCriteria(criteria);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addRelationFrom(QueryCriteria rwdQueryCriteria, String objTo, String relCode){
|
|
|
+ ObjectNode relationFrom = JsonNodeFactory.instance.objectNode();
|
|
|
+ if(StrUtil.isNotEmpty(objTo)){
|
|
|
+ relationFrom.put("objTo", objTo);
|
|
|
+ }
|
|
|
+ ObjectNode criteria = rwdQueryCriteria.getCriteria();
|
|
|
+ criteria.putPOJO("relationFrom", relationFrom);
|
|
|
+ rwdQueryCriteria.setCriteria(criteria);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 查询存在空间的数量
|
|
|
* @param context
|
|
|
* @param classCode
|
|
|
- * @param spaceIds
|
|
|
+ * @param objFrom
|
|
|
* @return
|
|
|
*/
|
|
|
- private int countSpace(InstanceUrlParam context, String classCode, Set<String> spaceIds){
|
|
|
- QueryCriteria rwdQueryCriteria = new QueryCriteria();
|
|
|
- ObjectNode rwdCriteria = JsonNodeFactory.instance.objectNode();
|
|
|
- ArrayNode arrayIds = rwdCriteria.putObject("id").putArray("$in");
|
|
|
- spaceIds.forEach(spaceId -> arrayIds.add(spaceId));
|
|
|
- rwdCriteria.put("objType", "space");
|
|
|
- rwdCriteria.put("classCode", classCode);
|
|
|
- rwdQueryCriteria.setCriteria(rwdCriteria);
|
|
|
- rwdQueryCriteria.setOnlyCount(true);
|
|
|
- // 转换参数
|
|
|
- JSONObject paraRel = null;
|
|
|
- try {
|
|
|
- String paraStr = objectMapper.writeValueAsString(rwdQueryCriteria);
|
|
|
- paraRel = JSONObject.parseObject(paraStr);
|
|
|
- } catch (JsonProcessingException e) {
|
|
|
- log.error(e.getMessage(), e);
|
|
|
- }
|
|
|
- return rwdClient.queryObject(context, paraRel).getCount();
|
|
|
+ private int countSpace(InstanceUrlParam context, String classCode, String objFrom){
|
|
|
+ QueryCriteria queryCriteria = ensureQueryCommParm(new QueryCriteria(), context, CollUtil.newArrayList(classCode),"space");
|
|
|
+ addRelationTo(queryCriteria, objFrom,"Fl2Sp");
|
|
|
+ queryCriteria.setOnlyCount(true);
|
|
|
+ DmpResult<JSONArray> dmpResult = queryObj(context, queryCriteria);
|
|
|
+ return dmpResult.getCount();
|
|
|
}
|
|
|
|
|
|
|
|
|
- private DmpResult<JSONArray> queryDefineType(InstanceUrlParam context){
|
|
|
+ private DmpResult<JSONArray> queryDefineType(InstanceUrlParam context, ObjectNode criteriaEq){
|
|
|
QueryCriteria criteriaObject = new QueryCriteria();
|
|
|
- ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
|
|
|
- criteriaEq.put("parentCode", "space");
|
|
|
+ criteriaObject.setCriteria(criteriaEq);
|
|
|
JSONObject paraPe = null;
|
|
|
try {
|
|
|
String paraStr = objectMapper.writeValueAsString(criteriaObject);
|