From b8dbd91e4a1552a1e11cd5fe4eef09f296cf656b Mon Sep 17 00:00:00 2001
From: shicf <shi_chongfu@163.com>
Date: 星期一, 04 八月 2025 16:13:21 +0800
Subject: [PATCH] 综合搜索,多表且有别名,报错

---
 src/main/java/com/product/face/service/FaceListSearchService.java |   66 ++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/product/face/service/FaceListSearchService.java b/src/main/java/com/product/face/service/FaceListSearchService.java
index f70da33..eb8a71f 100644
--- a/src/main/java/com/product/face/service/FaceListSearchService.java
+++ b/src/main/java/com/product/face/service/FaceListSearchService.java
@@ -19,7 +19,18 @@
  */
 @Component
 public class FaceListSearchService extends AbstractBaseService {
-
+	
+	/**
+	 * 涓嶇敤
+	 * 鍒楄〃鍏抽敭瀛楁悳绱�
+	 * @param aliasTable
+	 * @param aliasField
+	 * @param faceUuid
+	 * @param faceNumber
+	 * @param val
+	 * @return
+	 * @throws BaseException
+	 */
 	public String getFaceListSearchFilter(Map<String, List<String>> aliasTable, Map<String, List<String>> aliasField, String faceUuid, String faceNumber, String val) throws BaseException {
 		if (StringUtils.isEmpty(val)) {
 			return "";
@@ -57,4 +68,57 @@
 		}
 		return "";
 	}
+	/**
+	 * 鍒楄〃鍏抽敭瀛楁悳绱�
+	 * @param aliasTable  {"product_sys_staffs":["a"],"product_sys_users":["b"],"product_sys_job_posts":["e"],"product_sys_org_levels":["c","d"]}
+	 * @param aliasField
+	 * @param faceUuid
+	 * @param faceNumber
+	 * @param val
+	 * @param tableOfField  琛ㄥ搴斿瓧娈� 濡傦細table_relate_fields = {
+		"product_sys_staffs": ["uuid", "staff_status", "staff_avatar", "show_name", "mobile_phone", "staff_status_save_value", "status_save_value"],
+		"product_sys_users": ["uuid1", "user_name", "user_id", "user_account", "status"],
+		"product_sys_job_posts": ["job_post_uuid"],
+		"product_sys_org_levels": ["uuid2", "uuid3", "org_level_uuid", "dept_uuid"]
+	}
+	 * @return
+	 * @throws BaseException
+	 */
+	public String getFaceListSearchFilter(Map<String, List<String>> aliasTable, Map<String, List<String>> aliasField, String faceUuid, String faceNumber, String val, Map<String, List<String>> tableOfField) throws BaseException {
+		if (StringUtils.isEmpty(val)) {
+			return "";
+		}
+		FaceListEntity face = null;
+		if (!StringUtils.isEmpty(faceNumber)) {
+			face = (FaceListEntity) RedisUtil.get(FaceConst.FACE_LIST_KEY + ":face-number" + faceNumber);
+		} else if (!StringUtils.isEmpty(faceUuid)) {
+			face = JSON.parseObject(JSON.toJSONString(RedisUtil.get(FaceConst.FACE_LIST_KEY + faceUuid)), FaceListEntity.class);
+		}
+		if (face != null) {
+			String tableAlias = null;
+			String tableName = face.getTableName();
+			List<String> t = aliasTable.get(tableName);
+			if (t != null && t.size() > 0) {
+				tableAlias = t.get(0);
+			}
+			Map<String, List<String>> params = face.getFilters(aliasTable, aliasField,tableOfField);
+			List<String> fieldNames = params.get("fields");
+			List<String> filters = params.get("filter");
+			String filter = "";
+			for (int i = 0; i < fieldNames.size(); i++) {
+				if (i > 0) {
+					filter += " or ";
+				}
+				filter += " " + fieldNames.get(i) + " LIKE BINARY concat('%','" + val + "','%')";
+			}
+			for (int i = 0; i < filters.size(); i++) {
+				if (!"".equals(filter)) {
+					filter += " or ";
+				}
+				filter += filters.get(i).replace("~val~", val);
+			}
+			return "".equals(filter) ? "" : "( " + filter + " )";
+		}
+		return "";
+	}
 }

--
Gitblit v1.9.2