This commit is contained in:
2024-07-30 10:56:09 +08:00
parent 451f040230
commit fd20439eb9
5 changed files with 820 additions and 6 deletions
@@ -1,16 +1,100 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SystemStatusSummary.aspx.cs" Inherits="FineUIPro.Web.Transfer.Chart.SystemStatusSummary" %>
<%@ Register Src="~/Controls/ChartControl.ascx" TagName="ChartControl" TagPrefix="uc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>移交状态汇总表</title>
<link href="../res/css/common.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
.LabelColor {
color: Red;
font-size: small;
}
.f-grid-row-summary .f-grid-cell-inner {
font-weight: bold;
color: red;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<f:PageManager ID="PageManager1" runat="server" AutoSizePanelID="TabStrip1" AjaxAspnetControls="divAccidentTime" />
<f:Panel ID="Panel2" runat="server" ShowHeader="false" ShowBorder="false" ColumnWidth="100%" MarginRight="5px">
<Items>
<f:TabStrip ID="TabStrip1" CssClass="f-tabstrip-theme-simple" Height="550px" ShowBorder="true"
TabPosition="Top" MarginBottom="5px" EnableTabCloseMenu="false" runat="server" AutoPostBack="true" OnTabIndexChanged="TabStrip1_TabIndexChanged"
ActiveTabIndex="0">
<Tabs>
<f:Tab ID="Tab1" Title="数据表格统计" BodyPadding="5px" Layout="VBox" IconFont="ListAlt" runat="server">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" EnableCollapse="true"
runat="server" DataKeyNames="Category" AllowCellEditing="true" EnableColumnLines="true"
ClicksToEdit="2" DataIDField="Category" AllowSorting="true"
AllowPaging="false" IsDatabasePaging="false"
EnableRowDoubleClickEvent="true" EnableTextSelection="true" EnableSummary="true" SummaryPosition="Flow">
<Columns>
<f:TemplateField ColumnID="tfPageIndex" Width="80px" HeaderText="No.序号" HeaderTextAlign="Center"
TextAlign="Center" EnableLock="true" Locked="False">
<ItemTemplate>
<asp:Label ID="lblPageIndex" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:BoundField DataField="Category" ColumnID="Category" HeaderText="Category<br/>分类" ExpandUnusedSpace="true" MinWidth="150px" TextAlign="Center" />
<f:RenderField Width="200px" ColumnID="System_Qty" DataField="System_Qty" HeaderText="System Qty<br/>系统数量" TextAlign="Center" FieldType="Double" />
<f:GroupField HeaderText="Cumulative Completion<br/>累计完成" TextAlign="Center" MinWidth="600px">
<Columns>
<f:RenderField Width="150px" ColumnID="Cumulative_Plan" DataField="Cumulative_Plan" HeaderText="Plan计划" TextAlign="Center" FieldType="Double" />
<f:RenderField Width="150px" ColumnID="Cumulative_Actual" DataField="Cumulative_Plan" HeaderText="Actual实际" TextAlign="Center" FieldType="Double" />
</Columns>
</f:GroupField>
<f:GroupField HeaderText="This Week<br/>本周" TextAlign="Center" MinWidth="600px">
<Columns>
<f:RenderField Width="150px" ColumnID="Week_Plan" DataField="Week_Plan" HeaderText="Plan计划" TextAlign="Center" FieldType="Double" />
<f:RenderField Width="150px" ColumnID="Week_Actual" DataField="Week_Plan" HeaderText="Actual实际" TextAlign="Center" FieldType="Double" />
</Columns>
</f:GroupField>
</Columns>
</f:Grid>
</Items>
</f:Tab>
<f:Tab ID="Tab2" Title="数据图表统计" BodyPadding="5px" Layout="VBox" IconFont="ListAlt" runat="server">
<Toolbars>
<f:Toolbar>
<Items>
<f:DropDownList ID="ddlDateType" runat="server" Label="日期类型" AutoPostBack="true"
OnSelectedIndexChanged="ddlDateType_SelectedIndexChanged" Width="200px" LabelWidth="80px">
<f:ListItem Value="1" Text="一周"></f:ListItem>
<f:ListItem Value="2" Text="月份"></f:ListItem>
</f:DropDownList>
<f:DropDownList ID="drpChartType" runat="server" Label="图形类型" AutoPostBack="true"
OnSelectedIndexChanged="drpChartType_SelectedIndexChanged" Width="300px" LabelWidth="80px">
<f:ListItem Value="Line" Text="折线图"></f:ListItem>
<f:ListItem Value="Column" Text="柱形图"></f:ListItem>
</f:DropDownList>
</Items>
</f:Toolbar>
</Toolbars>
<Items>
<f:ContentPanel ShowHeader="false" runat="server" ID="cpAccidentTime" Margin="0 0 0 0">
<div id="divAccidentTime">
<uc1:ChartControl ID="ChartAccidentTime" runat="server" />
</div>
</f:ContentPanel>
</Items>
</f:Tab>
</Tabs>
</f:TabStrip>
</Items>
</f:Panel>
</form>
</body>
</html>
@@ -1,17 +1,191 @@
using System;
using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.Transfer.Chart
{
public partial class SystemStatusSummary : System.Web.UI.Page
public partial class SystemStatusSummary : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid1();
}
}
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSearch_Click(object sender, EventArgs e)
{
BindGrid1();
}
/// <summary>
/// 查询绑定数据
/// </summary>
public void BindGrid1()
{
List<SqlParameter> listStr = new List<SqlParameter>();
//计算本周日期段
DateTime today = DateTime.Today;
int dayOfWeek = (int)today.DayOfWeek;
DateTime startWeebTime=Convert.ToDateTime(today.AddDays(-dayOfWeek + 1).ToString("yyyy-MM-dd")+" 00:00:00");
DateTime endWeebTime= Convert.ToDateTime(today.AddDays(-dayOfWeek + 7).ToString("yyyy-MM-dd") + " 23:59:59");
StringBuilder strSql = new StringBuilder("");
strSql.AppendLine(" IF OBJECT_ID('tempdb..#AllLHCSystemListTemp') IS NOT NULL drop table #AllLHCSystemListTemp; ");
strSql.AppendLine(" IF OBJECT_ID('tempdb..#LHCSystemListTemp') IS NOT NULL drop table #LHCSystemListTemp; ");
strSql.AppendLine(" select * INTO #AllLHCSystemListTemp from Transfer_LHCSystemList(NOLOCK) where ProjectId =@ProjectId; ");
strSql.AppendLine(" select isnull([Type],'0') [Type],(CASE isnull([Type],'0') WHEN '1' THEN 'Non Process system' ELSE 'Process System' END) Category,count(1) System_Qty ");
strSql.AppendLine(",cast(0 as decimal(18,2)) Cumulative_Plan,cast(0 as decimal(18,2)) Cumulative_Actual ,cast(0 as decimal(18,2)) Week_Plan,cast(0 as decimal(18,2)) Week_Actual ");
strSql.AppendLine(" INTO #LHCSystemListTemp from #AllLHCSystemListTemp group by isnull([Type],'0'); ");
strSql.AppendLine(" update a set a.Cumulative_Plan=(select count(1) from #AllLHCSystemListTemp b where isnull(b.[Type],'0')=a.[Type] AND isnull(b.PlanFinishofTestingDate,'')<>'') ");
strSql.AppendLine(" ,a.Cumulative_Actual=(select count(1) from #AllLHCSystemListTemp b where isnull(b.[Type],'0')=a.[Type] AND isnull(b.ActualFinishedDate,'')<>'') ");
strSql.AppendLine(" ,a.Week_Plan=(select count(1) from #AllLHCSystemListTemp b where isnull(b.[Type],'0')=a.[Type] AND b.PlanFinishofTestingDate>=@StartWeebTime AND b.PlanFinishofTestingDate<=@EndWeebTime) ");
strSql.AppendLine(" ,a.Week_Actual=(select count(1) from #AllLHCSystemListTemp b where isnull(b.[Type],'0')=a.[Type] AND b.ActualFinishedDate>=@StartWeebTime AND b.ActualFinishedDate<=@EndWeebTime) ");
strSql.AppendLine(" from #LHCSystemListTemp a; ");
strSql.AppendLine(" select * from #LHCSystemListTemp; ");
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
listStr.Add(new SqlParameter("@StartWeebTime", startWeebTime));
listStr.Add(new SqlParameter("@EndWeebTime", dayOfWeek));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql.ToString(), parameter);
Grid1.RecordCount = tb.Rows.Count;
Grid1.DataSource = tb;
Grid1.DataBind();
//合计
int Cumulative_Plan = 0;
int Cumulative_Actual = 0;
int Week_Plan = 0;
int Week_Actual = 0;
int System_Qty=0;
foreach (DataRow row in tb.Rows)
{
System_Qty += Convert.ToInt32(row["System_Qty"]);
Cumulative_Plan += Convert.ToInt32(row["Cumulative_Plan"]);
Cumulative_Actual += Convert.ToInt32(row["Cumulative_Actual"]);
Week_Plan += Convert.ToInt32(row["Week_Plan"]);
Week_Actual += Convert.ToInt32(row["Week_Actual"]);
}
JObject summary = new JObject();
summary.Add("Category", "Total");
summary.Add("System_Qty", System_Qty.ToString());
summary.Add("Cumulative_Plan", Cumulative_Plan.ToString());
summary.Add("Cumulative_Actual", Cumulative_Actual.ToString());
summary.Add("Week_Plan", Week_Plan.ToString());
summary.Add("Week_Actual", Week_Actual.ToString());
Grid1.SummaryData = summary;
}
/// <summary>
/// 查询绑定图表数据
/// </summary>
public void AnalyseData()
{
var forms = from x in Funs.DB.Transfer_LHCSystemList
where x.ProjectId == this.CurrUser.LoginProjectId
select x;
string _dateType = ddlDateType.SelectedValue;
#region
if (_dateType == "1")
{
///按单位统计
DataTable dtTime = new DataTable();
dtTime.Columns.Add("日期", typeof(string));
dtTime.Columns.Add("计划完成数量", typeof(string));
dtTime.Columns.Add("实际完成数量", typeof(string));
dtTime.Columns.Add("进行中移交包数量", typeof(string));
for (int i = 6; i >= 0; i--)
{
DataRow rowTime = dtTime.NewRow();
DateTime QueryTime = DateTime.Now.AddDays(i * -1);
rowTime["日期"] = QueryTime.ToString("yyyy/MM/dd");
DateTime startTime = Convert.ToDateTime(QueryTime.ToString("yyyy-MM-dd") + " 00:00:00");
DateTime endTime = Convert.ToDateTime(QueryTime.ToString("yyyy-MM-dd") + " 23:59:59");
rowTime["计划完成数量"] = forms.Where(x => x.PlanFinishofTestingDate <= endTime).Count();
rowTime["实际完成数量"] = forms.Where(x => x.ActualFinishedDate <= endTime).Count();
rowTime["进行中移交包数量"] = forms.Where(x => x.UpdateTime <= endTime && x.Status== "In progress").Count();
dtTime.Rows.Add(rowTime);
}
this.ChartAccidentTime.CreateChart(BLL.ChartControlService.GetDataSourceChart(dtTime, "尾项完成统计分析", this.drpChartType.SelectedValue, 1300, 550, false));
}
#endregion
//按照当前月份到一月份的数据
if (_dateType == "2")
{
///按单位统计
DataTable dtTime = new DataTable();
dtTime.Columns.Add("月份", typeof(string));
dtTime.Columns.Add("计划完成数量", typeof(string));
dtTime.Columns.Add("实际完成数量", typeof(string));
dtTime.Columns.Add("进行中移交包数量", typeof(string));
for (int i = 1; i <= DateTime.Now.Month; i++)
{
DataRow rowTime = dtTime.NewRow();
DateTime QueryTime = Convert.ToDateTime($"{DateTime.Now.Year.ToString()}-{i}-1 00:00:00");
rowTime["月份"] = QueryTime.ToString("yyyy/MM");
DateTime startTime = QueryTime;
DateTime endTime = Convert.ToDateTime(QueryTime.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59");
rowTime["计划完成数量"] = forms.Where(x => x.PlanFinishofTestingDate <= endTime).Count();
rowTime["实际完成数量"] = forms.Where(x => x.ActualFinishedDate <= endTime).Count();
rowTime["进行中移交包数量"] = forms.Where(x => x.UpdateTime <= endTime && x.Status == "In progress").Count();
dtTime.Rows.Add(rowTime);
}
this.ChartAccidentTime.CreateChart(BLL.ChartControlService.GetDataSourceChart(dtTime, "尾项完成统计分析", this.drpChartType.SelectedValue, 1300, 550, false));
}
}
protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
{
if (TabStrip1.ActiveTabIndex == 0)
{
BindGrid1();
}
else if (TabStrip1.ActiveTabIndex == 1)
{
AnalyseData();
}
}
/// <summary>
/// 图形变换
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void drpChartType_SelectedIndexChanged(object sender, EventArgs e)
{
this.AnalyseData();
}
/// <summary>
/// 现在日期类型
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlDateType_SelectedIndexChanged(object sender, EventArgs e)
{
this.AnalyseData();
}
}
}
@@ -22,5 +22,104 @@ namespace FineUIPro.Web.Transfer.Chart
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel2;
/// <summary>
/// TabStrip1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TabStrip TabStrip1;
/// <summary>
/// Tab1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tab Tab1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// lblPageIndex 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblPageIndex;
/// <summary>
/// Tab2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tab Tab2;
/// <summary>
/// ddlDateType 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlDateType;
/// <summary>
/// drpChartType 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpChartType;
/// <summary>
/// cpAccidentTime 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ContentPanel cpAccidentTime;
/// <summary>
/// ChartAccidentTime 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::Web.Controls.ChartControl ChartAccidentTime;
}
}