191 lines
6.5 KiB
C#
191 lines
6.5 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using BLL;
|
|||
|
using System.Data;
|
|||
|
|
|||
|
|
|||
|
namespace FineUIPro.Web.JDGL.SGManPower
|
|||
|
{
|
|||
|
public partial class ManPowerPlanChart : PageBase
|
|||
|
{
|
|||
|
protected void Page_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!IsPostBack)
|
|||
|
{
|
|||
|
UnitId = Request.Params["UnitId"];
|
|||
|
StartTime = Request.Params["StartTime"];
|
|||
|
EndTime = Request.Params["EndTime"];
|
|||
|
UnitWorkId = Request.Params["UnitWorkId"];
|
|||
|
WorkPostId = Request.Params["WorkPostId"];
|
|||
|
Version = Request.Params["Version"];
|
|||
|
// 初始化图表数据
|
|||
|
InitializeChartData();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public string UnitId
|
|||
|
{
|
|||
|
get => (string)ViewState["UnitId"];
|
|||
|
set => ViewState["UnitId"] = value;
|
|||
|
}
|
|||
|
|
|||
|
public string StartTime
|
|||
|
{
|
|||
|
get => (string)ViewState["StartTime"];
|
|||
|
set => ViewState["StartTime"] = value;
|
|||
|
}
|
|||
|
|
|||
|
public string EndTime
|
|||
|
{
|
|||
|
get => (string)ViewState["EndTime"];
|
|||
|
set => ViewState["EndTime"] = value;
|
|||
|
}
|
|||
|
|
|||
|
public string UnitWorkId
|
|||
|
{
|
|||
|
get => (string)ViewState["UnitWorkId"];
|
|||
|
set => ViewState["UnitWorkId"] = value;
|
|||
|
}
|
|||
|
|
|||
|
public string WorkPostId
|
|||
|
{
|
|||
|
get => (string)ViewState["WorkPostId"];
|
|||
|
set => ViewState["WorkPostId"] = value;
|
|||
|
}
|
|||
|
|
|||
|
public string Version
|
|||
|
{
|
|||
|
get => (string)ViewState["Version"];
|
|||
|
set => ViewState["Version"] = value;
|
|||
|
}
|
|||
|
|
|||
|
private void InitializeChartData()
|
|||
|
{
|
|||
|
// 检查必要参数
|
|||
|
if (string.IsNullOrEmpty(StartTime) || string.IsNullOrEmpty(EndTime))
|
|||
|
{
|
|||
|
ShowNotify("缺少必要的参数,无法生成图表", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
DateTime startDate = Convert.ToDateTime(StartTime);
|
|||
|
DateTime endDate = Convert.ToDateTime(EndTime);
|
|||
|
|
|||
|
// 获取人力计划数据
|
|||
|
var manpowerQuery = from x in Funs.DB.JDGL_SGManPower
|
|||
|
where x.ProjectId == this.CurrUser.LoginProjectId && x.PlanDate >= startDate && x.PlanDate <= endDate
|
|||
|
select x;
|
|||
|
|
|||
|
if (UnitId != Const._Null)
|
|||
|
{
|
|||
|
manpowerQuery = manpowerQuery.Where(x => x.UnitId == UnitId);
|
|||
|
}
|
|||
|
|
|||
|
// 添加装置筛选条件
|
|||
|
if (!string.IsNullOrEmpty(UnitWorkId))
|
|||
|
{
|
|||
|
manpowerQuery = manpowerQuery.Where(x => x.UnitWorkId == UnitWorkId);
|
|||
|
}
|
|||
|
|
|||
|
// 添加岗位筛选条件
|
|||
|
if (!string.IsNullOrEmpty(WorkPostId))
|
|||
|
{
|
|||
|
manpowerQuery = manpowerQuery.Where(x => x.WorkPostId == WorkPostId);
|
|||
|
}
|
|||
|
|
|||
|
// 添加版本筛选条件
|
|||
|
if (!string.IsNullOrEmpty(Version))
|
|||
|
{
|
|||
|
manpowerQuery = manpowerQuery.Where(x => x.Version == Version);
|
|||
|
}
|
|||
|
|
|||
|
var manpowerPlans = manpowerQuery.ToList();
|
|||
|
|
|||
|
// 按日期汇总人数
|
|||
|
var chartData = manpowerPlans
|
|||
|
.Where(x => x.PlanDate.HasValue && x.Quantity.HasValue)
|
|||
|
.GroupBy(x => x.PlanDate.Value.Date)
|
|||
|
.Select(g => new
|
|||
|
{
|
|||
|
Date = g.Key,
|
|||
|
TotalQuantity = g.Sum(x => x.Quantity.Value)
|
|||
|
})
|
|||
|
.OrderBy(x => x.Date)
|
|||
|
.ToList();
|
|||
|
|
|||
|
// 如果没有数据,显示提示信息
|
|||
|
if (chartData.Count == 0)
|
|||
|
{
|
|||
|
ShowNotify("在指定时间范围内没有找到人力计划数据", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 构建图表数据源
|
|||
|
DataTable dt = new DataTable();
|
|||
|
dt.Columns.Add("日期", typeof(string));
|
|||
|
dt.Columns.Add("人员数量", typeof(int));
|
|||
|
|
|||
|
foreach (var item in chartData)
|
|||
|
{
|
|||
|
DataRow row = dt.NewRow();
|
|||
|
row["日期"] = item.Date.ToString("MM-dd");
|
|||
|
row["人员数量"] = item.TotalQuantity;
|
|||
|
dt.Rows.Add(row);
|
|||
|
}
|
|||
|
|
|||
|
// 创建图表数据对象
|
|||
|
Model.DataSourceChart dataSourceChart = new Model.DataSourceChart
|
|||
|
{
|
|||
|
Title = "总人力需求计划",
|
|||
|
ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Column,
|
|||
|
Width = 1000,
|
|||
|
Height = 500,
|
|||
|
IsNotEnable3D = false
|
|||
|
};
|
|||
|
|
|||
|
// 创建数据系列
|
|||
|
Model.DataSourceTeam dataSourceTeam = new Model.DataSourceTeam
|
|||
|
{
|
|||
|
DataPointName = "人员数量",
|
|||
|
DataSourcePoints = new List<Model.DataSourcePoint>() // 确保初始化
|
|||
|
};
|
|||
|
|
|||
|
// 添加数据点
|
|||
|
foreach (DataRow row in dt.Rows)
|
|||
|
{
|
|||
|
Model.DataSourcePoint point = new Model.DataSourcePoint
|
|||
|
{
|
|||
|
PointText = row["日期"].ToString(),
|
|||
|
PointValue = row["人员数量"].ToString()
|
|||
|
};
|
|||
|
// 确保DataSourcePoints不为空后再添加
|
|||
|
if (dataSourceTeam.DataSourcePoints != null)
|
|||
|
{
|
|||
|
dataSourceTeam.DataSourcePoints.Add(point);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 确保DataSourceTeams不为空后再添加
|
|||
|
if (dataSourceChart.DataSourceTeams != null)
|
|||
|
{
|
|||
|
dataSourceChart.DataSourceTeams.Add(dataSourceTeam);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// 如果DataSourceTeams为空,创建一个新的列表
|
|||
|
dataSourceChart.DataSourceTeams = new List<Model.DataSourceTeam> { dataSourceTeam };
|
|||
|
}
|
|||
|
|
|||
|
// 生成图表
|
|||
|
Chart1.CreateChart(dataSourceChart);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
ShowNotify($"生成图表时发生错误: {ex.Message}", MessageBoxIcon.Error);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|