Sfoglia il codice sorgente

获取设备按中文名称排序

liuq 3 mesi fa
parent
commit
98ad3fce48
1 ha cambiato i file con 42 aggiunte e 0 eliminazioni
  1. 42 0
      backend/controllers/resource_controller.go

+ 42 - 0
backend/controllers/resource_controller.go

@@ -5,6 +5,7 @@ import (
 	"ems-backend/models"
 	"encoding/json"
 	"net/http"
+	"sort"
 	"time"
 
 	"github.com/gin-gonic/gin"
@@ -224,6 +225,20 @@ func fetchHAEntitiesByDevice(config datatypes.JSON, deviceID string) ([]HAEntity
 			DeviceName: r.DName,
 		}
 	}
+
+	// Sort by friendly_name
+	sort.Slice(entities, func(i, j int) bool {
+		nameI, okI := entities[i].Attributes["friendly_name"].(string)
+		nameJ, okJ := entities[j].Attributes["friendly_name"].(string)
+		if !okI {
+			nameI = entities[i].EntityID
+		}
+		if !okJ {
+			nameJ = entities[j].EntityID
+		}
+		return nameI < nameJ
+	})
+
 	return entities, nil
 }
 
@@ -309,6 +324,20 @@ func fetchHAEntities(config datatypes.JSON) ([]HAEntity, error) {
 						DeviceName: r.DName,
 					}
 				}
+				
+				// Sort by friendly_name
+				sort.Slice(entities, func(i, j int) bool {
+					nameI, okI := entities[i].Attributes["friendly_name"].(string)
+					nameJ, okJ := entities[j].Attributes["friendly_name"].(string)
+					if !okI {
+						nameI = entities[i].EntityID
+					}
+					if !okJ {
+						nameJ = entities[j].EntityID
+					}
+					return nameI < nameJ
+				})
+
 				return entities, nil
 			}
 			// If decode failed, fallthrough to legacy method
@@ -338,6 +367,19 @@ func fetchHAEntities(config datatypes.JSON) ([]HAEntity, error) {
 		return nil, fmt.Errorf("failed to decode response: %v", err)
 	}
 
+	// Sort by friendly_name
+	sort.Slice(entities, func(i, j int) bool {
+		nameI, okI := entities[i].Attributes["friendly_name"].(string)
+		nameJ, okJ := entities[j].Attributes["friendly_name"].(string)
+		if !okI {
+			nameI = entities[i].EntityID
+		}
+		if !okJ {
+			nameJ = entities[j].EntityID
+		}
+		return nameI < nameJ
+	})
+
 	return entities, nil
 }