diff --git a/.gitignore b/.gitignore
index e69de29b..ec471dcb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/SGGL/FineUIPro.Web/File/Excel/Temp
+/SGGL/FineUIPro.Web/FileUpload/Transfer/PunchlistFrom/2024-02
diff --git a/DataBase/版本日志/SGGLDB_WH_2024-02-08.sql b/DataBase/版本日志/SGGLDB_WH_2024-02-08.sql
new file mode 100644
index 00000000..d8e3e272
--- /dev/null
+++ b/DataBase/版本日志/SGGLDB_WH_2024-02-08.sql
@@ -0,0 +1,29 @@
+delete Sys_Menu where MenuId='EE7E37CA-384F-41B3-BAEE-89CBD9954AB3'
+delete Sys_Menu where MenuId='9ACDF513-BD63-48F5-BFA3-B9B1B7FA19E1'
+delete Sys_Menu where MenuId='3D554109-D95F-4051-8A6C-5616A7A95C94'
+INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Icon,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed)VALUES('EE7E37CA-384F-41B3-BAEE-89CBD9954AB3','ԤԳ',null,'TestRun/Report/PreRunSchedule.aspx',1,'2BF9C16D-536F-4F89-AA59-49ED1A1A164C','Menu_TestRun',0,1,1)
+INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Icon,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed)VALUES('9ACDF513-BD63-48F5-BFA3-B9B1B7FA19E1','Գ',null,'TestRun/Report/TestRunSchedule.aspx',2,'2BF9C16D-536F-4F89-AA59-49ED1A1A164C','Menu_TestRun',0,1,1)
+INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Icon,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed)VALUES('3D554109-D95F-4051-8A6C-5616A7A95C94','ҳ',null,'TestRun/Report/ScheduleSetUp.aspx',3,'2BF9C16D-536F-4F89-AA59-49ED1A1A164C','Menu_TestRun',0,1,1)
+go
+
+--==ԤԳ/Գ
+if object_id(N'Run_ScheduleSetUp',N'U') is not null
+drop table dbo.Run_ScheduleSetUp
+CREATE TABLE dbo.Run_ScheduleSetUp(
+ ScheduleId varchar(50) NOT NULL,--
+ WorkPackId varchar(50) NOT NULL,--
+ ProjectId varchar(50) NULL,--Ŀ
+ States int null,--1:ԤԳ2:Գ
+ AllNum int null,--ȫ
+ ProgressNum int NULL,--
+ CompleteNum int NULL,--
+ CompleteRate decimal(18,2) NULL,--
+ AddUser varchar(50) NULL,--
+ AddTime datetime NULL,--
+ Sort int NULL,--
+ CONSTRAINT PK_Run_ScheduleSetUp PRIMARY KEY CLUSTERED
+(
+ ScheduleId ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj
index a8c27656..58c788f1 100644
--- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj
+++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj
@@ -1805,6 +1805,9 @@
+
+
+
@@ -16184,6 +16187,27 @@
TestRunReportEdit.aspx
+
+ PreRunSchedule.aspx
+ ASPXCodeBehind
+
+
+ PreRunSchedule.aspx
+
+
+ ScheduleSetUp.aspx
+ ASPXCodeBehind
+
+
+ ScheduleSetUp.aspx
+
+
+ TestRunSchedule.aspx
+ ASPXCodeBehind
+
+
+ TestRunSchedule.aspx
+
TestRun.aspx
ASPXCodeBehind
diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user
index c4484e3e..f8ca7c7a 100644
--- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user
+++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user
@@ -1,7 +1,7 @@
- Debug|Any CPU
+ Release|Any CPU
true
false
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx b/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx
new file mode 100644
index 00000000..38a98a4e
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx
@@ -0,0 +1,143 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PreRunSchedule.aspx.cs" Inherits="FineUIPro.Web.TestRun.Report.PreRunSchedule" %>
+
+
+
+
+
+ 子系统工作包管理
+
+
+
+
+
+
+
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx.cs b/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx.cs
new file mode 100644
index 00000000..6bb1b730
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx.cs
@@ -0,0 +1,322 @@
+using Aspose.Words.Lists;
+using BLL;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace FineUIPro.Web.TestRun.Report
+{
+ public partial class PreRunSchedule : PageBase
+ {
+ ///
+ /// 点击树状主键
+ ///
+ public string TreePreRunId { get { return (string)ViewState["TreePreRunId"]; } set { ViewState["TreePreRunId"] = value; } }
+ ///
+ /// 子系统主键
+ ///
+ public string SsubSystemId { get { return (string)ViewState["SsubSystemId"]; } set { ViewState["SsubSystemId"] = value; } }
+
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!IsPostBack)
+ {
+ this.InitTreeMenu();//加载树
+ TabStrip1.ActiveTabIndex = 0;
+ }
+ }
+
+ #region 加载树
+
+ ///
+ /// 加载树
+ ///
+ private void InitTreeMenu()
+ {
+ this.tvControlItem.Nodes.Clear();
+ TreeNode rootNode = new TreeNode();
+ rootNode.Text = "系统划分";
+ rootNode.NodeID = "0";
+ rootNode.Expanded = true;
+ rootNode.ToolTip = "";
+ rootNode.EnableClickEvent = true;
+ this.tvControlItem.Nodes.Add(rootNode);
+ var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList();
+ var onePreRunLs = allPreRunLs.Where(p => p.PreRunLevel == 1).OrderBy(x => x.Sort);
+ foreach (var item in onePreRunLs)
+ {
+ TreeNode rootUnitNode = new TreeNode();//定义根节点
+ rootUnitNode.NodeID = item.PreRunId;
+ rootUnitNode.Text = item.PreRunName;
+ rootUnitNode.ToolTip = item.PreRunName;
+ rootUnitNode.CommandName = "";
+ rootUnitNode.EnableClickEvent = true;
+ rootUnitNode.EnableExpandEvent = true;
+ rootNode.Nodes.Add(rootUnitNode);
+ rootUnitNode.Expanded = true;
+ var otherPreRunls = allPreRunLs.Where(p => p.PreRunLevel != 1).ToList();
+ this.BindNodes(rootUnitNode, otherPreRunls, item.PreRunId);
+ }
+ }
+
+ ///
+ /// 绑定树节点
+ ///
+ private void BindNodes(TreeNode node, List list, string parentId)
+ {
+
+ var itemList = list.Where(p => p.ParentId == parentId).OrderBy(x => x.Sort).ToList();
+ if (itemList.Count > 0)
+ {
+ foreach (var item in itemList)
+ {
+ TreeNode newNode = new TreeNode();
+ newNode.Text = item.PreRunName;
+ newNode.NodeID = item.PreRunId;
+ newNode.ToolTip = item.PreRunName;
+ newNode.CommandName = "";
+ newNode.EnableClickEvent = true;
+ node.Nodes.Add(newNode);
+ BindNodes(newNode, list, item.PreRunId);
+ }
+ }
+ }
+
+ ///
+ /// 数加载
+ ///
+ protected void tvControlItem_NodeExpand(object sender, TreeNodeEventArgs e)
+ {
+ if (e.Node.Nodes != null)
+ {
+ e.Node.Nodes.Clear();
+ }
+ var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList();
+ this.BindNodes(e.Node, allPreRunLs, e.NodeID);
+ }
+
+ ///
+ /// 点击TreeView
+ ///
+ ///
+ ///
+ protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
+ {
+ this.TreePreRunId = tvControlItem.SelectedNodeID != "0" ? tvControlItem.SelectedNodeID : string.Empty;
+ if (TabStrip1.ActiveTabIndex == 0)
+ {
+ PreRunBrid();
+ }
+ else if (TabStrip1.ActiveTabIndex == 1)
+ {
+ FourDecisionBrid();
+ }
+ }
+
+ #endregion
+
+ #region 数据绑定
+
+ ///
+ /// 预试车绑定
+ ///
+ public void PreRunBrid()
+ {
+ var result = new List();
+ string strSql = "select a.WorkPackId,b.WorkPackName,b.Sort,SUM(case ISNULL(a.InspectIsClose,0) when 1 then 1 else 0 end) as ygbnum,SUM(case ISNULL(a.InspectIsClose,0) when 0 then 1 else 0 end) as wgbnum,COUNT(1) as allnum from PreRun_SubInspectTerm as a inner join PreRun_WorkPackage as b on a.WorkPackId=b.WorkPackId where 1=1 and a.ProjectId=@ProjectId ";
+ List listStr = new List();
+ listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
+ string installationName = "-";
+ string processesName = "-";
+ string systemName = "-";
+ string subsystemName = "-";
+ string columnames = string.Empty;
+ if (!string.IsNullOrWhiteSpace(this.TreePreRunId))
+ {
+ var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId);
+ if (model.PreRunLevel == 1)
+ {
+ installationName = model.PreRunName;
+ columnames = "a.InstallationId";
+ }
+ else if (model.PreRunLevel == 2)
+ {
+ processesName = model.PreRunName;
+ columnames = "a.ProcessesId";
+ }
+ else if (model.PreRunLevel == 3)
+ {
+ systemName = model.PreRunName;
+ columnames = "a.SystemId";
+ }
+ else if (model.PreRunLevel == 4)
+ {
+ subsystemName = model.PreRunName;
+ columnames = "a.SubsystemId";
+ }
+ strSql += $"and {columnames}='{model.PreRunId}'";
+ }
+ strSql += "group by a.WorkPackId,b.WorkPackName,b.Sort order by b.Sort asc";
+ SqlParameter[] parameter = listStr.ToArray();
+ var dt = SQLHelper.GetDataTableRunText(strSql, parameter);
+ if (dt != null)
+ {
+ foreach (DataRow item in dt.Rows)
+ {
+ result.Add(new ScheduleBridDto()
+ {
+ WorkPackId = item["WorkPackId"].ToString(),
+ WorkName = item["WorkPackName"].ToString(),
+ InstallationName = installationName,
+ ProcessesName = processesName,
+ SystemName = systemName,
+ SubsystemName = subsystemName,
+ AllNum = item["allnum"].ToString(),
+ NoCloseNum = item["wgbnum"].ToString(),
+ CloseNum = item["ygbnum"].ToString()
+ });
+ }
+ }
+ GridPreRun.DataSource = result;
+ GridPreRun.DataBind();
+ }
+
+ ///
+ /// 三查四定绑定
+ ///
+ public void FourDecisionBrid()
+ {
+ var result = new List();
+ string strSql = "select b.PreRunId,b.InstallationId,b.ProcessesId,b.SystemId,b.SubsystemId,b.Sort,SUM(case ISNULL(a.DecisionIsClose,0) when 1 then 1 else 0 end) as ygbnum,SUM(case ISNULL(a.DecisionIsClose,0) when 0 then 1 else 0 end) as wgbnum,COUNT(1) as allnum from PreRun_SubThreeChecksFourDecision as a inner join PreRun_SysDevice as b on a.SubSystemId=b.PreRunId where 1=1 and a.ProjectId=@ProjectId ";
+ List listStr = new List();
+ listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
+ string installationName = "-";
+ string processesName = "-";
+ string systemName = "-";
+ string subsystemName = "-";
+ string columnames = string.Empty;
+ if (!string.IsNullOrWhiteSpace(this.TreePreRunId))
+ {
+ var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId);
+ if (model.PreRunLevel == 1)
+ {
+ installationName = model.PreRunName;
+ columnames = "b.InstallationId";
+ }
+ else if (model.PreRunLevel == 2)
+ {
+ processesName = model.PreRunName;
+ columnames = "b.ProcessesId";
+ }
+ else if (model.PreRunLevel == 3)
+ {
+ systemName = model.PreRunName;
+ columnames = "b.SystemId";
+ }
+ else if (model.PreRunLevel == 4)
+ {
+ subsystemName = model.PreRunName;
+ columnames = "b.SubsystemId";
+ }
+ strSql += $"and {columnames}='{model.PreRunId}'";
+ }
+ strSql += "group by b.PreRunId,b.InstallationId,b.ProcessesId,b.SystemId,b.SubsystemId,b.Sort order by b.Sort asc";
+ SqlParameter[] parameter = listStr.ToArray();
+ var dt = SQLHelper.GetDataTableRunText(strSql, parameter);
+ if (dt != null)
+ {
+ foreach (DataRow item in dt.Rows)
+ {
+ result.Add(new ScheduleBridDto()
+ {
+ PreRunId = item["PreRunId"].ToString(),
+ InstallationName = installationName,
+ ProcessesName = processesName,
+ SystemName = systemName,
+ SubsystemName = subsystemName,
+ AllNum = item["allnum"].ToString(),
+ NoCloseNum = item["wgbnum"].ToString(),
+ CloseNum = item["ygbnum"].ToString()
+ });
+ }
+ }
+ GridFourDecision.DataSource = result;
+ GridFourDecision.DataBind();
+ }
+
+ #endregion
+
+ #region 私有方法
+
+ ///
+ /// 点击tab
+ ///
+ protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
+ {
+ if (TabStrip1.ActiveTabIndex == 0)
+ {
+ PreRunBrid();
+ }
+ else if (TabStrip1.ActiveTabIndex == 1)
+ {
+ FourDecisionBrid();
+ }
+ }
+
+ ///
+ /// 预试车统计实体
+ ///
+ public class ScheduleBridDto
+ {
+ ///
+ /// 工作包主键
+ ///
+ public string PreRunId { get; set; }
+ ///
+ /// 工作包主键
+ ///
+ public string WorkPackId { get; set; }
+ ///
+ /// 工作包名称
+ ///
+ public string WorkName { get; set; }
+ ///
+ /// 装置名称
+ ///
+ public string InstallationName { get; set; }
+ ///
+ /// 工序名称
+ ///
+ public string ProcessesName { get; set; }
+ ///
+ /// 系统名称
+ ///
+ public string SystemName { get; set; }
+ ///
+ /// 子系统名称
+ ///
+ public string SubsystemName { get; set; }
+ ///
+ /// 工作包数量
+ ///
+ public string AllNum { get; set; }
+ ///
+ /// 未关闭任务单数量
+ ///
+ public string NoCloseNum { get; set; }
+ ///
+ /// 已关闭任务单数量
+ ///
+ public string CloseNum { get; set; }
+ }
+
+ #endregion
+
+ }
+}
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx.designer.cs b/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx.designer.cs
new file mode 100644
index 00000000..6f80cd30
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/PreRunSchedule.aspx.designer.cs
@@ -0,0 +1,170 @@
+//------------------------------------------------------------------------------
+// <自动生成>
+// 此代码由工具生成。
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+// 自动生成>
+//------------------------------------------------------------------------------
+
+namespace FineUIPro.Web.TestRun.Report
+{
+
+
+ public partial class PreRunSchedule
+ {
+
+ ///
+ /// form1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// PageManager1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.PageManager PageManager1;
+
+ ///
+ /// Panel1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel Panel1;
+
+ ///
+ /// panelLeftRegion 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel panelLeftRegion;
+
+ ///
+ /// tvControlItem 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Tree tvControlItem;
+
+ ///
+ /// panelCenterRegion 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel panelCenterRegion;
+
+ ///
+ /// Toolbar2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar2;
+
+ ///
+ /// hdTrustID 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.HiddenField hdTrustID;
+
+ ///
+ /// SimpleForm1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Form SimpleForm1;
+
+ ///
+ /// zxtsc 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.FormRow zxtsc;
+
+ ///
+ /// TabStrip1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TabStrip TabStrip1;
+
+ ///
+ /// GridPreRun 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Grid GridPreRun;
+
+ ///
+ /// Toolbar1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar1;
+
+ ///
+ /// ToolbarFill 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ToolbarFill ToolbarFill;
+
+ ///
+ /// GridFourDecision 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Grid GridFourDecision;
+
+ ///
+ /// Toolbar3 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar3;
+
+ ///
+ /// ToolbarFill1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ToolbarFill ToolbarFill1;
+ }
+}
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx b/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx
new file mode 100644
index 00000000..8dcea427
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx
@@ -0,0 +1,136 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ScheduleSetUp.aspx.cs" Inherits="FineUIPro.Web.TestRun.Report.ScheduleSetUp" %>
+
+
+
+
+
+ 子系统工作包管理
+
+
+
+
+
+
+
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx.cs b/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx.cs
new file mode 100644
index 00000000..22c01fad
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx.cs
@@ -0,0 +1,315 @@
+using BLL;
+using System;
+using System.Collections.Generic;
+using System.Data.SqlClient;
+using System.Data;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using Model;
+using System.Collections;
+using Apache.NMS.ActiveMQ.Threads;
+using FineUIPro.Web.DataShow;
+using Newtonsoft.Json.Linq;
+using Aspose.Words.Lists;
+using System.Web.UI.DataVisualization.Charting;
+
+namespace FineUIPro.Web.TestRun.Report
+{
+ public partial class ScheduleSetUp : PageBase
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!IsPostBack)
+ {
+ TabStrip1.ActiveTabIndex = 0;
+ DataBridYsc();
+ }
+ }
+
+ #region 预试车
+
+ ///
+ /// 预试车绑定
+ ///
+ public void DataBridYsc()
+ {
+ if (Funs.DB.Run_ScheduleSetUp.Count(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 1) > 0)
+ {
+ var query = from a in Funs.DB.Run_ScheduleSetUp
+ join b in Funs.DB.PreRun_WorkPackage on a.WorkPackId equals b.WorkPackId
+ where a.States == 1 && a.ProjectId == this.CurrUser.LoginProjectId
+ orderby b.Sort ascending
+ select new Run_ScheduleSetUpDto
+ {
+ ScheduleId = a.ScheduleId,
+ WorkPackId = a.WorkPackId,
+ WorkPackName = b.WorkPackName,
+ ProjectId = a.ProjectId,
+ States = a.States,
+ AllNum = a.AllNum,
+ ProgressNum = a.ProgressNum,
+ CompleteNum = a.CompleteNum,
+ CompleteRate = a.CompleteRate,
+ AddUser = a.AddUser,
+ AddTime = a.AddTime,
+ Sort = a.Sort
+ };
+ GridYsc.DataSource = query.ToList();
+ }
+ else
+ {
+ var result = new List();
+ string strSql = @"select a.WorkPackId,a.WorkPackName,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId) as AllNum,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=0) as ProgressNum,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=1) as CompleteNum from PreRun_WorkPackage as a order by a.Sort"; List listStr = new List();
+ listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
+ SqlParameter[] parameter = listStr.ToArray();
+ DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
+ if (tb.Rows.Count > 0)
+ {
+ int i = 1;
+ foreach (DataRow row in tb.Rows)
+ {
+ var model = new Run_ScheduleSetUpDto();
+ model.ScheduleId = Guid.NewGuid().ToString();
+ model.WorkPackId = row["WorkPackId"].ToString();
+ model.WorkPackName = row["WorkPackName"].ToString();
+ model.ProjectId = this.CurrUser.LoginProjectId;
+ model.States = 1;
+ model.AllNum = int.Parse(row["AllNum"].ToString());
+ model.ProgressNum = int.Parse(row["ProgressNum"].ToString());
+ model.CompleteNum = int.Parse(row["CompleteNum"].ToString());
+ var rate = model.CompleteNum > 0 ? (decimal)Math.Round((float)model.CompleteNum / (float)model.AllNum * 100, 2, MidpointRounding.AwayFromZero) : 0;
+ if (rate > 100) rate = 100;
+ model.CompleteRate = rate;
+ model.AddUser = this.CurrUser.UserId;
+ model.AddTime = DateTime.Now;
+ model.Sort = i;
+ result.Add(model);
+ i++;
+ }
+ }
+ GridYsc.DataSource = result;
+ }
+ TabStrip1.ActiveTabIndex = 0;
+ GridYsc.DataBind();
+ }
+
+ ///
+ /// 预试车重置
+ ///
+ protected void btnYscReset_Click(object sender, EventArgs e)
+ {
+ var list = Funs.DB.Run_ScheduleSetUp.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 1);
+ if (list.Count() > 0)
+ {
+ Funs.DB.Run_ScheduleSetUp.DeleteAllOnSubmit(list);
+ Funs.DB.SubmitChanges();
+ }
+ DataBridYsc();
+ ShowNotify("重置成功!", MessageBoxIcon.Success);
+ }
+
+ ///
+ /// 预试车保存
+ ///
+ protected void btnYscSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var deletelist = Funs.DB.Run_ScheduleSetUp.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 1);
+ Funs.DB.Run_ScheduleSetUp.DeleteAllOnSubmit(deletelist);
+ Funs.DB.SubmitChanges();
+ var addList = new List();
+ JArray mergedData = GridYsc.GetMergedData();
+ foreach (JObject mergedRow in mergedData)
+ {
+ string status = mergedRow.Value("status");
+ JObject values = mergedRow.Value("values");
+ int i = mergedRow.Value("index");
+ var model = new Run_ScheduleSetUp();
+ model.ScheduleId = this.GridYsc.Rows[i].DataKeys[0].ToString();
+ model.WorkPackId = this.GridYsc.Rows[i].DataKeys[1].ToString();
+ model.ProjectId = this.CurrUser.LoginProjectId;
+ model.States = 1;
+ model.AllNum = !string.IsNullOrWhiteSpace(values.Value("AllNum")) ? int.Parse(values.Value("AllNum")) : 0;
+ model.ProgressNum = !string.IsNullOrWhiteSpace(values.Value("ProgressNum")) ? int.Parse(values.Value("ProgressNum")) : 0;
+ model.CompleteNum = !string.IsNullOrWhiteSpace(values.Value("CompleteNum")) ? int.Parse(values.Value("CompleteNum")) : 0;
+ var rate = model.CompleteNum > 0 ? (decimal)Math.Round((float)model.CompleteNum / (float)model.AllNum * 100, 2, MidpointRounding.AwayFromZero) : 0;
+ if (rate > 100) rate = 100;
+ model.CompleteRate = rate;
+ model.AddUser = this.CurrUser.UserId;
+ model.AddTime = DateTime.Now;
+ model.Sort = i;
+ addList.Add(model);
+ }
+
+ Funs.DB.Run_ScheduleSetUp.InsertAllOnSubmit(addList);
+ Funs.DB.SubmitChanges();
+ DataBridYsc();
+ ShowNotify("保存成功!");
+ }
+ catch (Exception ex)
+ {
+ ShowNotify(ex.Message, MessageBoxIcon.Error);
+ }
+ }
+
+ #endregion
+
+ #region 试车
+
+ ///
+ /// 试车绑定
+ ///
+ public void DataBridSc()
+ {
+ if (Funs.DB.Run_ScheduleSetUp.Count(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 2) > 0)
+ {
+ var query = from a in Funs.DB.Run_ScheduleSetUp
+ join b in Funs.DB.TestRun_WorkPackage on a.WorkPackId equals b.WorkPackId
+ where a.States == 2 && a.ProjectId == this.CurrUser.LoginProjectId
+ orderby b.Sort ascending
+ select new Run_ScheduleSetUpDto
+ {
+ ScheduleId = a.ScheduleId,
+ WorkPackId = a.WorkPackId,
+ WorkPackName = b.WorkPackName,
+ ProjectId = a.ProjectId,
+ States = a.States,
+ AllNum = a.AllNum,
+ ProgressNum = a.ProgressNum,
+ CompleteNum = a.CompleteNum,
+ CompleteRate = a.CompleteRate,
+ AddUser = a.AddUser,
+ AddTime = a.AddTime,
+ Sort = a.Sort
+ };
+ GridSc.DataSource = query.ToList();
+ }
+ else
+ {
+ var result = new List();
+ string strSql = @"select a.WorkPackId,a.WorkPackName,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId) as AllNum,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=0) as ProgressNum,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=1) as CompleteNum from TestRun_WorkPackage as a order by a.Sort"; List listStr = new List();
+ listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
+ SqlParameter[] parameter = listStr.ToArray();
+ DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
+ if (tb.Rows.Count > 0)
+ {
+ int i = 1;
+ foreach (DataRow row in tb.Rows)
+ {
+ var model = new Run_ScheduleSetUpDto();
+ model.ScheduleId = Guid.NewGuid().ToString();
+ model.WorkPackId = row["WorkPackId"].ToString();
+ model.WorkPackName = row["WorkPackName"].ToString();
+ model.ProjectId = this.CurrUser.LoginProjectId;
+ model.States = 2;
+ model.AllNum = int.Parse(row["AllNum"].ToString());
+ model.ProgressNum = int.Parse(row["ProgressNum"].ToString());
+ model.CompleteNum = int.Parse(row["CompleteNum"].ToString());
+ model.CompleteRate = model.CompleteNum > 0 ? (decimal)Math.Round((float)model.CompleteNum / (float)model.AllNum, 2, MidpointRounding.AwayFromZero) : 0;
+ model.AddUser = this.CurrUser.UserId;
+ model.AddTime = DateTime.Now;
+ model.Sort = i;
+ result.Add(model);
+ i++;
+ }
+ }
+ GridSc.DataSource = result;
+ }
+ TabStrip1.ActiveTabIndex = 1;
+ GridSc.DataBind();
+ }
+
+ ///
+ /// 试车重置
+ ///
+ protected void btnScReset_Click(object sender, EventArgs e)
+ {
+ var list = Funs.DB.Run_ScheduleSetUp.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 2);
+ if (list.Count() > 0)
+ {
+ Funs.DB.Run_ScheduleSetUp.DeleteAllOnSubmit(list);
+ Funs.DB.SubmitChanges();
+ }
+ DataBridSc();
+ ShowNotify("重置成功!", MessageBoxIcon.Success);
+ }
+
+ ///
+ /// 试车保存
+ ///
+ protected void btnScSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var deletelist = Funs.DB.Run_ScheduleSetUp.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 2);
+ Funs.DB.Run_ScheduleSetUp.DeleteAllOnSubmit(deletelist);
+ Funs.DB.SubmitChanges();
+ var addList = new List();
+ JArray mergedData = GridSc.GetMergedData();
+ foreach (JObject mergedRow in mergedData)
+ {
+ string status = mergedRow.Value("status");
+ JObject values = mergedRow.Value("values");
+ int i = mergedRow.Value("index");
+ var model = new Run_ScheduleSetUp();
+ model.ScheduleId = this.GridSc.Rows[i].DataKeys[0].ToString();
+ model.WorkPackId = this.GridSc.Rows[i].DataKeys[1].ToString();
+ model.ProjectId = this.CurrUser.LoginProjectId;
+ model.States = 2;
+ model.AllNum = !string.IsNullOrWhiteSpace(values.Value("AllNum")) ? int.Parse(values.Value("AllNum")) : 0;
+ model.ProgressNum = !string.IsNullOrWhiteSpace(values.Value("ProgressNum")) ? int.Parse(values.Value("ProgressNum")) : 0;
+ model.CompleteNum = !string.IsNullOrWhiteSpace(values.Value("CompleteNum")) ? int.Parse(values.Value("CompleteNum")) : 0;
+ model.CompleteRate = model.CompleteNum > 0 ? (decimal)Math.Round((float)model.CompleteNum / (float)model.AllNum, 2, MidpointRounding.AwayFromZero) : 0;
+ model.AddUser = this.CurrUser.UserId;
+ model.AddTime = DateTime.Now;
+ model.Sort = i;
+ addList.Add(model);
+ }
+
+ Funs.DB.Run_ScheduleSetUp.InsertAllOnSubmit(addList);
+ Funs.DB.SubmitChanges();
+ DataBridSc();
+ ShowNotify("保存成功!");
+ }
+ catch (Exception ex)
+ {
+ ShowNotify(ex.Message, MessageBoxIcon.Error);
+ }
+ }
+
+ #endregion
+
+ #region 私有方法
+
+ ///
+ /// 私有方法
+ ///
+ protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
+ {
+ if (TabStrip1.ActiveTabIndex == 0)
+ {
+ //预试车
+ DataBridYsc();
+ }
+ else if (TabStrip1.ActiveTabIndex == 1)
+ {
+ //试车
+ DataBridSc();
+ }
+ }
+
+ public class Run_ScheduleSetUpDto : Run_ScheduleSetUp
+ {
+ ///
+ /// 工作包名称
+ ///
+ public string WorkPackName { get; set; }
+ }
+
+ #endregion
+
+ }
+}
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx.designer.cs b/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx.designer.cs
new file mode 100644
index 00000000..5baafb6d
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/ScheduleSetUp.aspx.designer.cs
@@ -0,0 +1,215 @@
+//------------------------------------------------------------------------------
+// <自动生成>
+// 此代码由工具生成。
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+// 自动生成>
+//------------------------------------------------------------------------------
+
+namespace FineUIPro.Web.TestRun.Report
+{
+
+
+ public partial class ScheduleSetUp
+ {
+
+ ///
+ /// form1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// PageManager1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.PageManager PageManager1;
+
+ ///
+ /// Panel1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel Panel1;
+
+ ///
+ /// panelCenterRegion 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel panelCenterRegion;
+
+ ///
+ /// Toolbar2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar2;
+
+ ///
+ /// SimpleForm1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Form SimpleForm1;
+
+ ///
+ /// zxtsc 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.FormRow zxtsc;
+
+ ///
+ /// TabStrip1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TabStrip TabStrip1;
+
+ ///
+ /// GridYsc 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Grid GridYsc;
+
+ ///
+ /// Toolbar1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar1;
+
+ ///
+ /// btnYscReset 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnYscReset;
+
+ ///
+ /// btnYscSave 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnYscSave;
+
+ ///
+ /// txtAllNum 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.NumberBox txtAllNum;
+
+ ///
+ /// txtProgressNum 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.NumberBox txtProgressNum;
+
+ ///
+ /// txtCompleteNum 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.NumberBox txtCompleteNum;
+
+ ///
+ /// GridSc 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Grid GridSc;
+
+ ///
+ /// Toolbar3 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar3;
+
+ ///
+ /// btnScReset 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnScReset;
+
+ ///
+ /// btnScSave 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnScSave;
+
+ ///
+ /// txtAllNum1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.NumberBox txtAllNum1;
+
+ ///
+ /// txtProgressNum1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.NumberBox txtProgressNum1;
+
+ ///
+ /// txtCompleteNum1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.NumberBox txtCompleteNum1;
+ }
+}
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx b/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx
new file mode 100644
index 00000000..ef55ff51
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx
@@ -0,0 +1,98 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestRunSchedule.aspx.cs" Inherits="FineUIPro.Web.TestRun.Report.TestRunSchedule" %>
+
+
+
+
+
+ 子系统工作包管理
+
+
+
+
+
+
+
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx.cs b/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx.cs
new file mode 100644
index 00000000..6c23377c
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx.cs
@@ -0,0 +1,232 @@
+using BLL;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Data.SqlClient;
+using System.Data;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace FineUIPro.Web.TestRun.Report
+{
+ public partial class TestRunSchedule : PageBase
+ {
+ ///
+ /// 点击树状主键
+ ///
+ public string TreePreRunId { get { return (string)ViewState["TreePreRunId"]; } set { ViewState["TreePreRunId"] = value; } }
+ ///
+ /// 子系统主键
+ ///
+ public string SsubSystemId { get { return (string)ViewState["SsubSystemId"]; } set { ViewState["SsubSystemId"] = value; } }
+
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!IsPostBack)
+ {
+ this.InitTreeMenu();//加载树
+ }
+ }
+
+
+ #region 加载树
+
+ ///
+ /// 加载树
+ ///
+ private void InitTreeMenu()
+ {
+ this.tvControlItem.Nodes.Clear();
+ TreeNode rootNode = new TreeNode();
+ rootNode.Text = "系统划分";
+ rootNode.NodeID = "0";
+ rootNode.Expanded = true;
+ rootNode.ToolTip = "";
+ rootNode.EnableClickEvent = true;
+ this.tvControlItem.Nodes.Add(rootNode);
+ var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId && p.PreRunLevel != 4).ToList();
+ var onePreRunLs = allPreRunLs.Where(p => p.PreRunLevel == 1).OrderBy(x => x.Sort);
+ foreach (var item in onePreRunLs)
+ {
+ TreeNode rootUnitNode = new TreeNode();//定义根节点
+ rootUnitNode.NodeID = item.PreRunId;
+ rootUnitNode.Text = item.PreRunName;
+ rootUnitNode.ToolTip = item.PreRunName;
+ rootUnitNode.CommandName = "";
+ rootUnitNode.EnableClickEvent = true;
+ rootUnitNode.EnableExpandEvent = true;
+ rootNode.Nodes.Add(rootUnitNode);
+ rootUnitNode.Expanded = true;
+ var otherPreRunls = allPreRunLs.Where(p => p.PreRunLevel != 1).ToList();
+ this.BindNodes(rootUnitNode, otherPreRunls, item.PreRunId);
+ }
+ }
+
+ ///
+ /// 绑定树节点
+ ///
+ private void BindNodes(TreeNode node, List list, string parentId)
+ {
+
+ var itemList = list.Where(p => p.ParentId == parentId).OrderBy(x => x.Sort).ToList();
+ if (itemList.Count > 0)
+ {
+ foreach (var item in itemList)
+ {
+ TreeNode newNode = new TreeNode();
+ newNode.Text = item.PreRunName;
+ newNode.NodeID = item.PreRunId;
+ newNode.ToolTip = item.PreRunName;
+ newNode.CommandName = "";
+ newNode.EnableClickEvent = true;
+ node.Nodes.Add(newNode);
+ BindNodes(newNode, list, item.PreRunId);
+ }
+ }
+ }
+
+ ///
+ /// 数加载
+ ///
+ protected void tvControlItem_NodeExpand(object sender, TreeNodeEventArgs e)
+ {
+ if (e.Node.Nodes != null)
+ {
+ e.Node.Nodes.Clear();
+ }
+ var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList();
+ this.BindNodes(e.Node, allPreRunLs, e.NodeID);
+ }
+
+ ///
+ /// 点击TreeView
+ ///
+ ///
+ ///
+ protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
+ {
+ this.TreePreRunId = tvControlItem.SelectedNodeID != "0" ? tvControlItem.SelectedNodeID : string.Empty;
+ TestRunBrid();
+ }
+
+ #endregion
+
+ #region 数据绑定
+
+ ///
+ /// 预试车绑定
+ ///
+ public void TestRunBrid()
+ {
+ var result = new List();
+ string strSql = "select a.WorkPackId,b.WorkPackName,b.Sort,SUM(case ISNULL(a.InspectIsClose,0) when 1 then 1 else 0 end) as ygbnum,SUM(case ISNULL(a.InspectIsClose,0) when 0 then 1 else 0 end) as wgbnum,COUNT(1) as allnum from TestRun_SubInspectTerm as a inner join TestRun_WorkPackage as b on a.WorkPackId=b.WorkPackId where 1=1 and a.ProjectId=@ProjectId ";
+ List listStr = new List();
+ listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
+ string installationName = "-";
+ string processesName = "-";
+ string systemName = "-";
+ string subsystemName = "-";
+ string columnames = string.Empty;
+ if (!string.IsNullOrWhiteSpace(this.TreePreRunId))
+ {
+ var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId);
+ if (model.PreRunLevel == 1)
+ {
+ installationName = model.PreRunName;
+ columnames = "a.InstallationId";
+ }
+ else if (model.PreRunLevel == 2)
+ {
+ processesName = model.PreRunName;
+ columnames = "a.ProcessesId";
+ }
+ else if (model.PreRunLevel == 3)
+ {
+ systemName = model.PreRunName;
+ columnames = "a.SystemId";
+ }
+ else if (model.PreRunLevel == 4)
+ {
+ subsystemName = model.PreRunName;
+ columnames = "a.SubsystemId";
+ }
+ strSql += $"and {columnames}='{model.PreRunId}'";
+ }
+ strSql += "group by a.WorkPackId,b.WorkPackName,b.Sort order by b.Sort asc";
+ SqlParameter[] parameter = listStr.ToArray();
+ var dt = SQLHelper.GetDataTableRunText(strSql, parameter);
+ if (dt != null)
+ {
+ foreach (DataRow item in dt.Rows)
+ {
+ result.Add(new ScheduleBridDto()
+ {
+ WorkPackId = item["WorkPackId"].ToString(),
+ WorkName = item["WorkPackName"].ToString(),
+ InstallationName = installationName,
+ ProcessesName = processesName,
+ SystemName = systemName,
+ SubsystemName = subsystemName,
+ AllNum = item["allnum"].ToString(),
+ NoCloseNum = item["wgbnum"].ToString(),
+ CloseNum = item["ygbnum"].ToString()
+ });
+ }
+ }
+ GridTestRun.DataSource = result;
+ GridTestRun.DataBind();
+ }
+
+ #endregion
+
+ #region 私有方法
+
+ ///
+ /// 试车统计实体
+ ///
+ public class ScheduleBridDto
+ {
+ ///
+ /// 工作包主键
+ ///
+ public string WorkPackId { get; set; }
+ ///
+ /// 工作包名称
+ ///
+ public string WorkName { get; set; }
+ ///
+ /// 装置名称
+ ///
+ public string InstallationName { get; set; }
+ ///
+ /// 工序名称
+ ///
+ public string ProcessesName { get; set; }
+ ///
+ /// 系统名称
+ ///
+ public string SystemName { get; set; }
+ ///
+ /// 子系统名称
+ ///
+ public string SubsystemName { get; set; }
+ ///
+ /// 工作包数量
+ ///
+ public string AllNum { get; set; }
+ ///
+ /// 未关闭任务单数量
+ ///
+ public string NoCloseNum { get; set; }
+ ///
+ /// 已关闭任务单数量
+ ///
+ public string CloseNum { get; set; }
+ }
+
+ #endregion
+
+ }
+}
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx.designer.cs b/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx.designer.cs
new file mode 100644
index 00000000..4220ff77
--- /dev/null
+++ b/SGGL/FineUIPro.Web/TestRun/Report/TestRunSchedule.aspx.designer.cs
@@ -0,0 +1,134 @@
+//------------------------------------------------------------------------------
+// <自动生成>
+// 此代码由工具生成。
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+// 自动生成>
+//------------------------------------------------------------------------------
+
+namespace FineUIPro.Web.TestRun.Report
+{
+
+
+ public partial class TestRunSchedule
+ {
+
+ ///
+ /// form1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// PageManager1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.PageManager PageManager1;
+
+ ///
+ /// Panel1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel Panel1;
+
+ ///
+ /// panelLeftRegion 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel panelLeftRegion;
+
+ ///
+ /// tvControlItem 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Tree tvControlItem;
+
+ ///
+ /// panelCenterRegion 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel panelCenterRegion;
+
+ ///
+ /// Toolbar2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar2;
+
+ ///
+ /// hdTrustID 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.HiddenField hdTrustID;
+
+ ///
+ /// SimpleForm1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Form SimpleForm1;
+
+ ///
+ /// zxtsc 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.FormRow zxtsc;
+
+ ///
+ /// GridTestRun 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Grid GridTestRun;
+
+ ///
+ /// Toolbar1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar1;
+
+ ///
+ /// ToolbarFill 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ToolbarFill ToolbarFill;
+ }
+}
diff --git a/SGGL/FineUIPro.Web/Web.config b/SGGL/FineUIPro.Web/Web.config
index d3e811c5..46631457 100644
--- a/SGGL/FineUIPro.Web/Web.config
+++ b/SGGL/FineUIPro.Web/Web.config
@@ -77,7 +77,7 @@
-
+
diff --git a/SGGL/FineUIPro.Web/common/mainMenu_TestRun.aspx b/SGGL/FineUIPro.Web/common/mainMenu_TestRun.aspx
index 38851095..1e99b4f2 100644
--- a/SGGL/FineUIPro.Web/common/mainMenu_TestRun.aspx
+++ b/SGGL/FineUIPro.Web/common/mainMenu_TestRun.aspx
@@ -71,7 +71,34 @@
+
+
+
+ <%--
+ --%>
+
+<%--
+--%>