From 10ac21082bbbe92dabecdda1a98fe4539f746037 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 14 四月 2026 09:10:38 +0800
Subject: [PATCH] 1

---
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/vo/SiteTableVo.java                          |    3 
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java                          |   19 +--
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/CtuMainService.java                             |    8 +
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java    |   10 +-
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java                          |   51 +++++++++-
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/impl/CtuMainServiceImpl.java                    |   37 +++++++
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/requestParam/StationRequestParam.java        |    5 +
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java                      |   11 +
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java                              |   10 +-
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java |   28 +++--
 zy-asc-conveyor/src/main/webapp/views/pipeline.html                                                       |   21 +++
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java         |    6 
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java    |   10 +-
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/ConveyorController.java           |   19 ++-
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java     |    4 
 15 files changed, 182 insertions(+), 60 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/ConveyorController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/ConveyorController.java
index f0dc3c4..19376e1 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/ConveyorController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/ConveyorController.java
@@ -4,11 +4,14 @@
 import com.zy.acs.framework.common.Cools;
 import com.zy.acs.framework.common.R;
 import com.zy.acs.manager.common.annotation.IntegrationAuth;
+import com.zy.acs.manager.core.domain.TaskPosDto;
 import com.zy.acs.manager.core.domain.type.NamespaceType;
 import com.zy.acs.manager.core.integrate.dto.ConveyorQueryParam;
 import com.zy.acs.manager.core.integrate.dto.ConveyorQueryResult;
+import com.zy.acs.manager.manager.entity.Segment;
 import com.zy.acs.manager.manager.entity.Sta;
 import com.zy.acs.manager.manager.entity.Task;
+import com.zy.acs.manager.manager.enums.SegmentStateType;
 import com.zy.acs.manager.manager.enums.StatusType;
 import com.zy.acs.manager.manager.service.SegmentService;
 import com.zy.acs.manager.manager.service.StaService;
@@ -87,11 +90,17 @@
     @PostMapping("/station/checkTakeComplete")
     @IntegrationAuth(name = NamespaceType.RCS_STA_QUERY)
     public R checkTakeComplete(@RequestBody ConveyorQueryParam param) {
-
-        String staNo = param.getStaNo();
         String seqNum = param.getSeqNum();
-        taskService.()
-
-        return R.ok().add(resultList);
+        Task task = taskService.selectBySeqNum(null, seqNum);
+        if (null == task) {
+            return R.error("task not found");
+        }
+        List<Segment> list = segmentService.list(new LambdaQueryWrapper<Segment>().eq(Segment::getTaskId, task.getId()).eq(Segment::getPosType, TaskPosDto.PosType.ORI_STA.toString()));
+        for (Segment segment : list){
+            if (segment.getState().equals(SegmentStateType.FINISH.toString())){
+                return R.ok().add(true);
+            }
+        }
+        return  R.ok().add(false);
     }
 }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java
index d55b003..45d9d36 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java
@@ -4,6 +4,7 @@
 import com.zy.acs.common.utils.RedisSupport;
 import com.zy.acs.conveyor.controller.vo.SiteTableVo;
 import com.zy.acs.conveyor.core.constant.RedisConveyorConstant;
+import com.zy.acs.conveyor.core.model.SafeSignal;
 import com.zy.acs.conveyor.core.model.StaProtocol;
 import com.zy.acs.conveyor.core.properties.DevpSlave;
 import com.zy.acs.conveyor.core.properties.OutputQueue;
@@ -16,10 +17,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 杈撻�佽澶囨帴鍙�
@@ -73,7 +71,7 @@
             vo.setStaNo(staProtocol.getStaNo());                // 鐩爣绔�
             vo.setWeight(staProtocol.getWeight() == null ? 0D : staProtocol.getWeight());
             vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() ? (staProtocol.isLow() ? "浣�" : "楂�") : "-");     //楂樹綆搴撲綅
-
+            vo.setAllow((staProtocol.getAllowPut() ? "鍙斁" : "涓嶅彲鏀�") + "/" + (staProtocol.getAllowTake() ? "鍙彇" : "涓嶅彲鍙�"));
         }
 
         return R.ok().add(list);
