From 850273b8707537450399fa0d0070c413fb177db5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 21 九月 2022 16:36:04 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/WrkChargeService.java          |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java      |   48 ++++++++-------
 src/main/java/com/zy/core/enums/SteChargeType.java               |   13 ++-
 src/main/java/com/zy/core/enums/SteTaskModeType.java             |   60 ++++++++++++++++++++
 src/main/resources/mapper/WrkChargeMapper.xml                    |    8 ++
 src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java |    4 +
 src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java            |    2 
 7 files changed, 110 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java b/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
index 6ecb24a..2bd833f 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
@@ -9,4 +9,6 @@
 @Repository
 public interface WrkChargeMapper extends BaseMapper<WrkCharge> {
 
+    WrkCharge selectWorking(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 bc19b31..b14f662 100644
--- a/src/main/java/com/zy/asrs/service/WrkChargeService.java
+++ b/src/main/java/com/zy/asrs/service/WrkChargeService.java
@@ -5,4 +5,6 @@
 
 public interface WrkChargeService extends IService<WrkCharge> {
 
+    WrkCharge selectWorking(Integer steNo);
+
 }
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 30aae8a..f37d508 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1149,27 +1149,30 @@
         SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
         SteProtocol steProtocol = steThread.getSteProtocol();
         if (steProtocol == null) { return; }
-        if (steProtocol.isIdle()) {
 
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            SteCommand steCommand = new SteCommand();
-            steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
-            steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
-            steCommand.setTaskMode(SteTaskModeType.findWaiting(steProtocol.getRow().intValue())); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
+        if (!basSteService.updatePakMk(steNo, "Y")) {
+            log.error("淇敼绌挎杞︿綔涓氱姸鎬� 澶辫触锛侊紒锛岀┛姊溅={}", steNo);
+            return;
+        }
 
-            steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());
-            steCommand.setBay(steProtocol.getBay());
-            steCommand.setLev(steProtocol.getLev());
+        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+        SteCommand steCommand = new SteCommand();
+        steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
+        steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
+        steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol.getRow())); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
 
-            if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
-                log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
-            } else {
-                // 淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞�
-                wrkCharge.setSteNo(steNo);
-                wrkCharge.setModiTime(new Date());
-                if (!wrkChargeService.updateById(wrkCharge)) {
-                    log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                }
+        steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());
+        steCommand.setBay(steProtocol.getBay());
+        steCommand.setLev(steProtocol.getLev());
+
+        if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
+            log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
+        } else {
+            // 淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞�
+            wrkCharge.setSteNo(steNo);
+            wrkCharge.setModiTime(new Date());
+            if (!wrkChargeService.updateById(wrkCharge)) {
+                log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
             }
         }
     }
