GCYWLayer.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  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. private List<GameObject> WTZG_eventItems = new List<GameObject>();
  40. private Transform WTZG_eventItemContent;
  41. //巡检类型总计
  42. private Text dianQiCountText;
  43. private Text zhaZhanCountText;
  44. private Text diFangCountText;
  45. private Text jiaoChaJianZhuCountText;
  46. private Text dingQiZhuanXiangCountText;
  47. private Button dianQiButton;
  48. private Button zhaZhanButton;
  49. private Button diFangButton;
  50. private Button jianChaJianZhuButton;
  51. private Button diQiZhuanXiangButton;
  52. //工程管理
  53. private PieChart gongChengGuanLiChart;
  54. private PieChart fenJiKaoPingChart;
  55. private Text gongChengGuanLiChartCount;
  56. private Button checkPathButton;
  57. private Text checkPathButtonText;
  58. private bool showCheckPath = false;
  59. private Button BuYuanDataButton;
  60. private Button TaoKouDataButton;
  61. private CanvasGroup button_CG1;
  62. private CanvasGroup button_CG2;
  63. [FormerlySerializedAs("TaskListPanel")]
  64. public GameObject TaskListPanelObj;
  65. public TaskListPanel taskListPanel;
  66. public GameObject taskPhotoPanelObj;
  67. public TaskPhotoPanel taskPhotoPanel;
  68. public GameObject taskPointIconPrefab;
  69. public Transform taskPointIconContent;
  70. public List<TaskPointIcon> taskPointIcons = new List<TaskPointIcon>();
  71. public LineRenderer taskPointLineRenderer;
  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. BuYuanDataButton = this.transform.Find("BuYuanButton").GetComponent<Button>();
  127. button_CG1 = BuYuanDataButton.GetComponent<CanvasGroup>();
  128. BuYuanDataButton.onClick.AddListener(() => { ChangeData(0); });
  129. TaoKouDataButton = this.transform.Find("TaoKouButton").GetComponent<Button>();
  130. button_CG2 = TaoKouDataButton.GetComponent<CanvasGroup>();
  131. TaoKouDataButton.onClick.AddListener(() => { ChangeData(1); });
  132. }
  133. private async void ChangeData(int type)
  134. {
  135. //切换补元、套口数据
  136. StaticLod.instance.OnFoucusStatic(type);
  137. button_CG1.alpha = type == 0 ? 1.0f : 0.4f;
  138. button_CG2.alpha = type == 1 ? 1.0f : 0.4f;
  139. showCheckPath = false;
  140. string textStr = showCheckPath ? "隐藏" : "显示";
  141. checkPathButtonText.text = $"巡检路线({textStr})";
  142. if (GlobalData.B08_Type != type)
  143. {
  144. await HttpHelper._Instance.InitGCYWData1(type);
  145. }
  146. SetShuJuTongJiData();
  147. SetXunJianBarChart();
  148. SetGongChengGuanLiChart();
  149. SetTFSJ_Data();
  150. SetWTZG_Data();
  151. SetXJLE_Data();
  152. }
  153. private async void OnEnable()
  154. {
  155. TaskListPanelObj.SetActive(false);
  156. taskPhotoPanelObj.SetActive(false);
  157. ChangeData(0);
  158. }
  159. public void SetShuJuTongJiData()
  160. {
  161. B08_dataStatis tempData = GlobalData.B08DataStatis;
  162. _xunJianRenWuText.text = $"{tempData.data.inspectTask}";
  163. _xunJianRenCiText.text = $"{tempData.data.inspectTimes}";
  164. _quanBuGongChengText.text = $"{tempData.data.allProject}";
  165. _dangRiGongChengText.text = $"{tempData.data.warnProject}";
  166. _zhengChangYunXingText.text = $"{tempData.data.normalProject}";
  167. }
  168. public void SetXunJianBarChart()
  169. {
  170. B08_inspectResult tempData = GlobalData.B08InspectResult;
  171. var tempSeries = wenTiTongJiBarChart.series;
  172. SerieData[] tempDatas = new SerieData[tempData.data.question.Length];
  173. for (int i = 0; i < tempDatas.Length; i++)
  174. {
  175. tempDatas[i] = new SerieData();
  176. tempDatas[i].data = new List<double>();
  177. tempDatas[i].data.Add(i);
  178. tempDatas[i].data.Add(tempData.data.question[i].value);
  179. }
  180. tempSeries[0].data.Clear();
  181. tempSeries[0].data.AddRange(tempDatas);
  182. SerieData[] tempDatas_1 = new SerieData[tempData.data.events.Length];
  183. for (int i = 0; i < tempDatas_1.Length; i++)
  184. {
  185. tempDatas_1[i] = new SerieData();
  186. tempDatas_1[i].data = new List<double>();
  187. tempDatas_1[i].data.Add(i);
  188. tempDatas_1[i].data.Add(tempData.data.events[i].value);
  189. }
  190. tempSeries[1].data.Clear();
  191. tempSeries[1].data.AddRange(tempDatas_1);
  192. }
  193. public void SetGongChengGuanLiChart()
  194. {
  195. B08_projectExamine tempData = GlobalData.B08ProjectExamine;
  196. var tempSeries = gongChengGuanLiChart.series;
  197. int tempCount = 0;
  198. SerieData[] tempDatas = new SerieData[tempData.data.type1.Length];
  199. for (int i = 0; i < tempDatas.Length; i++)
  200. {
  201. tempDatas[i] = new SerieData();
  202. tempDatas[i].data = new List<double>();
  203. tempDatas[i].data.Add(i);
  204. tempDatas[i].data.Add(tempData.data.type1[i].value);
  205. tempDatas[i].name = tempData.data.type1[i].key;
  206. tempCount += tempData.data.type1[i].value;
  207. }
  208. tempSeries[0].data.Clear();
  209. tempSeries[0].data.AddRange(tempDatas);
  210. gongChengGuanLiChartCount.text = tempCount.ToString();
  211. var tempSeries_1 = fenJiKaoPingChart.series;
  212. SerieData[] tempDatas_1 = new SerieData[tempData.data.type2.Length];
  213. for (int i = 0; i < tempDatas_1.Length; i++)
  214. {
  215. tempDatas_1[i] = new SerieData();
  216. tempDatas_1[i].data = new List<double>();
  217. tempDatas_1[i].data.Add(i);
  218. tempDatas_1[i].data.Add(tempData.data.type2[i].value);
  219. tempDatas_1[i].name = tempData.data.type2[i].key;
  220. }
  221. tempSeries_1[0].data.Clear();
  222. tempSeries_1[0].data.AddRange(tempDatas_1);
  223. }
  224. public void SetTFSJ_Data()
  225. {
  226. B08_event tempData = GlobalData.B08Event;
  227. TFSJ_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  228. TFSJ_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  229. TFSJ_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  230. TFSJ_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  231. TFSJ_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  232. for (int i = 0; i < TFSJ_eventItems.Count; i++)
  233. {
  234. Destroy(TFSJ_eventItems[i]);
  235. }
  236. TFSJ_eventItems.Clear();
  237. for (int i = 0; i < tempData.data.list.Count; i++)
  238. {
  239. var tempObj = Instantiate(eventListItemPrefab, TFSJ_eventItemContent).GetComponent<B08_EventListItem>();
  240. tempObj.Init(tempData.data.list[i]);
  241. TFSJ_eventItems.Add(tempObj.gameObject);
  242. }
  243. _tuFaShiJian_Count_Text.text =
  244. $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  245. _tuFaShiJian_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  246. _tuFaShiJian_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  247. }
  248. public void SetWTZG_Data()
  249. {
  250. B08_questionStatis tempData = GlobalData.B08QuestionStatis;
  251. WTZG_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  252. WTZG_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  253. WTZG_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  254. WTZG_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  255. WTZG_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  256. for (int i = 0; i < WTZG_eventItems.Count; i++)
  257. {
  258. Destroy(WTZG_eventItems[i]);
  259. }
  260. WTZG_eventItems.Clear();
  261. for (int i = 0; i < tempData.data.list.Count; i++)
  262. {
  263. var tempObj = Instantiate(eventListItemPrefab, WTZG_eventItemContent).GetComponent<B08_EventListItem>();
  264. tempObj.Init(tempData.data.list[i]);
  265. WTZG_eventItems.Add(tempObj.gameObject);
  266. }
  267. _zhengGaiWenTi_Count_Text.text =
  268. $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  269. _zhengGaiWenTi_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  270. _zhengGaiWenTi_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  271. }
  272. public void SetXJLE_Data()
  273. {
  274. B08_inspectType tempData = GlobalData.B08InspectType;
  275. dianQiCountText.text = tempData.data[0].value.ToString();
  276. zhaZhanCountText.text = tempData.data[1].value.ToString();
  277. diFangCountText.text = tempData.data[2].value.ToString();
  278. jiaoChaJianZhuCountText.text = tempData.data[3].value.ToString();
  279. dingQiZhuanXiangCountText.text = tempData.data[4].value.ToString();
  280. }
  281. public void CheckPathChange()
  282. {
  283. showCheckPath = !showCheckPath;
  284. //ActionInstance._Instance.SetCheckPathActive(showCheckPath);
  285. string textStr = showCheckPath ? "隐藏" : "显示";
  286. checkPathButtonText.text = $"巡检路线({textStr})";
  287. }
  288. public void OpenTaskListPanel(int type)
  289. {
  290. taskListPanel.SetData(this);
  291. TaskListPanelObj.SetActive(true);
  292. }
  293. public void SetTaskImgPanelData(B08_TaskItems[] itemsArray)
  294. {
  295. taskPhotoPanel.SetData(itemsArray);
  296. taskPointLineRenderer.positionCount = 0;
  297. for (int i = 0; i < taskPointIcons.Count; i++)
  298. {
  299. Destroy(taskPointIcons[i].gameObject);
  300. }
  301. taskPointIcons.Clear();
  302. for (int i = 0; i < itemsArray.Length; i++)
  303. {
  304. GameObject tempObj = Instantiate(taskPointIconPrefab, taskPointIconContent);
  305. tempObj.name = itemsArray[i].item_id;
  306. tempObj.transform.position = CoordinateConverter.GeoToUnity(double.Parse(itemsArray[i].longitude),
  307. double.Parse(itemsArray[i].latitude));
  308. taskPointIcons.Add(tempObj.GetComponent<TaskPointIcon>());
  309. }
  310. taskPointLineRenderer.positionCount = itemsArray.Length;
  311. for (int i = 0; i < taskPointIcons.Count; i++)
  312. {
  313. taskPointLineRenderer.SetPosition(i, taskPointIcons[i].transform.position += Vector3.up * 50);
  314. }
  315. }
  316. public void SetTaskPointIconHeightLight(int index)
  317. {
  318. for (int i = 0; i < taskPointIcons.Count; i++)
  319. {
  320. taskPointIcons[i].SetHeightLight(i == index);
  321. }
  322. }
  323. public void OpenTaskImgPanel()
  324. {
  325. taskPhotoPanelObj.SetActive(true);
  326. }
  327. }