From 08d8933d3fe66fb83f1e2e7e4038e62b3c5143e1 Mon Sep 17 00:00:00 2001
From: cpT <1@123>
Date: 星期四, 19 六月 2025 11:10:43 +0800
Subject: [PATCH] #改造

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  532 ++++++++++++++++++++++++++--------------------------------
 1 files changed, 237 insertions(+), 295 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 6c52775..bd02abc 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -9,7 +9,6 @@
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
-import com.zy.asrs.domain.enums.TaskStatusType;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.CommandInfo;
 import com.zy.asrs.entity.CommandInfoLog;
@@ -19,7 +18,6 @@
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
 import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.CommandStatusType;
 import com.zy.core.enums.IoModeType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.DevpSlave;
@@ -48,33 +46,17 @@
     private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
     private short heartBeatVal = 1;
     public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
-        add(100);add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);add(110);add(111);
-        add(112);add(113);add(114);add(115);add(116);add(117);add(118);add(119);add(120);add(121);add(122);add(123);
+        add(1001);add(1002);add(1003);add(1004);add(1005);add(1006);add(1007);
+        add(1008);add(1009);add(1010);add(1011);add(1012);add(1013);add(1014);add(1015);
+        add(1016);add(1017);add(1018);add(1019);add(1020);add(1021);add(1022);add(1023);
     }};
-    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
-        add(200);add(201);add(202);add(203);
-        add(204);add(205);add(206);add(207);
-        add(208);add(209);add(210);add(211);
-        add(212);add(213);add(214);add(215);
-        add(216);add(217);add(218);add(219);
-        add(220);add(221);add(222);add(223);
-        add(224);add(225);add(226);add(227);
-        add(228);add(229);add(230);add(231);
-        add(232);add(233);add(234);add(235);
-    }};
-    public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{
-        add(300);add(301);add(302);add(303);
-        add(304);add(305);add(306);add(307);
-    }};
-    public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{
-        add(400);add(401);add(402);add(403);
-        add(404);add(405);add(406);add(407);
-    }};
+    private boolean connectDev = false;
+
 
     /**
      * 鏉$爜鏁伴噺
      */
-    private int barcodeSize = 7;
+    private int barcodeSize = 3;
 
     /**
      * 鍏ュ嚭搴撴ā寮�
@@ -85,17 +67,11 @@
      * 4.鍑哄簱妯″紡
      */
     public IoModeType ioModeOf2F = IoModeType.NONE;
-//    public IoModeType ioMode = IoModeType.NONE;
+    //    public IoModeType ioMode = IoModeType.NONE;
     private ArrayList<Integer> getStaNo() {
         switch (slave.getId()) {
             case 1:
                 return staNos1;
-            case 2:
-                return staNos2;
-            case 3:
-                return staNos3;
-            case 4:
-                return staNos4;
             default:
                 throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
         }
@@ -108,36 +84,53 @@
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
-        connect();
-        while (true) {
+        connectDev = connect();
+        while(!connectDev){
             try {
-                int step = 1;
-                Task task = MessageQueue.poll(SlaveType.Devp, slave.getId());
-                if (task != null) {
-                    step = task.getStep();
-                }
-                switch (step) {
-                    // 璇绘暟鎹�
-                    case 1:
-                        read();
-                        break;
-                    // 鍐欐暟鎹� ID+鐩爣绔�
-                    case 2:
-                        write((StaProtocol)task.getData());
-                        break;
-                    default:
-                        break;
-                }
-                // 蹇冭烦
-//                heartbeat();
-                Thread.sleep(400);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+                connectDev = this.connect();
+                Thread.sleep(100);
+            } catch (Exception e){
 
+            }
         }
+
+        // 鍚姩绾跨▼鑷姩閲嶈繛
+        new Thread(this::devConnect).start();
+        new Thread(this::readStatusDev).start();
+        new Thread(this::writeStatusDev).start();
+
+
     }
 
+
+    private void devConnect() {
+        while (true) {
+            try {
+                Thread.sleep(1000);
+
+                if(!connectDev){
+                    try {
+                        connectDev = this.connect();
+                        Thread.sleep(100);
+                    } catch (Exception e){
+
+                    }
+                }
+            } catch (Exception e) {
+                log.info("dev杩炴帴澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+
+//                log.error("rgv杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                try{
+                    DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                    deviceErrorService.addDeviceError("dev", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage());
+                } catch (Exception e2){
+//                    log.error("e2:"+e2.getMessage());
+                }
+                initSite();
+//                e.printStackTrace();
+            }
+        }
+    }
     /**
      * 鍒濆鍖栫珯鐐圭姸鎬�
      */
@@ -151,13 +144,13 @@
                 staProtocol.setSiteId(siteId);
                 station.put(siteId, staProtocol);
             }
