From a64774b3898c4ce8e7d3aa0ccc3c4ee92861d2a6 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 21 五月 2026 15:03:51 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New_pro
---
src/main/java/com/ruoyi/ai/tools/ApproveTodoTools.java | 68 ++++++++++++++++++++++++++++------
1 files changed, 56 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/ruoyi/ai/tools/ApproveTodoTools.java b/src/main/java/com/ruoyi/ai/tools/ApproveTodoTools.java
index 8215ce8..fec0c21 100644
--- a/src/main/java/com/ruoyi/ai/tools/ApproveTodoTools.java
+++ b/src/main/java/com/ruoyi/ai/tools/ApproveTodoTools.java
@@ -70,36 +70,64 @@
this.aiSessionUserContext = aiSessionUserContext;
}
- @Tool(name = "鏌ヨ瀹℃壒寰呭姙鍒楄〃", value = "鏌ヨ褰撳墠鐧诲綍浜虹浉鍏崇殑瀹℃壒寰呭姙锛屼紭鍏堣繑鍥炶嚜宸卞緟澶勭悊鐨勫鎵癸紝鏀寔鎸夌姸鎬併�佺被鍨嬨�佸叧閿瓧杩囨护銆�")
+ @Tool(name = "鏌ヨ瀹℃壒寰呭姙鍒楄〃", value = "鏌ヨ褰撳墠鐧诲綍浜虹浉鍏崇殑瀹℃壒寰呭姙锛屼紭鍏堣繑鍥炶嚜宸卞緟澶勭悊鐨勫鎵癸紝鏀寔鎸夌姸鎬併�佺被鍨嬨�佸叧閿瓧鍜岃寖鍥磋繃婊ゃ��")
public String listTodos(@ToolMemoryId String memoryId,
@P(value = "瀹℃壒鐘舵�侊紝鍙�夊�硷細all銆乸ending銆乸rocessing銆乤pproved銆乺ejected銆乺esubmitted", required = false) String status,
@P(value = "瀹℃壒绫诲瀷缂栧彿锛屽彲涓嶄紶", required = false) Integer approveType,
@P(value = "鍏抽敭瀛楋紝鍙尮閰嶆祦绋嬬紪鍙枫�佹爣棰樸�佺敵璇蜂汉銆佸綋鍓嶅鎵逛汉", required = false) String keyword,
- @P(value = "杩斿洖鏉℃暟锛岄粯璁�10锛屾渶澶�20", required = false) Integer limit) {
+ @P(value = "杩斿洖鏉℃暟锛岄粯璁�10锛屾渶澶�20", required = false) Integer limit,
+ @P(value = "鏌ヨ鑼冨洿锛屽彲閫夊�硷細related銆乤pplicant銆乤pprover锛況elated 琛ㄧず褰撳墠鐢ㄦ埛鐩稿叧锛宎pplicant 琛ㄧず鎴戝彂璧风殑锛宎pprover 琛ㄧず寰呮垜澶勭悊鐨�", required = false) String scope,
+ @P(value = "寮�濮嬫棩鏈� yyyy-MM-dd锛屽彲涓嶄紶", required = false) String startDate,
+ @P(value = "缁撴潫鏃ユ湡 yyyy-MM-dd锛屽彲涓嶄紶", required = false) String endDate,
+ @P(value = "鏃堕棿鑼冨洿鎻忚堪锛屼緥濡� 浠婂ぉ銆佹湰鏈堛�佽繎30澶╋紝鍙笉浼�", required = false) String timeRange) {
LoginUser loginUser = currentLoginUser(memoryId);
Long userId = loginUser.getUserId();
Integer statusCode = parseStatus(status);
+ String normalizedScope = normalizeScope(scope);
+ boolean hasDateFilter = StringUtils.hasText(startDate) || StringUtils.hasText(endDate) || StringUtils.hasText(timeRange);
+ DateRange dateRange = hasDateFilter ? resolveDateRange(startDate, endDate, timeRange) : null;
LambdaQueryWrapper<ApproveProcess> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(ApproveProcess::getApproveDelete, 0)
- .ne(ApproveProcess::getApproveStatus, 2);
+ wrapper.eq(ApproveProcess::getApproveDelete, 0);
+ if (statusCode == null) {
+ wrapper.ne(ApproveProcess::getApproveStatus, 2);
+ }
if (approveType != null) {
wrapper.eq(ApproveProcess::getApproveType, approveType);
}
-// if (StringUtils.hasText(keyword)) {
-// wrapper.and(w -> w.like(ApproveProcess::getApproveId, keyword)
-// .or().like(ApproveProcess::getApproveReason, keyword)
-// .or().like(ApproveProcess::getApproveUserName, keyword)
-// .or().like(ApproveProcess::getApproveUserCurrentName, keyword));
-// }
- if (statusCode != null && (statusCode == 0 || statusCode == 1)) {
+ if (StringUtils.hasText(keyword)) {
+ wrapper.and(w -> w.like(ApproveProcess::getApproveId, keyword)
+ .or().like(ApproveProcess::getApproveReason, keyword)
+ .or().like(ApproveProcess::getApproveUserName, keyword)
+ .or().like(ApproveProcess::getApproveUserCurrentName, keyword));
+ }
+ if ("applicant".equals(normalizedScope)) {
+ wrapper.eq(ApproveProcess::getApproveUser, userId);
+ if (statusCode != null) {
+ wrapper.eq(ApproveProcess::getApproveStatus, statusCode);
+ }
+ } else if ("approver".equals(normalizedScope)) {
wrapper.eq(ApproveProcess::getApproveUserCurrentId, userId);
+ if (statusCode != null) {
+ wrapper.eq(ApproveProcess::getApproveStatus, statusCode);
+ }
+ } else if (statusCode != null && (statusCode == 0 || statusCode == 1)) {
+ wrapper.eq(ApproveProcess::getApproveUserCurrentId, userId);
+ wrapper.eq(ApproveProcess::getApproveStatus, statusCode);
} else {
wrapper.and(w -> w.eq(ApproveProcess::getApproveUser, userId)
.or().eq(ApproveProcess::getApproveUserCurrentId, userId)
.or().apply("FIND_IN_SET({0}, approve_user_ids)", userId));
+ if (statusCode != null) {
+ wrapper.eq(ApproveProcess::getApproveStatus, statusCode);
+ }
+ }
+
+ if (dateRange != null) {
+ wrapper.ge(ApproveProcess::getCreateTime, dateRange.start().atStartOfDay())
+ .lt(ApproveProcess::getCreateTime, dateRange.end().plusDays(1).atStartOfDay());
}
wrapper.orderByDesc(ApproveProcess::getCreateTime)
@@ -137,7 +165,11 @@
"count", items.size(),
"statusFilter", StringUtils.hasText(status) ? status : "all",
"approveType", approveType == null ? "" : approveType,
- "keyword", keyword == null ? "" : keyword
+ "keyword", keyword == null ? "" : keyword,
+ "scope", normalizedScope,
+ "timeRange", dateRange == null ? "all" : dateRange.label(),
+ "startDate", dateRange == null ? "" : dateRange.start().toString(),
+ "endDate", dateRange == null ? "" : dateRange.end().toString()
),
Map.of("columns", todoColumns(), "items", items),
Map.of());
@@ -638,6 +670,17 @@
};
}
+ private String normalizeScope(String scope) {
+ if (!StringUtils.hasText(scope)) {
+ return "related";
+ }
+ return switch (scope.trim().toLowerCase()) {
+ case "applicant", "mine", "created", "initiated" -> "applicant";
+ case "approver", "handler", "todo", "pending" -> "approver";
+ default -> "related";
+ };
+ }
+
private String approveStatusName(Integer status) {
if (status == null) {
return "鏈煡";
@@ -677,6 +720,7 @@
case 6 -> "鎶ヤ环瀹℃壒";
case 7 -> "鍙戣揣瀹℃壒";
case 8 -> "鍗遍櫓浣滀笟瀹℃壒";
+ case 9 -> "鍔炲叕鐢ㄥ搧瀹℃壒";
default -> "绫诲瀷" + type;
};
}
--
Gitblit v1.9.3