提交代码

This commit is contained in:
高飞 2024-02-08 18:10:24 +08:00
parent 49458be8e5
commit dc645d95ed
18 changed files with 3260 additions and 929 deletions

2
.gitignore vendored
View File

@ -0,0 +1,2 @@
/SGGL/FineUIPro.Web/File/Excel/Temp
/SGGL/FineUIPro.Web/FileUpload/Transfer/PunchlistFrom/2024-02

View File

@ -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

View File

@ -1805,6 +1805,9 @@
<Content Include="TestRun\ProduceTestRun\TestRunRecordEdit.aspx" />
<Content Include="TestRun\ProduceTestRun\TestRunReport.aspx" />
<Content Include="TestRun\ProduceTestRun\TestRunReportEdit.aspx" />
<Content Include="TestRun\Report\PreRunSchedule.aspx" />
<Content Include="TestRun\Report\ScheduleSetUp.aspx" />
<Content Include="TestRun\Report\TestRunSchedule.aspx" />
<Content Include="TestRun\TestRun.aspx" />
<Content Include="TestRun\TestRunEdit.aspx" />
<Content Include="TestRun\TestRunManage\DeviceRun.aspx" />
@ -16184,6 +16187,27 @@
<Compile Include="TestRun\ProduceTestRun\TestRunReportEdit.aspx.designer.cs">
<DependentUpon>TestRunReportEdit.aspx</DependentUpon>
</Compile>
<Compile Include="TestRun\Report\PreRunSchedule.aspx.cs">
<DependentUpon>PreRunSchedule.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="TestRun\Report\PreRunSchedule.aspx.designer.cs">
<DependentUpon>PreRunSchedule.aspx</DependentUpon>
</Compile>
<Compile Include="TestRun\Report\ScheduleSetUp.aspx.cs">
<DependentUpon>ScheduleSetUp.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="TestRun\Report\ScheduleSetUp.aspx.designer.cs">
<DependentUpon>ScheduleSetUp.aspx</DependentUpon>
</Compile>
<Compile Include="TestRun\Report\TestRunSchedule.aspx.cs">
<DependentUpon>TestRunSchedule.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="TestRun\Report\TestRunSchedule.aspx.designer.cs">
<DependentUpon>TestRunSchedule.aspx</DependentUpon>
</Compile>
<Compile Include="TestRun\TestRun.aspx.cs">
<DependentUpon>TestRun.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress>false</Use64BitIISExpress>
<IISExpressSSLPort />

View File

