514 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			514 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C#
		
	
	
	
| using Newtonsoft.Json;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Web.UI.WebControls;
 | |
| using BLL;
 | |
| using System.Data;
 | |
| using System.Data.SqlClient;
 | |
| using Model;
 | |
| using System.Linq;
 | |
| using NPOI.SS.Formula.Functions;
 | |
| using NPOI.XSSF.Streaming.Values;
 | |
| using System.Web.UI.HtmlControls;
 | |
| using System.Text;
 | |
| using FineUIPro.Web.SysManage;
 | |
| 
 | |
| namespace FineUIPro.Web
 | |
| {
 | |
|     public partial class mainMenu_PGJSX : PageBase
 | |
|     {
 | |
|         #region 定义项
 | |
|         /// <summary>
 | |
|         /// 项目主键
 | |
|         /// </summary>
 | |
|         public string ProjectId
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return (string)ViewState["ProjectId"];
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 ViewState["ProjectId"] = value;
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
|         protected void Page_Load(object sender, EventArgs e)
 | |
|         {
 | |
|             if (!IsPostBack)
 | |
|             {
 | |
|                 this.ProjectId = string.Empty;
 | |
|                 if (this.CurrUser != null && !string.IsNullOrEmpty(this.CurrUser.LoginProjectId))
 | |
|                 {
 | |
|                     this.ProjectId = this.CurrUser.LoginProjectId;
 | |
|                 }
 | |
|                 BindGrid();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #region 关键事项统计
 | |
| 
 | |
|         #region 关键事项
 | |
| 
 | |
|         /// <summary>
 | |
|         ///  关键事项
 | |
|         /// </summary>
 | |
|         protected string One
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 var db = new Model.SGGLDB(Funs.ConnString);
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
| 
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 List<double> listdata = new List<double>();
 | |
| 
 | |
|                 businessColumn.title = "关键事项关闭率";
 | |
|                 var allItems = from x in db.GJSX
 | |
|                                where x.ProjectId == this.CurrUser.LoginProjectId && x.State != "1"
 | |
|                                orderby x.GJSXID
 | |
|                                select x;
 | |
|                 int closeNum = allItems.Where(x => x.State == "0").Count();
 | |
|                 listdata.Add(closeNum);
 | |
|                 listdata.Add(allItems.Count() - closeNum);
 | |
|                 double closureRate = 0;
 | |
|                 if (allItems.Any())
 | |
|                 {
 | |
|                     closureRate = (double)closeNum / (double)allItems.Count();
 | |
|                 }
 | |
|                 listdata.Add(Math.Round(closureRate * 100, 2));
 | |
| 
 | |
|                 s.data = listdata;
 | |
|                 series.Add(s);
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 关键事项统计——按事项类别
 | |
|         /// </summary>
 | |
|         protected string Two
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
|                 List<string> listCategories = new List<string>();
 | |
|                 businessColumn.title = "关键事项跟踪-按事项类别统计";
 | |
|                 businessColumn.xFontNum = 8;
 | |
|                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList();
 | |
|                 var allItems = from x in Funs.DB.GJSX
 | |
|                                where x.ProjectId == this.ProjectId && x.State != "1"
 | |
|                                select x;
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s2 = new Model.SingleSerie();
 | |
|                 List<double> listdata = new List<double>();
 | |
|                 List<double> listdata2 = new List<double>();
 | |
|                 int closeNum = 0;
 | |
|                 foreach (var type in gjsxTypes)
 | |
|                 {
 | |
|                     listCategories.Add(type.GJSXTypeName);
 | |
|                     var typeItems = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID));
 | |
|                     closeNum = typeItems.Where(x => x.State == "0").Count();
 | |
|                     listdata.Add(typeItems.Count() - closeNum);
 | |
|                     listdata2.Add(closeNum);
 | |
|                 }
 | |
|                 s.data = listdata;
 | |
|                 s2.data = listdata2;
 | |
|                 series.Add(s);
 | |
|                 series.Add(s2);
 | |
|                 businessColumn.categories = listCategories;
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 关键事项统计——按责任人
 | |
|         /// </summary>
 | |
|         protected string Five
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
|                 List<string> listCategories = new List<string>();
 | |
|                 businessColumn.title = "关键事项跟踪-按责任人统计";
 | |
|                 businessColumn.xFontNum = 5;
 | |
|                 //var userIds = BLL.GJSXService.GetGJSXUserList(this.ProjectId);
 | |
|                 var allItems = from x in Funs.DB.GJSX
 | |
|                                where x.ProjectId == this.ProjectId && x.State != "1"
 | |
|                                select x;
 | |
|                 //按照未关闭数取前10
 | |
|                 var groupedUser = (from x in Funs.DB.GJSX
 | |
|                                    where x.ProjectId == this.ProjectId && x.State != "0" && x.State != "1"
 | |
|                                    select x).GroupBy(p => p.User_Acceptance)
 | |
|                           .Select(g => new
 | |
|                           {
 | |
|                               UserId = g.Key,
 | |
|                               Count = g.Count()
 | |
|                           })
 | |
|                           .OrderByDescending(x => x.Count)
 | |
|                           .Take(10)
 | |
|                           .ToList();
 | |
| 
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s2 = new Model.SingleSerie();
 | |
|                 List<double> listdata = new List<double>();
 | |
|                 List<double> listdata2 = new List<double>();
 | |
|                 int closeNum = 0;
 | |
|                 foreach (var userid in groupedUser)
 | |
|                 {
 | |
|                     listCategories.Add(UserService.GetUserNameByUserId(userid.UserId));
 | |
|                     var typeItems = allItems.Where(x => x.User_Acceptance == userid.UserId);
 | |
|                     closeNum = typeItems.Where(x => x.State == "0").Count();
 | |
|                     listdata.Add(typeItems.Count() - closeNum);
 | |
|                     listdata2.Add(closeNum);
 | |
|                 }
 | |
|                 s.data = listdata;
 | |
|                 s2.data = listdata2;
 | |
|                 series.Add(s);
 | |
|                 series.Add(s2);
 | |
|                 businessColumn.categories = listCategories;
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region  超期统计
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 超期统计表格
 | |
|         /// </summary>
 | |
|         private void BindGrid()
 | |
|         {
 | |
|             Model.SGGLDB db = Funs.DB;
 | |
|             var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList();
 | |
|             var allItems = from x in db.GJSX
 | |
|                            where x.ProjectId == this.ProjectId && x.State != "1" && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate) 
 | |
|                            select x;
 | |
|             StringBuilder sb = new StringBuilder();
 | |
|             sb.Append("<table id=\"myTable\" class=\"myTableClass\" > ");
 | |
|             sb.Append("<thead>");
 | |
|             sb.Append("<tr>");
 | |
|             sb.Append("<th class=\"tab-title\" colspan=\"6\">关键事项超期天数统计(累计)</th>");
 | |
|             sb.Append("</tr>");
 | |
|             sb.Append("<tr>");
 | |
|             sb.Append("<th class=\"tab-header\">事项类别</th>");
 | |
|             sb.Append("<th class=\"tab-header\">不足一周</th>");
 | |
|             sb.Append("<th class=\"tab-header\">超期一周</th>");
 | |
|             sb.Append("<th class=\"tab-header\">超期两周</th>");
 | |
|             sb.Append("<th class=\"tab-header\">超期三周</th>");
 | |
|             sb.Append("<th class=\"tab-header\">超一个月</th>");
 | |
|             sb.Append("</tr>");
 | |
|             sb.Append("</thead>");
 | |
|             sb.Append("<tbody>");
 | |
|             foreach (var type in gjsxTypes)
 | |
|             {
 | |
|                 int day1 = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID) && (x.CloseDate ?? DateTime.Now) < Convert.ToDateTime(x.CompleteDate).AddDays(7)).Count();
 | |
|                 int day7 = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID) && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate).AddDays(7) && (x.CloseDate ?? DateTime.Now) < Convert.ToDateTime(x.CompleteDate).AddDays(14)).Count();
 | |
