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