From 2804585b14a62cc1fdec876b65267a4db8bc8995 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期二, 14 一月 2025 10:55:47 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  935 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 476 insertions(+), 459 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 360ff12..1514ae1 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -55,6 +55,8 @@
     @Autowired
     private BasShuttleErrService basShuttleErrService;
     @Autowired
+    private BasLiftErrService basLiftErrService;
+    @Autowired
     private CommonService commonService;
     @Autowired
     private BasMapService basMapService;
@@ -837,45 +839,46 @@
                     //灏嗕换鍔℃。鏍囪涓哄畬鎴�
                     WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo());
                     if (wrkMast != null) {
-                        switch (wrkMast.getWrkSts().intValue()) {
-//                            case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚
-//                                wrkMast.setWrkSts(9L);
-//                                shuttleProtocol.setTaskNo(0);
-//                                if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) {
-//                                    //閲婃斁灏忚溅浠ょ墝
-//                                    shuttleProtocol.setToken(0);
-//                                }
-//                                break;
-//                            case 22://22.灏忚溅鎼繍涓� ==> 23.灏忚溅鎼繍瀹屾垚
-//                                wrkMast.setWrkSts(23L);
-//                                shuttleProtocol.setTaskNo(0);
-//                                if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) {
-//                                    //閲婃斁灏忚溅浠ょ墝
-//                                    shuttleProtocol.setToken(0);
-//                                }
-//                                break;
-                            case 302://302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
-                                wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);
-                                break;
-                            case 110://310.灏忚溅绉诲姩涓� ==> 311.灏忚溅绉诲姩瀹屾垚
-                                wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
-                                shuttleThread.setTaskNo(0);
-                                break;
-                            default:
+                        if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE.sts) {
+                            //302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
+                            wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);
+                        } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_SHUTTLE.sts) {
+                            //310.灏忚溅绉诲姩涓� ==> 311.灏忚溅绉诲姩瀹屾垚
+                            wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
+                            shuttleThread.setSyncTaskNo(0);
+                        } else if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_WORKING.sts) {
+                            //204.灏忚溅鍏呯數涓� ==> 205.灏忚溅鍏呯數瀹屾垚
+                            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts);
+                            shuttleThread.setSyncTaskNo(0);
                         }
+//                        switch (wrkMast.getWrkSts().intValue()) {
+////                            case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚
+////                                wrkMast.setWrkSts(9L);
+////                                shuttleProtocol.setTaskNo(0);
+////                                if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) {
+////                                    //閲婃斁灏忚溅浠ょ墝
+////                                    shuttleProtocol.setToken(0);
+////                                }
+////                                break;
+////                            case 22://22.灏忚溅鎼繍涓� ==> 23.灏忚溅鎼繍瀹屾垚
+////                                wrkMast.setWrkSts(23L);
+////                                shuttleProtocol.setTaskNo(0);
+////                                if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) {
+////                                    //閲婃斁灏忚溅浠ょ墝
+////                                    shuttleProtocol.setToken(0);
+////                                }
+////                                break;
+//                            case 302:
+//                                wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);
+//                                break;
+//                            case WrkStsType.MOVE_SHUTTLE.sts:
+//                                wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
+//                                shuttleThread.setSyncTaskNo(0);
+//                                break;
+//                            default:
+//                        }
 
                         if (wrkMastService.updateById(wrkMast)) {
-                            if (wrkMast.getWrkSts() == 111) {
-                                // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-                                if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) {
-                                    log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
-                                }
-                                // 鍒犻櫎宸ヤ綔涓绘。
-                                if (!wrkMastService.deleteById(wrkMast)) {
-                                    log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
-                                }
-                            }
-
                             //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
                             shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
                             News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
@@ -1293,221 +1296,162 @@
         }
     }
 
-//    /**
-//     * 寮傚父淇℃伅璁板綍
-//     */
-//    public void recErr() {
-//        try {
-//            this.recShuttleErr();
-//            this.recLiftErr();
-//        } catch (Exception e) {
-//            News.error("recErr fail", e);
-//        }
-//    }
+    /**
+     * 寮傚父淇℃伅璁板綍
+     */
+    public void recErr() {
+        try {
+            this.recShuttleErr();
+            this.recLiftErr();
+        } catch (Exception e) {
+            News.error("recErr fail", e);
+        }
+    }
 
