From c66ae137f314075f261bb13a1158bbf8ea4bf645 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@gmail.com>
Date: 星期四, 25 十二月 2025 15:10:04 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java                |    2 +
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java     |   47 +++++++++++++++++++++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java             |    7 +--
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java          |    2 
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java     |   18 ++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaService.java              |    3 +
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Segment.java                  |   12 ++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java |    6 +-
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java          |    2 
 9 files changed, 85 insertions(+), 14 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java
index b7b2080..c986364 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java
@@ -120,7 +120,7 @@
                     );
                     for (Segment segment : segments) {
 //                        long startTime = System.currentTimeMillis();
-                        if (!transferStationHandler.isSegDelayAtSta(segment)) {
+                        if (!transferStationHandler.hasDelayAtSta(segment)) {
                             trafficService.trigger(segment);
                         }
 //                        log.info("traffic calculation spend {} ms", System.currentTimeMillis() - startTime);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
index 18f8704..b6d1b34 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1196,6 +1196,7 @@
             for (Segment item : segmentList) {
                 item.setGroupId(groupId);
                 item.setState(SegmentStateType.RUNNING.toString());
+                item.setStartTime(now);
                 item.setUpdateTime(now);
                 if (null != algoStartTime) {
                     item.setAlgoTime((int) (now.getTime() - algoStartTime.getTime()));
@@ -1556,6 +1557,7 @@
         // segment
         for (Segment segment : segmentList) {
             segment.setState(SegmentStateType.FINISH.toString());
+            segment.setEndTime(now);
             segment.setUpdateTime(now);
             if (!segmentService.updateById(segment)) {
                 log.error("Segment [{}] 鏇存柊澶辫触 锛侊紒锛�", segment.getGroupId() + " - " + segment.getSerial());
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
index 4eda19e..8de616a 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
@@ -96,7 +96,6 @@
 
             Travel travel = travelService.getById(segment.getTravelId());
             Agv agv = agvService.getById(travel.getAgvId());
-            AgvDetail agvDetail = agvDetailService.selectByAgvId(travel.getAgvId());
             long endNode = segment.getEndNode();
 
             // valid ----------------------------------------------------
@@ -208,9 +207,9 @@
             }
 
             // checkout path
-            Code startCode = codeService.getCacheById(agvDetail.getRecentCode());
+            Code startCode = agvDetailService.getCurrentCode(travel.getAgvId());
             Code endCode = codeService.getCacheById(endNode);
-            long startTime = System.currentTimeMillis();
+//            long startTime = System.currentTimeMillis();
             List<String> pathList = this.checkoutPath(agv, startCode, endCode, segment);
 //            System.out.println("checkoutPath: " + (System.currentTimeMillis() - startTime));
             if (Cools.isEmpty(pathList)) {
@@ -277,7 +276,7 @@
 
             mapService.lockPath(null, pathList, agv.getUuid());
 
-            startTime = System.currentTimeMillis();
+//            startTime = System.currentTimeMillis();
             mainService.generateAction(segment.getAgvId(), segmentList, pathList, now);
 //            System.out.println("generateAction: " + (System.currentTimeMillis() - startTime));
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java
index d41b4f1..16ee3c6 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java
@@ -1,21 +1,60 @@
 package com.zy.acs.manager.core.service;
 
+import com.zy.acs.manager.manager.entity.AgvDetail;
+import com.zy.acs.manager.manager.entity.Code;
 import com.zy.acs.manager.manager.entity.Segment;
-import com.zy.acs.manager.manager.service.SegmentService;
+import com.zy.acs.manager.manager.entity.Sta;
+import com.zy.acs.manager.manager.enums.StaTypeType;
+import com.zy.acs.manager.manager.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
+// man_segment: start_time, end_time
 @Slf4j
 @Service
 public class TransferStationHandler {
 
     @Autowired
     private SegmentService segmentService;
+    @Autowired
+    private AgvService agvService;
+    @Autowired
+    private AgvDetailService agvDetailService;
+    @Autowired
+    private CodeService codeService;
+    @Autowired
+    private StaService staService;
 
-    public boolean isSegDelayAtSta(Segment segment) {
-
-
+    /**
+     *
+     */
+    // return is need wait
+    public boolean hasDelayAtSta(Segment segment) {
+        if (segment == null) {
+            throw new NullPointerException("segment is null in hasDelayAtSta.");
+        }
+        // 鍒ゆ柇AGV鏄惁鍦ㄦ粴鍔ㄨ緭閫佺嚎鍓�
+        Code currentCode = agvDetailService.getCurrentCode(segment.getAgvId());
+        if (null == currentCode) {
+            return false;
+        }
+        Sta rollerSta = staService.selectByCode(currentCode.getId(), StaTypeType.ROLLER);
+        if (null == rollerSta) {
+            return false;
+        }
+        // 濡傛灉涓虹涓�涓猻egment锛堟病鏈塸revious segment锛夛紝鍒欎笉闇�瑕佺瓑寰�
+        Segment preSeg = segmentService.getPreviousStepOfFinish(segment.getTravelId(), segment.getSerial());
+        if (preSeg == null) {
+            return false;
+        }
+        Date preSegEndTime = preSeg.getEndTime();
+        if (null == preSegEndTime) {
+            return false;
+        }
+        Date now = new Date();
 
         return false;
     }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Segment.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Segment.java
index 9f7cb82..99795d3 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Segment.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Segment.java
@@ -95,6 +95,18 @@
     private Integer algoTime;
 
     /**
+     * 寮�濮嬫椂闂�
+     */
+    @ApiModelProperty(value= "寮�濮嬫椂闂�")
+    private Date startTime;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @ApiModelProperty(value= "缁撴潫鏃堕棿")
+    private Date endTime;
+
+    /**
      * 杩涘害
      */
     @ApiModelProperty(value= "杩涘害")
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
index 39115c1..85422ae 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
@@ -12,7 +12,7 @@
 
     Segment getNextStepOfInit(Long travelId, Integer serial);
 
-    Segment getPreviousStepOfFinish(Long travelId, Integer serial, String memo);
+    Segment getPreviousStepOfFinish(Long travelId, Integer serial);
 
     List<Segment> getJustWaitingSeg(Long agvId);
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaService.java
index 673cd8e..3569a39 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaService.java
@@ -2,9 +2,12 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zy.acs.manager.manager.entity.Sta;
+import com.zy.acs.manager.manager.enums.StaTypeType;
 
 public interface StaService extends IService<Sta> {
 
     Sta selectByStaNo(String staNo);
 
+    Sta selectByCode(Long codeId, StaTypeType type);
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
index 58cafeb..603bea5 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
@@ -65,12 +65,12 @@
     }
 
     @Override
-    public Segment getPreviousStepOfFinish(Long travelId, Integer serial, String memo) {
+    public Segment getPreviousStepOfFinish(Long travelId, Integer serial) {
         return this.getOne(new LambdaQueryWrapper<Segment>()
                 .eq(Segment::getTravelId, travelId)
                 .eq(Segment::getSerial, serial - 1)
-//                .eq(Segment::getState, SegmentStateType.FINISH.toString())
-                .eq(Segment::getMemo, memo)
+                .eq(Segment::getState, SegmentStateType.FINISH.toString())
+                .orderByDesc(Segment::getId)
         );
     }
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java
index cf25400..73093e2 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java
@@ -2,17 +2,33 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.acs.framework.common.Cools;
 import com.zy.acs.manager.manager.entity.Sta;
+import com.zy.acs.manager.manager.enums.StaTypeType;
+import com.zy.acs.manager.manager.enums.StatusType;
 import com.zy.acs.manager.manager.mapper.StaMapper;
 import com.zy.acs.manager.manager.service.StaService;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service("staService")
 public class StaServiceImpl extends ServiceImpl<StaMapper, Sta> implements StaService {
 
     @Override
     public Sta selectByStaNo(String staNo) {
-        return this.getOne(new LambdaQueryWrapper<Sta>().eq(Sta::getStaNo, staNo));
+        return this.getOne(new LambdaQueryWrapper<Sta>()
+                .eq(Sta::getStaNo, staNo).eq(Sta::getStatus, StatusType.ENABLE.val));
+    }
+
+    @Override
+    public Sta selectByCode(Long codeId, StaTypeType type) {
+        if (Cools.isEmpty(codeId, type)) {
+            return null;
+        }
+        List<Sta> list = this.list(new LambdaQueryWrapper<Sta>()
+                .eq(Sta::getCode, codeId).eq(Sta::getStaType, type.val()).eq(Sta::getStatus, StatusType.ENABLE.val));
+        return list.stream().findFirst().orElse(null);
     }
 
 }

--
Gitblit v1.9.1