CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.cs

333 lines
14 KiB
C#

using BLL;
using Model;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.TestRun.BeforeTestRun
{
public partial class SubSysWorkPackage : PageBase
{
/// <summary>
/// 点击树状主键
/// </summary>
public string TreePreRunId { get { return (string)ViewState["TreePreRunId"]; } set { ViewState["TreePreRunId"] = value; } }
/// <summary>
/// 子系统主键
/// </summary>
public string SystemId { get { return (string)ViewState["SystemId"]; } set { ViewState["SystemId"] = value; } }
/// <summary>
/// 子系统主键
/// </summary>
public string SsubSystemId { get { return (string)ViewState["SsubSystemId"]; } set { ViewState["SsubSystemId"] = value; } }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.InitTreeMenu();//加载树
}
}
#region
/// <summary>
/// 加载树
/// </summary>
private void InitTreeMenu()
{
this.tvControlItem.Nodes.Clear();
TreeNode rootNode = new TreeNode();
rootNode.Text = "系统划分";
rootNode.NodeID = "0";
rootNode.Expanded = true;
rootNode.ToolTip = "";
rootNode.EnableClickEvent = true;
this.tvControlItem.Nodes.Add(rootNode);
var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList();
var onePreRunLs = allPreRunLs.Where(p => p.PreRunLevel == 1).OrderBy(x => x.Sort);
foreach (var item in onePreRunLs)
{
TreeNode rootUnitNode = new TreeNode();//定义根节点
rootUnitNode.NodeID = item.PreRunId;
rootUnitNode.Text = item.PreRunName;
rootUnitNode.ToolTip = item.PreRunName;
rootUnitNode.CommandName = "";
rootUnitNode.EnableClickEvent = true;
rootUnitNode.EnableExpandEvent = true;
rootNode.Nodes.Add(rootUnitNode);
rootUnitNode.Expanded = true;
var otherPreRunls = allPreRunLs.Where(p => p.PreRunLevel != 1).ToList();
this.BindNodes(rootUnitNode, otherPreRunls, item.PreRunId);
}
}
/// <summary>
/// 绑定树节点
/// </summary>
private void BindNodes(TreeNode node, List<PreRun_SysDevice> list, string parentId)
{
var itemList = list.Where(p => p.ParentId == parentId).OrderBy(x => x.Sort).ToList();
if (itemList.Count > 0)
{
foreach (var item in itemList)
{
TreeNode newNode = new TreeNode();
newNode.Text = item.PreRunName;
newNode.NodeID = item.PreRunId;
newNode.ToolTip = item.PreRunName;
newNode.CommandName = "";
newNode.EnableClickEvent = true;
node.Nodes.Add(newNode);
BindNodes(newNode, list, item.PreRunId);
}
}
}
/// <summary>
/// 数加载
/// </summary>
protected void tvControlItem_NodeExpand(object sender, TreeNodeEventArgs e)
{
if (e.Node.Nodes != null)
{
e.Node.Nodes.Clear();
}
var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList();
this.BindNodes(e.Node, allPreRunLs, e.NodeID);
}
/// <summary>
/// 点击TreeView
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
{
this.TreePreRunId = tvControlItem.SelectedNodeID;
this.PageBase();
}
/// <summary>
/// 数据显示
/// </summary>
public void PageBase()
{
var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId);
if (model != null)
{
var ids = new List<string>();
if (!string.IsNullOrWhiteSpace(model.InstallationId)) ids.Add(model.InstallationId);
if (!string.IsNullOrWhiteSpace(model.ProcessesId)) ids.Add(model.ProcessesId);
if (!string.IsNullOrWhiteSpace(model.SystemId)) ids.Add(model.SystemId);
if (!string.IsNullOrWhiteSpace(model.SubsystemId)) ids.Add(model.SubsystemId);
var list = Funs.DB.PreRun_SysDevice.Where(p => ids.Contains(p.PreRunId)).ToList();
if (list.Count(p => p.PreRunLevel == 1) > 0)
{
zz.Hidden = false;
lblzzbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 1).PreRunCode;
lblzzmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 1).PreRunName;
}
if (list.Count(p => p.PreRunLevel == 2) > 0)
{
gx.Hidden = false;
lblgxmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunCode;
lblgxbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunName;
}
if (list.Count(p => p.PreRunLevel == 3) > 0)
{
sxt.Hidden = false;
lblsxtmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 3).PreRunName;
lblsxtbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 3).PreRunCode;
}
if (list.Count(p => p.PreRunLevel == 4) > 0)
{
sszxt.Hidden = false;
gzb.Hidden = false;
BridWorkPackGrid();
lblszxtmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 4).PreRunName;
lblszxtbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 4).PreRunCode;
this.SsubSystemId = list.FirstOrDefault(p => p.PreRunLevel == 4).PreRunId;
this.SystemId = list.FirstOrDefault(p => p.PreRunLevel == 4).ParentId;
var workPackages = Funs.DB.PreRun_SubSysWorkPackage.Where(p => p.SubSystemId == this.SsubSystemId).OrderBy(x => x.Sort).ToList();
if (workPackages.Count > 0)
{
var workIds = workPackages.ConvertAll(p => p.WorkPackId);
BridSelectWorkPack(workIds);
drpWorkPack.Values = workIds.ToArray();
}
else
{
Grid1.DataSource = null;
Grid1.DataBind();
drpWorkPack.Values = null;
}
}
}
}
#endregion
/// <summary>
/// 保存
/// </summary>
protected void btnSave_Click(object sender, EventArgs e)
{
var prerunModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId);
if (prerunModel != null)
{
if (prerunModel.PreRunLevel == 4)
{
var deleteLs = Funs.DB.PreRun_SubSysWorkPackage.Where(p => p.SubSystemId == prerunModel.PreRunId);
Funs.DB.PreRun_SubSysWorkPackage.DeleteAllOnSubmit(deleteLs);
Funs.DB.SubmitChanges();
JArray mergedData = Grid1.GetMergedData();
int[] selections = Grid1.SelectedRowIndexArray;
foreach (JObject mergedRow in mergedData)
{
string status = mergedRow.Value<string>("status");
JObject values = mergedRow.Value<JObject>("values");
int i = mergedRow.Value<int>("index");
var workId = Grid1.DataKeys[i][0].ToString();
var model = new PreRun_SubSysWorkPackage();
model.SubSysId = Guid.NewGuid().ToString();
model.SystemId = prerunModel.ParentId;
model.SubSystemId = prerunModel.PreRunId;
model.WorkPackId = workId;
model.WorkPackCode = !string.IsNullOrWhiteSpace(values.Value<string>("WorkPackCode")) ? values.Value<string>("WorkPackCode") : "WP";
model.Remark = values.Value<string>("Remark");
model.AddTime = DateTime.Now;
model.AddUser = this.CurrUser.UserId;
model.Sort = Funs.DB.PreRun_SubSysWorkPackage.Count();
Funs.DB.PreRun_SubSysWorkPackage.InsertOnSubmit(model);
}
Funs.DB.SubmitChanges();
ShowNotify("保存成功!", MessageBoxIcon.Success);
}
}
}
/// <summary>
/// 绑定工作包
/// </summary>
public void BridWorkPackGrid()
{
GridWorkPack.DataSource = Funs.DB.PreRun_WorkPackage.OrderBy(p => p.Sort).ToList();
GridWorkPack.DataBind();
}
/// <summary>
/// 绑定选择的工作包
/// </summary>
public void BridSelectWorkPack(List<string> workPackIds)
{
if (!string.IsNullOrWhiteSpace(this.SsubSystemId))
{
var result = new List<WorkData>();
var data = from a in Funs.DB.PreRun_WorkPackage.Where(p => workPackIds.Contains(p.WorkPackId))
join b in Funs.DB.PreRun_SubSysWorkPackage.Where(p => p.SubSystemId == this.SsubSystemId) on a.WorkPackId equals b.WorkPackId into bb
from t in bb.DefaultIfEmpty()
select new WorkData()
{
WorkPackId = a.WorkPackId,
WorkPackCode = t.WorkPackCode,
WorkPackName = a.WorkPackName,
SystemId = t.SystemId,
Sort = a.Sort,
Remark = t.Remark
};
if (data.Count() > 0)
{
int i = 1;
foreach (var item in data.OrderBy(p => p.Sort))
{
var model = new WorkData();
model.WorkPackId = item.WorkPackId;
model.WorkPackName = item.WorkPackName;
model.SystemId = item.SystemId;
if (string.IsNullOrWhiteSpace(item.WorkPackCode))
{
var num = Funs.DB.PreRun_SubSysWorkPackage.Count(p => p.SystemId == this.SystemId) + i;
model.WorkPackCode = $"WP{string.Format("{0:d3}", num)}";
i++;
}
else
{
model.WorkPackCode = item.WorkPackCode;
}
model.Sort = item.Sort;
model.Remark = item.Remark;
result.Add(model);
}
result = result.OrderBy(p => p.Sort).ToList();
Grid1.DataSource = result;
Grid1.DataBind();
}
else
{
Grid1.DataSource = null;
Grid1.DataBind();
}
}
}
/// <summary>
/// 工作包选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void drpWorkPack_TextChanged(object sender, EventArgs e)
{
if (drpWorkPack.Values.Length > 0)
{
BridSelectWorkPack(drpWorkPack.Values.ToList());
}
else
{
Grid1.DataSource = null;
Grid1.DataBind();
}
}
/// <summary>
/// 行点击事件
/// </summary>
protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
string rowID = e.RowID;
var model = Funs.DB.PreRun_SubSysWorkPackage.FirstOrDefault(p => p.WorkPackId == rowID);
if (model != null)
{
Funs.DB.PreRun_SubSysWorkPackage.DeleteOnSubmit(model);
Funs.DB.SubmitChanges();
}
var workPackages = Funs.DB.PreRun_SubSysWorkPackage.Where(p => p.SubSystemId == this.SsubSystemId).ToList();
var workIds = workPackages.ConvertAll(p => p.WorkPackId);
BridSelectWorkPack(workIds);
drpWorkPack.Values = workIds.ToArray();
ShowNotify("删除成功!");
}
}
public class WorkData
{
public string SystemId { get; set; }
public string WorkPackId { get; set; }
public string WorkPackName { get; set; }
public int? Sort { get; set; }
public string Remark { get; set; }
public string WorkPackCode { get; set; }
}
}
}