554 lines
24 KiB
C#
554 lines
24 KiB
C#
using BLL;
|
||
using Newtonsoft.Json.Linq;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Data.SqlClient;
|
||
using System.Linq;
|
||
using System.Web.UI.WebControls;
|
||
using AspNet = System.Web.UI.WebControls;
|
||
|
||
namespace FineUIPro.Web.CQMS.ProcessControl
|
||
{
|
||
public partial class ShowUnitWork : PageBase
|
||
{
|
||
/// <summary>
|
||
/// 被选择项列表
|
||
/// </summary>
|
||
public List<string> SelectedList
|
||
{
|
||
get
|
||
{
|
||
return (List<string>)ViewState["SelectedList"];
|
||
}
|
||
set
|
||
{
|
||
ViewState["SelectedList"] = value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 未被选择项列表
|
||
/// </summary>
|
||
public List<string> NoSelectedList
|
||
{
|
||
get
|
||
{
|
||
return (List<string>)ViewState["NoSelectedList"];
|
||
}
|
||
set
|
||
{
|
||
ViewState["NoSelectedList"] = value;
|
||
}
|
||
}
|
||
|
||
#region 加载
|
||
/// <summary>
|
||
/// 加载页面
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Page_Load(object sender, EventArgs e)
|
||
{
|
||
if (!IsPostBack)
|
||
{
|
||
this.SelectedList = new List<string>();
|
||
this.NoSelectedList = new List<string>();
|
||
string cnProfessionalId = Request.Params["CNPrefessionalId"];
|
||
InitTreeMenu();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 加载树
|
||
/// </summary>
|
||
/// <param name="cnProfessionalId"></param>
|
||
private void InitTreeMenu()
|
||
{
|
||
this.trWBS.Nodes.Clear();
|
||
this.trWBS.ShowBorder = false;
|
||
this.trWBS.ShowHeader = false;
|
||
this.trWBS.EnableIcons = true;
|
||
this.trWBS.AutoScroll = true;
|
||
this.trWBS.EnableSingleClickExpand = true;
|
||
if (this.CurrUser.UserId == BLL.Const.hfnbdId)//测试账号用
|
||
{
|
||
var unitWorks = from x in Funs.DB.WBS_UnitWork
|
||
join y in Funs.DB.WBS_DivisionDivide on x.UnitWorkId equals y.UnitWorkId
|
||
where x.ProjectId == this.CurrUser.LoginProjectId
|
||
&& (x.SuperUnitWork == null || x.SuperUnitWork == "0")
|
||
orderby x.UnitWorkCode select new
|
||
{
|
||
x.UnitWorkId,
|
||
x.UnitWorkName
|
||
};
|
||
foreach (var q in unitWorks.Distinct())
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = q.UnitWorkName;
|
||
newNode.NodeID = q.UnitWorkId;
|
||
newNode.CommandName = "UnitWork";
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
this.trWBS.Nodes.Add(newNode);
|
||
TreeNode emptyNode = new TreeNode();
|
||
emptyNode.Text = "";
|
||
emptyNode.NodeID = "";
|
||
newNode.Nodes.Add(emptyNode);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var unitWorks = from x in Funs.DB.WBS_UnitWork where x.ProjectId == this.CurrUser.LoginProjectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0") orderby x.UnitWorkCode select x;
|
||
foreach (var q in unitWorks)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = q.UnitWorkName;
|
||
newNode.NodeID = q.UnitWorkId;
|
||
newNode.CommandName = "UnitWork";
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
this.trWBS.Nodes.Add(newNode);
|
||
TreeNode emptyNode = new TreeNode();
|
||
emptyNode.Text = "";
|
||
emptyNode.NodeID = "";
|
||
newNode.Nodes.Add(emptyNode);
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 展开树
|
||
/// <summary>
|
||
/// 展开树
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void trWBS_NodeExpand(object sender, TreeNodeEventArgs e)
|
||
{
|
||
e.Node.Nodes.Clear();
|
||
Model.SGGLDB db = Funs.DB;
|
||
if (e.Node.CommandName == "UnitWork") //展开工程类型
|
||
{
|
||
string cnProfessionalId = Request.Params["CNPrefessionalId"];
|
||
if (this.CurrUser.UserId == BLL.Const.hfnbdId)
|
||
{
|
||
string professionalName = string.Empty;
|
||
var pointCropping = from x in db.Control_PointCropping where x.ControlId == cnProfessionalId select x;
|
||
if (pointCropping.FirstOrDefault(x => x.DetectionItems.Contains("设备")) != null)
|
||
{
|
||
professionalName = "设备";
|
||
}
|
||
else
|
||
{
|
||
professionalName = pointCropping.FirstOrDefault().DetectionItems;
|
||
}
|
||
var divisions = (from x in db.WBS_DivisionProject
|
||
join y in db.Base_CNProfessional on x.CNProfessionalId equals y.CNProfessionalId
|
||
where y.ProfessionalName == professionalName
|
||
&& x.ProjectId == this.CurrUser.LoginProjectId
|
||
&& x.SuperDivisionId == null
|
||
&& x.UnitWorkId == e.NodeID
|
||
&& x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
//}
|
||
//if (this.CurrUser.UserId == BLL.Const.hfnbdId)//测试阶段,仅hfnbd账号使用
|
||
//{
|
||
//Model.Control_PointCropping pc = new Model.Control_PointCropping();
|
||
Model.Base_CNProfessional cNProfessional = new Model.Base_CNProfessional();
|
||
var pc = Funs.DB.Control_PointCropping.FirstOrDefault(x => (x.ParentId == null || x.ParentId == "") && x.DetectionItems == "土建");
|
||
if (divisions.Count() == 0 && pc != null)
|
||
{
|
||
cNProfessional = (from x in db.Base_CNProfessional where x.ProfessionalName == "土建" orderby x.SortIndex select x).FirstOrDefault();
|
||
//pc = (from x in db.Control_PointCropping where (x.ParentId == null || x.ParentId == "") && x.ControlId == "E9AC9563-E338-48B7-867D-488222AD0557" orderby x.OperateTime select x).FirstOrDefault();
|
||
}
|
||
else
|
||
{
|
||
cNProfessional = (from x in db.Base_CNProfessional
|
||
where x.ProfessionalName.Contains(professionalName)
|
||
orderby x.SortIndex
|
||
select x).FirstOrDefault();
|
||
//pc = (from x in db.Control_PointCropping where (x.ParentId == null || x.ParentId == "") && x.ControlId == cnProfessionalId orderby x.OperateTime select x).FirstOrDefault();
|
||
}
|
||
if (pc != null)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = cNProfessional.ProfessionalName;
|
||
newNode.NodeID = cNProfessional.CNProfessionalId + "|" + e.NodeID;
|
||
newNode.CommandName = "CNProfessional";
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
newNode.EnableExpandEvent = true;
|
||
e.Node.Nodes.Add(newNode);
|
||
TreeNode tempNode = new TreeNode();
|
||
tempNode.NodeID = "";
|
||
tempNode.Text = "";
|
||
newNode.Nodes.Add(tempNode);
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
var divisions = (from x in db.WBS_DivisionProject
|
||
where x.CNProfessionalId == cnProfessionalId
|
||
&& x.ProjectId == this.CurrUser.LoginProjectId
|
||
&& x.SuperDivisionId == null
|
||
&& x.UnitWorkId == e.NodeID
|
||
&& x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
Model.Base_CNProfessional cNProfessional = new Model.Base_CNProfessional();
|
||
if (divisions.Count() == 0 && cnProfessionalId == BLL.Const.CNProfessionalCVId)
|
||
{
|
||
cNProfessional = (from x in db.Base_CNProfessional where x.CNProfessionalId == BLL.Const.CNProfessionalConstructId orderby x.SortIndex select x).FirstOrDefault();
|
||
}
|
||
else
|
||
{
|
||
cNProfessional = (from x in db.Base_CNProfessional where x.CNProfessionalId == cnProfessionalId orderby x.SortIndex select x).FirstOrDefault();
|
||
}
|
||
if (cNProfessional != null)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = cNProfessional.ProfessionalName;
|
||
newNode.NodeID = cNProfessional.CNProfessionalId + "|" + e.NodeID;
|
||
newNode.CommandName = "CNProfessional";
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
newNode.EnableExpandEvent = true;
|
||
e.Node.Nodes.Add(newNode);
|
||
TreeNode tempNode = new TreeNode();
|
||
tempNode.NodeID = "";
|
||
tempNode.Text = "";
|
||
newNode.Nodes.Add(tempNode);
|
||
}
|
||
}
|
||
}
|
||
else if (e.Node.CommandName == "CNProfessional") //展开专业
|
||
{
|
||
string unitWorkId = e.Node.ParentNode.NodeID;
|
||
string cNProfessionalId = Request.Params["CNPrefessionalId"];
|
||
if (this.CurrUser.UserId == BLL.Const.hfnbdId)
|
||
{
|
||
string professionalName = string.Empty;
|
||
var pointCropping = from x in db.Control_PointCropping where x.ControlId == cNProfessionalId select x;
|
||
if (pointCropping.FirstOrDefault(x => x.DetectionItems.Contains("设备")) != null)
|
||
{
|
||
professionalName = "设备";
|
||
}
|
||
else
|
||
{
|
||
professionalName = pointCropping.FirstOrDefault().DetectionItems;
|
||
}
|
||
var divisions = (from x in db.WBS_DivisionProject
|
||
join y in db.Base_CNProfessional on x.CNProfessionalId equals y.CNProfessionalId
|
||
where y.ProfessionalName.Contains(professionalName) && x.ProjectId == this.CurrUser.LoginProjectId && x.SuperDivisionId == null && x.UnitWorkId == unitWorkId && x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
|
||
foreach (var q in divisions)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = q.DivisionName;
|
||
newNode.NodeID = q.DivisionProjectId;
|
||
newNode.CommandName = "DivisionProject";
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
newNode.EnableExpandEvent = true;
|
||
e.Node.Nodes.Add(newNode);
|
||
var list = (from x in Funs.DB.WBS_DivisionProject
|
||
where x.SuperDivisionId == q.DivisionProjectId && x.ProjectId == this.CurrUser.LoginProjectId
|
||
&& x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
if (list.Count > 0)
|
||
{
|
||
TreeNode tempNode = new TreeNode();
|
||
tempNode.NodeID = "";
|
||
tempNode.Text = "";
|
||
newNode.Nodes.Add(tempNode);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var divisions = (from x in db.WBS_DivisionProject
|
||
where x.CNProfessionalId==cNProfessionalId && x.ProjectId == this.CurrUser.LoginProjectId && x.SuperDivisionId == null && x.UnitWorkId == unitWorkId && x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
|
||
foreach (var q in divisions)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = q.DivisionName;
|
||
newNode.NodeID = q.DivisionProjectId;
|
||
newNode.CommandName = "DivisionProject";
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
newNode.EnableExpandEvent = true;
|
||
e.Node.Nodes.Add(newNode);
|
||
var list = (from x in Funs.DB.WBS_DivisionProject
|
||
where x.SuperDivisionId == q.DivisionProjectId && x.ProjectId == this.CurrUser.LoginProjectId
|
||
&& x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
if (list.Count > 0)
|
||
{
|
||
TreeNode tempNode = new TreeNode();
|
||
tempNode.NodeID = "";
|
||
tempNode.Text = "";
|
||
newNode.Nodes.Add(tempNode);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (e.Node.CommandName == "DivisionProject") //展开分部节点
|
||
{
|
||
string parentId = e.NodeID;
|
||
var childDivisions = (from x in db.WBS_DivisionProject
|
||
where x.SuperDivisionId == parentId && x.ProjectId == this.CurrUser.LoginProjectId
|
||
&& x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
foreach (var q in childDivisions)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = q.DivisionName;
|
||
newNode.NodeID = q.DivisionProjectId;
|
||
newNode.CommandName = "DivisionProject";
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
newNode.EnableExpandEvent = true;
|
||
e.Node.Nodes.Add(newNode);
|
||
var list = (from x in Funs.DB.WBS_DivisionProject
|
||
where x.SuperDivisionId == q.DivisionProjectId && x.ProjectId == this.CurrUser.LoginProjectId
|
||
&& x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
if (list.Count > 0)
|
||
{
|
||
TreeNode tempNode = new TreeNode();
|
||
tempNode.NodeID = "";
|
||
tempNode.Text = "";
|
||
newNode.Nodes.Add(tempNode);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 遍历节点
|
||
/// <summary>
|
||
/// 遍历节点
|
||
/// </summary>
|
||
/// <param name="nodes"></param>
|
||
/// <param name="parentId"></param>
|
||
/// <param name="node"></param>
|
||
/// <param name="unitWorkId"></param>
|
||
private void GetNodes(TreeNodeCollection nodes, string parentId, TreeNode node, string unitWorkId,Model.SGGLDB db)
|
||
{
|
||
if (!string.IsNullOrEmpty(unitWorkId))
|
||
{
|
||
var divisions = (from x in db.WBS_DivisionProject
|
||
where x.CNProfessionalId == parentId && x.ProjectId == this.CurrUser.LoginProjectId && x.SuperDivisionId == null && x.UnitWorkId == unitWorkId && x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
foreach (var q in divisions)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = q.DivisionName;
|
||
newNode.NodeID = q.DivisionProjectId;
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
newNode.Expanded = true;
|
||
node.Nodes.Add(newNode);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var childDivisions = (from x in db.WBS_DivisionProject
|
||
where x.SuperDivisionId == parentId && x.ProjectId == this.CurrUser.LoginProjectId
|
||
&& x.IsSelected == true
|
||
orderby x.SortIndex
|
||
select x).ToList();
|
||
foreach (var q in childDivisions)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
newNode.Text = q.DivisionName;
|
||
newNode.NodeID = q.DivisionProjectId;
|
||
newNode.EnableExpandEvent = true;
|
||
newNode.EnableClickEvent = true;
|
||
newNode.Expanded = true;
|
||
nodes.Add(newNode);
|
||
}
|
||
}
|
||
for (int i = 0; i < nodes.Count; i++)
|
||
{
|
||
GetNodes(nodes[i].Nodes, nodes[i].NodeID, nodes[i], string.Empty,db);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 点击树节点
|
||
/// <summary>
|
||
/// 点击树节点
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void trWBS_NodeCommand(object sender, TreeCommandEventArgs e)
|
||
{
|
||
this.hdDivisionProjectId.Text = this.trWBS.SelectedNode.NodeID;
|
||
foreach (JObject mergedRow in Grid1.GetMergedData())
|
||
{
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
int i = mergedRow.Value<int>("index");
|
||
AspNet.CheckBox ckb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect"));
|
||
if (ckb.Checked)
|
||
{
|
||
SelectedList.Add(this.Grid1.Rows[i].RowID);
|
||
}
|
||
else
|
||
{
|
||
NoSelectedList.Add(this.Grid1.Rows[i].RowID);
|
||
}
|
||
}
|
||
BindGrid();
|
||
}
|
||
#endregion
|
||
|
||
#region 数据绑定
|
||
/// <summary>
|
||
/// 绑定数据
|
||
/// </summary>
|
||
private void BindGrid()
|
||
{
|
||
string strSql = @"SELECT V.BreakdownProjectId,
|
||
V.ProjectId,
|
||
V.BreakdownCode,
|
||
V.BreakdownName,
|
||
V.DivisionProjectId,
|
||
V.Basis,
|
||
V.CheckPoints,
|
||
V.RecordAndCode,
|
||
V.Class,
|
||
V.SortIndex,
|
||
V.Remark,
|
||
V.AttachUrl,
|
||
V.IsAcceptance,
|
||
V.FenBao,
|
||
V.WuHuan,
|
||
V.JianLi,
|
||
V.YeZhu,
|
||
V.IsSelected"
|
||
+ @" FROM View_WBS_BreakdownProject AS V "
|
||
+ @" WHERE V.ProjectId=@ProjectId AND V.DivisionProjectId=@divisionProjectId";
|
||
List<SqlParameter> listStr = new List<SqlParameter>();
|
||
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
|
||
listStr.Add(new SqlParameter("@divisionProjectId", this.hdDivisionProjectId.Text.Trim()));
|
||
SqlParameter[] parameter = listStr.ToArray();
|
||
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||
Grid1.RecordCount = tb.Rows.Count;
|
||
var table = this.GetPagedDataTable(Grid1, tb);
|
||
Grid1.DataSource = table;
|
||
Grid1.DataBind();
|
||
}
|
||
#endregion
|
||
|
||
#region 分页
|
||
/// <summary>
|
||
/// 分页
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
|
||
{
|
||
Grid1.PageIndex = e.NewPageIndex;
|
||
BindGrid();
|
||
}
|
||
|
||
/// <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();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 排序
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
|
||
{
|
||
Grid1.SortDirection = e.SortDirection;
|
||
Grid1.SortField = e.SortField;
|
||
BindGrid();
|
||
}
|
||
#endregion
|
||
|
||
#region 确定
|
||
/// <summary>
|
||
/// 确定按钮
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void btnSure_Click(object sender, EventArgs e)
|
||
{
|
||
string ids = string.Empty;
|
||
bool res = false;
|
||
foreach (JObject mergedRow in Grid1.GetMergedData())
|
||
{
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
int i = mergedRow.Value<int>("index");
|
||
AspNet.CheckBox ckb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect"));
|
||
if (ckb.Checked)
|
||
{
|
||
res = true;
|
||
break;
|
||
}
|
||
}
|
||
if (SelectedList.Count == 0 && !res)
|
||
{
|
||
Alert.ShowInTop("没有选中任何项!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
foreach (JObject mergedRow in Grid1.GetMergedData())
|
||
{
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
int i = mergedRow.Value<int>("index");
|
||
AspNet.CheckBox ckb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect"));
|
||
if (ckb.Checked)
|
||
{
|
||
SelectedList.Add(this.Grid1.Rows[i].RowID);
|
||
}
|
||
else
|
||
{
|
||
if (SelectedList.Contains(this.Grid1.Rows[i].RowID))
|
||
{
|
||
SelectedList.Remove(this.Grid1.Rows[i].RowID);
|
||
}
|
||
NoSelectedList.Add(this.Grid1.Rows[i].RowID);
|
||
}
|
||
}
|
||
foreach (var item in SelectedList.Distinct())
|
||
{
|
||
ids += item + ",";
|
||
}
|
||
if (!string.IsNullOrEmpty(ids))
|
||
{
|
||
ids = ids.Substring(0, ids.LastIndexOf(","));
|
||
}
|
||
|
||
string scripts = String.Format("F.getActiveWindow().window.reloadGrid('{0}');", ids);
|
||
PageContext.RegisterStartupScript(scripts + ActiveWindow.GetHidePostBackReference());
|
||
|
||
//PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(ids)
|
||
// + ActiveWindow.GetHidePostBackReference());
|
||
}
|
||
#endregion
|
||
}
|
||
} |