using SmartCoalApplication.Base.FunctionModel; using SmartCoalApplication.Base.MeasureModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SmartCoalApplication.Base.CommTool { /// /// 命名规则辅助工具类 /// public class NamingRuleHelper { private NameRuleListDetails nameRuleListDetails; private string ruleName; private string ruleGain; private MeasureMaintenanceType measureMaintenanceType; private string filePath; /// /// 按命名规则生成名字 /// /// /// public string GetNameFromXml(NameRuleListDetails model, string ruleName, string ruleGain, MeasureMaintenanceType measureMaintenanceType,string filePath) { string nameStr; nameRuleListDetails = model; this.filePath = filePath; this.ruleName = ruleName; this.ruleGain = ruleGain; this.measureMaintenanceType = measureMaintenanceType; if (!string.IsNullOrEmpty(nameRuleListDetails.NameFormat) && nameRuleListDetails.NameFormat.IndexOf('%') != -1) nameStr = SplitStringToRuleList(); else nameStr = GetContinueNum(); return nameStr; } /// /// 将字符串拆分为规则格式的list /// /// private string SplitStringToRuleList() { List indexList = new List(); int index = 0; foreach (char c in nameRuleListDetails.NameFormat) { if (c.Equals('%')) indexList.Add(index); index++; } if (indexList.Count > 0) { List ruleList = new List(); for (int i = 0; i < indexList.Count; i++) { if (i == indexList.Count - 1) ruleList.Add(nameRuleListDetails.NameFormat.Substring(indexList[i])); else ruleList.Add(nameRuleListDetails.NameFormat.Substring(indexList[i], indexList[i + 1] - indexList[i])); } return JointToName(ruleList); } else return GetContinueNum(); } /// /// 拼接出符合规则的 /// /// private string JointToName(List ruleList) { if (ruleList.Count > 0) { //ConfigModel config = string nameStr = ""; foreach (string str in ruleList) { switch (str) { case "%P": if (!string.IsNullOrEmpty(nameRuleListDetails.Text)) nameStr += nameRuleListDetails.Text; break; case "%I": nameStr += GetContinueNum(); break; case "%h": nameStr += DateTime.Now.ToString("HH"); break; case "%m": nameStr += DateTime.Now.ToString("mm"); break; case "%s": nameStr += DateTime.Now.ToString("ss"); break; case "%Y": nameStr += DateTime.Now.ToString("yyyy"); break; case "%M": nameStr += DateTime.Now.ToString("MM"); break; case "%D": nameStr += DateTime.Now.ToString("dd"); break; case "%G": nameStr += Guid.NewGuid().ToString(); break; case "%U": nameStr += Environment.UserName; break; case "%N": nameStr += ruleName; break; case "%E": nameStr += ruleGain; break; case "%Z1": nameStr += nameRuleListDetails.ZTextOne; break; case "%Z2": nameStr += nameRuleListDetails.ZTextTwo; break; case "%R": int index = 0; if (filePath.Contains('\\')) { index = filePath.LastIndexOf('\\'); filePath = filePath.Substring(index + 1); } nameStr += filePath; break; case "%AB": nameStr += this.measureMaintenanceType == null ? string.Empty: this.measureMaintenanceType.measureMaintenanceBasicDataList[0].measureMaintenanceBasicDataValue; break; case "%BC": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[1].measureMaintenanceBasicDataValue; break; case "%CD": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[2].measureMaintenanceBasicDataValue; break; case "%DE": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[3].measureMaintenanceBasicDataValue; break; case "%EF": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[4].measureMaintenanceBasicDataValue; break; case "%FG": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[5].measureMaintenanceBasicDataValue; break; case "%GH": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[6].measureMaintenanceBasicDataValue; break; case "%HI": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[7].measureMaintenanceBasicDataValue; break; case "%IJ": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[8].measureMaintenanceBasicDataValue; break; case "%JK": nameStr += this.measureMaintenanceType == null ? string.Empty : this.measureMaintenanceType.measureMaintenanceBasicDataList[9].measureMaintenanceBasicDataValue; break; } } return nameStr; } else return GetContinueNum(); } /// /// 获取并格式化延续数值 /// /// private string GetContinueNum() { string continueNum = nameRuleListDetails.NowNumber.ToString(); if (nameRuleListDetails.DigitNum > continueNum.Length) return continueNum.PadLeft(nameRuleListDetails.DigitNum, '0'); else return continueNum; } } }