From 5589dd50d57175ca231827be7bb2a9fb18875c7f Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 26 六月 2023 19:25:28 +0800
Subject: [PATCH] 充电任务,出入库bug

---
 src/main/java/com/zy/asrs/service/WrkChargeService.java          |    3 
 /dev/null                                                        |  270 ---------------------------
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java      |  261 ++-----------------------
 src/main/java/com/zy/core/thread/ShuttleThread.java              |   12 
 src/main/resources/mapper/WrkChargeMapper.xml                    |   11 +
 src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java |   13 -
 src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java            |    4 
 7 files changed, 50 insertions(+), 524 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
deleted file mode 100644
index 6bf8805..0000000
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ /dev/null
@@ -1,270 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.annotations.ManagerAuth;
-import com.core.common.Cools;
-import com.core.common.R;
-import com.zy.asrs.domain.vo.PlcErrorTableVo;
-import com.zy.asrs.domain.vo.SiteTableVo;
-import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.entity.BasSte;
-import com.zy.asrs.entity.WrkCharge;
-import com.zy.asrs.service.BasDevpService;
-import com.zy.asrs.service.BasSteService;
-import com.zy.asrs.service.WrkChargeService;
-import com.zy.common.model.enums.WrkChargeType;
-import com.zy.common.service.CommonService;
-import com.zy.core.DevpThread;
-import com.zy.core.News;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.enums.SteChargeType;
-import com.zy.core.enums.SteStatusType;
-import com.zy.core.model.DevpSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.protocol.StaProtocol;
-import com.zy.core.model.protocol.SteProtocol;
-import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.SiemensDevpThread;
-import com.zy.core.thread.SteThread;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.*;
-
-/**
- * 杈撻�佽澶囨帴鍙�
- * Created by vincent on 2020-06-01
- */
-@Slf4j
-@RestController
-@RequestMapping("/site")
-public class SiteController {
-
-    @Autowired
-    private SlaveProperties slaveProperties;
-    @Autowired
-    private BasDevpService basDevpService;
-    @Autowired
-    private WrkChargeService wrkChargeService;
-    @Autowired
-    private BasSteService basSteService;
-    @Autowired
-    private CommonService commonService;
-
-    @GetMapping("/io/mode/info/site")
-    @ManagerAuth(memo = "鍏呯數妯″紡")
-    public R ioMode(){
-        List<Map<String, Object>> res = new ArrayList<>();
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-            Map<String, Object> map1 = new HashMap<>();
-            map1.put("floor", 1);
-            map1.put("modeVal", !devpThread.charge0);
-            map1.put("modeDesc", !devpThread.charge0?"鍏呯數涓�":"鍏抽棴");
-            res.add(map1);
-            Map<String, Object> map2 = new HashMap<>();
-            map2.put("floor", 2);
-            map2.put("modeVal", devpThread.charge1);
-            map2.put("modeDesc", devpThread.charge1?"鍏呯數涓�":"鍏抽棴");
-            res.add(map2);
-        }
-        return R.ok().add(res);
-    }
-
-    @PostMapping("/io/mode/action/site")
-    @ManagerAuth(memo = "鍏呯數鎺у埗")
-    public R ioModeAction(@RequestParam("floor") Integer floor, @RequestParam("charge") Boolean charge){
-        if (null != wrkChargeService.selectWorking(null, WrkChargeType.charge)) {
-            return R.error("鐩墠瀛樺湪灏忚溅鍏呯數浠诲姟锛岃绋嶅悗鍐嶈瘯");
-        }
-        if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) {
-            return R.error("鐩墠瀛樺湪灏忚溅澶嶄綅浠诲姟锛岃绋嶅悗鍐嶈瘯");
-        }
-        if (charge) {
-            return R.ok();
-        }
-
-        SteChargeType steCharge = SteChargeType.get(floor);
-        assert steCharge != null;
-        Integer steNo = basSteService.hasCarOfLocNo(steCharge.locNo);
-        if (Cools.isEmpty(steNo)) {
-            return R.error(steNo + "鍙峰皬杞︿笉鍦�" + floor + "鍙峰厖鐢垫々锛岃妫�鏌ュ皬杞﹀畾浣�");
-        }
-        SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
-        SteProtocol steProtocol = steThread.getSteProtocol();
-        BasSte basSte = basSteService.selectById(steNo);
-        if (steProtocol.getMode() == 0) {
-            return R.error(steNo + "鍙峰皬杞︾绾匡紝鏃犳硶鎿嶄綔");
-        }
-        if (!steProtocol.getStatusType().equals(SteStatusType.IDLE)) {
-            return R.error(steNo + "鍙峰皬杞︿笉鏄┖闂诧紝鏃犳硶鎿嶄綔");
-        }
-        WrkCharge wrkCharge = wrkChargeService.selectWorking(steNo, WrkChargeType.reset);
-        if (wrkCharge == null) {
-            // 寮�濮嬬┛姊溅澶嶄綅浠诲姟
-            wrkCharge = new WrkCharge();
-            wrkCharge.setSteNo(steNo);
-            wrkCharge.setWrkNo(commonService.getChargeWorkNo(6));
-            wrkCharge.setWrkSts(41L);   // 41.灏忚溅鍑嗗澶嶄綅
-            wrkCharge.setCrnNo(2);  // 鍥哄畾2鍙峰爢鍨涙満
-            wrkCharge.setIoPri((double) 10);
-            wrkCharge.setSourceLocNo(steCharge.locNo);
-            wrkCharge.setLocNo(basSte.getIdleLoc());
-            wrkCharge.setMemo("reset");
-            wrkCharge.setAppeTime(new Date());
-            if (!wrkChargeService.insert(wrkCharge)) {
-                News.error("淇濆瓨{}鍙风┛姊溅澶嶄綅浠诲姟澶辫触!!!", steNo);
-            }
-        }
-        return R.ok(steNo + "鍙峰皬杞﹀噯澶囩寮�" + floor + "鍙峰厖鐢垫々");
-    }
-
-    @PostMapping("/table/site")
-    @ManagerAuth(memo = "绔欑偣淇℃伅琛�")
-    public R siteTable(){
-        List<SiteTableVo> list = new ArrayList<>();
-        // 鍐呭瓨鏁版嵁
-        Map<Integer, StaProtocol> station = new HashMap<>();
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-            station.putAll(devpThread.getStation());
-        }
-        // 鎸佷箙鏁版嵁
-        List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<BasDevp>().orderBy("dev_no"));
-        for (BasDevp devp : basDevps) {
-            SiteTableVo vo = new SiteTableVo();
-            vo.setDevNo(devp.getDevNo());    // 绔欑偣缂栧彿
-            list.add(vo);
-            StaProtocol staProtocol = station.get(devp.getDevNo());
-            if (null == staProtocol) { continue; }
-            vo.setWorkNo(staProtocol.getWorkNo());   //  宸ヤ綔鍙�
-            vo.setAutoing(staProtocol.isAutoing()?"Y":"N");     //  鑷姩
-            vo.setLoading(staProtocol.isLoading()?"Y":"N");     // 鏈夌墿
-            vo.setInEnable(staProtocol.isInEnable()?"Y":"N");   // 鍙叆
-            vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 鍙嚭
-            vo.setLiftArrival(staProtocol.isLiftArrival()?"Y":"N"); // 鎻愬崌鏈哄埌浣嶄俊鍙�
-            vo.setShuttleTakeEnable(staProtocol.isShuttleTakeEnable()?"Y":"N"); // 绌挎杞﹀彲鍙栦俊鍙�
-            vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 鍏ュ簱鏍囪
-            vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 绌烘澘淇″彿
-            vo.setStaNo(staProtocol.getStaNo());                // 鐩爣绔�
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/table/plc/errors")
-    @ManagerAuth(memo = "杈撻�佽澶噋lc寮傚父淇℃伅琛�")
-    public R plcErrorTable(){
-        List<PlcErrorTableVo> list = new ArrayList<>();
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-            Map<Integer, StaProtocol> station = devpThread.getStation();
-
-            for(Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
-                StaProtocol staProtocol = entry.getValue();
-//                if (staProtocol) {
-//                    PlcErrorTableVo vo = new PlcErrorTableVo();
-//                    vo.setNo(entry.getKey());   //  搴忓彿
-//
-//                    vo.setPlcDesc("");  //  todo:luxiaotao plc閿欒鎻忚堪
-//                    vo.setError("");    //  todo:luxiaotao 寮傚父淇℃伅
-//                    list.add(vo);
-//                }
-            }
-
-        }
-
-        list.sort((o1, o2) -> {
-            if (o1.getNo().compareTo(o2.getNo()) > 0){
-                return 1;
-            }else if (o1.getNo().compareTo(o2.getNo()) < 0){
-                return 0;
-            }else{
-                return -1;
-            }
-
-        });
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/output/site")
-    @ManagerAuth(memo = "绔欑偣璁惧鎶ユ枃鏃ュ織杈撳嚭")
-    public R siteOutput(){
-        StringBuilder str = new StringBuilder();
-        String s;
-        int i = 0;
-        while((s = OutputQueue.DEVP.poll()) != null && i <=10) {
-            str.append("\n").append(s);
-            i++;
-        }
-        return R.ok().add(str.toString());
-    }
-
-    /****************************************************************/
-    /************************** 璇︽儏鎿嶄綔 ******************************/
-    /****************************************************************/
-
-    @GetMapping("/detl/{siteId}")
-    public R siteDetl(@PathVariable("siteId") Integer siteId){
-        SiteTableVo vo = new SiteTableVo();
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-            Map<Integer, StaProtocol> station = devpThread.getStation();
-            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
-                if (siteId.equals(entry.getKey())) {
-                    StaProtocol staProtocol = entry.getValue();
-                    vo.setDevNo(entry.getKey());    // 绔欑偣缂栧彿
-                    vo.setWorkNo(staProtocol.getWorkNo());   //  宸ヤ綔鍙�
-                    vo.setAutoing(staProtocol.isAutoing()?"Y":"N");     //  鑷姩
-                    vo.setLoading(staProtocol.isLoading()?"Y":"N");     // 鏈夌墿
-                    vo.setInEnable(staProtocol.isInEnable()?"Y":"N");   // 鍙叆
-                    vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 鍙嚭
-                    vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 闇�姹�1
-                    vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 绌烘澘淇″彿
-                    vo.setStaNo(staProtocol.getStaNo());                // 鐩爣绔�
-                    return R.ok().add(vo);
-                }
-            }
-        }
-        return R.error("plc宸叉帀绾�");
-    }
-
-    @PostMapping("/detl/update")
-    @ManagerAuth(memo = "淇敼绔欑偣鏁版嵁")
-    public R siteDetlUpdate(@RequestParam Integer siteId,
-                            @RequestParam Short workNo,
-                            @RequestParam Short staNo,
-                            @RequestParam String pakMk){
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-            Map<Integer, StaProtocol> station = devpThread.getStation();
-            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
-                if (siteId.equals(entry.getKey())) {
-                    StaProtocol staProtocol = entry.getValue();
-                    staProtocol = staProtocol.clone();
-                    if (workNo != null) {
-                        staProtocol.setWorkNo(workNo);
-                    }
-                    if (staNo != null) {
-                        staProtocol.setStaNo(staNo);
-                    }
-                    if (pakMk != null) {
-                        staProtocol.setPakMk(pakMk.equals("Y"));
-                    }
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    if (result) {
-                        return R.ok();
-                    } else {
-                        return R.error("涓嬪彂鍛戒护澶辫触");
-                    }
-                }
-            }
-        }
-        return R.error("plc宸叉帀绾�");
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java b/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
index fdc699b..987a0bc 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
@@ -10,7 +10,9 @@
 @Repository
 public interface WrkChargeMapper extends BaseMapper<WrkCharge> {
 
-    WrkCharge selectWorkingOfCharge(@Param("shuttleNo") Integer shuttleNo, @Param("charge") Integer charge);
+    WrkCharge selectWorking(@Param("shuttleNo") Integer shuttleNo);
+
+    WrkCharge selectWorkingOfCharge(@Param("charge") Integer charge);
 
     WrkCharge selectWorkingOfReset(@Param("steNo") Integer steNo);
 
diff --git a/src/main/java/com/zy/asrs/service/WrkChargeService.java b/src/main/java/com/zy/asrs/service/WrkChargeService.java
index d5e225e..a775d58 100644
--- a/src/main/java/com/zy/asrs/service/WrkChargeService.java
+++ b/src/main/java/com/zy/asrs/service/WrkChargeService.java
@@ -2,11 +2,10 @@
 
 import com.baomidou.mybatisplus.service.IService;
 import com.zy.asrs.entity.WrkCharge;
-import com.zy.common.model.enums.WrkChargeType;
 
 public interface WrkChargeService extends IService<WrkCharge> {
 
-    WrkCharge selectWorking(Integer steNo, WrkChargeType type);
+    WrkCharge selectWorking(Integer steNo);
 
     WrkCharge selectWorkingOfCharge(Integer charge);
 
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 3e5142c..9a25422 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1079,7 +1079,7 @@
                             BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
                             Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
 
-                            String disLocNo = "2000202" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
+                            String disLocNo = "190020" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
                             LocMast locMast1 = locMastService.queryByLoc(disLocNo);
                             if (locMast1 == null) {
                                 continue;//鎵句笉鍒板簱浣�
@@ -1155,22 +1155,11 @@
                         assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue());
                         assignCommand.setSourceLocNo(liftSiteLocNo);
 
-                        List<ShuttleCommand> commands = this.shuttleAssignCommand(liftSiteLocNo, wrkMast.getSourceLocNo(), liftSiteLocNo, assignCommand, shuttleThread);
-                        if (commands == null) {
-                            continue;//鏈壘鍒拌矾寰�
-                        }
-                        //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
-                        short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
-                        Short distCode = commands.get(0).getStartCodeNum();//鐩爣浜岀淮鐮�
-                        //鑾峰彇绉诲姩鍛戒护
-                        ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, commands.get(0).getRunDirection(), startCode, 1400, 500);
-                        commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
-
                         //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
                         BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
                         Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
 
-                        String disLocNo = "2000202" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
+                        String disLocNo = "190020" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
                         LocMast locMast1 = locMastService.queryByLoc(disLocNo);
                         if (locMast1 == null) {
                             continue;//鎵句笉鍒板簱浣�
@@ -1178,8 +1167,19 @@
                         short disCode = Short.parseShort(locMast1.getQrCodeValue());
                         //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
                         ShuttleCommand moveCommand2 = shuttleThread.getMoveCommand(endStartCode, disCode, 1400, ShuttleRunDirection.BOTTOM.id, endStartCode, 1400, 500);
-                        commands.add(moveCommand2);
 
+                        List<ShuttleCommand> commands = this.shuttleAssignCommand(liftSiteLocNo, wrkMast.getSourceLocNo(), liftSiteLocNo, assignCommand, shuttleThread);
+                        if (commands == null) {
+                            continue;//鏈壘鍒拌矾寰�
+                        }
+                        commands.add(moveCommand2);//浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
+
+                        //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
+                        short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
+                        Short distCode = commands.get(0).getStartCodeNum();//鐩爣浜岀淮鐮�
+                        //鑾峰彇绉诲姩鍛戒护
+                        ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, commands.get(0).getRunDirection(), startCode, 1400, 500);
+                        commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
 
                         //鍒嗛厤鐩爣搴撲綅
                         shuttleProtocol.setLocNo(wrkMast.getSourceLocNo());
@@ -1336,6 +1336,9 @@
                     && shuttleProtocol.getTaskNo() != 0
                     && shuttleProtocol.getBusyStatus() == 0
             ) {
+                //鏍囪澶嶄綅
+                shuttleProtocol.setPakMk(true);
+
                 //灏嗕换鍔℃。鏍囪涓哄畬鎴�
                 WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
                 if (wrkMast != null) {
@@ -1364,8 +1367,6 @@
                         shuttleProtocol.setSourceLocNo(null);
                         //鐩爣搴撲綅娓呴浂
                         shuttleProtocol.setLocNo(null);
-                        //鏍囪澶嶄綅
-                        shuttleProtocol.setPakMk(true);
                         //浠诲姟鎸囦护娓呴浂
                         shuttleProtocol.setAssignCommand(null);
                         News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
@@ -2470,7 +2471,7 @@
                 continue;
             }
 
-            WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue(), WrkChargeType.charge);
+            WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue());
             if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟
                 continue;
             }
