---修复关联关系一对多bug

This commit is contained in:
2026-01-20 17:38:09 +08:00
parent 221679927d
commit c96a0f3023
17 changed files with 162 additions and 112 deletions

View File

@ -1,5 +1,6 @@
package com.pictc.utils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
@ -58,6 +59,8 @@ public class DataLogTools {
private static Map<String,Class<?>> entitys = Maps.newHashMap();
private static final String REDIS_CACHE_KEY = "TABLE_INFO:";
private static Set<String> logTables = null;
private static Object lock = new Object();
@ -609,21 +612,23 @@ public class DataLogTools {
Object joinValue = tabInfo.getFieldValue(entity, join.getField());
if(joinValue!=null && joinValue instanceof List) {
List listValue = (List) joinValue;
for (LogJoinColumn joinColumn : columns) {
if (joinColumn.valueType() == JoinValueType.FEILD
&& joinColumn.valueDirection() == ValueDirectionType.RIGHT) {
Object joinFieldValue = tabInfo.getFieldValue(entity, joinColumn.field());
for (Object item : listValue) {
Long idValue2 = joinTable.getIdValue(item);
if(idValue2==null || idValue2 <=0) {
joinTable.setIdValue(item, IdWorker.getId());
}
for (Object item : listValue) {
Long idValue2 = joinTable.getIdValue(item);
if(idValue2==null || idValue2 <=0) {
joinTable.setIdValue(item, IdWorker.getId());
}
for (LogJoinColumn joinColumn : columns) {
if (joinColumn.valueType() == JoinValueType.FEILD
&& joinColumn.valueDirection() == ValueDirectionType.RIGHT) {
Object joinFieldValue = tabInfo.getFieldValue(entity, joinColumn.field());
joinTable.setFieldValue(item, joinColumn.relatedField(), joinFieldValue);
}else if(joinColumn.valueType()==JoinValueType.STATIC){
Object joinFieldValue = Convert.convert(joinColumn.staticType(), joinColumn.staticValue());
joinTable.setFieldValue(item, joinColumn.relatedField(), joinFieldValue);
Set<Class<?>> joinClasses = SetUtils.ofCollection(classes);
initJoinValue(item,joinTable,joinClasses);
}
}
Set<Class<?>> joinClasses = SetUtils.ofCollection(classes);
initJoinValue(item,joinTable,joinClasses);
}
}else {
Long idValue2 = joinTable.getIdValue(joinValue);
@ -634,9 +639,16 @@ public class DataLogTools {
if(joinColumn.valueType()==JoinValueType.FEILD && joinColumn.valueDirection()==ValueDirectionType.LEFT) {
Object joinFieldValue = joinTable.getFieldValue(joinValue, joinColumn.relatedField());
tabInfo.setFieldValue(entity, joinColumn.field(),joinFieldValue);
}else {
}else if(joinColumn.valueType()==JoinValueType.FEILD){
Object joinFieldValue = tabInfo.getFieldValue(entity, joinColumn.field());
joinTable.setFieldValue(joinValue, joinColumn.relatedField(), joinFieldValue);
}else {
Object joinFieldValue = Convert.convert(joinColumn.staticType(), joinColumn.staticValue());
if(joinColumn.valueDirection()==ValueDirectionType.LEFT) {
tabInfo.setFieldValue(entity, joinColumn.field(),joinFieldValue);
}else {
joinTable.setFieldValue(joinValue, joinColumn.relatedField(), joinFieldValue);
}
}
}
Set<Class<?>> joinClasses = SetUtils.ofCollection(classes);

View File

@ -0,0 +1,46 @@
package com.pictc.utils;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.HandlerMapping;
public class RequestUtils {
private RequestUtils() {
super();
}
public static HttpServletRequest getRequest() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
return servletRequestAttributes.getRequest();
}
@SuppressWarnings("unchecked")
public static Map<String, String> getPathValues(){
HttpServletRequest request = getRequest();
return (Map<String, String>) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
}
public static String getPathValue(String name){
return getPathValues().get(name);
}
public static Map<String,Object> getParameters(HttpServletRequest request) {
Map<String,Object> parameters = CollectionUtils.newHashMap();
Enumeration<String> names = request.getParameterNames();
if(names!=null) {
while (names.hasMoreElements()) {
String name = names.nextElement();
parameters.put(name, request.getParameter(name));
}
}
return parameters;
}
}