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; }