From b95006369f80c8669bb9810dccc169a43ffd1554 Mon Sep 17 00:00:00 2001 From: lishuai Date: Thu, 19 Dec 2024 18:33:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E7=BA=A7apibug=202024=E5=B9=B412?= =?UTF-8?q?=E6=9C=8819=E6=97=A514:14:26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IotThingApiServiceImpl.java | 41 ++++++++++++----- .../service/impl/IotThingDictServiceImpl.java | 22 +++++----- .../impl/IotThingDictRelationServiceImpl.java | 44 ++++++++++++------- 3 files changed, 69 insertions(+), 38 deletions(-) diff --git a/modules/thing/src/main/java/com/thing/thing/api/service/impl/IotThingApiServiceImpl.java b/modules/thing/src/main/java/com/thing/thing/api/service/impl/IotThingApiServiceImpl.java index eb0a47e..ce72f85 100644 --- a/modules/thing/src/main/java/com/thing/thing/api/service/impl/IotThingApiServiceImpl.java +++ b/modules/thing/src/main/java/com/thing/thing/api/service/impl/IotThingApiServiceImpl.java @@ -424,7 +424,18 @@ public class IotThingApiServiceImpl extends BaseServiceImpl params = new HashMap<>(); +// params.put("id", id); +// params.put("reqParams", dto.getReqParams()); +// Map stringObjectMap1 = telemetryById(params); +// Map stringObjectMap = encapsulationQuery(dto.getThingCondition(), dto.getAttrCondition(), dto.getTimeCondition(), dto.getReqParams(), null, null, dto.getSort(), tenantCode); + + return encapsulationQuery(dto.getThingCondition(), dto.getAttrCondition(), dto.getTimeCondition(), dto.getReqParams(), null, null, dto.getSort(), tenantCode); } @Override @@ -489,19 +500,25 @@ public class IotThingApiServiceImpl extends BaseServiceImpl entityResultMap = new HashMap<>(); + Map entityInfoMap = new HashMap<>(); + ApiEntityAttrDTO attrsEntity = ApiEntityAttrDTO.createFromJson(attrCondition); + String type = attrsEntity.getType(); //过滤条件的封装 if (StringUtils.isNotBlank(reqParams)) { reqParams = packageQueryFilterParams(reqParams); Map conditionMap = BeanUtil.jsonConvertMap(reqParams); - // thingCondition = (String)conditionMap.get("entitys"); - attrCondition = (String) conditionMap.get("attrs"); + if (StringUtils.equalsAnyIgnoreCase(type, ApiSeparateAttr.SEPARATE.getValue())) { + attrCondition = conditionMap.get("splitAttrs").toString(); + }else{ + attrCondition = conditionMap.get("attrs").toString(); + } //timeCondition = (String)conditionMap.get("times");TODO 暂时时间没有过滤 } - //属性查询类型 - Map entityResultMap = new HashMap<>(); - Map entityInfoMap = new HashMap<>(); - ApiEntityAttrDTO attrsEntity = ApiEntityAttrDTO.createFromJson(attrCondition); - String type = attrsEntity.getType(); + + //查询物和属性的参数 Map> paramMap = Maps.newHashMap(); //分属性 @@ -563,7 +580,7 @@ public class IotThingApiServiceImpl extends BaseServiceImpl collect = dictRelationDTOS.stream() .collect(Collectors.toMap(IotThingDictRelationParamDTO::getCode, s-> ConvertUtils.sourceToTarget(s,IotThingDictRelationDTO.class) - ,(existing, replacement) -> existing)); + ,(existing, replacement) -> existing)); optional.get().setAttrs(collect); entityInfoMap.put(entityCode, optional.get()); } @@ -665,8 +682,8 @@ public class IotThingApiServiceImpl extends BaseServiceImpl> dictRelationDTOList = thingManageContextService.findDictRelationAllByIds(attrIds); Collection dictCodes = dictRelationDTOList.orElseGet(Collections::emptyList).stream().map(IotThingDictRelationDTO::getCode).toList(); paramMap.put(code, dictCodes); - // Map collect = dictRelationDTOList.orElseGet(Collections::emptyList).stream().collect(Collectors.toMap(IotThingDictRelationDTO::getCode, Function.identity(),(existing, replacement) -> existing)); - // optional.get().setAttrs(collect); + // Map collect = dictRelationDTOList.orElseGet(Collections::emptyList).stream().collect(Collectors.toMap(IotThingDictRelationDTO::getCode, Function.identity(),(existing, replacement) -> existing)); + // optional.get().setAttrs(collect); entityInfoMap.put(code, optional.get()); } }); @@ -681,7 +698,7 @@ public class IotThingApiServiceImpl extends BaseServiceImpl dictCodes = dictRelationDTOS.stream().map(IotThingDictRelationDTO::getCode).toList(); paramMap.put(code, dictCodes); //Map collect = dictRelationDTOS.stream().collect(Collectors.toMap(IotThingDictRelationDTO::getCode, Function.identity())); - // optional.get().setAttrs(collect); + // optional.get().setAttrs(collect); entityInfoMap.put(code, optional.get()); } }); diff --git a/modules/thing/src/main/java/com/thing/thing/dict/service/impl/IotThingDictServiceImpl.java b/modules/thing/src/main/java/com/thing/thing/dict/service/impl/IotThingDictServiceImpl.java index 7685556..31e6db4 100644 --- a/modules/thing/src/main/java/com/thing/thing/dict/service/impl/IotThingDictServiceImpl.java +++ b/modules/thing/src/main/java/com/thing/thing/dict/service/impl/IotThingDictServiceImpl.java @@ -198,7 +198,7 @@ public class IotThingDictServiceImpl extends BaseServiceImpl iotThingDictDTOList.stream().noneMatch(iotThingDictDTO -> StringUtils.equals(groupName,iotThingDictDTO.getGroupName()) - && StringUtils.equals(d.getCode(),iotThingDictDTO.getCode()) - && StringUtils.equals(d.getDataType(),iotThingDictDTO.getDataType()) + && StringUtils.equals(d.getCode(),iotThingDictDTO.getCode()) + && StringUtils.equals(d.getDataType(),iotThingDictDTO.getDataType()) )) //构建字典对象 .peek(e -> { @@ -421,14 +421,14 @@ public class IotThingDictServiceImpl extends BaseServiceImpl findList(String orderField,String order, - String entityName,String groupName, String entityIds,String name, - String templateMark,String dataType,Long tenantCode) + String entityName,String groupName, String entityIds,String name, + String templateMark,String dataType,Long tenantCode) { List dictRelationList = cache.getTopicMap(CacheNameEnum.THING_DICT_RELATION); if(CollectionUtils.isEmpty(dictRelationList)){ - List dictRelationDTOList = mapper.selectListByQueryAs(getWrapper(orderField,order,null,null,null,null, - null,null,null), - IotThingDictRelationDTO.class); - if(CollectionUtils.isEmpty(dictRelationDTOList)) { - return new ArrayList<>(); - } + List dictRelationDTOList = mapper.selectListByQueryAs(getWrapper(orderField,order,null,null,null,null, + null,null,null), + IotThingDictRelationDTO.class); + if(CollectionUtils.isEmpty(dictRelationDTOList)) { + return new ArrayList<>(); + } dictRelationList = JsonConverter.convertToJsonObjectListObjectNode(dictRelationDTOList); //更新缓存 CacheInit.dictRelationMap(dictRelationList,cache); @@ -536,10 +537,23 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl iotThingDictRelationEntities = ConvertUtils.sourceToTarget(list, IotThingDictRelationEntity.class); - mapper.insertBatch(iotThingDictRelationEntities); - iotThingDictRelationEntities.forEach(entity -> cache.updateAccurateKeyEntity(CacheNameEnum.THING_DICT_RELATION, + List iotThingDictRelationEntities = mapper.selectListByQuery(QueryWrapper.create().eq(IotThingDictRelationEntity::getEntityId, optional.get().getId()) + .in(IotThingDictRelationEntity::getCode, codes)); + Long maxSort = 0L; + if(CollectionUtils.isNotEmpty(iotThingDictRelationEntities)){ + list = list.stream().filter(e -> iotThingDictRelationEntities.stream().noneMatch(d -> StringUtils.equals(d.getCode(), e.getCode()))).toList(); + maxSort = iotThingDictRelationEntities.stream().mapToLong(IotThingDictRelationEntity::getSort).max().getAsLong(); + } + AtomicLong sort = new AtomicLong(maxSort); + List insertList = ConvertUtils.sourceToTarget(list, IotThingDictRelationEntity.class); + insertList.forEach(e -> { + e.setSort(sort.incrementAndGet()); + e.setEntityId(optional.get().getId()); + e.setTemplateMark(optional.get().getTemplateMark()); + }); + mapper.insertBatch(insertList); + insertList.forEach(entity -> cache.updateAccurateKeyEntity(CacheNameEnum.THING_DICT_RELATION, entity.getTenantCode()+CacheInit.KEY+entity.getEntityCode()+CacheInit.KEY+entity.getCode()+CacheInit.KEY+entity.getId(),ConvertUtils.sourceToTarget(entity, IotThingDictRelationDTO.class))); } } @@ -573,7 +587,7 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl dictRelationEntities = mapper.selectListByQuery(in); @@ -588,9 +602,9 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl relationDTOList.stream().anyMatch(r-> - StringUtils.equals(r.getCode(),s.getCode()) - && StringUtils.equals(r.getDataType(),s.getDataType()) - && Objects.equals(r.getEntityId(),s.getEntityId()) + StringUtils.equals(r.getCode(),s.getCode()) + && StringUtils.equals(r.getDataType(),s.getDataType()) + && Objects.equals(r.getEntityId(),s.getEntityId()) )); } if(CollectionUtils.isNotEmpty(insertList)){