From 3d00a1bef761c34adee410454eb0ede54f882751 Mon Sep 17 00:00:00 2001
From: Administrator <1051256694@qq.com>
Date: 星期四, 19 三月 2026 12:56:05 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/ai/mcp/service/impl/WcsDataFacadeImpl.java | 185 +++++++++++++++++++++++++---------------------
1 files changed, 101 insertions(+), 84 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 4cf371b..d7fb5e7 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
@@ -2,10 +2,11 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zy.ai.entity.DeviceConfigsData;
import com.zy.ai.log.AiLogAppender;
import com.zy.ai.mcp.service.WcsDataFacade;
+import com.zy.ai.service.MainProcessPseudocodeService;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.BasRgv;
@@ -45,18 +46,20 @@
private WrkMastService wrkMastService;
@Autowired
private ConfigService configService;
+ @Autowired
+ private MainProcessPseudocodeService mainProcessPseudocodeService;
@Override
public Object getCrnDeviceStatus(JSONObject args) {
List<Integer> deviceNoList = optIntList(args, "crnNos");
- EntityWrapper<BasCrnp> wrapper = new EntityWrapper<>();
+ QueryWrapper<BasCrnp> wrapper = new QueryWrapper<>();
if (deviceNoList != null && deviceNoList.size() > 0) {
wrapper.in("crn_no", deviceNoList);
}
JSONObject data = new JSONObject();
List<Object> deviceList = new ArrayList<>();
- List<BasCrnp> basCrnps = basCrnpService.selectList(wrapper);
+ List<BasCrnp> basCrnps = basCrnpService.list(wrapper);
for (BasCrnp basCrnp : basCrnps) {
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo());
if (crnThread == null) {
@@ -72,7 +75,7 @@
@Override
public Object getStationDeviceStatus(JSONObject args) {
- List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>());
+ List<BasDevp> basDevps = basDevpService.list(new QueryWrapper<>());
JSONObject data = new JSONObject();
List<Object> stationList = new ArrayList<>();
@@ -100,14 +103,14 @@
@Override
public Object getRgvDeviceStatus(JSONObject args) {
List<Integer> deviceNoList = optIntList(args, "rgvNos");
- EntityWrapper<BasRgv> wrapper = new EntityWrapper<>();
+ QueryWrapper<BasRgv> wrapper = new QueryWrapper<>();
if (deviceNoList != null && deviceNoList.size() > 0) {
wrapper.in("rgv_no", deviceNoList);
}
JSONObject data = new JSONObject();
List<Object> deviceList = new ArrayList<>();
- List<BasRgv> basRgvs = basRgvService.selectList(wrapper);
+ List<BasRgv> basRgvs = basRgvService.list(wrapper);
for (BasRgv basRgv : basRgvs) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
if (rgvThread == null) {
@@ -124,26 +127,83 @@
@Override
public Object getTasks(JSONObject args) {
int crnNo = optInt(args, "crnNo", -1);
+ int dualCrnNo = optInt(args, "dualCrnNo", -1);
int rgvNo = optInt(args, "rgvNo", -1);
- List<Integer> taskNos = optIntList(args, "taskNos");
+ int sourceStaNo = optInt(args, "sourceStaNo", -1);
+ int staNo = optInt(args, "staNo", -1);
+ List<Integer> wrkNos = optIntList(args, "wrkNos");
+ if (wrkNos.isEmpty()) {
+ wrkNos = optIntList(args, "taskNos");
+ }
+ List<String> wmsWrkNos = optStrList(args, "wmsWrkNos");
+ List<Long> wrkStsList = optLongList(args, "wrkStsList");
+ List<Integer> ioTypeList = optIntList(args, "ioTypeList");
+ String barcode = optStr(args, "barcode");
+ String batch = optStr(args, "batch");
+ String sourceLocNo = optStr(args, "sourceLocNo");
+ String locNo = optStr(args, "locNo");
int limit = optInt(args, "limit", 200);
- EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
- if (taskNos != null && taskNos.size() > 0) {
- wrapper.in("wrk_no", taskNos);
+ QueryWrapper<WrkMast> wrapper = new QueryWrapper<>();
+ if (!wrkNos.isEmpty()) {
+ wrapper.in("wrk_no", wrkNos);
+ }
+
+ if (!wmsWrkNos.isEmpty()) {
+ wrapper.in("wms_wrk_no", wmsWrkNos);
+ }
+
+ if (!wrkStsList.isEmpty()) {
+ wrapper.in("wrk_sts", wrkStsList);
+ }
+
+ if (!ioTypeList.isEmpty()) {
+ wrapper.in("io_type", ioTypeList);
}
if (crnNo != -1) {
wrapper.eq("crn_no", crnNo);
}
+ if (dualCrnNo != -1) {
+ wrapper.eq("dual_crn_no", dualCrnNo);
+ }
+
if (rgvNo != -1) {
wrapper.eq("rgv_no", rgvNo);
}
- List<WrkMast> tasks = wrkMastService.selectList(wrapper);
+ if (sourceStaNo != -1) {
+ wrapper.eq("source_sta_no", sourceStaNo);
+ }
+
+ if (staNo != -1) {
+ wrapper.eq("sta_no", staNo);
+ }
+
+ if (barcode != null) {
+ wrapper.like("barcode", barcode);
+ }
+
+ if (batch != null) {
+ wrapper.like("batch", batch);
+ }
+
+ if (sourceLocNo != null) {
+ wrapper.like("source_loc_no", sourceLocNo);
+ }
+
+ if (locNo != null) {
+ wrapper.like("loc_no", locNo);
+ }
+
+ int safeLimit = Math.max(1, Math.min(limit, 500));
+ wrapper.orderByDesc("io_time").orderByDesc("appe_time").last("limit " + safeLimit);
+
+ List<WrkMast> tasks = wrkMastService.list(wrapper);
JSONObject data = new JSONObject();
data.put("tasks", tasks);
+ data.put("count", tasks.size());
return data;
}
@@ -162,24 +222,24 @@
List<DeviceConfigsData> deviceConfigsDataList = new ArrayList<>();
List<Integer> crnNoList = optIntList(args, "crnNos");
- EntityWrapper<BasCrnp> crnWrapper = new EntityWrapper<>();
+ QueryWrapper<BasCrnp> crnWrapper = new QueryWrapper<>();
if (crnNoList != null && crnNoList.size() > 0) {
crnWrapper.in("crn_no", crnNoList);
}
List<Integer> rgvNoList = optIntList(args, "rgvNos");
- EntityWrapper<BasRgv> rgvWrapper = new EntityWrapper<>();
+ QueryWrapper<BasRgv> rgvWrapper = new QueryWrapper<>();
if (rgvNoList != null && rgvNoList.size() > 0) {
rgvWrapper.in("rgv_no", rgvNoList);
}
List<Integer> devpNoList = optIntList(args, "devpNos");
- EntityWrapper<BasDevp> devpWrapper = new EntityWrapper<>();
+ QueryWrapper<BasDevp> devpWrapper = new QueryWrapper<>();
if (devpNoList != null && devpNoList.size() > 0) {
devpWrapper.in("devp_no", devpNoList);
}
- List<BasCrnp> basCrnps = basCrnpService.selectList(crnWrapper);
+ List<BasCrnp> basCrnps = basCrnpService.list(crnWrapper);
for (BasCrnp basCrnp : basCrnps) {
DeviceConfigsData deviceConfigsData = new DeviceConfigsData();
deviceConfigsData.setDeviceNo(basCrnp.getCrnNo());
@@ -188,7 +248,7 @@
deviceConfigsDataList.add(deviceConfigsData);
}
- List<BasRgv> basRgvs = basRgvService.selectList(rgvWrapper);
+ List<BasRgv> basRgvs = basRgvService.list(rgvWrapper);
for (BasRgv basRgv : basRgvs) {
DeviceConfigsData deviceConfigsData = new DeviceConfigsData();
deviceConfigsData.setDeviceNo(basRgv.getRgvNo());
@@ -197,7 +257,7 @@
deviceConfigsDataList.add(deviceConfigsData);
}
- List<BasDevp> basDevps = basDevpService.selectList(devpWrapper);
+ List<BasDevp> basDevps = basDevpService.list(devpWrapper);
for (BasDevp basDevp : basDevps) {
DeviceConfigsData deviceConfigsData = new DeviceConfigsData();
deviceConfigsData.setDeviceNo(basDevp.getDevpNo());
@@ -213,80 +273,18 @@
@Override
public Object getSystemConfig(JSONObject args) {
JSONObject data = new JSONObject();
- List<Config> systemConfigList = configService.selectList(new EntityWrapper<Config>().notIn("dingdingReportUrl"));
+ List<Config> systemConfigList = configService.list(new QueryWrapper<Config>().ne("code", "dingdingReportUrl"));
data.put("systemConfigs", systemConfigList);
return data;
}
@Override
- public Object buildDiagnosisSnapshot(JSONObject args) {
- String wh = mustStr(args, "warehouseCode");
- List<String> crnDeviceNos = optStrList(args, "crnDeviceNos");
- List<String> taskIds = optStrList(args, "taskIds");
- int lookbackSeconds = optInt(args, "lookbackSeconds", 300);
- int logMaxLines = optInt(args, "logMaxLines", 600);
- boolean includeConfig = optBool(args, "includeConfig", true);
-
- long now = System.currentTimeMillis();
- long fromTs = now - lookbackSeconds * 1000L;
-
- // 1) crn devices
- JSONObject devArgs = new JSONObject();
- devArgs.put("deviceNos", crnDeviceNos);
- JSONObject devices = (JSONObject) getCrnDeviceStatus(devArgs);
-
- // 2) tasks
- JSONObject taskArgs = new JSONObject();
- taskArgs.put("warehouseCode", wh);
- taskArgs.put("taskIds", taskIds);
- taskArgs.put("limit", 200);
- JSONObject tasks = (JSONObject) getTasks(taskArgs);
-
- // 3) logs (涓�娆℃�у彇鍥烇紝鐒跺悗鍋氬垎妗�+鎺掑簭+鎴柇)
- JSONObject logArgs = new JSONObject();
- logArgs.put("warehouseCode", wh);
- logArgs.put("fromTs", fromTs);
- logArgs.put("toTs", now);
-// logArgs.put("deviceIds", deviceIds);
- logArgs.put("taskIds", taskIds);
- logArgs.put("maxLines", logMaxLines);
- JSONObject logs = (JSONObject) getLogs(logArgs);
-
- // 4) 缁撴瀯鍖栧揩鐓ц緭鍑猴紙寤鸿锛氬垎妗讹級
- JSONObject snapshot = new JSONObject();
- snapshot.put("warehouseCode", wh);
- snapshot.put("generatedTs", now);
- snapshot.put("timeRange", new JSONObject()
- .fluentPut("fromTs", fromTs)
- .fluentPut("toTs", now)
- .fluentPut("lookbackSeconds", lookbackSeconds));
-
- snapshot.put("devices", devices);
- snapshot.put("tasks", tasks);
- snapshot.put("logs", logs);
-
- JSONArray hints = new JSONArray();
- hints.add("Prefer diagnosing with snapshot.devices + snapshot.tasks + snapshot.logs");
- hints.add("Logs are already filtered by time range; if missing, expand lookbackSeconds");
- snapshot.put("hints", hints);
-
- JSONObject data = new JSONObject();
- data.put("snapshot", snapshot);
- return data;
+ public Object getSystemPseudocode(JSONObject args) {
+ boolean refresh = optBool(args, "refresh", false);
+ return mainProcessPseudocodeService.queryMainProcessPseudocode(refresh);
}
// --------- helpers ---------
-
- private String mustStr(JSONObject o, String key) {
- if (o == null || o.getString(key) == null || o.getString(key).trim().isEmpty())
- throw new IllegalArgumentException(key + " is required");
- return o.getString(key).trim();
- }
-
- private long mustLong(JSONObject o, String key) {
- if (o == null || !o.containsKey(key)) throw new IllegalArgumentException(key + " is required");
- return o.getLongValue(key);
- }
private int optInt(JSONObject o, String key, int def) {
if (o == null || !o.containsKey(key)) return def;
@@ -310,6 +308,25 @@
return list;
}
+ private String optStr(JSONObject o, String key) {
+ if (o == null || !o.containsKey(key)) return null;
+ String value = o.getString(key);
+ if (value == null || value.trim().isEmpty()) return null;
+ return value.trim();
+ }
+
+ private List<Long> optLongList(JSONObject o, String key) {
+ if (o == null || !o.containsKey(key)) return Collections.emptyList();
+ JSONArray arr = o.getJSONArray(key);
+ if (arr == null) return Collections.emptyList();
+ List<Long> list = new ArrayList<>();
+ for (int i = 0; i < arr.size(); i++) {
+ String s = arr.getString(i);
+ if (s != null && !s.trim().isEmpty()) list.add(Long.parseLong(s.trim()));
+ }
+ return list;
+ }
+
private List<Integer> optIntList(JSONObject o, String key) {
if (o == null || !o.containsKey(key)) return Collections.emptyList();
JSONArray arr = o.getJSONArray(key);
@@ -321,4 +338,4 @@
}
return list;
}
-}
\ No newline at end of file
+}
--
Gitblit v1.9.1