|
@@ -20,13 +20,19 @@ import com.persagy.proxy.common.entity.InstanceUrlParam;
|
|
|
import com.persagy.proxy.dictionary.model.AdmDefFuncIdGather;
|
|
|
import com.persagy.proxy.dictionary.model.AdmDict;
|
|
|
import com.persagy.proxy.dictionary.model.AdmObjectType;
|
|
|
-import com.persagy.proxy.object.model.AdmObjectInfo;
|
|
|
+import com.persagy.proxy.object.model.*;
|
|
|
+import com.persagy.proxy.object.service.IAdmEquipmentService;
|
|
|
+import com.persagy.proxy.object.service.IAdmShaftService;
|
|
|
+import com.persagy.proxy.object.service.IAdmSpaceService;
|
|
|
+import com.persagy.proxy.object.service.IAdmSystemService;
|
|
|
import lombok.EqualsAndHashCode;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -41,6 +47,18 @@ import java.util.stream.Collectors;
|
|
|
@EqualsAndHashCode(callSuper=true)
|
|
|
public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> implements IAdmDictService<T> {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IAdmEquipmentService equipmentService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IAdmSpaceService spaceService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IAdmSystemService systemService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IAdmShaftService shaftService;
|
|
|
+
|
|
|
/**
|
|
|
* 字典类型查询:所有设备类型、部件类型、系统类型、专业类型
|
|
|
* 查询类型:输入设备类型:equipment,输入部件类型:component,输入系统类型:system,输入专业类型:major,业务空间类型 space ,资产 property,
|
|
@@ -448,6 +466,8 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 转换排序字段
|
|
|
* @param request
|
|
@@ -707,4 +727,262 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询已交付信息点
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AdmResponse queryDictDeliveredInfos(InstanceUrlParam context,AdmDictDeliverieInfosRequest request, Class<T> clazz) {
|
|
|
+ String classCode = request.getClassCode();
|
|
|
+ String objType = request.getObjType();
|
|
|
+ //根据类型查询信息点
|
|
|
+ List<AdmObjectInfo> admObjectInfos = queryObjectInfoByType(context, objType, classCode, clazz);
|
|
|
+ if(CollUtil.isEmpty(admObjectInfos)){
|
|
|
+ log.info("此类型下无信息点:{}{}"+objType +","+classCode);
|
|
|
+ return AdmResponse.success(new ArrayList<>());
|
|
|
+ }
|
|
|
+ Map<String, AdmObjectInfo> admObjectInfoMap = admObjectInfos.stream().collect(Collectors.toMap(AdmObjectInfo::getCode, Function.identity(),(v1,v2) -> v2));
|
|
|
+
|
|
|
+ //初始化待交付的信息点,id,name,localId,localName 无论是否有值默认展示,兼容历史逻辑
|
|
|
+ List<AdmObjectInfo> deliveredInfos = new ArrayList<>();
|
|
|
+ List<String> deliveredCodes = new ArrayList<>();
|
|
|
+ initDeliveredInfos( admObjectInfoMap, deliveredInfos, deliveredCodes);
|
|
|
+
|
|
|
+ if("equipment".equals(objType)){
|
|
|
+ //查询已交付的设备信息点
|
|
|
+ return getAdmEquipDeliveredInfo(context,request, admObjectInfoMap,deliveredInfos,deliveredCodes);
|
|
|
+ }
|
|
|
+ if("space".equals(objType)){
|
|
|
+ //查询已交付的空间信息点
|
|
|
+ return getAdmSpaceDeliveredInfo(context,request, admObjectInfoMap,deliveredInfos,deliveredCodes);
|
|
|
+ }
|
|
|
+ if("system".equals(objType)){
|
|
|
+ //查询已交付的系统信息点
|
|
|
+ return getAdmSystemDeliveredInfo(context,request, admObjectInfoMap,deliveredInfos,deliveredCodes);
|
|
|
+ }
|
|
|
+ if("shaft".equals(objType)){
|
|
|
+ //查询已交付的竖井信息点
|
|
|
+ return getAdmShaftDeliveredInfo(context,request, admObjectInfoMap,deliveredInfos,deliveredCodes);
|
|
|
+ }
|
|
|
+ return AdmResponse.success(deliveredInfos);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组装通用对象查询条件
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private AdmQueryCriteria commbineObjectQueryCriteria(AdmDictDeliverieInfosRequest request){
|
|
|
+ //增加过滤条件
|
|
|
+ StringBuilder filters = new StringBuilder();
|
|
|
+ if(StringUtils.isNotEmpty(request.getBuildingId())){
|
|
|
+ if("isNull".equals(request.getBuildingId())){
|
|
|
+ filters.append("buildingId isNull;");
|
|
|
+ }else {
|
|
|
+ filters.append("buildingId = '"+ request.getBuildingId() +"';");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotEmpty(request.getFloorId())){
|
|
|
+ if("isNull".equals(request.getFloorId())){
|
|
|
+ filters.append("floorId isNull;");
|
|
|
+ }else{
|
|
|
+ filters.append("floorId = '"+ request.getFloorId() +"';");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotEmpty(request.getClassCode())){
|
|
|
+ filters.append("classCode = '"+ request.getClassCode() +"';");
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotEmpty(request.getObjType())){
|
|
|
+ filters.append("objType = '"+ request.getObjType() +"';");
|
|
|
+ }
|
|
|
+ AdmQueryCriteria equipQueryCriteria = new AdmQueryCriteria();
|
|
|
+ equipQueryCriteria.setFilters(filters.toString());
|
|
|
+ return equipQueryCriteria;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询已交付的设备信息点
|
|
|
+ * @param context
|
|
|
+ * @param request
|
|
|
+ */
|
|
|
+ private AdmResponse getAdmEquipDeliveredInfo(InstanceUrlParam context,AdmDictDeliverieInfosRequest request, Map<String, AdmObjectInfo> admObjectInfoMap,List<AdmObjectInfo> deliveredInfos,List<String> deliveredCodes){
|
|
|
+ AdmQueryCriteria admQueryCriteria = commbineObjectQueryCriteria(request);
|
|
|
+ AdmResponse response = equipmentService.query(admQueryCriteria);
|
|
|
+ List<AdmEquipment> content = (List<AdmEquipment>)response.getContent();
|
|
|
+ if(CollUtil.isEmpty(content)){
|
|
|
+ return AdmResponse.success(new ArrayList<>());
|
|
|
+ }
|
|
|
+ //统计有值的信息点
|
|
|
+ for (AdmEquipment admEquipment : content) {
|
|
|
+ Map<String, Object> infos = admEquipment.getInfos();
|
|
|
+ if(CollUtil.isEmpty(infos)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, Object> info : infos.entrySet()) {
|
|
|
+ Object value = info.getValue();
|
|
|
+ if(deliveredCodes.contains(info.getKey()) || value == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ AdmObjectInfo admObjectInfo = admObjectInfoMap.get(info.getKey());
|
|
|
+ if(admObjectInfo == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ deliveredCodes.add(info.getKey());
|
|
|
+ deliveredInfos.add(admObjectInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return AdmResponse.success(deliveredInfos);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询已交付的空间信息点
|
|
|
+ * @param context
|
|
|
+ * @param request
|
|
|
+ */
|
|
|
+ private AdmResponse getAdmSpaceDeliveredInfo(InstanceUrlParam context,AdmDictDeliverieInfosRequest request, Map<String, AdmObjectInfo> admObjectInfoMap,List<AdmObjectInfo> deliveredInfos,List<String> deliveredCodes){
|
|
|
+ AdmQueryCriteria admQueryCriteria = commbineObjectQueryCriteria(request);
|
|
|
+ AdmResponse response = spaceService.query(admQueryCriteria);
|
|
|
+ List<AdmSpace> content = (List<AdmSpace>)response.getContent();
|
|
|
+ if(CollUtil.isEmpty(content)){
|
|
|
+ return AdmResponse.success(new ArrayList<>());
|
|
|
+ }
|
|
|
+ //统计有值的信息点
|
|
|
+ for (AdmSpace admSpace : content) {
|
|
|
+ Map<String, Object> infos = admSpace.getInfos();
|
|
|
+ if(CollUtil.isEmpty(infos)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, Object> info : infos.entrySet()) {
|
|
|
+ Object value = info.getValue();
|
|
|
+ if(deliveredCodes.contains(info.getKey()) || value == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ AdmObjectInfo admObjectInfo = admObjectInfoMap.get(info.getKey());
|
|
|
+ if(admObjectInfo == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ deliveredCodes.add(info.getKey());
|
|
|
+ deliveredInfos.add(admObjectInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return AdmResponse.success(deliveredInfos);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询已交付的竖井信息点
|
|
|
+ * @param context
|
|
|
+ * @param request
|
|
|
+ */
|
|
|
+ private AdmResponse getAdmShaftDeliveredInfo(InstanceUrlParam context,AdmDictDeliverieInfosRequest request, Map<String, AdmObjectInfo> admObjectInfoMap,List<AdmObjectInfo> deliveredInfos,List<String> deliveredCodes){
|
|
|
+ AdmQueryCriteria admQueryCriteria = commbineObjectQueryCriteria(request);
|
|
|
+ AdmResponse response = shaftService.doQuery(context,admQueryCriteria, AdmShaft.class);
|
|
|
+ List<AdmShaft> content = (List<AdmShaft>)response.getContent();
|
|
|
+ if(CollUtil.isEmpty(content)){
|
|
|
+ return AdmResponse.success(new ArrayList<>());
|
|
|
+ }
|
|
|
+ //统计有值的信息点
|
|
|
+ for (AdmShaft admShaft : content) {
|
|
|
+ Map<String, Object> infos = admShaft.getInfos();
|
|
|
+ if(CollUtil.isEmpty(infos)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, Object> info : infos.entrySet()) {
|
|
|
+ Object value = info.getValue();
|
|
|
+ if(deliveredCodes.contains(info.getKey()) || value == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ AdmObjectInfo admObjectInfo = admObjectInfoMap.get(info.getKey());
|
|
|
+ if(admObjectInfo == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ deliveredCodes.add(info.getKey());
|
|
|
+ deliveredInfos.add(admObjectInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return AdmResponse.success(deliveredInfos);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询已交付的系统信息点
|
|
|
+ * @param context
|
|
|
+ * @param request
|
|
|
+ */
|
|
|
+ private AdmResponse getAdmSystemDeliveredInfo(InstanceUrlParam context,AdmDictDeliverieInfosRequest request, Map<String, AdmObjectInfo> admObjectInfoMap,List<AdmObjectInfo> deliveredInfos,List<String> deliveredCodes){
|
|
|
+ AdmQueryCriteria admQueryCriteria = commbineObjectQueryCriteria(request);
|
|
|
+ AdmResponse response = systemService.query(admQueryCriteria);
|
|
|
+ List<AdmSystem> content = (List<AdmSystem>)response.getContent();
|
|
|
+ if(CollUtil.isEmpty(content)){
|
|
|
+ return AdmResponse.success(new ArrayList<>());
|
|
|
+ }
|
|
|
+ //统计有值的信息点
|
|
|
+ for (AdmSystem admSystem : content) {
|
|
|
+ Map<String, Object> infos = admSystem.getInfos();
|
|
|
+ if(CollUtil.isEmpty(infos)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, Object> info : infos.entrySet()) {
|
|
|
+ Object value = info.getValue();
|
|
|
+ if(deliveredCodes.contains(info.getKey()) || value == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ AdmObjectInfo admObjectInfo = admObjectInfoMap.get(info.getKey());
|
|
|
+ if(admObjectInfo == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ deliveredCodes.add(info.getKey());
|
|
|
+ deliveredInfos.add(admObjectInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return AdmResponse.success(deliveredInfos);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化待交付的信息点
|
|
|
+ * @param admObjectInfoMap
|
|
|
+ * @param deliveredInfos
|
|
|
+ * @param deliveredCodes
|
|
|
+ */
|
|
|
+ private void initDeliveredInfos(Map<String, AdmObjectInfo> admObjectInfoMap,List<AdmObjectInfo> deliveredInfos,List<String> deliveredCodes){
|
|
|
+ deliveredCodes.add("id");
|
|
|
+ deliveredCodes.add("name");
|
|
|
+ deliveredCodes.add("localId");
|
|
|
+ deliveredCodes.add("localName");
|
|
|
+ //初始化待交付的信息点,id,name,localId,localName 默认展示
|
|
|
+ for (String code : deliveredCodes) {
|
|
|
+ AdmObjectInfo admObjectInfo = admObjectInfoMap.get(code);
|
|
|
+ if(admObjectInfo != null){
|
|
|
+ deliveredInfos.add(admObjectInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据类型查询信息点(包含信息点是否可见,是否可编辑,是否为采集信息点)
|
|
|
+ * @param context
|
|
|
+ * @param objType
|
|
|
+ * @param classCode
|
|
|
+ * @param clazz
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<AdmObjectInfo> queryObjectInfoByType(InstanceUrlParam context,String objType,String classCode,Class<T> clazz){
|
|
|
+ /* AdmQueryCriteria queryCriteria = new AdmQueryCriteria();
|
|
|
+ String filters ="classCode = '"+classCode+"'";
|
|
|
+ queryCriteria.setFilters(filters);
|
|
|
+ AdmResponse admResponse = doQueryObjectInfo(context, queryCriteria, AdmDictConstant.CLASS_CODE, clazz);*/
|
|
|
+ AdmDictQueryCriteria request = new AdmDictQueryCriteria();
|
|
|
+ request.setName(classCode);
|
|
|
+ AdmResponse admResponse = query(context, request, AdmDictConstant.CLASS_CODE, clazz);
|
|
|
+ return (List<AdmObjectInfo>) admResponse.getContent();
|
|
|
+ }
|
|
|
+
|
|
|
}
|