-//    /**
-//     * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
-//     */
-//    private void recShuttleErr() {
-//        Date now = new Date();
-//        for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
-//            // 鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-//            NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId());
-//            if (shuttleThread == null) {
-//                continue;
-//            }
-//            NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-//            if (shuttleProtocol == null) {
-//                continue;
-//            }
-//
-//            if (shuttleProtocol.getTaskNo() != 0) {
-//                //鏈変换鍔�
-//                BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo());
-//                // 鏈夊紓甯�
-//                if (latest == null) {
-//                    if (shuttleProtocol.getErrState() != null && shuttleProtocol.getErrState() == 1) {
-//                        WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo());
-//                        if (wrkMast == null) {
-//                            continue;
-//                        }
-//                        BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getErrCode());
-//                        String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
-//                        BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
-//                                null,    // 缂栧彿
-//                                wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-//                                now,    // 鍙戠敓鏃堕棿
-//                                null,    // 缁撴潫鏃堕棿
-//                                wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-//                                wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-//                                shuttleSlave.getId(),    // 鍥涘悜绌挎杞�
-//                                null,    // plc
-//                                wrkMast.getLocNo(),    // 鐩爣搴撲綅
-//                                wrkMast.getStaNo(),    // 鐩爣绔�
-//                                wrkMast.getSourceStaNo(),    // 婧愮珯
-//                                wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-//                                wrkMast.getBarcode(),    // 鏉$爜
-//                                shuttleProtocol.getErrCode(),    // 寮傚父鐮�
-//                                errName,    // 寮傚父
-//                                1,    // 寮傚父鎯呭喌
-//                                now,    // 娣诲姞鏃堕棿
-//                                null,    // 娣诲姞浜哄憳
-//                                now,    // 淇敼鏃堕棿
-//                                null,    // 淇敼浜哄憳
-//                                "浠诲姟涓紓甯�",    // 澶囨敞
-//                                JSON.toJSONString(shuttleProtocol)    // 绯荤粺鐘舵�佹暟鎹�
-//                        );
-//                        if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
-//                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
-//                        }
-//                    }
-//                } else {
-//                    // 寮傚父淇
-//                    if (shuttleProtocol.getErrState() == null || shuttleProtocol.getErrState() == 0) {
-//                        latest.setEndTime(now);
-//                        latest.setUpdateTime(now);
-//                        latest.setStatus(2);
-//                        if (!basShuttleErrLogService.updateById(latest)) {
-//                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
-//                        }
-//                    }
-//                }
-//            }else {
-////                //鏃犱换鍔�
-////                BasShuttleErrLog latest = basShuttleErrLogService.findLatest(shuttleSlave.getId());
-////                // 鏈夊紓甯�
-////                if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) {
-////                    // 璁板綍鏂板紓甯�
-////                    if (latest == null || (latest.getErrCode() != shuttleProtocol.getStatusErrorCode().intValue())) {
-////                        BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue());
-////                        String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
-////                        BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
-////                                null,    // 缂栧彿
-////                                null,    // 宸ヤ綔鍙�
-////                                now,    // 鍙戠敓鏃堕棿
-////                                null,    // 缁撴潫鏃堕棿
-////                                null,    // 宸ヤ綔鐘舵��
-////                                null,    // 鍏ュ嚭搴撶被鍨�
-////                                shuttleSlave.getId(),    // 鍥涘悜绌挎杞�
-////                                null,    // plc
-////                                null,    // 鐩爣搴撲綅
-////                                null,    // 鐩爣绔�
-////                                null,    // 婧愮珯
-////                                null,    // 婧愬簱浣�
-////                                null,    // 鏉$爜
-////                                (int)shuttleProtocol.getStatusErrorCode(),    // 寮傚父鐮�
-////                                errName,    // 寮傚父
-////                                1,    // 寮傚父鎯呭喌
-////                                now,    // 娣诲姞鏃堕棿
-////                                null,    // 娣诲姞浜哄憳
-////                                now,    // 淇敼鏃堕棿
-////                                null,    // 淇敼浜哄憳
-////                                "鏃犱换鍔″紓甯�"    // 澶囨敞
-////                        );
-////                        if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
-////                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
-////                        }
-////                    }
-////                    // 鏃犲紓甯�
-////                } else {
-////                    // 寮傚父淇
-////                    if (latest != null && latest.getStatus() == 1) {
-////                        latest.setEndTime(now);
-////                        latest.setUpdateTime(now);
-////                        latest.setStatus(2);
-////                        if (!basShuttleErrLogService.updateById(latest)) {
-////                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
-////                        }
-////                    }
-////                }
-//            }
-//        }
-//    }
-//
-//    /**
-//     * 鎻愬崌鏈哄紓甯镐俊鎭褰�
-//     */
-//    private void recLiftErr() {
-//        Date now = new Date();
-//        for (LiftSlave liftSlave : slaveProperties.getLift()) {
-//            // 鑾峰彇鎻愬崌鏈轰俊鎭�
-//            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId());
-//            if (liftThread == null) {
-//                continue;
-//            }
-//            LiftProtocol liftProtocol = liftThread.getLiftProtocol();
-//            if (liftProtocol == null) {
-//                continue;
-//            }
-//
-//            if (liftProtocol.getTaskNo() != 0) {
-//                //鏈変换鍔�
-//                BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(liftSlave.getId(), liftProtocol.getTaskNo().intValue());
-//                // 鏈夊紓甯�
-//                if (latest == null) {
-//                    if (liftProtocol.getDeviceError() != null && liftProtocol.getDeviceError()) {
-//                        WrkMast wrkMast = wrkMastMapper.selectById(liftProtocol.getTaskNo());
-//                        if (wrkMast == null) {
-//                            continue;
-//                        }
-//
-//                        String errName = "";
-//                        if (liftProtocol.getFrontOverrun()) {
-//                            errName = "鍓嶈秴闄�";
-//                        } else if (liftProtocol.getBackOverrun()) {
-//                            errName = "鍚庤秴闄�";
-//                        } else if (liftProtocol.getLeftOverrun()) {
-//                            errName = "宸﹁秴闄�";
-//                        } else if (liftProtocol.getRightOverrun()) {
-//                            errName = "鍙宠秴闄�";
-//                        } else if (liftProtocol.getOverHeight()) {
-//                            errName = "瓒呴珮";
-//                        } else if (liftProtocol.getOverWeight()) {
-//                            errName = "瓒呴噸";
-//                        }
-//
-//                        BasLiftErrLog basLiftErrLog = new BasLiftErrLog(
-//                                null,    // 缂栧彿
-//                                wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-//                                now,    // 鍙戠敓鏃堕棿
-//                                null,    // 缁撴潫鏃堕棿
-//                                wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-//                                wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-//                                liftSlave.getId(),    // 鎻愬崌鏈�
-//                                null,    // plc
-//                                wrkMast.getLocNo(),    // 鐩爣搴撲綅
-//                                wrkMast.getStaNo(),    // 鐩爣绔�
-//                                wrkMast.getSourceStaNo(),    // 婧愮珯
-//                                wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-//                                wrkMast.getBarcode(),    // 鏉$爜
-//                                null,    // 寮傚父鐮�
-//                                errName,    // 寮傚父
-//                                1,    // 寮傚父鎯呭喌
-//                                now,    // 娣诲姞鏃堕棿
-//                                null,    // 娣诲姞浜哄憳
-//                                now,    // 淇敼鏃堕棿
-//                                null,    // 淇敼浜哄憳
-//                                "浠诲姟涓紓甯�",    // 澶囨敞
-//                                JSON.toJSONString(liftProtocol)    // 绯荤粺鐘舵�佹暟鎹�
-//                        );
-//                        if (!basLiftErrLogService.insert(basLiftErrLog)) {
-//                            News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", liftSlave.getId(), errName);
-//                        }
-//                    }
-//                } else {
-//                    // 寮傚父淇
-//                    if (liftProtocol.getDeviceError() == null || !liftProtocol.getDeviceError()) {
-//                        latest.setEndTime(now);
-//                        latest.setUpdateTime(now);
-//                        latest.setStatus(2);
-//                        if (!basLiftErrLogService.updateById(latest)) {
-//                            News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", liftSlave.getId(), latest.getId());
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//    }
+    /**
+     * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
+     */
+    private void recShuttleErr() {
+        Date now = new Date();
+        for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
+            // 鑾峰彇鍥涘悜绌挎杞︿俊鎭�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId());
+            if (shuttleThread == null) {
+                continue;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                continue;
+            }
+
+            if (shuttleProtocol.getTaskNo() != 0) {
+                //鏈変换鍔�
+                BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo());
+                // 鏈夊紓甯�
+                if (latest == null) {
+                    if (shuttleProtocol.getErrorCode() != null && Integer.parseInt(shuttleProtocol.getErrorCode()) != 0) {
+                        WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo());
+                        if (wrkMast == null) {
+                            continue;
+                        }
+                        int errorCode = Integer.parseInt(shuttleProtocol.getErrorCode());
+                        BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(errorCode);
+                        String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
+                        BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
+                                null,    // 缂栧彿
+                                wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
+                                now,    // 鍙戠敓鏃堕棿
+                                null,    // 缁撴潫鏃堕棿
+                                wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
+                                wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
+                                shuttleSlave.getId(),    // 鍥涘悜绌挎杞�
+                                null,    // plc
+                                wrkMast.getLocNo(),    // 鐩爣搴撲綅
+                                wrkMast.getStaNo(),    // 鐩爣绔�
+                                wrkMast.getSourceStaNo(),    // 婧愮珯
+                                wrkMast.getSourceLocNo(),    // 婧愬簱浣�
+                                wrkMast.getBarcode(),    // 鏉$爜
+                                errorCode,    // 寮傚父鐮�
+                                errName,    // 寮傚父
+                                1,    // 寮傚父鎯呭喌
+                                now,    // 娣诲姞鏃堕棿
+                                null,    // 娣诲姞浜哄憳
+                                now,    // 淇敼鏃堕棿
+                                null,    // 淇敼浜哄憳
+                                "浠诲姟涓紓甯�",    // 澶囨敞
+                                JSON.toJSONString(shuttleProtocol)    // 绯荤粺鐘舵�佹暟鎹�
+                        );
+                        if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
+                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
+                        }
+                    }
+                } else {
+                    // 寮傚父淇
+                    if (shuttleProtocol.getErrorCode() == null || Integer.parseInt(shuttleProtocol.getErrorCode()) == 0) {
+                        latest.setEndTime(now);
+                        latest.setUpdateTime(now);
+                        latest.setStatus(2);
+                        if (!basShuttleErrLogService.updateById(latest)) {
+                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 鎻愬崌鏈哄紓甯镐俊鎭褰�
+     */
+    private void recLiftErr() {
+        Date now = new Date();
+        for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) {
+            // 鑾峰彇鎻愬崌鏈轰俊鎭�
+            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, forkLiftSlave.getId());
+            if (forkLiftThread == null) {
+                continue;
+            }
+            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+            if (forkLiftProtocol == null) {
+                continue;
+            }
+
+            if (forkLiftProtocol.getTaskNo() != 0) {
+                //鏈変换鍔�
+                BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(forkLiftSlave.getId(), forkLiftProtocol.getTaskNo());
+                // 鏈夊紓甯�
+                if (latest == null) {
+                    if (forkLiftProtocol.getErrorCode() != null && forkLiftProtocol.getErrorCode() != 0) {
+                        WrkMast wrkMast = wrkMastService.selectByWorkNo(forkLiftProtocol.getWrkNo());
+                        if (wrkMast == null) {
+                            continue;
+                        }
+
+                        BasLiftErr basLiftErr = basLiftErrService.queryByCode(forkLiftProtocol.getErrorCode());
+                        String errName = basLiftErr==null? "鏈煡寮傚父":basLiftErr.getErrName();
+
+                        BasLiftErrLog basLiftErrLog = new BasLiftErrLog(
+                                null,    // 缂栧彿
+                                wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
+                                now,    // 鍙戠敓鏃堕棿
+                                null,    // 缁撴潫鏃堕棿
+                                wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
+                                wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
+                                forkLiftSlave.getId(),    // 鎻愬崌鏈�
+                                null,    // plc
+                                wrkMast.getLocNo(),    // 鐩爣搴撲綅
+                                wrkMast.getStaNo(),    // 鐩爣绔�
+                                wrkMast.getSourceStaNo(),    // 婧愮珯
+                                wrkMast.getSourceLocNo(),    // 婧愬簱浣�
+                                wrkMast.getBarcode(),    // 鏉$爜
+                                null,    // 寮傚父鐮�
+                                errName,    // 寮傚父
+                                1,    // 寮傚父鎯呭喌
+                                now,    // 娣诲姞鏃堕棿
+                                null,    // 娣诲姞浜哄憳
+                                now,    // 淇敼鏃堕棿
+                                null,    // 淇敼浜哄憳
+                                "浠诲姟涓紓甯�",    // 澶囨敞
+                                JSON.toJSONString(forkLiftProtocol)    // 绯荤粺鐘舵�佹暟鎹�
+                        );
+                        if (!basLiftErrLogService.insert(basLiftErrLog)) {
+                            News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", forkLiftSlave.getId(), errName);
+                        }
+                    }
+                } else {
+                    // 寮傚父淇
+                    if (forkLiftProtocol.getErrorCode() == null || forkLiftProtocol.getErrorCode() == 0) {
+                        latest.setEndTime(now);
+                        latest.setUpdateTime(now);
+                        latest.setStatus(2);
+                        if (!basLiftErrLogService.updateById(latest)) {
+                            News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", forkLiftSlave.getId(), latest.getId());
+                        }
+                    }
+                }
+            }
+        }
+    }
 
     // -------------------------------------------------------------------------------
 
@@ -1835,58 +1779,59 @@
 
                 //灏忚溅鎵�鍦ㄦゼ灞�
                 int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());
