From f9c1be97a7fc6cbd0e2183bfce387325f8a01ff9 Mon Sep 17 00:00:00 2001 From: gongyangfan <704210402@qq.com> Date: Tue, 19 Nov 2024 16:11:48 +0800 Subject: [PATCH] fix: Fix where enumeration subentries were deleted without updating --- .../cn/torna/service/EnumItemService.java | 30 +++++++++++++++++++ .../java/cn/torna/service/EnumService.java | 20 ++----------- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/server/server-service/src/main/java/cn/torna/service/EnumItemService.java b/server/server-service/src/main/java/cn/torna/service/EnumItemService.java index 98963422..b64764fc 100644 --- a/server/server-service/src/main/java/cn/torna/service/EnumItemService.java +++ b/server/server-service/src/main/java/cn/torna/service/EnumItemService.java @@ -1,8 +1,14 @@ package cn.torna.service; +import cn.torna.common.bean.Booleans; +import cn.torna.common.util.CopyUtil; import cn.torna.dao.entity.EnumItem; import cn.torna.dao.mapper.EnumItemMapper; +import cn.torna.service.dto.EnumItemDTO; +import com.gitee.fastmybatis.core.query.Query; import com.gitee.fastmybatis.core.support.BaseLambdaService; +import java.util.List; +import java.util.stream.Collectors; import org.springframework.stereotype.Service; /** @@ -19,4 +25,28 @@ public class EnumItemService extends BaseLambdaService .get(); } + public void replaceEnumItem(long enumId, List items) { + // 删除枚举子项 + forceDeleteEnumItem(enumId); + + // 批量保存 + this.saveBatch(enumId, items); + } + + public void forceDeleteEnumItem(long enumId) { + Query delQuery = this.query().eq(EnumItem::getEnumId, enumId); + this.forceDeleteByQuery(delQuery); + } + + private void saveBatch(long enumId, List itemDTOList) { + List enumItemList = itemDTOList.stream().map(enumItemDTO -> { + EnumItem enumItem = CopyUtil.copyBean(enumItemDTO, EnumItem::new); + enumItem.setEnumId(enumId); + enumItem.setIsDeleted(Booleans.FALSE); + return enumItem; + }).collect(Collectors.toList()); + + this.saveBatch(enumItemList); + } + } diff --git a/server/server-service/src/main/java/cn/torna/service/EnumService.java b/server/server-service/src/main/java/cn/torna/service/EnumService.java index e25b2140..591b0c63 100644 --- a/server/server-service/src/main/java/cn/torna/service/EnumService.java +++ b/server/server-service/src/main/java/cn/torna/service/EnumService.java @@ -67,11 +67,8 @@ public class EnumService { } private void updateItems(EnumInfo enumInfo, List items) { - if (items != null) { - for (EnumItemDTO item : items) { - item.setEnumId(enumInfo.getId()); - this.saveEnumItem(item); - } + if (!CollectionUtils.isEmpty(items)) { + enumItemService.replaceEnumItem(enumInfo.getId(), items); } } @@ -100,19 +97,6 @@ public class EnumService { return CopyUtil.copyList(itemList, EnumItemDTO::new); } - private void saveEnumItem(EnumItemDTO itemDTO) { - EnumItem enumItem = enumItemService.getByEnumIdAndName(itemDTO.getEnumId(), itemDTO.getName()); - if (enumItem == null) { - enumItem = CopyUtil.copyBean(itemDTO, EnumItem::new); - enumItem.setIsDeleted(Booleans.FALSE); - enumItemService.save(enumItem); - } else { - CopyUtil.copyPropertiesIgnoreNull(itemDTO, enumItem); - enumItem.setIsDeleted(Booleans.FALSE); - enumItemService.update(enumItem); - } - } - public EnumItem addEnumItem(EnumItemDTO itemDTO) { this.checkItemExist(itemDTO); EnumItem enumItem = CopyUtil.copyBean(itemDTO, EnumItem::new); -- Gitee