GCYWLayer.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using MPUIKIT;
  6. using Unity.VisualScripting;
  7. using UnityEngine;
  8. using UnityEngine.Serialization;
  9. using UnityEngine.UI;
  10. using XCharts.Runtime;
  11. public class GCYWLayer : YZTRootLayer
  12. {
  13. private Dropdown stationDropdown;
  14. private Text _daiPaiGongText;
  15. private Text _daiXunJianText;
  16. private Text _xunJianZhongText;
  17. private Text _yiXunJianText;
  18. private BarChart wenTiTongJiBarChart;
  19. //突发事件总计
  20. private Text TFSJ_DaiChuLiNumTex;
  21. private Text TFSJ_DaiYanShouNumTex;
  22. private Text TFSJ_YiChuLiNumTex;
  23. private Text TFSJ_completeText;
  24. private MPImage TFSJ_completeSlider;
  25. public GameObject eventListItemPrefab;
  26. private List<GameObject> TFSJ_eventItems = new List<GameObject>();
  27. private Transform TFSJ_eventItemContent;
  28. //工程管理
  29. private PieChart gongChengGuanLiChart;
  30. private PieChart fenJiKaoPingChart;
  31. private Text gongChengGuanLiChartCount;
  32. private Button checkPathButton;
  33. private Text checkPathButtonText;
  34. private bool showCheckPath = false;
  35. public TaskListPanel taskListPanel;
  36. //public GameObject taskPhotoPanelObj;
  37. //public TaskPhotoPanel taskPhotoPanel;
  38. public GameObject taskPointIconPrefab;
  39. public Transform taskPointIconContent;
  40. public List<TaskPointIcon> taskPointIcons = new List<TaskPointIcon>();
  41. public LineRenderer taskPointLineRenderer;
  42. //public Button closePanelBtn;
  43. private List<string> stationNames = new List<string>();
  44. private List<string> ids = new List<string>();
  45. private string currentIds = "";
  46. private void Awake()
  47. {
  48. Init();
  49. }
  50. public void Init()
  51. {
  52. stationDropdown = this.transform.Find("ShuJuTongJi/Dropdown").GetComponent<Dropdown>();
  53. _daiPaiGongText = this.transform.Find("ShuJuTongJi/DaiPaiGong/title/numText").GetComponent<Text>();
  54. _daiXunJianText = this.transform.Find("ShuJuTongJi/DaiXunJian/title/numText").GetComponent<Text>();
  55. _xunJianZhongText = this.transform.Find("ShuJuTongJi/XunJianZhong/title/numText").GetComponent<Text>();
  56. _yiXunJianText = this.transform.Find("ShuJuTongJi/YiXunJian/title/numText").GetComponent<Text>();
  57. wenTiTongJiBarChart = this.transform.Find("ShuJuTongJi/XunJianTongJi/BarChart").GetComponent<BarChart>();
  58. gongChengGuanLiChart = this.transform.Find("GongChengGuanLi/GuanLiJianCha").GetComponent<PieChart>();
  59. gongChengGuanLiChartCount =
  60. this.transform.Find("GongChengGuanLi/GuanLiJianCha/count/numText").GetComponent<Text>();
  61. fenJiKaoPingChart = this.transform.Find("GongChengGuanLi/FenJiKaoPing").GetComponent<PieChart>();
  62. TFSJ_DaiChuLiNumTex = this.transform.Find("TuFaShiJian/DaiChuLi/count").GetComponent<Text>();
  63. TFSJ_DaiYanShouNumTex = this.transform.Find("TuFaShiJian/DaiYanShou/count").GetComponent<Text>();
  64. TFSJ_YiChuLiNumTex = this.transform.Find("TuFaShiJian/YiChuLi/count").GetComponent<Text>();
  65. TFSJ_completeText = this.transform.Find("TuFaShiJian/completeText/numText").GetComponent<Text>();
  66. TFSJ_completeSlider = this.transform.Find("TuFaShiJian/slider").GetComponent<MPImage>();
  67. TFSJ_eventItemContent = this.transform.Find("TuFaShiJian/TuFaShiJianTongBao/ScrollView/Viewport/Content");
  68. checkPathButton = this.transform.Find("CheckPathButton").GetComponent<Button>();
  69. checkPathButtonText = checkPathButton.GetComponentInChildren<Text>();
  70. checkPathButton.onClick.AddListener(CheckPathChange);
  71. }
  72. private async void ChangeData(int type)
  73. {
  74. try
  75. {
  76. currentIds = ids[type];
  77. showCheckPath = false;
  78. string textStr = showCheckPath ? "隐藏" : "显示";
  79. checkPathButtonText.text = $"巡检路线({textStr})";
  80. var currentData = GlobalData.B08StatisticsInfo[stationNames[type]];
  81. _daiPaiGongText.text = $"{currentData.waitDispatch}";
  82. _daiXunJianText.text = $"{currentData.waitPatrol}";
  83. _xunJianZhongText.text = $"{currentData.onPatrol}";
  84. _yiXunJianText.text = $"{currentData.patrolCompleted}";
  85. var tempSeries = wenTiTongJiBarChart.series;
  86. SerieData[] tempDatas = new SerieData[currentData.dates.Count];
  87. for (int i = 0; i < tempDatas.Length; i++)
  88. {
  89. tempDatas[i] = new SerieData();
  90. tempDatas[i].data = new List<double>();
  91. tempDatas[i].data.Add(i);
  92. tempDatas[i].data.Add(currentData.valueOfDates[i]);
  93. }
  94. tempSeries[0].data.Clear();
  95. tempSeries[0].data.AddRange(tempDatas);
  96. if (!GlobalData.B08_Type.Equals(currentIds))
  97. {
  98. await HttpHelper._Instance.InitGCYWData1(currentIds);
  99. }
  100. //
  101. // SetShuJuTongJiData();
  102. // SetXunJianBarChart();
  103. // SetGongChengGuanLiChart();
  104. // SetTFSJ_Data();
  105. //
  106. // await HttpHelper._Instance.B08_GetTaskList();
  107. // taskListPanel.SetData(this);
  108. }
  109. catch (Exception e)
  110. {
  111. Debug.LogError("GCYWLayer ChangeData error"+e.ToString());
  112. }
  113. }
  114. private async void OnEnable()
  115. {
  116. stationNames.Clear();
  117. ids.Clear();
  118. stationDropdown.ClearOptions();
  119. stationNames.AddRange(GlobalData.B08StationList.Keys.ToArray());
  120. ids.AddRange(GlobalData.B08StationList.Values.ToArray());
  121. stationDropdown.AddOptions(stationNames);
  122. stationDropdown.onValueChanged.AddListener(ChangeData);
  123. stationDropdown.value = 0;
  124. }
  125. public void SetGongChengGuanLiChart()
  126. {
  127. B08_projectExamine tempData = GlobalData.B08ProjectExamine;
  128. var tempSeries = gongChengGuanLiChart.series;
  129. int tempCount = 0;
  130. SerieData[] tempDatas = new SerieData[tempData.data.type1.Length];
  131. for (int i = 0; i < tempDatas.Length; i++)
  132. {
  133. tempDatas[i] = new SerieData();
  134. tempDatas[i].data = new List<double>();
  135. tempDatas[i].data.Add(i);
  136. tempDatas[i].data.Add(tempData.data.type1[i].value);
  137. tempDatas[i].name = tempData.data.type1[i].key;
  138. tempCount += tempData.data.type1[i].value;
  139. }
  140. tempSeries[0].data.Clear();
  141. tempSeries[0].data.AddRange(tempDatas);
  142. gongChengGuanLiChartCount.text = tempCount.ToString();
  143. var tempSeries_1 = fenJiKaoPingChart.series;
  144. SerieData[] tempDatas_1 = new SerieData[tempData.data.type2.Length];
  145. for (int i = 0; i < tempDatas_1.Length; i++)
  146. {
  147. tempDatas_1[i] = new SerieData();
  148. tempDatas_1[i].data = new List<double>();
  149. tempDatas_1[i].data.Add(i);
  150. tempDatas_1[i].data.Add(tempData.data.type2[i].value);
  151. tempDatas_1[i].name = tempData.data.type2[i].key;
  152. }
  153. tempSeries_1[0].data.Clear();
  154. tempSeries_1[0].data.AddRange(tempDatas_1);
  155. }
  156. public void SetTFSJ_Data()
  157. {
  158. B08_event tempData = GlobalData.B08Event;
  159. TFSJ_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  160. TFSJ_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  161. TFSJ_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  162. TFSJ_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  163. TFSJ_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  164. for (int i = 0; i < TFSJ_eventItems.Count; i++)
  165. {
  166. Destroy(TFSJ_eventItems[i]);
  167. }
  168. TFSJ_eventItems.Clear();
  169. for (int i = 0; i < tempData.data.list.Count; i++)
  170. {
  171. var tempObj = Instantiate(eventListItemPrefab, TFSJ_eventItemContent).GetComponent<B08_EventListItem>();
  172. tempObj.Init(tempData.data.list[i]);
  173. TFSJ_eventItems.Add(tempObj.gameObject);
  174. }
  175. // _tuFaShiJian_Count_Text.text =
  176. // $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  177. // _tuFaShiJian_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  178. // _tuFaShiJian_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  179. }
  180. // public void SetWTZG_Data()
  181. // {
  182. // B08_questionStatis tempData = GlobalData.B08QuestionStatis;
  183. // WTZG_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  184. // WTZG_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  185. // WTZG_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  186. // WTZG_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  187. // WTZG_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  188. //
  189. // for (int i = 0; i < WTZG_eventItems.Count; i++)
  190. // {
  191. // Destroy(WTZG_eventItems[i]);
  192. // }
  193. //
  194. // WTZG_eventItems.Clear();
  195. // for (int i = 0; i < tempData.data.list.Count; i++)
  196. // {
  197. // var tempObj = Instantiate(eventListItemPrefab, WTZG_eventItemContent).GetComponent<B08_EventListItem>();
  198. // tempObj.Init(tempData.data.list[i]);
  199. // WTZG_eventItems.Add(tempObj.gameObject);
  200. // }
  201. //
  202. // _zhengGaiWenTi_Count_Text.text =
  203. // $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  204. // _zhengGaiWenTi_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  205. // _zhengGaiWenTi_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  206. // }
  207. // public void SetXJLE_Data()
  208. // {
  209. // B08_inspectType tempData = GlobalData.B08InspectType;
  210. // dianQiCountText.text = tempData.data[0].value.ToString();
  211. // zhaZhanCountText.text = tempData.data[1].value.ToString();
  212. // diFangCountText.text = tempData.data[2].value.ToString();
  213. // jiaoChaJianZhuCountText.text = tempData.data[3].value.ToString();
  214. // dingQiZhuanXiangCountText.text = tempData.data[4].value.ToString();
  215. // }
  216. public void CheckPathChange()
  217. {
  218. showCheckPath = !showCheckPath;
  219. //ActionInstance._Instance.SetCheckPathActive(showCheckPath);
  220. string textStr = showCheckPath ? "隐藏" : "显示";
  221. checkPathButtonText.text = $"巡检路线({textStr})";
  222. }
  223. // public void OpenTaskListPanel(int type)
  224. // {
  225. // taskListPanel.SetData(this,type);
  226. // TaskListPanelObj.SetActive(true);
  227. // }
  228. private B08_TaskLocation[] currentTaskLocation;
  229. private string taskTime;
  230. public void SetTaskImgPanelData(B08_TaskLocation[] itemsArray,string _time)
  231. {
  232. currentTaskLocation = itemsArray;
  233. taskTime = _time;
  234. //taskPhotoPanel.SetData(currentTaskItems[0],taskTime);
  235. taskPointLineRenderer.positionCount = 0;
  236. for (int i = 0; i < taskPointIcons.Count; i++)
  237. {
  238. Destroy(taskPointIcons[i].gameObject);
  239. }
  240. taskPointIcons.Clear();
  241. for (int i = 0; i < itemsArray.Length; i++)
  242. {
  243. if (itemsArray[i].longitude != null && itemsArray[i].latitude != null)
  244. {
  245. GameObject tempObj = Instantiate(taskPointIconPrefab, taskPointIconContent);
  246. tempObj.name = itemsArray[i].locationTypeName;
  247. Vector2 longlatt = CoordinateConverter.GCJ02ToWGS84(double.Parse(itemsArray[i].longitude),
  248. double.Parse(itemsArray[i].latitude));
  249. tempObj.transform.position = CoordinateConverter.GeoToUnity(longlatt.x, longlatt.y) + Vector3.up * 41;
  250. tempObj.gameObject.SetActive(false);
  251. taskPointIcons.Add(tempObj.GetComponent<TaskPointIcon>());
  252. }
  253. }
  254. //taskPointLineRenderer.positionCount = itemsArray.Length;
  255. float allDistance = 0;
  256. UnityEngine.Vector3 prePos = UnityEngine.Vector3.zero;
  257. List<UnityEngine.Vector3> vector3s = new List<UnityEngine.Vector3>();
  258. for (int i = 0; i < taskPointIcons.Count; i++)
  259. {
  260. vector3s.Add(taskPointIcons[i].transform.position);
  261. if (i != 0)
  262. {
  263. allDistance += UnityEngine.Vector3.Distance(taskPointIcons[i].transform.position, prePos);
  264. }
  265. else {
  266. CameraManager.instance.mainCamera.GetComponent<CameraBird>().target.transform.position = taskPointIcons[i].transform.position;
  267. }
  268. //taskPointLineRenderer.SetPosition(i, taskPointIcons[i].transform.position);
  269. prePos = taskPointIcons[i].transform.position;
  270. }
  271. taskPointLineRenderer.GetComponent<DynamicLine>().SetDynamicPoint(vector3s);
  272. taskPointLineRenderer.GetComponent<DynamicLine>().OnTouchIndex = (int index) =>
  273. {
  274. //Debug.Log(index);
  275. taskPointIcons[index].gameObject.SetActive(true);
  276. };
  277. }
  278. public void SetTaskPointIconHeightLight(int index)
  279. {
  280. for (int i = 0; i < taskPointIcons.Count; i++)
  281. {
  282. taskPointIcons[i].SetHeightLight(i == index);
  283. }
  284. }
  285. // public void OpenTaskImgPanel(int openPage)
  286. // {
  287. // taskPhotoPanel.SetData(currentTaskItems[openPage],taskTime);
  288. // taskPhotoPanel.ChangePage(0);
  289. // taskPhotoPanelObj.SetActive(true);
  290. // }
  291. }