@@ -115,6 +113,7 @@
                     vo.setStaNo(staProtocol.getStaNo());                // 鐩爣绔�
                     vo.setWeight(staProtocol.getWeight() == null ? 0D : staProtocol.getWeight());
                     vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() ? (staProtocol.isLow() ? "浣�" : "楂�") : "-");     //楂樹綆搴撲綅
+                    vo.setAllow((staProtocol.getAllowPut() ? "鍙斁" : "涓嶅彲鏀�") + "/" + (staProtocol.getAllowTake() ? "鍙彇" : "涓嶅彲鍙�"));
                     return R.ok().add(vo);
                 }
             }
@@ -152,5 +151,47 @@
         return R.error("plc宸叉帀绾�");
     }
 
+    @PostMapping("/detl/safe")
+    @ManagerAuth(memo = "琛ュ厖瀹夊叏淇″彿")
+    public R safe(@RequestParam Integer siteId) {
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            Map<Integer, StaProtocol> station = stationService.getStationMap(devp.getId());
+            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
+                if (siteId.equals(entry.getKey())) {
+                    StaProtocol staProtocol = entry.getValue();
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    boolean flag = true;
+                    List<DevpSlave.Sta> putSta = devp.getPutSta();
+                    List<DevpSlave.Sta> takeSta = devp.getTakeSta();
+                    Optional<DevpSlave.Sta> first = takeSta.stream().filter(sta -> sta.getStaNo().equals(siteId)).findFirst();
+                    int i = -1;
+                    if (first.isPresent()) {
+                        i = takeSta.indexOf(first.get());
+                        if (i != -1) {
+                            flag = false;
+                        }
+                    }
+                    if (i == -1) {
+                        first = putSta.stream().filter(sta -> sta.getStaNo().equals(siteId)).findFirst();
+                        if (first.isPresent()) {
+                            i = putSta.indexOf(first.get());
+                            flag = true;
+                        }
+                    }
+                    if (i == -1) {
+                        return R.error("姝ょ珯鐐规棤闇�瀹夊叏淇″彿");
+                    }
+                    staProtocol.setSafeSignal(new SafeSignal(i, (short) 0, flag));
+                    redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocol);
+                    return R.ok();
 
+                }
+            }
+        }
+        return R.error("plc宸叉帀绾�");
+    }
 }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/requestParam/StationRequestParam.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/requestParam/StationRequestParam.java
index 263785e..b9775cb 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/requestParam/StationRequestParam.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/requestParam/StationRequestParam.java
@@ -16,6 +16,11 @@
      * 绔欑偣鍒楄〃
      */
     private String staNo;
+
+    /**
+     * 绔欑偣鍒楄〃
+     */
+    private String seqNum;
     /**
      * 杈撻�佺嚎缂栧彿
      */
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/vo/SiteTableVo.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/vo/SiteTableVo.java
index 1bfedd3..0c74f1c 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/vo/SiteTableVo.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/vo/SiteTableVo.java
@@ -39,4 +39,7 @@
     private String locType1 = "-";
 
     private Double weight = 0D;
+
+    //鍙彇
+    private String allow = "-";
 }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java
