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);
|
||
}
|
||
}
|
||
}
|
||
} |