-            staProtocol.setWorkNo((short) 0);    // ID
+            staProtocol.setWorkNo(0);    // ID
             staProtocol.setAutoing(false);      // 鑷姩
             staProtocol.setLoading(false);      // 鏈夌墿
             staProtocol.setInEnable(false);     // 鍙叆
             staProtocol.setOutEnable(false);    // 鍙嚭
             staProtocol.setEmptyMk(false);      // 绌烘澘淇″彿
-            staProtocol.setStaNo((short) 0);     // 鐩爣绔�
+            staProtocol.setStaNo(0);     // 鐩爣绔�
 
             if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                 staProtocol.setPakMk(true);
@@ -187,6 +180,78 @@
         return result;
     }
 
+
+
+    private void writeStatusDev() {
+        while (true) {
+            try {
+                if(!connectDev){
+                    try {
+                        Thread.sleep(1000L);
+                    } catch (Exception e){
+
+                    }
+                    continue;
+                }
+                int step = 1;
+                Task task = MessageQueue.poll(SlaveType.Devp, slave.getId());
+                if (task != null) {
+                    step = task.getStep();
+                }
+                switch (step) {
+                    // 璇绘暟鎹�
+                    case 1:
+//                        read();
+                        break;
+                    // 鍐欐暟鎹� ID+鐩爣绔�
+                    case 2:
+                        write((StaProtocol)task.getData());
+                        break;
+                    default:
+                        break;
+                }
+                // 蹇冭烦
+//                heartbeat();
+                Thread.sleep(200);
+            } catch (Exception e) {
+//                e.printStackTrace();
+            }
+
+        }
+    }
+    private void readStatusDev() {
+        while (true) {
+            try {
+                if(!connectDev){
+                    try {
+                        Thread.sleep(1000L);
+                    } catch (Exception e){
+
+                    }
+                    initSite();
+                    continue;
+                }
+                Thread.sleep(50);
+//                System.out.println("璇荤嚎绋�"+ slave.getId());
+
+                read();
+
+            } catch (Exception e) {
+                log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                try{
+                    DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                    deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage());
+                } catch (Exception e2){
+//                    log.error("e2:"+e2.getMessage());
+                }
+                initSite();
+//                e.printStackTrace();
+            }
+
+        }
+
+    }
+
     /**
      * 璇诲彇鐘舵�� ====> 鏁村潡plc
      */
@@ -195,7 +260,7 @@
 //        updateIoMode();
         ArrayList<Integer> staNos = getStaNo();
         int staNoSize = staNos.size();
-        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
+        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
         if (result.IsSuccess) {
             for (int i = 0; i < staNoSize; i++) {
                 Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -205,27 +270,31 @@
                     staProtocol.setSiteId(siteId);
                     station.put(siteId, staProtocol);
                 }
-                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));     // 宸ヤ綔鍙�
+                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8));     // 宸ヤ綔鍙�
 
-                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2));   // 鐩爣绔�
-            }
-        }
+                staProtocol.setStaNo((int)siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4));   // 鐩爣绔�
 
-        Thread.sleep(200);
-        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB101.0", (short) (staNoSize*2));
-        if (result1.IsSuccess) {
-            for (int i = 0; i < staNoSize; i++) {
-                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
-                StaProtocol staProtocol = station.get(siteId);
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
                 staProtocol.setAutoing(status[0]);  // 鑷姩
+//                staProtocol.setAutoing(true);  // 鑷姩
                 staProtocol.setLoading(status[1]);  // 鏈夌墿
+//                staProtocol.setLoading(true);  // 鏈夌墿
                 staProtocol.setInEnable(status[2]); // 鍙叆
+//                staProtocol.setInEnable(true); // 鍙叆
                 staProtocol.setOutEnable(status[3]);// 鍙嚭
+//                staProtocol.setOutEnable(true);// 鍙嚭
                 staProtocol.setEmptyMk(status[4]);  // 绌烘澘淇″彿
                 staProtocol.setFullPlt(status[5]);  // 婊℃墭鐩�
-                staProtocol.setCar(status[6]);     // 鏄惁鏈夎溅
+                staProtocol.setHigh(status[6]);     // 楂樺簱浣�
                 staProtocol.setLow(status[7]);      // 浣庡簱浣�
+                staProtocol.setStaOk(status[8]);      // 灏辩华
+
+
+
+                if (!staProtocol.isPakMkWalk() && !staProtocol.isLoading()) {
+                    staProtocol.setPakMk(true);
+                    staProtocol.setPakMkWalk(true);
+                }
 
                 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                     staProtocol.setPakMk(true);
@@ -233,147 +302,43 @@
             }
         }
 
