feat: 性能优化与功能增强
- 优化TestPackageData的InitTreeMenu方法,减少数据库查询次数 - InstallList页面新增数据汇总统计功能 - 修复SetSubReviewEdit2编辑时编号重复误报的bug
This commit is contained in:
parent
588fd6124c
commit
808beba1fd
|
|
@ -10,7 +10,8 @@
|
|||
"Bash(python:*)",
|
||||
"Bash(cat:*)",
|
||||
"Bash(pip install:*)",
|
||||
"Bash(msbuild:*)"
|
||||
"Bash(msbuild:*)",
|
||||
"Bash(\"C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\MSBuild\\Current\\Bin\\MSBuild.exe\":*)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
|
|
|
|||
|
|
@ -16838,7 +16838,7 @@
|
|||
</COMReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v18.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
|
|
|
|||
|
|
@ -74,6 +74,18 @@
|
|||
</f:Toolbar>
|
||||
</Toolbars>
|
||||
<Items>
|
||||
<f:Panel ID="SummaryPanel" runat="server" ShowBorder="true" ShowHeader="false"
|
||||
Layout="HBox" BodyPadding="5px" CssStyle="background-color:#f5f5f5;" Height="40px">
|
||||
<Items>
|
||||
<f:Label ID="lblSummary1" runat="server" Text="预制组件数量:0" CssClass="summary-label"
|
||||
Margin="0,0,20,0" />
|
||||
<f:Label ID="lblSummary2" runat="server" Text="预制散件数量:0" CssClass="summary-label"
|
||||
Margin="0,0,20,0"
|
||||
|
||||
/>
|
||||
<f:ToolbarFill ID="ToolbarFill3" runat="server" />
|
||||
</Items>
|
||||
</f:Panel>
|
||||
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="组件信息" ForceFit="false"
|
||||
EnableCollapse="true" runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true"
|
||||
AllowColumnLocking="true" EnableColumnLines="true" ClicksToEdit="2" DataIDField="Id"
|
||||
|
|
|
|||
|
|
@ -220,6 +220,61 @@ namespace FineUIPro.Web.HJGL.PreDesign
|
|||
var table = view_HJGL_InstallDatas;
|
||||
Grid1.DataSource = table;
|
||||
Grid1.DataBind();
|
||||
|
||||
// 更新汇总信息
|
||||
UpdateSummary();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新汇总信息
|
||||
/// </summary>
|
||||
private void UpdateSummary()
|
||||
{
|
||||
try
|
||||
{
|
||||
var baseQuery = from x in Funs.DB.View_HJGL_InstallData select x;
|
||||
|
||||
// 应用与数据绑定相同的筛选条件
|
||||
if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2)
|
||||
{
|
||||
baseQuery = baseQuery.Where(x => x.UnitWorkId == tvControlItem.SelectedNode.NodeID);
|
||||
}
|
||||
else if (tvControlItem.SelectedNode.CommandName == "流水段")
|
||||
{
|
||||
baseQuery = baseQuery.Where(x => x.UnitWorkId == tvControlItem.SelectedNode.ParentNode.NodeID && x.FlowingSection == tvControlItem.SelectedNode.Text);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(txtPipelineCode2.Text))
|
||||
{
|
||||
baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode2.Text.Trim()));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(txtPipelineComponentCode.Text))
|
||||
{
|
||||
baseQuery = baseQuery.Where(x => x.Code.Contains(txtPipelineComponentCode.Text.Trim()));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(drpTypeStr.SelectedValue))
|
||||
{
|
||||
baseQuery = baseQuery.Where(x => x.TypeStr.Contains(drpTypeStr.SelectedValue));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(txtPipelineCode.Text))
|
||||
{
|
||||
baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode.Text.Trim()));
|
||||
}
|
||||
|
||||
// 计算汇总数据
|
||||
var componentCount = baseQuery.Count(x => x.TypeStr == "预制组件");
|
||||
var partCount = baseQuery.Count(x => x.TypeStr == "预制散件");
|
||||
|
||||
// 更新汇总标签
|
||||
lblSummary1.Text = $"预制组件数量:{componentCount}";
|
||||
lblSummary2.Text = $"预制散件数量:{partCount}";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 出现异常时显示默认值
|
||||
lblSummary1.Text = "预制组件数量:0";
|
||||
lblSummary2.Text = "预制散件数量:0";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -167,6 +167,42 @@ namespace FineUIPro.Web.HJGL.PreDesign
|
|||
/// </remarks>
|
||||
protected global::FineUIPro.Button btnOut;
|
||||
|
||||
/// <summary>
|
||||
/// SummaryPanel 控件。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 自动生成的字段。
|
||||
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||
/// </remarks>
|
||||
protected global::FineUIPro.Panel SummaryPanel;
|
||||
|
||||
/// <summary>
|
||||
/// lblSummary1 控件。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 自动生成的字段。
|
||||
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||
/// </remarks>
|
||||
protected global::FineUIPro.Label lblSummary1;
|
||||
|
||||
/// <summary>
|
||||
/// lblSummary2 控件。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 自动生成的字段。
|
||||
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||
/// </remarks>
|
||||
protected global::FineUIPro.Label lblSummary2;
|
||||
|
||||
/// <summary>
|
||||
/// ToolbarFill3 控件。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 自动生成的字段。
|
||||
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||
/// </remarks>
|
||||
protected global::FineUIPro.ToolbarFill ToolbarFill3;
|
||||
|
||||
/// <summary>
|
||||
/// Grid1 控件。
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -61,83 +61,77 @@ namespace FineUIPro.Web.HJGL.TestPackage
|
|||
{
|
||||
this.tvControlItem.Nodes.Clear();
|
||||
|
||||
TreeNode rootNode1 = new TreeNode();
|
||||
rootNode1.NodeID = "1";
|
||||
rootNode1.Text = "建筑工程";
|
||||
rootNode1.CommandName = "建筑工程";
|
||||
rootNode1.Selectable = false;
|
||||
rootNode1.EnableClickEvent = true;
|
||||
// 创建根节点
|
||||
TreeNode rootNode1 = new TreeNode
|
||||
{
|
||||
NodeID = "1",
|
||||
Text = "建筑工程",
|
||||
CommandName = "建筑工程",
|
||||
Selectable = false,
|
||||
EnableClickEvent = true
|
||||
};
|
||||
this.tvControlItem.Nodes.Add(rootNode1);
|
||||
|
||||
TreeNode rootNode2 = new TreeNode();
|
||||
rootNode2.NodeID = "2";
|
||||
rootNode2.Text = "安装工程";
|
||||
rootNode2.CommandName = "安装工程";
|
||||
rootNode2.Expanded = true;
|
||||
rootNode2.EnableClickEvent = true;
|
||||
TreeNode rootNode2 = new TreeNode
|
||||
{
|
||||
NodeID = "2",
|
||||
Text = "安装工程",
|
||||
CommandName = "安装工程",
|
||||
Expanded = true,
|
||||
EnableClickEvent = true
|
||||
};
|
||||
this.tvControlItem.Nodes.Add(rootNode2);
|
||||
var pUnits = (from x in Funs.DB.Project_ProjectUnit where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList();
|
||||
// 获取当前用户所在单位
|
||||
var currUnit = pUnits.FirstOrDefault(x => x.UnitId == this.CurrUser.UnitId);
|
||||
|
||||
// 一次性获取所有需要的数据
|
||||
var projectId = this.CurrUser.LoginProjectId;
|
||||
var unitWorkList = (from x in Funs.DB.WBS_UnitWork
|
||||
where x.ProjectId == this.CurrUser.LoginProjectId
|
||||
&& x.SuperUnitWork == null && x.UnitId != null && x.ProjectType != null
|
||||
where x.ProjectId == projectId
|
||||
&& x.SuperUnitWork == null
|
||||
&& x.UnitId != null
|
||||
&& x.ProjectType != null
|
||||
select x).ToList();
|
||||
//List<Model.PTP_TestPackage> testPackageLists = (from x in Funs.DB.PTP_TestPackage
|
||||
//where x.ProjectId == this.CurrUser.LoginProjectId
|
||||
//select x).ToList();
|
||||
List<Model.WBS_UnitWork> unitWork1 = null;
|
||||
List<Model.WBS_UnitWork> unitWork2 = null;
|
||||
|
||||
//// 当前为施工单位,只能操作本单位的数据
|
||||
//if (currUnit != null && currUnit.UnitType == Const.ProjectUnitType_2)
|
||||
//{
|
||||
// unitWork1 = (from x in unitWorkList
|
||||
// where x.UnitId == this.CurrUser.UnitId && x.ProjectType == "1"
|
||||
// select x).ToList();
|
||||
// unitWork2 = (from x in unitWorkList
|
||||
// where x.UnitId == this.CurrUser.UnitId && x.ProjectType == "2"
|
||||
// select x).ToList();
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
unitWork1 = (from x in unitWorkList where x.ProjectType == "1" select x).ToList();
|
||||
unitWork2 = (from x in unitWorkList where x.ProjectType == "2" select x).ToList();
|
||||
//}
|
||||
// 按项目类型分组,避免重复查询
|
||||
var unitWorkGroups = unitWorkList
|
||||
.GroupBy(x => x.ProjectType)
|
||||
.ToDictionary(g => g.Key, g => g.ToList());
|
||||
|
||||
if (unitWork1.Count() > 0)
|
||||
// 批量获取单位名称,避免在循环中查询数据库
|
||||
var unitIds = unitWorkList.Where(x => x.UnitId != null).Select(x => x.UnitId).Distinct().ToList();
|
||||
var unitNameDict = new Dictionary<string, string>();
|
||||
foreach (var unitId in unitIds)
|
||||
{
|
||||
foreach (var q in unitWork1)
|
||||
var unitName = BLL.UnitService.getUnitNamesUnitIds(unitId);
|
||||
if (!string.IsNullOrEmpty(unitName))
|
||||
{
|
||||
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
|
||||
TreeNode tn1 = new TreeNode();
|
||||
tn1.NodeID = q.UnitWorkId;
|
||||
tn1.Text = q.UnitWorkName;
|
||||
tn1.ToolTip = "施工单位:" + unitNamesUnitIds;
|
||||
tn1.CommandName = "单位工程";
|
||||
tn1.EnableClickEvent = true;
|
||||
rootNode1.Nodes.Add(tn1);
|
||||
//var testPackageUnitList = testPackageLists.Where(x => x.UnitWorkId == q.UnitWorkId).ToList();
|
||||
//BindNodes(tn1, testPackageUnitList);
|
||||
unitNameDict[unitId] = unitName;
|
||||
}
|
||||
}
|
||||
if (unitWork2.Count() > 0)
|
||||
|
||||
// 统一方法处理两种类型的单位工程
|
||||
Action<string, TreeNode> addUnitWorkNodes = (projectType, parentNode) =>
|
||||
{
|
||||
foreach (var q in unitWork2)
|
||||
if (unitWorkGroups.ContainsKey(projectType))
|
||||
{
|
||||
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
|
||||
TreeNode tn2 = new TreeNode();
|
||||
tn2.NodeID = q.UnitWorkId;
|
||||
tn2.Text = q.UnitWorkName;
|
||||
tn2.ToolTip = "施工单位:" + unitNamesUnitIds;
|
||||
tn2.CommandName = "单位工程";
|
||||
tn2.EnableClickEvent = true;
|
||||
rootNode2.Nodes.Add(tn2);
|
||||
//var testPackageUnitList = testPackageLists.Where(x => x.UnitWorkId == q.UnitWorkId).ToList();
|
||||
//BindNodes(tn2, testPackageUnitList);
|
||||
foreach (var unitWork in unitWorkGroups[projectType])
|
||||
{
|
||||
TreeNode treeNode = new TreeNode
|
||||
{
|
||||
NodeID = unitWork.UnitWorkId,
|
||||
Text = unitWork.UnitWorkName,
|
||||
ToolTip = unitNameDict.ContainsKey(unitWork.UnitId) ?
|
||||
"施工单位:" + unitNameDict[unitWork.UnitId] : "施工单位:",
|
||||
CommandName = "单位工程",
|
||||
EnableClickEvent = true
|
||||
};
|
||||
parentNode.Nodes.Add(treeNode);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// 添加建筑工程和安装工程节点
|
||||
addUnitWorkNodes("1", rootNode1);
|
||||
addUnitWorkNodes("2", rootNode2);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
|
|
|||
|
|
@ -221,27 +221,36 @@ namespace FineUIPro.Web.PHTGL.BiddingManagement
|
|||
return false;
|
||||
|
||||
}
|
||||
var IsExitCodemodel = PHTGL_SetSubReviewService.GetPHTGL_SetSubReviewBySetSubReviewCode(this.txtSetSubReviewCode.Text.Trim().ToString());
|
||||
// 获取当前输入的编号
|
||||
string currentSetSubReviewCode = this.txtSetSubReviewCode.Text.Trim();
|
||||
|
||||
// 验证编号是否为空
|
||||
if (string.IsNullOrEmpty(currentSetSubReviewCode))
|
||||
{
|
||||
ShowNotify("编号不能为空!", MessageBoxIcon.Warning);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查编号重复性
|
||||
var existingRecord = PHTGL_SetSubReviewService.GetPHTGL_SetSubReviewBySetSubReviewCode(currentSetSubReviewCode);
|
||||
|
||||
if (string.IsNullOrEmpty(SetSubReviewID))
|
||||
{
|
||||
if (IsExitCodemodel != null)
|
||||
// 新增记录:检查编号是否已存在
|
||||
if (existingRecord != null)
|
||||
{
|
||||
ShowNotify("编号已经重复,请修改!", MessageBoxIcon.Warning);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IsExitCodemodel != null && IsExitCodemodel.SetSubReviewID != SetSubReviewID)
|
||||
// 编辑记录:检查编号是否被其他记录使用
|
||||
if (existingRecord != null && existingRecord.SetSubReviewID != SetSubReviewID)
|
||||
{
|
||||
ShowNotify("编号已经重复,请修改!", MessageBoxIcon.Warning);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Model.PHTGL_SetSubReview _SetSubReview = new Model.PHTGL_SetSubReview();
|
||||
|
|
|
|||
Loading…
Reference in New Issue