|                 int day14 = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID) && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate).AddDays(14) && (x.CloseDate ?? DateTime.Now) < Convert.ToDateTime(x.CompleteDate).AddDays(21)).Count();
 | |
|                 int day21 = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID) && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate).AddDays(21) && (x.CloseDate ?? DateTime.Now) < Convert.ToDateTime(x.CompleteDate).AddDays(28)).Count();
 | |
|                 int day30 = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID) && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate).AddDays(28)).Count();
 | |
|                 sb.Append("<tr>");
 | |
|                 sb.Append($"<td>{type.GJSXTypeName}</td>");
 | |
|                 sb.Append($"<td>{day1}</td>");
 | |
|                 sb.Append($"<td>{day7}</td>");
 | |
|                 sb.Append($"<td>{day14}</td>");
 | |
|                 sb.Append($"<td>{day21}</td>");
 | |
|                 sb.Append($"<td>{day30}</td>");
 | |
|                 sb.Append("</tr>");
 | |
|             }
 | |
|             sb.Append("</tbody>");
 | |
|             sb.Append("</table>");
 | |
|             myDiv.InnerHtml = sb.ToString();
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 分页
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
 | |
|         {
 | |
|             BindGrid();
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 排序
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
 | |
|         {
 | |
|             BindGrid();
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 超期统计——不足一周
 | |
|         /// </summary>
 | |
|         protected string Three
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
|                 List<string> listCategories = new List<string>();
 | |
|                 businessColumn.title = "关键事项超期天数统计(累计)";
 | |
|                 businessColumn.xFontNum = 5;
 | |
|                 Model.SGGLDB db = Funs.DB;
 | |
|                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList();
 | |
|                 var allItems = from x in Funs.DB.GJSX
 | |
|                                where x.ProjectId == this.ProjectId && x.State != "1"
 | |
|                                && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate)
 | |
|                                && (x.CloseDate ?? DateTime.Now) < Convert.ToDateTime(x.CompleteDate).AddDays(7)
 | |
|                                select x;
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s2 = new Model.SingleSerie();
 | |
|                 List<double> listdata = new List<double>();
 | |
|                 foreach (var type in gjsxTypes)
 | |
|                 {
 | |
|                     listCategories.Add(type.GJSXTypeName);
 | |
|                     var typelst = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID)).ToList();
 | |
