From c1d32ecdb36d7365a660ae2cf1405e1ca1898b4b Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期日, 20 十月 2024 22:21:02 +0800
Subject: [PATCH] 优化楼层查找
---
nvcs/cache.go | 70 ++++++++++++++++++-----------------
1 files changed, 36 insertions(+), 34 deletions(-)
diff --git a/nvcs/cache.go b/nvcs/cache.go
index 1915fd3..eb89865 100644
--- a/nvcs/cache.go
+++ b/nvcs/cache.go
@@ -112,66 +112,68 @@
}
func (c *simpleCache) getPositionByTime(timestamp int64) (runData ElevatorRunData) {
- node := c.data.Back()
+ node := c.data.Back() // 浠庨摼琛ㄥ熬閮ㄥ紑濮�
if node == nil {
return
}
- for {
- if node.Prev() == nil {
- break
- }
-
- if node.Prev().Value.(ElevatorRunData).Timestamp >= timestamp {
- node = node.Prev()
+ for node != nil {
+ if data, ok := node.Value.(ElevatorRunData); ok {
+ if data.Timestamp >= timestamp {
+ runData = data
+ node = node.Prev() // 鍚戝墠绉诲姩鑺傜偣
+ } else {
+ break
+ }
} else {
break
}
- }
-
- if node.Value.(ElevatorRunData).Timestamp >= timestamp {
- runData = node.Value.(ElevatorRunData)
}
return
}
func (c *simpleCache) getMovePosition(timestamp int64, floor string) (runData ElevatorRunData) {
- node := c.data.Back()
+ node := c.data.Back() // 浠庨摼琛ㄦ湯灏惧紑濮�
if node == nil {
return
}
- // 鍏堟壘鍒版渶杩戣妭鐐�
- for {
- if node.Prev() == nil {
- break
- }
-
- if node.Prev().Value.(ElevatorRunData).Timestamp >= timestamp {
- node = node.Prev()
+ // 鎵惧埌鏈�杩戠殑绗﹀悎鏃堕棿鎴崇殑鑺傜偣
+ for node != nil {
+ if data, ok := node.Value.(ElevatorRunData); ok {
+ if data.Timestamp >= timestamp {
+ node = node.Prev() // 鍚戝墠绉诲姩鑺傜偣
+ } else {
+ break
+ }
} else {
break
}
}
- if node.Value.(ElevatorRunData).Timestamp >= timestamp {
- for {
- if node.Next() == nil {
- break
+ // 濡傛灉鎵惧埌鐨勮妭鐐圭殑鏃堕棿鎴崇鍚堣姹傦紝缁х画妫�鏌ユゼ灞�
+ if node != nil {
+ if current, ok := node.Value.(ElevatorRunData); ok && current.Timestamp >= timestamp {
+ for node != nil {
+ if nextNode := node.Next(); nextNode != nil {
+ if nextData, ok := nextNode.Value.(ElevatorRunData); ok {
+ if nextData.Floor == floor {
+ node = nextNode // 鍚戝墠绉诲姩鑺傜偣
+ } else {
+ break
+ }
+ }
+ } else {
+ break
+ }
}
- if node.Next().Value.(ElevatorRunData).Floor == floor {
- node = node.Next()
- } else {
- break
+ // 濡傛灉鎵惧埌鐨勬ゼ灞備笌鐩爣妤煎眰涓嶅悓锛岃繑鍥炶鏁版嵁
+ if current.Floor != floor {
+ runData = current
}
}
- }
-
- if node.Value.(ElevatorRunData).Timestamp >= timestamp &&
- node.Value.(ElevatorRunData).Floor != floor {
- runData = node.Value.(ElevatorRunData)
}
return
--
Gitblit v1.8.0