From a12e16c98db1dd2b712a092912abf4aa20c3c00c Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期一, 30 十二月 2024 15:23:12 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/WrkMastService.java          |    2 +
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java    |   44 ++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java |    5 ++
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java            |    2 +
 src/main/resources/mapper/WrkMastMapper.xml                    |    7 +++
 src/main/java/com/zy/core/MainProcess.java                     |    1 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java        |   51 +++++++++++++++++++++++++
 7 files changed, 112 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 633e46e..9e296c8 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -129,4 +129,6 @@
 
     WrkMast selectByWrkNo(Integer wrkNo);
 
+    WrkMast getLastWrkMast105();
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 191bbea..9f013ea 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -22,4 +22,6 @@
 
     WrkMast selectByworkNo(Short workNo);
     WrkMast selectByworkNo(Integer workNo);
+
+    WrkMast getLastWrkMast105();
 }
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 af60d3d..50e6a67 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -51,6 +51,8 @@
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.zy.common.utils.RandomValidateCodeUtil.code;
+
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
  * Created by vincent on 2020/8/6
@@ -3718,6 +3720,48 @@
 
     }
 
+    public synchronized void getNeed() {
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            if (devp.getId() != 2) {
+                continue;
+            }
+            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+            if (devpThread.isCalled == 1) {
+                try {
+                    String response = new HttpHandler.Builder()
+                            .setUri(wmsUrl)
+                            .setPath("/rpc/process/loc/v1")
+                            .build()
+                            .doPost();
+                    JSONObject jsonObject = JSON.parseObject(response);
+                    if (jsonObject.getInteger("code").equals(200)) {
+                        log.info("浠诲姟涓嬪彂鎴愬姛");
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, null));
+                    } else {
+                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況esponse锛歿}", wmsUrl + "/mobile/comb/auth", response);
+                    }
+                    Thread.sleep(1000);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            if (devpThread.isFinish == 1) {
+
+                Integer weight = devpThread.weight;
+                Integer isHalf = devpThread.isHalf;
+                WrkMast lastWrkMast105 = wrkMastService.getLastWrkMast105();
+                if (Cools.isEmpty(lastWrkMast105)) continue;
+                List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(lastWrkMast105.getWrkNo());
+                if (!Cools.isEmpty(wrkDetls)) {
+                    for (WrkDetl wrkDetl : wrkDetls) {
+                        wrkDetl.setWeight(weight.doubleValue());
+                        wrkDetlService.updateById(wrkDetl);
+                    }
+                }
+                boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, null));
+            }
+        }
+    }
     public void CreateComb(String barcode,String code,Integer wrkNo,String batch,DevpSlave.Sta inSta) throws IOException {
         Double anfme = 0d;
         Double weight = 0d;
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index d0352f3..07f81ef 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -71,4 +71,9 @@
     public WrkMast selectByworkNo(Integer workNo) {
         return this.baseMapper.selectByWrkNo(workNo);
     }
+
+    @Override
+    public WrkMast getLastWrkMast105() {
+        return this.baseMapper.getLastWrkMast105();
+    }
 }
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 1b96b52..6cd6912 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -86,6 +86,7 @@
                     mainService.RGV2TaskOver();
                     //浜屾湡缁勬墭
                     mainService.generateStoreWrkFile2();
+                    mainService.getNeed();
 
 
                 } catch (Exception e) {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index de92dcf..3390bc2 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -42,6 +42,12 @@
     private SiemensS7Net siemensS7Net;
     private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
     private short heartBeatVal = 1;
+    public Integer isCalled = 0;
+    public Integer isFinish = 0;
+    public ArrayList<Integer> weights = new ArrayList<>();
+    public Integer weight = 0;
+    public ArrayList<Integer> halfs = new ArrayList<>();
+    public Integer isHalf = 0;
 
 
     public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
@@ -259,6 +265,18 @@
                         switch (slave.getId()){
                             case 2:
                                 write2106((StaProtocol)task.getData());break;
+                        }
+
+                        break;
+                    case 4:
+                        switch (slave.getId()){
+                            case 2:
+                                writeIsCalled();break;
+                        }
+                    case 5:
+                        switch (slave.getId()){
+                            case 2:
+                                writeIsFinish();break;
                         }
 
                         break;
@@ -511,6 +529,29 @@
                 staProtocol.setBatch(batch);
             }
         }
+
+        // 绌烘《鍑哄簱淇″彿
+        OperateResultExOne<byte[]> readCall = siemensS7Net.Read("DB102", (short) 4);
+        if (readCall.IsSuccess){
+            Integer isNeed = siemensS7Net.getByteTransform().TransInt32(result.Content,  0); // IBC瑕佹《淇″彿
+            Integer isFinish = siemensS7Net.getByteTransform().TransInt32(result.Content, 2); // IBC鐏岃瀹屾垚淇″彿
+            Integer weight = siemensS7Net.getByteTransform().TransInt32(result.Content, 4); // IBC鐏岃閲嶉噷
+            Integer isAHalf = siemensS7Net.getByteTransform().TransInt32(result.Content, 6); // IBC鍗婃《鏍囪
+
+            isCalled = isNeed;
+            isFinish = isFinish;
+        }
+
+        // 瀹屾垚缃愯淇″彿
+        OperateResultExOne<byte[]> finish = siemensS7Net.Read("DB105.240", (short) 4);
+        if (finish.IsSuccess){
+            short amount =  siemensS7Net.getByteTransform().TransInt16(result.Content,  0);
+//            isCalled = amount;
+        }
+
+//        if (isCalled == 1) {
+//            writeIsCalled();
+//        }
 
         OperateResultExOne<byte[]> readWeight = siemensS7Net.Read("DB101.260", (short) 2);
         if (readWeight.IsSuccess){
@@ -837,6 +878,16 @@
             log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
         }
     }
+
+    private void writeIsCalled() throws InterruptedException {
+        OperateResult write = siemensS7Net.Write("DB102.0" ,  0);    // 宸ヤ綔鍙�
+    }
+
+    private void writeIsFinish() throws InterruptedException {
+        OperateResult finish = siemensS7Net.Write("DB102.2" ,  0);    // 宸ヤ綔鍙�
+        OperateResult half = siemensS7Net.Write("DB102.6" ,  0);    // 宸ヤ綔鍙�
+    }
+
     /**
      * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
      */
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 13a0a46..b73f218 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -210,4 +210,11 @@
     <select id="selectCrn5Task2" resultMap="BaseResultMap">
         select * from dbo.asr_wrk_mast where wrk_sts=1 and io_type=1 and crn_no=5 order by io_pri desc,io_time,wrk_no ASC
     </select>
+
+    <select id="getLastWrkMast105" resultMap="BaseResultMap">
+        SELECT TOP 1 mast.* FROM asr_wrk_mast mast
+            JOIN asr_wrk_detl detl
+        ON mast.wrk_no = detl.wrk_no AND mast.io_type = 105 AND mast.wrk_sts = 14 AND detl.weight is null
+        ORDER BY mast.modi_time
+    </select>
 </mapper>

--
Gitblit v1.9.1