-//                ShuttleChargeType shuttleCharge = null;
-//
-//                //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗�
-//                for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
-//                    if (lev != Utils.getLev(chargeType.locNo)) {
-//                        continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞�
-//                    }
-//
-//                    //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞�
-//                    if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) {
-//                        shuttleCharge = chargeType;
-//                        break;
-//                    }
-//                }
-//
-//                if (shuttleCharge == null) {
-//                    //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗�
-//                    //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔�
-//                    for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
-//                        if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) {
-//                            //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗�
-//                            int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞�
-//                            boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞�
-//                            if (checkLevHasShuttle) {
-//                                //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
-//                                continue;
-//                            }
-//
-//                            shuttleCharge = chargeType;
-//                            break;
-//                        }
-//                    }
-//                }
-//
-//                if (shuttleCharge == null) {
-//                    continue;
-//                }
-//
-//                String chargeLocNo = shuttleCharge.locNo;
-//                wrkCharge = new WrkCharge();
-//                wrkCharge.setShuttleNo(shuttle.getId());
-//                wrkCharge.setCharge(shuttleCharge.id);
-//                wrkCharge.setWrkNo(commonService.getChargeWorkNo(4));
-//                wrkCharge.setWrkSts(51L);   // 51.鍑嗗鍏呯數
-//                wrkCharge.setIoPri((double) 10);
-//                wrkCharge.setLocNo(chargeLocNo);
-//                wrkCharge.setMemo("charge");
-//                wrkCharge.setAppeTime(new Date());
-//                if (!wrkChargeService.insert(wrkCharge)) {
-//                    News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
-//                    continue;
-//                }
+                ShuttleChargeType shuttleCharge = null;
+
+                //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗�
+                for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
+                    if (lev != Utils.getLev(chargeType.locNo)) {
+                        continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞�
+                    }
+
+                    //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞�
+                    if (wrkMastService.selectChargeWorkingByChargeSta(chargeType.id) == null) {
+                        shuttleCharge = chargeType;
+                        break;
+                    }
+                }
+
+                if (shuttleCharge == null) {
+                    //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗�
+                    //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔�
+                    for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
+                        if (wrkMastService.selectChargeWorkingByChargeSta(chargeType.id) == null) {
+                            //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗�
+                            int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞�
+                            boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞�
+                            if (checkLevHasShuttle) {
+                                //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
+                                continue;
+                            }
+
+                            shuttleCharge = chargeType;
+                            break;
+                        }
+                    }
+                }
+
+                if (shuttleCharge == null) {
+                    continue;
+                }
+
+                String chargeLocNo = shuttleCharge.locNo;
+                wrkMast = new WrkMast();
+                wrkMast.setMk(String.valueOf(shuttleCharge.id));
+                wrkMast.setWrkNo(commonService.getWorkNo(WrkIoType.SHUTTLE_CHARGE.id));
+                wrkMast.setWrkSts(WrkStsType.NEW_CHARGE.sts);
+                wrkMast.setIoType(WrkIoType.SHUTTLE_CHARGE.id);//300.鍏呯數
+                wrkMast.setIoPri((double) 999);
+                wrkMast.setLocNo(chargeLocNo);
+                wrkMast.setShuttleNo(shuttle.getId());
+                wrkMast.setMemo("charge");
+                wrkMast.setAppeTime(new Date());
+                if (!wrkMastService.insert(wrkMast)) {
+                    News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
+                    continue;
+                }
 
                 News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId());
             }
