---修复修改时子表没有保存成功

This commit is contained in:
2025-12-24 18:16:13 +08:00
parent 673a8051d4
commit a7b0ff7397

View File

@ -1,5 +1,4 @@
package com.pictc.utils; package com.pictc.utils;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
@ -671,9 +670,17 @@ public class DataLogTools {
ids.add(idValue); ids.add(idValue);
DataChangeLog datalog = createLog(join.getTargetClass(),type,parent); DataChangeLog datalog = createLog(join.getTargetClass(),type,parent);
Object old = findById(join.getTargetClass(),idValue); Object old = findById(join.getTargetClass(),idValue);
mapper.updateById(joinTable.toEntity(item));
saveAttrs(joinTable,item); saveAttrs(joinTable,item);
buildFields(datalog,joinTable,item,old); if(old==null) {
datalog.setOperationType(OperationType.INSERT);
mapper.insert(joinTable.toEntity(item));
buildFields(datalog,joinTable,item,null);
continue;
}else {
datalog.setOperationType(OperationType.UPDATE);
mapper.updateById(joinTable.toEntity(item));
buildFields(datalog,joinTable,item,old);
}
} }
//删除旧数据 //删除旧数据
if(oldList!=null) { if(oldList!=null) {
@ -721,9 +728,16 @@ public class DataLogTools {
buildFields(datalog,joinTable,val,null); buildFields(datalog,joinTable,val,null);
}else { }else {
Object old = mapper.selectById(idValue); Object old = mapper.selectById(idValue);
mapper.updateById(joinTable.toEntity(val));
saveAttrs(joinTable,val,true); saveAttrs(joinTable,val,true);
buildFields(datalog,joinTable,val,old); if(old==null) {
datalog.setOperationType(OperationType.INSERT);
mapper.insert(joinTable.toEntity(val));
buildFields(datalog,joinTable,val,null);
}else {
datalog.setOperationType(OperationType.UPDATE);
mapper.updateById(joinTable.toEntity(val));
buildFields(datalog,joinTable,val,old);
}
} }
} else if(type==OperationType.UPDATE || type==OperationType.DELETE){ } else if(type==OperationType.UPDATE || type==OperationType.DELETE){
//进行修改或者删除时,级联对象为空时,需要删除旧数据 //进行修改或者删除时,级联对象为空时,需要删除旧数据