137 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Data;
 | |
| using System.Linq;
 | |
| using BLL;
 | |
| 
 | |
| namespace FineUIPro.Web.Transfer.Chart
 | |
| {
 | |
|     public partial class PunchlistFromChart : PageBase
 | |
|     {
 | |
|         #region 定义项
 | |
|         /// <summary>
 | |
|         /// 项目主键
 | |
|         /// </summary>
 | |
|         public string ProjectId
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return (string)ViewState["ProjectId"];
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 ViewState["ProjectId"] = value;
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 加载页面
 | |
|         /// <summary>
 | |
|         /// 加载页面
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void Page_Load(object sender, EventArgs e)
 | |
|         {
 | |
|             if (!IsPostBack)
 | |
|             {
 | |
|                 this.ProjectId = this.CurrUser.LoginProjectId;
 | |
|                 if (!string.IsNullOrEmpty(Request.Params["projectId"]))
 | |
|                 {
 | |
|                     this.ProjectId = Request.Params["projectId"];
 | |
|                 }
 | |
| 
 | |
|                 this.AnalyseData();
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 统计分析
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void BtnAnalyse_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             this.AnalyseData();
 | |
|         }
 | |
| 
 | |
|         #region 统计
 | |
|         private void AnalyseData()
 | |
|         {
 | |
|             if (string.IsNullOrEmpty(ProjectId))
 | |
|             {
 | |
|                 Alert.ShowInTop("项目未获取到,请刷新页面。", MessageBoxIcon.Warning);
 | |
|                 return;
 | |
|             }
 | |
|             var forms = from x in Funs.DB.Transfer_PunchlistFrom
 | |
|                         where x.ProjectId == this.CurrUser.LoginProjectId
 | |
|                         select x;
 | |
|             var dates = (from x in forms where x.PUNCH_ITEM_FINISH_DATE != null orderby x.PUNCH_ITEM_FINISH_DATE select x.PUNCH_ITEM_FINISH_DATE).Distinct().ToList();
 | |
|             DataTable dtTime = new DataTable();
 | |
|             if (rblType.SelectedValue == "1")
 | |
|             {
 | |
|                 dtTime.Columns.Add("日期", typeof(string));
 | |
|                 dtTime.Columns.Add("Finished(%)", typeof(string));
 | |
|                 if (dates.Count() > 0)
 | |
|                 {
 | |
|                     List<DateTime> months = new List<DateTime>();
 | |
|                     DateTime startDate = Convert.ToDateTime(dates.First());
 | |
|                     DateTime endDate = Convert.ToDateTime(dates.Last());
 | |
|                     do
 | |
|                     {
 | |
|                         months.Add(startDate);
 | |
|                         startDate = startDate.AddDays(15);
 | |
|                     } while (startDate <= endDate);
 | |
|                     var nums = forms.Count();
 | |
|                     foreach (var item in months)
 | |
|                     {
 | |
|                         DataRow rowTime = dtTime.NewRow();
 | |
|                         Model.SpTDesktopItem newspItem = new Model.SpTDesktopItem();
 | |
|                         rowTime["日期"] = string.Format("{0:yyyy-MM-dd}", item);
 | |
|                         var finishedNums = forms.Count(x => x.PUNCH_ITEM_FINISH_DATE <= item && x.PUNCH_ITEM_STATUS == "Finished");
 | |
|                         if (nums > 0)
 | |
|                         {
 | |
|                             rowTime["Finished(%)"] = 1.0 * finishedNums / nums;
 | |
|                         }
 | |
|                         dtTime.Rows.Add(rowTime);
 | |
|                     }
 | |
|                     this.ChartUc.CreateChartPunchlistFrom(BLL.ChartControlService.GetDataSourceChartByYijiao(dtTime, "PROGRESS REPORT", "Line", 1100, 600, false));
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 dtTime.Columns.Add("日期", typeof(string));
 | |
|                 dtTime.Columns.Add("Finished", typeof(string));
 | |
|                 if (dates.Count() > 0)
 | |
|                 {
 | |
|                     List<DateTime> months = new List<DateTime>();
 | |
|                     DateTime startDate = Convert.ToDateTime(dates.First());
 | |
|                     DateTime endDate = Convert.ToDateTime(dates.Last());
 | |
|                     do
 | |
|                     {
 | |
|                         months.Add(startDate);
 | |
|                         startDate = startDate.AddDays(15);
 | |
|                     } while (startDate <= endDate);
 | |
|                     var nums = forms.Count();
 | |
|                     foreach (var item in months)
 | |
|                     {
 | |
|                         DataRow rowTime = dtTime.NewRow();
 | |
|                         Model.SpTDesktopItem newspItem = new Model.SpTDesktopItem();
 | |
|                         rowTime["日期"] = string.Format("{0:yyyy-MM-dd}", item);
 | |
|                         var finishedNums = forms.Count(x => x.PUNCH_ITEM_FINISH_DATE <= item && x.PUNCH_ITEM_STATUS == "Finished");
 | |
|                         rowTime["Finished"] = finishedNums;
 | |
|                         dtTime.Rows.Add(rowTime);
 | |
|                     }
 | |
|                     this.ChartUc.CreateChart(BLL.ChartControlService.GetDataSourceChartByYijiao(dtTime, "PROGRESS REPORT", "Line", 1100, 600, false));
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         protected void rblType_SelectedIndexChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             this.AnalyseData();
 | |
|         }
 | |
|     }
 | |
| } |