| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  | 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; | 
					
						
							| 
									
										
										
										
											2025-03-13 18:32:42 +08:00
										 |  |  |  | using FineUIPro.Web.SysManage; | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.CurrUser.LoginProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                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>(); | 
					
						
							| 
									
										
										
										
											2025-03-15 16:23:28 +08:00
										 |  |  |  |                 businessColumn.title = "关键事项跟踪-按事项类别统计"; | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 businessColumn.xFontNum = 8; | 
					
						
							|  |  |  |  |                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList(); | 
					
						
							|  |  |  |  |                 var allItems = from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.ProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                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>(); | 
					
						
							| 
									
										
										
										
											2025-03-15 16:23:28 +08:00
										 |  |  |  |                 businessColumn.title = "关键事项跟踪-按责任人统计"; | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 businessColumn.xFontNum = 5; | 
					
						
							| 
									
										
										
										
											2025-03-13 18:32:42 +08:00
										 |  |  |  |                 //var userIds = BLL.GJSXService.GetGJSXUserList(this.ProjectId); | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 var allItems = from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.ProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                select x; | 
					
						
							| 
									
										
										
										
											2025-03-13 18:32:42 +08:00
										 |  |  |  |                 //按照未关闭数取前10 | 
					
						
							|  |  |  |  |                 var groupedUser = (from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                    where x.ProjectId == this.ProjectId && x.State != "0" && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 18:32:42 +08:00
										 |  |  |  |                                    select x).GroupBy(p => p.User_Acceptance) | 
					
						
							|  |  |  |  |                           .Select(g => new | 
					
						
							|  |  |  |  |                           { | 
					
						
							|  |  |  |  |                               UserId = g.Key, | 
					
						
							|  |  |  |  |                               Count = g.Count() | 
					
						
							|  |  |  |  |                           }) | 
					
						
							|  |  |  |  |                           .OrderByDescending(x => x.Count) | 
					
						
							|  |  |  |  |                           .Take(10) | 
					
						
							|  |  |  |  |                           .ToList(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 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; | 
					
						
							| 
									
										
										
										
											2025-03-13 18:32:42 +08:00
										 |  |  |  |                 foreach (var userid in groupedUser) | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 { | 
					
						
							| 
									
										
										
										
											2025-03-13 18:32:42 +08:00
										 |  |  |  |                     listCategories.Add(UserService.GetUserNameByUserId(userid.UserId)); | 
					
						
							|  |  |  |  |                     var typeItems = allItems.Where(x => x.User_Acceptance == userid.UserId); | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                     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(); | 
					
						
							| 
									
										
										
										
											2025-03-25 18:58:30 +08:00
										 |  |  |  |             var allItems = from x in db.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                            where x.ProjectId == this.ProjectId && x.State != "1" && (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate)  | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                            select x; | 
					
						
							|  |  |  |  |             StringBuilder sb = new StringBuilder(); | 
					
						
							|  |  |  |  |             sb.Append("<table id=\"myTable\" class=\"myTableClass\" > "); | 
					
						
							|  |  |  |  |             sb.Append("<thead>"); | 
					
						
							|  |  |  |  |             sb.Append("<tr>"); | 
					
						
							| 
									
										
										
										
											2025-03-15 16:23:28 +08:00
										 |  |  |  |             sb.Append("<th class=\"tab-title\" colspan=\"6\">关键事项超期天数统计(累计)</th>"); | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |             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>(); | 
					
						
							| 
									
										
										
										
											2025-03-15 16:23:28 +08:00
										 |  |  |  |                 businessColumn.title = "关键事项超期天数统计(累计)"; | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 businessColumn.xFontNum = 5; | 
					
						
							|  |  |  |  |                 Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList(); | 
					
						
							|  |  |  |  |                 var allItems = from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.ProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                && (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>(); | 
					
						
							| 
									
										
										
										
											2025-03-15 16:23:28 +08:00
										 |  |  |  |                 businessColumn.title = "关键事项超期天数统计(累计)"; | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 businessColumn.xFontNum = 5; | 
					
						
							|  |  |  |  |                 Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList(); | 
					
						
							|  |  |  |  |                 var allItems = from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.ProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                && (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>(); | 
					
						
							| 
									
										
										
										
											2025-03-15 16:23:28 +08:00
										 |  |  |  |                 businessColumn.title = "关键事项超期天数统计(累计)"; | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 businessColumn.xFontNum = 5; | 
					
						
							|  |  |  |  |                 Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList(); | 
					
						
							|  |  |  |  |                 var allItems = from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.ProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                && (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>(); | 
					
						
							| 
									
										
										
										
											2025-03-15 16:23:28 +08:00
										 |  |  |  |                 businessColumn.title = "关键事项超期天数统计(累计)"; | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 businessColumn.xFontNum = 5; | 
					
						
							|  |  |  |  |                 Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList(); | 
					
						
							|  |  |  |  |                 var allItems = from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.ProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                && (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>(); | 
					
						
							| 
									
										
										
										
											2025-03-15 16:23:28 +08:00
										 |  |  |  |                 businessColumn.title = "关键事项超期天数统计(累计)"; | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                 businessColumn.xFontNum = 5; | 
					
						
							|  |  |  |  |                 Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |                 var gjsxTypes = BLL.GJSXTypeService.GetGJSXTypeList(); | 
					
						
							|  |  |  |  |                 var allItems = from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.ProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                && (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 | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                    where (x.CloseDate ?? DateTime.Now) > Convert.ToDateTime(x.CompleteDate) && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                    select new | 
					
						
							|  |  |  |  |                                    { | 
					
						
							|  |  |  |  |                                        x.GJSXTypeId, | 
					
						
							|  |  |  |  |                                        DiffDay = (double)((x.CloseDate ?? DateTime.Now) - Convert.ToDateTime(x.CompleteDate)).Days //+ 1 | 
					
						
							|  |  |  |  |                                    }; | 
					
						
							|  |  |  |  |                 //本项目 | 
					
						
							|  |  |  |  |                 var allItems = from x in Funs.DB.GJSX | 
					
						
							| 
									
										
										
										
											2025-03-24 16:57:46 +08:00
										 |  |  |  |                                where x.ProjectId == this.ProjectId && x.State != "1" | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                                && (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()) | 
					
						
							|  |  |  |  |                     { | 
					
						
							| 
									
										
										
										
											2025-03-13 18:17:12 +08:00
										 |  |  |  |                         averageTypeDiffDay = Math.Round(typelst.Average(p => p.DiffDay), 1); | 
					
						
							| 
									
										
										
										
											2025-03-13 10:52:32 +08:00
										 |  |  |  |                     } | 
					
						
							|  |  |  |  |                     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 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |