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)){