-
-        if (slave.getId() == 1){
-            //鏉$爜
-            Thread.sleep(200);
-            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.102",(short)60);
-            if (result2.IsSuccess) {
-                for (int i = 0; i < 6; i++) {
-                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*10,8, "UTF-8");
-                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
-                    if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
-                        barcodeThread.setBarcode(barcode);
-                    }
+        //鏉$爜
+//        Thread.sleep(50);
+        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB400.100.0",(short) (barcodeSize*8));
+        if (result2.IsSuccess) {
+            for (int i = 0; i < barcodeSize; i++) {
+                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,6, "UTF-8");
+                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+                if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+                    barcodeThread.setBarcode(barcode);
                 }
-            }
-
-            // 澶栧舰妫�娴� - 102
-            Thread.sleep(100);
-            OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.150", (short)1);
-            if (result4.IsSuccess) {
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result4.Content, 0, 1);
-                StaProtocol staProtocol = station.get(103);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
-            }
-            // 澶栧舰妫�娴� - 107
-            Thread.sleep(50);
-            OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB101.154", (short)1);
-            if (result5.IsSuccess) {
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result5.Content, 0, 1);
-                StaProtocol staProtocol = station.get(107);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
-            }
-            // 澶栧舰妫�娴� - 111
-            Thread.sleep(50);
-            OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB101.158", (short)1);
-            if (result6.IsSuccess) {
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result6.Content, 0, 1);
-                StaProtocol staProtocol = station.get(111);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
-            }
-            // 澶栧舰妫�娴� - 115
-            Thread.sleep(50);
-            OperateResultExOne<byte[]> result7 = siemensS7Net.Read("DB101.162", (short)1);
-            if (result7.IsSuccess) {
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result7.Content, 0, 1);
-                StaProtocol staProtocol = station.get(115);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
-            }
-            // 澶栧舰妫�娴� - 119
-            Thread.sleep(50);
-            OperateResultExOne<byte[]> result8 = siemensS7Net.Read("DB101.166", (short)1);
-            if (result8.IsSuccess) {
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result8.Content, 0, 1);
-                StaProtocol staProtocol = station.get(119);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
-            }
-            // 澶栧舰妫�娴� - 123
-            Thread.sleep(50);
-            OperateResultExOne<byte[]> result9 = siemensS7Net.Read("DB101.170", (short)1);
-            if (result9.IsSuccess) {
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result9.Content, 0, 1);
-                StaProtocol staProtocol = station.get(123);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
-            }
-        } else if (slave.getId() == 3) {
-            // 澶栧舰妫�娴� - 111
-            Thread.sleep(50);
-            OperateResultExOne<byte[]> result10 = siemensS7Net.Read("DB101.26", (short)1);
-            if (result10.IsSuccess) {
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result10.Content, 0, 1);
-                StaProtocol staProtocol = station.get(301);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
             }
         }
 
+        //鏉$爜
+//        Thread.sleep(50);
+        int[] staW = new int[]{1004,1014,1020};
 
-//        //RGV鍙拌溅浣嶇疆
-//        Thread.sleep(200);
-//        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.0",(short)4);
-//        if (result3.IsSuccess) {
-//            for (int i = 0; i < 2; i++) {
-//                Integer siteId = i==0 ? 1 : 2; // 绔欑偣缂栧彿
-//                StaProtocol staProtocol = station.get(siteId);
-//                if (null == staProtocol) {
-//                    staProtocol = new StaProtocol();
-//                    staProtocol.setSiteId(siteId);
-//                    station.put(siteId, staProtocol);
-//                }
-//                staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, i*2)));
-////                String aa = staProtocol.getNearbySta();
-////                System.out.println(siteId + "===>>" + staProtocol.getNearbySta());
-//            }
-//        }
+        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB400.148.0",(short) (staW.length*4));
+        if (result3.IsSuccess) {
+            for (int i = 0; i < staW.length; i++) {
+                Integer siteId = staW[i]; // 绔欑偣缂栧彿
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    station.put(siteId, staProtocol);
+                }
+                staProtocol.setSiteId(siteId);
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, i*4 + 2, 2);
+                staProtocol.setFrontErr(status[0]);  // 鍓嶈秴闄�
+                staProtocol.setBackErr(status[1]);  // 鍚庤秴闄�
+                staProtocol.setHighErr(status[2]);  // 楂樿秴闄�
+                staProtocol.setLeftErr(status[3]);  // 宸﹁秴闄�
+                staProtocol.setRightErr(status[4]); // 鍙宠秴闄�
+            }
+        }
 
