BianDianZhanProxy.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System.IO;
  5. using System.Linq;
  6. using UnityEditor;
  7. using System;
  8. public class BianDianZhanProxy : DataProxy
  9. {
  10. List<StepInfo> StepInfos;
  11. public override void OnRegister()
  12. {
  13. InitData();
  14. }
  15. public void InitData()
  16. {
  17. //表格读取
  18. string path = Application.streamingAssetsPath + "/Config/变电站巡视.csv";
  19. StepInfos = ReadOperationFromTable(path);
  20. }
  21. /// <summary>
  22. /// 获取所有步骤信息
  23. /// </summary>
  24. /// <returns></returns>
  25. public List<StepInfo> GetStepInfos()
  26. {
  27. return StepInfos;
  28. }
  29. /// <summary>
  30. /// 通过ID获取步骤信息
  31. /// </summary>
  32. /// <returns></returns>
  33. public StepInfo GetStepInfoById(int id)
  34. {
  35. return StepInfos.Find(stepInfo => stepInfo.id == id);
  36. }
  37. public override void OnRemove()
  38. {
  39. }
  40. /// <summary>
  41. /// 从表格读取流程信息
  42. /// </summary>
  43. /// <param name="path"></param>
  44. /// <returns></returns>
  45. private List<StepInfo> ReadOperationFromTable(string path)
  46. {
  47. List<StepInfo> tmpInfos = new List<StepInfo>();
  48. using (StreamReader streamReader = new StreamReader(path, System.Text.Encoding.UTF8))
  49. {
  50. string tmpStepInfo = streamReader.ReadToEnd();
  51. if (tmpStepInfo.Contains("\r")) tmpStepInfo = tmpStepInfo.Replace("\r", "");
  52. string[] tempStepInfos = tmpStepInfo.Split('\n');
  53. for (int i = 1; i < tempStepInfos.Length; i++)
  54. {
  55. string operationInfo = tempStepInfos[i];
  56. string[] operationInfoElements = operationInfo.Split(',');
  57. StepInfo tmpInfo = new StepInfo();
  58. for (int j = 0; j < operationInfoElements.Length; j++)
  59. {
  60. if (j == 0) tmpInfo.id = int.Parse( operationInfoElements[0]);
  61. if (j == 1) tmpInfo.stepName = operationInfoElements[1];
  62. if (j == 2) tmpInfo.stepDesctiption = operationInfoElements[2];
  63. if (j == 3) tmpInfo.stepScore = float.Parse(operationInfoElements[3]);
  64. }
  65. tmpInfos.Add(tmpInfo);
  66. }
  67. }
  68. return tmpInfos;
  69. }
  70. /// <summary>
  71. /// 将Operation信息写入到表格中
  72. /// </summary>
  73. public void WriteOprationInfoToTable(List<StepInfo> _infos, string _path)
  74. {
  75. using (FileStream fs = new FileStream(_path, FileMode.Create))
  76. {
  77. using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
  78. {
  79. sw.WriteLine("id" + "," + "StepName" + "," + "StepDescription" + "," + "StepScore");
  80. for (int i = 0; i < _infos.Count; i++)
  81. {
  82. string operationInfo = _infos[i].id + "," + _infos[i].stepName + "," + _infos[i].stepDesctiption + "," + _infos[i].stepScore;
  83. operationInfo = RemoveLineEndings(operationInfo);
  84. if (i == _infos.Count - 1) sw.Write(operationInfo);
  85. else sw.WriteLine(operationInfo);
  86. }
  87. }
  88. }
  89. }
  90. public string RemoveLineEndings(string value)
  91. {
  92. if (string.IsNullOrEmpty(value))
  93. {
  94. return value;
  95. }
  96. string lineSeparator = ((char)0x2028).ToString();
  97. string paragraphSeparator = ((char)0x2029).ToString();
  98. return value.Replace("\r\n", string.Empty)
  99. .Replace("\n", string.Empty)
  100. .Replace("\r", string.Empty)
  101. .Replace(lineSeparator, string.Empty)
  102. .Replace(paragraphSeparator, string.Empty);
  103. }
  104. }
  105. [Serializable]
  106. public class StepInfoManager
  107. {
  108. public List<float> S = new List<float>();
  109. }
  110. [Serializable]
  111. public class StepInfoJson
  112. {
  113. public int id;
  114. /// <summary>
  115. /// 步骤分数
  116. /// </summary>
  117. public float stepScore;
  118. }
  119. [Serializable]
  120. public class StepInfo
  121. {
  122. public int id;
  123. /// <summary>
  124. /// 步骤名称
  125. /// </summary>
  126. public string stepName;
  127. /// <summary>
  128. /// 步骤描述
  129. /// </summary>
  130. public string stepDesctiption;
  131. /// <summary>
  132. /// 步骤分数
  133. /// </summary>
  134. public float stepScore;
  135. }