NamingRuleHelper.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. using SmartCoalApplication.Base.FunctionModel;
  2. using SmartCoalApplication.Base.MeasureModel;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace SmartCoalApplication.Base.CommTool
  9. {
  10. /// <summary>
  11. /// 命名规则辅助工具类
  12. /// </summary>
  13. public class NamingRuleHelper
  14. {
  15. private NameRuleListDetails nameRuleListDetails;
  16. private string ruleName;
  17. private string ruleGain;
  18. private MeasureMaintenanceType measureMaintenanceType;
  19. private string filePath;
  20. /// <summary>
  21. /// 按命名规则生成名字
  22. /// </summary>
  23. /// <param name="configModel"></param>
  24. /// <returns></returns>
  25. public string GetNameFromXml(NameRuleListDetails model, string ruleName, string ruleGain, MeasureMaintenanceType measureMaintenanceType,string filePath)
  26. {
  27. string nameStr;
  28. nameRuleListDetails = model;
  29. this.filePath = filePath;
  30. this.ruleName = ruleName;
  31. this.ruleGain = ruleGain;
  32. this.measureMaintenanceType = measureMaintenanceType;
  33. if (!string.IsNullOrEmpty(nameRuleListDetails.NameFormat) && nameRuleListDetails.NameFormat.IndexOf('%') != -1)
  34. nameStr = SplitStringToRuleList();
  35. else
  36. nameStr = GetContinueNum();
  37. return nameStr;
  38. }
  39. /// <summary>
  40. /// 将字符串拆分为规则格式的list
  41. /// </summary>
  42. /// <returns></returns>
  43. private string SplitStringToRuleList()
  44. {
  45. List<int> indexList = new List<int>();
  46. int index = 0;
  47. foreach (char c in nameRuleListDetails.NameFormat)
  48. {
  49. if (c.Equals('%'))
  50. indexList.Add(index);
  51. index++;
  52. }
  53. if (indexList.Count > 0)
  54. {
  55. List<string> ruleList = new List<string>();
  56. for (int i = 0; i < indexList.Count; i++)
  57. {
  58. if (i == indexList.Count - 1)
  59. ruleList.Add(nameRuleListDetails.NameFormat.Substring(indexList[i]));
  60. else
  61. ruleList.Add(nameRuleListDetails.NameFormat.Substring(indexList[i], indexList[i + 1] - indexList[i]));
  62. }
  63. return JointToName(ruleList);
  64. }
  65. else
  66. return GetContinueNum();
  67. }
  68. /// <summary>
  69. /// 拼接出符合规则的
  70. /// </summary>
  71. /// <returns></returns>
  72. private string JointToName(List<string> ruleList)
  73. {
  74. if (ruleList.Count > 0)
  75. {
  76. //ConfigModel config =
  77. string nameStr = "";
  78. foreach (string str in ruleList)
  79. {
  80. switch (str)
  81. {
  82. case "%P":
  83. if (!string.IsNullOrEmpty(nameRuleListDetails.Text))
  84. nameStr += nameRuleListDetails.Text;
  85. break;
  86. case "%I":
  87. nameStr += GetContinueNum();
  88. break;
  89. case "%h":
  90. nameStr += DateTime.Now.ToString("HH");
  91. break;
  92. case "%m":
  93. nameStr += DateTime.Now.ToString("mm");
  94. break;
  95. case "%s":
  96. nameStr += DateTime.Now.ToString("ss");
  97. break;
  98. case "%Y":
  99. nameStr += DateTime.Now.ToString("yyyy");
  100. break;
  101. case "%M":
  102. nameStr += DateTime.Now.ToString("MM");
  103. break;
  104. case "%D":
  105. nameStr += DateTime.Now.ToString("dd");
  106. break;
  107. case "%G":
  108. nameStr += Guid.NewGuid().ToString();
  109. break;
  110. case "%U":
  111. nameStr += Environment.UserName;
  112. break;
  113. case "%N":
  114. nameStr += ruleName;
  115. break;
  116. case "%E":
  117. nameStr += ruleGain;
  118. break;
  119. case "%Z1":
  120. nameStr += nameRuleListDetails.ZTextOne;
  121. break;
  122. case "%Z2":
  123. nameStr += nameRuleListDetails.ZTextTwo;
  124. break;
  125. case "%R":
  126. int index = 0;
  127. if (filePath.Contains('\\'))
  128. {
  129. index = filePath.LastIndexOf('\\');
  130. filePath = filePath.Substring(index + 1);
  131. }
  132. nameStr += filePath;
  133. break;
  134. case "%AB":
  135. nameStr += this.measureMaintenanceType == null ? string.Empty: this.measureMaintenanceType.measureMaintenanceBasicDataList[0].measureMaintenanceBasicDataValue;
  136. break;
  137. case "%BC":
  138. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[1].measureMaintenanceBasicDataValue;
  139. break;
  140. case "%CD":
  141. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[2].measureMaintenanceBasicDataValue;
  142. break;
  143. case "%DE":
  144. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[3].measureMaintenanceBasicDataValue;
  145. break;
  146. case "%EF":
  147. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[4].measureMaintenanceBasicDataValue;
  148. break;
  149. case "%FG":
  150. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[5].measureMaintenanceBasicDataValue;
  151. break;
  152. case "%GH":
  153. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[6].measureMaintenanceBasicDataValue;
  154. break;
  155. case "%HI":
  156. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[7].measureMaintenanceBasicDataValue;
  157. break;
  158. case "%IJ":
  159. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[8].measureMaintenanceBasicDataValue;
  160. break;
  161. case "%JK":
  162. nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[9].measureMaintenanceBasicDataValue;
  163. break;
  164. }
  165. }
  166. return nameStr;
  167. }
  168. else
  169. return GetContinueNum();
  170. }
  171. /// <summary>
  172. /// 获取并格式化延续数值
  173. /// </summary>
  174. /// <returns></returns>
  175. private string GetContinueNum()
  176. {
  177. string continueNum = nameRuleListDetails.NowNumber.ToString();
  178. if (nameRuleListDetails.DigitNum > continueNum.Length)
  179. return continueNum.PadLeft(nameRuleListDetails.DigitNum, '0');
  180. else
  181. return continueNum;
  182. }
  183. }
  184. }