Beispiel #1
0
        private DataTable ConvertBigUserDataTable(DataTable dt,int imanth )
        {
            int i = 0;
            PSP_BigUser_Values bigvalue = new PSP_BigUser_Values();
            bigvalue.Flag2 = typeFlag - 1;
            bigvalue.ItemID = ItemID;
            IList<PSP_BigUser_Values> listValues;
            listValues = Common.Services.BaseService.GetList<PSP_BigUser_Values>("SelectPSP_BigUser_ValuesListByFlag2", bigvalue);

            dt.Columns.Add("Title", typeof(string));
            dt.Columns.Add("SortID", typeof(int));
            dt.Columns.Add("ID", typeof(int));
            dt.Columns.Add("PartID", typeof(string));

            dt.Columns.Add("��ע", typeof(string));
            if (imanth > 13 && imanth < 26)
            {
                dt.Columns.Add("ȥ���ۼ�", typeof(string));
                dt.Columns.Add("ȥ��" + (imanth - 13) + "��", typeof(double));
            }
            for (i = 1; i <= 12; i++)
            {

                dt.Columns.Add(i + "��", typeof(string));
            }

            dt.Columns.Add("��������", typeof(double));
            DataCommon dsort = new DataCommon();
            DataTable dataTable2 = dsort.GetSortTable(dataTable, "ID", true);

            #region ���Ҫ��ʾ��Row
            int j = 1;
            int mintex = 0;
            double sum = 0;
            double sumtemp = 0;

            double[] bigusersum = new double[12];
            for (i = 0; i < dataTable2.Rows.Count + 1; i++)
            {
                DataRow dr = dt.NewRow();
                if (i < dataTable2.Rows.Count)
                    dr["Title"] = dataTable2.Rows[i]["Title"];
                else
                    dr["Title"] = "�󻧺ϼ�";
                sum = 0;
                sumtemp = 0;
                if (i < dataTable2.Rows.Count)
                {
                    for (mintex = 1; mintex <= 12; mintex++)
                    {
                        if (dataTable.Columns.Contains(mintex + "��"))
                        {
                            if (dataTable2.Rows[i][mintex + "��"] != null && dataTable2.Rows[i][mintex + "��"] != DBNull.Value)
                                sumtemp = Math.Round(Convert.ToDouble(dataTable2.Rows[i][mintex + "��"]) / 10000, 4);
                            else
                                sumtemp = 0;
                            dr[mintex + "��"] = sumtemp;
                        }
                        else
                        {
                            dr[mintex + "��"] = 0;
                            sumtemp = 0;
                        }
                        bigusersum[mintex - 1] += sumtemp;
                        sum += sumtemp;

                    }
                }
                else
                {
                    for (int imtemp = 1; imtemp <= 12; imtemp++)
                    {

                        dr[imtemp + "��"] = bigusersum[imtemp - 1];
                        sum += bigusersum[imtemp - 1];

                        bigusersum[imtemp - 1] = -1;
                    }
                }
                if (i < dataTable2.Rows.Count)
                dr["��ע"] = dataTable2.Rows[i]["S1"];
                dr["��������"] = sum;
                dr["SortID"] = j++;
                dr["PartID"] = i + 1;
                if (i < dataTable2.Rows.Count)
                    dr["ID"] = dataTable2.Rows[i]["ID"];
                else
                    dr["ID"] = 999999999;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Title"] = "�ۼ�";
                dr["SortID"] = j++;
                dr["PartID"] = i + 1;
                if (i < dataTable2.Rows.Count)
                    dr["ID"] = dataTable2.Rows[i]["ID"];
                else
                    dr["ID"] = 999999999;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Title"] = "��������";
                dr["SortID"] = j++;
                dr["PartID"] = i + 1;
                if (i < dataTable2.Rows.Count)
                    dr["ID"] = dataTable2.Rows[i]["ID"];
                else
                    dr["ID"] = 999999999;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Title"] = "�ۼ�����";
                dr["SortID"] = j++;
                dr["PartID"] = i + 1;
                if (i < dataTable2.Rows.Count)
                    dr["ID"] = dataTable2.Rows[i]["ID"];
                else
                    dr["ID"] = 999999999;
                dt.Rows.Add(dr);
            }

            #endregion
            #region ���Ҫ��ʾ��Value
            i = 0;
            j = 0;
            mintex = 0;
            sum = 0;
            sumtemp = 0;
            int yearmonth = 1;
            bool isHaveHisValue = true;
            double qnlji = -1;
            double qndyue = -1;
            for (j = 0; j < dt.Rows.Count; j += 4)
            {
                double ljitemp = -1;

                for (yearmonth = 1; yearmonth <= 12; yearmonth++)
                {
                    if (imanth < yearmonth)
                        break ;
                    isHaveHisValue = true;
                    if (i < listValues.Count)
                    {
                        if (listValues[i].TypeID.ToString() != dt.Rows[j]["ID"].ToString())
                        {
                            if (Convert.ToInt32(dt.Rows[j]["ID"]) != 999999999)
                            ljitemp = -1;
                            if (Convert.ToInt32(dt.Rows[j]["ID"]) == 999999999)
                                isHaveHisValue = false;
                            else if (listValues[i].TypeID > Convert.ToInt32(dt.Rows[j]["ID"]))
                                isHaveHisValue = false;
                            else if (listValues[i].TypeID < Convert.ToInt32(dt.Rows[j]["ID"]))
                            {
                                while (listValues[i].TypeID < Convert.ToInt32(dt.Rows[j]["ID"]))
                                {
                                    if (i >= listValues.Count - 1)
                                        break;
                                    i++;

                                }

                                if (listValues[i].TypeID > Convert.ToInt32(dt.Rows[j]["ID"]))
                                    isHaveHisValue = false;
                            }
                        }
                    }
                    else
                        isHaveHisValue = false;
                    if (isHaveHisValue)
                    {
                        if (listValues[i].Year != yearmonth.ToString())
                            isHaveHisValue = false;
                    }

                    if (dt.Rows[j][yearmonth + "��"] != null && dt.Rows[j][yearmonth + "��"] != DBNull.Value)
                        sum = Convert.ToDouble(dt.Rows[j][yearmonth + "��"]);
                    else
                        sum = 0;

                    switch (yearmonth)
                    {
                        case 1:

                            dt.Rows[j + 1][yearmonth + "��"] = Math.Round((sum), 0);
                            if (isHaveHisValue)
                            {
                                listValues[i].Value = Math.Round(listValues[i].Value / 10000, 4);
                                if (imanth > 13 && imanth < 26)
                                {
                                    if (dt.Rows[j]["ȥ���ۼ�"] != null && dt.Rows[j]["ȥ���ۼ�"] != DBNull.Value)
                                        dt.Rows[j]["ȥ���ۼ�"] = Convert.ToDouble(dt.Rows[j]["ȥ���ۼ�"]) + listValues[i].Value;
                                    else
                                        dt.Rows[j]["ȥ���ۼ�"] = listValues[i].Value;
                                }

                                if (imanth == 14)
                                {
                                    dt.Rows[j]["ȥ��" + listValues[i].Year + "��"] = listValues[i].Value;
                                    if (qndyue==-1)
                                       qndyue= listValues[i].Value;
                                    else
                                       qndyue += listValues[i].Value;
                                }

                                sumtemp = Math.Round(listValues[i].Value, 0);
                                dt.Rows[j + 2][listValues[i].Year + "��"] = Math.Round((sum - listValues[i].Value) * 100 / listValues[i].Value, 2) + "%";
                                sum = Convert.ToDouble(dt.Rows[j + 1][listValues[i].Year + "��"]);
                                dt.Rows[j + 3][listValues[i].Year + "��"] = Math.Round((sum - sumtemp) * 100 / sumtemp, 2) + "%";
                                ljitemp = sumtemp;
                                if (bigusersum[yearmonth - 1] == -1)
                                    bigusersum[yearmonth - 1] = 0;
                                bigusersum[yearmonth - 1] += listValues[i].Value;

                            }
                            if (Convert.ToInt32(dt.Rows[j]["ID"]) == 999999999)
                            {
                                if (bigusersum[yearmonth - 1] != -1)
                                {

                                    if (ljitemp == -1)
                                        ljitemp = 0;
                                    sumtemp = ljitemp + Math.Round(bigusersum[yearmonth - 1], 0);
                                    dt.Rows[j + 2][yearmonth + "��"] = Math.Round((sum - bigusersum[yearmonth - 1]) * 100 / bigusersum[yearmonth - 1], 2) + "%";
                                    sum = Convert.ToDouble(dt.Rows[j + 1][yearmonth + "��"]);
                                    dt.Rows[j + 3][yearmonth + "��"] = Math.Round((sum - sumtemp) * 100 / sumtemp, 2) + "%";
                                    ljitemp = sumtemp;
                                    //   bigusersum[yearmonth - 1] += sumtemp;
                                }
                                if (imanth == 14)
                                {
                                    if (qnlji!=-1)
                                        dt.Rows[j]["ȥ���ۼ�"] = qnlji;
                                    else
                                        dt.Rows[j]["ȥ���ۼ�"] = 0;

                                }
                            }
                            break;

                        default:

                            if (dt.Rows[j + 1][yearmonth - 1 + "��"] != null && dt.Rows[j + 1][yearmonth - 1 + "��"] != DBNull.Value)
                                sumtemp = Convert.ToDouble(dt.Rows[j + 1][yearmonth - 1 + "��"]);
                            else
                                sumtemp = 0;

                            dt.Rows[j + 1][yearmonth + "��"] = sumtemp + Math.Round((sum), 0);

                            if (isHaveHisValue)
                            {
                                listValues[i].Value = Math.Round(listValues[i].Value / 10000, 4);
                                if (imanth > 13 && imanth < 26)
                                {
                                    if (dt.Rows[j]["ȥ���ۼ�"] != null && dt.Rows[j]["ȥ���ۼ�"] != DBNull.Value)
                                        dt.Rows[j]["ȥ���ۼ�"] = Convert.ToDouble(dt.Rows[j]["ȥ���ۼ�"]) + listValues[i].Value;
                                    else
                                        dt.Rows[j]["ȥ���ۼ�"] = listValues[i].Value;
                                }

                                if (imanth > 13 && imanth < 26)
                                    if (listValues[i].Year == (imanth - 13) + "")
                                    {
                                        dt.Rows[j]["ȥ��" + listValues[i].Year + "��"] = listValues[i].Value;
                                        if (qndyue == -1)
                                            qndyue = 0;
                                        qndyue += listValues[i].Value;

                                    }

                                dt.Rows[j + 2][listValues[i].Year + "��"] = Math.Round((sum - listValues[i].Value) * 100 / listValues[i].Value, 2) + "%";
                                sum = Convert.ToDouble(dt.Rows[j + 1][listValues[i].Year + "��"]);
                                sumtemp = ljitemp + Math.Round((listValues[i].Value), 0);
                                ljitemp = sumtemp;
                                if (bigusersum[yearmonth - 1] == -1)
                                    bigusersum[yearmonth - 1] = 0;
                                bigusersum[yearmonth - 1] += (listValues[i].Value);
                                dt.Rows[j + 3][listValues[i].Year + "��"] = Math.Round((sum - sumtemp) * 100 / sumtemp, 2) + "%";
                            }
                            if (Convert.ToInt32(dt.Rows[j]["ID"]) == 999999999)
                            {
                                if (bigusersum[yearmonth - 1] != -1)
                                {

                                    if (ljitemp == -1)
                                        ljitemp = 0;
                                    sumtemp = ljitemp + Math.Round(bigusersum[yearmonth - 1], 0);
                                    dt.Rows[j + 2][yearmonth + "��"] = Math.Round((sum - bigusersum[yearmonth - 1]) * 100 / bigusersum[yearmonth - 1], 2) + "%";
                                    sum = Convert.ToDouble(dt.Rows[j + 1][yearmonth + "��"]);
                                    dt.Rows[j + 3][yearmonth + "��"] = Math.Round((sum - sumtemp) * 100 / sumtemp, 2) + "%";
                                    ljitemp = sumtemp;
                                    //bigusersum[yearmonth - 1] += sumtemp;
                                }
                                if (imanth > 13 && imanth < 26)
                                {
                                    if (qnlji != -1)
                                        dt.Rows[j]["ȥ���ۼ�"] = qnlji;
                                    else
                                        dt.Rows[j]["ȥ���ۼ�"] = 0;

                                    if (qndyue != -1)
                                        dt.Rows[j]["ȥ��" + (imanth-13) + "��"] = qndyue;
                                    else
                                        dt.Rows[j]["ȥ��" + (imanth - 13) + "��"] = 0;
                                }

                            }
                            if (yearmonth == 12)
                            {
                                if (ljitemp != -1)
                                    dt.Rows[j + 1]["��������"] = Convert.ToDouble(dt.Rows[j + 1][yearmonth + "��"]) - ljitemp;
                                if (imanth > 13 && imanth < 26)
                                {
                                    if (qnlji == -1)
                                    {
                                        if (dt.Rows[j]["ȥ���ۼ�"] != null && dt.Rows[j]["ȥ���ۼ�"] != DBNull.Value)
                                            qnlji = Convert.ToDouble(dt.Rows[j]["ȥ���ۼ�"]);
                                    }
                                    else
                                    {
                                        if (dt.Rows[j]["ȥ���ۼ�"] != null && dt.Rows[j]["ȥ���ۼ�"] != DBNull.Value)
                                            qnlji += Convert.ToDouble(dt.Rows[j]["ȥ���ۼ�"]);
                                    }
                                }

                            }
                            break;
                    }
                    if (isHaveHisValue) i++;

                }
            }
            #endregion
            return dt;
        }
        //根据选择的统计年份,生成统计结果数据表
        private DataTable ResultDataTable(DataTable sourceDataTable, List<ChoosedYears> listChoosedYears)
        {
            DataCommon dcsort = new DataCommon();
            Hashtable hatemp=new Hashtable ();
               DataTable dt1 = new DataTable();
               //dt1.Columns.Add("Title");
               if (dt1 != null)
               dt1.Columns.Clear();
               dt1.Columns.Add("Title1", typeof(string));
               dt1.Columns.Add("Title2", typeof(string));

            //dtReturn.Columns.Add("Title", typeof(string));
            foreach (DataColumn dc in sourceDataTable.Columns)
                if (dc.ColumnName.IndexOf("年") < 0)
                    dt1.Columns.Add(dc.ColumnName, dc.DataType);
            foreach (ChoosedYears choosedYear in listChoosedYears)
            {
                dt1.Columns.Add(choosedYear.Year + "年", typeof(double));
            }
            try
            {
                #region 添加地区南北区临时行
            DataRow[] dt = dataTable2.Select("ParentID=0");
            DataRow[] dt2 = dataTable2.Select("ParentID=" + dt[0]["ID"].ToString());

            if (dt2[0]["Title"].ToString() == "北区")
            {
                hatemp.Add(dt2[0]["Flag"], 2);

                hatemp.Add(dt2[1]["Flag"], 1);
            }
            else
            {
                hatemp.Add(dt2[0]["Flag"], 1);

                hatemp.Add(dt2[1]["Flag"], 2);
            }
            sourceDataTable = dcsort.GetSortTable(sourceDataTable, "Flag,ID", true);
              #endregion
            addProvisionalline(dt[0], ref dt1, 0);
            if (dt2[0]["Title"].ToString() == "北区")
            {
                addProvisionalline(dt2[1], ref dt1, 1);
                addProvisionalline(dt2[0], ref dt1, 2);

            }
            else
            {
                addProvisionalline(dt2[0], ref dt1, 1);
                addProvisionalline(dt2[1], ref dt1, 2);
            }

                string title="";
                string title1 = "";
                int jtemp = 0;
                foreach (DataRow row1 in sourceDataTable.Rows)
                {

                    if (!hash.ContainsValue(row1["Title"]) && !hash2.ContainsValue(row1["Title"]))
                    {
                        title = row1["Title"].ToString(); ;
                        continue;
                    }
                    if (hash.ContainsValue(row1["Title"]))
                    {
                        title1 = row1["Title"].ToString(); ;
                        continue;
                    }

                        DataRow rowtemp1 = dt1.NewRow();
                        rowtemp1["Title"] = title;
                        rowtemp1["Title1"] = title1;
                        if (hatemp[row1["Flag"]] != null)
                            if (hatemp[row1["Flag"]].ToString() == "2")
                                addrowtodt1(row1, rowtemp1, ref dt1, hatemp, jtemp,  dt1.Rows[jtemp + 64]);
                            else
                                addrowtodt1(row1, rowtemp1, ref dt1, hatemp, jtemp, dt1.Rows[jtemp + 32]);
                        jtemp++;
                        if (jtemp % 32 == 0)
                            jtemp = 0;
                }

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            for (int itemp = 0; itemp < 32; itemp++)
            {
                foreach (DataColumn dc in dt1.Columns)
                {
                    if (dc.ColumnName.IndexOf("年") > 0)
                    {
                        if (dt1.Rows[itemp + 32][dc.ColumnName] == null || dt1.Rows[itemp + 32][dc.ColumnName] == DBNull.Value)
                            dt1.Rows[itemp + 32][dc.ColumnName] = 0;
                        if (dt1.Rows[itemp + 64][dc.ColumnName] == null || dt1.Rows[itemp + 64][dc.ColumnName] == DBNull.Value)
                            dt1.Rows[itemp + 64][dc.ColumnName] = 0;
                        dt1.Rows[itemp][dc.ColumnName] = Convert.ToInt32(dt1.Rows[itemp + 32][dc.ColumnName]) + Convert.ToInt32(dt1.Rows[itemp + 64][dc.ColumnName]);
                    }
                }
            }
                return dt1;
        }