From 7112338864ef558d54db0329d75b903322787f6c Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期一, 24 三月 2025 09:33:16 +0800
Subject: [PATCH] #输送线循环,堆垛机暂存数

---
 src/main/java/com/zy/asrs/service/WrkMastService.java          |    5 +
 src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java |   14 ++++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java    |  103 ++++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java |    7 ++
 src/main/java/com/zy/asrs/service/TaskWrkService.java          |    4 +
 src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java |    7 ++
 src/main/java/com/zy/core/MainProcess.java                     |    4 +
 src/main/java/com/zy/asrs/task/autoReportStartHandler.java     |    2 
 pom.xml                                                        |    2 
 src/main/resources/application.yml                             |    2 
 10 files changed, 146 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 7a47d8d..1d02e2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
 
     <properties>
         <java.version>1.8</java.version>
-        <cool.version>3.2.0</cool.version>
+        <cool.version>3.4.5</cool.version>
         <mysql-driver.version>5.1.47</mysql-driver.version>
         <mybatis-plus.version>2.3.2</mybatis-plus.version>
         <fastjson.version>1.2.58</fastjson.version>
diff --git a/src/main/java/com/zy/asrs/service/TaskWrkService.java b/src/main/java/com/zy/asrs/service/TaskWrkService.java
index e62ee0b..51d17b2 100644
--- a/src/main/java/com/zy/asrs/service/TaskWrkService.java
+++ b/src/main/java/com/zy/asrs/service/TaskWrkService.java
@@ -29,5 +29,9 @@
     List<TaskWrk> selectToBeHistoryData();
 
     int saveToHistory(String taskNo);//灏嗕换鍔¤浆鍘嗗彶鏃ュ織
+    /**
+     * 鑾峰彇瀵瑰簲鍫嗗灈鏈哄彿宸ヤ綔鐘舵�佷负14锛�12锛�2鐨勫伐浣滄。
+     */
+    int getStoreCount(Integer crnNo);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 67469f8..e2a0c06 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -15,4 +15,9 @@
 
     int getOutToStn182(Integer devpNo);
 
