施工人力
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user