This commit is contained in:
高飞 2025-12-23 09:54:01 +08:00
commit 773ffe1e30
8 changed files with 205 additions and 74 deletions

View File

@ -10,7 +10,8 @@
"Bash(python:*)", "Bash(python:*)",
"Bash(cat:*)", "Bash(cat:*)",
"Bash(pip install:*)", "Bash(pip install:*)",
"Bash(msbuild:*)" "Bash(msbuild:*)",
"Bash(\"C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\MSBuild\\Current\\Bin\\MSBuild.exe\":*)"
], ],
"deny": [], "deny": [],
"ask": [] "ask": []

View File

@ -659,12 +659,36 @@ namespace BLL
string projectname = ProjectService.GetProjectNameByProjectId(getFireWork.ProjectId); string projectname = ProjectService.GetProjectNameByProjectId(getFireWork.ProjectId);
string rootPath = Funs.RootPath; string rootPath = Funs.RootPath;
string startPath = rootPath + "File\\Word\\PHTGL\\" + getFireWork.ContractNum + "-" + projectname + "-" + getFireWork.ContractName + "-合同管理资料"; // 清理路径中的非法字符
string CleanFileName(string input)
{
if (string.IsNullOrEmpty(input)) return "Unknown";
char[] invalidChars = Path.GetInvalidFileNameChars();
char[] invalidPathChars = Path.GetInvalidPathChars();
string result = input;
foreach (char c in invalidChars)
{
result = result.Replace(c.ToString(), "_");
}
foreach (char c in invalidPathChars)
{
result = result.Replace(c.ToString(), "_");
}
return result;
}
string cleanContractNum = CleanFileName(getFireWork.ContractNum);
string cleanProjectName = CleanFileName(projectname);
string cleanContractName = CleanFileName(getFireWork.ContractName);
string startPath = rootPath + "File\\Word\\PHTGL\\" + cleanContractNum + "-" + cleanProjectName + "-" + cleanContractName + "-合同管理资料";
if (!Directory.Exists(startPath)) if (!Directory.Exists(startPath))
{ {
Directory.CreateDirectory(startPath); Directory.CreateDirectory(startPath);
} }
string zipPath = rootPath + "File\\Word\\PHTGL\\" + getFireWork.ContractNum + "-" + projectname + "-" + getFireWork.ContractName + "-合同管理资料.zip"; string zipPath = rootPath + "File\\Word\\PHTGL\\" + cleanContractNum + "-" + cleanProjectName + "-" + cleanContractName + "-合同管理资料.zip";
switch (getFireWork.ConfirmWay) switch (getFireWork.ConfirmWay)
{ {
case "1": case "1":

View File

@ -16838,7 +16838,7 @@
</COMReference> </COMReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <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> <ProjectExtensions>
<VisualStudio> <VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}"> <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">

View File

@ -74,6 +74,18 @@
</f:Toolbar> </f:Toolbar>
</Toolbars> </Toolbars>
<Items> <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" <f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="组件信息" ForceFit="false"
EnableCollapse="true" runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true" EnableCollapse="true" runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true"
AllowColumnLocking="true" EnableColumnLines="true" ClicksToEdit="2" DataIDField="Id" AllowColumnLocking="true" EnableColumnLines="true" ClicksToEdit="2" DataIDField="Id"

View File

@ -220,6 +220,61 @@ namespace FineUIPro.Web.HJGL.PreDesign
var table = view_HJGL_InstallDatas; var table = view_HJGL_InstallDatas;
Grid1.DataSource = table; Grid1.DataSource = table;
Grid1.DataBind(); 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> /// <summary>

View File

@ -167,6 +167,42 @@ namespace FineUIPro.Web.HJGL.PreDesign
/// </remarks> /// </remarks>
protected global::FineUIPro.Button btnOut; 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> /// <summary>
/// Grid1 控件。 /// Grid1 控件。
/// </summary> /// </summary>

View File

@ -61,83 +61,77 @@ namespace FineUIPro.Web.HJGL.TestPackage
{ {
this.tvControlItem.Nodes.Clear(); this.tvControlItem.Nodes.Clear();
TreeNode rootNode1 = new TreeNode(); // 创建根节点
rootNode1.NodeID = "1"; TreeNode rootNode1 = new TreeNode
rootNode1.Text = "建筑工程"; {
rootNode1.CommandName = "建筑工程"; NodeID = "1",
rootNode1.Selectable = false; Text = "建筑工程",
rootNode1.EnableClickEvent = true; CommandName = "建筑工程",
Selectable = false,
EnableClickEvent = true
};
this.tvControlItem.Nodes.Add(rootNode1); this.tvControlItem.Nodes.Add(rootNode1);
TreeNode rootNode2 = new TreeNode(); TreeNode rootNode2 = new TreeNode
rootNode2.NodeID = "2"; {
rootNode2.Text = "安装工程"; NodeID = "2",
rootNode2.CommandName = "安装工程"; Text = "安装工程",
rootNode2.Expanded = true; CommandName = "安装工程",
rootNode2.EnableClickEvent = true; Expanded = true,
EnableClickEvent = true
};
this.tvControlItem.Nodes.Add(rootNode2); 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 var unitWorkList = (from x in Funs.DB.WBS_UnitWork
where x.ProjectId == this.CurrUser.LoginProjectId where x.ProjectId == projectId
&& x.SuperUnitWork == null && x.UnitId != null && x.ProjectType != null && x.SuperUnitWork == null
select x).ToList(); && x.UnitId != null
//List<Model.PTP_TestPackage> testPackageLists = (from x in Funs.DB.PTP_TestPackage && x.ProjectType != null
//where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList();
//select x).ToList();
List<Model.WBS_UnitWork> unitWork1 = null;
List<Model.WBS_UnitWork> unitWork2 = null;
//// 当前为施工单位,只能操作本单位的数据 // 按项目类型分组,避免重复查询
//if (currUnit != null && currUnit.UnitType == Const.ProjectUnitType_2) var unitWorkGroups = unitWorkList
//{ .GroupBy(x => x.ProjectType)
// unitWork1 = (from x in unitWorkList .ToDictionary(g => g.Key, g => g.ToList());
// 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();
//}
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); unitNameDict[unitId] = unitName;
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);
} }
} }
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); foreach (var unitWork in unitWorkGroups[projectType])
TreeNode tn2 = new TreeNode(); {
tn2.NodeID = q.UnitWorkId; TreeNode treeNode = new TreeNode
tn2.Text = q.UnitWorkName; {
tn2.ToolTip = "施工单位:" + unitNamesUnitIds; NodeID = unitWork.UnitWorkId,
tn2.CommandName = "单位工程"; Text = unitWork.UnitWorkName,
tn2.EnableClickEvent = true; ToolTip = unitNameDict.ContainsKey(unitWork.UnitId) ?
rootNode2.Nodes.Add(tn2); "施工单位:" + unitNameDict[unitWork.UnitId] : "施工单位:",
//var testPackageUnitList = testPackageLists.Where(x => x.UnitWorkId == q.UnitWorkId).ToList(); CommandName = "单位工程",
//BindNodes(tn2, testPackageUnitList); EnableClickEvent = true
};
parentNode.Nodes.Add(treeNode);
}
} }
} };
// 添加建筑工程和安装工程节点
addUnitWorkNodes("1", rootNode1);
addUnitWorkNodes("2", rootNode2);
} }
#endregion #endregion

View File

@ -221,27 +221,36 @@ namespace FineUIPro.Web.PHTGL.BiddingManagement
return false; 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 (string.IsNullOrEmpty(SetSubReviewID))
{ {
if (IsExitCodemodel != null) // 新增记录:检查编号是否已存在
if (existingRecord != null)
{ {
ShowNotify("编号已经重复,请修改!", MessageBoxIcon.Warning); ShowNotify("编号已经重复,请修改!", MessageBoxIcon.Warning);
return false; return false;
} }
} }
else else
{ {
if (IsExitCodemodel != null && IsExitCodemodel.SetSubReviewID != SetSubReviewID) // 编辑记录:检查编号是否被其他记录使用
if (existingRecord != null && existingRecord.SetSubReviewID != SetSubReviewID)
{ {
ShowNotify("编号已经重复,请修改!", MessageBoxIcon.Warning); ShowNotify("编号已经重复,请修改!", MessageBoxIcon.Warning);
return false; return false;
} }
} }
Model.PHTGL_SetSubReview _SetSubReview = new Model.PHTGL_SetSubReview(); Model.PHTGL_SetSubReview _SetSubReview = new Model.PHTGL_SetSubReview();