From 05148eeef860d33232874a640dbd67ba43ac5686 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 12:51:49 +0800
Subject: [PATCH] #AI.配置中心可运营化
---
rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java | 68 +++++++++++++++++----------------
1 files changed, 35 insertions(+), 33 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java
index 0a8350d..b0d2e1c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java
@@ -27,18 +27,21 @@
private final BasStationService basStationService;
private final DictDataService dictDataService;
- @Tool(name = "rsf_query_warehouses", description = "鎸変粨搴撶紪鐮佹垨鍚嶇О鏌ヨ浠撳簱鍩虹淇℃伅銆�")
+ @Tool(name = "rsf_query_warehouses", description = "鍙鏌ヨ宸ュ叿銆傛寜浠撳簱缂栫爜鎴栧悕绉版煡璇粨搴撳熀纭�淇℃伅銆�")
public List<Map<String, Object>> queryWarehouses(
@ToolParam(description = "浠撳簱缂栫爜锛屽彲閫�") String code,
@ToolParam(description = "浠撳簱鍚嶇О锛屽彲閫�") String name,
@ToolParam(description = "杩斿洖鏉℃暟锛岄粯璁� 10锛屾渶澶� 50") Integer limit) {
+ String normalizedCode = BuiltinToolGovernanceSupport.sanitizeQueryText(code, "浠撳簱缂栫爜", 64);
+ String normalizedName = BuiltinToolGovernanceSupport.sanitizeQueryText(name, "浠撳簱鍚嶇О", 100);
+ BuiltinToolGovernanceSupport.requireAnyFilter("浠撳簱鏌ヨ鑷冲皯闇�瑕佹彁渚涗粨搴撶紪鐮佹垨鍚嶇О", normalizedCode, normalizedName);
LambdaQueryWrapper<Warehouse> queryWrapper = new LambdaQueryWrapper<>();
- int finalLimit = normalizeLimit(limit, 10, 50);
- if (StringUtils.hasText(code)) {
- queryWrapper.like(Warehouse::getCode, code);
+ int finalLimit = BuiltinToolGovernanceSupport.normalizeLimit(limit, 10, 50);
+ if (StringUtils.hasText(normalizedCode)) {
+ queryWrapper.like(Warehouse::getCode, normalizedCode);
}
- if (StringUtils.hasText(name)) {
- queryWrapper.like(Warehouse::getName, name);
+ if (StringUtils.hasText(normalizedName)) {
+ queryWrapper.like(Warehouse::getName, normalizedName);
}
queryWrapper.orderByAsc(Warehouse::getCode).last("LIMIT " + finalLimit);
List<Warehouse> warehouses = warehouseService.list(queryWrapper);
@@ -58,22 +61,27 @@
return result;
}
- @Tool(name = "rsf_query_bas_stations", description = "鎸夌珯鐐圭紪鍙枫�佺珯鐐瑰悕绉版垨浣跨敤鐘舵�佹煡璇㈠熀纭�绔欑偣銆�")
+ @Tool(name = "rsf_query_bas_stations", description = "鍙鏌ヨ宸ュ叿銆傛寜绔欑偣缂栧彿銆佺珯鐐瑰悕绉版垨浣跨敤鐘舵�佹煡璇㈠熀纭�绔欑偣銆�")
public List<Map<String, Object>> queryBasStations(
- @ToolParam(description = "绔欑偣缂栧彿锛屽彲閫�") String stationName,
- @ToolParam(description = "绔欑偣鍚嶇О锛屽彲閫�") String stationId,
+ @ToolParam(description = "绔欑偣鍚嶇О锛屽彲閫�") String stationName,
+ @ToolParam(description = "绔欑偣缂栧彿锛屽彲閫�") String stationId,
@ToolParam(description = "浣跨敤鐘舵�侊紝鍙��") String useStatus,
@ToolParam(description = "杩斿洖鏉℃暟锛岄粯璁� 10锛屾渶澶� 50") Integer limit) {
+ String normalizedStationName = BuiltinToolGovernanceSupport.sanitizeQueryText(stationName, "绔欑偣鍚嶇О", 100);
+ String normalizedStationId = BuiltinToolGovernanceSupport.sanitizeQueryText(stationId, "绔欑偣缂栧彿", 64);
+ String normalizedUseStatus = BuiltinToolGovernanceSupport.sanitizeQueryText(useStatus, "浣跨敤鐘舵��", 32);
+ BuiltinToolGovernanceSupport.requireAnyFilter("鍩虹绔欑偣鏌ヨ鑷冲皯闇�瑕佹彁渚涚珯鐐瑰悕绉般�佺珯鐐圭紪鍙锋垨浣跨敤鐘舵��",
+ normalizedStationName, normalizedStationId, normalizedUseStatus);
LambdaQueryWrapper<BasStation> queryWrapper = new LambdaQueryWrapper<>();
- int finalLimit = normalizeLimit(limit, 10, 50);
- if (StringUtils.hasText(stationName)) {
- queryWrapper.like(BasStation::getStationName, stationName);
+ int finalLimit = BuiltinToolGovernanceSupport.normalizeLimit(limit, 10, 50);
+ if (StringUtils.hasText(normalizedStationName)) {
+ queryWrapper.like(BasStation::getStationName, normalizedStationName);
}
- if (StringUtils.hasText(stationId)) {
- queryWrapper.like(BasStation::getStationId, stationId);
+ if (StringUtils.hasText(normalizedStationId)) {
+ queryWrapper.like(BasStation::getStationId, normalizedStationId);
}
- if (StringUtils.hasText(useStatus)) {
- queryWrapper.eq(BasStation::getUseStatus, useStatus);
+ if (StringUtils.hasText(normalizedUseStatus)) {
+ queryWrapper.eq(BasStation::getUseStatus, normalizedUseStatus);
}
queryWrapper.orderByAsc(BasStation::getStationName).last("LIMIT " + finalLimit);
List<BasStation> stations = basStationService.list(queryWrapper);
@@ -98,23 +106,26 @@
return result;
}
- @Tool(name = "rsf_query_dict_data", description = "鏍规嵁瀛楀吀绫诲瀷缂栫爜鏌ヨ瀛楀吀鏁版嵁锛屽彲鎸夊�兼垨鏍囩杩涗竴姝ヨ繃婊ゃ��")
+ @Tool(name = "rsf_query_dict_data", description = "鍙鏌ヨ宸ュ叿銆傛牴鎹瓧鍏哥被鍨嬬紪鐮佹煡璇㈠瓧鍏告暟鎹紝鍙寜鍊兼垨鏍囩杩涗竴姝ヨ繃婊ゃ��")
public List<Map<String, Object>> queryDictData(
@ToolParam(required = true, description = "瀛楀吀绫诲瀷缂栫爜") String dictTypeCode,
@ToolParam(description = "瀛楀吀鍊硷紝鍙��") String value,
@ToolParam(description = "瀛楀吀鏍囩锛屽彲閫�") String label,
@ToolParam(description = "杩斿洖鏉℃暟锛岄粯璁� 20锛屾渶澶� 100") Integer limit) {
- if (!StringUtils.hasText(dictTypeCode)) {
+ String normalizedDictTypeCode = BuiltinToolGovernanceSupport.sanitizeQueryText(dictTypeCode, "瀛楀吀绫诲瀷缂栫爜", 64);
+ String normalizedValue = BuiltinToolGovernanceSupport.sanitizeQueryText(value, "瀛楀吀鍊�", 64);
+ String normalizedLabel = BuiltinToolGovernanceSupport.sanitizeQueryText(label, "瀛楀吀鏍囩", 100);
+ if (!StringUtils.hasText(normalizedDictTypeCode)) {
throw new CoolException("瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖");
}
- int finalLimit = normalizeLimit(limit, 20, 100);
+ int finalLimit = BuiltinToolGovernanceSupport.normalizeLimit(limit, 20, 100);
LambdaQueryWrapper<DictData> queryWrapper = new LambdaQueryWrapper<DictData>()
- .eq(DictData::getDictTypeCode, dictTypeCode);
- if (StringUtils.hasText(value)) {
- queryWrapper.like(DictData::getValue, value);
+ .eq(DictData::getDictTypeCode, normalizedDictTypeCode);
+ if (StringUtils.hasText(normalizedValue)) {
+ queryWrapper.like(DictData::getValue, normalizedValue);
}
- if (StringUtils.hasText(label)) {
- queryWrapper.like(DictData::getLabel, label);
+ if (StringUtils.hasText(normalizedLabel)) {
+ queryWrapper.like(DictData::getLabel, normalizedLabel);
}
queryWrapper.orderByAsc(DictData::getSort).last("LIMIT " + finalLimit);
List<DictData> dictDataList = dictDataService.list(queryWrapper);
@@ -135,13 +146,4 @@
return result;
}
- private int normalizeLimit(Integer limit, int defaultValue, int maxValue) {
- if (limit == null) {
- return defaultValue;
- }
- if (limit < 1 || limit > maxValue) {
- throw new CoolException("limit 蹇呴』鍦� 1 鍒� " + maxValue + " 涔嬮棿");
- }
- return limit;
- }
}
--
Gitblit v1.9.1