index 2012ef6..1d57edf 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java
@@ -6,17 +6,17 @@
 
 @Data
 public class SafeSignal implements Serializable {
-
+    //鏄暟缁勬墍鍦ㄤ綅缃紝灏辨槸绗嚑涓嚭搴撳彛鎴栬�呯鍑犱釜鍏ュ簱鍙�
     private Integer index;
-
+    //鏄啓0杩樻槸1
     private short value;
-
+    //浠h〃鍐欏湪浜や簰1杩樻槸2
     private Boolean flag;
 
 
-    public SafeSignal(Integer index,Short value, Boolean flag) {
+    public SafeSignal(Integer index, Short value, Boolean flag) {
         this.index = index;
-        this.value =value;
+        this.value = value;
         this.flag = flag;
     }
 }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java
index 1e9198d..f81b24f 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java
@@ -81,12 +81,12 @@
                     if (staProtocol.getWorkNo() == 0) {
                         continue;
                     }
-                    if (!staProtocol.isLoading()) {
-                        News.error("{}锛氱珯鐐癸細{}锛屾棤鐗�", config.getMark(), staProtocol.getSiteId());
+                    if (!staProtocol.isAutoing()) {
+                        //News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
-                    if (!staProtocol.isAutoing()) {
-                        News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
+                    if (!staProtocol.isLoading()) {
+                        News.error("{}锛氱珯鐐癸細{}锛屾棤鐗�", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
                     String barcode = staProtocol.getBarcode();
@@ -100,7 +100,7 @@
                         continue;
                     }
                     if (job.getJobSts() != ConveyorStateType.STARTUP.getStatus()) {
-                        if (job.getJobSts() == ConveyorStateType.INBOUND.getStatus()){
+                        if (job.getJobSts() == ConveyorStateType.INBOUND.getStatus()) {
                             continue;
                         }
                         News.error("{}锛氱珯鐐癸細{}锛屼换鍔$姸鎬佷笉瀵癸紝{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(job));
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java
index bfa7433..a25f771 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java
@@ -13,6 +13,7 @@
 import com.zy.acs.conveyor.core.properties.SlaveProperties;
 import com.zy.acs.conveyor.core.service.StationService;
 import com.zy.acs.conveyor.entity.Job;
+import com.zy.acs.conveyor.service.CtuMainService;
 import com.zy.acs.conveyor.service.JobService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +40,10 @@
 
     @Autowired
     private StationService stationService;
+
+    @Autowired
+    private CtuMainService ctuMainService;
+
 
     private final RedisSupport redis = RedisSupport.defaultRedisSupport;
 
@@ -69,7 +74,7 @@
                         continue;
                     }
                     if (!staProtocol.isAutoing()) {
-                        News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
+                        //News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
                     if (staProtocol.getWorkNo() > 0 && !staProtocol.isLoading()) {
@@ -79,21 +84,24 @@
                             continue;
                         }
                         if (job.getJobSts() != ConveyorStateType.SENDTASK.getStatus()) {
-                            if (job.getJobSts() == ConveyorStateType.CLEARSIGNAL.getStatus()){
+                            if (job.getJobSts() == ConveyorStateType.CLEARSIGNAL.getStatus()) {
                                 continue;
                             }
                             News.error("{}锛氱珯鐐癸細{}锛屼换鍔$姸鎬佷笉瀵癸紝{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(job));
                             continue;
                         }
-                        //String s = ctuMainService.checkStationStatus(takeSta.getStaNo());
-                        staProtocol.setSafeSignal(new SafeSignal( devp.getPutSta().indexOf(takeSta) ,(short)1,false));
+                        if (ctuMainService.checkComplete(job.getTaskNo())) {
+                            staProtocol.setSafeSignal(new SafeSignal(devp.getPutSta().indexOf(takeSta), (short) 1, false));
+                            redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocol);
 
-
-                        job.setJobSts(ConveyorStateType.CLEARSIGNAL.getStatus());
-                        if (!jobService.updateById(job)){
-                            log.info("" + config.getMark() + "绔欑偣娓呯┖澶辫触锛歿},{}", takeSta.getStaNo(), staProtocol.getWorkNo());
-                        }else {
-                            News.info("" + config.getMark() + "绔欑偣娓呯┖锛歿},{}", takeSta.getStaNo(), staProtocol.getWorkNo());
+                            job.setJobSts(ConveyorStateType.CLEARSIGNAL.getStatus());
+                            if (!jobService.updateById(job)) {
+                                log.info("" + config.getMark() + "绔欑偣娓呯┖澶辫触锛歿},{}", takeSta.getStaNo(), staProtocol.getWorkNo());
+                            } else {
+                                News.info("" + config.getMark() + "绔欑偣娓呯┖锛歿},{}", takeSta.getStaNo(), staProtocol.getWorkNo());
+                            }
+                        } else {
+                            log.info("" + config.getMark() + "绔欑偣锛歿},{}", takeSta.getStaNo(), staProtocol.getWorkNo());
                         }
                     }
                 }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java
index 1e3e4cf..8216624 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java
@@ -72,15 +72,15 @@
                     }
                     // 鍒ゆ柇鏄惁婊¤冻鏉′欢
                     if (!staProtocol.isAutoing()) {
-                        News.error("{},杈撻�佺嚎鏈嚜鍔紝闇�瑕佸紑鍚細{}", config.getMark(), staProtocol.getSiteId());
+                        //News.error("{},杈撻�佺嚎鏈嚜鍔紝闇�瑕佸紑鍚細{}", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
 
                     if (staProtocol.getWorkNo() == 0 && staProtocol.isLoading()) {
                         String seqNum = ctuMainService.checkStationStatus(putSta.getStaNo());
                         if (seqNum != null) {
-                            staProtocol.setSafeSignal(new SafeSignal( devp.getPutSta().indexOf(putSta) ,(short)1,true));
-                            //redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,staProtocol );
+                            staProtocol.setSafeSignal(new SafeSignal(devp.getPutSta().indexOf(putSta), (short) 1, true));
+                            redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocol);
 
                             Job job = jobService.getJobByTaskNo(seqNum);
                             if (job != null) {
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java
index 6532e8a..c71bb1b 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java
@@ -73,16 +73,16 @@
                         staProtocol = staProtocol.clone();
                     }
                     // 鍒ゆ柇鏄惁婊¤冻鏉′欢
+                    if (!staProtocol.isAutoing()) {
+                        //News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
+                        continue;
+                    }
                     if (staProtocol.getWorkNo() == 0 && staProtocol.isLoading()) {
                         News.error("{},杈撻�佺嚎涓婃湁璐ф棤浠诲姟鍙凤紝闇�瑕佷汉宸ュ鐞嗙珯鐐癸細{}", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
                     if (staProtocol.getWorkNo() > 0 && !staProtocol.isLoading()) {
                         News.error("{},杈撻�佺嚎涓婃棤璐ф湁浠诲姟鍙凤紝闇�瑕佷汉宸ュ鐞嗙珯鐐癸細{}", config.getMark(), staProtocol.getSiteId());
-                        continue;
-                    }
-                    if (!staProtocol.isAutoing()) {
-                        News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
                     if (!staProtocol.isInEnable()) {
@@ -95,7 +95,7 @@
                         continue;
                     }
                     if (jobByJobNo.getJobSts() != ConveyorStateType.INBOUND.getStatus()) {
-                        if (jobByJobNo.getJobSts() == ConveyorStateType.SENDTASK.getStatus()){
+                        if (jobByJobNo.getJobSts() == ConveyorStateType.SENDTASK.getStatus()) {
                             continue;
                         }
                         News.error("{}锛氱珯鐐癸細{}锛屼换鍔$姸鎬佷笉瀵癸紝{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(jobByJobNo));
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java
index ce57209..6d175b6 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java
@@ -69,7 +69,7 @@
                             continue;
                         }
                         if (!staProtocol.isAutoing()) {
-                            News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
+                            //News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
                             continue;
                         }
                         if (!staProtocol.isLoading()) {
@@ -84,7 +84,7 @@
                         continue;
                     }
                     if (jobByJobNo.getJobSts() != ConveyorStateType.OUTBOUND.getStatus()) {
-                        if (jobByJobNo.getJobSts() == ConveyorStateType.STARTUP.getStatus()){
+                        if (jobByJobNo.getJobSts() == ConveyorStateType.STARTUP.getStatus()) {
                             continue;
                         }
                         News.error("{}锛氱珯鐐癸細{}锛屼换鍔$姸鎬佷笉瀵癸紝{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(jobByJobNo));
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
index 563287d..ccb551a 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
@@ -38,6 +38,7 @@
     public void read(StaProtocol staProtocol, SiemensS7Net siemensS7Net) {
 
     }
+
     public void writeSafe(StaProtocol staProtocol) throws InterruptedException {
         if (staProtocol == null) {
             log.warn("鍐欏叆鏁版嵁涓虹┖锛岃烦杩� [id:{}]", JSON.toJSONString(staProtocol));
@@ -63,22 +64,22 @@
         }
         SafeSignal safeSignal = staProtocol.getSafeSignal();
 
-        int baseOffset =  0;
+        int baseOffset = 0;
         short[] array = new short[6];
         array[0] = (short) 1;
         array[1] = (short) 0;
         array[2] = (short) 0;
         array[5] = (short) 0;
-        if (safeSignal.getFlag()){
+        if (safeSignal.getFlag()) {
             array[3] = (short) 0;
-            array[4] =safeSignal.getValue();
-             baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength();
-        }else {
+            array[4] = safeSignal.getValue();
+            baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength();
+        } else {
             array[3] = safeSignal.getValue();
             array[4] = (short) 0;
-            baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() +2 + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength();
+            baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + 2 + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength();
         }
-        String flagAddr = TaskField.TASK_NUMBER.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION
+        String flagAddr = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION
                 + baseOffset;
 
         // 浠诲姟涓嬪彂閲嶈瘯鏈哄埗
@@ -103,9 +104,6 @@
                     staProtocol.getPlcId(), staProtocol.getSiteId(), writeCount,
                     writeResult.Message);
 
-            if (writeCount < WRITE_RETRY_MAX) {
-                Thread.sleep(WRITE_RETRY_INTERVAL_MS);
-            }
         }
 
         if (!success) {
@@ -114,7 +112,6 @@
             OutputQueue.DEVP.offer(errorMsg);
             News.error("SiemensDevp - 4 - 鍐欏叆瀹夊叏淇″彿杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}",
                     staProtocol.getPlcId(), JSON.toJSON(staProtocol));
-            log.error(errorMsg);
         }
 
     }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java
index 8c3e641..c591489 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java
@@ -338,6 +338,7 @@
                 SafeSignalField.SAFE_SIGNAL_FROM_CONVEYOR.buildAddress(),
                 (short) (staNoSize * SafeSignalField.SAFE_SIGNAL_FROM_CONVEYOR.getByteLength()));
 
+
         if (!result.IsSuccess) {
             log.warn("璇诲彇PLC瀹夊叏浜や簰淇℃伅寮傚父 [id:{}]", slave.getId());
             return;
@@ -372,11 +373,13 @@
             staProtocolTake.setInComplete(status2[3]);
             staProtocolTake.setOutComplete(status2[4]);
             //
-            if (status[3]){
-                redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, new SafeSignal(i,(short)0,true));
+            if (status[3]) {
+                staProtocolPut.setSafeSignal( new SafeSignal(i, (short) 0, true));
+                redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,staProtocolPut);
             }
-            if (status2[4]){
-                redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,  new SafeSignal(i, (short) 0,false));
+            if (status2[4]) {
+                staProtocolTake.setSafeSignal(new SafeSignal(i, (short) 0, false));
+                redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocolTake);
 
             }
 
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/CtuMainService.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/CtuMainService.java
index 21edbec..ba52c9c 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/CtuMainService.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/CtuMainService.java
@@ -25,4 +25,12 @@
      */
     boolean sendTask(OpenBusSubmitParam openBusSubmitParam);
 
+    /**
+     * 妫�鏌ヤ换鍔�
+     *
+     * @param seqNum
+     * @return
+     */
+    Boolean checkComplete(String seqNum);
+
 }
\ No newline at end of file
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/impl/CtuMainServiceImpl.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/impl/CtuMainServiceImpl.java
index aecbf5d..11eb234 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/impl/CtuMainServiceImpl.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/service/impl/CtuMainServiceImpl.java
@@ -119,5 +119,40 @@
         return null;
     }
 
-
+    /**
+     * 妫�鏌ョ珯鐐圭姸鎬�
+     *
+     * @param seqNum 浠诲姟鍙�
+     * @return 绔欑偣鏄惁鍙�氳
+     */
+    public Boolean checkComplete(String seqNum) {
+        StationRequestParam stationRequestParam = new StationRequestParam();
+        stationRequestParam.setSeqNum(seqNum);
+        String response = "";
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(ctuUrl)
+                    .setPath(station)
+                    .setTimeout(timeout, TimeUnit.SECONDS)
+                    .setJson(JSON.toJSONString(stationRequestParam))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getInteger(code).equals(codeValue)) {
+                log.info("RCS杩斿洖鏁版嵁锛歿}", response);
+                if (jsonObject.getBoolean(dataCode)) {
+                    return true;
+                }
+            } else {
+                log.error("璋冪敤涓嬪彂浠诲姟鎺ュ彛鎶ラ敊锛屽搷搴旂爜锛歿}锛屽搷搴斿唴瀹癸細{}", jsonObject.getInteger(code), response);
+                //throw new CoolException("璋冪敤涓嬪彂浠诲姟鎺ュ彛鎶ラ敊锛屽搷搴旂爜锛�" + jsonObject.getInteger(code));
+            }
+        } catch (CoolException e) {
+            log.error("璋冪敤绔欑偣鐘舵�佹帴鍙e紓甯�", e);
+            //throw e;
+        } catch (Exception e) {
+            //log.error("妫�鏌ョ珯鐐圭姸鎬佸け璐ワ紝绔欑偣缂栧彿锛歿}", staNo, e);
+        }
+        return false;
+    }
 }
diff --git a/zy-asc-conveyor/src/main/webapp/views/pipeline.html b/zy-asc-conveyor/src/main/webapp/views/pipeline.html
index 90e4ce0..2505149 100644
--- a/zy-asc-conveyor/src/main/webapp/views/pipeline.html
+++ b/zy-asc-conveyor/src/main/webapp/views/pipeline.html
@@ -786,7 +786,8 @@
                             <th>閲嶉噺淇″彿</th>
                             <th>绌烘弧淇″彿</th>
                             <th>鐩爣绔�</th>
-                            <th>楂樹綆淇″彿</th>
+                            <th>鍙斁/鍙彇</th>
+<!--                            <th>楂樹綆淇″彿</th>-->
                         </tr>
                         </thead>
                         <tbody>
@@ -842,6 +843,7 @@
                 <div class="modal-footer">
                     <button type="button" class="btn btn-primary" id="save">淇濆瓨</button>
                     <button type="button" class="btn btn-secondary" id="clear">娓呴櫎</button>
+                    <button type="button" class="btn btn-secondary" id="safe">琛ュ厖瀹夊叏淇″彿</button>
                     <button type="button" class="btn btn-secondary" id="cancel">鍙栨秷</button>
                 </div>
             </div>
@@ -990,7 +992,7 @@
                     <td>${site.weight || '--'}</td>
                     <td>${site.emptyMk || '--'}</td>
                     <td>${site.staNo || '--'}</td>
-                    <td>${site.locType1 || '--'}</td>
+                    <td>${site.allow || '--'}</td>
                 </tr>
             `;
         }
@@ -1081,8 +1083,7 @@
             http.post(`${baseUrl}/site/detl/update`, {
                 siteId: $('#siteId').val(),
                 workNo: $('#workNo').val(),
-                staNo: $('#staNo').val(),
-                pakMk: $('#pakMk').val()
+                staNo: $('#staNo').val()
             }, (res) => {
                 showSuccessMessage("淇敼鎴愬姛");
                 setTimeout(() => {
@@ -1097,6 +1098,18 @@
             $('#staNo').val(0);
         });
 
+        // 琛ュ厖瀹夊叏淇″彿
+        $(document).on('click', '#safe', function () {
+            http.post(`${baseUrl}/site/detl/safe`, {
+                siteId: $('#siteId').val()
+            }, (res) => {
+                showSuccessMessage("琛ュ厖鎴愬姛");
+                setTimeout(() => {
+                    closeModal();
+                }, 1500);
+            });
+        });
+
         // 鍙栨秷绔欑偣淇℃伅淇敼
         $(document).on('click', '#cancel', function () {
             closeModal();

--
Gitblit v1.9.1