From 389ed5b1fb5585e66c95e3891ff8b40e02fe1995 Mon Sep 17 00:00:00 2001
From: lsh <1>
Date: 星期四, 07 三月 2024 14:08:53 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/model/protocol/StaProtocol.java   |    8 ++
 src/main/java/com/zy/asrs/entity/BasDevp.java               |   16 +++++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   33 ++++++++++
 src/main/java/com/zy/core/MainProcess.java                  |    4 +
 src/main/resources/mapper/BasDevpMapper.xml                 |    4 +
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |  110 ++++++++++++++++++++++++++++++++++++
 src/main/resources/application.yml                          |    2 
 7 files changed, 174 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/BasDevp.java b/src/main/java/com/zy/asrs/entity/BasDevp.java
index 1e3d022..79125fd 100644
--- a/src/main/java/com/zy/asrs/entity/BasDevp.java
+++ b/src/main/java/com/zy/asrs/entity/BasDevp.java
@@ -214,6 +214,22 @@
     @TableField("cart_pos")
     private Integer cartPos;
 
+    @ApiModelProperty(value= "")
+    @TableField("agv_start_pick")
+    private Integer agvStartPick;
+
+    @ApiModelProperty(value= "")
+    @TableField("agv_target_pick")
+    private Integer agvTargetPick;
+
+    @ApiModelProperty(value= "")
+    @TableField("agv_start_place")
+    private Integer agvStartPlace;
+
+    @ApiModelProperty(value= "")
+    @TableField("agv_target_place")
+    private Integer agvTargetPlace;
+
 
     public String getIoTime$(){
         if (Cools.isEmpty(this.ioTime)){
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 046a07a..98efc3c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1132,7 +1132,38 @@
         }
     }
 
-    //鑷姩瀹屾垚浠诲姟
+    //agv鍙栨斁璐т换鍔″畬鎴�
+    public synchronized void autoCompleteAGV() {
+        List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>());
+        for (BasDevp basDevp:basDevps){
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
+            if (staProtocol == null) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+            if (basDevp.getWrkNo()!=0){
+                if (basDevp.getAgvTargetPick()!=0){//鍙栬揣
+                    staProtocol.setAgvTypeSign((short)0);
+                    staProtocol.setStaNo(basDevp.getDevNo().shortValue());
+                    MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol));
+                }else if (basDevp.getAgvTargetPlace()!=0){
+                    staProtocol.setAgvTypeSign((short)1);
+                    staProtocol.setStaNo(basDevp.getDevNo().shortValue());
+                    MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol));
+                }
+            }else {
+                if (basDevp.getAgvTargetPick()!=0){
+                    basDevp.setAgvStartPick(0);
+                    basDevpService.updateById(basDevp);
+                }else if (basDevp.getAgvTargetPlace()!=0){
+                    basDevp.setAgvStartPlace(0);
+                    basDevpService.updateById(basDevp);
+                }
+            }
+        }
+    }
     public synchronized void autoCompleteTask() {
         List<TaskWrk> taskWrks = taskWrkMapper.selectWorkingTask();
         for (TaskWrk taskWrk : taskWrks) {
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index cbf409d..93c01fd 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -71,7 +71,9 @@
                     //鑷姩娲惧彂浠诲姟
    //                 mainService.autoDistribute();
                     //鑷姩瀹屾垚浠诲姟
-                    //mainService.autoCompleteTask();
+//                    mainService.autoCompleteTask();
+                    //agv鍙栨斁璐у畬鎴�
+                    mainService.autoCompleteAGV();
 
                 } catch (Exception e) {
                     e.printStackTrace();
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index a848f98..16bae8e 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -105,6 +105,12 @@
 
     private Boolean upcontactErr = false; //椤跺崌鐢垫満鎺ヨЕ鍣ㄦ晠闅�
 
+
+
+    private Short agvStartPick; //鍏佽鍙栬揣
+    private Short agvStartPlace; //鍏佽鏀捐揣
+    private Short agvTypeSign; //鍏佽鏀捐揣
+
     private List<Integer> alarm;
 
 
@@ -152,6 +158,8 @@
         basDevp.setLocType3((short) 0);  // 杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿
         basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2);
         basDevp.setInQty(inQty !=null ?(int)inQty : 0);
+        basDevp.setAgvStartPick(agvStartPick.intValue());
+        basDevp.setAgvStartPlace(agvStartPlace.intValue());
         return basDevp;
     }
 
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 5e9dc63..52c745a 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -125,6 +125,11 @@
                         write((StaProtocol)task.getData());
                         read();
                         break;
