From e7a9c716f056e18e21ee9034491211ec5e38611e Mon Sep 17 00:00:00 2001 From: xiejunyu Date: Tue, 24 May 2022 20:02:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E9=A1=B9+=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F+=E6=A0=87=E7=AD=BE=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=92=E5=BA=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../4.数据库变更记录/解鋆宇sql变更记录.sql | 4 ++ .../4.数据库变更记录/谢鋆宇sql变更记录.sql | 0 .../system/controller/SysDictController.java | 3 + .../jero/modules/system/entity/SysDict.java | 3 + .../system/mapper/xml/SysDictMapper.xml | 4 +- .../system/service/ISysDictService.java | 4 ++ .../service/impl/SysDictServiceImpl.java | 72 +++++++++++++++++++ .../tag/mapper/OnlCgformAreaMapper.java | 2 +- .../tag/mapper/xml/OnlCgformTagMapper.xml | 2 +- .../impl/OnlCgformAreaServiceImpl.java | 58 +++++++++++++++ .../service/impl/OnlCgformTagServiceImpl.java | 69 ++++++++++++++++++ 11 files changed, 217 insertions(+), 4 deletions(-) create mode 100644 SynologyDrive/4.数据库变更记录/解鋆宇sql变更记录.sql delete mode 100644 SynologyDrive/4.数据库变更记录/谢鋆宇sql变更记录.sql diff --git a/SynologyDrive/4.数据库变更记录/解鋆宇sql变更记录.sql b/SynologyDrive/4.数据库变更记录/解鋆宇sql变更记录.sql new file mode 100644 index 000000000..5729c7675 --- /dev/null +++ b/SynologyDrive/4.数据库变更记录/解鋆宇sql变更记录.sql @@ -0,0 +1,4 @@ +# 2022-5-24 +#标签内容增加排序字段 +ALTER TABLE `sys_dict` +ADD COLUMN `order_num` int(11) NOT NULL COMMENT '排序'; diff --git a/SynologyDrive/4.数据库变更记录/谢鋆宇sql变更记录.sql b/SynologyDrive/4.数据库变更记录/谢鋆宇sql变更记录.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java index 5b3375a33..064aa382c 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java @@ -387,6 +387,8 @@ public class SysDictController { @RequiresPermissions("dict:add") public Result add(@RequestBody SysDict sysDict) { Result result = new Result(); + + sysDictService.setAddOrdderNum(sysDict); //校验--不能重复数据 QueryWrapper queryWrapper = new QueryWrapper<>(); //查询同一模块下,同名数据 @@ -434,6 +436,7 @@ public class SysDictController { @RequiresPermissions("dict:edit") public Result edit(@RequestBody SysDict sysDict) { Result result = new Result(); + sysDictService.setEditOrdderNum(sysDict); SysDict sysdict = sysDictService.getById(sysDict.getId()); if (sysdict == null) { result.error500("未找到对应实体"); diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java index 798fc8cff..09cd55f04 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java @@ -125,4 +125,7 @@ public class SysDict implements Serializable { @Dict(dictTable = "sys_dict_item", dicText = "en_name", dicCode ="en_name") @ApiModelProperty(value = "属性类型英文名") private java.lang.String attributeTypeEnName; + + /**排序*/ + private java.lang.Integer orderNum; } \ No newline at end of file diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysDictMapper.xml b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysDictMapper.xml index 7d9a4f9e2..6dd95fb32 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysDictMapper.xml +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysDictMapper.xml @@ -135,7 +135,7 @@ diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java index c53063576..3deed8b29 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java @@ -169,4 +169,8 @@ public interface ISysDictService extends IService { String queryDictItemByName(String code, String itemName, String cut); String queryDictItemByValue(String code, String itemName, String cut); + + void setAddOrdderNum(SysDict sysDict); + + void setEditOrdderNum(SysDict sysDict); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java index cfa5b7e7b..ee647db3f 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java @@ -447,4 +447,76 @@ public class SysDictServiceImpl extends ServiceImpl impl return dictItemValue; } + + @Override + public void setAddOrdderNum(SysDict sysDict) { + Integer inputOrderNum = sysDict.getOrderNum(); + if(inputOrderNum != null) { + //查询展示顺序相同的 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0) + .orderByAsc("order_num"); + queryWrapper.eq("order_num", inputOrderNum); + Integer orderNumCount = sysDictMapper.selectCount(queryWrapper); + if (orderNumCount > 0) {//有重复展示顺序的,后面的号全+1 + //设置排序 + QueryWrapper orderNumQueryWrapper = new QueryWrapper<>(); + orderNumQueryWrapper.ge("order_num", inputOrderNum) + .eq("del_flag", CommonConstant.DEL_FLAG_0) + .orderByAsc("order_num"); + List geOrderNumList = list(orderNumQueryWrapper); + + //判断相邻的序号,去掉不邻的 + for (int i = 0; i < geOrderNumList.size(); i++) { + if (geOrderNumList.size() == 1) { + 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 setEditOrdderNum(SysDict sysDict) { + Integer inputOrderNum = sysDict.getOrderNum(); + if(inputOrderNum != null) { + //查询展示顺序相同的 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0) + .orderByAsc("order_num"); + Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysDict.getId())) + .map(e -> e.getOrderNum()).collect(Collectors.toList()).get(0); + queryWrapper.eq("order_num", inputOrderNum); + Integer orderNumCount = sysDictMapper.selectCount(queryWrapper); + if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1 + //设置排序 + QueryWrapper orderNumQueryWrapper = new QueryWrapper<>(); + orderNumQueryWrapper.ge("order_num", inputOrderNum) + .eq("del_flag", CommonConstant.DEL_FLAG_0) + .orderByAsc("order_num"); + List geOrderNumList = list(orderNumQueryWrapper); + + //判断相邻的序号,去掉不邻的 + for (int i = 0; i < geOrderNumList.size(); i++) { + if (geOrderNumList.size() == 1) { + 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); + } + } + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/mapper/OnlCgformAreaMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/mapper/OnlCgformAreaMapper.java index a2ce6e0fc..5ac7cbe61 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/mapper/OnlCgformAreaMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/mapper/OnlCgformAreaMapper.java @@ -25,6 +25,6 @@ public interface OnlCgformAreaMapper extends BaseMapper { "a.is_model,i.item_text as is_model_name,i.en_name as is_model_en_name,a.show_area,a.sort,a.en_name\n" + "from onl_cgform_area as a left join sys_dict_item as i \n" + "on a.is_model=i.item_value \n" + - "where i.dict_id=1493096744092102657 order by a.create_time desc") + "where i.dict_id=1493096744092102657 order by a.sort desc") IPage queryPageList(IPage page, @Param("params") Map params); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/mapper/xml/OnlCgformTagMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/mapper/xml/OnlCgformTagMapper.xml index 71fa8a590..83e7e67e5 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/mapper/xml/OnlCgformTagMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/mapper/xml/OnlCgformTagMapper.xml @@ -70,6 +70,6 @@ and f.show_area like concat('%',#{params.showArea},'%') - order by f.create_time desc + order by f.order_num desc \ No newline at end of file diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/service/impl/OnlCgformAreaServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/service/impl/OnlCgformAreaServiceImpl.java index 749239246..175831514 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/service/impl/OnlCgformAreaServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/service/impl/OnlCgformAreaServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @Description: 区域管理表 @@ -43,6 +44,34 @@ public class OnlCgformAreaServiceImpl extends ServiceImpl queryWrapper= new QueryWrapper<>(); + queryWrapper.orderByAsc("sort"); + queryWrapper.eq("sort", inputSort); + Integer orderNumCount = onlCgformAreaMapper.selectCount(queryWrapper); + if(orderNumCount > 0) {//有重复展示顺序的,后面的号全+1 + //设置排序 + QueryWrapper orderNumQueryWrapper = new QueryWrapper<>(); + orderNumQueryWrapper.ge("sort", inputSort) + .orderByAsc("sort"); + List geSortList = list(orderNumQueryWrapper); + + //判断相邻的序号,去掉不邻的 + for(int i = 0 ; i <= geSortList.size() ; i++) { + if (geSortList.size()==1){ + break; + }else if (geSortList.get(i + 1).getSort() - geSortList.get(i).getSort() > 1) { + int deleteStart = geSortList.get(i+1).getSort(); + geSortList = geSortList.stream().filter(e->e.getSort() < deleteStart).collect(Collectors.toList()); + break; + } + } + + geSortList.stream().forEach(e -> e.setSort(e.getSort() + 1)); + saveOrUpdateBatch(geSortList); + } + Date now = new Date(); onlCgformArea.setCreateTime(now); onlCgformArea.setUpdateTime(now); @@ -71,6 +100,35 @@ public class OnlCgformAreaServiceImpl extends ServiceImpl queryWrapper= new QueryWrapper<>(); + queryWrapper.orderByAsc("sort"); + Integer orderNumData = list(queryWrapper).stream().filter(e->e.getId().equals(onlCgformArea.getId())) + .map(e -> e.getSort()).collect(Collectors.toList()).get(0); + queryWrapper.eq("sort", inputSort); + Integer orderNumCount = onlCgformAreaMapper.selectCount(queryWrapper); + if(orderNumCount > 0 && !orderNumData.equals(inputSort)) {//有重复展示顺序的,后面的号全+1 + //设置排序 + QueryWrapper orderNumQueryWrapper = new QueryWrapper<>(); + orderNumQueryWrapper.ge("sort", inputSort) + .orderByAsc("sort"); + List geSortList = list(orderNumQueryWrapper); + + //判断相邻的序号,去掉不邻的 + for(int i = 0 ; i <= geSortList.size() ; i++) { + if (geSortList.size()==1){ + break; + }else if (geSortList.get(i + 1).getSort() - geSortList.get(i).getSort() > 1) { + int deleteStart = geSortList.get(i+1).getSort(); + geSortList = geSortList.stream().filter(e->e.getSort() < deleteStart).collect(Collectors.toList()); + break; + } + } + + geSortList.stream().forEach(e -> e.setSort(e.getSort() + 1)); + saveOrUpdateBatch(geSortList); + } Date now = new Date(); onlCgformArea.setUpdateTime(now); saveOrUpdate(onlCgformArea); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/service/impl/OnlCgformTagServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/service/impl/OnlCgformTagServiceImpl.java index 303c81a94..21d1de081 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/service/impl/OnlCgformTagServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/tag/service/impl/OnlCgformTagServiceImpl.java @@ -2,6 +2,7 @@ package com.jero.modules.tag.service.impl; import cn.hutool.core.lang.Validator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -28,6 +29,7 @@ import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @Description: 标签管理 @@ -57,11 +59,43 @@ public class OnlCgformTagServiceImpl extends ServiceImpl 0) { onlCgformTag.setIsDelete(CommonConstant.DEL_FLAG_0); } else { + Integer inputOrderNum = onlCgformTag.getOrderNum(); + //查询展示顺序相同的 + QueryWrapper queryWrapper= new QueryWrapper<>(); + queryWrapper.eq("is_model",onlCgformTag.getIsModel()) + .eq("is_delete",CommonConstant.DEL_FLAG_0) + .orderByAsc("order_num"); + queryWrapper.eq("order_num", inputOrderNum); + Integer orderNumCount = onlCgformTagMapper.selectCount(queryWrapper); + if(orderNumCount > 0) {//有重复展示顺序的,后面的号全+1 + //设置排序 + QueryWrapper orderNumQueryWrapper = new QueryWrapper<>(); + orderNumQueryWrapper.ge("order_num", inputOrderNum) + .eq("is_model", onlCgformTag.getIsModel()) + .eq("is_delete", CommonConstant.DEL_FLAG_0) + .orderByAsc("order_num"); + List geOrderNumList = list(orderNumQueryWrapper); + + //判断相邻的序号,去掉不邻的 + for(int i = 0 ; i < geOrderNumList.size() ; i++) { + if (geOrderNumList.size() == 1){ + 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); + } //处理DBLength为null的情况,默认为100 if (onlCgformTag.getDbLength() == null){ onlCgformTag.setDbLength(100); @@ -112,6 +146,7 @@ public class OnlCgformTagServiceImpl extends ServiceImpl queryWrapper= new QueryWrapper<>(); + queryWrapper.eq("is_model",onlCgformTag.getIsModel()) + .eq("is_delete",CommonConstant.DEL_FLAG_0) + .orderByAsc("order_num"); + Integer orderNumData = list(queryWrapper).stream().filter(e->e.getId().equals(onlCgformTag.getId())) + .map(e -> e.getOrderNum()).collect(Collectors.toList()).get(0); + queryWrapper.eq("order_num", inputOrderNum); + Integer orderNumCount = onlCgformTagMapper.selectCount(queryWrapper); + if(orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1 + //设置排序 + QueryWrapper orderNumQueryWrapper = new QueryWrapper<>(); + orderNumQueryWrapper.ge("order_num", inputOrderNum) + .eq("is_model", onlCgformTag.getIsModel()) + .eq("is_delete", CommonConstant.DEL_FLAG_0) + .orderByAsc("order_num"); + List geOrderNumList = list(orderNumQueryWrapper); + + //判断相邻的序号,去掉不邻的 + for(int i = 0 ; i < geOrderNumList.size() ; i++) { + if (geOrderNumList.size()==1){ + 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); + } + //字段名称设置成拼音+下划线,存入数据库 String pinYin = HanYuPinYinUtil.changeToNumberPinYin(onlCgformTag.getDbFieldTxt()); onlCgformTag.setDbFieldName(pinYin.replace(" ","_"));