From 276d837c0bb808e6d93ac7c7ba6abe654c75552e Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 09 二月 2026 08:45:45 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/OpenController.java |  157 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 153 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index a07109a..35b839a 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -9,23 +9,35 @@
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.entity.param.ArmPrecomputeParam;
 import com.zy.asrs.service.OpenService;
+import com.zy.asrs.service.impl.WrkMastServiceImpl;
 import com.zy.common.web.BaseController;
+import com.zy.core.cache.RgvStatusCache;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.CrnSlave;
+import com.zy.core.model.DevpSlave;
+import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.RgvProtocol;
+import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.properties.SlaveProperties;
+import com.zy.core.thread.SiemensCrnThread;
+import com.zy.core.thread.SiemensDevpThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+
+import com.zy.asrs.entity.param.TaskCreateParam;
 
 /**
  * Created by vincent on 2024/10/16
  */
 @Slf4j
 @RestController
-@RequestMapping("open/hd")
+@RequestMapping("open/")
 public class OpenController extends BaseController {
 
     private static final boolean auth = true;
@@ -35,6 +47,11 @@
 
     @Autowired
     private OpenService openService;
+
+    @Autowired
+    private SlaveProperties slaveProperties;
+    @Autowired
+    private WrkMastServiceImpl wrkMastService;
 
     /**
      * 娣诲姞鍑哄簱鍗�
@@ -65,6 +82,138 @@
         return R.ok().add(param);
     }
 
+    /**
+     * 璁惧鐘舵��
+     */
+    @PostMapping("/deviceStatus")
+    @AppAuth(memo = "璁惧鐘舵�佽幏鍙�")
+    public R deviceStatus(
+            @RequestHeader(required = false) String appkey,
+            HttpServletRequest request) {
+
+        try {
+            auth(appkey, null, request);
+        } catch (Exception e) {
+            return new R(403, e.getMessage());
+        }
+
+        // 1. 绔欑偣
+        List<Map<String, Object>> devList = new ArrayList<>();
+        if (slaveProperties.getDevp() != null) {
+            for (DevpSlave devpSlave : slaveProperties.getDevp()) {
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId());
+                if (devpThread != null && devpThread.getStation() != null) {
+                    for (StaProtocol staProtocol : devpThread.getStation().values()) {
+                        Map<String, Object> dev = new HashMap<>();
+                        dev.put("devNo", staProtocol.getSiteId());
+                        dev.put("inEnable", staProtocol.isInEnable() ? "1" : "0");
+                        dev.put("outEnable", staProtocol.isOutEnable() ? "1" : "0");
+                        dev.put("autoing", staProtocol.isAutoing() ? "1" : "0");
+                        dev.put("loading", staProtocol.isLoading() ? "1" : "0");
+                        dev.put("wrkNo", staProtocol.getWorkNo());
+                        dev.put("barcode", staProtocol.getBarcode());
+                        dev.put("devErr", staProtocol.getErrorDev$());
+                        dev.put("devErrM", staProtocol.getExceptions());
+                        devList.add(dev);
+                    }
+                }
+            }
+        }
+        devList.sort(Comparator.comparingInt(m -> (Integer) m.get("devNo")));
+
+        // 2. 鍫嗗灈鏈�
+        List<Map<String, Object>> crnList = new ArrayList<>();
+        if (slaveProperties.getCrn() != null) {
+            for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+                SiemensCrnThread crnThread = (SiemensCrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+                if (crnThread != null && crnThread.getCrnProtocol() != null) {
+                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                    Map<String, Object> crn = new HashMap<>();
+                    crn.put("crnNo", crnProtocol.getCrnNo());
+                    crn.put("crnNoH", crnProtocol.getCrnNo());
+                    crn.put("crnSts", crnProtocol.getMode());
+                    crn.put("wrkNo", crnProtocol.getTaskNo());
+                    crn.put("crnErr", crnProtocol.getAlarm());
+                    crn.put("crnErrM", crnProtocol.getExceptions());
+                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",crnProtocol.getTaskNo()));
+                    crn.put("frmLocno",wrkMast != null ? wrkMast.getSourceLocNo():null);
+                    crn.put("frmSta",wrkMast != null ? wrkMast.getSourceStaNo():0);
+                    crn.put("toSta", wrkMast != null? wrkMast.getStaNo():0);
+                    crn.put("toLocno", wrkMast != null ? wrkMast.getLocNo():null);
+                    crnList.add(crn);
+                }
+            }
+        }
+        crnList.sort(Comparator.comparingInt(m -> (Integer) m.get("crnNo")));
+
+        // 3. 绌挎杞�
+        List<Map<String, Object>> steList = new ArrayList<>();
+        Map<Integer, RgvProtocol> rgvMap = RgvStatusCache.getAllRgvStatus();
+        if (rgvMap != null) {
+            for (RgvProtocol rgvProtocol : rgvMap.values()) {
+                Map<String, Object> ste = new HashMap<>();
+                ste.put("steNo", rgvProtocol.getRgvNo());
+                ste.put("crnSts", rgvProtocol.getStatusType() != null ? rgvProtocol.getStatusType().id : 1);
+                ste.put("wrkNo", rgvProtocol.getTaskNo());
+                ste.put("steErr", rgvProtocol.getAlarm$());
+                ste.put("steErrM", rgvProtocol.getAlarmM());
+                steList.add(ste);
+            }
+        }
+        steList.sort(Comparator.comparingInt(m -> (Integer) m.get("steNo")));
+
+        R r =  R.ok();
+        r.put("devList", devList);
+        r.put("crnList", crnList);
+        r.put("steList", steList);
+        return r;
+    }
+
+
+
+    /**
+     * 浠诲姟涓嬪彂
+     */
+    @PostMapping("/taskCreate")
+    @AppAuth(memo = "浠诲姟涓嬪彂")
+    public R taskCreate(@RequestHeader(required = false) String appkey,
+                        @RequestBody TaskCreateParam param,
+                        HttpServletRequest request) {
+        try {
+            auth(appkey, param, request);
+        } catch (Exception e) {
+            return new R(403, e.getMessage());
+        }
+
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        
+        if (Cools.isEmpty(param.getTaskNo())) {
+            return R.error("宸ヤ綔鍙穂taskNo]涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(param.getBarcode())) {
+             return R.error("瀹瑰櫒缂栫爜[barcode]涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(param.getStartPoint())) {
+             return R.error("璧风偣[startPoint]涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(param.getTargetPoint())) {
+             return R.error("鐩爣鐐筟targetPoint]涓嶈兘涓虹┖");
+        }
+
+        try {
+            boolean result = openService.taskCreate(param);
+            if (result) {
+                return R.ok("浠诲姟涓嬪彂鎴愬姛");
+            } else {
+                return R.error("浠诲姟涓嬪彂澶辫触");
+            }
+        } catch (Exception e) {
+            log.error("浠诲姟涓嬪彂寮傚父", e);
+            return R.error("浠诲姟涓嬪彂寮傚父: " + e.getMessage());
+        }
+    }
 
     private void auth(String appkey, Object obj, HttpServletRequest request) {
 //        log.info("{}鎺ュ彛琚闂紱appkey:{}锛涜姹傛暟鎹細{}", "open/sensorType/list/auth/v1", appkey, JSON.toJSONString(obj));

--
Gitblit v1.9.1