@ -0,0 +1,143 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PreRunSchedule.aspx.cs" Inherits="FineUIPro.Web.TestRun.Report.PreRunSchedule" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>子系统工作包管理</title>
<style>
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" ShowBorder="false" ShowHeader="false" Layout="Region">
<Items>
<f:Panel runat="server" ID="panelLeftRegion" RegionPosition="Left" RegionSplit="true"
EnableCollapse="true" Width="320px" Title="子系统工作包管理" ShowBorder="true" Layout="VBox"
ShowHeader="false" AutoScroll="true" BodyPadding="5px" IconFont="ArrowCircleLeft">
<Items>
<f:Tree ID="tvControlItem" ShowHeader="false" Title="子系统工作包管理节点树" OnNodeCommand="tvControlItem_NodeCommand"
Height="1000px" runat="server" ShowBorder="false" EnableCollapse="true" EnableSingleClickExpand="true"
AutoLeafIdentification="true" EnableSingleExpand="false" EnableTextSelection="true" OnNodeExpand="tvControlItem_NodeExpand">
</f:Tree>
</Items>
</f:Panel>
<f:Panel runat="server" ID="panelCenterRegion" RegionPosition="Center" ShowBorder="true"
Layout="VBox" ShowHeader="false" BodyPadding="5px" IconFont="PlusCircle" Title="子系统工作包管理"
TitleToolTip="子系统工作包管理" AutoScroll="true">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:HiddenField runat="server" ID="hdTrustID"></f:HiddenField>
</Items>
</f:Toolbar>
</Toolbars>
<Items>
<f:Form ID="SimpleForm1" ShowBorder="true" ShowHeader="false" AutoScroll="true" BodyPadding="10px"
runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Rows>
<f:FormRow runat="server" ID="zxtsc">
<Items>
<f:TabStrip ID="TabStrip1" IsFluid="true"
AutoPostBack="true" OnTabIndexChanged="TabStrip1_TabIndexChanged"
ShowBorder="true" ActiveTabIndex="1" runat="server">
<Tabs>
<f:Tab Title="预试车进度" BodyPadding="10px" Layout="Fit" runat="server">
<Items>
<f:Grid Height="550px" ID="GridPreRun" ShowBorder="true" ShowHeader="true" EnableCollapse="true" runat="server" DataIDField="WorkPackId" DataKeyNames="WorkPackId" AllowSorting="false" SortField="Sort" SortDirection="ASC" EnableColumnLines="true" AllowCellEditing="true" EnableMultiSelect="false" AllowPaging="false" IsDatabasePaging="true">
<Toolbars>
<f:Toolbar ID="Toolbar1" runat="server">
<Items>
<f:ToolbarFill ID="ToolbarFill" runat="server"></f:ToolbarFill>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RowNumberField EnablePagingNumber="true" Width="50px" HeaderTextAlign="Center" TextAlign="Center" />
<f:RenderField HeaderText="工作包名称" ColumnID="WorkName" DataField="WorkName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="装置名称" ColumnID="InstallationName" DataField="InstallationName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="工序名称" ColumnID="ProcessesName" DataField="ProcessesName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="系统名称" ColumnID="SystemName" DataField="SystemName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="子系统名称" ColumnID="SubsystemName" DataField="SubsystemName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="工作包数量" ColumnID="AllNum" DataField="AllNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="未关闭任务单数量" ColumnID="NoCloseNum" DataField="NoCloseNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="已关闭任务单数量" ColumnID="CloseNum" DataField="CloseNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</Listeners>
</f:Grid>
</Items>
</f:Tab>
<f:Tab Title="三查四定进度" BodyPadding="10px" Layout="Fit" runat="server">
<Items>
<f:Grid Height="550px" ID="GridFourDecision" ShowBorder="true" ShowHeader="true" EnableCollapse="true" runat="server" DataIDField="PreRunId" DataKeyNames="PreRunId" AllowSorting="false" SortField="Sort" SortDirection="ASC" EnableColumnLines="true" AllowCellEditing="true" EnableMultiSelect="false" AllowPaging="false" IsDatabasePaging="true">
<Toolbars>
<f:Toolbar ID="Toolbar3" runat="server">
<Items>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RowNumberField EnablePagingNumber="true" Width="50px" HeaderTextAlign="Center" TextAlign="Center" />
<f:RenderField HeaderText="装置名称" ColumnID="InstallationName" DataField="InstallationName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="工序名称" ColumnID="ProcessesName" DataField="ProcessesName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="系统名称" ColumnID="SystemName" DataField="SystemName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="子系统名称" ColumnID="SubsystemName" DataField="SubsystemName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="工作包数量" ColumnID="AllNum" DataField="AllNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="未关闭任务单数量" ColumnID="NoCloseNum" DataField="NoCloseNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="已关闭任务单数量" ColumnID="CloseNum" DataField="CloseNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</Listeners>
</f:Grid>
</Items>
</f:Tab>
</Tabs>
</f:TabStrip>
</Items>
</f:FormRow>
</Rows>
</f:Form>
</Items>
</f:Panel>
</Items>
</f:Panel>
</form>
<script type="text/javascript">
// 返回false来阻止浏览器右键菜单
function onRowContextMenu(event, rowId) {
return false;
}
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -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
{
/// <summary>
/// 点击树状主键
/// </summary>
public string TreePreRunId { get { return (string)ViewState["TreePreRunId"]; } set { ViewState["TreePreRunId"] = value; } }
/// <summary>
/// 子系统主键
/// </summary>
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
/// <summary>
/// 加载树
/// </summary>
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);
}
}
/// <summary>
/// 绑定树节点
/// </summary>
private void BindNodes(TreeNode node, List<PreRun_SysDevice> 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);
}
}
}
/// <summary>
/// 数加载
/// </summary>
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);
}
/// <summary>
/// 点击TreeView
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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
/// <summary>
/// 预试车绑定
/// </summary>
public void PreRunBrid()
{
var result = new List<ScheduleBridDto>();
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<SqlParameter> listStr = new List<SqlParameter>();
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();
}
/// <summary>
/// 三查四定绑定
/// </summary>
public void FourDecisionBrid()
{
var result = new List<ScheduleBridDto>();
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<SqlParameter> listStr = new List<SqlParameter>();
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
/// <summary>
/// 点击tab
/// </summary>
protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
{
if (TabStrip1.ActiveTabIndex == 0)
{
PreRunBrid();
}
else if (TabStrip1.ActiveTabIndex == 1)
{
FourDecisionBrid();
}
}
/// <summary>
/// 预试车统计实体
/// </summary>
public class ScheduleBridDto
{
/// <summary>
/// 工作包主键
/// </summary>
public string PreRunId { get; set; }
/// <summary>
/// 工作包主键
/// </summary>
public string WorkPackId { get; set; }
/// <summary>
/// 工作包名称
/// </summary>
public string WorkName { get; set; }
/// <summary>
/// 装置名称
/// </summary>
public string InstallationName { get; set; }
/// <summary>
/// 工序名称
/// </summary>
public string ProcessesName { get; set; }
/// <summary>
/// 系统名称
/// </summary>
public string SystemName { get; set; }
/// <summary>
/// 子系统名称
/// </summary>
public string SubsystemName { get; set; }
/// <summary>
/// 工作包数量
/// </summary>
public string AllNum { get; set; }
/// <summary>
/// 未关闭任务单数量
/// </summary>
public string NoCloseNum { get; set; }
/// <summary>
/// 已关闭任务单数量
/// </summary>
public string CloseNum { get; set; }
}
#endregion
}
}