+                    // 鍐欐暟鎹� ID+鐩爣绔�
+                    case 4:
+                        writeAgvOk((StaProtocol)task.getData());
+                        read();
+                        break;
                    /* case 3:
                         write2((StaProtocol)task.getData());
                         read();
@@ -229,6 +234,34 @@
             }
         }
 
+        OperateResultExOne<byte[]> resultAgvAndPlc = siemensS7Net.Read("DB102.0", (short) 30);
+        if (resultAgvAndPlc.IsSuccess) {
+            for (int i = 0; i < staNoSize; i++) {
+                int sign =(i+2)/2-1;
+                if ((i+2)%2!=0){
+                    Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                    StaProtocol staProtocol = station.get(siteId);
+                    if (null == staProtocol) {
+                        staProtocol = new StaProtocol();
+                        staProtocol.setSiteId(siteId);
+                        station.put(siteId, staProtocol);
+                    }
+                    staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6+4));     // 鍏佽鍙栬揣
+                    staProtocol.setAgvStartPlace((short)0);   // 鍏佽鏀捐揣
+                    continue;
+                }
+                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    staProtocol.setSiteId(siteId);
+                    station.put(siteId, staProtocol);
+                }
+                staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6));     // 鍏佽鍙栬揣
+                staProtocol.setAgvStartPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6 + 2));   // 鍏佽鏀捐揣
+            }
+        }
+
 
         if (slave.getId() == 1) {
             //鏉$爜
@@ -324,6 +357,83 @@
     /**
      * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
      */
+    private void writeAgvOk(StaProtocol staProtocol) throws InterruptedException {
+        if (null == staProtocol) {
+            return;
+        }
+        ArrayList<Integer> staNos = getStaNo();
+        int index = staNos.indexOf(staProtocol.getSiteId());
+        if (staProtocol.getAgvTypeSign()==0){  //0鍙栬揣
+            switch (staProtocol.getSiteId()){
+                case 100:
+                    index=32;
+                    break;
+                case 101:
+                    index=34;
+                    break;
+                case 102:
+                    index=38;
+                    break;
+                case 103:
+                    index=40;
+                    break;
+                case 104:
+                    index=44;
+                    break;
+                case 105:
+                    index=46;
+                    break;
+                case 106:
+                    index=50;
+                    break;
+                case 107:
+                    index=52;
+                    break;
+                default:
+                    return;
+            }
+        }else {
+            switch (staProtocol.getSiteId()){
+                case 100:
+                    index=30;
+                    break;
+                case 102:
+                    index=36;
+                    break;
+                case 104:
+                    index=42;
+                    break;
+                case 106:
+                    index=48;
+                    break;
+                default:
+                    return;
+            }
+        }
+
+        OperateResult write = null;
+        //浠诲姟涓嬪彂娆℃暟
+        int writeCount = 0;
+        do {
+            write = siemensS7Net.Write("DB102." + index, true);    // 浠诲姟瀹屾垚
+            if(write.IsSuccess){
+                writeCount=6;
+            }else {
+                writeCount++;
+                log.error("鍐欏叆杈撻�佺嚎鍙栨斁璐у畬鎴愬懡浠ゅ悗璇诲彇澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+            }
+        }while (writeCount<5);
+
+        if (!write.IsSuccess) {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+            log.error("鍐欏叆杈撻�佺嚎鍙栨斁璐у畬鎴愮珯鐐规暟鎹け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+            log.info("杈撻�佺嚎鍙栨斁璐у畬鎴愬懡浠や笅鍙戠爜鍨涘畬鎴�  缁欒緭閫佺嚎鍐欎换鍔″畬鎴� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+        }
+
+
+    }
     private void write(StaProtocol staProtocol) throws InterruptedException {
         if (null == staProtocol) {
             return;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 52d457c..7367615 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -50,7 +50,7 @@
   #url: 10.32.53.195:8080
   # WMS绯荤粺ip
 #  url: 10.210.157.109:8090
-  url: 10.210.157.11:8080/wms
+  url: localhost:8080/wms
   # 鍏ュ簱浠诲姟鐢宠鎺ュ彛
   #inboundTaskApplyPath: api/InterFace/inboundTaskApply
 #  inboundTaskApplyPath: apis/inboundTaskApply
diff --git a/src/main/resources/mapper/BasDevpMapper.xml b/src/main/resources/mapper/BasDevpMapper.xml
index b00be22..06c6ac0 100644
--- a/src/main/resources/mapper/BasDevpMapper.xml
+++ b/src/main/resources/mapper/BasDevpMapper.xml
@@ -41,6 +41,10 @@
         <result column="max_wt" property="maxWt" />
         <result column="gross_wt" property="grossWt" />
         <result column="cart_pos" property="cartPos" />
+        <result column="agv_start_pick" property="agvStartPick" />
+        <result column="agv_target_pick" property="agvTargetPick" />
+        <result column="agv_start_place" property="agvStartPlace" />
+        <result column="agv_target_place" property="agvTargetPlace" />
 
     </resultMap>
 

--
Gitblit v1.9.1