GCYWLayer.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using MPUIKIT;
  5. using Unity.VisualScripting;
  6. using UnityEngine;
  7. using UnityEngine.Serialization;
  8. using UnityEngine.UI;
  9. using XCharts.Runtime;
  10. public class GCYWLayer : YZTRootLayer
  11. {
  12. private Text _xunJianRenWuText;
  13. private Text _xunJianRenCiText;
  14. private Text _quanBuGongChengText;
  15. private Text _dangRiGongChengText;
  16. private Text _zhengChangYunXingText;
  17. // private Text _zhengGaiWenTi_Count_Text;
  18. // private Text _zhengGaiWenTi_Vlaue_Text;
  19. // private MPImage _zhengGaiWenTi_Slider;
  20. private Text _tuFaShiJian_Count_Text;
  21. private Text _tuFaShiJian_Vlaue_Text;
  22. private MPImage _tuFaShiJian_Slider;
  23. private BarChart wenTiTongJiBarChart;
  24. //突发事件总计
  25. private Text TFSJ_DaiChuLiNumTex;
  26. private Text TFSJ_DaiYanShouNumTex;
  27. private Text TFSJ_YiChuLiNumTex;
  28. private Text TFSJ_completeText;
  29. private MPImage TFSJ_completeSlider;
  30. public GameObject eventListItemPrefab;
  31. private List<GameObject> TFSJ_eventItems = new List<GameObject>();
  32. private Transform TFSJ_eventItemContent;
  33. //问题整改总计
  34. // private Text WTZG_DaiChuLiNumTex;
  35. // private Text WTZG_DaiYanShouNumTex;
  36. // private Text WTZG_YiChuLiNumTex;
  37. // private Text WTZG_completeText;
  38. // private MPImage WTZG_completeSlider;
  39. //
  40. // private List<GameObject> WTZG_eventItems = new List<GameObject>();
  41. // private Transform WTZG_eventItemContent;
  42. //巡检类型总计
  43. // private Text dianQiCountText;
  44. // private Text zhaZhanCountText;
  45. // private Text diFangCountText;
  46. // private Text jiaoChaJianZhuCountText;
  47. // private Text dingQiZhuanXiangCountText;
  48. // private Button dianQiButton;
  49. // private Button zhaZhanButton;
  50. // private Button diFangButton;
  51. // private Button jianChaJianZhuButton;
  52. // private Button diQiZhuanXiangButton;
  53. //工程管理
  54. private PieChart gongChengGuanLiChart;
  55. private PieChart fenJiKaoPingChart;
  56. private Text gongChengGuanLiChartCount;
  57. private Button checkPathButton;
  58. private Text checkPathButtonText;
  59. private bool showCheckPath = false;
  60. private Button BuYuanDataButton;
  61. private Button TaoKouDataButton;
  62. private CanvasGroup button_CG1;
  63. private CanvasGroup button_CG2;
  64. public TaskListPanel taskListPanel;
  65. //public GameObject taskPhotoPanelObj;
  66. //public TaskPhotoPanel taskPhotoPanel;
  67. public GameObject taskPointIconPrefab;
  68. public Transform taskPointIconContent;
  69. public List<TaskPointIcon> taskPointIcons = new List<TaskPointIcon>();
  70. public LineRenderer taskPointLineRenderer;
  71. //public Button closePanelBtn;
  72. private void Awake()
  73. {
  74. Init();
  75. }
  76. public void Init()
  77. {
  78. _xunJianRenWuText = this.transform.Find("ShuJuTongJi/XunJianRenWu/title/numText").GetComponent<Text>();
  79. _xunJianRenCiText = this.transform.Find("ShuJuTongJi/XunJianRenCi/title/numText").GetComponent<Text>();
  80. _quanBuGongChengText = this.transform.Find("ShuJuTongJi/QuanBuGongCheng/title/numText").GetComponent<Text>();
  81. _dangRiGongChengText = this.transform.Find("ShuJuTongJi/DangRiJingGao/title/numText").GetComponent<Text>();
  82. _zhengChangYunXingText =
  83. this.transform.Find("ShuJuTongJi/ZhengChangGongCheng/title/numText").GetComponent<Text>();
  84. // _zhengGaiWenTi_Count_Text = this.transform.Find("ShuJuTongJi/ZhengGaiWenTi/count/numText").GetComponent<Text>();
  85. // _zhengGaiWenTi_Vlaue_Text = this.transform.Find("ShuJuTongJi/ZhengGaiWenTi/value/numText").GetComponent<Text>();
  86. // _zhengGaiWenTi_Slider = this.transform.Find("ShuJuTongJi/ZhengGaiWenTi/slider").GetComponent<MPImage>();
  87. _tuFaShiJian_Count_Text = this.transform.Find("ShuJuTongJi/TuFaShiJian/count/numText").GetComponent<Text>();
  88. _tuFaShiJian_Vlaue_Text = this.transform.Find("ShuJuTongJi/TuFaShiJian/value/numText").GetComponent<Text>();
  89. _tuFaShiJian_Slider = this.transform.Find("ShuJuTongJi/TuFaShiJian/slider").GetComponent<MPImage>();
  90. wenTiTongJiBarChart = this.transform.Find("ShuJuTongJi/XunJianTongJi/BarChart").GetComponent<BarChart>();
  91. gongChengGuanLiChart = this.transform.Find("GongChengGuanLi/GuanLiJianCha").GetComponent<PieChart>();
  92. gongChengGuanLiChartCount =
  93. this.transform.Find("GongChengGuanLi/GuanLiJianCha/count/numText").GetComponent<Text>();
  94. fenJiKaoPingChart = this.transform.Find("GongChengGuanLi/FenJiKaoPing").GetComponent<PieChart>();
  95. TFSJ_DaiChuLiNumTex = this.transform.Find("TuFaShiJian/DaiChuLi/count").GetComponent<Text>();
  96. TFSJ_DaiYanShouNumTex = this.transform.Find("TuFaShiJian/DaiYanShou/count").GetComponent<Text>();
  97. TFSJ_YiChuLiNumTex = this.transform.Find("TuFaShiJian/YiChuLi/count").GetComponent<Text>();
  98. TFSJ_completeText = this.transform.Find("TuFaShiJian/completeText/numText").GetComponent<Text>();
  99. TFSJ_completeSlider = this.transform.Find("TuFaShiJian/slider").GetComponent<MPImage>();
  100. TFSJ_eventItemContent = this.transform.Find("TuFaShiJian/TuFaShiJianTongBao/ScrollView/Viewport/Content");
  101. // WTZG_DaiChuLiNumTex = this.transform.Find("ZhengGaiWenTi/DaiZhengGai/count").GetComponent<Text>();
  102. // WTZG_DaiYanShouNumTex = this.transform.Find("ZhengGaiWenTi/DaiYanShou/count").GetComponent<Text>();
  103. // WTZG_YiChuLiNumTex = this.transform.Find("ZhengGaiWenTi/YiZhengGai/count").GetComponent<Text>();
  104. // WTZG_completeText = this.transform.Find("ZhengGaiWenTi/completeText/numText").GetComponent<Text>();
  105. // WTZG_completeSlider = this.transform.Find("ZhengGaiWenTi/slider").GetComponent<MPImage>();
  106. // WTZG_eventItemContent = this.transform.Find("ZhengGaiWenTi/ZhengGaiTongBao/ScrollView/Viewport/Content");
  107. // dianQiCountText = this.transform.Find("XunJianLeiXingZongJi/DianQi/count").GetComponent<Text>();
  108. // zhaZhanCountText = this.transform.Find("XunJianLeiXingZongJi/ZhaZhan/count").GetComponent<Text>();
  109. // diFangCountText = this.transform.Find("XunJianLeiXingZongJi/DiFang/count").GetComponent<Text>();
  110. // jiaoChaJianZhuCountText = this.transform.Find("XunJianLeiXingZongJi/JiaoChaJianZhu/count").GetComponent<Text>();
  111. // dingQiZhuanXiangCountText =
  112. // this.transform.Find("XunJianLeiXingZongJi/DingQiZhuanXiang/count").GetComponent<Text>();
  113. // dianQiButton = dianQiCountText.transform.parent.GetComponent<Button>();
  114. // zhaZhanButton = zhaZhanCountText.transform.parent.GetComponent<Button>();
  115. // diFangButton = diFangCountText.transform.parent.GetComponent<Button>();
  116. // jianChaJianZhuButton = jiaoChaJianZhuCountText.transform.parent.GetComponent<Button>();
  117. // diQiZhuanXiangButton = dingQiZhuanXiangCountText.transform.parent.GetComponent<Button>();
  118. // dianQiButton.onClick.AddListener(() => OpenTaskListPanel(0));
  119. // zhaZhanButton.onClick.AddListener(() => OpenTaskListPanel(1));
  120. // diFangButton.onClick.AddListener(() => OpenTaskListPanel(2));
  121. // jianChaJianZhuButton.onClick.AddListener(() => OpenTaskListPanel(3));
  122. // diQiZhuanXiangButton.onClick.AddListener(() => OpenTaskListPanel(4));
  123. checkPathButton = this.transform.Find("CheckPathButton").GetComponent<Button>();
  124. checkPathButtonText = checkPathButton.GetComponentInChildren<Text>();
  125. checkPathButton.onClick.AddListener(CheckPathChange);
  126. TaoKouDataButton = this.transform.Find("TaoKouButton").GetComponent<Button>();
  127. button_CG2 = TaoKouDataButton.GetComponent<CanvasGroup>();
  128. TaoKouDataButton.onClick.AddListener(() => { ChangeData(1); });
  129. BuYuanDataButton = this.transform.Find("BuYuanButton").GetComponent<Button>();
  130. button_CG1 = BuYuanDataButton.GetComponent<CanvasGroup>();
  131. BuYuanDataButton.onClick.AddListener(() => { ChangeData(0); });
  132. // closePanelBtn.onClick.AddListener(() =>
  133. // {
  134. // taskListPanel.gameObject.SetActive(false);
  135. // taskPointLineRenderer.positionCount = 0;
  136. // for (int i = 0; i < taskPointIcons.Count; i++)
  137. // {
  138. // Destroy(taskPointIcons[i].gameObject);
  139. // }
  140. //
  141. // taskPointIcons.Clear();
  142. // });
  143. }
  144. private async void ChangeData(int type)
  145. {
  146. //切换补元、套口数据
  147. StaticLod.instance.OnFoucusStatic(type);
  148. button_CG1.alpha = type == 0 ? 1.0f : 0.4f;
  149. button_CG2.alpha = type == 1 ? 1.0f : 0.4f;
  150. showCheckPath = false;
  151. string textStr = showCheckPath ? "隐藏" : "显示";
  152. checkPathButtonText.text = $"巡检路线({textStr})";
  153. if (GlobalData.B08_Type != type)
  154. {
  155. await HttpHelper._Instance.InitGCYWData1(type);
  156. }
  157. SetShuJuTongJiData();
  158. SetXunJianBarChart();
  159. SetGongChengGuanLiChart();
  160. SetTFSJ_Data();
  161. await HttpHelper._Instance.B08_GetTaskList();
  162. taskListPanel.SetData(this);
  163. //SetWTZG_Data();
  164. //SetXJLE_Data();
  165. //TaskListPanelObj.SetActive(false);
  166. //taskPhotoPanelObj.SetActive(false);
  167. }
  168. private async void OnEnable()
  169. {
  170. ChangeData(1);
  171. }
  172. public void SetShuJuTongJiData()
  173. {
  174. B08_dataStatis tempData = GlobalData.B08DataStatis;
  175. _xunJianRenWuText.text = $"{tempData.data.inspectTask}";
  176. _xunJianRenCiText.text = $"{tempData.data.inspectTimes}";
  177. _quanBuGongChengText.text = $"{tempData.data.allProject}";
  178. _dangRiGongChengText.text = $"{tempData.data.warnProject}";
  179. _zhengChangYunXingText.text = $"{tempData.data.normalProject}";
  180. }
  181. public void SetXunJianBarChart()
  182. {
  183. B08_inspectResult tempData = GlobalData.B08InspectResult;
  184. var tempSeries = wenTiTongJiBarChart.series;
  185. SerieData[] tempDatas = new SerieData[tempData.data.question.Length];
  186. for (int i = 0; i < tempDatas.Length; i++)
  187. {
  188. tempDatas[i] = new SerieData();
  189. tempDatas[i].data = new List<double>();
  190. tempDatas[i].data.Add(i);
  191. tempDatas[i].data.Add(tempData.data.question[i].value);
  192. }
  193. tempSeries[0].data.Clear();
  194. tempSeries[0].data.AddRange(tempDatas);
  195. SerieData[] tempDatas_1 = new SerieData[tempData.data.events.Length];
  196. for (int i = 0; i < tempDatas_1.Length; i++)
  197. {
  198. tempDatas_1[i] = new SerieData();
  199. tempDatas_1[i].data = new List<double>();
  200. tempDatas_1[i].data.Add(i);
  201. tempDatas_1[i].data.Add(tempData.data.events[i].value);
  202. }
  203. tempSeries[1].data.Clear();
  204. tempSeries[1].data.AddRange(tempDatas_1);
  205. }
  206. public void SetGongChengGuanLiChart()
  207. {
  208. B08_projectExamine tempData = GlobalData.B08ProjectExamine;
  209. var tempSeries = gongChengGuanLiChart.series;
  210. int tempCount = 0;
  211. SerieData[] tempDatas = new SerieData[tempData.data.type1.Length];
  212. for (int i = 0; i < tempDatas.Length; i++)
  213. {
  214. tempDatas[i] = new SerieData();
  215. tempDatas[i].data = new List<double>();
  216. tempDatas[i].data.Add(i);
  217. tempDatas[i].data.Add(tempData.data.type1[i].value);
  218. tempDatas[i].name = tempData.data.type1[i].key;
  219. tempCount += tempData.data.type1[i].value;
  220. }
  221. tempSeries[0].data.Clear();
  222. tempSeries[0].data.AddRange(tempDatas);
  223. gongChengGuanLiChartCount.text = tempCount.ToString();
  224. var tempSeries_1 = fenJiKaoPingChart.series;
  225. SerieData[] tempDatas_1 = new SerieData[tempData.data.type2.Length];
  226. for (int i = 0; i < tempDatas_1.Length; i++)
  227. {
  228. tempDatas_1[i] = new SerieData();
  229. tempDatas_1[i].data = new List<double>();
  230. tempDatas_1[i].data.Add(i);
  231. tempDatas_1[i].data.Add(tempData.data.type2[i].value);
  232. tempDatas_1[i].name = tempData.data.type2[i].key;
  233. }
  234. tempSeries_1[0].data.Clear();
  235. tempSeries_1[0].data.AddRange(tempDatas_1);
  236. }
  237. public void SetTFSJ_Data()
  238. {
  239. B08_event tempData = GlobalData.B08Event;
  240. TFSJ_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  241. TFSJ_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  242. TFSJ_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  243. TFSJ_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  244. TFSJ_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  245. for (int i = 0; i < TFSJ_eventItems.Count; i++)
  246. {
  247. Destroy(TFSJ_eventItems[i]);
  248. }
  249. TFSJ_eventItems.Clear();
  250. for (int i = 0; i < tempData.data.list.Count; i++)
  251. {
  252. var tempObj = Instantiate(eventListItemPrefab, TFSJ_eventItemContent).GetComponent<B08_EventListItem>();
  253. tempObj.Init(tempData.data.list[i]);
  254. TFSJ_eventItems.Add(tempObj.gameObject);
  255. }
  256. _tuFaShiJian_Count_Text.text =
  257. $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  258. _tuFaShiJian_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  259. _tuFaShiJian_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  260. }
  261. // public void SetWTZG_Data()
  262. // {
  263. // B08_questionStatis tempData = GlobalData.B08QuestionStatis;
  264. // WTZG_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  265. // WTZG_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  266. // WTZG_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  267. // WTZG_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  268. // WTZG_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  269. //
  270. // for (int i = 0; i < WTZG_eventItems.Count; i++)
  271. // {
  272. // Destroy(WTZG_eventItems[i]);
  273. // }
  274. //
  275. // WTZG_eventItems.Clear();
  276. // for (int i = 0; i < tempData.data.list.Count; i++)
  277. // {
  278. // var tempObj = Instantiate(eventListItemPrefab, WTZG_eventItemContent).GetComponent<B08_EventListItem>();
  279. // tempObj.Init(tempData.data.list[i]);
  280. // WTZG_eventItems.Add(tempObj.gameObject);
  281. // }
  282. //
  283. // _zhengGaiWenTi_Count_Text.text =
  284. // $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  285. // _zhengGaiWenTi_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  286. // _zhengGaiWenTi_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  287. // }
  288. // public void SetXJLE_Data()
  289. // {
  290. // B08_inspectType tempData = GlobalData.B08InspectType;
  291. // dianQiCountText.text = tempData.data[0].value.ToString();
  292. // zhaZhanCountText.text = tempData.data[1].value.ToString();
  293. // diFangCountText.text = tempData.data[2].value.ToString();
  294. // jiaoChaJianZhuCountText.text = tempData.data[3].value.ToString();
  295. // dingQiZhuanXiangCountText.text = tempData.data[4].value.ToString();
  296. // }
  297. public void CheckPathChange()
  298. {
  299. showCheckPath = !showCheckPath;
  300. //ActionInstance._Instance.SetCheckPathActive(showCheckPath);
  301. string textStr = showCheckPath ? "隐藏" : "显示";
  302. checkPathButtonText.text = $"巡检路线({textStr})";
  303. }
  304. // public void OpenTaskListPanel(int type)
  305. // {
  306. // taskListPanel.SetData(this,type);
  307. // TaskListPanelObj.SetActive(true);
  308. // }
  309. private B08_TaskLocation[] currentTaskLocation;
  310. private string taskTime;
  311. public void SetTaskImgPanelData(B08_TaskLocation[] itemsArray,string _time)
  312. {
  313. currentTaskLocation = itemsArray;
  314. taskTime = _time;
  315. //taskPhotoPanel.SetData(currentTaskItems[0],taskTime);
  316. taskPointLineRenderer.positionCount = 0;
  317. for (int i = 0; i < taskPointIcons.Count; i++)
  318. {
  319. Destroy(taskPointIcons[i].gameObject);
  320. }
  321. taskPointIcons.Clear();
  322. for (int i = 0; i < itemsArray.Length; i++)
  323. {
  324. if (itemsArray[i].longitude != null && itemsArray[i].latitude != null)
  325. {
  326. GameObject tempObj = Instantiate(taskPointIconPrefab, taskPointIconContent);
  327. tempObj.name = itemsArray[i].locationTypeName;
  328. Vector2 longlatt = CoordinateConverter.GCJ02ToWGS84(double.Parse(itemsArray[i].longitude),
  329. double.Parse(itemsArray[i].latitude));
  330. tempObj.transform.position = CoordinateConverter.GeoToUnity(longlatt.x, longlatt.y) + Vector3.up * 41;
  331. tempObj.gameObject.SetActive(false);
  332. taskPointIcons.Add(tempObj.GetComponent<TaskPointIcon>());
  333. }
  334. }
  335. //taskPointLineRenderer.positionCount = itemsArray.Length;
  336. float allDistance = 0;
  337. UnityEngine.Vector3 prePos = UnityEngine.Vector3.zero;
  338. List<UnityEngine.Vector3> vector3s = new List<UnityEngine.Vector3>();
  339. for (int i = 0; i < taskPointIcons.Count; i++)
  340. {
  341. vector3s.Add(taskPointIcons[i].transform.position);
  342. if (i != 0)
  343. {
  344. allDistance += UnityEngine.Vector3.Distance(taskPointIcons[i].transform.position, prePos);
  345. }
  346. else {
  347. CameraManager.instance.mainCamera.GetComponent<CameraBird>().target.transform.position = taskPointIcons[i].transform.position;
  348. }
  349. //taskPointLineRenderer.SetPosition(i, taskPointIcons[i].transform.position);
  350. prePos = taskPointIcons[i].transform.position;
  351. }
  352. taskPointLineRenderer.GetComponent<DynamicLine>().SetDynamicPoint(vector3s);
  353. taskPointLineRenderer.GetComponent<DynamicLine>().OnTouchIndex = (int index) =>
  354. {
  355. //Debug.Log(index);
  356. taskPointIcons[index].gameObject.SetActive(true);
  357. };
  358. }
  359. public void SetTaskPointIconHeightLight(int index)
  360. {
  361. for (int i = 0; i < taskPointIcons.Count; i++)
  362. {
  363. taskPointIcons[i].SetHeightLight(i == index);
  364. }
  365. }
  366. // public void OpenTaskImgPanel(int openPage)
  367. // {
  368. // taskPhotoPanel.SetData(currentTaskItems[openPage],taskTime);
  369. // taskPhotoPanel.ChangePage(0);
  370. // taskPhotoPanelObj.SetActive(true);
  371. // }
  372. }