|                     listdata.Add(typelst.Count());
 | |
|                 }
 | |
|                 s.data = listdata;
 | |
|                 series.Add(s);
 | |
|                 businessColumn.categories = listCategories;
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 超期统计——超期一周
 | |
|         /// </summary>
 | |
|         protected string Three2
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
|                 List<string> listCategories = new List<string>();
 | |
|                 businessColumn.title = "关键事项超期天数统计(累计)";
 | |
|                 businessColumn.xFontNum = 5;
 | |
|                 Model.SGGLDB db = Funs.DB;
 | |
|                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList();
 | |
|                 var allItems = from x in Funs.DB.GJSX
 | |
|                                where x.ProjectId == this.ProjectId && x.State != "1"
 | |
|                                && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate).AddDays(7)
 | |
|                                && (x.CloseDate ?? DateTime.Now) < Convert.ToDateTime(x.CompleteDate).AddDays(14)
 | |
|                                select x;
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s2 = new Model.SingleSerie();
 | |
|                 List<double> listdata = new List<double>();
 | |
|                 foreach (var type in gjsxTypes)
 | |
|                 {
 | |
|                     listCategories.Add(type.GJSXTypeName);
 | |
|                     var typelst = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID)).ToList();
 | |
|                     listdata.Add(typelst.Count());
 | |
|                 }
 | |
|                 s.data = listdata;
 | |
|                 series.Add(s);
 | |
|                 businessColumn.categories = listCategories;
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 超期统计——超期两周
 | |
|         /// </summary>
 | |
|         protected string Three3
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
|                 List<string> listCategories = new List<string>();
 | |
|                 businessColumn.title = "关键事项超期天数统计(累计)";
 | |
|                 businessColumn.xFontNum = 5;
 | |
|                 Model.SGGLDB db = Funs.DB;
 | |
|                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList();
 | |
|                 var allItems = from x in Funs.DB.GJSX
 | |
|                                where x.ProjectId == this.ProjectId && x.State != "1"
 | |
|                                && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate).AddDays(14)
 | |
|                                && (x.CloseDate ?? DateTime.Now) < Convert.ToDateTime(x.CompleteDate).AddDays(21)
 | |
|                                select x;
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s2 = new Model.SingleSerie();
 | |
|                 List<double> listdata = new List<double>();
 | |
|                 foreach (var type in gjsxTypes)
 | |
|                 {
 | |
|                     listCategories.Add(type.GJSXTypeName);
 | |
|                     var typelst = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID)).ToList();
 | |
|                     listdata.Add(typelst.Count());
 | |
|                 }
 | |
|                 s.data = listdata;
 | |
|                 series.Add(s);
 | |
|                 businessColumn.categories = listCategories;
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 超期统计——超期三周
 | |
|         /// </summary>
 | |
|         protected string Three4
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
|                 List<string> listCategories = new List<string>();
 | |
|                 businessColumn.title = "关键事项超期天数统计(累计)";
 | |
|                 businessColumn.xFontNum = 5;
 | |
|                 Model.SGGLDB db = Funs.DB;
 | |
|                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList();
 | |
|                 var allItems = from x in Funs.DB.GJSX
 | |
|                                where x.ProjectId == this.ProjectId && x.State != "1"
 | |
|                                && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate).AddDays(21)
 | |
|                                && (x.CloseDate ?? DateTime.Now) < Convert.ToDateTime(x.CompleteDate).AddDays(30)
 | |
|                                select x;
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s2 = new Model.SingleSerie();
 | |
|                 List<double> listdata = new List<double>();
 | |
|                 foreach (var type in gjsxTypes)
 | |
|                 {
 | |
|                     listCategories.Add(type.GJSXTypeName);
 | |
|                     var typelst = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID)).ToList();
 | |
|                     listdata.Add(typelst.Count());
 | |
|                 }
 | |
|                 s.data = listdata;
 | |