-//        OperateResultExOne<Short> result2 = siemensS7Net.ReadInt16("DB200.0");
-//        if (result2.IsSuccess) {
-//            this.ioMode = IoModeType.get(result2.Content);
-//        }
-
-        if (result.IsSuccess && result1.IsSuccess) {
+        if (result.IsSuccess) {
 
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
@@ -384,19 +349,27 @@
                     StaProtocol staProtocol = station.get(siteId);
                     basDevps.add(staProtocol.toSqlModel());
                 }
-
-                BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
-                if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
-                    throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+                try{
+                    BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+                    if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+                        throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+                    }
+                } catch (Exception e){
+//                    log.error("e:"+e.getMessage());
                 }
+
             } catch (Exception e) {
                 e.printStackTrace();
                 OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
                 log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             }
 
-            DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-            deviceErrorService.deleteDeviceError("devp", slave.getId());
+            try{
+                DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                deviceErrorService.deleteDeviceError("devp", slave.getId());
+            } catch (Exception e){
+//                log.error("e:"+e.getMessage());
+            }
         } else {
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
 //            log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
@@ -415,17 +388,11 @@
         ArrayList<Integer> staNos = getStaNo();
 
         int index = staNos.indexOf(staProtocol.getSiteId());
-        short[] array = new short[2];
-        array[0] = staProtocol.getWorkNo();
-        array[1] = staProtocol.getStaNo();
-//        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
 
-        //鏇存柊鍛戒护鏃ュ織
-        CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class);
-        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
-        CommandInfo commandInfo = commandInfoService.selectById(staProtocol.getCommandId());
-        CommandInfoLog commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class);
-        commandInfoLog.setId(null);
+//        //鏇存柊鍛戒护鏃ュ織
+//        CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class);
+//        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
+//        CommandInfo commandInfo = commandInfoService.selectById(staProtocol.getCommandId());
 //        CommandInfoLog commandInfoLog = new CommandInfoLog();
 //        if (commandInfo != null) {
 //            commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class);
@@ -449,57 +416,35 @@
         //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
         boolean writeFlag = false;
         while(writeCount < 5){
-            writeResult = siemensS7Net.Write("DB100." + index*4, array);    // 宸ヤ綔鍙枫�佺洰鏍囩珯
-            //鏇存柊鎸囦护鏃ュ織
-            commandInfoLog.setDeviceLog("鎸囦护涓嬪彂鎴愬姛");
-            commandInfoLogService.insert(commandInfoLog);
-
-            if(writeResult.IsSuccess){
+            OperateResult writeResult1 = siemensS7Net.Write("DB101." + index*8, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+            OperateResult writeResult2 = siemensS7Net.Write("DB101." + (index*8+4), staProtocol.getStaNo().shortValue());    // 鐩爣绔�
+            if(writeResult1.IsSuccess && writeResult2.IsSuccess){
                 Thread.sleep(200);
-                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*4, (short)4);
+                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB101.0" + index*8, (short)4);
+
+                //鏇存柊鎸囦护鏃ュ織
+//                commandInfoLog.setDeviceLog("鎸囦护涓嬪彂鎴愬姛");
+//                commandInfoLogService.insert(commandInfoLog);
+
                 if(readResult.IsSuccess){
-                    short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
-                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
-                    if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){
+                    Integer workNo = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
+//                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
+                    if(staProtocol.getWorkNo().equals(workNo)){
                         //浠诲姟鍛戒护鍐欏叆鎴愬姛
                         writeFlag = true;
                         log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-
-                        //鏇存柊鎸囦护鐘舵��
-                        commandInfo.setCommandStatus(CommandStatusType.COMPLETE.id);//杈撻�佺嚎鐩存帴瀹屾垚鐘舵��
-                        commandInfoService.updateById(commandInfo);
-
-                        //鏇存柊鎸囦护鏃ュ織
-                        commandInfoLog.setDeviceLog("鎸囦护涓嬪彂鎴愬姛");
-                        commandInfoLogService.insert(commandInfoLog);
-
-                        //鏇存柊浠诲姟姝ュ簭
-                        TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
-                        TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo().intValue());
-                        if (taskWrk != null) {
-                            taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//鏇存柊鎸囦护姝ュ簭
-                            taskWrkService.updateById(taskWrk);
-                        }
-
                         break;
                     } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
                         writeCount++;
                         OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
                                 slave.getId(), JSON.toJSON(staProtocol),writeCount));
                         log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-                        //鏇存柊鎸囦护鏃ュ織
-                        commandInfoLog.setDeviceLog("鎸囦护涓嬪彂鎴愬姛");
-                        commandInfoLogService.insert(commandInfoLog);
                     }
                 } else {
                     writeCount++;
                     OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
                             slave.getId(), JSON.toJSON(staProtocol), writeCount));
                     log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-
