using OTSCLRINTERFACE;
using OTSIncAReportApp.OTSDataMgrFunction;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OTSIncAReportApp._1_UI.GBCalculate
{
    public partial class Purity : Form
    {
        #region 全局变量
        OTSIncAReportApp.frmReportApp m_ReportApp = null;
        DataTable Table = new DataTable();
        /// 
        /// 权重比重
        /// 
        readonly Dictionary weightFactor = new Dictionary()
        {
            { "0.5",0.05 },
            { "1",0.1 },
            {"1.5",0.2 },
            {"2",0.5 },
            {"2.5",1 },
            {"3",2 },
            {"3.5",5 },
            {"4",10 },
            {"4.5",20},
            {"5",50 }
        };
        #endregion
        public Purity(OTSIncAReportApp.frmReportApp a_ReportApp)
        {
            InitializeComponent();
            m_ReportApp = a_ReportApp;
            cBox_gride.DataSource=new string[] { "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5" };
            cBox_gride.SelectedIndex=0;
            rBx_process.Font = new Font(rBx_process.Font.FontFamily, 15);
        }
        private void Purity_Load(object sender, EventArgs e)
        {
            InitTable(Table);
            pictureBox_PurityFormula.Image = Properties.Resources.PurityFormula;
        }
        void InitTable(DataTable Table)
        {
            Table.Columns.Add("0.5", typeof(int));
            Table.Columns.Add("1", typeof(int));
            Table.Columns.Add("1.5", typeof(int));
            Table.Columns.Add("2", typeof(int));
            Table.Columns.Add("2.5", typeof(int));
            Table.Columns.Add("3", typeof(int));
            Table.Columns.Add("3.5", typeof(int));
            Table.Columns.Add("4", typeof(int));
            Table.Columns.Add("4.5", typeof(int));
            Table.Columns.Add("5", typeof(int));
            Table.Rows.Add(0, 0, 0, 0, 0, 0, 0, 0, 0,0);
        }
        private void btn_cal_Click(object sender, EventArgs e)
        {
            Table.Rows.Clear();
            Table.Rows.Add(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
            tB_result.Text = "";this.Refresh();
            Cursor = Cursors.WaitCursor;
            rBx_process.Text = "";
            int index = m_ReportApp.m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE);
            for (int i = 0; i < m_ReportApp.m_rstDataMgr.ResultFilesList.Count; i++)
            {
                string anothername = m_ReportApp.m_rstDataMgr.ResultFilesList[i].anotherFileName.ToString();
                string resultfile = m_ReportApp.m_rstDataMgr.ResultFilesList[i].FilePath.ToString() + "\\" + m_ReportApp.m_rstDataMgr.ResultFilesList[i].FileName_real.ToString();
                m_ReportApp.m_rstDataMgr.m_ReportMgr.AddASmplMsrResultMgr(resultfile, anothername);
            }
            OTSCLRINTERFACE.CPropParamClr clr_prop = m_ReportApp.m_rstDataMgr.m_ReportMgr.GetPropertyParamTable();
            List datasourcelist = m_ReportApp.m_conditionChoose.m_conditionData.GetComboDownListByItemName(OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE);
            clr_prop.SetDataSourceList(datasourcelist);
            clr_prop.SetDataSourceId(index);
            clr_prop.SetType((int)OTSSampleReportInfo.DisplayPicutureType.AnalyzeDataTable);//table
            clr_prop.SetCalTableType((int)OTSSampleReportInfo.CALCULATE_TABLE_TYPE.GB_Method1);
            DataTable tbl = m_ReportApp.m_rstDataMgr.m_ReportMgr.GetAllGBFields(clr_prop);
            if (tbl != null)
            {
                foreach (DataRow row in tbl.Rows)
                {
                    string[] str = Convert.ToString(row["grade"]).Split(' ');
                    for (int i = 0; i < str.Length; i++)
                    {
                        if (str[i].Contains(":"))
                        {
                            str[i] = Convert.ToString(str[i].Split(':')[1]);
                        }
                        switch (str[i])
                        {
                            case "0.5":
                                Table.Rows[0]["0.5"] = Convert.ToInt64(Table.Rows[0]["0.5"]) + 1;
                                break;
                            case "1":
                                Table.Rows[0]["1"] = Convert.ToInt64(Table.Rows[0]["1"]) + 1;
                                break;
                            case "1.5":
                                Table.Rows[0]["1.5"] = Convert.ToInt64(Table.Rows[0]["1.5"]) + 1;
                                break;
                            case "2":
                                Table.Rows[0]["2"] = Convert.ToInt64(Table.Rows[0]["2"]) + 1;
                                break;
                            case "2.5":
                                Table.Rows[0]["2.5"] = Convert.ToInt64(Table.Rows[0]["2.5"]) + 1;
                                break;
                            case "3":
                                Table.Rows[0]["3"] = Convert.ToInt64(Table.Rows[0]["3"]) + 1;
                                break;
                            case "3.5":
                                Table.Rows[0]["3.5"] = Convert.ToInt64(Table.Rows[0]["3.5"]) + 1;
                                break;
                            case "4":
                                Table.Rows[0]["4"] = Convert.ToInt64(Table.Rows[0]["4"]) + 1;
                                break;
                            case "4.5":
                                Table.Rows[0]["4.5"] = Convert.ToInt64(Table.Rows[0]["4.5"]) + 1;
                                break;
                            case "5":
                                Table.Rows[0]["5"] = Convert.ToInt64(Table.Rows[0]["5"]) + 1;
                                break;
                            default:
                                break;
                        }
                    }
                }
            }
            rBx_process.AppendText("经国标方法1评级后数据统计如下:\n");
            string r1 = "";
            string r2 = "K=( ";
            double K = 0;
            for (int i= cBox_gride.SelectedIndex;i< Table.Columns.Count; i++)
            {
                K += weightFactor[Convert.ToString(cBox_gride.SelectedItem)] * Convert.ToInt64(Table.Rows[0][i]);
                r1 += cBox_gride.Items[i].ToString() + "级视场数:" + Table.Rows[0][i].ToString()+"\n";
                r2 += weightFactor[Convert.ToString(cBox_gride.Items[i])].ToString() + " * " + Table.Rows[0][i].ToString() + " + ";
            }
            r2 = r2.Remove(r2.Length - 2, 2);
            r2 += ")";
            double area = m_ReportApp.m_rstDataMgr.CurResultFile.GetImageWidth() * m_ReportApp.m_rstDataMgr.CurResultFile.GetImageHeight() * m_ReportApp.m_rstDataMgr.CurResultFile.GetPixelSize() * m_ReportApp.m_rstDataMgr.CurResultFile.GetPixelSize() * m_ReportApp.m_rstDataMgr.CurResultFile .GetTotalFields()* 0.000001;
            K = K * 1000 / area;
            tB_result.Text = (Math.Round(K, 3).ToString());
            r1 += "总检验面积:" + area.ToString() + "\n";
            r2 += "* 1000 /" + area.ToString();
            rBx_process.AppendText(r1 + "\n");
            rBx_process.AppendText("代入公式计算:\n");
            rBx_process.AppendText(r2 + "\n");
            rBx_process.AppendText("K = "+ K.ToString());
            this.Refresh();
            this.Cursor= Cursors.Default;
        }
    }
}