zjj
5 天以前 256c59555e2a5dffdd6d127a519d4f0944b80e7f
#物料表动态字段搜索
5个文件已修改
70 ■■■■■ 已修改文件
rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/domain/BaseParam.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
@@ -210,6 +210,16 @@
                    <PrintButton />
                </WrapperField>
                setColumns([...arr, ...fields, opt]);
                //filters添加过滤字段
                data.map(el => {
                    var i =0;
                    filters.map((item) =>{
                        if(item.key === el.fields){
                          i = 1;
                        }
                    })
                    i===0 && filters.push(<TextInput key={el.fields} source={el.fields} label={el.fieldsAlise} />)
                })
            } else {
                notify(msg);
            }
rsf-server/src/main/java/com/vincent/rsf/server/common/domain/BaseParam.java
@@ -1,10 +1,16 @@
package com.vincent.rsf.server.common.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.common.utils.Utils;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.server.system.entity.Fields;
import com.vincent.rsf.server.system.service.FieldsService;
import lombok.Data;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@@ -36,6 +42,9 @@
    @TableField(exist = false)
    private Map<String, Object> map;
    @TableField(exist = false)
    private Map<String, Object> fields = new HashMap<>();
    public void syncMap(Map<String, Object> map) {
        if (null == map) {
@@ -69,6 +78,20 @@
            this.setCondition(String.valueOf(map.get("condition")));
            map.remove("condition");
        }
        FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
        List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1));
        if (!fields.isEmpty()) {
            for (Fields fields1 : fields) {
                if (null !=map.get(fields1.getFields())){
                    this.fields.put(fields1.getFields(), map.get(fields1.getFields()));
                    map.entrySet().removeIf(next -> next.getKey().equals(fields1.getFields())
                    );
                }
            }
        }
        this.setMap(map);
    }
rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
@@ -7,6 +7,7 @@
import com.vincent.rsf.common.utils.Utils;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.DateUtils;
import lombok.Getter;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -21,6 +22,7 @@
    private static final long serialVersionUID = 1L;
    public static final String ORDER_DESC_VALUE = "desc";
    @Getter
    private final U where;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
@@ -1,8 +1,14 @@
package com.vincent.rsf.server.common.utils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.system.entity.Fields;
import com.vincent.rsf.server.system.entity.FieldsItem;
import com.vincent.rsf.server.system.service.FieldsItemService;
@@ -174,4 +180,30 @@
            saveFields(params, params.get("index").toString());
        }
    }
}
    public static <T> QueryWrapper<T> setFieldsFilters(QueryWrapper<T> queryWrapper, PageParam<T, BaseParam> pageParam, Class<T> entityClass) {
        // 动态获取表名
        TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass);
        String tableName = tableInfo.getTableName();
        FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
        Map<String, Object> map = pageParam.getWhere().getFields();
        for (String key : map.keySet()) {
            Object val = map.get(key);
            Fields fields = fieldsService.getOne(new LambdaQueryWrapper<Fields>().eq(Fields::getFields, key));
            if (!Cools.isEmpty(fields)) {
                String applySql = String.format(
                    "EXISTS (SELECT 1 FROM sys_fields_item fie " +
                    "WHERE %s.fields_index IS NOT NULL " +
                    "AND fie.uuid = %s.fields_index " +
                    "AND fie.fields_id = '%s' " +
                    "AND fie.value = '%s')",
                    tableName, tableName, fields.getId(), val
                );
                queryWrapper.apply(applySql);
            }
        }
        return queryWrapper;
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
@@ -119,6 +119,7 @@
                }
            }
        }
        FieldsUtils.setFieldsFilters(queryWrapper,pageParam,Matnr.class);
        /**拼接扩展字段*/
        PageParam<Matnr, BaseParam> page = this.page(pageParam, queryWrapper);
        List<Matnr> records = page.getRecords();