GCYWLayer.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  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. public Button closePanelBtn;
  73. private void Awake()
  74. {
  75. Init();
  76. }
  77. public void Init()
  78. {
  79. _xunJianRenWuText = this.transform.Find("ShuJuTongJi/XunJianRenWu/title/numText").GetComponent<Text>();
  80. _xunJianRenCiText = this.transform.Find("ShuJuTongJi/XunJianRenCi/title/numText").GetComponent<Text>();
  81. _quanBuGongChengText = this.transform.Find("ShuJuTongJi/QuanBuGongCheng/title/numText").GetComponent<Text>();
  82. _dangRiGongChengText = this.transform.Find("ShuJuTongJi/DangRiJingGao/title/numText").GetComponent<Text>();
  83. _zhengChangYunXingText =
  84. this.transform.Find("ShuJuTongJi/ZhengChangGongCheng/title/numText").GetComponent<Text>();
  85. _zhengGaiWenTi_Count_Text = this.transform.Find("ShuJuTongJi/ZhengGaiWenTi/count/numText").GetComponent<Text>();
  86. _zhengGaiWenTi_Vlaue_Text = this.transform.Find("ShuJuTongJi/ZhengGaiWenTi/value/numText").GetComponent<Text>();
  87. _zhengGaiWenTi_Slider = this.transform.Find("ShuJuTongJi/ZhengGaiWenTi/slider").GetComponent<MPImage>();
  88. _tuFaShiJian_Count_Text = this.transform.Find("ShuJuTongJi/TuFaShiJian/count/numText").GetComponent<Text>();
  89. _tuFaShiJian_Vlaue_Text = this.transform.Find("ShuJuTongJi/TuFaShiJian/value/numText").GetComponent<Text>();
  90. _tuFaShiJian_Slider = this.transform.Find("ShuJuTongJi/TuFaShiJian/slider").GetComponent<MPImage>();
  91. wenTiTongJiBarChart = this.transform.Find("ShuJuTongJi/XunJianTongJi/BarChart").GetComponent<BarChart>();
  92. gongChengGuanLiChart = this.transform.Find("GongChengGuanLi/GuanLiJianCha").GetComponent<PieChart>();
  93. gongChengGuanLiChartCount =
  94. this.transform.Find("GongChengGuanLi/GuanLiJianCha/count/numText").GetComponent<Text>();
  95. fenJiKaoPingChart = this.transform.Find("GongChengGuanLi/FenJiKaoPing").GetComponent<PieChart>();
  96. TFSJ_DaiChuLiNumTex = this.transform.Find("TuFaShiJian/DaiChuLi/count").GetComponent<Text>();
  97. TFSJ_DaiYanShouNumTex = this.transform.Find("TuFaShiJian/DaiYanShou/count").GetComponent<Text>();
  98. TFSJ_YiChuLiNumTex = this.transform.Find("TuFaShiJian/YiChuLi/count").GetComponent<Text>();
  99. TFSJ_completeText = this.transform.Find("TuFaShiJian/completeText/numText").GetComponent<Text>();
  100. TFSJ_completeSlider = this.transform.Find("TuFaShiJian/slider").GetComponent<MPImage>();
  101. TFSJ_eventItemContent = this.transform.Find("TuFaShiJian/TuFaShiJianTongBao/ScrollView/Viewport/Content");
  102. WTZG_DaiChuLiNumTex = this.transform.Find("ZhengGaiWenTi/DaiZhengGai/count").GetComponent<Text>();
  103. WTZG_DaiYanShouNumTex = this.transform.Find("ZhengGaiWenTi/DaiYanShou/count").GetComponent<Text>();
  104. WTZG_YiChuLiNumTex = this.transform.Find("ZhengGaiWenTi/YiZhengGai/count").GetComponent<Text>();
  105. WTZG_completeText = this.transform.Find("ZhengGaiWenTi/completeText/numText").GetComponent<Text>();
  106. WTZG_completeSlider = this.transform.Find("ZhengGaiWenTi/slider").GetComponent<MPImage>();
  107. WTZG_eventItemContent = this.transform.Find("ZhengGaiWenTi/ZhengGaiTongBao/ScrollView/Viewport/Content");
  108. dianQiCountText = this.transform.Find("XunJianLeiXingZongJi/DianQi/count").GetComponent<Text>();
  109. zhaZhanCountText = this.transform.Find("XunJianLeiXingZongJi/ZhaZhan/count").GetComponent<Text>();
  110. diFangCountText = this.transform.Find("XunJianLeiXingZongJi/DiFang/count").GetComponent<Text>();
  111. jiaoChaJianZhuCountText = this.transform.Find("XunJianLeiXingZongJi/JiaoChaJianZhu/count").GetComponent<Text>();
  112. dingQiZhuanXiangCountText =
  113. this.transform.Find("XunJianLeiXingZongJi/DingQiZhuanXiang/count").GetComponent<Text>();
  114. dianQiButton = dianQiCountText.transform.parent.GetComponent<Button>();
  115. zhaZhanButton = zhaZhanCountText.transform.parent.GetComponent<Button>();
  116. diFangButton = diFangCountText.transform.parent.GetComponent<Button>();
  117. jianChaJianZhuButton = jiaoChaJianZhuCountText.transform.parent.GetComponent<Button>();
  118. diQiZhuanXiangButton = dingQiZhuanXiangCountText.transform.parent.GetComponent<Button>();
  119. dianQiButton.onClick.AddListener(() => OpenTaskListPanel(0));
  120. zhaZhanButton.onClick.AddListener(() => OpenTaskListPanel(1));
  121. diFangButton.onClick.AddListener(() => OpenTaskListPanel(2));
  122. jianChaJianZhuButton.onClick.AddListener(() => OpenTaskListPanel(3));
  123. diQiZhuanXiangButton.onClick.AddListener(() => OpenTaskListPanel(4));
  124. checkPathButton = this.transform.Find("CheckPathButton").GetComponent<Button>();
  125. checkPathButtonText = checkPathButton.GetComponentInChildren<Text>();
  126. checkPathButton.onClick.AddListener(CheckPathChange);
  127. BuYuanDataButton = this.transform.Find("BuYuanButton").GetComponent<Button>();
  128. button_CG1 = BuYuanDataButton.GetComponent<CanvasGroup>();
  129. BuYuanDataButton.onClick.AddListener(() => { ChangeData(0); });
  130. TaoKouDataButton = this.transform.Find("TaoKouButton").GetComponent<Button>();
  131. button_CG2 = TaoKouDataButton.GetComponent<CanvasGroup>();
  132. TaoKouDataButton.onClick.AddListener(() => { ChangeData(1); });
  133. closePanelBtn.onClick.AddListener(() =>
  134. {
  135. taskListPanel.gameObject.SetActive(false);
  136. taskPointLineRenderer.positionCount = 0;
  137. for (int i = 0; i < taskPointIcons.Count; i++)
  138. {
  139. Destroy(taskPointIcons[i].gameObject);
  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. SetWTZG_Data();
  162. SetXJLE_Data();
  163. TaskListPanelObj.SetActive(false);
  164. taskPhotoPanelObj.SetActive(false);
  165. }
  166. private async void OnEnable()
  167. {
  168. ChangeData(0);
  169. }
  170. public void SetShuJuTongJiData()
  171. {
  172. B08_dataStatis tempData = GlobalData.B08DataStatis;
  173. _xunJianRenWuText.text = $"{tempData.data.inspectTask}";
  174. _xunJianRenCiText.text = $"{tempData.data.inspectTimes}";
  175. _quanBuGongChengText.text = $"{tempData.data.allProject}";
  176. _dangRiGongChengText.text = $"{tempData.data.warnProject}";
  177. _zhengChangYunXingText.text = $"{tempData.data.normalProject}";
  178. }
  179. public void SetXunJianBarChart()
  180. {
  181. B08_inspectResult tempData = GlobalData.B08InspectResult;
  182. var tempSeries = wenTiTongJiBarChart.series;
  183. SerieData[] tempDatas = new SerieData[tempData.data.question.Length];
  184. for (int i = 0; i < tempDatas.Length; i++)
  185. {
  186. tempDatas[i] = new SerieData();
  187. tempDatas[i].data = new List<double>();
  188. tempDatas[i].data.Add(i);
  189. tempDatas[i].data.Add(tempData.data.question[i].value);
  190. }
  191. tempSeries[0].data.Clear();
  192. tempSeries[0].data.AddRange(tempDatas);
  193. SerieData[] tempDatas_1 = new SerieData[tempData.data.events.Length];
  194. for (int i = 0; i < tempDatas_1.Length; i++)
  195. {
  196. tempDatas_1[i] = new SerieData();
  197. tempDatas_1[i].data = new List<double>();
  198. tempDatas_1[i].data.Add(i);
  199. tempDatas_1[i].data.Add(tempData.data.events[i].value);
  200. }
  201. tempSeries[1].data.Clear();
  202. tempSeries[1].data.AddRange(tempDatas_1);
  203. }
  204. public void SetGongChengGuanLiChart()
  205. {
  206. B08_projectExamine tempData = GlobalData.B08ProjectExamine;
  207. var tempSeries = gongChengGuanLiChart.series;
  208. int tempCount = 0;
  209. SerieData[] tempDatas = new SerieData[tempData.data.type1.Length];
  210. for (int i = 0; i < tempDatas.Length; i++)
  211. {
  212. tempDatas[i] = new SerieData();
  213. tempDatas[i].data = new List<double>();
  214. tempDatas[i].data.Add(i);
  215. tempDatas[i].data.Add(tempData.data.type1[i].value);
  216. tempDatas[i].name = tempData.data.type1[i].key;
  217. tempCount += tempData.data.type1[i].value;
  218. }
  219. tempSeries[0].data.Clear();
  220. tempSeries[0].data.AddRange(tempDatas);
  221. gongChengGuanLiChartCount.text = tempCount.ToString();
  222. var tempSeries_1 = fenJiKaoPingChart.series;
  223. SerieData[] tempDatas_1 = new SerieData[tempData.data.type2.Length];
  224. for (int i = 0; i < tempDatas_1.Length; i++)
  225. {
  226. tempDatas_1[i] = new SerieData();
  227. tempDatas_1[i].data = new List<double>();
  228. tempDatas_1[i].data.Add(i);
  229. tempDatas_1[i].data.Add(tempData.data.type2[i].value);
  230. tempDatas_1[i].name = tempData.data.type2[i].key;
  231. }
  232. tempSeries_1[0].data.Clear();
  233. tempSeries_1[0].data.AddRange(tempDatas_1);
  234. }
  235. public void SetTFSJ_Data()
  236. {
  237. B08_event tempData = GlobalData.B08Event;
  238. TFSJ_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  239. TFSJ_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  240. TFSJ_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  241. TFSJ_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  242. TFSJ_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  243. for (int i = 0; i < TFSJ_eventItems.Count; i++)
  244. {
  245. Destroy(TFSJ_eventItems[i]);
  246. }
  247. TFSJ_eventItems.Clear();
  248. for (int i = 0; i < tempData.data.list.Count; i++)
  249. {
  250. var tempObj = Instantiate(eventListItemPrefab, TFSJ_eventItemContent).GetComponent<B08_EventListItem>();
  251. tempObj.Init(tempData.data.list[i]);
  252. TFSJ_eventItems.Add(tempObj.gameObject);
  253. }
  254. _tuFaShiJian_Count_Text.text =
  255. $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  256. _tuFaShiJian_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  257. _tuFaShiJian_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  258. }
  259. public void SetWTZG_Data()
  260. {
  261. B08_questionStatis tempData = GlobalData.B08QuestionStatis;
  262. WTZG_DaiChuLiNumTex.text = tempData.data.waitHandle.ToString();
  263. WTZG_DaiYanShouNumTex.text = tempData.data.waitAccept.ToString();
  264. WTZG_YiChuLiNumTex.text = tempData.data.hasHandle.ToString();
  265. WTZG_completeText.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  266. WTZG_completeSlider.fillAmount = float.Parse(tempData.data.completeRate);
  267. for (int i = 0; i < WTZG_eventItems.Count; i++)
  268. {
  269. Destroy(WTZG_eventItems[i]);
  270. }
  271. WTZG_eventItems.Clear();
  272. for (int i = 0; i < tempData.data.list.Count; i++)
  273. {
  274. var tempObj = Instantiate(eventListItemPrefab, WTZG_eventItemContent).GetComponent<B08_EventListItem>();
  275. tempObj.Init(tempData.data.list[i]);
  276. WTZG_eventItems.Add(tempObj.gameObject);
  277. }
  278. _zhengGaiWenTi_Count_Text.text =
  279. $"{tempData.data.waitHandle + tempData.data.waitAccept + tempData.data.hasHandle}";
  280. _zhengGaiWenTi_Vlaue_Text.text = $"{float.Parse(tempData.data.completeRate) * 100.0f:0}%";
  281. _zhengGaiWenTi_Slider.fillAmount = float.Parse(tempData.data.completeRate);
  282. }
  283. public void SetXJLE_Data()
  284. {
  285. B08_inspectType tempData = GlobalData.B08InspectType;
  286. dianQiCountText.text = tempData.data[0].value.ToString();
  287. zhaZhanCountText.text = tempData.data[1].value.ToString();
  288. diFangCountText.text = tempData.data[2].value.ToString();
  289. jiaoChaJianZhuCountText.text = tempData.data[3].value.ToString();
  290. dingQiZhuanXiangCountText.text = tempData.data[4].value.ToString();
  291. }
  292. public void CheckPathChange()
  293. {
  294. showCheckPath = !showCheckPath;
  295. //ActionInstance._Instance.SetCheckPathActive(showCheckPath);
  296. string textStr = showCheckPath ? "隐藏" : "显示";
  297. checkPathButtonText.text = $"巡检路线({textStr})";
  298. }
  299. public void OpenTaskListPanel(int type)
  300. {
  301. taskListPanel.SetData(this);
  302. TaskListPanelObj.SetActive(true);
  303. }
  304. public void SetTaskImgPanelData(B08_TaskItems[] itemsArray)
  305. {
  306. taskPhotoPanel.SetData(itemsArray);
  307. taskPointLineRenderer.positionCount = 0;
  308. for (int i = 0; i < taskPointIcons.Count; i++)
  309. {
  310. Destroy(taskPointIcons[i].gameObject);
  311. }
  312. taskPointIcons.Clear();
  313. for (int i = 0; i < itemsArray.Length; i++)
  314. {
  315. GameObject tempObj = Instantiate(taskPointIconPrefab, taskPointIconContent);
  316. tempObj.name = itemsArray[i].item_id;
  317. tempObj.transform.position = CoordinateConverter.GeoToUnity(double.Parse(itemsArray[i].longitude),
  318. double.Parse(itemsArray[i].latitude));
  319. taskPointIcons.Add(tempObj.GetComponent<TaskPointIcon>());
  320. }
  321. taskPointLineRenderer.positionCount = itemsArray.Length;
  322. for (int i = 0; i < taskPointIcons.Count; i++)
  323. {
  324. taskPointLineRenderer.SetPosition(i, taskPointIcons[i].transform.position += Vector3.up * 41);
  325. }
  326. }
  327. public void SetTaskPointIconHeightLight(int index)
  328. {
  329. for (int i = 0; i < taskPointIcons.Count; i++)
  330. {
  331. taskPointIcons[i].SetHeightLight(i == index);
  332. }
  333. }
  334. public void OpenTaskImgPanel()
  335. {
  336. taskPhotoPanelObj.SetActive(true);
  337. }
  338. }