@@ -2054,13 +2057,13 @@
             BasSte basSte = basSteService.selectById(ste.getId());
             if (Cools.isEmpty(steProtocol, basSte)) { continue; }
             try {
-                if (!steProtocol.statusType.equals(SteStatusType.IDLE)) {
+                if (!steProtocol.statusType.equals(SteStatusType.IDLE) || basSte.getPakMk().equals("Y")) {
                     continue;
                 }
                 if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) {
                     continue;
                 }
-                WrkCharge wrkCharge = wrkChargeService.selectById(steProtocol.getTaskNo());
+                WrkCharge wrkCharge = wrkChargeService.selectWorking(steProtocol.getSteNo().intValue());
 
                 if (wrkCharge == null) {
                     String idleLoc = basSte.getIdleLoc();
@@ -2071,8 +2074,9 @@
                     wrkCharge.setCrnNo(basSte.getCrnNo());
                     wrkCharge.setIoPri((double) 10);
                     wrkCharge.setLocNo(idleLoc);
-                    if (wrkChargeService.insert(wrkCharge)) {
+                    if (!wrkChargeService.insert(wrkCharge)) {
                         log.error("淇濆瓨{}鍙风┛姊溅鍏呯數浠诲姟澶辫触!!!", ste.getId());
+                        continue;
                     }
 
                     if (Utils.getGroupRow(idleLoc).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(idleLoc) && steProtocol.getLev() == Utils.getLev(idleLoc)) {
@@ -2121,7 +2125,7 @@
 
                     } else if (wrkCharge.getWrkSts() == 6L) {
                         // 灏忚溅琛岄┒鑷冲厖鐢典綅
-                        if (steProtocol.isIdle()) {
+                        if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) {
                             // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                             SteCommand steCommand = new SteCommand();
                             steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
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 b2d225b..662469a 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java
@@ -9,4 +9,8 @@
 @Service("wrkChargeService")
 public class WrkChargeServiceImpl extends ServiceImpl<WrkChargeMapper, WrkCharge> implements WrkChargeService {
 
+    @Override
+    public WrkCharge selectWorking(Integer steNo) {
+        return this.baseMapper.selectWorking(steNo);
+    }
 }
diff --git a/src/main/java/com/zy/core/enums/SteChargeType.java b/src/main/java/com/zy/core/enums/SteChargeType.java
index fd7436b..aa89906 100644
--- a/src/main/java/com/zy/core/enums/SteChargeType.java
+++ b/src/main/java/com/zy/core/enums/SteChargeType.java
@@ -4,19 +4,22 @@
 
 public enum SteChargeType {
 
-    FIRST(1, "0100101"),
-    SECOND(2, "1400701"),
-    THIRD(3, "2100401"),
+    FIRST(1, "0100101", "0300101"),
+    SECOND(2, "1400701", "1200701"),
+    THIRD(3, "2100401", "1900401"),
     ;
 
-    SteChargeType(int ssbm, String locNo) {
+    SteChargeType(int ssbm, String locNo, String idleLoc) {
         this.ssbm = ssbm;
         this.locNo = locNo;
+        this.idleLoc = idleLoc;
     }
 
     public int ssbm;
 
     public String locNo;
+
+    public String idleLoc;
 
     public static SteChargeType get(String locNo) {
         if (Cools.isEmpty(locNo)) {
@@ -24,7 +27,7 @@
         }
         SteChargeType[] values = SteChargeType.values();
         for (SteChargeType value : values) {
-            if (value.locNo.equals(locNo)) {
+            if (value.idleLoc.equals(locNo)) {
                 return value;
             }
         }
diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java
index 509b553..565ee04 100644
--- a/src/main/java/com/zy/core/enums/SteTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/SteTaskModeType.java
@@ -118,6 +118,36 @@
         }
     }
 
+    public static SteTaskModeType findOriginByLoc(Short row) {
+        switch (row) {
+            case 1:
+            case 2:
+            case 3:
+            case 8:
+            case 9:
+            case 10:
+            case 11:
+            case 15:
+            case 16:
+            case 17:
+            case 18:
+                return SteTaskModeType.GO_ORIGIN;
+            case 4:
+            case 5:
+            case 6:
+            case 7:
+            case 12:
+            case 13:
+            case 14:
+            case 19:
+            case 20:
+            case 21:
+                return SteTaskModeType.BACK_ORIGIN;
+            default:
+                throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
+        }
+    }
+
     public static SteTaskModeType findInByLoc(SteProtocol steProtocol) {
         switch (steProtocol.getRow()) {
             case 1:
@@ -238,4 +268,34 @@
         }
     }
 
+    public static SteTaskModeType findChargeByLocForCharge(Integer row) {
+        switch (row) {
+            case 1:
+            case 2:
+            case 3:
+            case 8:
+            case 9:
+            case 10:
+            case 11:
+            case 15:
+            case 16:
+            case 17:
+            case 18:
+                return SteTaskModeType.GO_ORIGIN;
+            case 4:
+            case 5:
+            case 6:
+            case 7:
+            case 12:
+            case 13:
+            case 14:
+            case 19:
+            case 20:
+            case 21:
+                return SteTaskModeType.BACK_ORIGIN;
+            default:
+                throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
+        }
+    }
+
 }
diff --git a/src/main/resources/mapper/WrkChargeMapper.xml b/src/main/resources/mapper/WrkChargeMapper.xml
index 5499e2a..c3dbf40 100644
--- a/src/main/resources/mapper/WrkChargeMapper.xml
+++ b/src/main/resources/mapper/WrkChargeMapper.xml
@@ -29,4 +29,12 @@
 
     </resultMap>
 
+    <select id="selectWorking" resultMap="BaseResultMap">
+        select top 1 *
+        from asr_wrk_charge
+        where 1=1
+        and ste_no = #{steNo}
+        and wrk_sts != 10
+    </select>
+
 </mapper>

--
Gitblit v1.9.1