View File

@ -0,0 +1,170 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.TestRun.Report
{
public partial class PreRunSchedule
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// panelLeftRegion 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelLeftRegion;
/// <summary>
/// tvControlItem 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tree tvControlItem;
/// <summary>
/// panelCenterRegion 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelCenterRegion;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// hdTrustID 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField hdTrustID;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// zxtsc 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow zxtsc;
/// <summary>
/// TabStrip1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TabStrip TabStrip1;
/// <summary>
/// GridPreRun 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid GridPreRun;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// ToolbarFill 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill;
/// <summary>
/// GridFourDecision 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid GridFourDecision;
/// <summary>
/// Toolbar3 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar3;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
}
}

View File

@ -0,0 +1,136 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ScheduleSetUp.aspx.cs" Inherits="FineUIPro.Web.TestRun.Report.ScheduleSetUp" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>子系统工作包管理</title>
<style>
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" ShowBorder="false" ShowHeader="false" Layout="Region">
<Items>
<f:Panel runat="server" ID="panelCenterRegion" RegionPosition="Center" ShowBorder="true"
Layout="VBox" ShowHeader="false" BodyPadding="5px" IconFont="PlusCircle" Title="预试车/试车数据设置"
TitleToolTip="预试车/试车数据设置" AutoScroll="true">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
</Items>
</f:Toolbar>
</Toolbars>
<Items>
<f:Form ID="SimpleForm1" ShowBorder="true" ShowHeader="false" AutoScroll="true" BodyPadding="10px"
runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Rows>
<f:FormRow runat="server" ID="zxtsc">
<Items>
<f:TabStrip ID="TabStrip1" IsFluid="true"
AutoPostBack="true" OnTabIndexChanged="TabStrip1_TabIndexChanged"
ShowBorder="true" ActiveTabIndex="1" runat="server">
<Tabs>
<f:Tab Title="预试车数据设置" BodyPadding="10px" Layout="Fit" runat="server">
<Items>
<f:Grid Height="550px" ID="GridYsc" ShowBorder="true" ClicksToEdit="1" ShowHeader="true" EnableCollapse="true" runat="server" DataIDField="ScheduleId" DataKeyNames="ScheduleId,WorkPackId" AllowSorting="true" SortField="Sort" SortDirection="ASC" EnableColumnLines="true" AllowCellEditing="true" EnableMultiSelect="false" AllowPaging="true" IsDatabasePaging="true" PageSize="10" AllowFilters="true">
<Toolbars>
<f:Toolbar ID="Toolbar1" runat="server">
<Items>
<f:Button ID="btnYscReset" Text="重置" ToolTip="重置" ConfirmText="重置后数据会全部被清空,是否确认?" Icon="Reload" runat="server" OnClick="btnYscReset_Click"></f:Button>
<f:Button ID="btnYscSave" Text="保存" ToolTip="保存" Icon="FilmSave" runat="server" OnClick="btnYscSave_Click"></f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RowNumberField EnablePagingNumber="true" HeaderTextAlign="Center" TextAlign="Center" />
<f:RenderField HeaderText="工作包名称" ColumnID="WorkPackName" DataField="WorkPackName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField HeaderText="全部数量" ColumnID="AllNum" DataField="AllNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="100px">
<Editor>
<f:NumberBox NoNegative="true" runat="server" ID="txtAllNum"></f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField HeaderText="进行中数量" ColumnID="ProgressNum" DataField="ProgressNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center">
<Editor>
<f:NumberBox NoNegative="true" runat="server" ID="txtProgressNum"></f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField HeaderText="已完成数量" ColumnID="CompleteNum" DataField="CompleteNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center">
<Editor>
<f:NumberBox NoNegative="true" runat="server" ID="txtCompleteNum"></f:NumberBox>
</Editor>
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</Listeners>
</f:Grid>
</Items>
</f:Tab>
<f:Tab Title="试车数据设置" BodyPadding="10px" runat="server">
<Items>
<f:Grid Height="550px" ID="GridSc" ClicksToEdit="1" ShowBorder="true" ShowHeader="true" EnableCollapse="true" runat="server" DataIDField="ScheduleId" DataKeyNames="ScheduleId,WorkPackId" AllowSorting="true" SortField="Sort" SortDirection="ASC" EnableColumnLines="true" AllowCellEditing="true" EnableMultiSelect="false" AllowPaging="true" IsDatabasePaging="true" PageSize="10" AllowFilters="true">
<Toolbars>
<f:Toolbar ID="Toolbar3" runat="server">
<Items>
<f:Button ID="btnScReset" Text="重置" ToolTip="重置" ConfirmText="重置后数据会全部被清空,是否确认?" Icon="Reload" runat="server" OnClick="btnScReset_Click"></f:Button>
<f:Button ID="btnScSave" Text="保存" ToolTip="保存" Icon="FilmSave" runat="server" OnClick="btnScSave_Click"></f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RowNumberField EnablePagingNumber="true" Width="100px" HeaderTextAlign="Center" TextAlign="Center" />
<f:RenderField HeaderText="工作包名称" ColumnID="WorkPackName" DataField="WorkPackName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="全部数量" ColumnID="AllNum" DataField="AllNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="100px">
<Editor>
<f:NumberBox NoNegative="true" runat="server" ID="txtAllNum1"></f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField HeaderText="进行中数量" ColumnID="ProgressNum" DataField="ProgressNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="100px">
<Editor>
<f:NumberBox NoNegative="true" runat="server" ID="txtProgressNum1"></f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField HeaderText="已完成数量" ColumnID="CompleteNum" DataField="CompleteNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="100px">
<Editor>
<f:NumberBox NoNegative="true" runat="server" ID="txtCompleteNum1"></f:NumberBox>
</Editor>
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</Listeners>
</f:Grid>
</Items>
</f:Tab>
</Tabs>
</f:TabStrip>
</Items>
</f:FormRow>
</Rows>
</f:Form>
</Items>
</f:Panel>
</Items>
</f:Panel>
</form>
<script type="text/javascript">
// 返回false来阻止浏览器右键菜单
function onRowContextMenu(event, rowId) {
return false;
}
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -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
/// <summary>
/// 预试车绑定
/// </summary>
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<Run_ScheduleSetUpDto>();
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<SqlParameter> listStr = new List<SqlParameter>();
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();
}
/// <summary>
/// 预试车重置
/// </summary>
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);
}
/// <summary>
/// 预试车保存
/// </summary>
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<Run_ScheduleSetUp>();
JArray mergedData = GridYsc.GetMergedData();
foreach (JObject mergedRow in mergedData)
{
string status = mergedRow.Value<string>("status");
JObject values = mergedRow.Value<JObject>("values");
int i = mergedRow.Value<int>("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<string>("AllNum")) ? int.Parse(values.Value<string>("AllNum")) : 0;
model.ProgressNum = !string.IsNullOrWhiteSpace(values.Value<string>("ProgressNum")) ? int.Parse(values.Value<string>("ProgressNum")) : 0;
model.CompleteNum = !string.IsNullOrWhiteSpace(values.Value<string>("CompleteNum")) ? int.Parse(values.Value<string>("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
/// <summary>
/// 试车绑定
/// </summary>
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<Run_ScheduleSetUpDto>();
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<SqlParameter> listStr = new List<SqlParameter>();
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();
}
/// <summary>
/// 试车重置
/// </summary>
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);
}
/// <summary>
/// 试车保存
/// </summary>
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<Run_ScheduleSetUp>();
JArray mergedData = GridSc.GetMergedData();
foreach (JObject mergedRow in mergedData)
{
string status = mergedRow.Value<string>("status");
JObject values = mergedRow.Value<JObject>("values");
int i = mergedRow.Value<int>("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<string>("AllNum")) ? int.Parse(values.Value<string>("AllNum")) : 0;
model.ProgressNum = !string.IsNullOrWhiteSpace(values.Value<string>("ProgressNum")) ? int.Parse(values.Value<string>("ProgressNum")) : 0;
model.CompleteNum = !string.IsNullOrWhiteSpace(values.Value<string>("CompleteNum")) ? int.Parse(values.Value<string>("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
/// <summary>
/// 私有方法
/// </summary>
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
{
/// <summary>
/// 工作包名称
/// </summary>
public string WorkPackName { get; set; }
}
#endregion
}
}

View File

@ -0,0 +1,215 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.TestRun.Report
{
public partial class ScheduleSetUp
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// panelCenterRegion 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelCenterRegion;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// zxtsc 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow zxtsc;
/// <summary>
/// TabStrip1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TabStrip TabStrip1;
/// <summary>
/// GridYsc 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid GridYsc;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// btnYscReset 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnYscReset;
/// <summary>
/// btnYscSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnYscSave;
/// <summary>
/// txtAllNum 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtAllNum;
/// <summary>
/// txtProgressNum 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtProgressNum;
/// <summary>
/// txtCompleteNum 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtCompleteNum;
/// <summary>
/// GridSc 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid GridSc;
/// <summary>
/// Toolbar3 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar3;
/// <summary>
/// btnScReset 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnScReset;
/// <summary>
/// btnScSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnScSave;
/// <summary>
/// txtAllNum1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtAllNum1;
/// <summary>
/// txtProgressNum1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtProgressNum1;
/// <summary>
/// txtCompleteNum1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtCompleteNum1;
}
}

View File

@ -0,0 +1,98 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestRunSchedule.aspx.cs" Inherits="FineUIPro.Web.TestRun.Report.TestRunSchedule" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>子系统工作包管理</title>
<style>
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" ShowBorder="false" ShowHeader="false" Layout="Region">
<Items>
<f:Panel runat="server" ID="panelLeftRegion" RegionPosition="Left" RegionSplit="true"
EnableCollapse="true" Width="320px" Title="子系统工作包管理" ShowBorder="true" Layout="VBox"
ShowHeader="false" AutoScroll="true" BodyPadding="5px" IconFont="ArrowCircleLeft">
<Items>
<f:Tree ID="tvControlItem" ShowHeader="false" Title="子系统工作包管理节点树" OnNodeCommand="tvControlItem_NodeCommand"
Height="1000px" runat="server" ShowBorder="false" EnableCollapse="true" EnableSingleClickExpand="true"
AutoLeafIdentification="true" EnableSingleExpand="false" EnableTextSelection="true" OnNodeExpand="tvControlItem_NodeExpand">
</f:Tree>
</Items>
</f:Panel>
<f:Panel runat="server" ID="panelCenterRegion" RegionPosition="Center" ShowBorder="true"
Layout="VBox" ShowHeader="false" BodyPadding="5px" IconFont="PlusCircle" Title="子系统工作包管理"
TitleToolTip="子系统工作包管理" AutoScroll="true">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:HiddenField runat="server" ID="hdTrustID"></f:HiddenField>
</Items>
</f:Toolbar>
</Toolbars>
<Items>
<f:Form ID="SimpleForm1" ShowBorder="true" ShowHeader="false" AutoScroll="true" BodyPadding="10px"
runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Rows>
<f:FormRow runat="server" ID="zxtsc">
<Items>
<f:Grid Height="550px" ID="GridTestRun" ShowBorder="true" ShowHeader="true" EnableCollapse="true" runat="server" DataIDField="WorkPackId" DataKeyNames="WorkPackId" AllowSorting="false" SortField="Sort" SortDirection="ASC" EnableColumnLines="true" AllowCellEditing="true" EnableMultiSelect="false" AllowPaging="false" IsDatabasePaging="true">
<Toolbars>
<f:Toolbar ID="Toolbar1" runat="server">
<Items>
<f:ToolbarFill ID="ToolbarFill" runat="server"></f:ToolbarFill>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RowNumberField EnablePagingNumber="true" Width="50px" HeaderTextAlign="Center" TextAlign="Center" />
<f:RenderField HeaderText="工作包名称" ColumnID="WorkName" DataField="WorkName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="装置名称" ColumnID="InstallationName" DataField="InstallationName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="工序名称" ColumnID="ProcessesName" DataField="ProcessesName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="系统名称" ColumnID="SystemName" DataField="SystemName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="子系统名称" ColumnID="SubsystemName" DataField="SubsystemName" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="工作包数量" ColumnID="AllNum" DataField="AllNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="未关闭任务单数量" ColumnID="NoCloseNum" DataField="NoCloseNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="已关闭任务单数量" ColumnID="CloseNum" DataField="CloseNum" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</Listeners>
</f:Grid>
</Items>
</f:FormRow>
</Rows>
</f:Form>
</Items>
</f:Panel>
</Items>
</f:Panel>
</form>
<script type="text/javascript">
// 返回false来阻止浏览器右键菜单
function onRowContextMenu(event, rowId) {
return false;
}
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -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
{
/// <summary>
/// 点击树状主键
/// </summary>
public string TreePreRunId { get { return (string)ViewState["TreePreRunId"]; } set { ViewState["TreePreRunId"] = value; } }
/// <summary>
/// 子系统主键
/// </summary>
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
/// <summary>
/// 加载树
/// </summary>
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);
}
}
/// <summary>
/// 绑定树节点
/// </summary>
private void BindNodes(TreeNode node, List<PreRun_SysDevice> 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);
}
}
}
/// <summary>
/// 数加载
/// </summary>
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);
}
/// <summary>
/// 点击TreeView
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
{
this.TreePreRunId = tvControlItem.SelectedNodeID != "0" ? tvControlItem.SelectedNodeID : string.Empty;
TestRunBrid();
}
#endregion
#region
/// <summary>
/// 预试车绑定
/// </summary>
public void TestRunBrid()
{
var result = new List<ScheduleBridDto>();
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<SqlParameter> listStr = new List<SqlParameter>();
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
/// <summary>
/// 试车统计实体
/// </summary>
public class ScheduleBridDto
{
/// <summary>
/// 工作包主键
/// </summary>
public string WorkPackId { get; set; }
/// <summary>
/// 工作包名称
/// </summary>
public string WorkName { get; set; }
/// <summary>
/// 装置名称
/// </summary>
public string InstallationName { get; set; }
/// <summary>
/// 工序名称
/// </summary>
public string ProcessesName { get; set; }
/// <summary>
/// 系统名称
/// </summary>
public string SystemName { get; set; }
/// <summary>
/// 子系统名称
/// </summary>
public string SubsystemName { get; set; }
/// <summary>
/// 工作包数量
/// </summary>
public string AllNum { get; set; }
/// <summary>
/// 未关闭任务单数量
/// </summary>
public string NoCloseNum { get; set; }
/// <summary>
/// 已关闭任务单数量
/// </summary>
public string CloseNum { get; set; }
}
#endregion
}
}

