diff --git a/src/main/java/com/gaotao/modules/api/controller/DashboardController.java b/src/main/java/com/gaotao/modules/api/controller/DashboardController.java
index f0975df..f9fa62f 100644
--- a/src/main/java/com/gaotao/modules/api/controller/DashboardController.java
+++ b/src/main/java/com/gaotao/modules/api/controller/DashboardController.java
@@ -1,16 +1,23 @@
package com.gaotao.modules.api.controller;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.gaotao.common.utils.HttpUtils;
import com.gaotao.common.utils.R;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
@Slf4j
@RestController
@RequestMapping("/api/dashboard")
public class DashboardController {
+ @Value("${custom.wcs-board-api}")
+ private String wcsBoardApi;
/**
* 人工拣选
*/
@@ -36,29 +43,151 @@ public class DashboardController {
}
/**
- * 机械臂拣选
+ * 机械臂拣选看板数据获取
+ *
+ *
功能说明:从WCS系统获取机械臂自动分拣信息
+ *
+ * 数据来源:WCS Board API - WmsDashboard/auto-sorting-info
+ *
+ * 返回数据说明:
+ *
+ * - containerList:周转箱拣选数据(sortingStation=1071)
+ * - materialList:原材拣选数据(sortingStation=1060)
+ *
+ *
+ * @param data 请求参数
+ * @return 机械臂拣选数据
*/
@PostMapping("/robotPicking")
@ResponseBody
public R robotPicking(@RequestBody Map data) {
try {
- log.info("机械臂拣选看板接口接收到请求:{}", data);
- String result = "SUCCESS";
- if ("SUCCESS".equals(result)) {
- R r=new R();
- r.put("code",200);
- r.put("msg","success");
- r.put("data","机械臂拣选数据");
+ log.info("=== 开始获取机械臂拣选看板数据 ===");
+
+ // 1. 调用WCS Board API获取数据
+ String url = wcsBoardApi + "WmsDashboard/auto-sorting-info";
+ log.info("调用WCS API: {}", url);
+
+ String wcsResponse = HttpUtils.doGet(url, null, null);
+ log.info("WCS API返回数据: {}", wcsResponse);
+
+ // 2. 解析返回的JSON数据
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode rootNode = mapper.readTree(wcsResponse);
+
+ // 检查返回码
+ int resCode = rootNode.get("resCode").asInt();
+ String resMsg = rootNode.get("resMsg").asText();
+
+ if (resCode != 200) {
+ log.error("WCS API返回错误: code={}, msg={}", resCode, resMsg);
+ return R.error(500, "获取WCS数据失败: " + resMsg);
+ }
+
+ // 3. 获取sortingStations数组
+ JsonNode resData = rootNode.get("resData");
+ if (resData == null || !resData.has("sortingStations")) {
+ log.warn("WCS返回数据中没有sortingStations");
+ R r = new R();
+ r.put("code", 200);
+ r.put("msg", "success");
+ r.put("data", createEmptyData());
return r;
- } else {
- return R.error(500, result);
}
+
+ JsonNode sortingStations = resData.get("sortingStations");
+
+ // 4. 按照sortingStation分类处理数据
+ List