@@ -2512,7 +2513,7 @@
      */
     public synchronized void executeShuttleCharge() {
         for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
-            WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
+            WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId());
             if (wrkCharge == null) {
                 continue;
             }
@@ -2735,8 +2736,12 @@
                     assignCommand.setCommands(commands);
 
                     shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
-                    //涓嬪彂浠诲姟
-                    MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+
+                    wrkCharge.setWrkSts(60L);//60.鍏呯數浠诲姟瀹屾垚
+                    if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+                        //涓嬪彂浠诲姟
+                        MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+                    }
                 }
 
                 if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) {
@@ -2745,222 +2750,6 @@
             }
         }
 
-    }
-
-    /**
-     * 杞鍏呯數妗╂槸鍚︽湁绌洪棽灏忚溅
-     */
-    @Deprecated
-    public synchronized void queryChargeLocOfComplete() {
-        // 涓庡厖鐢典换鍔′笉鍚屾杩涜
-        if (null != wrkChargeService.selectWorking(null, WrkChargeType.charge)) { return; }
-        if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) { return; }
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        // 妫�绱㈠厖鐢垫々
-        for (SteChargeType value : SteChargeType.values()) {
-            Integer steNo = basSteService.hasCarOfLocNo(value.locNo);
-            if (steNo != null) {
-                SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
-                SteProtocol steProtocol = steThread.getSteProtocol();
-                BasSte basSte = basSteService.selectById(steNo);
-                if (Cools.isEmpty(steProtocol, basSte)) {
-                    continue;
-                }
-                if (steProtocol.getCharge() < 99) {
-                    continue;
-                }
-                if (steProtocol.getMode() == 0) {
-                    continue;
-                }
-                if (!steProtocol.getStatusType().equals(SteStatusType.IDLE)) {
-                    continue;
-                }
-//                // 1鍙峰厖鐢垫々
-//                if (value.equals(SteChargeType.FIRST) && devpThread.charge0) {
-//                    continue;
-//                }
-//                // 2鍙峰厖鐢垫々
-//                if (value.equals(SteChargeType.SECOND) && devpThread.charge1) {
-//                    continue;
-//                }
-//                // 3鍙峰厖鐢垫々
-//                if (value.equals(SteChargeType.THIRD) && devpThread.charge2) {
-//                    continue;
-//                }
-//                // 灏忚溅鏄惁澶勪簬鍏呯數鐘舵��
-//                if (steProtocol.getChargeStatus() == 1) {
-//                    continue;
-//                }
-                // case 1 : 鑷姩鍏呯數寮�   棣堢數      脳
-                // case 2 : 鑷姩鍏呯數寮�   婊$數      鉁�
-                // case 3 : 鑷姩鍏呯數鍏�   棣堢數      鉁�
-                // case 4 : 鑷姩鍏呯數鍏�   婊$數      鉁�
-                if (basSte.getAutoCharge().equals("Y")
-                        && steProtocol.getCharge() < Float.parseFloat(basSte.getChargeLine())) {
-                    continue;
-                }
-
-                WrkCharge wrkCharge = wrkChargeService.selectWorking(steNo, WrkChargeType.reset);
-
-                if (wrkCharge == null) {
-                    // 寮�濮嬬┛姊溅澶嶄綅浠诲姟
-                    wrkCharge = new WrkCharge();
-                    wrkCharge.setSteNo(steNo);
-                    wrkCharge.setWrkNo(commonService.getChargeWorkNo(6));
-                    wrkCharge.setWrkSts(41L);   // 41.灏忚溅鍑嗗澶嶄綅
-                    wrkCharge.setCrnNo(2);  // 鍥哄畾2鍙峰爢鍨涙満
-                    wrkCharge.setIoPri((double) 10);
-                    wrkCharge.setSourceLocNo(value.locNo);
-                    wrkCharge.setLocNo(basSte.getIdleLoc());
-                    wrkCharge.setMemo("reset");
-                    wrkCharge.setAppeTime(new Date());
-                    if (!wrkChargeService.insert(wrkCharge)) {
-                        News.error("淇濆瓨{}鍙风┛姊溅澶嶄綅浠诲姟澶辫触!!!", steNo);
-                    } else {
-                        break;
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 灏忚溅浠庡厖鐢垫々 鑷� 寰呮満搴撲綅
-     */
-    @Deprecated
-    public synchronized void steFromChargeToIdleLoc() {
-        WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.reset);
-        if (wrkCharge == null) { return; }
-        SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo());
-        SteProtocol steProtocol = steThread.getSteProtocol();
-        BasSte basSte = basSteService.selectById(wrkCharge.getSteNo());
-        if (Cools.isEmpty(steProtocol, basSte)) {
-            return;
-        }
-        // 鎼繍鑷冲浐瀹氶�氶亾
-        if (wrkCharge.getWrkSts() == 41L) {
-            // 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾
-            List<String> channel = slaveProperties.getChannel();
-            for (String channelLocNo : channel) {
-                Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo());
-                if (null != otherSte) {
-                    News.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), channelLocNo, otherSte);
-                } else {
-                    // 鍥哄畾鍫嗗灈鏈�
-                    int crnNo = 1;
-                    if (null != wrkMastMapper.selectWorkingByCrn(crnNo)) {
-                        return;
-                    }
-
-                    LocMast channelLoc = locMastService.selectById(channelLocNo);
-
-                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo);
-                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                    if (crnProtocol == null) { continue; }
-                    // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                    if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                        // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
-                        CrnCommand crnCommand = new CrnCommand();
-                        crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
-                        crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                        crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                        crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                        crnCommand.setSourcePosX(steProtocol.getRow());     // 婧愬簱浣嶆帓
-                        crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
-                        crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                        crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), false).shortValue());     // 鐩爣搴撲綅鎺�
-                        crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-                        crnCommand.setDestinationPosZ(channelLoc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-                        if (!MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, crnCommand))) {
-                            News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand));
-                        } else {
-                            // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                            steThread.modifyPos(Utils.getGroupRow(channelLoc.getLocNo(), false), channelLoc.getBay1(), channelLoc.getLev1());
-                            // 淇敼宸ヤ綔妗g姸鎬� 41.灏忚溅鍑嗗澶嶄綅 => 42.鍚婅溅鎼繍
-                            Date now = new Date();
-                            wrkCharge.setWrkSts(42L);
-                            wrkCharge.setCrnStrTime(now);
-                            wrkCharge.setModiTime(now);
-                            if (!wrkChargeService.updateById(wrkCharge)) {
-                                News.error("淇敼澶嶄綅浠诲姟鐘舵�� 41.灏忚溅鍑嗗澶嶄綅 => 42.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                            }
-                        }
-                        break;
-                    }
-
-                }
-            }
-        } else if (wrkCharge.getWrkSts() == 43L) {
-            // 灏忚溅琛岄┒閫氶亾
-            if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) {
-                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                SteCommand steCommand = new SteCommand();
-                steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
-                steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
-                steCommand.setTaskMode(SteTaskModeType.BACK_ORIGIN);  // 鍘诲乏绔�
-
-                steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());
-                steCommand.setBay(steProtocol.getBay());
-                steCommand.setLev(steProtocol.getLev());
-                if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
-                    News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
-                } else {
-                    // 淇敼宸ヤ綔妗g姸鎬� 43.灏忚溅鍒拌揪 ===> 44.灏忚溅璧拌
-                    wrkCharge.setWrkSts(44L);
-                    Date now = new Date();
-                    wrkCharge.setCrnEndTime(now);
-                    wrkCharge.setModiTime(now);
-                    if (!wrkChargeService.updateById(wrkCharge)) {
-                        News.error("淇敼澶嶄綅浠诲姟鐘舵�� 43.灏忚溅鍒拌揪 ===> 44.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                    }
-                }
-            }
-        } else if (wrkCharge.getWrkSts() == 45L) {
-            if (null != wrkMastMapper.selectWorkingByCrn(wrkCharge.getCrnNo())) {
-                return;
-            }
-
-            LocMast idleLoc = locMastService.selectById(basSte.getIdleLoc());
-
-            Integer otherSte = existOtherSte(idleLoc.getLocNo(), wrkCharge.getSteNo());
-            if (null != otherSte) {
-                News.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), idleLoc.getLocNo(), otherSte);
-            } else {
-                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo());
-                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                if (crnProtocol == null) { return; }
-                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                    // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-                    crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                    crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());     // 婧愬簱浣嶆帓
-                    crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
-                    crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                    crnCommand.setDestinationPosX(Utils.getGroupRow(idleLoc.getLocNo(), true).shortValue());     // 鐩爣搴撲綅鎺�
-                    crnCommand.setDestinationPosY(idleLoc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-                    crnCommand.setDestinationPosZ(idleLoc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                        steThread.modifyPos(Utils.getGroupRow(idleLoc.getLocNo(), true), idleLoc.getBay1(), idleLoc.getLev1());
-                        // 淇敼宸ヤ綔妗g姸鎬� 45.灏忚溅寰呮惉 => 46.鏀捐嚦寰呮満浣�
-                        Date now = new Date();
-                        wrkCharge.setWrkSts(46L);
-                        wrkCharge.setCrnStrTime(now);
-                        wrkCharge.setModiTime(now);
-                        if (!wrkChargeService.updateById(wrkCharge)) {
-                            News.error("淇敼宸ヤ綔妗g姸鎬� 45.灏忚溅寰呮惉 => 46.鏀捐嚦寰呮満浣� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                        }
-                    }
-                }
-
-            }
-        }
     }
 
     public List<String> crn2DemoLocs = new ArrayList<String>(); public String crn2LastLoc = "";
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java
index c8ae094..6019518 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java
@@ -4,25 +4,18 @@
 import com.zy.asrs.entity.WrkCharge;
 import com.zy.asrs.mapper.WrkChargeMapper;
 import com.zy.asrs.service.WrkChargeService;
