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;
}
}
}