SGGL_SHJ/SGGL/FineUIPro.Web/HJGL/TestPackage/TestPackageData.aspx.cs

538 lines
25 KiB
C#
Raw Normal View History

2025-07-10 16:47:41 +08:00
using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
2025-07-10 16:47:41 +08:00
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HJGL.TestPackage
{
public partial class TestPackageData : PageBase
{
#region
/// <summary>
/// 试压包主键
/// </summary>
public string PTP_ID
{
get
{
return (string)ViewState["PTP_ID"];
}
set
{
ViewState["PTP_ID"] = value;
}
}
/// <summary>
/// 单位工程Id
/// </summary>
public string UnitWorkId
{
get
{
return (string)ViewState["UnitWorkId"];
}
set
{
ViewState["UnitWorkId"] = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
this.InitTreeMenu();//加载树
2025-08-05 23:34:06 +08:00
BindGrid();
2025-07-10 16:47:41 +08:00
}
}
#region --
/// <summary>
/// 加载树
/// </summary>
private void InitTreeMenu()
{
this.tvControlItem.Nodes.Clear();
// 创建根节点
TreeNode rootNode1 = new TreeNode
{
NodeID = "1",
Text = "建筑工程",
CommandName = "建筑工程",
Selectable = false,
EnableClickEvent = true
};
2025-07-10 16:47:41 +08:00
this.tvControlItem.Nodes.Add(rootNode1);
TreeNode rootNode2 = new TreeNode
{
NodeID = "2",
Text = "安装工程",
CommandName = "安装工程",
Expanded = true,
EnableClickEvent = true
};
2025-07-10 16:47:41 +08:00
this.tvControlItem.Nodes.Add(rootNode2);
// 一次性获取所有需要的数据
var projectId = this.CurrUser.LoginProjectId;
2025-07-10 16:47:41 +08:00
var unitWorkList = (from x in Funs.DB.WBS_UnitWork
where x.ProjectId == projectId
&& x.SuperUnitWork == null
&& x.UnitId != null
&& x.ProjectType != null
select x).ToList();
2025-07-10 16:47:41 +08:00
// 按项目类型分组,避免重复查询
var unitWorkGroups = unitWorkList
.GroupBy(x => x.ProjectType)
.ToDictionary(g => g.Key, g => g.ToList());
2025-07-10 16:47:41 +08:00
// 批量获取单位名称,避免在循环中查询数据库
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)
2025-07-10 16:47:41 +08:00
{
var unitName = BLL.UnitService.getUnitNamesUnitIds(unitId);
if (!string.IsNullOrEmpty(unitName))
2025-07-10 16:47:41 +08:00
{
unitNameDict[unitId] = unitName;
2025-07-10 16:47:41 +08:00
}
}
// 统一方法处理两种类型的单位工程
Action<string, TreeNode> addUnitWorkNodes = (projectType, parentNode) =>
2025-07-10 16:47:41 +08:00
{
if (unitWorkGroups.ContainsKey(projectType))
2025-07-10 16:47:41 +08:00
{
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);
}
2025-07-10 16:47:41 +08:00
}
};
// 添加建筑工程和安装工程节点
addUnitWorkNodes("1", rootNode1);
addUnitWorkNodes("2", rootNode2);
2025-07-10 16:47:41 +08:00
}
#endregion
#region TreeView
/// <summary>
/// 点击TreeView
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
{
this.UnitWorkId = tvControlItem.SelectedNodeID;
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 数据绑定
/// </summary>
private void BindGrid()
{
string strSql = @" select t.PTP_ID,
t.ProjectId,
t.UnitId,
t.UnitWorkId,
t.TestPackageNo,
2025-07-15 17:25:56 +08:00
t.TestPackageName,
2025-08-18 10:15:28 +08:00
t.FinishDef,
2025-07-15 17:25:56 +08:00
(case when t.PrintState>0 then '第'+convert(varchar(10),t.PrintState)+'' else '' end) as PrintState,
t.TableDate
2025-08-05 23:34:06 +08:00
from PTP_TestPackage t where t.ProjectId=@projectId";
2025-07-10 16:47:41 +08:00
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
2025-08-05 23:34:06 +08:00
if (!string.IsNullOrEmpty(this.UnitWorkId))
{
strSql += " and t.UnitWorkId =@unitWorkId";
listStr.Add(new SqlParameter("@unitWorkId", this.UnitWorkId));
}
if (!string.IsNullOrEmpty(this.txtTestPackageNo.Text.Trim()))
{
strSql += " and t.TestPackageNo like @testPackageNo";
listStr.Add(new SqlParameter("@testPackageNo", "%" + this.txtTestPackageNo.Text.Trim() + "%"));
}
2025-07-10 16:47:41 +08:00
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
// 2.获取当前分页数据
//var table = this.GetPagedDataTable(Grid1, tb1);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
#endregion
#region
#region
/// <summary>
/// 页索引改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 分页选择下拉改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
#endregion
#endregion
#region
/// <summary>
/// 打印按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnPrint_Click(object sender, EventArgs e)
{
2025-08-18 10:15:28 +08:00
var selectedRows = this.Grid1.SelectedRowIDArray;
if (selectedRows.Length == 0)
2025-07-10 16:47:41 +08:00
{
Alert.ShowInTop("请选择一条试压包", MessageBoxIcon.Warning);
return;
}
2025-08-28 15:41:32 +08:00
Dictionary<string, string> printFiles = new Dictionary<string, string>();
2025-08-18 10:15:28 +08:00
foreach (var ptp_id in selectedRows)
{
2025-08-28 15:41:32 +08:00
var item = exportWord(ptp_id);
2025-09-01 10:11:37 +08:00
TestPackagePrintService.AddPrintCountByPTP_ID(ptp_id);//增加明细打印次数
printFiles.Add(item.FirstOrDefault().Key, item.FirstOrDefault().Value);
2025-08-28 15:41:32 +08:00
}
if (printFiles.Count > 1)
2025-08-28 15:41:32 +08:00
{
string zipName = "";
2025-08-28 15:41:32 +08:00
string rootPath = Funs.RootPath;
string startPath = rootPath + "FileUpload\\试压包资料" + DateTime.Now.GetHashCode();
if (!Directory.Exists(startPath))
{
Directory.CreateDirectory(startPath);
}
string zipPath = rootPath + "FileUpload\\试压包资料" + DateTime.Now.GetHashCode() + ".zip";
foreach (var item in printFiles)
{
var sourceFile = item.Key;
var destFile = startPath + "\\" + item.Value;
zipName += item.Value.Replace(".pdf", "") + ",";
2025-08-28 15:41:32 +08:00
if (File.Exists(sourceFile))
{
File.Copy(sourceFile, destFile, true);
File.Delete(sourceFile);
}
}
zipName = zipName.TrimEnd(',');
2025-08-28 15:41:32 +08:00
System.IO.Compression.ZipFile.CreateFromDirectory(startPath, zipPath);
FileInfo info = new FileInfo(zipPath);
long fileSize = info.Length;
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = "application/x-zip-compressed";
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(zipName + ".zip", System.Text.Encoding.UTF8));
2025-08-28 15:41:32 +08:00
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
System.Web.HttpContext.Current.Response.TransmitFile(zipPath, 0, fileSize);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();
Funs.DeleteDir(startPath);
File.Delete(zipPath);
}
else
{
FileInfo info = new FileInfo(printFiles.FirstOrDefault().Key);
long fileSize = info.Length;
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = "application/x-zip-compressed";
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(printFiles.FirstOrDefault().Value, System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
System.Web.HttpContext.Current.Response.TransmitFile(printFiles.FirstOrDefault().Key, 0, fileSize);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();
}
2025-07-10 16:47:41 +08:00
}
2025-09-01 10:11:37 +08:00
protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "typePrint")
{
object[] keys = Grid1.DataKeys[e.RowIndex];
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("TestPackageDatePrint.aspx?PTP_ID={0}", keys[0], "编辑 - ")));
2025-07-10 16:47:41 +08:00
2025-09-01 10:11:37 +08:00
}
}
protected Dictionary<string, string> exportWord(string ptp_id)
2025-07-10 16:47:41 +08:00
{
2025-09-24 17:31:28 +08:00
var keyValuePairs = new Dictionary<string, string>();
2025-08-18 10:15:28 +08:00
if (string.IsNullOrEmpty(ptp_id))
{
Alert.ShowInTop("请选择要打印的单据!", MessageBoxIcon.Warning);
2025-08-28 15:41:32 +08:00
return null;
2025-08-18 10:15:28 +08:00
}
//修改试压包打印状态
var updateTestPackage = Funs.DB.PTP_TestPackage.FirstOrDefault(x => x.PTP_ID == ptp_id);
string exportName = updateTestPackage?.TestPackageNo; //导出文件名称
if (updateTestPackage != null)
2025-07-10 16:47:41 +08:00
{
2025-08-18 10:15:28 +08:00
if (updateTestPackage.PrintState.HasValue && updateTestPackage.PrintState > 0)
2025-07-10 16:47:41 +08:00
{
2025-08-18 10:15:28 +08:00
updateTestPackage.PrintState = updateTestPackage.PrintState + 1;
}
else
{
updateTestPackage.PrintState = 1;
}
BLL.TestPackageEditService.UpdateTestPackagePrintState(updateTestPackage);
2025-07-15 17:25:56 +08:00
2025-08-18 10:15:28 +08:00
string rootPath = Server.MapPath("~/");
BLL.FastReportService.ResetData();
2025-07-10 16:47:41 +08:00
2025-08-18 10:15:28 +08:00
if (this.drpPrintType.SelectedValue == "1")//pdf格式
{
exportName += ".pdf";
2025-08-18 10:15:28 +08:00
ListItem[] list = new ListItem[10];
list[0] = new ListItem("0", "File\\Fastreport\\JGZL\\管道试压包文件资料.frx");
list[1] = new ListItem("1", "File\\Fastreport\\JGZL\\管道压力试验技术要求.frx");
list[2] = new ListItem("2", "File\\Fastreport\\JGZL\\管道压力包文件资料目录.frx");
list[3] = new ListItem("3", "File\\Fastreport\\JGZL\\管道系统压力试验条件确认记录.frx");
list[4] = new ListItem("4", "File\\Fastreport\\JGZL\\管道试压包尾项清单.frx");
list[5] = new ListItem("5", "File\\Fastreport\\JGZL\\管道系统压力试验记录.frx");
list[6] = new ListItem("6", "File\\Fastreport\\JGZL\\管道材料材质标识检查记录.frx");
list[7] = new ListItem("7", "File\\Fastreport\\JGZL\\管道焊接工作记录.frx");
list[8] = new ListItem("8", "File\\Fastreport\\JGZL\\管道无损检测数量统计表.frx");
list[9] = new ListItem("9", "File\\Fastreport\\JGZL\\无损检测结果汇总表.frx");
List<Model.FastReportItem> FastReportItemList = new List<Model.FastReportItem>();
foreach (var item in list)
2025-07-10 16:47:41 +08:00
{
2025-09-24 17:31:28 +08:00
FastReportItemList.Add(TestPackagePrintService.GetFastReportItem(updateTestPackage, item.Text, ptp_id, this.CurrUser.LoginProjectId));
2025-08-18 10:15:28 +08:00
}
2025-07-10 16:47:41 +08:00
2025-08-28 15:41:32 +08:00
string Path = Funs.RootPath + "FileUpload/" + ptp_id + ".pdf";
2025-07-10 16:47:41 +08:00
2025-08-18 10:15:28 +08:00
BLL.FastReportService.ExportMergeReport(FastReportItemList, Path, this.drpPrintType.SelectedValue);
2025-08-28 15:41:32 +08:00
keyValuePairs.Add(Path, exportName);
/* FileInfo info = new FileInfo(Path);
long fileSize = info.Length;
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.ContentType = "application/x-zip-compressed";
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(exportName + ".pdf", System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
System.Web.HttpContext.Current.Response.TransmitFile(Path, 0, fileSize);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();
File.Delete(Path);*/
2025-08-18 10:15:28 +08:00
}
else if (this.drpPrintType.SelectedValue == "2")//word格式
{
exportName += ".docx";
2025-08-18 10:15:28 +08:00
ListItem[] list = new ListItem[3];
list[0] = new ListItem("0", "File\\Fastreport\\JGZL\\管道试压包文件资料.frx");
list[1] = new ListItem("1", "File\\Fastreport\\JGZL\\管道压力试验技术要求.frx");
list[2] = new ListItem("2", "File\\Fastreport\\JGZL\\管道压力包文件资料目录.frx");
List<Model.FastReportItem> FastReportItemList = new List<Model.FastReportItem>();
foreach (var item in list)
{
2025-09-24 17:31:28 +08:00
FastReportItemList.Add(TestPackagePrintService.GetFastReportItem(updateTestPackage, item.Text, ptp_id, this.CurrUser.LoginProjectId));
2025-07-10 16:47:41 +08:00
}
2025-08-18 10:15:28 +08:00
var PathA = Funs.RootPath + "FileUpload/" + ptp_id + ".docx";
BLL.FastReportService.ExportMergeReport(FastReportItemList, PathA, this.drpPrintType.SelectedValue);
Aspose.Words.Document doc1 = new Aspose.Words.Document(PathA);
ListItem[] list2 = new ListItem[1];
list2[0] = new ListItem("3", "File\\Fastreport\\JGZL\\管道系统压力试验条件确认记录.frx");
List<Model.FastReportItem> FastReportItemList2 = new List<Model.FastReportItem>();
foreach (var item in list2)
2025-07-10 16:47:41 +08:00
{
2025-09-24 17:31:28 +08:00
FastReportItemList2.Add(TestPackagePrintService.GetFastReportItem(updateTestPackage, item.Text, ptp_id, this.CurrUser.LoginProjectId));
2025-08-18 10:15:28 +08:00
}
var PathB = Funs.RootPath + "FileUpload/" + ptp_id + "2.docx";
BLL.FastReportService.ExportMergeReport(FastReportItemList2, PathB, this.drpPrintType.SelectedValue);
Aspose.Words.Document doc2 = new Aspose.Words.Document(PathB);
2025-07-10 16:47:41 +08:00
2025-08-18 10:15:28 +08:00
// 合并 Word DOcx 文档
doc1.AppendDocument(doc2, Aspose.Words.ImportFormatMode.KeepSourceFormatting);
2025-07-10 16:47:41 +08:00
2025-08-18 10:15:28 +08:00
ListItem[] list3 = new ListItem[1];
list3[0] = new ListItem("4", "File\\Fastreport\\JGZL\\管道试压包尾项清单.frx");
List<Model.FastReportItem> FastReportItemList3 = new List<Model.FastReportItem>();
foreach (var item in list3)
{
2025-09-24 17:31:28 +08:00
FastReportItemList3.Add(TestPackagePrintService.GetFastReportItem(updateTestPackage, item.Text, ptp_id, this.CurrUser.LoginProjectId));
2025-08-18 10:15:28 +08:00
}
var PathC = Funs.RootPath + "FileUpload/" + ptp_id + "3.docx";
BLL.FastReportService.ExportMergeReport(FastReportItemList3, PathC, this.drpPrintType.SelectedValue);
Aspose.Words.Document doc3 = new Aspose.Words.Document(PathC);
// 合并 Word DOcx 文档
doc1.AppendDocument(doc3, Aspose.Words.ImportFormatMode.KeepSourceFormatting);
ListItem[] list4 = new ListItem[2];
list4[0] = new ListItem("5", "File\\Fastreport\\JGZL\\管道系统压力试验记录.frx");
list4[1] = new ListItem("6", "File\\Fastreport\\JGZL\\管道材料材质标识检查记录.frx");
List<Model.FastReportItem> FastReportItemList4 = new List<Model.FastReportItem>();
foreach (var item in list4)
{
2025-09-24 17:31:28 +08:00
FastReportItemList4.Add(TestPackagePrintService.GetFastReportItem(updateTestPackage, item.Text, ptp_id, this.CurrUser.LoginProjectId));
2025-08-18 10:15:28 +08:00
}
var PathD = Funs.RootPath + "FileUpload/" + ptp_id + "4.docx";
BLL.FastReportService.ExportMergeReport(FastReportItemList4, PathD, this.drpPrintType.SelectedValue);
Aspose.Words.Document doc4 = new Aspose.Words.Document(PathD);
// 合并 Word DOcx 文档
doc1.AppendDocument(doc4, Aspose.Words.ImportFormatMode.KeepSourceFormatting);
ListItem[] list5 = new ListItem[3];
list5[0] = new ListItem("7", "File\\Fastreport\\JGZL\\管道焊接工作记录.frx");
list5[1] = new ListItem("8", "File\\Fastreport\\JGZL\\管道无损检测数量统计表.frx");
list5[2] = new ListItem("9", "File\\Fastreport\\JGZL\\无损检测结果汇总表.frx");
List<Model.FastReportItem> FastReportItemList5 = new List<Model.FastReportItem>();
foreach (var item in list5)
{
2025-09-24 17:31:28 +08:00
FastReportItemList5.Add(TestPackagePrintService.GetFastReportItem(updateTestPackage, item.Text, ptp_id, this.CurrUser.LoginProjectId));
2025-07-10 16:47:41 +08:00
}
2025-08-18 10:15:28 +08:00
var PathE = Funs.RootPath + "FileUpload/" + ptp_id + "5.docx";
BLL.FastReportService.ExportMergeReport(FastReportItemList5, PathE, this.drpPrintType.SelectedValue);
Aspose.Words.Document doc5 = new Aspose.Words.Document(PathE);
// 合并 Word DOcx 文档
doc1.AppendDocument(doc5, Aspose.Words.ImportFormatMode.KeepSourceFormatting);
//将合并的文档保存为 DOCX 文件
var Path = Funs.RootPath + "FileUpload/" + ptp_id + "Result.docx";
2025-08-28 15:41:32 +08:00
doc1.Save(Path);
keyValuePairs.Add(Path, exportName);
2025-08-18 10:15:28 +08:00
/* FileInfo info = new FileInfo(Path);
long fileSize = info.Length;
2025-08-18 10:15:28 +08:00
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = "application/x-zip-compressed";
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(exportName + ".docx", System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
System.Web.HttpContext.Current.Response.TransmitFile(Path, 0, fileSize);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();*/
2025-08-28 15:41:32 +08:00
//File.Delete(Path);
2025-08-18 10:15:28 +08:00
File.Delete(PathA);
File.Delete(PathB);
File.Delete(PathC);
File.Delete(PathD);
File.Delete(PathE);
2025-07-10 16:47:41 +08:00
}
2025-08-28 15:41:32 +08:00
2025-07-10 16:47:41 +08:00
}
2025-08-28 15:41:32 +08:00
return keyValuePairs;
2025-08-18 10:15:28 +08:00
}
2025-07-10 16:47:41 +08:00
#endregion
2025-07-15 17:25:56 +08:00
#region
protected string getMaterialCodeByPipelineId(string pipelineId)
{
string materialCode = string.Empty;
if (!string.IsNullOrEmpty(pipelineId))
{
var weldjoint = (from x in Funs.DB.HJGL_WeldJoint
join y in Funs.DB.Base_Material on x.Material1Id equals y.MaterialId
join z in Funs.DB.Base_Material on x.Material2Id equals z.MaterialId
where x.PipelineId == pipelineId
select new { MaterialCode1 = y.MaterialCode, MaterialCode2 = z.MaterialCode }).FirstOrDefault();
if (weldjoint != null)
{
if (!string.IsNullOrEmpty(weldjoint.MaterialCode1) && !string.IsNullOrEmpty(weldjoint.MaterialCode2))
2025-07-15 17:25:56 +08:00
{
materialCode = weldjoint.MaterialCode1 + "/" + weldjoint.MaterialCode2;
}
else
{
if (!string.IsNullOrEmpty(weldjoint.MaterialCode1))
{
materialCode = weldjoint.MaterialCode1;
}
else
{
materialCode = weldjoint.MaterialCode2;
}
}
2025-07-15 17:25:56 +08:00
}
}
return materialCode;
}
protected string getSpecificationByPipelineId(string pipelineId)
{
string spcificaation = string.Empty;
if (!string.IsNullOrEmpty(pipelineId))
{
var weldjoint = (from x in Funs.DB.HJGL_WeldJoint where x.PipelineId == pipelineId select x).FirstOrDefault();
if (weldjoint != null)
{
spcificaation = weldjoint.Specification;
}
}
return spcificaation;
}
#endregion
2025-08-05 23:34:06 +08:00
#region
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtTestPackageNo_TextChanged(object sender, EventArgs e)
{
BindGrid();
}
#endregion
2025-07-10 16:47:41 +08:00
}
}