[修改] bug 50140 关于逻辑删除的新增编辑的数据判断

This commit is contained in:
xiejunyu
2022-03-31 14:38:24 +08:00
parent ff28ea5237
commit 875090a66d
3 changed files with 83 additions and 41 deletions
@@ -1,12 +1,13 @@
package com.jero.modules.tag.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.constant.CommonConstant;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.generater.modules.online.cgform.controller.OnlCgformApiController;
import com.jero.generater.modules.online.cgform.util.CgformUtil;
import com.jero.modules.enums.FixedFieldEnum;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import com.jero.modules.tag.entity.OnlCgformArea;
@@ -89,15 +90,38 @@ public class OnlCgformTagController extends JeroController<OnlCgformTag, IOnlCgf
@PostMapping(value = "/add")
@RequiresPermissions("tag:add")
public Result<?> add(@Validated @RequestBody OnlCgformTag onlCgformTag) {
Result<OnlCgformTag> result=new Result<>();
//校验--不能向数据库添加重复数据
Integer countTableData=onlCgformTagService.queryExitTableData(onlCgformTag);
if(countTableData>0){
return Result.error("已存在该数据,请勿重复添加");
QueryWrapper<OnlCgformTag> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("db_field_txt",onlCgformTag.getDbFieldTxt());
List<OnlCgformTag> existCgformTagList = this.onlCgformTagService.list(queryWrapper);
if(!existCgformTagList.isEmpty()){
OnlCgformTag onlCgformTagDB = existCgformTagList.get(0);
//存在重复同名标签,且已删
if(onlCgformTagDB.getIsDelete() == CommonConstant.DEL_FLAG_1){
//判断属性类型是否一样
if (onlCgformTagDB.getFieldShowType().equals(onlCgformTag.getFieldShowType())){
//属性类型一样,恢复
this.onlCgformTagService.updateDictDelFlag(CommonConstant.DEL_FLAG_0, onlCgformTagDB.getId());
onlCgformTag.setId(onlCgformTagDB.getId());
this.onlCgformTagService.editById(onlCgformTag);//更新数据
}else{
//类不同, 删除原标签.再加回来新的
this.onlCgformTagService.deleteById(onlCgformTagDB.getId());
this.onlCgformTagService.add(onlCgformTag);
}
this.onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID), "normal");
}else{
throw new JeroBootException("属性已存在,请检查");
}
}else {
onlCgformTagService.add(onlCgformTag);
onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID), "normal");
return Result.OK("添加成功!");
return result.success("添加成功!");
}
return result;
}
/**
@@ -114,8 +138,29 @@ public class OnlCgformTagController extends JeroController<OnlCgformTag, IOnlCgf
if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(onlCgformTag.getIsReadOnly()) || FixedFieldEnum.CONFIGURABLE_FIELD.getValue().equals(onlCgformTag.getIsReadOnly())) {
return Result.error("固定字段,不可修改");
}else {
onlCgformTagService.editById(onlCgformTag);
//onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID),"normal");
QueryWrapper<OnlCgformTag> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("db_Field_txt",onlCgformTag.getDbFieldTxt());
List<OnlCgformTag> existCgformTagList=onlCgformTagService.list(queryWrapper);
if(!existCgformTagList.isEmpty()){//有同名数据
if(existCgformTagList.get(0).getId().equals(onlCgformTag.getId())){//已存在同名的数据,就是正在编辑的这个
onlCgformTagService.editById(onlCgformTag);
onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID),"normal");
}else{//已存在同名的数据,不是正在编辑的这个
OnlCgformTag onlCgformTagDB = existCgformTagList.get(0);
if(onlCgformTagDB.getIsDelete()==CommonConstant.DEL_FLAG_1){//有已删数据,恢复
onlCgformTagService.updateDictDelFlag(CommonConstant.DEL_FLAG_0,onlCgformTagDB.getId());
onlCgformTag.setId(onlCgformTagDB.getId());
onlCgformTagService.editById(onlCgformTag);
onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID),"normal");
}else {//有未删数据,报错
return Result.error("属性已存在,请检查");
}
}
}else{
onlCgformTagService.editById(onlCgformTag);
onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID),"normal");
}
return Result.OK("编辑成功!");
}
}
@@ -82,9 +82,8 @@ public interface IOnlCgformTagService extends IService<OnlCgformTag> {
*
* @return
*/
Integer queryExitData(OnlCgformTag onlCgformTag) ;
Integer queryExitData(OnlCgformTag onlCgformTag) ;
Integer queryExitTableData(OnlCgformTag onlCgformTag);
/**
* 若区域下有标签字段 则无法删除
@@ -2,7 +2,6 @@ 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;
@@ -67,7 +66,19 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
if (onlCgformTag.getDbLength() == null){
onlCgformTag.setDbLength(100);
}
//设置标签存入数据库的字段类型
if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.TEXT_NUMBER.getValue())){
onlCgformTag.setDbType("int");
}else if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.DATE_SINGLE.getValue())){
onlCgformTag.setDbType("Date");
}else{
onlCgformTag.setDbType("String");
if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.PULL_SINGLE.getValue())){
onlCgformTag.setDbLength(36); //单个ID的最大长度是36,所以单选默认设置为36
}else if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.PULL_MORE.getValue())){
onlCgformTag.setDbLength(2000); // 多选默认设置为2000,即可选择2000/36=55个属性
}
}
onlCgformTag.setIsDelete(CommonConstant.DEL_FLAG_0);
onlCgformTag.setCgformHeadId(FileTableIdEnum.FILE_TABLE_ID.getValue());//设置文档库-表id
onlCgformTag.setDbIsKey(Integer.valueOf(YesOrNoEnum.NO.getValue()));
@@ -96,35 +107,6 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
save(onlCgformTag);
}
/**
* 校验名字,类型,长度完全相同的数据,不能加进数据库
*
* @return
*/
@Override
public Integer queryExitTableData(OnlCgformTag onlCgformTag) {
//设置标签存入数据库的字段类型
if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.TEXT_NUMBER.getValue())){
onlCgformTag.setDbType("int");
}else if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.DATE_SINGLE.getValue())){
onlCgformTag.setDbType("Date");
}else{
onlCgformTag.setDbType("String");
if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.PULL_SINGLE.getValue())){
onlCgformTag.setDbLength(36); //单个ID的最大长度是36,所以单选默认设置为36
}else if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.PULL_MORE.getValue())){
onlCgformTag.setDbLength(2000); // 多选默认设置为2000,即可选择2000/36=55个属性
}
}
QueryWrapper<OnlCgformTag> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(onlCgformTag.getDbFieldName())) {
queryWrapper.eq("db_field_txt", onlCgformTag.getDbFieldTxt())//字段中文名称
.eq("field_show_type", onlCgformTag.getFieldShowType())//字段类型
.eq("db_length",onlCgformTag.getDbLength());//字段长度
}
Integer countTableData = onlCgformTagMapper.selectCount(queryWrapper);
return countTableData;
}
/**
* 更新
*
@@ -139,6 +121,10 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
if(StringUtils.isNotBlank(onlCgformTag.getDbFieldEnName())){
onlCgformTag.setDbFieldEnName(onlCgformTag.getDbFieldEnName().replace(" ","_"));
}
//处理DBLength为null的情况,默认为100
if (onlCgformTag.getDbLength() == null){
onlCgformTag.setDbLength(100);
}
Date now = new Date();
onlCgformTag.setUpdateTime(now);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -156,6 +142,18 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
onlCgformTag.setDbLength(2000); // 多选默认设置为2000,即可选择2000/36=55个属性
}
}
onlCgformTag.setIsDelete(CommonConstant.DEL_FLAG_0);
onlCgformTag.setCgformHeadId(FileTableIdEnum.FILE_TABLE_ID.getValue());//设置文档库-表id
onlCgformTag.setDbIsKey(Integer.valueOf(YesOrNoEnum.NO.getValue()));
onlCgformTag.setDbIsNull(Integer.valueOf(YesOrNoEnum.YES.getValue()));
onlCgformTag.setDbPointLength(0); //默认为0
onlCgformTag.setIsReadOnly(Integer.valueOf(FixedFieldEnum.NON_FIXED_FIELD_ENUM.getValue()));
onlCgformTag.setIsShowForm(Integer.valueOf(YesOrNoEnum.YES.getValue()));
// 数据库的字段名称必须以字母开头,若不以字母开头加上固定的grp前缀
if (!Validator.isMatchRegex("^[a-zA-Z].*$", onlCgformTag.getDbFieldName())){
onlCgformTag.setDbFieldName("grp_" + onlCgformTag.getDbFieldName());
}
saveOrUpdate(onlCgformTag);
}
@@ -251,7 +249,7 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
queryWrapper.eq(OnlCgformTag::getIsModel, onlCgformTag.getIsModel())
.eq(OnlCgformTag::getDbFieldTxt, onlCgformTag.getDbFieldTxt())
.eq(OnlCgformTag::getDbFieldEnName, onlCgformTag.getDbFieldEnName())
.eq(OnlCgformTag::getIsDelete,0);
.eq(OnlCgformTag::getIsDelete,0);
}
Integer count = onlCgformTagMapper.selectCount(queryWrapper);
return count;