From 69f5e5c9032030de537c2d78107f7b70adb5900c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=A6=8F=E8=B4=A2?= <1471584931@qq.com> Date: Tue, 23 Dec 2025 12:00:15 +0800 Subject: [PATCH] =?UTF-8?q?--=E5=85=B3=E8=81=94=E5=AF=B9=E8=B1=A1=E5=88=A0?= =?UTF-8?q?=E9=99=A4bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/pictc/utils/DataLogTools.java | 56 +++++++++++-------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/DataLogTools.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/DataLogTools.java index 65d9410..06ea03b 100644 --- a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/DataLogTools.java +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/DataLogTools.java @@ -5,8 +5,10 @@ import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; import com.alibaba.nacos.shaded.com.google.common.collect.Lists; 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.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; import com.pictc.annotations.datalog.*; import com.pictc.converts.ConverUtil; @@ -683,6 +685,7 @@ public class DataLogTools { //进行修改或者删除时,级联对象为空时,需要删除旧数据 List oldList = getJoinList(joinTable, join, mapper, parentInfo, entity); if(oldList!=null) { + log.info("关联属性【{}】=>{}",join.getField().getName(),JSON.toJSONString(oldList)); for (Object item : oldList) { Long idValue = joinTable.getIdValue(item); DataChangeLog datalog = createLog(join.getTargetClass(),OperationType.DELETE,parent); @@ -739,37 +742,46 @@ public class DataLogTools { LogTableInfo parentInfo,Object parent) { LogJoin joinAnnotation = join.getJoin(); 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) { if(joinCol.valueType()==JoinValueType.FEILD) { Object value = parentInfo.getFieldValue(parent,joinCol.field()); - if(value==null) return null; - queryWrapper.eq(joinTable.getColumn(joinCol.relatedField()),value); + String column = joinTable.getColumn(joinCol.relatedField()); + 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 { if(StringUtils.isNotEmpty(joinCol.relatedField())) { queryWrapper.eq(joinTable.getColumn(joinCol.relatedField()),ConverUtil.jsonToValue(joinCol.staticType(),joinCol.staticValue())); } } } - return mapper.selectList(queryWrapper); - } - - 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); + Object object = mapper.selectOne(queryWrapper); + return object==null?null:joinTable.toDto(object); }