|
@@ -2,16 +2,25 @@ package com.persagy.proxy.adm.controller;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
|
|
+import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
+import com.persagy.dmp.basic.model.QueryCriteria;
|
|
|
import com.persagy.proxy.adm.constant.AdmCommonConstant;
|
|
|
import com.persagy.proxy.adm.model.*;
|
|
|
import com.persagy.proxy.adm.request.AdmCreateRequest;
|
|
|
import com.persagy.proxy.adm.request.AdmQueryCriteria;
|
|
|
import com.persagy.proxy.adm.request.AdmResponse;
|
|
|
import com.persagy.proxy.adm.service.IAdmBuildingService;
|
|
|
+import com.persagy.proxy.adm.service.IAdmFloorService;
|
|
|
+import com.persagy.proxy.adm.service.IAdmRelationService;
|
|
|
import com.persagy.proxy.adm.service.IAdmSpaceService;
|
|
|
+import com.persagy.proxy.common.entity.DmpResult;
|
|
|
import com.persagy.proxy.common.entity.InstanceUrlParam;
|
|
|
+import com.persagy.proxy.common.entity.RelationDTO;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
@@ -21,6 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.ws.rs.QueryParam;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -36,6 +46,10 @@ public class AdmSpaceController {
|
|
|
private IAdmSpaceService service;
|
|
|
@Autowired
|
|
|
private IAdmBuildingService buildingService;
|
|
|
+ @Autowired
|
|
|
+ private IAdmRelationService relationService;
|
|
|
+ @Autowired
|
|
|
+ private IAdmFloorService floorService;
|
|
|
@Value("${middleware.group.code}")
|
|
|
private String groupCode;
|
|
|
|
|
@@ -170,19 +184,97 @@ public class AdmSpaceController {
|
|
|
/**
|
|
|
* 修改业务空间对象和建筑楼层的关系
|
|
|
* spaceId 业务空间id,id 楼层或建筑id,type 业务空间的类型
|
|
|
- * @param upDataFloorAndBuildingRequestsList
|
|
|
+ * @param voList
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@PostMapping("/update-fl-bd")
|
|
|
- public AdmResponse updateFlBd(@RequestBody List<AdmUpDataFloorAndBuildingRequests> upDataFloorAndBuildingRequestsList, @QueryParam("projectId") String projectId) throws Exception {
|
|
|
- if(CollUtil.isEmpty(upDataFloorAndBuildingRequestsList)){
|
|
|
+ public AdmResponse updateFlBd(@RequestBody List<AdmUpDataFloorAndBuildingRequests> voList, @QueryParam("projectId") String projectId) throws Exception {
|
|
|
+ if(CollUtil.isEmpty(voList)){
|
|
|
return AdmResponse.failure("不可以传入空数据");
|
|
|
}
|
|
|
// 组装上下文条件
|
|
|
InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
|
|
|
- List<AdmSpace> vos = service.doUpdateFloorORBuilding(context, upDataFloorAndBuildingRequestsList);
|
|
|
- return AdmResponse.success(vos);
|
|
|
+ //List<AdmSpace> vos = service.doUpdateFloorORBuilding(context, upDataFloorAndBuildingRequestsList);
|
|
|
+ //TODO 循环删除 需要改为 批量删除
|
|
|
+ List<RelationDTO> RSpInBd_up = new ArrayList<>();
|
|
|
+ List<RelationDTO> RSpInFl_up = new ArrayList<>();
|
|
|
+ List<AdmSpace> space_up = new ArrayList<>();
|
|
|
+ QueryCriteria queryCriteria = new QueryCriteria();
|
|
|
+ voList.stream().forEach(requestData -> {
|
|
|
+ String spaceId = requestData.getSpaceId();
|
|
|
+ String id = requestData.getId();
|
|
|
+ String type = requestData.getType();//classCode
|
|
|
+
|
|
|
+ /** 清除空间和建筑楼层的的数据 */
|
|
|
+ ObjectNode rBd = JsonNodeFactory.instance.objectNode();
|
|
|
+ rBd.put("objTo",spaceId);
|
|
|
+ rBd.put("relCode","Bd2Sp");
|
|
|
+ queryCriteria.setCriteria(rBd);
|
|
|
+ relationService.doDelete(context, queryCriteria);
|
|
|
+
|
|
|
+ ObjectNode rFl = JsonNodeFactory.instance.objectNode();
|
|
|
+ rFl.put("objTo",spaceId);
|
|
|
+ rFl.put("relCode","Fl2Sp");
|
|
|
+ queryCriteria.setCriteria(rFl);
|
|
|
+ relationService.doDelete(context, queryCriteria);
|
|
|
+
|
|
|
+ if(StrUtil.isNotEmpty(id)){
|
|
|
+ if(id.startsWith("Fl") && StrUtil.isNotEmpty(spaceId)){
|
|
|
+ AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
|
|
|
+ admQueryCriteria.setName("floor");
|
|
|
+ AdmResponse admResponseFl = floorService.doQuery(context, admQueryCriteria, AdmFloor.class);
|
|
|
+ if(CollUtil.isNotEmpty(admResponseFl.getContent())){
|
|
|
+ AdmFloor floor = JSONUtil.toBean(admResponseFl.getContent().get(0).toString(), AdmFloor.class);
|
|
|
+ if (floor!=null){
|
|
|
+ //更新关系
|
|
|
+ RelationDTO rBd_up = new RelationDTO();
|
|
|
+ rBd_up.setObjTo(spaceId);
|
|
|
+ rBd_up.setRelCode("Bd2Sp");
|
|
|
+ rBd_up.setObjFrom(floor.getBuildingId());
|
|
|
+ RSpInBd_up.add(rBd_up);
|
|
|
+
|
|
|
+ RelationDTO rFl_up = new RelationDTO();
|
|
|
+ rFl_up.setObjTo(spaceId);
|
|
|
+ rFl_up.setRelCode("Fl2Sp");
|
|
|
+ rFl_up.setObjFrom(floor.getId());
|
|
|
+ RSpInFl_up.add(rFl_up);
|
|
|
+
|
|
|
+ //更新实体
|
|
|
+ AdmSpace space = new AdmSpace();
|
|
|
+ space.setId(spaceId);
|
|
|
+ space.setObjectType("space");
|
|
|
+ space.setZoneType(type);
|
|
|
+ space.setClassCode(type);
|
|
|
+ space.setBuildingId(floor.getBuildingId());
|
|
|
+ space.setFloorId(floor.getId());
|
|
|
+ space_up.add(space);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(id.startsWith("Bd")){
|
|
|
+ //更新关系
|
|
|
+ RelationDTO rBd_up = new RelationDTO();
|
|
|
+ rBd_up.setObjTo(spaceId);
|
|
|
+ rBd_up.setRelCode("Bd2Sp");
|
|
|
+ rBd_up.setObjFrom(id);
|
|
|
+ RSpInBd_up.add(rBd_up);
|
|
|
+
|
|
|
+ //更新实体
|
|
|
+ AdmSpace space = new AdmSpace();
|
|
|
+ space.setId(spaceId);
|
|
|
+ space.setObjectType("space");
|
|
|
+ space.setZoneType(type);
|
|
|
+ space.setClassCode(type);
|
|
|
+ space.setBuildingId(id);
|
|
|
+ space.setFloorId(null);
|
|
|
+ space_up.add(space);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ service.doUpdate(context, AdmSpace.class, space_up);
|
|
|
+ relationService.doSave(context, RSpInBd_up);
|
|
|
+ relationService.doSave(context, RSpInFl_up);
|
|
|
+ return AdmResponse.success(space_up);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -197,6 +289,7 @@ public class AdmSpaceController {
|
|
|
InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
|
|
|
List<AdmSpace> vos = CollUtil.newArrayList(createRequest.getContent());
|
|
|
vos = service.doUpdate(context, AdmSpace.class, vos);
|
|
|
+ //TODO 更新计算关系ZoneSpaceBaseService.upDateOutline
|
|
|
return AdmResponse.success(vos);
|
|
|
}
|
|
|
|
|
@@ -209,7 +302,7 @@ public class AdmSpaceController {
|
|
|
*/
|
|
|
@PostMapping("/query-outline")
|
|
|
public AdmResponse queryOutline(@QueryParam("projectId") String projectId,
|
|
|
- @RequestBody AdmQueryCriteria request) throws Exception {
|
|
|
+ @RequestBody AdmDCSQueryRequest request) throws Exception {
|
|
|
// 组装上下文条件
|
|
|
InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
|
|
|
request.setName("space");
|
|
@@ -225,7 +318,7 @@ public class AdmSpaceController {
|
|
|
list.add("infos");
|
|
|
list.add("properties");
|
|
|
request.setProjection(list);
|
|
|
- return service.doQuery(context, request, AdmSpace.class);
|
|
|
+ return service.doQuerySpaces(context, request);
|
|
|
}
|
|
|
|
|
|
|