From 0d04bc5d8080b82338302fba0a59fccff2eaedfc Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 06 七月 2025 11:28:29 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 1 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index c2592f2..3f68905 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -422,34 +422,42 @@
         for (Task task : taskService.selectWaitAnalyzeInBoundTask()) {
             BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, task.getDestSite()));
             if (basConveyorSta == null) {
+                log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻��");
                 continue;
             }
             BasConveyor basConveyor = basConveyorService.getById(basConveyorSta.getConveyorId());
             if (basConveyor == null) {
+                log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻��2");
                 continue;
             }
             DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
             if (deviceBarcode == null) {
+                log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝鏉$爜");
                 continue;
             }
             BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
             if (barcodeThread == null) {
+                log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝鏉$爜绾跨▼");
                 continue;
             }
             if (!barcodeThread.getBarcode().equals(task.getZpallet())) {
+                log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝鏉$爜涓嶇鍚堬紝浠诲姟鏉$爜锛�"+task.getZpallet()+",绾跨▼鏉$爜:"+barcodeThread.getBarcode());
                 continue;
             }
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
             if (devpThread == null) {
+                log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻�佺嚎绋�");
                 continue;
             }
             StaProtocol staProtocol = devpThread.getStation().get(basConveyorSta.getSiteNo());
             if (staProtocol == null) {
+                log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻�佺珯鐐�");
                 continue;
             }
             if (!(staProtocol.isAutoing()
                     && staProtocol.isLoading()
                     && staProtocol.isInEnable())) {
+                log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻�佷俊鍙蜂笉绗﹀悎锛�"+staProtocol.isAutoing()+","+staProtocol.isLoading()+","+staProtocol.isInEnable());
                 continue;
             }
 
@@ -472,8 +480,16 @@
             }
 
             // generate motion list
-            List<Motion> motionList = analyzeService.generateMotion(task);
+            List<Motion> motionList = null;
+            try {
+                motionList = analyzeService.generateMotion(task);
+            }catch (Exception e) {
+                log.error("motion瑙f瀽鍑洪敊锛�"+e.getMessage());
+                continue;
+            }
+
             if (motionList.isEmpty()) {
+                log.error("motion涓虹┖閫�鍑�");
                 continue;
             }
             motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
@@ -483,6 +499,38 @@
             task.setUpdateTime(new Date());
             if (!taskService.updateById(task)) {
                 News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
+            }else {
+                try {
+                    if ("0601".equals(task.getMemo().substring(0, 4))) {
+                        String response = "";
+                        Map<String, Object> headers = new HashMap<>();
+                        headers.put("Content-Type", "application/json;charset=UTF-8");
+                        headers.put("X-lr-request-id", task.getWmsTaskNo());
+                        headers.put("X-lr-version", 4.1);
+                        headers.put("X-lr-trace-id", "{{$guid}}");
+
+                        Map<String, Object> map = new HashMap<>();
+                        map.put("carrierCode", task.getZpallet());
+                        map.put("siteCode", "06YZ0001");
+                        map.put("extra", null);
+                        try {
+                            response = new HttpHandler.Builder()
+                                    .setHeaders(headers)
+                                    .setUri("172.18.16.248:443")
+                                    .setHttps(true)
+                                    .setPath("/rcs/rtas/api/robot/controller/carrier/unbind")
+                                    .setJson(JSONObject.toJSONString(map))
+                                    .build()
+                                    .doPost();
+                            JSONObject jsonObject = JSON.parseObject(response);
+                            log.info("agv瑙g粦绠卞彿,璇锋眰浣�:" + JSONObject.toJSONString(map) + ",杩斿洖:" + response);
+                        } catch (Exception e) {
+                            log.info("agv瑙g粦绠卞彿璇锋眰鎶ラ敊" + e.getMessage());
+                        }
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
         }
     }
@@ -497,6 +545,11 @@
         }
 
         for (Task task : tasks) {
+            List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getTaskSts, TaskStsType.ANALYZE_OUTBOUND.sts, TaskStsType.EXECUTE_OUTBOUND.sts));
+            if (!list.isEmpty()) {
+                continue;//瀛樺湪姝e湪瑙f瀽锛屾鍦ㄦ墽琛屼换鍔�
+            }
+
             BasConveyorSta originStaObj = basConveyorStaService.selectBySiteNo(task.getOriginSite());//鑾峰彇婧愮珯
             if (originStaObj == null) {
                 continue;
@@ -603,6 +656,42 @@
         }
     }
 
+    // 瑙f瀽灏忚溅杞借揣绉诲姩宸ヤ綔妗�
+    public synchronized void analyzeLadenMoveTask() {
+        for (Task task : taskService.selectWaitAnalyzeLadenMoveTask()) {
+            if (Cools.isEmpty(task.getShuttleNo())) {
+                //鍒嗛厤灏忚溅
+                //鎼滅储绌洪棽杞�
+                ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task);
+                if (shuttleThread == null) {
+                    News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo());
+                    continue;
+                }
+
+                task.setShuttleNo(Integer.valueOf(shuttleThread.getDevice().getDeviceNo()));//淇濆瓨绌挎杞﹀彿
+                task.setUpdateTime(new Date());
+                if (!taskService.updateById(task)) {
+                    News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo());
+                }
+                continue;
+            }
+
+            // generate motion list
+            List<Motion> motionList = analyzeService.generateShuttleLadenMoveMotion(task);
+            if (motionList.isEmpty()) {
+                continue;
+            }
+            motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
+
+            // 鏇存柊宸ヤ綔涓绘。
+            task.setTaskSts(TaskStsType.ANALYZE_LADEN_MOVE.sts); // 宸ヤ綔鐘舵��
+            task.setUpdateTime(new Date());
+            if (!taskService.updateById(task)) {
+                News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
+            }
+        }
+    }
+
     /**
      * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
      */
@@ -638,6 +727,20 @@
                 continue;
             }
 
+            List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>()
+                    .in(Task::getTaskSts
+                            , TaskStsType.NEW_INBOUND.sts
+                            , TaskStsType.ANALYZE_INBOUND.sts
+                            , TaskStsType.EXECUTE_INBOUND.sts
+                            , TaskStsType.NEW_OUTBOUND.sts
+                            , TaskStsType.ANALYZE_OUTBOUND.sts
+                            , TaskStsType.EXECUTE_OUTBOUND.sts)
+            );
+            if (!taskList.isEmpty()) {
+                News.info("{}鍙峰皬杞︼紝绯荤粺瀛樺湪姝e湪鎵ц浠诲姟锛屾殏鍋滃厖鐢典换鍔�", shuttleProtocol.getShuttleNo());
+                continue;//姝e湪鎵ц浠诲姟锛屼笉鎵ц鍏呯數
+            }
+
             String currentLocNo = shuttleProtocol.getCurrentLocNo();
             int lev = Utils.getLev(currentLocNo);//鑾峰彇灏忚溅妤煎眰
             //鎼滅储灏忚溅褰撳墠妤煎眰鍏呯數妗�

--
Gitblit v1.9.1