diff --git a/common/core/src/main/java/com/thing/common/core/utils/JacksonUtil.java b/common/core/src/main/java/com/thing/common/core/utils/JacksonUtil.java index a2e8419..329e53d 100644 --- a/common/core/src/main/java/com/thing/common/core/utils/JacksonUtil.java +++ b/common/core/src/main/java/com/thing/common/core/utils/JacksonUtil.java @@ -213,8 +213,14 @@ public class JacksonUtil { if (StringUtils.isBlank(actualValue)) { return false; } - if (!actualValue.contains(fieldValue)) { - return false; + if(StringUtils.equals("tenantCode",fieldName)){ + if (!actualValue.equals(fieldValue)) { + return false; + } + }else{ + if (!actualValue.contains(fieldValue)) { + return false; + } } } return true; diff --git a/modules/thing/src/main/java/com/thing/device/source/controller/IotThingSourceController.java b/modules/thing/src/main/java/com/thing/device/source/controller/IotThingSourceController.java index acd4939..05923f8 100644 --- a/modules/thing/src/main/java/com/thing/device/source/controller/IotThingSourceController.java +++ b/modules/thing/src/main/java/com/thing/device/source/controller/IotThingSourceController.java @@ -134,4 +134,12 @@ public class IotThingSourceController { return new Result>().ok(attrList); } + + @GetMapping("dragAndDrop") + @Operation(summary="字典类型集合") + public Result dragAndDrop(@RequestParam("id") Long id,@RequestParam("toId") Long toId,@RequestParam("sort")Long sort) { + iotThingSourceService.dragAndDrop(id, toId, sort); + return new Result<>(); + } + } diff --git a/modules/thing/src/main/java/com/thing/device/source/service/IotThingSourceService.java b/modules/thing/src/main/java/com/thing/device/source/service/IotThingSourceService.java index 0ddd580..61ecd88 100644 --- a/modules/thing/src/main/java/com/thing/device/source/service/IotThingSourceService.java +++ b/modules/thing/src/main/java/com/thing/device/source/service/IotThingSourceService.java @@ -41,4 +41,6 @@ public interface IotThingSourceService extends IBaseService sourceDetail(IotThingSourceReqDTO iotThingSourceDTO); List getAttrListByThingRelationDTONew(IotThingSourceGetAttrDTO iotThingSourceGetAttrDTO); + + void dragAndDrop(Long id,Long toId,Long sort); } diff --git a/modules/thing/src/main/java/com/thing/device/source/service/impl/IotThingSourceServiceImpl.java b/modules/thing/src/main/java/com/thing/device/source/service/impl/IotThingSourceServiceImpl.java index f8fcb92..6850859 100644 --- a/modules/thing/src/main/java/com/thing/device/source/service/impl/IotThingSourceServiceImpl.java +++ b/modules/thing/src/main/java/com/thing/device/source/service/impl/IotThingSourceServiceImpl.java @@ -3,6 +3,7 @@ package com.thing.device.source.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.map.MapUtil; import com.alibaba.fastjson.JSON; +import com.google.common.collect.Lists; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import com.thing.common.core.enumeration.AttributeTypeEnum; @@ -31,7 +32,6 @@ import com.thing.thing.relation.detail.dto.ThingTreeDTO; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,6 +51,10 @@ public class IotThingSourceServiceImpl extends BaseServiceImpl params) { QueryWrapper queryWrapper = new QueryWrapper(); @@ -427,10 +431,6 @@ public class IotThingSourceServiceImpl extends BaseServiceImpl getAttrListByThingRelationDTONew(IotThingSourceGetAttrDTO iotThingSourceGetAttrDTO) { if (CollectionUtil.isEmpty(iotThingSourceGetAttrDTO.getIotThingSourceRelationDTOList())) { @@ -483,6 +483,52 @@ public class IotThingSourceServiceImpl extends BaseServiceImpl sourceOtherEntities = mapper.selectListByQuery(QueryWrapper.create() + .eq(IotThingSourceEntity::getFromId, sourceEntity.getFromId()) + .eq(IotThingSourceEntity::getConfigType, sourceEntity.getConfigType()) + .ne(IotThingSourceEntity::getId, id) + ); + if(CollectionUtils.isEmpty(sourceOtherEntities)){ + return; + } + //若是大于当前目前序号,则更新当前序号之前的排序 + AtomicLong aLong = new AtomicLong(0); + List resList = Lists.newArrayList(); + if(toSourceEntity.getSort()<=sort){ + sourceOtherEntities.stream().filter(s -> s.getSort() < sort) + .sorted(Comparator.comparing(IotThingSourceEntity::getSort)) + .forEach(s -> s.setSort(aLong.incrementAndGet())); + sourceEntity.setSort(aLong.incrementAndGet()); + mapper.update(sourceEntity); + sourceOtherEntities.stream() + .sorted(Comparator.comparing(IotThingSourceEntity::getSort)) + .filter(s -> s.getSort() >= sort).forEach(s -> s.setSort(aLong.incrementAndGet())); + }else{ + List list = sourceOtherEntities.stream().filter(s -> s.getSort() <= sort).toList(); + list.stream().sorted(Comparator.comparing(IotThingSourceEntity::getSort)) + .forEach(s -> { + s.setSort(aLong.incrementAndGet()); + }); + resList.addAll(list); + sourceEntity.setSort(aLong.incrementAndGet()); + resList.add(sourceEntity); + List list1 = sourceOtherEntities.stream().filter(s -> s.getSort() > sort).toList(); + list1.stream().sorted(Comparator.comparing(IotThingSourceEntity::getSort)) + .forEach(s -> s.setSort(aLong.incrementAndGet())); + resList.addAll(list1); + } + this.updateBatch(resList); + } + /** * 自定义函数去重 * diff --git a/modules/thing/src/main/java/com/thing/thing/dict/controller/IotThingDictController.java b/modules/thing/src/main/java/com/thing/thing/dict/controller/IotThingDictController.java index 19fa3b1..7307644 100644 --- a/modules/thing/src/main/java/com/thing/thing/dict/controller/IotThingDictController.java +++ b/modules/thing/src/main/java/com/thing/thing/dict/controller/IotThingDictController.java @@ -168,9 +168,9 @@ public class IotThingDictController { } - @GetMapping("dragAndDrop/{id}/{toId}/{sort}") + @GetMapping("dragAndDrop") @Operation(summary="字典类型集合") - public Result dragAndDrop(@PathVariable("id") Long id,@PathVariable("toId") Long toId,@PathVariable("sort")Long sort) { + public Result dragAndDrop(@RequestParam("id") Long id,@RequestParam("toId") Long toId,@RequestParam("sort")Long sort) { service.dragAndDrop(id, toId, sort); return new Result<>(); } 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 f9b6565..1a72938 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 @@ -208,6 +208,8 @@ public class IotThingDictServiceImpl extends BaseServiceImpl s.getSort() < sort) .sorted(Comparator.comparing(IotThingDictEntity::getSort)) - .forEach(s -> { - s.setSort(aLong.incrementAndGet()); - mapper.update(s); - }); + .forEach(s -> s.setSort(aLong.incrementAndGet())); iotThingDictEntity.setSort(aLong.incrementAndGet()); mapper.update(iotThingDictEntity); iotThingDictEntities.stream() .sorted(Comparator.comparing(IotThingDictEntity::getSort)) - .filter(s -> s.getSort() >= sort).forEach(s -> { - s.setSort(aLong.incrementAndGet()); - mapper.update(s); - }); + .filter(s -> s.getSort() >= sort).forEach(s -> s.setSort(aLong.incrementAndGet())); }else{ List list = iotThingDictEntities.stream().filter(s -> s.getSort() <= sort).toList(); list.stream().sorted(Comparator.comparing(IotThingDictEntity::getSort)) @@ -427,9 +423,7 @@ public class IotThingDictServiceImpl extends BaseServiceImpl list1 = iotThingDictEntities.stream().filter(s -> s.getSort() > sort).toList(); list1.stream().sorted(Comparator.comparing(IotThingDictEntity::getSort)) - .forEach(s -> { - s.setSort(aLong.incrementAndGet()); - }); + .forEach(s -> s.setSort(aLong.incrementAndGet())); resList.addAll(list1); } this.updateBatch(resList); diff --git a/modules/thing/src/main/java/com/thing/thing/dictRelation/service/impl/IotThingDictRelationServiceImpl.java b/modules/thing/src/main/java/com/thing/thing/dictRelation/service/impl/IotThingDictRelationServiceImpl.java index f8eb1a3..e15b505 100644 --- a/modules/thing/src/main/java/com/thing/thing/dictRelation/service/impl/IotThingDictRelationServiceImpl.java +++ b/modules/thing/src/main/java/com/thing/thing/dictRelation/service/impl/IotThingDictRelationServiceImpl.java @@ -168,17 +168,22 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl entityServiceList = thingEntityService.findList(null, null, null, null, tenantCode, null, null, null, null, templateMark); + entityIds = entityServiceList.stream().map(jsonObject -> jsonObject.get(CacheNameEnum.EntityField.THING_ENTITY_ID.getField()).asText()).collect(Collectors.joining(",")); + } if(StringUtils.isBlank(orderField)){ orderField = CacheNameEnum.DictField.THING_DICT_RELATION_SORT.getField(); } String finalOrderField = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, orderField);; Comparator comparator = CompareUtils.getComparator(order, finalOrderField); //封装参数 - List> pairs = buildParam(groupName,templateMark,dataType,tenantCode); + List> pairs = buildParam(groupName,templateMark,dataType); + String finalEntityIds = entityIds; return dictRelationList.stream() .filter(jsonObject -> { boolean passesFilter = JacksonUtil.filter(jsonObject, pairs); - if (passesFilter && StringUtils.isNotBlank(entityIds)) { - String[] entityIdList = entityIds.split(","); + if (passesFilter && StringUtils.isNotBlank(finalEntityIds)) { + String[] entityIdList = finalEntityIds.split(","); long entityId = jsonObject.get(CacheNameEnum.DictField.THING_DICT_ENTITY_ID.getField()).asLong(); passesFilter = ArrayUtils.contains(entityIdList, String.valueOf(entityId)); } @@ -562,7 +567,7 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl> buildParam(String groupName,String templateMark,String dataType,Long tenantCode){ + private List> buildParam(String groupName,String templateMark,String dataType){ List> filterList = new ArrayList<>(); if (StringUtils.isNotBlank(groupName)) { filterList.add(Pair.of(CacheNameEnum.DictField.THING_DICT_GROUP_NAME.getField(), groupName)); @@ -575,9 +580,9 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl comparator = CompareUtils.getComparator(order, finalOrderField); return thingList.stream().filter(jsonObject -> JacksonUtil.filter(jsonObject, pairs)) - .filter(jsonObject -> JacksonUtil.filterOr(jsonObject, name,CacheNameEnum.EntityField.THING_ENTITY_CODE.getField(),CacheNameEnum.EntityField.THING_ENTITY_NAME.getField())) + .filter(jsonObject -> JacksonUtil.filterOr(jsonObject, name,CacheNameEnum.EntityField.THING_ENTITY_CODE.getField() + ,CacheNameEnum.EntityField.THING_ENTITY_NAME.getField())) .sorted(comparator.thenComparing(obj -> obj.get(CacheNameEnum.EntityField.THING_ENTITY_ID.getField()).asLong())).toList(); }