View File

@ -0,0 +1,134 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.TestRun.Report
{
public partial class TestRunSchedule
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// panelLeftRegion 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelLeftRegion;
/// <summary>
/// tvControlItem 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tree tvControlItem;
/// <summary>
/// panelCenterRegion 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelCenterRegion;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// hdTrustID 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField hdTrustID;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// zxtsc 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow zxtsc;
/// <summary>
/// GridTestRun 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid GridTestRun;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// ToolbarFill 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill;
}
}

View File

@ -77,7 +77,7 @@
<add verb="GET" path="res.axd" type="FineUIPro.ResourceHandler, FineUIPro" validate="false"/>
<add path="ChartImg.axd" verb="GET,POST,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<compilation debug="true" targetFramework="4.6.1"/>
<compilation debug="false" targetFramework="4.6.1"/>
<httpRuntime requestValidationMode="2.0" maxRequestLength="2147483647" executionTimeout="36000"/>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" name="PUBLISHERCOOKIE" protection="All" timeout="1440" path="/"/>

View File

@ -71,7 +71,34 @@
</style>
</head>
<body>
<div class="wrap">
<div class="bottom-wrap">
<div class="top">
<div class="item">
<div class="bw-b-bottom ptop6">
<div class="bw-b-bottom-up">
<div class="bw-item-content">
<div id='one' style="width: 100%; height: 100%;"></div>
</div>
</div>
</div>
</div>
<div class="item">
<div class="bw-b-bottom ptop6">
<div class="bw-b-bottom-up">
<div class="bw-item-content">
<div id='two' style="width: 100%; height: 100%;"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<%--<div class="wrap">
<div class="bottom-wrap">
<div class="top">
<div class="item">
@ -166,12 +193,208 @@
</div>
</div>
</div>
</div>
</div>--%>
</body>
<script type="text/javascript" src="../res/index/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="../res/index/js/swiper-3.4.2.jquery.min.js"></script>
<script type="text/javascript" src="../res/index/js/echarts.min.js"></script>
<script type="text/javascript">
var oneArrStr = "<%=oneArrStr%>";
var oneDataStr = '<%=oneDataStr%>';
var oneNameData = [];
var oneArr = JSON.parse(oneArrStr);
var oneData = JSON.parse(oneDataStr);
$.each(oneData, function (inxex, item) {
var obj = { name: item };
oneNameData.push(obj);
});
//图1
var bar_data = oneArr;//模拟数据
var chart = echarts.init(document.getElementById('one'));
var option = {
title: {
text: '预试车进度信息',
textStyle: {
color: '#fff',
fontWeight: 'normal',
fontSize: 16
},
show: true
},
tooltip: {
formatter: '{a}:{c}%'//a 是series中每条数据name值c 是data数值
},
legend: {
orient: 'vertical', // 'horizontal'
data: JSON.parse(oneDataStr),
textStyle: { // 图列内容样式
color: '#fff', // 字体颜色
},
x: '70%',//图例位置设置right发现图例和文字位置反了设置一个数值就好了
y: 'center'//延Y轴居中
},
grid: {
left: '3%',
right: '30%',
top: '15%',
bottom: '3%',
containLabel: true,
backgroundColor: 'rgba(0,162,233, 0.01)',
},
xAxis: [ //横坐标
{
type: 'category',
data: [''],
axisLine: {
lineStyle: {
color: "#fff",//横坐标线条颜色
}
}
}
],
yAxis: [ //纵坐标
{
type: 'value',
axisLabel: {
show: true,
formatter: '{value}%',//给Y轴数值添加百分号
},
axisLine: {
lineStyle: {
color: "#fff",//纵坐标线条颜色
}
}
}
],
color: ['#0287f8', '#33CCCC', '#58b1fc', '#2fb6f6', '#CC3366', '#00FF99', '#33FFFF', '#669900', '#CC0099', '#FF66FF', '#330099', '#00FFCC', '#FFFF33', '#FF9966', '#FF6633'],//柱状图的颜色
series: oneNameData
};
for (var i = 0; i < option.series.length; i++) {
var style = { //定义柱状图的样式
normal: {
label: {
show: true,
position: 'top', //柱子上方显示 数值
rotate: 25,
/*formatter: '{c}%'*/
formatter: function (params) {
if (params.value > 0) {
return params.value + '%';
} else {
return ' ';
}
},
}
}
};
option.series[i].type = 'bar'; //每条数据指定类型为'bar'
option.series[i].itemStyle = style; // series中每条数据都加的样式
option.series[i].data = [bar_data[i]]; //series 中 data赋值
};
chart.setOption(option);
//图2
debugger;
var twoDataStr = '<%=twoDataStr%>';
var towData = JSON.parse(twoDataStr);
var data = towData.map((item, index) => item.Rate);
var chart1 = echarts.init(document.getElementById('two'));
var barWidth = 20;
var maxNum = 100;
option = {
grid: {
top: '10%',
left: '20%',
right: '10%',
bottom: '0%',
},
title: {
text: '试车进度信息',
textStyle: {
color: '#fff',
fontWeight: 'normal',
fontSize: 16
},
},
xAxis: {
show: false,
},
yAxis: {
data: towData.map((item, index) => item.Name),
splitLine: {
show: false,
},
axisLabel: {
textStyle: { fontSize: '80%', color: '#02afff' },
},
axisLine: {
show: false,
},
axisTick: false,
},
series: [
{
type: 'bar',
barWidth: barWidth,
zlevel: 2,
data: data.map(function (item) {
return {
value: item,
maxNum: maxNum,
};
}),
label: {
show: true,
position: 'inside',
align: 'left',
formatter: function (params) {
var percent = Number((params.data.value / params.data.maxNum) * 100).toFixed(2) + '%';
return percent;
},
color: '#fff',
fontSize: 12,
},
itemStyle: {
borderRadius: 10,
color: new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#395CFE' },
{ offset: 1, color: '#2EC7CF' },
]),
},
},
{
type: 'bar',
barWidth: barWidth,
barGap: '-100%',
data: data.map(function (item) {
return {
realValue: item,
value: maxNum,
};
}),
//label: {
// show: true,
// position: 'right',
// distance: 80,
// align: 'right',
// //formatter: function (params) {
// // return params.data.realValue + ' 件';
// //},
// color: '#02afff',
// fontSize: 18,
//},
itemStyle: {
borderRadius: 10,
color: 'rgba(3,169,244, 0.5)',
},
},
],
};
chart1.setOption(option);
</script>
<%--<script type="text/javascript">
function category_One(id, xArr, data) {
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById(id))
@ -747,6 +970,6 @@
loop: true,
slidesPerView: 6
})
</script>
</script>--%>
</html>