|                 series.Add(s);
 | |
|                 businessColumn.categories = listCategories;
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 超期统计——超期一个月
 | |
|         /// </summary>
 | |
|         protected string Three5
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
|                 List<string> listCategories = new List<string>();
 | |
|                 businessColumn.title = "关键事项超期天数统计(累计)";
 | |
|                 businessColumn.xFontNum = 5;
 | |
|                 Model.SGGLDB db = Funs.DB;
 | |
|                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList();
 | |
|                 var allItems = from x in Funs.DB.GJSX
 | |
|                                where x.ProjectId == this.ProjectId && x.State != "1"
 | |
|                                && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate).AddDays(30)
 | |
|                                select x;
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s2 = new Model.SingleSerie();
 | |
|                 List<double> listdata = new List<double>();
 | |
|                 foreach (var type in gjsxTypes)
 | |
|                 {
 | |
|                     listCategories.Add(type.GJSXTypeName);
 | |
|                     var typelst = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID)).ToList();
 | |
|                     listdata.Add(typelst.Count());
 | |
|                 }
 | |
|                 s.data = listdata;
 | |
|                 series.Add(s);
 | |
|                 businessColumn.categories = listCategories;
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region  超期平均时间统计
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 超期平均时间统计
 | |
|         /// </summary>
 | |
|         protected string Four
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | |
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | |
|                 List<string> listCategories = new List<string>();
 | |
|                 businessColumn.title = "关键事项——超期平均时间";
 | |
|                 businessColumn.xFontNum = 5;
 | |
|                 Model.SGGLDB db = Funs.DB;
 | |
|                 List<double> listdata = new List<double>();
 | |
|                 List<double> listdata2 = new List<double>();
 | |
|                 List<double> listdata3 = new List<double>();
 | |
|                 Model.SingleSerie s = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s2 = new Model.SingleSerie();
 | |
|                 Model.SingleSerie s3 = new Model.SingleSerie();
 | |
| 
 | |
|                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList();
 | |
|                 //全平台
 | |
|                 var overallItems = from x in Funs.DB.GJSX
 | |
|                                    where (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate) && x.State != "1"
 | |
|                                    select new
 | |
|                                    {
 | |
|                                        x.GJSXTypeId,
 | |
|                                        DiffDay = (double)((x.CloseDate ?? DateTime.Now) - Convert.ToDateTime(x.CompleteDate)).Days //+ 1
 | |
|                                    };
 | |
|                 //本项目
 | |
|                 var allItems = from x in Funs.DB.GJSX
 | |
|                                where x.ProjectId == this.ProjectId && x.State != "1"
 | |
|                                && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate)
 | |
|                                select new
 | |
|                                {
 | |
|                                    x.GJSXTypeId,
 | |
|                                    DiffDay = (double)((x.CloseDate ?? DateTime.Now) - Convert.ToDateTime(x.CompleteDate)).Days //+ 1
 | |
|                                };
 | |
|                 //全平台平均超期时间
 | |
|                 double overallAverageDiffDay = 0;
 | |
|                 if (overallItems.Any())
 | |
|                 {
 | |
|                     overallAverageDiffDay = Math.Round(overallItems.Average(p => p.DiffDay), 1);
 | |
|                 }
 | |
|                 listdata3.Add(overallAverageDiffDay);
 | |
|                 s3.data = listdata3;
 | |
|                 //项目平均超期时间
 | |
|                 double averageDiffDay = 0;
 | |
|                 if (allItems.Any())
 | |
|                 {
 | |
|                     averageDiffDay = Math.Round(allItems.Average(p => p.DiffDay), 1);
 | |
|                 }
 | |
|                 listdata2.Add(averageDiffDay);
 | |
|                 s2.data = listdata2;
 | |
| 
 | |
|                 //各事项类别超期平均时间
 | |
|                 foreach (var type in gjsxTypes)
 | |
|                 {
 | |
|                     listCategories.Add(type.GJSXTypeName);
 | |
|                     var typelst = allItems.Where(x => x.GJSXTypeId.Contains(type.GJSXTypeID)).ToList();
 | |
|                     double averageTypeDiffDay = 0;
 | |
|                     if (typelst.Any())
 | |
|                     {
 | |
|                         averageTypeDiffDay = Math.Round(typelst.Average(p => p.DiffDay), 1);
 | |
|                     }
 | |
|                     listdata.Add(averageTypeDiffDay);
 | |
|                 }
 | |
|                 s.data = listdata;
 | |
|                 series.Add(s);
 | |
|                 series.Add(s2);
 | |
|                 series.Add(s3);
 | |
|                 businessColumn.categories = listCategories;
 | |
|                 businessColumn.series = series;
 | |
|                 return JsonConvert.SerializeObject(businessColumn);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
|     }
 | |
| } |