From 63b01db83d9aad8a15276b4236a9a22e4aeef065 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 05 五月 2026 12:30:59 +0800
Subject: [PATCH] # Agent数据分析V3.0.1.7
---
src/main/java/com/zy/ai/mcp/service/impl/WcsDataFacadeImpl.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 119 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/ai/mcp/service/impl/WcsDataFacadeImpl.java b/src/main/java/com/zy/ai/mcp/service/impl/WcsDataFacadeImpl.java
index d7fb5e7..63a30d8 100644
--- a/src/main/java/com/zy/ai/mcp/service/impl/WcsDataFacadeImpl.java
+++ b/src/main/java/com/zy/ai/mcp/service/impl/WcsDataFacadeImpl.java
@@ -11,9 +11,18 @@
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.WrkAnalysisMapper;
+import com.zy.asrs.service.BasCrnpErrLogService;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.BasDualCrnpErrLogService;
+import com.zy.asrs.service.BasRgvErrLogService;
import com.zy.asrs.service.BasRgvService;
+import com.zy.asrs.service.BasStationErrLogService;
import com.zy.asrs.service.WrkMastService;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
@@ -48,6 +57,16 @@
private ConfigService configService;
@Autowired
private MainProcessPseudocodeService mainProcessPseudocodeService;
+ @Autowired
+ private WrkAnalysisMapper wrkAnalysisMapper;
+ @Autowired
+ private BasCrnpErrLogService basCrnpErrLogService;
+ @Autowired
+ private BasDualCrnpErrLogService basDualCrnpErrLogService;
+ @Autowired
+ private BasRgvErrLogService basRgvErrLogService;
+ @Autowired
+ private BasStationErrLogService basStationErrLogService;
@Override
public Object getCrnDeviceStatus(JSONObject args) {
@@ -284,6 +303,101 @@
return mainProcessPseudocodeService.queryMainProcessPseudocode(refresh);
}
+ @Override
+ public Object getTaskThroughput(JSONObject args) {
+ Date startTime = optDate(args, "startTime");
+ Date endTime = optDate(args, "endTime");
+ if (startTime == null || endTime == null) {
+ JSONObject err = new JSONObject();
+ err.put("error", "startTime and endTime are required");
+ return err;
+ }
+ Map<String, Object> result = wrkAnalysisMapper.aggregateThroughput(startTime, endTime);
+ JSONObject data = new JSONObject();
+ data.put("throughput", result);
+ data.put("startTime", startTime);
+ data.put("endTime", endTime);
+ return data;
+ }
+
+ @Override
+ public Object getDeviceFaultSummary(JSONObject args) {
+ Date startTime = optDate(args, "startTime");
+ Date endTime = optDate(args, "endTime");
+ if (startTime == null || endTime == null) {
+ JSONObject err = new JSONObject();
+ err.put("error", "startTime and endTime are required");
+ return err;
+ }
+ Map<String, Object> throughput = wrkAnalysisMapper.aggregateThroughput(startTime, endTime);
+ JSONObject data = new JSONObject();
+ data.put("totalTaskCount", throughput.get("taskCount"));
+ data.put("faultTaskCount", throughput.get("faultTaskCount"));
+ data.put("totalFaultCount", throughput.get("totalFaultCount"));
+ data.put("totalFaultDurationMs", throughput.get("totalFaultDurationMs"));
+ data.put("crnFaultCount", throughput.get("crnFaultCount"));
+ data.put("crnFaultDurationMs", throughput.get("crnFaultDurationMs"));
+ data.put("dualCrnFaultCount", throughput.get("dualCrnFaultCount"));
+ data.put("dualCrnFaultDurationMs", throughput.get("dualCrnFaultDurationMs"));
+ data.put("rgvFaultCount", throughput.get("rgvFaultCount"));
+ data.put("rgvFaultDurationMs", throughput.get("rgvFaultDurationMs"));
+ data.put("stationFaultCount", throughput.get("stationFaultCount"));
+ data.put("stationFaultDurationMs", throughput.get("stationFaultDurationMs"));
+ long taskCount = throughput.get("taskCount") != null ? ((Number) throughput.get("taskCount")).longValue() : 0;
+ long faultTask = throughput.get("faultTaskCount") != null ? ((Number) throughput.get("faultTaskCount")).longValue() : 0;
+ data.put("faultRate", taskCount > 0 ? Math.round(faultTask * 10000.0 / taskCount) / 100.0 : 0);
+ data.put("startTime", startTime);
+ data.put("endTime", endTime);
+ return data;
+ }
+
+ @Override
+ public Object getDeviceUtilization(JSONObject args) {
+ Date startTime = optDate(args, "startTime");
+ Date endTime = optDate(args, "endTime");
+ if (startTime == null || endTime == null) {
+ JSONObject err = new JSONObject();
+ err.put("error", "startTime and endTime are required");
+ return err;
+ }
+ List<Map<String, Object>> devices = wrkAnalysisMapper.groupByDevice(startTime, endTime);
+ JSONObject data = new JSONObject();
+ data.put("devices", devices);
+ data.put("startTime", startTime);
+ data.put("endTime", endTime);
+ return data;
+ }
+
+ @Override
+ public Object getErrorLogSummary(JSONObject args) {
+ Date startTime = optDate(args, "startTime");
+ Date endTime = optDate(args, "endTime");
+ if (startTime == null || endTime == null) {
+ JSONObject err = new JSONObject();
+ err.put("error", "startTime and endTime are required");
+ return err;
+ }
+ JSONObject data = new JSONObject();
+
+ long crnErrCount = basCrnpErrLogService.count(new QueryWrapper<com.zy.asrs.entity.BasCrnpErrLog>()
+ .ge("start_time", startTime).lt("start_time", endTime));
+ long dualCrnErrCount = basDualCrnpErrLogService.count(new QueryWrapper<com.zy.asrs.entity.BasDualCrnpErrLog>()
+ .ge("start_time", startTime).lt("start_time", endTime));
+ long rgvErrCount = basRgvErrLogService.count(new QueryWrapper<com.zy.asrs.entity.BasRgvErrLog>()
+ .ge("start_time", startTime).lt("start_time", endTime));
+ long stationErrCount = basStationErrLogService.count(new QueryWrapper<com.zy.asrs.entity.BasStationErrLog>()
+ .ge("start_time", startTime).lt("start_time", endTime));
+
+ data.put("crnErrorCount", crnErrCount);
+ data.put("dualCrnErrorCount", dualCrnErrCount);
+ data.put("rgvErrorCount", rgvErrCount);
+ data.put("stationErrorCount", stationErrCount);
+ data.put("totalErrorCount", crnErrCount + dualCrnErrCount + rgvErrCount + stationErrCount);
+ data.put("startTime", startTime);
+ data.put("endTime", endTime);
+ return data;
+ }
+
// --------- helpers ---------
private int optInt(JSONObject o, String key, int def) {
@@ -315,6 +429,11 @@
return value.trim();
}
+ private Date optDate(JSONObject o, String key) {
+ if (o == null || !o.containsKey(key)) return null;
+ return o.getDate(key);
+ }
+
private List<Long> optLongList(JSONObject o, String key) {
if (o == null || !o.containsKey(key)) return Collections.emptyList();
JSONArray arr = o.getJSONArray(key);
--
Gitblit v1.9.1