关键事项、邮件管理、任务管理
This commit is contained in:
@@ -0,0 +1,500 @@
|
||||
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;
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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 userid in userIds)
|
||||
{
|
||||
listCategories.Add(UserService.GetUserNameByUserId(userid));
|
||||
var typeItems = allItems.Where(x => x.User_Acceptance == 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 Funs.DB.GJSX
|
||||
where x.ProjectId == this.ProjectId && (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.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.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.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.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.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)
|
||||
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.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 = typelst.Average(p => p.DiffDay);
|
||||
}
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user