GCYWLayer.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  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("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. SetTFSJ_Data();
  101. //todo 其他信息获取
  102. // SetShuJuTongJiData();
  103. // SetXunJianBarChart();
  104. // SetGongChengGuanLiChart();
  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 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. ChangeData(0);
  125. }
  126. public void SetGongChengGuanLiChart()
  127. {
  128. B08_projectExamine tempData = GlobalData.B08ProjectExamine;
  129. var tempSeries = gongChengGuanLiChart.series;
  130. int tempCount = 0;
  131. SerieData[] tempDatas = new SerieData[tempData.data.type1.Length];
  132. for (int i = 0; i < tempDatas.Length; i++)
  133. {
  134. tempDatas[i] = new SerieData();
  135. tempDatas[i].data = new List<double>();
  136. tempDatas[i].data.Add(i);
  137. tempDatas[i].data.Add(tempData.data.type1[i].value);
  138. tempDatas[i].name = tempData.data.type1[i].key;
  139. tempCount += tempData.data.type1[i].value;
  140. }
  141. tempSeries[0].data.Clear();
  142. tempSeries[0].data.AddRange(tempDatas);
  143. gongChengGuanLiChartCount.text = tempCount.ToString();
  144. var tempSeries_1 = fenJiKaoPingChart.series;
  145. SerieData[] tempDatas_1 = new SerieData[tempData.data.type2.Length];
  146. for (int i = 0; i < tempDatas_1.Length; i++)
  147. {
  148. tempDatas_1[i] = new SerieData();
  149. tempDatas_1[i].data = new List<double>();
  150. tempDatas_1[i].data.Add(i);
  151. tempDatas_1[i].data.Add(tempData.data.type2[i].value);
  152. tempDatas_1[i].name = tempData.data.type2[i].key;
  153. }
  154. tempSeries_1[0].data.Clear();
  155. tempSeries_1[0].data.AddRange(tempDatas_1);
  156. }
  157. public void SetTFSJ_Data()
  158. {
  159. B08_event tempData = GlobalData.B08Event;
  160. TFSJ_DaiChuLiNumTex.text = tempData.waitHandle.ToString();
  161. TFSJ_DaiYanShouNumTex.text = tempData.waitAccept.ToString();
  162. TFSJ_YiChuLiNumTex.text = tempData.hasHandle.ToString();
  163. TFSJ_completeText.text = $"{tempData.hasHandle*1.0f/tempData.total * 100.0f:0}%";
  164. TFSJ_completeSlider.fillAmount = tempData.hasHandle*1.0f/tempData.total;
  165. for (int i = 0; i < TFSJ_eventItems.Count; i++)
  166. {
  167. Destroy(TFSJ_eventItems[i]);
  168. }
  169. TFSJ_eventItems.Clear();
  170. for (int i = 0; i < tempData.rows.Count; i++)
  171. {
  172. var tempObj = Instantiate(eventListItemPrefab, TFSJ_eventItemContent).GetComponent<B08_EventListItem>();
  173. tempObj.Init(tempData.rows[i]);
  174. TFSJ_eventItems.Add(tempObj.gameObject);
  175. }
  176. // _tuFaShiJian_Count_Text.text =
  177. // $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  178. // _tuFaShiJian_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  179. // _tuFaShiJian_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  180. }
  181. // public void SetWTZG_Data()
  182. // {
  183. // B08_questionStatis tempData = GlobalData.B08QuestionStatis;
  184. // WTZG_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  185. // WTZG_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  186. // WTZG_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  187. // WTZG_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  188. // WTZG_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  189. //
  190. // for (int i = 0; i < WTZG_eventItems.Count; i++)
  191. // {
  192. // Destroy(WTZG_eventItems[i]);
  193. // }
  194. //
  195. // WTZG_eventItems.Clear();
  196. // for (int i = 0; i < tempData.data.list.Count; i++)
  197. // {
  198. // var tempObj = Instantiate(eventListItemPrefab, WTZG_eventItemContent).GetComponent<B08_EventListItem>();
  199. // tempObj.Init(tempData.data.list[i]);
  200. // WTZG_eventItems.Add(tempObj.gameObject);
  201. // }
  202. //
  203. // _zhengGaiWenTi_Count_Text.text =
  204. // $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  205. // _zhengGaiWenTi_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  206. // _zhengGaiWenTi_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  207. // }
  208. // public void SetXJLE_Data()
  209. // {
  210. // B08_inspectType tempData = GlobalData.B08InspectType;
  211. // dianQiCountText.text = tempData.data[0].value.ToString();
  212. // zhaZhanCountText.text = tempData.data[1].value.ToString();
  213. // diFangCountText.text = tempData.data[2].value.ToString();
  214. // jiaoChaJianZhuCountText.text = tempData.data[3].value.ToString();
  215. // dingQiZhuanXiangCountText.text = tempData.data[4].value.ToString();
  216. // }
  217. public void CheckPathChange()
  218. {
  219. showCheckPath = !showCheckPath;
  220. //ActionInstance._Instance.SetCheckPathActive(showCheckPath);
  221. string textStr = showCheckPath ? "隐藏" : "显示";
  222. checkPathButtonText.text = $"巡检路线({textStr})";
  223. }
  224. // public void OpenTaskListPanel(int type)
  225. // {
  226. // taskListPanel.SetData(this,type);
  227. // TaskListPanelObj.SetActive(true);
  228. // }
  229. private B08_TaskLocation[] currentTaskLocation;
  230. private string taskTime;
  231. public void SetTaskImgPanelData(B08_TaskLocation[] itemsArray,string _time)
  232. {
  233. currentTaskLocation = itemsArray;
  234. taskTime = _time;
  235. //taskPhotoPanel.SetData(currentTaskItems[0],taskTime);
  236. taskPointLineRenderer.positionCount = 0;
  237. for (int i = 0; i < taskPointIcons.Count; i++)
  238. {
  239. Destroy(taskPointIcons[i].gameObject);
  240. }
  241. taskPointIcons.Clear();
  242. for (int i = 0; i < itemsArray.Length; i++)
  243. {
  244. if (itemsArray[i].longitude != null && itemsArray[i].latitude != null)
  245. {
  246. GameObject tempObj = Instantiate(taskPointIconPrefab, taskPointIconContent);
  247. tempObj.name = itemsArray[i].locationTypeName;
  248. Vector2 longlatt = CoordinateConverter.GCJ02ToWGS84(double.Parse(itemsArray[i].longitude),
  249. double.Parse(itemsArray[i].latitude));
  250. tempObj.transform.position = CoordinateConverter.GeoToUnity(longlatt.x, longlatt.y) + Vector3.up * 41;
  251. tempObj.gameObject.SetActive(false);
  252. taskPointIcons.Add(tempObj.GetComponent<TaskPointIcon>());
  253. }
  254. }
  255. //taskPointLineRenderer.positionCount = itemsArray.Length;
  256. float allDistance = 0;
  257. UnityEngine.Vector3 prePos = UnityEngine.Vector3.zero;
  258. List<UnityEngine.Vector3> vector3s = new List<UnityEngine.Vector3>();
  259. for (int i = 0; i < taskPointIcons.Count; i++)
  260. {
  261. vector3s.Add(taskPointIcons[i].transform.position);
  262. if (i != 0)
  263. {
  264. allDistance += UnityEngine.Vector3.Distance(taskPointIcons[i].transform.position, prePos);
  265. }
  266. else {
  267. CameraManager.instance.mainCamera.GetComponent<CameraBird>().target.transform.position = taskPointIcons[i].transform.position;
  268. }
  269. //taskPointLineRenderer.SetPosition(i, taskPointIcons[i].transform.position);
  270. prePos = taskPointIcons[i].transform.position;
  271. }
  272. taskPointLineRenderer.GetComponent<DynamicLine>().SetDynamicPoint(vector3s);
  273. taskPointLineRenderer.GetComponent<DynamicLine>().OnTouchIndex = (int index) =>
  274. {
  275. //Debug.Log(index);
  276. taskPointIcons[index].gameObject.SetActive(true);
  277. };
  278. }
  279. public void SetTaskPointIconHeightLight(int index)
  280. {
  281. for (int i = 0; i < taskPointIcons.Count; i++)
  282. {
  283. taskPointIcons[i].SetHeightLight(i == index);
  284. }
  285. }
  286. // public void OpenTaskImgPanel(int openPage)
  287. // {
  288. // taskPhotoPanel.SetData(currentTaskItems[openPage],taskTime);
  289. // taskPhotoPanel.ChangePage(0);
  290. // taskPhotoPanelObj.SetActive(true);
  291. // }
  292. }