--关联对象删除bug修改
This commit is contained in:
@ -5,8 +5,10 @@ import cn.hutool.core.util.IdUtil;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
|
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
|
||||||
import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
|
import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
|
import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
|
||||||
import com.pictc.annotations.datalog.*;
|
import com.pictc.annotations.datalog.*;
|
||||||
import com.pictc.converts.ConverUtil;
|
import com.pictc.converts.ConverUtil;
|
||||||
@ -683,6 +685,7 @@ public class DataLogTools {
|
|||||||
//进行修改或者删除时,级联对象为空时,需要删除旧数据
|
//进行修改或者删除时,级联对象为空时,需要删除旧数据
|
||||||
List oldList = getJoinList(joinTable, join, mapper, parentInfo, entity);
|
List oldList = getJoinList(joinTable, join, mapper, parentInfo, entity);
|
||||||
if(oldList!=null) {
|
if(oldList!=null) {
|
||||||
|
log.info("关联属性【{}】=>{}",join.getField().getName(),JSON.toJSONString(oldList));
|
||||||
for (Object item : oldList) {
|
for (Object item : oldList) {
|
||||||
Long idValue = joinTable.getIdValue(item);
|
Long idValue = joinTable.getIdValue(item);
|
||||||
DataChangeLog datalog = createLog(join.getTargetClass(),OperationType.DELETE,parent);
|
DataChangeLog datalog = createLog(join.getTargetClass(),OperationType.DELETE,parent);
|
||||||
@ -739,37 +742,46 @@ public class DataLogTools {
|
|||||||
LogTableInfo parentInfo,Object parent) {
|
LogTableInfo parentInfo,Object parent) {
|
||||||
LogJoin joinAnnotation = join.getJoin();
|
LogJoin joinAnnotation = join.getJoin();
|
||||||
LogJoinColumn[] columns = joinAnnotation.columns();
|
LogJoinColumn[] columns = joinAnnotation.columns();
|
||||||
QueryChainWrapper queryWrapper = new QueryChainWrapper(mapper);
|
Object joinBean = parentInfo.getFieldValue(parent,join.getField());
|
||||||
|
QueryWrapper<?> queryWrapper = Wrappers.query(joinTable.getEntityType());
|
||||||
for (LogJoinColumn joinCol : columns) {
|
for (LogJoinColumn joinCol : columns) {
|
||||||
if(joinCol.valueType()==JoinValueType.FEILD) {
|
if(joinCol.valueType()==JoinValueType.FEILD) {
|
||||||
Object value = parentInfo.getFieldValue(parent,joinCol.field());
|
Object value = parentInfo.getFieldValue(parent,joinCol.field());
|
||||||
if(value==null) return null;
|
String column = joinTable.getColumn(joinCol.relatedField());
|
||||||
queryWrapper.eq(joinTable.getColumn(joinCol.relatedField()),value);
|
queryWrapper.eq(column,value);
|
||||||
|
}else {
|
||||||
|
queryWrapper.eq(joinTable.getColumn(joinCol.relatedField()),ConverUtil.jsonToValue(joinCol.staticType(),joinCol.staticValue()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List list = mapper.selectList(queryWrapper);
|
||||||
|
if(CollectionUtils.isEmpty(list)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
List result = CollectionUtils.newArrayList();
|
||||||
|
for (Object item : list) {
|
||||||
|
result.add(joinTable.toDto(item));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Object getJoinObj(LogTableInfo joinTable,LogJoinInfo join,BaseMapper mapper,LogTableInfo parentInfo,Object parent) {
|
||||||
|
LogJoin joinAnnotation = join.getJoin();
|
||||||
|
LogJoinColumn[] columns = joinAnnotation.columns();
|
||||||
|
Object joinBean = parentInfo.getFieldValue(parent,join.getField());
|
||||||
|
QueryWrapper<?> queryWrapper = Wrappers.query(joinTable.getEntityType());
|
||||||
|
for (LogJoinColumn joinCol : columns) {
|
||||||
|
if(joinCol.valueType()==JoinValueType.FEILD) {
|
||||||
|
Object value = parentInfo.getFieldValue(parent,joinCol.field());
|
||||||
|
String column = joinTable.getColumn(joinCol.relatedField());
|
||||||
|
queryWrapper.eq(column,value);
|
||||||
}else {
|
}else {
|
||||||
if(StringUtils.isNotEmpty(joinCol.relatedField())) {
|
if(StringUtils.isNotEmpty(joinCol.relatedField())) {
|
||||||
queryWrapper.eq(joinTable.getColumn(joinCol.relatedField()),ConverUtil.jsonToValue(joinCol.staticType(),joinCol.staticValue()));
|
queryWrapper.eq(joinTable.getColumn(joinCol.relatedField()),ConverUtil.jsonToValue(joinCol.staticType(),joinCol.staticValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return mapper.selectList(queryWrapper);
|
Object object = mapper.selectOne(queryWrapper);
|
||||||
}
|
return object==null?null:joinTable.toDto(object);
|
||||||
|
|
||||||
private static Object getJoinObj(LogTableInfo joinTable,LogJoinInfo join,BaseMapper mapper,LogTableInfo parentInfo,Object parent) {
|
|
||||||
LogJoin joinAnnotation = join.getJoin();
|
|
||||||
LogJoinColumn[] columns = joinAnnotation.columns();
|
|
||||||
QueryChainWrapper query = new QueryChainWrapper(mapper);
|
|
||||||
for (LogJoinColumn joinCol : columns) {
|
|
||||||
if(joinCol.valueType()==JoinValueType.FEILD) {
|
|
||||||
Object value = parentInfo.getFieldValue(parent,joinCol.field());
|
|
||||||
if(value==null) return null;
|
|
||||||
query.eq(joinTable.getColumn(joinCol.relatedField()),value);
|
|
||||||
}else {
|
|
||||||
if(StringUtils.isNotEmpty(joinCol.relatedField())) {
|
|
||||||
query.eq(joinTable.getColumn(joinCol.relatedField()),ConverUtil.jsonToValue(joinCol.staticType(),joinCol.staticValue()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return mapper.selectObjs(query);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user