diff --git a/src/main/java/com/gaotao/modules/dashboard/task/DashboardPushTask.java b/src/main/java/com/gaotao/modules/dashboard/task/DashboardPushTask.java
index 148317b..920353f 100644
--- a/src/main/java/com/gaotao/modules/dashboard/task/DashboardPushTask.java
+++ b/src/main/java/com/gaotao/modules/dashboard/task/DashboardPushTask.java
@@ -61,6 +61,194 @@ public class DashboardPushTask {
@Autowired(required = false)
private TuskClientService tuskClientService;
+ @Value("${custom.wcs-url}")
+ private String wcsUrl;
+
+ /**
+ * 每10秒检查人工拣选数据并推送
+ *
+ *
数据来源:WCS系统 - /api/wms/query-auto-sorting-info
+ *
+ * 数据说明:
+ *
+ * - sortingStation=1043 - 第一个表格(人工拣选1)
+ * - sortingStation=1028 - 第二个表格(人工拣选2)
+ *
+ *
+ * 配置开关:
+ *
+ * - dashboard.push.enabled - 看板推送总开关
+ *
+ */
+ @Scheduled(fixedRate = 10000)
+ public void pushManualPickingData() {
+ // 检查总开关
+ if (!dashboardPushEnabled) {
+ log.trace("看板推送已禁用");
+ return;
+ }
+
+ try {
+ log.debug("=== 开始获取人工拣选看板数据 ===");
+
+ // 从WCS获取人工拣选数据
+ Map data = getManualPickingDataFromWcs();
+
+ // 如果返回null,转换为空数据
+ if (data == null) {
+ data = createEmptyManualPickingData();
+ }
+
+ // 计算数据哈希值并推送
+ int currentHash = data.hashCode();
+ webSocketService.pushManualPickingData(data);
+ lastDataHash.put("manual-picking", currentHash);
+
+ log.debug("=== 人工拣选数据推送完成 ===");
+
+ } catch (Exception e) {
+ log.error("推送人工拣选数据失败,推送空数据清空前端列表: {}", e.getMessage(), e);
+ // 异常时推送空数据,避免前端显示过期数据
+ try {
+ Map emptyData = createEmptyManualPickingData();
+ webSocketService.pushManualPickingData(emptyData);
+ lastDataHash.put("manual-picking", emptyData.hashCode());
+ } catch (Exception ex) {
+ log.error("推送空数据失败: {}", ex.getMessage());
+ }
+ }
+ }
+
+ /**
+ * 从WCS获取人工拣选数据
+ *
+ * @return 人工拣选数据
+ */
+ private Map getManualPickingDataFromWcs() {
+ try {
+ String url = wcsUrl + "query-auto-sorting-info";
+ ObjectMapper mapper = new ObjectMapper();
+
+ // 请求1043站数据
+ log.info("调用WCS人工拣选API (1043站): {}", url);
+ List