From ac070bd08ba4cb6c1e3bf670db75b6a8e801b84b Mon Sep 17 00:00:00 2001
From: 杜洪波 <1074825718@qq.com>
Date: 星期一, 17 十一月 2025 18:00:30 +0800
Subject: [PATCH] 表单建模树优化
---
src/main/java/com/product/face/entity/FaceListEntity.java | 792 ++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 509 insertions(+), 283 deletions(-)
diff --git a/src/main/java/com/product/face/entity/FaceListEntity.java b/src/main/java/com/product/face/entity/FaceListEntity.java
index e2fbd06..a885cac 100644
--- a/src/main/java/com/product/face/entity/FaceListEntity.java
+++ b/src/main/java/com/product/face/entity/FaceListEntity.java
@@ -1,5 +1,6 @@
package com.product.face.entity;
+import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.product.admin.config.CmnConst;
@@ -28,319 +29,544 @@
*/
public class FaceListEntity implements Serializable {
- private static final long serialVersionUID = -6777140406080679771L;
- /**
- * 琛╱uid
- */
- private String tableUuid;
- /**
- * face_uuid
- */
- private String uuid;
- /**
- * 琛ㄥ崟鍚�
- */
- private String faceName;
- /**
- * 鍔熻兘uuid
- */
- @Deprecated
- private String functionUuid;
- /**
- * 瀛楁闆嗗悎
- */
- private List<FaceField> faceFields;
- /**
- * 琛ㄥ悕
- */
- private String tableName;
+ private static final long serialVersionUID = -6777140406080679771L;
+ /**
+ * 琛╱uid
+ */
+ private String tableUuid;
+ /**
+ * face_uuid
+ */
+ private String uuid;
+ /**
+ * 琛ㄥ崟鍚�
+ */
+ private String faceName;
+ /**
+ * 鍔熻兘uuid
+ */
+ @Deprecated
+ private String functionUuid;
+ /**
+ * 瀛楁闆嗗悎
+ */
+ private List<FaceField> faceFields;
+ /**
+ * 琛ㄥ悕
+ */
+ private String tableName;
- /**
- * 鑾峰彇琛ㄥ悕
- *
- * @return
- */
- public String getTableName() {
- if (this.tableName == null && this.tableUuid != null) {
- //浠庣紦瀛樹腑鑾峰彇
- DataTableEntity cacheData = DataPoolCacheImpl.getInstance().getCacheData("鎵�鏈夎〃淇℃伅(uuid)", new String[]{this.tableUuid});
- if (cacheData != null && cacheData.getRows() > 0) {
- String table_name = cacheData.getString(0, "table_name");
- this.tableName = table_name;
- }
- }
- return tableName;
- }
+ /**
+ * 鏄惁鏄剧ず鏍�
+ */
+ private String treeShow;
- /**
- * 鏉′欢瀛楁
- *
- * @param fieldName 瀛楁鍚嶇О
- * @param faceUuid 瀛楁uuid
- * @param columnName 鍒楀悕
- * @param columnWidth 鍒楀
- * @param sequence 鎺掑簭
- * @param fieldReference 鍙傜収
- */
- public void addField(String fieldName, String faceUuid, String columnName, String columnWidth, Integer sequence, String fieldReference) {
- FaceField faceField = new FaceField();
- faceField.setFieldName(fieldName);
- faceField.setFieldUuid(faceUuid);
- faceField.setColumnName(columnName);
- faceField.setColumnWidth(columnWidth);
- faceField.setSequence(sequence);
- faceField.setFieldReference(fieldReference);
- if (this.faceFields == null) {
- this.faceFields = Lists.newArrayList();
- }
- this.faceFields.add(faceField);
- }
+ /**
+ * 鏍戞暟鎹簮绫诲瀷
+ */
+ private String treeDataType;
- /**
- * 瀛楁鎺掑簭鏂规硶
- */
- public void sortField() {
- if (this.faceFields != null && this.faceFields.size() > 0) {
- this.faceFields.sort((a, b) -> {
- return a.getSequence().compareTo(b.getSequence());
- });
- }
- }
+ /**
+ * 鏁版嵁婧�
+ */
+ private String treeDataSource;
- public String getTableUuid() {
- return tableUuid;
- }
+ /**
+ * 鏍憀abel key
+ */
+ private String treeLabelKey;
- public void setTableUuid(String tableUuid) {
- this.tableUuid = tableUuid;
- }
+ /**
+ * 鏍憊alue key
+ */
+ private String treeValueKey;
- public String getUuid() {
- return uuid;
- }
+ /**
+ * 鑾峰彇琛ㄥ悕
+ *
+ * @return
+ */
+ public String getTableName() {
+ if (this.tableName == null && this.tableUuid != null) {
+ //浠庣紦瀛樹腑鑾峰彇
+ DataTableEntity cacheData = DataPoolCacheImpl.getInstance().getCacheData("鎵�鏈夎〃淇℃伅(uuid)", new String[]{this.tableUuid});
+ if (cacheData != null && cacheData.getRows() > 0) {
+ String table_name = cacheData.getString(0, "table_name");
+ this.tableName = table_name;
+ }
+ }
+ return tableName;
+ }
- public void setUuid(String uuid) {
- this.uuid = uuid;
- }
+ /**
+ * 鏉′欢瀛楁
+ *
+ * @param fieldName 瀛楁鍚嶇О
+ * @param faceUuid 瀛楁uuid
+ * @param columnName 鍒楀悕
+ * @param columnWidth 鍒楀
+ * @param sequence 鎺掑簭
+ * @param fieldReference 鍙傜収
+ * @param search 鏄惁鎼滅储
+ */
+ public void addField(String fieldName, String faceUuid, String columnName, String columnWidth, Integer sequence, String fieldReference, boolean search) {
+ FaceField faceField = new FaceField();
+ faceField.setFieldName(fieldName);
+ faceField.setFieldUuid(faceUuid);
+ faceField.setColumnName(columnName);
+ faceField.setColumnWidth(columnWidth);
+ faceField.setSequence(sequence);
+ faceField.setFieldReference(fieldReference);
+ faceField.setSearch(search);
+ if (this.faceFields == null) {
+ this.faceFields = Lists.newArrayList();
+ }
+ this.faceFields.add(faceField);
+ }
- public String getFaceName() {
- return faceName;
- }
+ /**
+ * 瀛楁鎺掑簭鏂规硶
+ */
+ public void sortField() {
+ if (this.faceFields != null && this.faceFields.size() > 0) {
+ this.faceFields.sort((a, b) -> {
+ return a.getSequence().compareTo(b.getSequence());
+ });
+ }
+ }
- public void setFaceName(String faceName) {
- this.faceName = faceName;
- }
+ public String getTableUuid() {
+ return tableUuid;
+ }
- public String getFunctionUuid() {
- return functionUuid;
- }
+ public void setTableUuid(String tableUuid) {
+ this.tableUuid = tableUuid;
+ }
- public void setFunctionUuid(String functionUuid) {
- this.functionUuid = functionUuid;
- }
+ public String getUuid() {
+ return uuid;
+ }
- public List<FaceField> getFaceFields() {
- return faceFields;
- }
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
- public void setFaceFields(List<FaceField> faceFields) {
- this.faceFields = faceFields;
- }
+ public String getFaceName() {
+ return faceName;
+ }
- /**
- * 鑾峰彇鍙傜収鏉′欢
- *
- * @param fieldName
- * @param dictName
- * @return
- */
- private String getDictFilter(String fieldName, String dictName) {
- StringBuilder filter = new StringBuilder();
- DictService bean = SpringBeanUtil.getBean(DictService.class);
- String manager_type = null;
- SystemUser currentUser = SpringMVCContextHolder.getCurrentUser();
- if (currentUser != null && currentUser.getCurrentManager() != null) {
- manager_type = currentUser.getCurrentManager().getString(CmnConst.MANAGER_TYPE);
- } else {
- manager_type = null;
- }
- //鎷艰鏅�氬弬鐓ф煡璇㈡墍闇�鍙傛暟
- FieldSetEntity fse = new FieldSetEntity();
- fse.setTableName(CmnConst.PRODUCT_SYS_DICT);
- fse.setValue(CmnConst.DICT_NAME, dictName);
- fse.setValue(CoreConst.SYSTEM_CLIENT_TYPE_, currentUser.getClientType());
- //鑾峰彇鍙傜収闆嗗悎
- DataTableEntity dataTableEntity = bean.listDictByname(fse, manager_type);
- if (!BaseUtil.dataTableIsEmpty(dataTableEntity)) {
- //缁勬垚鏉′欢
- Object[] uuids = dataTableEntity.getUuids();
- filter.append(fieldName);
- filter.append(" in (SELECT dict_value FROM product_sys_dict where ");
- filter.append(BaseUtil.buildQuestionMarkFilter("uuid", uuids, true));
- filter.append(" and dict_label like concat('%','~val~','%') ) ");
- }
- return filter.toString();
- }
+ public void setFaceName(String faceName) {
+ this.faceName = faceName;
+ }
- /**
- * 鑾峰彇鏉′欢
- *
- * @param tableAlias 琛ㄥ埆鍚�
- * @param aliasField 瀛楁鍒悕
- * @return
- */
- public Map<String, List<String>> getFilters(String tableAlias, Map<String, List<String>> aliasField) {
- DataPoolCacheImpl poolCache = null;
- //鎵�鏈夊瓧娈甸泦鍚�
- List<FaceField> faceFields = this.getFaceFields();
- //鏅�氭ā绯婃煡璇㈠瓧娈甸泦鍚�
- List<String> fieldNames = Lists.newArrayList();
- //鍙傜収妯$硦鏌ヨ鏉′欢闆嗗悎
- List<String> filters = Lists.newArrayList();
- //杩斿洖鐨勭粨鏋滈泦
- Map<String, List<String>> maps = Maps.newHashMap();
- maps.put("fields", fieldNames);
- maps.put("filter", filters);
- for (int i = 0; i < faceFields.size(); i++) {
- FaceField faceField = faceFields.get(i);
- if (StringUtils.isEmpty(faceField.getFieldName()) || StringUtils.isEmpty(faceField.getFieldReference())) {
- if (poolCache == null) {
- poolCache = DataPoolCacheImpl.getInstance();
- }
- DataTableEntity dt = poolCache.getCacheData("琛ㄥ瓧娈典俊鎭�", new String[]{getTableUuid(), faceField.getFieldName()});
- if (BaseUtil.dataTableIsEmpty(dt)) {
- } else {
- FieldSetEntity f = dt.getFieldSetEntity(0);
- faceField.setFieldName(f.getString(CmnConst.FIELD_NAME));
- faceField.setFieldReference(f.getString("field_reference"));
- }
- }
- //瀛楁鍚嶇О
- String fieldName = faceField.getFieldName();
- if (aliasField != null && !StringUtils.isEmpty(fieldName)) {
- List<String> fieldAlias = aliasField.get(getTableName() + "." + fieldName);
- if (fieldAlias != null && fieldAlias.size() > 0) {
- String alias = fieldAlias.get(0);
- if (!StringUtils.isEmpty(alias)) {
- fieldName = alias;
- }
- }
- }
- //鍙傜収澶勭悊
- String field_reference = faceField.getFieldReference();
- if (!StringUtils.isEmpty(field_reference)) {
- if (field_reference.indexOf("銆�") == 0 && field_reference.indexOf("銆�") > 0) {
- //鏅�氬弬鐓�
- filters.add(getDictFilter(fieldName, field_reference.replace("銆�", "").replace("銆�", "")));
- continue;
- } else {
- if (poolCache == null) {
- poolCache = DataPoolCacheImpl.getInstance();
- }
- //楂樼骇鍙傜収
- DataTableEntity prompt = poolCache.getCacheData("楂樼骇鍙傜収閰嶇疆淇℃伅", new String[]{field_reference});
- if (BaseUtil.dataTableIsEmpty(prompt)) {
- continue;
- }
- FieldSetEntity ff = prompt.getFieldSetEntity(0);
- StringBuilder p = new StringBuilder();
- p.append(fieldName).append(" in ").append(" ( SELECT ").append(ff.getString("value_field")).append(" FROM ").append(ff.getString("source_table"));
- p.append(" WHERE ").append(ff.getString("view_fields")).append(" like concat('%','~val~','%') )");
- filters.add(p.toString());
- continue;
- }
- }
+ public String getFunctionUuid() {
+ return functionUuid;
+ }
- if (!StringUtils.isEmpty(faceField.getFieldName())) {
- fieldNames.add(StringUtils.isEmpty(tableAlias) ? faceField.getFieldName() : ("`" + tableAlias + "`.`" + fieldName + "`"));
- }
- }
- //鑾峰彇redis 璧峰key
- String faceListKey = SystemFaceService.FACE_LIST_KEY;
- //閲嶆柊鏀惧叆redis
- RedisUtil.set(faceListKey + getUuid(), this);
- return maps;
- }
+ public void setFunctionUuid(String functionUuid) {
+ this.functionUuid = functionUuid;
+ }
- /**
- * 瀛楁瀹炰綋绫�
- */
- public class FaceField implements Serializable {
+ public List<FaceField> getFaceFields() {
+ return faceFields;
+ }
- private static final long serialVersionUID = 3154509166818911568L;
- /**
- * 瀛楁鍚嶇О
- */
- private String fieldName;
- /**
- * 瀛楁uuid
- */
- private String fieldUuid;
- /**
- * 鍒楀悕
- */
- private String columnName;
- /**
- * 鍒楀
- */
- private String columnWidth;
- /**
- * 鎺掑簭
- */
- private Integer sequence;
- /**
- * 瀛楁鍙傜収
- */
- private String fieldReference;
+ public void setFaceFields(List<FaceField> faceFields) {
+ this.faceFields = faceFields;
+ }
- public String getFieldReference() {
- return fieldReference;
- }
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
- public void setFieldReference(String fieldReference) {
- this.fieldReference = fieldReference;
- }
+ public String getTreeShow() {
+ return treeShow;
+ }
- public String getFieldName() {
- return fieldName;
- }
+ public void setTreeShow(String treeShow) {
+ this.treeShow = treeShow;
+ }
- public void setFieldName(String fieldName) {
- this.fieldName = fieldName;
- }
+ public String getTreeDataType() {
+ return treeDataType;
+ }
- public String getFieldUuid() {
- return fieldUuid;
- }
+ public void setTreeDataType(String treeDataType) {
+ this.treeDataType = treeDataType;
+ }
- public void setFieldUuid(String fieldUuid) {
- this.fieldUuid = fieldUuid;
- }
+ public String getTreeDataSource() {
+ return treeDataSource;
+ }
- public String getColumnName() {
- return columnName;
- }
+ public void setTreeDataSource(String treeDataSource) {
+ this.treeDataSource = treeDataSource;
+ }
- public void setColumnName(String columnName) {
- this.columnName = columnName;
- }
+ public String getTreeLabelKey() {
+ return treeLabelKey;
+ }
- public String getColumnWidth() {
- return columnWidth;
- }
+ public void setTreeLabelKey(String treeLabelKey) {
+ this.treeLabelKey = treeLabelKey;
+ }
- public void setColumnWidth(String columnWidth) {
- this.columnWidth = columnWidth;
- }
+ public String getTreeValueKey() {
+ return treeValueKey;
+ }
- public Integer getSequence() {
- return sequence;
- }
+ public void setTreeValueKey(String treeValueKey) {
+ this.treeValueKey = treeValueKey;
+ }
- public void setSequence(Integer sequence) {
- this.sequence = sequence;
- }
+ /**
+ * 鑾峰彇鍙傜収鏉′欢
+ *
+ * @param fieldName
+ * @param dictName
+ * @return
+ */
+ private String getDictFilter(String fieldName, String dictName) {
+ StringBuilder filter = new StringBuilder();
+ DictService bean = SpringBeanUtil.getBean(DictService.class);
+ String manager_type = null;
+ SystemUser currentUser = SpringMVCContextHolder.getCurrentUser();
+ if (currentUser != null && currentUser.getCurrentManager() != null) {
+ manager_type = currentUser.getCurrentManager().getString(CmnConst.MANAGER_TYPE);
+ } else {
+ manager_type = null;
+ }
+ //鎷艰鏅�氬弬鐓ф煡璇㈡墍闇�鍙傛暟
+ FieldSetEntity fse = new FieldSetEntity();
+ fse.setTableName(CmnConst.PRODUCT_SYS_DICT);
+ fse.setValue(CmnConst.DICT_NAME, dictName);
+ fse.setValue(CoreConst.SYSTEM_CLIENT_TYPE_, currentUser.getClientType());
+ //鑾峰彇鍙傜収闆嗗悎
+ DataTableEntity dataTableEntity = bean.listDictByname(fse, manager_type);
+ if (!BaseUtil.dataTableIsEmpty(dataTableEntity)) {
+ //缁勬垚鏉′欢
+ Object[] uuids = dataTableEntity.getUuids();
+ filter.append(fieldName);
+ filter.append(" in (SELECT dict_value FROM product_sys_dict where ");
+ filter.append(BaseUtil.buildQuestionMarkFilter("uuid", uuids, true));
+ filter.append(" and dict_label like concat('%','~val~','%') ) ");
+ }
+ return filter.toString();
+ }
+ /**
+ * 鑾峰彇鏉′欢
+ *
+ * @param tableAlias 琛ㄥ埆鍚�
+ * @param aliasField 瀛楁鍒悕
+ * @return
+ */
+ public Map<String, List<String>> getFilters(String tableAlias, Map<String, List<String>> aliasField) {
+ DataPoolCacheImpl poolCache = null;
+ //鎵�鏈夊瓧娈甸泦鍚�
+ List<FaceField> faceFields = this.getFaceFields();
+ //鏅�氭ā绯婃煡璇㈠瓧娈甸泦鍚�
+ List<String> fieldNames = Lists.newArrayList();
+ //鍙傜収妯$硦鏌ヨ鏉′欢闆嗗悎
+ List<String> filters = Lists.newArrayList();
+ //杩斿洖鐨勭粨鏋滈泦
+ Map<String, List<String>> maps = Maps.newHashMap();
+ maps.put("fields", fieldNames);
+ maps.put("filter", filters);
+ for (int i = 0; i < faceFields.size(); i++) {
+ FaceField faceField = faceFields.get(i);
+ if (!faceField.isSearch()) {
+ continue;
+ }
+ if (StringUtils.isEmpty(faceField.getFieldName()) || StringUtils.isEmpty(faceField.getFieldReference())) {
+ if (poolCache == null) {
+ poolCache = DataPoolCacheImpl.getInstance();
+ }
+ DataTableEntity dt = poolCache.getCacheData("琛ㄥ瓧娈典俊鎭�", new String[]{getTableUuid(), faceField.getFieldName()});
+ if (BaseUtil.dataTableIsEmpty(dt)) {
+ } else {
+ FieldSetEntity f = dt.getFieldSetEntity(0);
+ faceField.setFieldName(f.getString(CmnConst.FIELD_NAME));
+ faceField.setFieldReference(f.getString("field_reference"));
+ }
+ }
+ //瀛楁鍚嶇О
+ String fieldName = faceField.getFieldName();
+ if (!StringUtils.isEmpty(fieldName)) {
+ fieldName.trim();
+ }
+ if (aliasField != null && !StringUtils.isEmpty(fieldName)) {
+ List<String> fieldAlias = aliasField.get(getTableName() + "." + fieldName);
+ if (fieldAlias != null && fieldAlias.size() > 0) {
+ String alias = fieldAlias.get(0);
+ if (!StringUtils.isEmpty(alias)) {
+ fieldName = alias.trim();
+ }
+ }
+ }
+ //鍙傜収澶勭悊
+ String field_reference = faceField.getFieldReference();
+ if (!StringUtils.isEmpty(field_reference)) {
+ if (field_reference.indexOf("銆�") == 0 && field_reference.indexOf("銆�") > 0) {
+ //鏅�氬弬鐓�
+ filters.add(getDictFilter(getFieldName(tableAlias, fieldName), field_reference.replace("銆�", "").replace("銆�", "")));
+ continue;
+ } else {
+ if (poolCache == null) {
+ poolCache = DataPoolCacheImpl.getInstance();
+ }
+ //楂樼骇鍙傜収
+ DataTableEntity prompt = poolCache.getCacheData("楂樼骇鍙傜収閰嶇疆淇℃伅", new String[]{field_reference});
+ if (BaseUtil.dataTableIsEmpty(prompt)) {
+ continue;
+ }
+ FieldSetEntity ff = prompt.getFieldSetEntity(0);
+ StringBuilder p = new StringBuilder();
+ p.append(getFieldName(tableAlias, fieldName)).append(" in ").append(" ( SELECT ").append(ff.getString("value_field")).append(" FROM ").append(ff.getString("source_table"));
+ p.append(" WHERE ").append(ff.getString("view_fields")).append(" like concat('%','~val~','%') )");
+ filters.add(p.toString());
+ continue;
+ }
+ }
- }
+ if (!StringUtils.isEmpty(faceField.getFieldName())) {
+ fieldNames.add(getFieldName(tableAlias, fieldName));
+ }
+ }
+ //鑾峰彇redis 璧峰key
+ String faceListKey = SystemFaceService.FACE_LIST_KEY;
+ //閲嶆柊鏀惧叆redis
+ RedisUtil.set(faceListKey + getUuid(), JSON.parseObject(JSON.toJSONString(this), com.product.admin.entity.FaceListEntity.class));
+ return maps;
+ }
+ /**
+ * 鏂扮殑鏂规硶锛屾牴鎹煡璇㈣鍙ョ殑涓殑琛ㄥ埆鍚嶏紝鐢熸垚鏌ヨ鏉′欢
+ *
+ * @param tableAlias 琛ㄥ埆鍚�
+ * @param aliasField 瀛楁鍒悕
+ * @param tableAndField 琛ㄤ腑瀛楁
+ * @return
+ */
+ public Map<String, List<String>> getFilters(Map<String, List<String>> tableAlias, Map<String, List<String>> aliasField,Map<String, List<String>> tableAndField) {
+ DataPoolCacheImpl poolCache = null;
+ //鎵�鏈夊瓧娈甸泦鍚�
+ List<FaceField> faceFields = this.getFaceFields();
+ //鏅�氭ā绯婃煡璇㈠瓧娈甸泦鍚�
+ List<String> fieldNames = Lists.newArrayList();
+ //鍙傜収妯$硦鏌ヨ鏉′欢闆嗗悎
+ List<String> filters = Lists.newArrayList();
+ //杩斿洖鐨勭粨鏋滈泦
+ Map<String, List<String>> maps = Maps.newHashMap();
+ maps.put("fields", fieldNames);
+ maps.put("filter", filters);
+ for (int i = 0; i < faceFields.size(); i++) {
+ FaceField faceField = faceFields.get(i);
+
+ if (!faceField.isSearch()) {
+ continue;
+ }
+ if (StringUtils.isEmpty(faceField.getFieldName()) || StringUtils.isEmpty(faceField.getFieldReference())) {
+ if (poolCache == null) {
+ poolCache = DataPoolCacheImpl.getInstance();
+ }
+ DataTableEntity dt = poolCache.getCacheData("琛ㄥ瓧娈典俊鎭�", new String[]{getTableUuid(), faceField.getFieldName()});
+ if (BaseUtil.dataTableIsEmpty(dt)) {
+ } else {
+ FieldSetEntity f = dt.getFieldSetEntity(0);
+ faceField.setFieldName(f.getString(CmnConst.FIELD_NAME));
+ faceField.setFieldReference(f.getString("field_reference"));
+ }
+ }
+ //瀛楁鍚嶇О
+ String fieldName = faceField.getFieldName();
+ if (!StringUtils.isEmpty(fieldName)) {
+ fieldName.trim();
+ }
+ if (aliasField != null && !StringUtils.isEmpty(fieldName)) {
+ List<String> fieldAlias = aliasField.get(getTableName() + "." + fieldName);
+ if (fieldAlias != null && fieldAlias.size() > 0) {
+ String alias = fieldAlias.get(0);
+ if (!StringUtils.isEmpty(alias)) {
+ fieldName = alias.trim();
+ }
+ }
+ }
+ //鍙傜収澶勭悊
+ String field_reference = faceField.getFieldReference();
+ if (!StringUtils.isEmpty(field_reference)) {
+ if (field_reference.indexOf("銆�") == 0 && field_reference.indexOf("銆�") > 0) {
+ //鏅�氬弬鐓�
+ filters.add(getDictFilter(getFieldName(tableAlias,aliasField, tableAndField, fieldName), field_reference.replace("銆�", "").replace("銆�", "")));
+ continue;
+ } else {
+ if (poolCache == null) {
+ poolCache = DataPoolCacheImpl.getInstance();
+ }
+ //楂樼骇鍙傜収
+ DataTableEntity prompt = poolCache.getCacheData("楂樼骇鍙傜収閰嶇疆淇℃伅", new String[]{field_reference});
+ if (BaseUtil.dataTableIsEmpty(prompt)) {
+ continue;
+ }
+ FieldSetEntity ff = prompt.getFieldSetEntity(0);
+ StringBuilder p = new StringBuilder();
+ p.append(getFieldName(tableAlias,aliasField, tableAndField, fieldName)).append(" in ").append(" ( SELECT ").append(ff.getString("value_field")).append(" FROM ").append(ff.getString("source_table"));
+ p.append(" WHERE ").append(ff.getString("view_fields")).append(" like concat('%','~val~','%') )");
+ filters.add(p.toString());
+ continue;
+ }
+ }
+
+ if (!StringUtils.isEmpty(faceField.getFieldName())) {
+ fieldNames.add(getFieldName(tableAlias,aliasField, tableAndField, fieldName));
+ }
+ }
+ //鑾峰彇redis 璧峰key
+ String faceListKey = SystemFaceService.FACE_LIST_KEY;
+ //閲嶆柊鏀惧叆redis
+ RedisUtil.set(faceListKey + getUuid(), JSON.parseObject(JSON.toJSONString(this), com.product.admin.entity.FaceListEntity.class));
+ return maps;
+ }
+
+ private String getFieldName(String tableAlias, String fieldName) {
+ fieldName = "`" + fieldName + "`";
+ if (!StringUtils.isEmpty(tableAlias)) {
+ return "`" + tableAlias + "`." + fieldName;
+ }
+ return fieldName;
+ }
+ //鏂版柟娉�
+ private String getFieldName(Map<String, List<String>> tableAlias,Map<String, List<String>> aliasField, Map<String, List<String>> tableAndField, String fieldName) {
+ String table=null;
+ boolean b=false;
+ if(tableAndField!=null && !tableAndField.isEmpty()) {
+ for(String key:tableAndField.keySet()) {
+ for(String field:tableAndField.get(key)) {
+ if(fieldName.equals(field)) {
+
+ List<String>alias=tableAlias.get(key);
+ if(alias!=null && !alias.isEmpty()) {
+ table=alias.get(0);//鍙栫涓�涓埆鍚�
+ }
+ b=true;
+ break;
+ }
+ }
+ if(b)break;
+ }
+ }
+ b=false;
+ //鎵惧埌瀛楁鐨勭湡瀹炲悕瀛�
+ for(String f:aliasField.keySet()) {
+ List<String> fs=aliasField.get(f);
+ if(!fs.isEmpty()) {
+ for(String af:fs) {
+ //瀛楁鍒悕鏈夊彲鑳芥槸甯� 琛ㄥ埆鍚�
+ int c=af.indexOf('.');
+ if(c>0)af=af.substring(c+1);
+ if(fieldName.equals(af)) {
+ fieldName=f;
+ b=true;
+ break;
+ }
+ }
+ }
+ if(b)break;
+ }
+
+ if (fieldName.indexOf('.')<0 && !StringUtils.isEmpty(table)) {
+ return "`" + table + "`." + fieldName;
+ }
+ return fieldName;
+ }
+
+ /**
+ * 瀛楁瀹炰綋绫�
+ */
+ public class FaceField implements Serializable {
+
+ private static final long serialVersionUID = 3154509166818911568L;
+ /**
+ * 瀛楁鍚嶇О
+ */
+ private String fieldName;
+ /**
+ * 瀛楁uuid
+ */
+ private String fieldUuid;
+ /**
+ * 鍒楀悕
+ */
+ private String columnName;
+ /**
+ * 鍒楀
+ */
+ private String columnWidth;
+ /**
+ * 鎺掑簭
+ */
+ private Integer sequence;
+ /**
+ * 瀛楁鍙傜収
+ */
+ private String fieldReference;
+
+ private boolean search;
+
+ public String getFieldReference() {
+ return fieldReference;
+ }
+
+ public void setFieldReference(String fieldReference) {
+ this.fieldReference = fieldReference;
+ }
+
+ public String getFieldName() {
+ return fieldName;
+ }
+
+ public void setFieldName(String fieldName) {
+ this.fieldName = fieldName;
+ }
+
+ public String getFieldUuid() {
+ return fieldUuid;
+ }
+
+ public void setFieldUuid(String fieldUuid) {
+ this.fieldUuid = fieldUuid;
+ }
+
+ public String getColumnName() {
+ return columnName;
+ }
+
+ public void setColumnName(String columnName) {
+ this.columnName = columnName;
+ }
+
+ public String getColumnWidth() {
+ return columnWidth;
+ }
+
+ public void setColumnWidth(String columnWidth) {
+ this.columnWidth = columnWidth;
+ }
+
+ public Integer getSequence() {
+ return sequence;
+ }
+
+ public void setSequence(Integer sequence) {
+ this.sequence = sequence;
+ }
+
+ public boolean isSearch() {
+ return search;
+ }
+
+ public void setSearch(boolean search) {
+ this.search = search;
+ }
+ }
+
}
--
Gitblit v1.9.2