using System.Text.RegularExpressions; namespace YLErp.DBModels.Helpers { /// /// 品种Model帮助类 /// public static class VarietyHelper { /// /// 获取交易单位 /// public static int? GetTradeUnitValue(string VarietyCode, string TradeUnit) { if (string.IsNullOrEmpty(TradeUnit)) { return null; } //特殊处理 if (VarietyCode == "JD") { return 10;//鸡蛋 } if (VarietyCode == "AU") { return 1000;//沪金 } var numStr = new string(TradeUnit.SkipWhile(n => char.IsWhiteSpace(n)).TakeWhile(n => n >= '0' && n <= '9').ToArray()); return int.TryParse(numStr, out var num) ? num : (int?)null; } /// /// 获取乘积因子 /// public static int GetCountRatio(string QuoteUnit) { if (string.IsNullOrWhiteSpace(QuoteUnit)) return 1; var unit = QuoteUnit.Substring(QuoteUnit.LastIndexOf('/') + 1).Trim(); return unit == "500千克" ? 2 : 1; } /// /// 获取数量单位,暂时取 QuoteUnit /后的字母,特别:500千克 鸡蛋,取吨,份数*2 /// public static string GetQuoteUnitSingle(string QuoteUnit) { if (string.IsNullOrWhiteSpace(QuoteUnit)) return string.Empty; var unit = QuoteUnit.Substring(QuoteUnit.LastIndexOf('/') + 1).Trim(); return unit == "500千克" ? "吨" : unit ?? string.Empty; } /// /// 获取交易单位,暂时取 TradeUnit 中去掉 数字 / 手 元 之后的部分,为了兼容 300元/点 和 20吨/手 /// /// /// public static string GetTradeUnitSingle(string TradeUnit) { if (string.IsNullOrWhiteSpace(TradeUnit)) return string.Empty; var unit = Regex.Replace(TradeUnit, @"(\d|/|手|元)", ""); return unit ?? string.Empty; } /// /// 数量单位,暂时取 QuoteUnit /后的字母 /// public static string GetQuoteUnitSingleOriginal(string QuoteUnit) { //请不要使用try..catch return string.IsNullOrWhiteSpace(QuoteUnit) ? string.Empty : QuoteUnit.Substring(QuoteUnit.LastIndexOf('/') + 1).Trim(); } /// /// 解析品种最小价格变动配置 /// public static double? ParseMinPriceChange(Variety variety) { return ParseMinPriceChange(variety?.MinPriceChange); } /// /// 解析品种最小价格变动配置字符串 /// public static double? ParseMinPriceChange(string varietyMinPriceChange) { if (string.IsNullOrWhiteSpace(varietyMinPriceChange)) { return null; } var chs = varietyMinPriceChange.TakeWhile(n => n == '.' || n >= '0' && n <= '9').ToArray(); if (!chs.Any()) { return null; } if (double.TryParse(new string(chs), out var d)) { return d; } return null; } } }