using AillieoUtils; using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; /// /// 人员定位面板 /// public class PersonnelLocationPanel : UIView { public List numbsrs; public ScrollView alarmScrollView; public EmployeeScrollView employeeScrollView; public List locationCards = new List(); public List items = new List(); public Toggle showAll; public Color chaiXieColor = Color.white; public Color diDianColor = Color.white; public Color sosColor = Color.white; public Color xinlvColor = Color.white; public Color jinruColor = Color.white; public Color likaiColor = Color.white; public Color biaoqianColor = Color.white; public Color quyuchaoyuanColor = Color.white; private string alarmUrl = ""; public Dictionary AlarmColor = new Dictionary(); public override void Awake() { base.Awake(); showAll.onValueChanged.AddListener(v => Main.Event.EmployeeItemActive(v)); LoadTags(Config.Tags); AlarmColor.Add(1, chaiXieColor); AlarmColor.Add(2, diDianColor); AlarmColor.Add(3, sosColor); AlarmColor.Add(4, xinlvColor); AlarmColor.Add(5, jinruColor); AlarmColor.Add(6, likaiColor); AlarmColor.Add(10, biaoqianColor); AlarmColor.Add(13, quyuchaoyuanColor); alarmUrl = $"{Config.AlarmServer}/prod-api/dingweiRest/apiGetAlarmDatas"; } private void Start() { InvokeRepeating("GetAlarmData", 0, Config.AlarmInterval); InvokeRepeating("GetPersonnelData", 0f, 600f); } private void GetAlarmData() { HttpManager.Instance.Post(alarmUrl, tempData => { if (tempData.ErrorCode == 1) { if (tempData.List.Count > 0) { alarmScrollView.SetUpdateFunc((index, item) => { var data = tempData.List[index]; item.gameObject.SetActive(true); item.GetComponent().Set(data, AlarmColor); item.GetComponent().alarml = data; }); alarmScrollView.SetItemCountFunc(() => tempData.List.Count); alarmScrollView.UpdateData(false); } } else alarmScrollView.ResetAllDelegates(); }); } private void LoadTags(List tags) { employeeScrollView.SetUpdateFunc(tags, (index, item) => { string info = tags[index]; item.name = info; item.GetComponent().targetNo = long.Parse(info); item.transform.Find("CardNumber").GetComponent().text = info; locationCards.Add(item.gameObject); items.Add(item.GetComponent()); item.transform.Find("Show").GetComponent().onValueChanged.AddListener(v => Main.Event.EmployeeActive(long.Parse(info), v)); item.transform.Find("Track").GetComponent().onValueChanged.AddListener(v => Main.LocationSimulator.GetTrackPlaybackData(v, long.Parse(info))); }); } private void GetPersonnelData() { numbsrs.Clear(); var url = $"{Config.LocationServer}/le/uwbofferdata/getPositionDataByMapId/12"; HttpManager.Instance.Get(url, tempData => { if (tempData.list.Count > 0) { foreach (var data in tempData.list) { DateTime timestampDate = DateTimeOffset.FromUnixTimeMilliseconds(data.createdTime).LocalDateTime; DateTime currentDate = DateTime.Now; TimeSpan timeDifference = currentDate - timestampDate; if (timeDifference.TotalMinutes <= 10) { // 使用Any方法检查是否已经存在匹配的data.targetNo if (!numbsrs.Any(d => d == data.targetNo)) { numbsrs.Add(data.targetNo); } } } } foreach (var card in locationCards) { var c = numbsrs.Find(a => a.ToString() == card.name); if (c == 0) { card.transform.Find("State").GetComponent().text = "离线"; card.transform.Find("State").GetComponent().color = Color.red; } else { card.transform.Find("State").GetComponent().text = "在线"; card.transform.Find("State").GetComponent().color = Color.green; } } }); } }