Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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);
 }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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);
        }
Example #7
0
 public Identity(RulesAdapter rule)
 {
     Rules = rule;
 }