From 39f002df341c8d3553aa11d2a5c2f7f5dbe36d44 Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Tue, 9 Aug 2022 10:23:29 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E7=9F=A5=E8=AF=86=E5=BA=93-?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=BB=B4=E6=8A=A4=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E3=80=81=E7=BC=96=E8=BE=91=E5=AE=8C=E5=96=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CountryCardTempEOController.java | 2 +- .../service/ICountryCardTempEOService.java | 10 ++- .../impl/CountryCardTempEOServiceImpl.java | 66 +++++++++++++++---- 3 files changed, 61 insertions(+), 17 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/CountryCardTempEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/CountryCardTempEOController.java index ef2defe57..c90019735 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/CountryCardTempEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/CountryCardTempEOController.java @@ -97,7 +97,7 @@ public class CountryCardTempEOController extends JeroController edit(@Validated @RequestBody CountryCardTempEO countryCardTempEO) { countryCardTempEOService.editById(countryCardTempEO); return Result.OK("编辑成功!"); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/ICountryCardTempEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/ICountryCardTempEOService.java index 6881d81b4..2fafd7125 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/ICountryCardTempEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/ICountryCardTempEOService.java @@ -69,8 +69,14 @@ public interface ICountryCardTempEOService extends IService { void disposeData(List datas, String cut); /** - * 设置排序号 + * 设置编辑时排序号 * @param countryCardTempEO */ - void setOrderNum(CountryCardTempEO countryCardTempEO); + void setEditOrderNum(CountryCardTempEO countryCardTempEO); + + /** + * 设置新增时的排序号 + * @param countryCardTempEO + */ + void setAddOrderNum(CountryCardTempEO countryCardTempEO); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/CountryCardTempEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/CountryCardTempEOServiceImpl.java index e19bd2024..730e25e30 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/CountryCardTempEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/CountryCardTempEOServiceImpl.java @@ -44,15 +44,15 @@ public class CountryCardTempEOServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.orderByAsc("order_num"); List countryCardTempEOList = this.list(queryWrapper); - Integer orderNumData = countryCardTempEOList.stream().filter(e -> e.getId().equals(countryCardTempEO.getId())) - .map(e -> e.getOrderNum()).collect(Collectors.toList()).get(0); + if(CollectionUtils.isNotEmpty(countryCardTempEOList)){ + Integer orderNumData = countryCardTempEOList.stream().filter(e -> e.getId().equals(countryCardTempEO.getId())) + .map(e -> e.getOrderNum()).collect(Collectors.toList()).get(0); + queryWrapper.eq("order_num", inputOrderNum); + Integer orderNumCount = this.baseMapper.selectCount(queryWrapper); + //有重复展示顺序的,后面的号全+1 + if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) { + + //设置排序 + QueryWrapper orderNumQueryWrapper = new QueryWrapper<>(); + orderNumQueryWrapper.ge("order_num", inputOrderNum) + .orderByAsc("order_num"); + List geOrderNumList = this.list(orderNumQueryWrapper); + + //判断相邻的序号,去掉不邻的 + for (int i = 0; i < geOrderNumList.size(); i++) { + if (geOrderNumList.size() == 1) { + break; + } else if(i+1 >= geOrderNumList.size()){ + break; + }else if (geOrderNumList.get(i + 1).getOrderNum() - geOrderNumList.get(i).getOrderNum() > 1) { + int deleteStart = geOrderNumList.get(i + 1).getOrderNum(); + geOrderNumList = geOrderNumList.stream().filter(e -> e.getOrderNum() < deleteStart).collect(Collectors.toList()); + break; + } + } + + geOrderNumList.stream().forEach(e -> e.setOrderNum(e.getOrderNum() + 1)); + saveOrUpdateBatch(geOrderNumList); + } + } + } + } + + @Override + public void setAddOrderNum(CountryCardTempEO countryCardTempEO) { + Integer inputOrderNum = countryCardTempEO.getOrderNum(); + if(inputOrderNum != null) { + //查询展示顺序相同的 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByAsc("order_num"); queryWrapper.eq("order_num", inputOrderNum); Integer orderNumCount = this.baseMapper.selectCount(queryWrapper); //有重复展示顺序的,后面的号全+1 - if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) { - + if (orderNumCount > 0) { //设置排序 QueryWrapper orderNumQueryWrapper = new QueryWrapper<>(); orderNumQueryWrapper.ge("order_num", inputOrderNum) .orderByAsc("order_num"); - List geOrderNumList = this.list(orderNumQueryWrapper); + List geOrderNumList = list(orderNumQueryWrapper); //判断相邻的序号,去掉不邻的 for (int i = 0; i < geOrderNumList.size(); i++) { if (geOrderNumList.size() == 1) { break; - } else if(i+1 >= geOrderNumList.size()){ + }else if(i+1 >= geOrderNumList.size()){ break; - }else if (geOrderNumList.get(i + 1).getOrderNum() - geOrderNumList.get(i).getOrderNum() > 1) { + } else if (geOrderNumList.get(i + 1).getOrderNum() - geOrderNumList.get(i).getOrderNum() > 1) { int deleteStart = geOrderNumList.get(i + 1).getOrderNum(); geOrderNumList = geOrderNumList.stream().filter(e -> e.getOrderNum() < deleteStart).collect(Collectors.toList()); break;