281 lines
8.7 KiB
C#
281 lines
8.7 KiB
C#
using Adam;
|
|
using Cysharp.Threading.Tasks;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEngine;
|
|
|
|
public class DataController : MonoSingleton<DataController>
|
|
{
|
|
|
|
private CityInfo[] cityInfos;
|
|
|
|
[HideInInspector]
|
|
public List<UniTask<AreaData>> loadingAreaDataTasks = new List<UniTask<AreaData>>();
|
|
[HideInInspector]
|
|
public List<UniTask<AreaStationData>> loadingScreenTopStatisticsTasks = new List<UniTask<AreaStationData>>();
|
|
|
|
/// <summary>
|
|
/// 省级视角下得区县信息
|
|
/// </summary>
|
|
private AreaStationData areaStationData = new AreaStationData();
|
|
/// <summary>
|
|
/// 弹出框信息
|
|
/// </summary>
|
|
private AreaData[] areaPopUpDatasTasksReturnValue;
|
|
/// <summary>
|
|
/// 市级视角中得区县信息
|
|
/// </summary>
|
|
private AreaStationData[] areaStationDatasTasksReturnValue;
|
|
/// <summary>
|
|
/// 区县站点信息
|
|
/// </summary>
|
|
private List<ScreenTopStatistics> screenTopStatisticss = new List<ScreenTopStatistics>();
|
|
/// <summary>
|
|
/// 企业信息
|
|
/// </summary>
|
|
public AreaCompanyInformationData companyInformationData = new AreaCompanyInformationData();
|
|
private Dictionary<string, string> urlDic = new Dictionary<string, string>();
|
|
|
|
public CompanyInfo companyPointPrefab;
|
|
public GameObject btns;
|
|
|
|
public List<CompanyInfo> companyPoint = new List<CompanyInfo>();
|
|
public int currentStationID = 0;
|
|
|
|
private void Awake()
|
|
{
|
|
var serverConfig = new System.Uri(Path.Combine(Application.streamingAssetsPath + @"/Config", "WebAddress.json"));
|
|
GetText(serverConfig.ToString(), (temp) =>
|
|
{
|
|
if (!String.IsNullOrWhiteSpace(temp))
|
|
{
|
|
urlDic = JsonConvert.DeserializeObject<Dictionary<string, string>>(temp);
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("加载配置文件错误");
|
|
}
|
|
});
|
|
}
|
|
public void GetText(string url, Action<string> actionResult)
|
|
{
|
|
StartCoroutine(FileUtil.GetTextAsyn(url, actionResult));
|
|
}
|
|
private void Start()
|
|
{
|
|
#if UNITY_WEBGL && !UNITY_EDITOR
|
|
btns.SetActive(false);
|
|
#endif
|
|
Bootstrap.Instance.webAdapter.onStation.AddListener(SwitchStation);
|
|
Bootstrap.Instance.webAdapter.onStartRequest.AddListener(OnInit);
|
|
}
|
|
|
|
public void TEstStation(int index)
|
|
{
|
|
SwitchStation(index);
|
|
}
|
|
public void OnTEstBtn()
|
|
{
|
|
OnInit();
|
|
}
|
|
|
|
private async void OnInit()
|
|
{
|
|
await UniTask.Delay(1);
|
|
//GetAllCompanyInfo("37");
|
|
areaStationData = await GetProvincialLevelStationData("37");
|
|
cityInfos = transform.GetComponentsInChildren<CityInfo>();
|
|
for (int i = 0; i < cityInfos.Length; i++)
|
|
{
|
|
cityInfos[i].Init();
|
|
}
|
|
areaStationDatasTasksReturnValue = await UniTask.WhenAll(loadingScreenTopStatisticsTasks);
|
|
|
|
for (int i = 0; i < areaStationDatasTasksReturnValue.Length; i++)
|
|
{
|
|
List<DataItem> tempDI = areaStationDatasTasksReturnValue[i].data;
|
|
if (tempDI != null && tempDI.Count > 0)
|
|
{
|
|
for (int j = 0; j < tempDI.Count; j++)
|
|
{
|
|
screenTopStatisticss.Add(tempDI[j].screenTopStatistics);
|
|
}
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < cityInfos.Length; i++)
|
|
{
|
|
string distCodeTemp = cityInfos[i].distCode;
|
|
if (distCodeTemp.Length == 6)
|
|
cityInfos[i].SetStationData(GetAreLevelStationDataByDistCode(distCodeTemp));
|
|
}
|
|
}
|
|
public async void GetAllCompanyInfo(string _distCode)
|
|
{
|
|
companyInformationData = await GetAreaCompanyInformationData(_distCode);
|
|
for (int i = 0; i < companyInformationData.data.Count; i++)
|
|
{
|
|
Coordinate coords = new Coordinate();
|
|
coords.lat = companyInformationData.data[i].latitude;
|
|
coords.lon = companyInformationData.data[i].longitude;
|
|
coords.alt = 1986;
|
|
CompanyInfo obj = Instantiate(companyPointPrefab);
|
|
obj.companyInfo = companyInformationData.data[i];
|
|
obj.transform.position = coords.AsVector3();
|
|
companyPoint.Add(obj);
|
|
//Vector3 temp = WebApiExtension.GPSToVector3(companyInformationData.data[i].latitude, companyInformationData.data[i].longitude);
|
|
}
|
|
|
|
}
|
|
|
|
public void RemoveCompanyPoint()
|
|
{
|
|
if (companyPoint.Count > 0)
|
|
{
|
|
for (int i = 0; i < companyPoint.Count; i++)
|
|
{
|
|
Destroy(companyPoint[i].gameObject);
|
|
}
|
|
companyPoint.Clear();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 切换资源站点
|
|
/// </summary>
|
|
/// <param name="stationIndex"></param>
|
|
public void SwitchStation(int stationIndex)
|
|
{
|
|
currentStationID = stationIndex;
|
|
for (int i = 0; i < cityInfos.Length; i++)
|
|
{
|
|
cityInfos[i].SetScreenTopStatistices(stationIndex);
|
|
}
|
|
}
|
|
|
|
public string CurrentStation()
|
|
{
|
|
string currentStationId = "";
|
|
switch (currentStationID)
|
|
{
|
|
case 0:
|
|
currentStationId = "cons";
|
|
break;
|
|
case 1:
|
|
currentStationId = "";
|
|
break;
|
|
case 2:
|
|
currentStationId = "10100500";
|
|
break;
|
|
case 3:
|
|
currentStationId = "10100200";
|
|
break;
|
|
case 4:
|
|
currentStationId = "10100300";
|
|
break;
|
|
case 5:
|
|
currentStationId = "10100400";
|
|
break;
|
|
case 6:
|
|
currentStationId = "10100100";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return $"?resourceType={currentStationId}";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取所有企业信息
|
|
/// </summary>
|
|
/// <param name="_distCode"></param>
|
|
/// <param name="_disName"></param>
|
|
/// <returns></returns>
|
|
public async UniTask<AreaCompanyInformationData> GetAreaCompanyInformationData(string _distCode)
|
|
{
|
|
string url = urlDic["地图企业用户资源"];
|
|
return await AsyncWebReq.Get<AreaCompanyInformationData>(url + _distCode, Bootstrap.Instance.webAdapter.head, Bootstrap.Instance.webAdapter.token);
|
|
}
|
|
/// <summary>
|
|
/// 通过市级视角去获取区县得资源站点数据
|
|
/// </summary>
|
|
/// <param name="_distCode"></param>
|
|
/// <returns></returns>
|
|
public ScreenTopStatistics GetAreLevelStationDataByDistCode(string _distCode)
|
|
{
|
|
for (int i = 0; i < screenTopStatisticss.Count; i++)
|
|
{
|
|
if (screenTopStatisticss[i] != null && screenTopStatisticss[i].distCode == _distCode)
|
|
{
|
|
return screenTopStatisticss[i];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 针对市级区域
|
|
/// </summary>
|
|
/// <param name="_distCode"></param>
|
|
/// <returns></returns>
|
|
public ScreenTopStatistics GetProvincialLevelStationDataByDistCode(string _distCode)
|
|
{
|
|
for (int i = 0; i < areaStationData.data.Count; i++)
|
|
{
|
|
if (areaStationData.data[i].distCode == _distCode)
|
|
{
|
|
return areaStationData.data[i].screenTopStatistics;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取每个区域的聚合信息
|
|
/// </summary>
|
|
/// <param name="_distCode"></param>
|
|
/// <returns></returns>
|
|
public async UniTask<AreaData> GetAreaPopUpDataByDistCode(string _distCode)
|
|
{
|
|
//await UniTask.Delay(2);
|
|
string url = urlDic["地图弹出框"];
|
|
AreaData areaData = await AsyncWebReq.Get<AreaData>($"{url}{_distCode}{CurrentStation()}", Bootstrap.Instance.webAdapter.head, Bootstrap.Instance.webAdapter.token);
|
|
if (!bool.Parse(areaData.success)) return null;
|
|
return areaData;
|
|
}
|
|
/// <summary>
|
|
/// 获取所有弹出框
|
|
/// </summary>
|
|
/// <param name="_distCode"></param>
|
|
/// <returns></returns>
|
|
public AreaData GetAreaDateByDistCode(string _distCode)
|
|
{
|
|
for (int i = 0; i < areaPopUpDatasTasksReturnValue.Length; i++)
|
|
{
|
|
if (areaPopUpDatasTasksReturnValue[i].data.distCode == _distCode)
|
|
{
|
|
return areaPopUpDatasTasksReturnValue[i];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取地图汇总
|
|
/// </summary>
|
|
/// <param name="_distCode"></param>
|
|
/// <returns></returns>
|
|
public async UniTask<AreaStationData> GetProvincialLevelStationData(string _distCode)
|
|
{
|
|
string url = urlDic["地图信息汇总"];
|
|
AreaStationData areaStationData = await AsyncWebReq.Get<AreaStationData>(url + _distCode, Bootstrap.Instance.webAdapter.head, Bootstrap.Instance.webAdapter.token);
|
|
return areaStationData;
|
|
}
|
|
|
|
|
|
}
|