-import com.zy.common.model.enums.WrkChargeType;
 import org.springframework.stereotype.Service;
 
 @Service("wrkChargeService")
 public class WrkChargeServiceImpl extends ServiceImpl<WrkChargeMapper, WrkCharge> implements WrkChargeService {
 
     @Override
-    public WrkCharge selectWorking(Integer shuttleNo, WrkChargeType type) {
-        switch (type) {
-            case charge:
-                return this.baseMapper.selectWorkingOfCharge(shuttleNo, 1);
-            case reset:
-                return this.baseMapper.selectWorkingOfReset(shuttleNo);
-        }
-        return null;
+    public WrkCharge selectWorking(Integer shuttleNo) {
+        return this.baseMapper.selectWorkingOfCharge(shuttleNo);
     }
 
     @Override
     public WrkCharge selectWorkingOfCharge(Integer charge) {
-        return this.baseMapper.selectWorkingOfCharge(null, charge);
+        return this.baseMapper.selectWorkingOfCharge(charge);
     }
 }
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 7aeff9c..30dac2d 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -653,9 +653,6 @@
             return false;
         }
 
-        //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
-        shuttleProtocol.setPakMk(false);
-
         List<ShuttleCommand> errorCommands = redisCommand.getErrorCommands();
         if (errorCommands.size() > 0) {
             //浼樺厛鎵ц璇ユ寚浠�
@@ -757,8 +754,12 @@
             //灏忚溅褰撳墠鍛戒护璧峰浣嶇疆灏辨槸鎻愬崌鏈轰簩缁寸爜锛岃鏄庡皬杞﹂渶瑕佸悜鎻愬崌鏈哄绉诲姩锛屽垯闇�瑕佸垽鏂姸鎬佹槸鍚︽弧瓒�
             if (command.getStartCodeNum().intValue() == liftProtocol.getBarcode().intValue()){
                 //鎻愬崌鏈烘槸鍚︾┖闂诧紝鎻愬崌鏈烘槸鍚﹀埌杈剧洰鏍囨ゼ灞傦紝鐩爣妤煎眰鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙蜂綅
-                if (!liftProtocol.isIdle()) {
+                if (!liftProtocol.isIdleNoTask()) {
                     return false;//鎻愬崌鏈哄繖锛岀姝笅鍙戝懡浠�
+                }
+                if (liftProtocol.getTaskNo().intValue() != wrkNo) {
+                    //鎻愬崌鏈哄伐浣滃彿鍜屽綋鍓嶅伐浣滀笉鐩稿悓锛岀姝笅鍙戝懡浠�
+                    return false;
                 }
 
                 Short distCodeNum = command.getDistCodeNum();//鐩爣浜岀淮鐮�
@@ -793,6 +794,9 @@
         } else {
             News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
 
+            //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
+            shuttleProtocol.setPakMk(false);
+
             //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
             BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class);
             if (shuttleOptService != null) {
diff --git a/src/main/resources/mapper/WrkChargeMapper.xml b/src/main/resources/mapper/WrkChargeMapper.xml
index 373a6a0..b029dfc 100644
--- a/src/main/resources/mapper/WrkChargeMapper.xml
+++ b/src/main/resources/mapper/WrkChargeMapper.xml
@@ -31,13 +31,22 @@
 
     </resultMap>
 
-    <select id="selectWorkingOfCharge" resultMap="BaseResultMap">
+    <select id="selectWorking" resultMap="BaseResultMap">
         select top 1 *
         from asr_wrk_charge
         where 1=1
         <if test="shuttleNo != null">
             and shuttle_no = #{shuttleNo}
         </if>
+        and wrk_sts &lt; 60
+        and memo = 'charge'
+        order by appe_time, io_pri desc
+    </select>
+
+    <select id="selectWorkingOfCharge" resultMap="BaseResultMap">
+        select top 1 *
+        from asr_wrk_charge
+        where 1=1
         <if test="charge != null">
             and charge = #{charge}
         </if>

--
Gitblit v1.9.1