|
@@ -4,12 +4,14 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
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.dto.RequestData;
|
|
|
import com.persagy.dmp.basic.model.QueryCriteria;
|
|
|
import com.persagy.dmp.common.model.entity.BaseEntity;
|
|
|
+import com.persagy.dmp.common.model.response.CommonResult;
|
|
|
import com.persagy.dmp.define.client.DigitalDefineFacade;
|
|
|
import com.persagy.dmp.define.entity.ObjectTypeDefine;
|
|
|
import com.persagy.dmp.digital.client.DigitalObjectFacade;
|
|
@@ -19,13 +21,12 @@ import com.persagy.dmp.simple.client.DigitalObjectSimpleFacade;
|
|
|
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.*;
|
|
|
+import com.persagy.proxy.adm.service.IAdmRelationService;
|
|
|
import com.persagy.proxy.adm.utils.AdmContextUtil;
|
|
|
import com.persagy.proxy.adm.utils.AdmQueryCriteriaHelper;
|
|
|
import com.persagy.proxy.adm.utils.ObjectNameUtil;
|
|
|
import com.persagy.proxy.common.entity.DmpResult;
|
|
|
import com.persagy.proxy.common.entity.RelationDTO;
|
|
|
-import com.persagy.proxy.dictionary.service.IAdmDictService;
|
|
|
import com.persagy.proxy.object.model.*;
|
|
|
import com.persagy.proxy.object.service.IAdmBuildingService;
|
|
|
import com.persagy.proxy.object.service.IAdmFloorService;
|
|
@@ -36,7 +37,10 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import javax.json.JsonObject;
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
import javax.ws.rs.QueryParam;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* Adm 系统 API
|
|
@@ -54,8 +58,6 @@ public class AdmSystemController {
|
|
|
@Autowired
|
|
|
private IAdmFloorService floorService;
|
|
|
@Autowired
|
|
|
- private IAdmDictService dictService;
|
|
|
- @Autowired
|
|
|
private IAdmRelationService relationService;
|
|
|
|
|
|
/**
|
|
@@ -129,7 +131,7 @@ public class AdmSystemController {
|
|
|
relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Fl", null, systemId , floorId));
|
|
|
}
|
|
|
if(StrUtil.isNotEmpty(buildID)){
|
|
|
- relationDTOS.add(new RelationDTO(null, "MechForArch", "Sy2Bd", null, systemId , buildID));
|
|
|
+ relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Bd", null, systemId , buildID));
|
|
|
}
|
|
|
});
|
|
|
admSystemList.addAll(admSystems);
|
|
@@ -217,7 +219,33 @@ public class AdmSystemController {
|
|
|
@PostMapping("/query")
|
|
|
public AdmResponse query(@RequestBody AdmQueryCriteria request) {
|
|
|
request.setName(AdmSystem.OBJ_TYPE);
|
|
|
- return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
|
|
|
+
|
|
|
+ if(CollUtil.isNotEmpty(request.getProjection()) && request.getDistinct() && !request.getProjection().contains(BaseEntity.PROP_ID)){
|
|
|
+ RequestData requestData = new RequestData();
|
|
|
+ requestData.setProjection(request.getProjection());
|
|
|
+ requestData.setObjType(AdmSystem.OBJ_TYPE);
|
|
|
+ requestData.setPage(request.getPageNumber().longValue());
|
|
|
+ requestData.setSize(request.getPageSize().longValue());
|
|
|
+ CommonResult<List<ObjectNode>> result = DigitalObjectSimpleFacade.querySystemListByConditions(AdmContextUtil.toDmpContext().getGroupCode(),AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(), null, requestData);
|
|
|
+ if(result == null || CollUtil.isEmpty(result.getData())){
|
|
|
+ return AdmResponse.success();
|
|
|
+ }
|
|
|
+ List<AdmSystem> admSystemList = JSONUtil.toList(result.getData().toString(), AdmSystem.class);
|
|
|
+ service.ensureSpecialValues(AdmContextUtil.toDmpContext(), admSystemList);
|
|
|
+ AdmResponse response = AdmResponse.success(admSystemList);
|
|
|
+ Long total = result.getCount() == null ? null : result.getCount().longValue();
|
|
|
+ if(request.isOnlyCount()){
|
|
|
+ response.setTotal(null);
|
|
|
+ response.setCount(total);
|
|
|
+ }else {
|
|
|
+ response.setTotal(total);
|
|
|
+ }
|
|
|
+ response.setPageNumber(request.getPageNumber());
|
|
|
+ response.setPageSize(request.getPageSize());
|
|
|
+ return response;
|
|
|
+ }else {
|
|
|
+ return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -263,16 +291,20 @@ public class AdmSystemController {
|
|
|
ObjectNode info = JsonNodeFactory.instance.objectNode();
|
|
|
info.put("BuildID",admBuilding.getId());
|
|
|
info.put("BuildName",admBuilding.getLocalName());
|
|
|
+ buildingFloorInfoList.add(info);
|
|
|
|
|
|
List<AdmFloor> admFloorList = admSystem.getFloorList();
|
|
|
if(CollUtil.isNotEmpty(admFloorList)){
|
|
|
Map<String, AdmFloor> admFloorMap = CollUtil.fieldValueMap(admFloorList, "buildingId");
|
|
|
if(admFloorMap.containsKey(admBuilding.getId())){
|
|
|
- info.put("FloorID",admFloorMap.get(admBuilding.getId()).getId());
|
|
|
- info.put("FloorName",admFloorMap.get(admBuilding.getId()).getLocalName());
|
|
|
+ ObjectNode infobd = JsonNodeFactory.instance.objectNode();
|
|
|
+ infobd.put("BuildID",admBuilding.getId());
|
|
|
+ infobd.put("BuildName",admBuilding.getLocalName());
|
|
|
+ infobd.put("FloorID",admFloorMap.get(admBuilding.getId()).getId());
|
|
|
+ infobd.put("FloorName",admFloorMap.get(admBuilding.getId()).getLocalName());
|
|
|
+ buildingFloorInfoList.add(infobd);
|
|
|
}
|
|
|
}
|
|
|
- buildingFloorInfoList.add(info);
|
|
|
});
|
|
|
admSystem.setBuildingFloorInfoList(buildingFloorInfoList);
|
|
|
admSystem.setBuildingList(null);
|
|
@@ -305,9 +337,10 @@ public class AdmSystemController {
|
|
|
|
|
|
}else if("1".equals(floorId)){
|
|
|
//case three 明确建筑 不明确楼层
|
|
|
- admSystemList = queryNotSureObj(buildingId, rwdQueryCriteria);
|
|
|
- //处理通用返回结果
|
|
|
- dealRespose(syses, request);
|
|
|
+ syses = queryNotSureObj(buildingId, rwdQueryCriteria);
|
|
|
+ if(null != syses && CollUtil.isNotEmpty(syses.getContent())){
|
|
|
+ admSystemList = (List<AdmSystem>) syses.getContent();
|
|
|
+ }
|
|
|
}
|
|
|
if(CollUtil.isNotEmpty(admSystemList)){
|
|
|
//处理数据 BuildingFloorInfo
|
|
@@ -324,15 +357,9 @@ public class AdmSystemController {
|
|
|
criteria.putPOJO("relationFrom",relationFrom);
|
|
|
rwdQueryCriteria.setCriteria(criteria);
|
|
|
syses = service.doQuery(AdmContextUtil.toDmpContext(), rwdQueryCriteria, AdmSystem.class);
|
|
|
- if (CollUtil.isNotEmpty(syses.getContent())) {
|
|
|
- admSystemList = (List<AdmSystem>) syses.getContent();
|
|
|
- }
|
|
|
-
|
|
|
}else if("1".equals(buildingId)){
|
|
|
//case three 明确建筑 不明确楼层
|
|
|
- admSystemList = queryNotSureObj(buildingId, rwdQueryCriteria);
|
|
|
- //处理通用返回结果
|
|
|
- dealRespose(syses, request);
|
|
|
+ syses = queryNotSureObj(buildingId, rwdQueryCriteria);
|
|
|
}
|
|
|
if(CollUtil.isNotEmpty(admSystemList)){
|
|
|
//处理数据 BuildingFloorInfo
|
|
@@ -341,14 +368,12 @@ public class AdmSystemController {
|
|
|
}
|
|
|
}else{
|
|
|
//处理通用返回结果
|
|
|
- dealRespose(syses, request);
|
|
|
if(StrUtil.isNotEmpty(buildingId) && buildingId.equals("1")){
|
|
|
//case four 未明确建筑
|
|
|
- admSystemList = queryNotSureObj(null, rwdQueryCriteria);
|
|
|
+ syses = queryNotSureObj(null, rwdQueryCriteria);
|
|
|
if(CollUtil.isNotEmpty(admSystemList)){
|
|
|
//处理数据 BuildingFloorInfo
|
|
|
admSystemList = dealBdFlInfo(null,null, admSystemList);
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -364,19 +389,13 @@ public class AdmSystemController {
|
|
|
return syses;
|
|
|
}
|
|
|
|
|
|
- private void dealRespose(AdmResponse syses, AdmQueryCriteria request){
|
|
|
- syses.setPageSize(request.getPageSize());
|
|
|
- syses.setPageNumber(request.getPageNumber());
|
|
|
- syses.setResult(DmpResult.SUCCESS);
|
|
|
- syses.setTotal(0L);
|
|
|
- }
|
|
|
/**
|
|
|
* 查询不确定建筑/楼层的系统
|
|
|
* @param buildingId
|
|
|
* @param rwdQueryCriteria
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<AdmSystem> queryNotSureObj(String buildingId, QueryCriteria rwdQueryCriteria){
|
|
|
+ private AdmResponse queryNotSureObj(String buildingId, QueryCriteria rwdQueryCriteria){
|
|
|
RequestData requestData = new RequestData();
|
|
|
String classCode = rwdQueryCriteria.getCriteria().get("classCode").textValue();
|
|
|
if(StrUtil.isNotEmpty(classCode)){
|
|
@@ -388,12 +407,17 @@ public class AdmSystemController {
|
|
|
requestData.setObjType(AdmSystem.OBJ_TYPE);
|
|
|
requestData.setPage(rwdQueryCriteria.getPage());
|
|
|
requestData.setSize(rwdQueryCriteria.getSize());
|
|
|
- List result = DigitalObjectSimpleFacade.queryNotSureSystem(AdmContextUtil.toDmpContext().getGroupCode(), AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(),null, requestData);
|
|
|
- if(CollUtil.isNotEmpty(result)){
|
|
|
- List<AdmSystem> admSystemList = JSONUtil.toList(result.toString(), AdmSystem.class);
|
|
|
- return admSystemList;
|
|
|
+ Page<Map<String,Object>> result = DigitalObjectSimpleFacade.queryNotSureSystem(AdmContextUtil.toDmpContext().getGroupCode(), AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(),null, requestData);
|
|
|
+ if(CollUtil.isNotEmpty(result.getRecords())){
|
|
|
+ AdmResponse response = new AdmResponse();
|
|
|
+ response.setPageSize(Integer.parseInt(String.valueOf(result.getSize())));
|
|
|
+ response.setPageNumber(Integer.parseInt(String.valueOf(result.getCurrent())));
|
|
|
+ response.setResult(DmpResult.SUCCESS);
|
|
|
+ response.setContent(result.getRecords());
|
|
|
+ response.setTotal(result.getTotal());
|
|
|
+ return response;
|
|
|
}else{
|
|
|
- return null;
|
|
|
+ return AdmResponse.success();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -433,9 +457,11 @@ public class AdmSystemController {
|
|
|
buildingFloorInfo.put("BuildName",admBuilding.getLocalName());
|
|
|
}
|
|
|
if (null!=floors && CollUtil.isNotEmpty(floors.getContent())) {
|
|
|
+ ObjectNode buildingFloorInfoFl = JsonNodeFactory.instance.objectNode();
|
|
|
+ buildingFloorInfoFl = buildingFloorInfo.deepCopy();
|
|
|
AdmFloor floor = (AdmFloor) floors.getContent().get(0);
|
|
|
- buildingFloorInfo.put("FloorID",floor.getId());
|
|
|
- buildingFloorInfo.put("FloorName",floor.getLocalName());
|
|
|
+ buildingFloorInfoFl.put("FloorID",floor.getId());
|
|
|
+ buildingFloorInfoFl.put("FloorName",floor.getLocalName());
|
|
|
}
|
|
|
admSystemList.stream().forEach(admSystem -> {
|
|
|
admSystem.setBuildingFloorInfoList(Arrays.asList(buildingFloorInfo));
|