View File

@ -1,17 +1,140 @@
using System;
using BLL;
using Newtonsoft.Json;
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 static FineUIPro.Web.TestRun.Report.ScheduleSetUp;
using NPOI.SS.Formula.Functions;
using Model;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web
{
public partial class mainMenu_TestRun : System.Web.UI.Page
public partial class mainMenu_TestRun : PageBase
{
public string oneArrStr { get; set; }
public string oneDataStr { get; set; }
public string twoDataStr { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PageInit();
}
}
public void PageInit()
{
OneYsc();
TwoSc();
}
/// <summary>
/// 预试车
/// </summary>
public void OneYsc()
{
List<float> oneArr = new List<float>();
List<string> oneData = new List<string>();
var list = Funs.DB.Run_ScheduleSetUp.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 1).ToList();
if (list.Count > 0)
{
var workpages = Funs.DB.PreRun_WorkPackage.OrderBy(x => x.Sort).ToList();
foreach (var item in workpages)
{
var model = list.FirstOrDefault(x => x.WorkPackId == item.WorkPackId);
if (model != null)
{
var rate = model.CompleteNum > 0 ? (float)Math.Round((float)model.CompleteNum / (float)model.AllNum * 100, 2, MidpointRounding.AwayFromZero) : 0;
if (rate > 100) rate = 100;
oneArr.Add(rate);
oneData.Add(item.WorkPackName);
}
}
}
else
{
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<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
if (tb.Rows.Count > 0)
{
foreach (DataRow row in tb.Rows)
{
float allNum = float.Parse(row["AllNum"].ToString());
float completeNum = float.Parse(row["CompleteNum"].ToString());
var rate = completeNum > 0 ? (float)Math.Round((completeNum / allNum * 100), 2, MidpointRounding.AwayFromZero) : 0;
if (rate > 100) rate = 100;
oneArr.Add(rate);
oneData.Add(row["WorkPackName"].ToString());
}
}
}
oneArrStr = JsonConvert.SerializeObject(oneArr);
oneDataStr = JsonConvert.SerializeObject(oneData);
}
/// <summary>
/// 试车
/// </summary>
public void TwoSc()
{
var result = new List<TwoDto>();
var list = Funs.DB.Run_ScheduleSetUp.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 2).ToList();
if (list.Count > 0)
{
var workpages = Funs.DB.TestRun_WorkPackage.OrderBy(x => x.Sort).ToList();
foreach (var item in workpages)
{
var model = list.FirstOrDefault(x => x.WorkPackId == item.WorkPackId);
if (model != null)
{
var rate = model.CompleteNum > 0 ? (float)Math.Round((float)model.CompleteNum / (float)model.AllNum * 100, 2, MidpointRounding.AwayFromZero) : 0;
if (rate > 100) rate = 100;
result.Add(new TwoDto()
{
Name = item.WorkPackName,
Rate = rate
});
}
}
}
else
{
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<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
if (tb.Rows.Count > 0)
{
foreach (DataRow row in tb.Rows)
{
float allNum = float.Parse(row["AllNum"].ToString());
float completeNum = float.Parse(row["CompleteNum"].ToString());
var rate = completeNum > 0 ? (float)Math.Round((completeNum / allNum) * 100, 2, MidpointRounding.AwayFromZero) : 0;
if (rate > 100) rate = 100;
result.Add(new TwoDto()
{
Name = row["WorkPackName"].ToString(),
Rate = rate
});
}
}
}
twoDataStr = JsonConvert.SerializeObject(result);
}
public class TwoDto
{
public float Rate { get; set; }
public string Name { get; set; }
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress />
<IISExpressSSLPort />