From df794921a35a231eba9ee61eafb68d5c1cbc7043 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期四, 13 六月 2024 18:35:57 +0800
Subject: [PATCH] 完善A2梯控的电梯运行状态显示

---
 service/nvcs.go |   67 ++++++++++++++++++++++++++++++---
 1 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/service/nvcs.go b/service/nvcs.go
index e2f3f2b..3b6aac5 100644
--- a/service/nvcs.go
+++ b/service/nvcs.go
@@ -4,7 +4,6 @@
 	"bytes"
 	"encoding/json"
 	"fmt"
-	"github.com/gin-gonic/gin"
 	"io/ioutil"
 	"net"
 	"net/http"
@@ -13,7 +12,9 @@
 	"gat1400Exchange/config"
 	"gat1400Exchange/models"
 	"gat1400Exchange/pkg/logger"
+	"gat1400Exchange/util"
 
+	"github.com/gin-gonic/gin"
 	"golang.org/x/text/encoding/simplifiedchinese"
 	"golang.org/x/text/transform"
 )
@@ -166,14 +167,54 @@
 type A2ElevatorData struct {
 	Id    string `json:"id"`
 	State struct {
-		Floor  string `json:"Floor"`
-		Status string `json:"Status"`
-		TFloor int64  `json:"TFloor"`
+		Floor  string  `json:"Floor"`
+		Status string  `json:"Status"`
+		TFloor int64   `json:"TFloor"`
+		Speed  float64 `json:"Speed"`
 	} `json:"State"`
 }
 
+type A2ElevatorConfig struct {
+	FloorData []string `json:"floordata"`
+}
+
+var A2TopFloor string
+var A2BottomFloor string
+
+func GetA2ElevatorConfig() {
+	url := "http://192.168.10.253/cgi-bin/liftnum.cgi"
+	payload := []byte("{\"display\":1}")
+	header := map[string]string{
+		"Cookie": "eyJuYW1lIjoiYWRtaW4iLCAicGFzZCI6ImFkbWluMTIzIn0=",
+	}
+
+	rsp, err := util.HttpPost(url, header, payload)
+	if err != nil {
+		logger.Warn("Get A2 floor data failure,%s", err.Error())
+		return
+	}
+
+	var configData A2ElevatorConfig
+	err = json.Unmarshal(rsp, &configData)
+	if err != nil {
+		logger.Warn("Unmarshal A2 floor data failure,%s", err.Error())
+		return
+	}
+
+	if len(configData.FloorData) > 0 {
+		A2BottomFloor, A2TopFloor = configData.FloorData[0], configData.FloorData[len(configData.FloorData[0])-1]
+	}
+
+	logger.Info("A2 floor config total:%d, bottomFloor:%s, topFloor:%s", len(configData.FloorData), A2BottomFloor, A2TopFloor)
+}
+
 func NVCSA2WebServer() {
+	// 鍏堣幏鍙栨�绘ゼ灞傛暟, 璁板綍鏈�楂樺眰
+	GetA2ElevatorConfig()
+	var runState string
+
 	r := gin.Default()
+
 	r.POST("/", func(c *gin.Context) {
 		var req A2ElevatorData
 		err := c.BindJSON(&req)
@@ -184,9 +225,23 @@
 
 		logger.Debug("Received A2 report data %+v", req)
 
+		// 璁板綍鐢垫杩愯鐘舵��, 鍙褰曚笂琛屽拰涓嬭
+		if req.State.Speed > 0 {
+			runState = "涓�"
+		} else if req.State.Speed < 0 {
+			runState = "涓�"
+		}
+
+		// 宸插埌鏈�涓嬪眰
+		if req.State.Floor == A2BottomFloor {
+			runState = "涓�"
+		}
+		if req.State.Floor == A2TopFloor {
+			runState = "涓�"
+		}
+
 		if config.NVCSConf.OSD != "" {
-			floorText := req.State.Floor
-			floorText = floorText + " " + config.NVCSConf.OSD
+			floorText := fmt.Sprintf("%s%s %s", req.State.Floor, runState, config.NVCSConf.OSD)
 
 			// 璋冪敤hik api 灏嗘枃瀛楁坊鍔犲埌osd鐨勫乏涓嬭
 			AddFloorToOSD(floorText)

--
Gitblit v1.8.0