@@ -1895,135 +1840,218 @@
         }
     }
 
-//    /**
-//     * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔�
-//     */
-//    public synchronized void executeShuttleCharge() {
-//        try {
-//            for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
-//                WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId());
-//                if (wrkCharge == null) {
-//                    continue;
-//                }
-//
-//                NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo());
-//                if (shuttleThread == null) {
-//                    continue;
-//                }
-//                NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-//                if (shuttleProtocol == null) {
-//                    continue;
-//                }
-//
-//                if (wrkCharge.getWrkSts() == 51) {
-//                    if (!shuttleProtocol.isIdleNoCharge()) {
-//                        continue;
-//                    }
-//
-//                    if (shuttleProtocol.getSuspendState() == 1) {
-//                        continue;//绠″埗涓�
-//                    }
-//
-//                    if (!shuttleProtocol.getCurrentLocNo().equals(wrkCharge.getLocNo())) {
-//                        //灏忚溅涓嶅湪鍏呯數妗╀綅缃�
-//                        shuttleDispatchUtils.dispatchShuttle(wrkCharge.getWrkNo(), wrkCharge.getLocNo(), shuttle.getId());//璋冨害灏忚溅鍘诲厖鐢垫々
-//                        continue;
-//                    }
-//
-//                    //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠�
-//                    NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), true);
-//                    ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>();
-//                    commands.add(chargeCommand);
-//                    //鍒涘缓鍒嗛厤鍛戒护
-//                    ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-//                    assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-//                    assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙�
-//                    assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡
-//                    assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-//                    assignCommand.setCommands(commands);//杩愯鍛戒护
-//
-//                    wrkCharge.setWrkSts(52L);//51.鐢熸垚鍏呯數浠诲姟 => 52.灏忚溅鍘诲厖鐢典腑
-//                    wrkCharge.setModiTime(new Date());
-//                    if (wrkChargeMapper.updateById(wrkCharge) > 0) {
-//                        //涓嬪彂浠诲姟
-//                        MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-//                    }
-//                } else if (wrkCharge.getWrkSts() == 52) {
-//                    //妫�娴嬪皬杞︽槸鍚︽弧鐢�
-//
-//                    //鑾峰彇婊$數闃堝��
-//                    int maxPower = 95;
-//                    EntityWrapper<Config> wrapper = new EntityWrapper<>();
-//                    wrapper.eq("code", "chargeMaxValue");
-//                    Config config = configService.selectOne(wrapper);
-//                    if (config != null) {
-//                        maxPower = Integer.parseInt(config.getValue());
-//                    }
-//
-//                    if (shuttleProtocol.getPowerPercent() < maxPower) {
-//                        continue;
-//                    }
-//
-//                    //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
-//                    EntityWrapper<Config> wrapper1 = new EntityWrapper<>();
-//                    wrapper.eq("code", "shuttleMaxPowerVerify");
-//                    Config config1 = configService.selectOne(wrapper1);
-//                    if (config1 != null) {
-//                        if (config1.getValue().equals("true")) {
-//                            if (shuttleProtocol.getVoltage() < 5630) {
-//                                continue;//鐢靛帇涓嶅缁х画鍏呯數
-//                            }
-//                        }
-//                    }
-//                    //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
-//
-//                    //灏忚溅婊$數锛岀粨鏉熷厖鐢典换鍔�
-//                    NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), false);
-//                    ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>();
-//                    commands.add(chargeCommand);
-//                    //鍒涘缓鍒嗛厤鍛戒护
-//                    ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-//                    assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-//                    assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙�
-//                    assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡
-//                    assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-//                    assignCommand.setCommands(commands);//杩愯鍛戒护
-//
-//                    //涓嬪彂浠诲姟
-//                    MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-//                    try {
-//                        Thread.sleep(3000);
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                    }
-//
-//                    wrkCharge.setWrkSts(53L);//52.灏忚溅鍘诲厖鐢典腑 => 53.灏忚溅鍏呯數瀹屾垚
-//                    wrkCharge.setModiTime(new Date());
-//                    if (wrkChargeMapper.updateById(wrkCharge) > 0) {
-//                        shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE.id);
-//                        shuttleProtocol.setTaskNo(0);
-//                        shuttleProtocol.setPakMk(false);
-//                    }
-//                } else if (wrkCharge.getWrkSts() == 53) {
-//                    if (shuttleProtocol.getChargState() == 0) {//灏忚溅澶勪簬鏈厖鐢电姸鎬�
-//                        boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkCharge.getLocNo()), shuttleThread.getSlave().getId(), shuttleThread);
-//                        if (!result) {
-//                            continue;
-//                        }
-//
-//                        wrkCharge.setWrkSts(60L);//53.灏忚溅鍏呯數瀹屾垚 => 60.鍏呯數浠诲姟瀹屾垚
-//                        wrkCharge.setModiTime(new Date());
-//                        if (wrkChargeMapper.updateById(wrkCharge) > 0) {
-//
-//                        }
-//                    }
-//                }
-//
-//            }
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//    }
+    /**
+     * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔�
+     */
+    public synchronized void executeShuttleCharge() {
+        try {
+            //鏌ヨ灏忚溅鍏呯數浠诲姟
+            for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+                WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttle.getId());
+                if(wrkMast == null) {
+                    continue;
+                }
+
+                boolean result1 = this.executeShuttleChargeStepGoToChargeSta(wrkMast);//灏忚溅绛夊緟鍏呯數妗�
+                if (!result1) {
+                    continue;
+                }
+
+                boolean result2 = this.executeShuttleChargeStepArrivalChargeSta(wrkMast);//灏忚溅鍒拌揪鍏呯數妗�
+                if (!result2) {
+                    continue;
+                }
+
+                boolean result3 = this.executeShuttleChargeStepStartCharge(wrkMast);//灏忚溅寮�濮嬪厖鐢�
+                if (!result3) {
+                    continue;
+                }
+
+                boolean result4 = this.executeShuttleChargeStepStopCharge(wrkMast);//灏忚溅鍋滄鍏呯數
+                if (!result4) {
+                    continue;
+                }
+
+                boolean result5 = this.executeShuttleChargeStepLeaveCharge(wrkMast);//灏忚溅绂诲紑鍏呯數妗�
+                if (!result5) {
+                    continue;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 灏忚溅鍓嶅線鍏呯數妗�
+     */
+    private synchronized boolean executeShuttleChargeStepGoToChargeSta(WrkMast wrkMast) {
+        if (wrkMast.getWrkSts() == WrkStsType.NEW_CHARGE.sts) {
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
+                //灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
+                wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);
+                wrkMast.setModiTime(new Date());
+                wrkMastService.updateById(wrkMast);
+                return false;
+            }
+
+            //璋冨害灏忚溅鍘诲厖鐢垫々
+            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getLocNo(), wrkMast.getShuttleNo());
+            if (!dispatched) {
+                return false;
+            }
+
+            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN.sts);//灏忚溅鍓嶅線鍏呯數妗�
+            wrkMast.setModiTime(new Date());
+            wrkMastService.updateById(wrkMast);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 灏忚溅鍒拌揪鍏呯數妗�
+     */
+    private synchronized boolean executeShuttleChargeStepArrivalChargeSta(WrkMast wrkMast) {
+        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN.sts) {
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //鍒ゆ柇鏄惁瀛樺湪鏈畬鎴愮殑绉诲姩浠诲姟
+            WrkMast moveWrk = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
+            if(moveWrk != null) {
+                return false;
+            }
+
+            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
+                return false;
+            }
+
+            //灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
+            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);//灏忚溅鍒拌揪鍏呯數妗�
+            wrkMast.setModiTime(new Date());
+            wrkMastService.updateById(wrkMast);
+
+            return false;
+        }
+        return true;
+    }
+
+    //灏忚溅寮�濮嬪厖鐢�
+    private synchronized boolean executeShuttleChargeStepStartCharge(WrkMast wrkMast) {
+        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts) {
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠�
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//鍑哄簱妯″紡
+            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+
+            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true);
+            assignCommand.setCommands(commands);//杩愯鍛戒护
+
+            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_WORKING.sts);
+            wrkMast.setModiTime(new Date());
+            if (!wrkMastService.updateById(wrkMast)) {
+                return false;
+            }
+
+            //涓嬪彂浠诲姟
+            shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+            return false;
+        }
+        return true;
+    }
+
+    //灏忚溅鍋滄鍏呯數
+    private synchronized boolean executeShuttleChargeStepStopCharge(WrkMast wrkMast) {
+        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_WORKING.sts) {
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            if (!shuttleThread.isChargingCompleted()) {
+                return false;
+            }
+
+            //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝仠姝㈠厖鐢靛懡浠�
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//鍑哄簱妯″紡
+            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+
+            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, false);
+            assignCommand.setCommands(commands);//杩愯鍛戒护
+
+            //涓嬪彂浠诲姟
+            shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+            return false;
+        }
+        return true;
+    }
+
+    //灏忚溅绂诲紑鍏呯數妗�
+    private synchronized boolean executeShuttleChargeStepLeaveCharge(WrkMast wrkMast) {
+        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts) {
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            ShuttleChargeType chargeType = ShuttleChargeType.get(Integer.parseInt(wrkMast.getMk()));
+            if(chargeType == null) {
+                return false;
+            }
+
+            //璋冨害灏忚溅鍘诲緟鏈轰綅
+            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), chargeType.waitLocNo, wrkMast.getShuttleNo());
+            if (!dispatched) {
+                return false;
+            }
+
+            wrkMast.setWrkSts(WrkStsType.COMPLETE_CHARGE.sts);
+            wrkMast.setModiTime(new Date());
+            if (wrkMastService.updateById(wrkMast)) {
+                return false;
+            }
+            return false;
+        }
+        return true;
+    }
 
     /**
      * 鎵ц灏忚溅绉诲簱浠诲姟
@@ -2120,23 +2148,23 @@
 
             assignCommand.setCommands(commands);
 
-            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-            List<NavigateNode> targetNodes = ForkLiftUtils.getLiftStaNodes(wrkMast.getStaNo());
-            if (targetNodes == null) {
-                return false;//鏈幏鍙栧埌鑺傜偣
-            }
-            boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
-            if (!checkPathIsAvailable) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
-            }
-            //灏濊瘯閿佸畾鐩爣绔欒矾寰�
-            boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-            if (!result2) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞閿佸畾澶辫触
-            }
-            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
+//            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
+//            List<NavigateNode> targetNodes = ForkLiftUtils.getLiftStaNodes(wrkMast.getStaNo());
+//            if (targetNodes == null) {
+//                return false;//鏈幏鍙栧埌鑺傜偣
+//            }
+//            boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
+//            if (!checkPathIsAvailable) {
+//                News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
+//            }
+//            //灏濊瘯閿佸畾鐩爣绔欒矾寰�
+//            boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
+//            if (!result2) {
+//                News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;//璺緞閿佸畾澶辫触
+//            }
+//            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
 
             wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐�
             wrkMast.setModiTime(now);
@@ -2250,17 +2278,6 @@
                 wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
                 wrkMast.setModiTime(now);
                 wrkMastService.updateById(wrkMast);
-
-                if (wrkMast.getWrkSts() == WrkStsType.COMPLETE_MOVE.sts) {
-                    // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-                    if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) {
-                        log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
-                    }
-                    // 鍒犻櫎宸ヤ綔涓绘。
-                    if (!wrkMastService.deleteById(wrkMast)) {
-                        log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
-                    }
-                }
                 return false;
             }
 

--
Gitblit v1.9.1