-                    //鏇存柊鎸囦护鏃ュ織
-                    commandInfoLog.setDeviceLog("鎸囦护涓嬪彂澶辫触");
-                    commandInfoLogService.insert(commandInfoLog);
                 }
             } else {
                 writeCount++;
@@ -508,8 +453,8 @@
                 log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
 
                 //鏇存柊鎸囦护鏃ュ織
-                commandInfoLog.setDeviceLog("鎸囦护涓嬪彂澶辫触");
-                commandInfoLogService.insert(commandInfoLog);
+//                commandInfoLog.setDeviceLog("鎸囦护涓嬪彂澶辫触");
+//                commandInfoLogService.insert(commandInfoLog);
             }
             Thread.sleep(200);
         }
@@ -539,7 +484,7 @@
 
             //鏇存柊浠诲姟姝ュ簭
             TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
-            TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo().intValue());
+            TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
             if (taskWrk != null) {
                 taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//鏇存柊鎸囦护姝ュ簭
                 taskWrkService.updateById(taskWrk);
@@ -547,42 +492,6 @@
         }
 
     }
-
-//    /**
-//     * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
-//     */
-//    private void write(StaProtocol staProtocol) throws InterruptedException {
-//        if (null == staProtocol) {
-//            return;
-//        }
-//        int index = staNos.indexOf(staProtocol.getSiteId());
-//        short[] array = new short[2];
-//        array[0] = staProtocol.getWorkNo();
-//        array[1] = staProtocol.getStaNo();
-//        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
-//
-////        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-////        Thread.sleep(500);
-////        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
-//
-//        if (!write.IsSuccess) {
-//            staProtocol = station.get(staProtocol.getSiteId());
-//            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
-//                staProtocol.setPakMk(true);
-//            }
-//            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));
-//
-//            Integer siteId = staProtocol.getSiteId();
-//            staProtocol = station.get(siteId);
-//            if ((siteId == 101 || siteId == 201)&&(staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0)) {
-//                staProtocol.setPakMk(true);
-//            }
-//        }
-//    }
 
     // 鏇存柊鍏ュ嚭搴撴ā寮�
     private void updateIoMode() throws InterruptedException {
@@ -620,6 +529,39 @@
         }
     }
 
+    /**
+     * 璁剧疆鍏ュ簱鏍囪
+     */
+    @Override
+    public void setPakMkWalk(Integer siteId, boolean pakMkWalk) {
+        StaProtocol staProtocol = station.get(siteId);
+        if (null != staProtocol) {
+            staProtocol.setPakMkWalk(pakMkWalk);
+        }
+    }
+
+    /**
+     * 璁剧疆鍏ュ簱鏍囪
+     */
+    @Override
+    public void setGrossWt(Integer siteId, Double grossWt) {
+        StaProtocol staProtocol = station.get(siteId);
+        if (null != staProtocol) {
+            staProtocol.setGrossWt(grossWt);
+        }
+    }
+
+    /**
+     * 璁剧疆鍏ュ簱鏍囪
+     */
+    @Override
+    public void setErrorDev(Integer siteId, String msgErr) {
+        StaProtocol staProtocol = station.get(siteId);
+        if (null != staProtocol) {
+            staProtocol.setErrorDev(msgErr);
+        }
+    }
+
     @Override
     public void close() {
         siemensS7Net.ConnectClose();

--
Gitblit v1.9.1