Ejemplo n.º 1
0
        /// <summary>
        /// 标准件编码生成
        /// </summary>
        private void StandardCodingBuilds()
        {
            DataTable dt = (DataTable)myDataGridView1.DataSource;
            Dictionary <string, int> dict = sql.GetNumber();

            DataKeep.Serialize(configPath, false, ref param);
            string     ClassName  = "";
            string     CodingName = "";
            string     cInvName   = "";
            string     cInvStd    = "";
            List <int> redlist    = new List <int>();

            foreach (Map map in param.Maps)
            {
                Console.WriteLine(map.Name);
                if (map.Name.Equals("存货大类编码"))
                {
                    ClassName = map.Value;
                }
                else if (map.Name.Equals("存货编码"))
                {
                    CodingName = map.Value;
                }
                else if (map.Name.Equals("规格型号"))
                {
                    cInvStd = map.Value;
                }
                else if (map.Name.Equals("存货名称"))
                {
                    cInvName = map.Value;
                }
            }
            Console.WriteLine(ClassName + "," + CodingName);
            if (dt.Columns.Contains(ClassName) && dt.Columns.Contains(CodingName) && dt.Columns.Contains(cInvStd) && dt.Columns.Contains(cInvName))
            {
                foreach (DataRow row in dt.Rows)
                {
                    if (row[ClassName] != DBNull.Value)
                    {
                        string    name  = row[cInvName].ToString().Trim();
                        string    std   = row[cInvStd].ToString().Trim();
                        DataTable dtnew = sql.AccurateQuery_AND_Like(name, "cInvName", std, "cInvStd");

                        if (dtnew == null || dtnew.Rows.Count > 0)
                        {
                            redlist.Add(row.Table.Rows.IndexOf(row));
                            continue;
                        }
                        string value = row[ClassName].ToString().Trim();
                        int    num;
                        if (dict.ContainsKey(value))
                        {
                            num = dict[value];
                        }
                        else
                        {
                            MessageBox.Show(value + "分类编码错误");
                            continue;
                        }
                        string numstr = string.Format("{0:D5}", num + 1);
                        try
                        {
                            string Classstr = value.Substring(0, 4) + "." + value.Substring(4, 2);
                            row[CodingName] = Classstr + "." + numstr;
                            dict[value]     = num + 1;
                        }
                        catch (Exception e1)
                        {
                            MessageBox.Show(e1.Message);
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show(string.Format("表没有{0}列或{1}列", ClassName, CodingName));
            }
            dt.AcceptChanges();
            LookForDuplicates();
            foreach (var i in redlist)
            {
                myDataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
            }
        }