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/{Config.MapId}";
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;
}
}
});
}
}