/// <summary> /// 图集判断流程 /// </summary> /// <param name="sample"></param> /// <param name="db"></param> /// <param name="BZ1"></param> /// <returns></returns> public IdentityResult ProcessImages(Excel sample, RulesAdapter db, string BZ1) { var identity = new IdentityResult(sample.ID); var match = Regex.Match(sample.QDMC, BZ1); if (match.Success && match.Index > 0) { var title = sample.QDMC.Substring(match.Index, sample.QDMC.Length >= match.Index + 12 ? 12 : sample.QDMC.Length - match.Index) .ConvertUnit(db.Convert).TrunIntegerUseSample(); var regex = BZ1.TrunIntegerUseLogic() + @"\[(?<subtitle>(0[1-9]|1[0-6]))\][\s\S]*"; var name = FormatNameUseGlobalRule(sample.QDMC, sample.ZY); match = Regex.Match(title, regex); if (match.Success && match.Length > 0) { var number = BZ1 + match.Groups["subtitle"].Value; var rows = Rules.TJBSB.Select(string.Format("YJBS = '{0}'", number)); foreach (DataRow row in rows) { var rule = row.Field <string>("SJBS"); if (string.IsNullOrEmpty(rule)) { continue; } var pattern = Pattern.Parse(new Fields("express", rule)); if (regex == null) { continue; } if (pattern.IsMatch(new Fields("sample", name)) == false) { continue; } try { Console.WriteLine(row["SYBH"] + ""); var id = row.Field <string>("TJBH"); var type = row.Field <Int64>("SYBH"); rows = db.TJDEB.Select("TJBH = '" + id + "' and SYBH = '" + type + "'"); foreach (DataRow r in rows) { identity.State = IdentityResultStateEnum.Success; identity.RulesMatched.Add(r); } } catch (Exception e) { } } } } return(identity); }
/// <summary> /// 一般清单判断流程 /// </summary> /// <param name="excels"></param> /// <param name="db"></param> /// <returns></returns> public IdentityResult ProcessDefault(Excel excels, RulesAdapter db) { var ID = excels.QDBH.Length > 9 ? excels.QDBH.Substring(0, 9) : excels.QDBH; var identity = new IdentityResult(excels.ID); var sql = string.Format("QDFL = '{0}' AND QDBM LIKE '%{1}%'", excels.ZY.FormatDatabaleField(), "," + ID.FormatDatabaleField() + ","); var rules = db.ZDBJ.Select(sql).OrderBy(m => m.Field <int>("ID")); var items = new Dictionary <string, string>(); var name = FormatNameUseGlobalRule(excels.QDMC, excels.ZY); foreach (DataRow rule in rules) { var BZ2 = rule.Field <string>("BZ2"); var QDDW = rule.Field <string>("QDDW"); if (!string.IsNullOrEmpty(BZ2) && BZ2.Contains("1") && QDDW.ToLower() != excels.DW.ToLower()) { continue; } var express = rule.Pick(new string[] { "express", "unit" }, "DEBS", "YZJFS"); var pattern = Pattern.Parse(express); if (pattern == null) { continue; } var newname = FormatNameUseQuotaRule(name, excels.ZY, rule); var fields = new Fields().Append("sample", newname); if (pattern.IsMatch(fields) == false) { continue; } var group = rule.Field <string>("FZ"); if (string.IsNullOrEmpty(group)) { group = "未命名"; } if (items.ContainsKey(group)) { continue; } var quotaID = rule.Field <string>("DEBH"); identity.State = IdentityResultStateEnum.Success; identity.RulesMatched.Add(rule); items[group] = quotaID; name = RemoveScopeUseRule(name, rule.Field <string>("ZYFL4")); } return(identity); }
public IdentityResult[] IdentityQuotaOnly(ProfessionalEnum professional, Excel[] excels) { IdentityResult result = null; List <IdentityResult> results = new List <IdentityResult>(); try { foreach (var excel in excels) { result = Process(professional, excel); foreach (var i in result.RulesMatched) { result.ExcelsMatched.Add(RulesAdapter.ConvertToExcels(i, excel.ID, 0)); } // excel.ResultForProgram = Excels.FormatSubheadings(result.RulesMatched.ToArray()); // excel.ResultForUser = Excels.FormatSubheadings(excel.Subheading.ToArray()); if (result.State == IdentityResultStateEnum.Success) { result.Message = "成功"; } else { //result.Message = "不能匹配"; if (result.RulesMatched.Count > 0) { result.State = IdentityResultStateEnum.Success; result.Message = "成功"; } else { result.Message = "不能匹配"; result.State = IdentityResultStateEnum.Unable; } } results.Add(result); Thread.Sleep(0); } } catch (Exception e) { } return(results.ToArray()); }
private void ShowFile_FileOk(object sender, CancelEventArgs e) { TextDB.Text = ShowFile.FileName; Database = new RulesAdapter(ShowFile.FileName); }
/// <summary> /// 其他清单判断流程 /// </summary> /// <param name="row"></param> /// <param name="db"></param> /// <returns></returns> public IdentityResult ProcessOther(Excel row, RulesAdapter db) { var professional = row.ZY; var ID = row.QDBH; row.QDBH = "其他"; var identity = ProcessOther(row, db, "其他"); var items = new Dictionary <string, DataRow>(); var name = FormatNameUseGlobalRule(row.QDMC, row.ZY); row.QDBH = ID; if (identity.State == IdentityResultStateEnum.Success) { identity.State = IdentityResultStateEnum.Success; foreach (DataRow rule in identity.RulesMatched) { var limit = rule.Field <string>("BZ2"); var unit = rule.Field <string>("DEDW"); if (!string.IsNullOrEmpty(limit) && !string.IsNullOrEmpty(unit)) { if (limit.Contains("1") && unit != row.DW.ToUpper() && unit != row.DW.ToLower()) { continue; } } var fields = new Fields("express", rule.Field <string>("DEBS")) .Append("unit", rule.Field <string>("YZJFS")); var pattern = Pattern.Parse(fields); if (pattern == null) { continue; } var newname = FormatNameUseQuotaRule(name, row.ZY, rule); fields.Append("sample", newname); if (pattern.IsMatch(fields) == false) { row.Log(row.QDMC + " 与 " + fields["express"] + " 不匹配"); continue; } var group = rule.Field <string>("FZ"); if (items.ContainsKey(group) == false) { items[group] = rule; name = RemoveScopeUseRule(name, rule.Field <string>("ZYFL4")); } } } if (items.Count == 0) { identity.State = IdentityResultStateEnum.Unable; return(identity); } identity.RulesMatched.Clear(); foreach (DataRow item in items.Values) { var DEBH = item.Field <string>("DEBH"); identity.RulesMatched.Add(item); row.Log("已录入定额,号码为:" + DEBH); } return(identity); }
/// <summary> /// 其他清单判断流程 /// </summary> /// <param name="row"></param> /// <param name="db"></param> /// <param name="ZYFL5"></param> /// <returns></returns> public IdentityResult ProcessOther(Excel row, RulesAdapter db, string ZYFL5) { var identity = new IdentityResult(row.ID); var columns = new Queue <string>(new string[] { "ZYFL2", "ZYFL3", "ZYFL4" }); var rules = db.ZDBJ.Select("QDFL = '" + row.ZY + "' and ZYFL5 like '%" + ZYFL5 + "%'"); var items = new List <DataRow>(); var name = FormatNameUseGlobalRule(row.QDMC, row.ZY); if (rules.Length == 0) { return(identity); } while (columns.Count > 0) { items = new List <DataRow>(); var column = columns.Dequeue(); foreach (DataRow rule in rules) { var express = rule.Field <string>(column); if (string.IsNullOrEmpty(express)) { items.Add(rule); } else { var pattern = Pattern.Parse(new Fields().Append("express", express)); if (pattern != null) { var newname = FormatNameUseQuotaRule(name, row.ZY, rule); var fields = new Fields().Append("sample", newname); if (pattern.IsMatch(fields)) { name = RemoveScopeUseRule(name, rule.Field <string>("ZYFL4")); items.Add(rule); } } } } rules = items.ToArray(); } if (items.Count == 0) { return(identity); } items = new List <DataRow>(); foreach (DataRow rule in rules) { var express = rule.Field <string>("DEBS"); if (string.IsNullOrEmpty(express)) { items.Add(rule); } else { var pattern = Pattern.Parse(new Fields("express", express)); if (pattern == null) { continue; } var newname = FormatNameUseQuotaRule(name, row.ZY, rule); var fields = new Fields("sample", newname); if (pattern.IsMatch(fields)) { name = RemoveScopeUseRule(name, rule.Field <string>("ZYFL4")); items.Add(rule); } } } if (items.Count == 0) { return(identity); } rules = items.ToArray(); var builder = new StringBuilder(); foreach (DataRow rule in rules) { var DEBH = string.Format("{0}|", rule.Field <string>("DEBH")); builder.AppendFormat(DEBH); identity.RulesMatched.Add(rule); row.Log("已录入定额,号码为:" + DEBH); } identity.State = IdentityResultStateEnum.Success; return(identity); }
public Identity(RulesAdapter rule) { Rules = rule; }