+    /**
+     * 鑾峰彇瀵瑰簲鍫嗗灈鏈哄彿宸ヤ綔鐘舵�佷负14锛�12锛�2鐨勫伐浣滄。
+     */
+    int getStoreCount(Integer crnNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
index 982f348..9735a47 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
@@ -6,13 +6,19 @@
 import com.zy.asrs.entity.BasCrnp;
 import com.zy.asrs.mapper.BasCrnpMapper;
 import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.WrkMastService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 @Slf4j
 @Service("basCrnpService")
 public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService {
-
+    @Value("${wms.count}")
+    private Integer maxCount;
+    @Autowired
+    private WrkMastService wrkMastService;
     @Override
     public BasCrnp checkSiteStatus(Integer crnId) {
         BasCrnp crnp = this.selectById(crnId);
@@ -36,6 +42,11 @@
             return false;
         }
         if (pakin) {
+//            int storeCount = wrkMastService.getStoreCount(crnNo);
+//            if(storeCount >= maxCount){
+//                log.error("{}鍙峰爢鍨涙満鏆傚瓨鏁板凡婊�!", crnNo);
+//                return false;
+//            }
             if ("N".equals(crnp.getInEnable())) {
                 log.error("{}鍙峰爢鍨涙満涓嶅彲鍏�", crnNo);
                 return false;
@@ -60,4 +71,5 @@
 //        }
         return true;
     }
+
 }
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 d8ab81a..b03a68a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -42,12 +42,14 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.io.IOException;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -94,7 +96,10 @@
     private ApiLogService apiLogService;
     @Autowired
     private CommonService commonService;
-
+    @Value("${wms.count}")
+    private Integer maxCount;
+    @Autowired
+    private WrkMastService wrkMastService;
     @Value("${wms.url}")
     private String wmsUrl;
     @Value("${wms.inboundTaskApplyPath}")
@@ -107,6 +112,95 @@
     private CrnController crnController;
     @Autowired
     private SiteController siteController;
+    //鍑哄簱绔欑偣鑷�112寰幆绔欑偣
+    public synchronized void shiftTargetToCyclePoint() throws IOException, InterruptedException{
+        try{
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                for (DevpSlave.Sta outSta : devp.getOutSta()) {
+                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                    StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo());
+                    StaProtocol staProtocol1 = devpThread.getStation().get(1001);
+                    StaProtocol staProtocol2 = devpThread.getStation().get(1002);
+                    StaProtocol staProtocol3 = devpThread.getStation().get(1003);
+                    StaProtocol staProtocol4 = devpThread.getStation().get(1004);
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    if (staProtocol1 == null) {
+                        continue;
+                    } else {
+                        staProtocol1 = staProtocol1.clone();
+                    }
+                    if (staProtocol2 == null) {
+                        continue;
+                    } else {
+                        staProtocol2 = staProtocol2.clone();
+                    }
+                    if (staProtocol3 == null) {
+                        continue;
+                    } else {
+                        staProtocol3 = staProtocol3.clone();
+                    }
+                    if (staProtocol4 == null) {
+                        continue;
+                    } else {
+                        staProtocol4 = staProtocol4.clone();
+                    }
+                    boolean result = false;
+                    switch(outSta.getStaNo()){
+                        case 105: if (staProtocol1.isLoading()){
+                            result = true;
+                        }
+                        case 107: if (staProtocol2.isLoading()){
+                            result = true;
+                        }
+                        case 109: if (staProtocol3.isLoading()){
+                            result = true;
+                        }
+                        case 110: if (staProtocol4.isLoading()){
+                            result = true;
+                        }
+                        default: break;
+
+                    }
+                    if(result){
+                        staProtocol.setStaNo((short) 112);
+                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    }
+                }
+            }
+        }catch (Exception e) {
+            log.error("generateStoreWrkFile e", e);
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+    }
+
+    //112寰幆绔欑偣鑷冲嚭搴撶珯
+    public synchronized void shiftCyclePointToTarget() throws IOException, InterruptedException{
+        try{
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(112);
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+                if(wrkMast != null &&  wrkMast.getWrkNo() < 9000 && wrkMast.getWrkNo() > 7000){
+                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                }
+            }
+        }catch (Exception e) {
+            log.error("generateStoreWrkFile e", e);
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+    }
+
+
 
 
     public synchronized void generateStoreWrkFile1() throws IOException, InterruptedException {
@@ -722,6 +816,7 @@
                     continue;
                 }
 
+
                 // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
                 TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
                 if (null == taskWrk) {
@@ -847,6 +942,12 @@
                         if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
                             break;
                         }
+                        int storeCount = taskWrkService.getStoreCount(taskWrk.getCrnNo());
+                        if(storeCount >= maxCount){
+                            log.error("{}鍙峰爢鍨涙満鏆傚瓨鏁板凡婊�!", taskWrk.getCrnNo());
+                            break;
+                        }
+
 
                         // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
                         if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
index 9b24079..7dd6e70 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
@@ -2,11 +2,13 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.enums.TaskStatusType;
 import com.zy.asrs.domain.enums.WorkNoType;
 import com.zy.asrs.entity.StaDesc;
+import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.mapper.TaskWrkMapper;
 import com.zy.asrs.entity.TaskWrk;
 import com.zy.asrs.service.ApiLogService;
@@ -247,4 +249,9 @@
     public int saveToHistory(String taskNo) {
         return this.baseMapper.saveToHistory(taskNo);
     }
+
+    @Override
+    public int getStoreCount(Integer crnNo){
+        return selectCount(new EntityWrapper<TaskWrk>().eq("crn_no", crnNo).in("wrk_sts",12,14,2));
+    }
 }
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 8c0b9e9..99f7296 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -5,9 +5,11 @@
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.WrkMastService;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+
 
 @Service("wrkMastService")
 public class WrkMastServiceImpl extends ServiceImpl<WrkMastMapper, WrkMast> implements WrkMastService {
@@ -31,4 +33,9 @@
     public int getOutToStn182(Integer devpNo) {
         return selectCount(new EntityWrapper<WrkMast>().eq("sta_no", devpNo).in("wrk_sts",11,12));
     }
+
+    @Override
+    public int getStoreCount(Integer crnNo){
+        return selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("wrk_sts",12,14,2));
+    }
 }
diff --git a/src/main/java/com/zy/asrs/task/autoReportStartHandler.java b/src/main/java/com/zy/asrs/task/autoReportStartHandler.java
index f0ee945..8e5d78b 100644
--- a/src/main/java/com/zy/asrs/task/autoReportStartHandler.java
+++ b/src/main/java/com/zy/asrs/task/autoReportStartHandler.java
@@ -85,7 +85,7 @@
      */
     @Scheduled(cron = "0/3 * * * * ? ")
     public synchronized void execute() throws IOException {
-        List<TaskWrk> taskWrks=taskWrkService.selectList(new EntityWrapper<TaskWrk>().eq("status",1).in("wrk_sts",12,13,3,4));
+        List<TaskWrk> taskWrks=taskWrkService.selectList(new EntityWrapper<TaskWrk>().eq("status",1).in("wrk_sts",12,13,2,3,4));
         if(taskWrks.size()>0){
             for(TaskWrk taskWrk:taskWrks){
                 if(Cools.isEmpty(taskWrk.getMarkStart())||taskWrk.getMarkStart()==0){
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 91070ff..d713dd4 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -62,6 +62,10 @@
 //                    mainService.outOfDevp();
 
                     // 鍏朵粬  ===>> // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
+
+                    //鐜舰寰幆鍑芥暟
+                    mainService.shiftTargetToCyclePoint();
+                    mainService.shiftCyclePointToTarget();
                     i++;
                     if (i > 1) {
 //                        mainService.ioConvert();
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 3f61057..38c4a6a 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -44,6 +44,8 @@
   publicKeysStorePath: publicCerts.keystore
 
 wms:
+  #鍫嗗灈鏈轰换鍔℃殏瀛樻暟
+  count: 4
   # 鏄惁寮�鍚笂鎶�
   start: true
   # WMS绯荤粺ip

--
Gitblit v1.9.1