426 lines
19 KiB
C#
426 lines
19 KiB
C#
using BLL;
|
|
using MiniExcelLibs;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
namespace FineUIPro.Web.HJGL.PreDesign
|
|
{
|
|
public partial class InstallList : PageBase
|
|
{
|
|
public int pageSize = 20;
|
|
public static DataTable GridDataTable = new DataTable();
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (!IsPostBack)
|
|
{
|
|
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
|
|
this.InitTreeMenu();//加载树
|
|
}
|
|
}
|
|
|
|
#region 加载树装置-单位-工作区
|
|
/// <summary>
|
|
/// 加载树
|
|
/// </summary>
|
|
private void InitTreeMenu()
|
|
{
|
|
this.tvControlItem.Nodes.Clear();
|
|
|
|
TreeNode rootNode1 = new TreeNode();
|
|
rootNode1.NodeID = "1";
|
|
rootNode1.Text = "建筑工程";
|
|
rootNode1.CommandName = "建筑工程";
|
|
rootNode1.Selectable = false;
|
|
this.tvControlItem.Nodes.Add(rootNode1);
|
|
|
|
TreeNode rootNode2 = new TreeNode();
|
|
rootNode2.NodeID = "2";
|
|
rootNode2.Text = "安装工程";
|
|
rootNode2.CommandName = "安装工程";
|
|
rootNode2.Expanded = 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 unitWorkList = (from x in Funs.DB.WBS_UnitWork
|
|
where x.ProjectId == this.CurrUser.LoginProjectId
|
|
&& x.SuperUnitWork == null && x.UnitId != null && x.ProjectType != null
|
|
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();
|
|
//}
|
|
|
|
if (unitWork1.Count() > 0)
|
|
{
|
|
foreach (var q in unitWork1)
|
|
{
|
|
int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == q.UnitWorkId && x.PipeArea == "1" && x.PipelineCode.Contains(txtPipelineCode.Text.Trim()) select x.FlowingSection).Distinct().Count();
|
|
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
|
|
TreeNode tn1 = new TreeNode();
|
|
tn1.NodeID = q.UnitWorkId;
|
|
//tn1.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线";
|
|
tn1.Text = q.UnitWorkName;
|
|
tn1.ToolTip = "施工单位:" + unitNamesUnitIds;
|
|
tn1.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize);
|
|
tn1.EnableClickEvent = true;
|
|
tn1.EnableExpandEvent = true;
|
|
rootNode1.Nodes.Add(tn1);
|
|
if (a > 0)
|
|
{
|
|
// BindNodes(tn1);
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = "加载流水段...";
|
|
newNode.NodeID = "加载流水段...";
|
|
tn1.Nodes.Add(newNode);
|
|
}
|
|
//if (a > 0)
|
|
//{
|
|
// BindNodes(tn1);
|
|
//}
|
|
}
|
|
}
|
|
if (unitWork2.Count() > 0)
|
|
{
|
|
foreach (var q in unitWork2)
|
|
{
|
|
int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == q.UnitWorkId && x.PipeArea == "1" && x.PipelineCode.Contains(txtPipelineCode.Text.Trim()) select x.FlowingSection).Distinct().Count();
|
|
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
|
|
TreeNode tn2 = new TreeNode();
|
|
tn2.NodeID = q.UnitWorkId;
|
|
//tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线";
|
|
tn2.Text = q.UnitWorkName;
|
|
if (q.UnitWorkId == this.hdUnitWorkId.Text)
|
|
{
|
|
tn2.Expanded = true;
|
|
}
|
|
tn2.ToolTip = "施工单位:" + unitNamesUnitIds;
|
|
tn2.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize);
|
|
tn2.EnableClickEvent = true;
|
|
tn2.EnableExpandEvent = true;
|
|
rootNode2.Nodes.Add(tn2);
|
|
if (a > 0)
|
|
{
|
|
// BindNodes(tn1);
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = "加载流水段...";
|
|
newNode.NodeID = "加载流水段...";
|
|
tn2.Nodes.Add(newNode);
|
|
}
|
|
//if (a > 0)
|
|
//{
|
|
// BindNodes(tn2);
|
|
//}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void BindNodes(TreeNode node)
|
|
{
|
|
List<string> flowingSection = new List<string>();
|
|
//List<Model.HJGL_Pipeline> pipeline = new List<Model.HJGL_Pipeline>();
|
|
var list = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.PipeArea == "1" && x.UnitWorkId == node.NodeID && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) select x.FlowingSection).ToList();
|
|
flowingSection = list.Where(x => !string.IsNullOrWhiteSpace(x) == true).Distinct().OrderBy(x => x).ToList();
|
|
//int pageindex = int.Parse(node.CommandName.Split('|')[0]);
|
|
//int pageCount = int.Parse(node.CommandName.Split('|')[1]);
|
|
//if (pageindex <= pageCount)
|
|
//{
|
|
// flowingSection = flowingSection.Skip(pageSize * (pageindex - 1)).Take(pageSize).ToList();
|
|
foreach (var item in flowingSection)
|
|
{
|
|
//var comCount = (from x in Funs.DB.HJGL_Pipeline_Component where x.PipelineId == item.PipelineId select x).Count();
|
|
TreeNode newNode = new TreeNode();
|
|
//newNode.Text = item.PipelineCode + "【" + comCount.ToString() + " " + "组件" + "】";
|
|
newNode.Text = item;
|
|
newNode.ToolTip = "流水段";
|
|
newNode.CommandName = "流水段";
|
|
newNode.NodeID = SQLHelper.GetNewID();
|
|
newNode.EnableClickEvent = true;
|
|
node.Nodes.Add(newNode);
|
|
}
|
|
// if (pageindex < pageCount)
|
|
// {
|
|
// TreeNode newNode = new TreeNode();
|
|
// newNode.Text = "加载";
|
|
// newNode.NodeID = "加载";
|
|
// //newNode.NodeID = SQLHelper.GetNewID();
|
|
// newNode.CommandName = "加载";
|
|
// newNode.Icon = Icon.ArrowDown;
|
|
// newNode.EnableClickEvent = true;
|
|
// node.Nodes.Add(newNode);
|
|
// }
|
|
//}
|
|
}
|
|
|
|
#endregion
|
|
|
|
protected void tvControlItem_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
|
|
{
|
|
if (e.Node.Nodes[0].NodeID == "加载流水段...")
|
|
{
|
|
e.Node.Nodes.Clear();
|
|
BindNodes(e.Node);
|
|
}
|
|
}
|
|
|
|
#region 点击TreeView
|
|
/// <summary>
|
|
/// 点击TreeView
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
|
|
{
|
|
if (e.CommandName == "流水段")
|
|
{
|
|
Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByFlowingSection(this.tvControlItem.SelectedNode.Text);
|
|
this.hdUnitWorkId.Text = string.Empty;
|
|
if (pipeline != null)
|
|
{
|
|
this.hdUnitWorkId.Text = this.tvControlItem.SelectedNode.ParentNode.NodeID;
|
|
}
|
|
}
|
|
this.BindGrid();
|
|
}
|
|
#endregion
|
|
|
|
#region 数据绑定
|
|
/// <summary>
|
|
/// 数据绑定
|
|
/// </summary>
|
|
private void BindGrid()
|
|
{
|
|
if (tvControlItem.SelectedNode == null) return;
|
|
DataTable tb = BindData();
|
|
GridDataTable = tb;
|
|
// 2.获取当前分页数据
|
|
Grid1.RecordCount = tb.Rows.Count;
|
|
var table = this.GetPagedDataTable(Grid1, tb);
|
|
Grid1.DataSource = table;
|
|
Grid1.DataBind();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private DataTable BindData()
|
|
{
|
|
string strSql = @"WITH cte as (select newid()as id,pipeline.PipelineCode as PipelineCode,
|
|
comonent.PipelineComponentCode as PipelineComponentCode,
|
|
'预制组件' as Stype,
|
|
'' as matdef,
|
|
packdetail.Number as Number,
|
|
pack.PackagingCode as PackagingCode,
|
|
trainnumber.TrainNumber as TrainNumber,
|
|
pipeline.FlowingSection as FlowingSection,
|
|
pipeline.UnitWorkId as UnitWorkId
|
|
from HJGL_Pipeline pipeline
|
|
left join HJGL_PackagingManageDetail packdetail on pipeline.PipelineId = packdetail.PipelineId
|
|
left join HJGL_Pipeline_Component comonent
|
|
on packdetail.PipelineComponentId = comonent.PipelineComponentId
|
|
left join HJGL_PackagingManage pack on packdetail.PackagingManageId = pack.PackagingManageId
|
|
left join HJGL_TrainNumberManage trainnumber on pack.TrainNumberId = TrainNumber.Id
|
|
where (packdetail.PipelineComponentId is not null or packdetail.PipelineComponentId != '')
|
|
union all
|
|
select newid()as id,pipeline.PipelineCode as PipelineCode,
|
|
packdetail.MaterialCode as PipelineComponentCode,
|
|
'预制散件' as Stype,
|
|
matlib.MaterialDef as matdef,
|
|
packdetail.Number as Number,
|
|
pack.PackagingCode as PackagingCode,
|
|
trainnumber.TrainNumber as TrainNumber,
|
|
pipeline.FlowingSection as FlowingSection,
|
|
pipeline.UnitWorkId as UnitWorkId
|
|
from HJGL_Pipeline pipeline
|
|
left join HJGL_PackagingManageDetail packdetail on pipeline.PipelineId = packdetail.PipelineId
|
|
left join HJGL_MaterialCodeLib matlib on packdetail.MaterialCode = matlib.MaterialCode
|
|
left join HJGL_PackagingManage pack on packdetail.PackagingManageId = pack.PackagingManageId
|
|
left join HJGL_TrainNumberManage trainnumber on pack.TrainNumberId = TrainNumber.Id
|
|
where (packdetail.PipelineComponentId is null or packdetail.PipelineComponentId = ''))
|
|
SELECT * FROM cte WHERE 1=1 ";
|
|
|
|
List<SqlParameter> listStr = new List<SqlParameter>();
|
|
if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2)
|
|
{
|
|
strSql += " and cte.UnitWorkId =@UnitWorkId";
|
|
listStr.Add(new SqlParameter("@UnitWorkId", this.tvControlItem.SelectedNodeID));
|
|
}
|
|
else if (tvControlItem.SelectedNode.CommandName == "流水段")
|
|
{
|
|
strSql += " and cte.FlowingSection = @FlowingSection ";
|
|
listStr.Add(new SqlParameter("@FlowingSection", this.tvControlItem.SelectedNode.Text));
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(txtPipelineCode2.Text))
|
|
{
|
|
strSql += " AND cte.PipelineCode like @PipelineCode";
|
|
listStr.Add(new SqlParameter("@PipelineCode", "%" + this.txtPipelineCode2.Text.Trim() + "%"));
|
|
}
|
|
if (!string.IsNullOrEmpty(txtPipelineComponentCode.Text))
|
|
{
|
|
strSql += " AND cte.PipelineComponentCode like @PipelineComponentCode";
|
|
listStr.Add(new SqlParameter("@PipelineComponentCode", "%" + this.txtPipelineComponentCode.Text.Trim() + "%"));
|
|
}
|
|
//if (!string.IsNullOrEmpty(drpFlowingSection.SelectedValue) && drpFlowingSection.SelectedValue != Const._Null)
|
|
//{
|
|
// strSql += " AND cte.FlowingSection =@FlowingSection";
|
|
// listStr.Add(new SqlParameter("@FlowingSection", drpFlowingSection.SelectedValue.ToString()));
|
|
//}
|
|
if (!string.IsNullOrEmpty(txtPipelineCode.Text))
|
|
{
|
|
strSql += " AND cte.PipelineCode like @pipeline";
|
|
listStr.Add(new SqlParameter("@pipeline", "%" + this.txtPipelineCode.Text.Trim() + "%"));
|
|
}
|
|
strSql += " ORDER BY PipelineCode,PipelineComponentCode ";
|
|
SqlParameter[] parameter = listStr.ToArray();
|
|
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|
return tb;
|
|
}
|
|
|
|
#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 查询事件
|
|
|
|
protected void btnSearch_Click(object sender, EventArgs e)
|
|
{
|
|
BindGrid();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 刷新页面
|
|
|
|
/// <summary>
|
|
/// 查询
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
//protected void TextBox_TextChanged(object sender, EventArgs e)
|
|
//{
|
|
// this.BindGrid();
|
|
//}
|
|
protected void btnTreeFind_Click1(object sender, EventArgs e)
|
|
{
|
|
this.InitTreeMenu();
|
|
this.BindGrid();
|
|
}
|
|
#endregion
|
|
|
|
public string ConvertProductionState(object state)
|
|
{
|
|
string StateName = string.Empty;
|
|
if (state != null)
|
|
{
|
|
if (!string.IsNullOrEmpty(state.ToString()))
|
|
{
|
|
string txt = HJGL_PipelineComponentService.GetProductionState().FirstOrDefault(x => x.Value == state.ToString()).Text;
|
|
return txt;
|
|
}
|
|
}
|
|
return StateName;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导出
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void btnOut_Click(object sender, EventArgs e)
|
|
{
|
|
if (GridDataTable != null)
|
|
{
|
|
var q = (from x in GridDataTable.AsEnumerable()
|
|
select new
|
|
{
|
|
管线号 = x.Field<string>("PipelineCode"),
|
|
类型 = x.Field<string>("Stype"),
|
|
组件编号 = x.Field<string>("PipelineComponentCode"),
|
|
预制散件材料描述 = !string.IsNullOrWhiteSpace(x.Field<string>("matdef")) ? x.Field<string>("matdef") : "-",
|
|
数量 = x.Field<decimal?>("Number"),
|
|
所在包装编号 = x.Field<string>("PackagingCode"),
|
|
车次 = x.Field<string>("TrainNumber"),
|
|
流水段 = x.Field<string>("FlowingSection")
|
|
});
|
|
string path = Funs.RootPath + @"File\Excel\Temp\PrePipelineInstallList.xlsx";
|
|
path = path.Replace(".xlsx", string.Format("{0:yyyy-MM-dd}", DateTime.Now) + ".xlsx");
|
|
|
|
MiniExcel.SaveAs(path, q);
|
|
|
|
string fileName = $"安装清单-" + this.tvControlItem.SelectedNode.Text + "-" + string.Format("{0:yyyy-MM-dd}", DateTime.Now) + ".xlsx";
|
|
FileInfo info = new FileInfo(path);
|
|
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(fileName, 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);
|
|
}
|
|
}
|
|
}
|
|
} |