using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using BLL; using Newtonsoft.Json.Linq; using AspNet = System.Web.UI.WebControls; namespace FineUIPro.Web.CQMS.WBS { public partial class WorkPackageSet2 : PageBase { /// /// 主键 /// public string WorkPackageId { get { return (string)ViewState["WorkPackageId"]; } set { ViewState["WorkPackageId"] = value; } } /// /// 主键 /// public string UnitWorkId { get { return (string)ViewState["UnitWorkId"]; } set { ViewState["UnitWorkId"] = value; } } /// /// 工程类型 /// public string ProjectType { get { return (string)ViewState["ProjectType"]; } set { ViewState["ProjectType"] = value; } } /// /// 明细集合 /// private List workPackages = new List(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { workPackages.Clear(); WorkPackageId = Request.Params["WorkPackageId"]; UnitWorkId = Request.Params["UnitWorkId"]; Model.WBS_WorkPackage workPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(WorkPackageId); if (workPackage.Costs != null) { this.hdTotalValue.Text = workPackage.Costs.ToString(); } else { this.hdTotalValue.Text = "0"; } ProjectType = workPackage.ProjectType; if (workPackage.SuperWorkPackageId == null) { this.Grid1.Columns[1].HeaderText = "第2级"; } else { this.Grid1.Columns[1].HeaderText = "第3级"; } UnitWorkId = workPackage.UnitWorkId; InitTreeMenu(); BindGrid(); } else { if (GetRequestEventArgument() == "UPDATE_SUMMARY") { GetTotalWeights(); } } } private void BindGrid() { Model.WBS_WorkPackage workPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(WorkPackageId); var workPackageProjects = BLL.WorkPackageProjectService.GetWorkPackageProjects2ByWorkPackageCode(workPackage.InitWorkPackageCode, this.CurrUser.LoginProjectId); var addWorkPackages = BLL.WorkPackageService.GetAllWorkPackagesBySuperWorkPackageId(WorkPackageId); foreach (var workPackageProject in workPackageProjects) { Model.WBS_WorkPackage newWorkPackageProject = new Model.WBS_WorkPackage(); newWorkPackageProject.WorkPackageCode = workPackageProject.WorkPackageCode; newWorkPackageProject.WorkPackageId = SQLHelper.GetNewID(typeof(Model.WBS_WorkPackage)); newWorkPackageProject.PackageContent = workPackageProject.PackageContent; newWorkPackageProject.Weights = null; workPackages.Add(newWorkPackageProject); } foreach (var addWorkPackage in addWorkPackages) { Model.WBS_WorkPackage newAddWorkPackage = new Model.WBS_WorkPackage(); newAddWorkPackage.WorkPackageCode = addWorkPackage.InitWorkPackageCode; newAddWorkPackage.WorkPackageId = addWorkPackage.WorkPackageId; Model.WBS_WorkPackageProject workPackageProject = BLL.WorkPackageProjectService.GetWorkPackageProjectByWorkPackageCode(addWorkPackage.InitWorkPackageCode, this.CurrUser.LoginProjectId); if (workPackageProject != null) { newAddWorkPackage.PackageContent = workPackageProject.PackageContent; if (addWorkPackage.PackageContent.Contains("-")) { newAddWorkPackage.SuperWorkPack = addWorkPackage.PackageContent.Substring(addWorkPackage.PackageContent.IndexOf("-") + 1); } } newAddWorkPackage.Weights = addWorkPackage.Weights; newAddWorkPackage.Costs = addWorkPackage.Costs; workPackages.Add(newAddWorkPackage); } workPackages = workPackages.OrderBy(x => x.WorkPackageCode).ToList(); this.Grid1.DataSource = workPackages; this.Grid1.DataBind(); for (int i = 0; i < this.Grid1.Rows.Count; i++) { Model.WBS_WorkPackage w = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(this.Grid1.Rows[i].RowID.ToString()); AspNet.CheckBox cb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); if (w != null && w.IsApprove == true) //已生成的分部分项内容 { cb.Checked = true; } else { var w2 = workPackages.FirstOrDefault(x => x.WorkPackageId == this.Grid1.Rows[i].RowID.ToString()); if (w2 != null && w2.IsCopy == true) { cb.Checked = true; } } } var equipment = workPackages.FirstOrDefault(x=>x.PackageContent=="机泵" || x.PackageContent=="静止设备"); if (equipment != null) { this.btnImport.Hidden = false; } else { this.btnImport.Hidden = true; } GetTotalWeights(); } #region 获取总权重 private void GetTotalWeights() { decimal totalWeights = 0; foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); AspNet.CheckBox cb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); if (cb.Checked) //总权重只累计选择项 { string weights = values.Value("Weights"); try { totalWeights += Convert.ToDecimal(weights); } catch (Exception) { } } } this.lbWeights.Text = totalWeights.ToString(); } #endregion #region 加载树 /// /// 加载树 /// 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 (ProjectType == "1") { TreeNode rootNode1 = new TreeNode(); rootNode1.Text = "建筑工程"; rootNode1.NodeID = "1"; rootNode1.CommandName = "ProjectType"; //rootNode1.EnableExpandEvent = true; rootNode1.EnableClickEvent = true; this.trWBS.Nodes.Add(rootNode1); this.GetNodes(rootNode1.Nodes, rootNode1.NodeID); } else { TreeNode rootNode2 = new TreeNode(); rootNode2.Text = "安装工程"; rootNode2.NodeID = "2"; rootNode2.CommandName = "ProjectType"; //rootNode2.EnableExpandEvent = true; rootNode2.EnableClickEvent = true; this.trWBS.Nodes.Add(rootNode2); this.GetNodes(rootNode2.Nodes, rootNode2.NodeID); } } #region 遍历节点方法 /// /// 遍历节点方法 /// /// 节点集合 /// 父节点 private void GetNodes(TreeNodeCollection nodes, string parentId) { List workPackages = new List(); if (parentId.Length == 1) //工程类型节点 { workPackages = (from x in Funs.DB.WBS_WorkPackageProject where x.SuperWorkPack == null && x.ProjectId == this.CurrUser.LoginProjectId && x.ProjectType == parentId orderby x.PackageCode ascending select x).ToList(); } else { workPackages = (from x in Funs.DB.WBS_WorkPackageProject where x.SuperWorkPack == parentId && x.ProjectId == this.CurrUser.LoginProjectId orderby x.PackageCode ascending select x).ToList(); } foreach (var q in workPackages) { TreeNode newNode = new TreeNode(); newNode.Text = q.PackageContent; newNode.NodeID = q.WorkPackageCode; newNode.CommandName = "WorkPackage"; newNode.EnableClickEvent = true; nodes.Add(newNode); } for (int i = 0; i < nodes.Count; i++) { GetNodes(nodes[i].Nodes, nodes[i].NodeID); } } #endregion #endregion #region 按级别显示事件 /// /// 第一级 /// /// /// protected void btnLevel1_Click(object sender, EventArgs e) { this.trWBS.CollapseAllNodes(); for (int i = 0; i < trWBS.Nodes.Count; i++) { trWBS.Nodes[i].Expanded = true; } } /// /// 第二级 /// /// /// protected void btnLevel2_Click(object sender, EventArgs e) { this.trWBS.CollapseAllNodes(); for (int i = 0; i < trWBS.Nodes.Count; i++) { trWBS.Nodes[i].Expanded = true; for (int j = 0; j < trWBS.Nodes[i].Nodes.Count; j++) { trWBS.Nodes[i].Nodes[j].Expanded = true; } } } /// /// 第三级 /// /// /// protected void btnLevel3_Click(object sender, EventArgs e) { this.trWBS.CollapseAllNodes(); for (int i = 0; i < trWBS.Nodes.Count; i++) { trWBS.Nodes[i].Expanded = true; for (int j = 0; j < trWBS.Nodes[i].Nodes.Count; j++) { trWBS.Nodes[i].Nodes[j].Expanded = true; for (int k = 0; k < trWBS.Nodes[i].Nodes[j].Nodes.Count; k++) { trWBS.Nodes[i].Nodes[j].Nodes[k].Expanded = true; } } } } #endregion #region Grid行点击事件 /// /// Grid行点击事件 /// /// /// protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { string id = this.Grid1.SelectedRow.RowID; string code = this.Grid1.SelectedRow.DataKeys[1].ToString(); //保存页面数据 foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); string name = values.Value("SuperWorkPack"); string weights = values.Value("Weights"); AspNet.CheckBox cb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); var w = workPackages.FirstOrDefault(x => x.WorkPackageId == this.Grid1.Rows[i].RowID); if (w != null) { w.SuperWorkPack = name; try { w.Weights = Convert.ToDecimal(weights); } catch (Exception) { w.Weights = null; } if (cb.Checked) { w.IsCopy = true; } } } workPackages = GetDetails(); if (e.CommandName == "add")//增加 { Model.WBS_WorkPackageProject workPackageProject = BLL.WorkPackageProjectService.GetWorkPackageProjectByWorkPackageCode(code, this.CurrUser.LoginProjectId); Model.WBS_WorkPackage newWorkPackage = new Model.WBS_WorkPackage(); newWorkPackage.WorkPackageCode = workPackageProject.WorkPackageCode; newWorkPackage.WorkPackageId = SQLHelper.GetNewID(typeof(Model.WBS_WorkPackage)); newWorkPackage.PackageContent = workPackageProject.PackageContent; workPackages.Add(newWorkPackage); workPackages = workPackages.OrderBy(x => x.WorkPackageCode).ToList(); this.Grid1.DataSource = workPackages; this.Grid1.DataBind(); } if (e.CommandName == "del")//删除 { var w = workPackages.FirstOrDefault(x => x.WorkPackageId == id); if (w != null) { workPackages.Remove(w); Model.WBS_WorkPackage oldw = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(id); if (oldw != null) { var child1s = BLL.WorkPackageService.GetAllWorkPackagesBySuperWorkPackageId(id); BLL.ControlItemAndCycleService.DeleteAllControlItemAndCycle(id); BLL.WorkPackageService.DeleteWorkPackage(id); if (child1s.Count > 0) { foreach (var child1 in child1s) { BLL.ControlItemAndCycleService.DeleteAllControlItemAndCycle(child1.WorkPackageId); BLL.WorkPackageService.DeleteWorkPackage(child1.WorkPackageId); } } } } workPackages = workPackages.OrderBy(x => x.WorkPackageCode).ToList(); this.Grid1.DataSource = workPackages; this.Grid1.DataBind(); } for (int i = 0; i < this.Grid1.Rows.Count; i++) { Model.WBS_WorkPackage w = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(this.Grid1.Rows[i].RowID.ToString()); AspNet.CheckBox cb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); if (w != null && w.IsApprove == true) //已生成的分部分项内容 { cb.Checked = true; } else { var w2 = workPackages.FirstOrDefault(x => x.WorkPackageId == this.Grid1.Rows[i].RowID.ToString()); if (w2 != null && w2.IsCopy == true) { cb.Checked = true; } } } GetTotalWeights(); } #endregion private List GetDetails() { workPackages.Clear(); foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); string txtPackageContent = values.Value("PackageContent"); string txtName = values.Value("SuperWorkPack"); string txtWeights = values.Value("Weights"); string txtCosts = values.Value("Costs"); AspNet.CheckBox ckbWorkPackageCode = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); Model.WBS_WorkPackage newAddWorkPackage = new Model.WBS_WorkPackage(); newAddWorkPackage.WorkPackageCode = Grid1.Rows[i].DataKeys[1].ToString(); newAddWorkPackage.WorkPackageId = Grid1.Rows[i].DataKeys[0].ToString(); newAddWorkPackage.SuperWorkPack = txtName; newAddWorkPackage.PackageContent = txtPackageContent; if (!string.IsNullOrEmpty(txtWeights)) { newAddWorkPackage.Weights = Convert.ToDecimal(txtWeights); } if (!string.IsNullOrEmpty(txtCosts)) { newAddWorkPackage.Costs = Convert.ToDecimal(txtCosts); } if (ckbWorkPackageCode.Checked) { newAddWorkPackage.IsCopy = true; } workPackages.Add(newAddWorkPackage); } return workPackages; } #region 选择事件 /// /// 选择 /// /// /// protected void cbSelect_CheckedChanged(object sender, EventArgs e) { AspNet.CheckBox cb = sender as AspNet.CheckBox; if (cb.Checked) { } else { this.hdId.Text = this.Grid1.SelectedRowID; //PageContext.RegisterStartupScript(String.Format("ShowDel();")); } GetTotalWeights(); } #endregion #region 删除事件 /// /// 删除 /// /// /// protected void btnDel_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(this.hdId.Text)) { string id = this.hdId.Text; var w = workPackages.FirstOrDefault(x => x.WorkPackageId == id); if (w != null) { workPackages.Remove(w); Model.WBS_WorkPackage oldw = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(id); if (oldw != null) { var child1s = BLL.WorkPackageService.GetAllWorkPackagesBySuperWorkPackageId(id); BLL.ControlItemAndCycleService.DeleteAllControlItemAndCycle(id); BLL.WorkPackageService.DeleteWorkPackage(id); if (child1s.Count > 0) { foreach (var child1 in child1s) { var child2s = BLL.WorkPackageService.GetAllWorkPackagesBySuperWorkPackageId(child1.WorkPackageId); BLL.ControlItemAndCycleService.DeleteAllControlItemAndCycle(child1.WorkPackageId); BLL.WorkPackageService.DeleteWorkPackage(child1.WorkPackageId); if (child2s.Count > 0) { foreach (var child2 in child2s) { BLL.ControlItemAndCycleService.DeleteAllControlItemAndCycle(child2.WorkPackageId); BLL.WorkPackageService.DeleteWorkPackage(child2.WorkPackageId); } } } } } } workPackages = workPackages.OrderBy(x => x.WorkPackageCode).ToList(); this.Grid1.DataSource = workPackages; this.Grid1.DataBind(); for (int i = 0; i < this.Grid1.Rows.Count; i++) { Model.WBS_WorkPackage w1 = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(this.Grid1.Rows[i].RowID.ToString()); AspNet.CheckBox cb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); if (w1 != null && w.IsApprove == true) //已生成的分部分项内容 { cb.Checked = true; } else { var w2 = workPackages.FirstOrDefault(x => x.WorkPackageId == this.Grid1.Rows[i].RowID.ToString()); if (w2 != null && w2.IsCopy == true) { cb.Checked = true; } } } GetTotalWeights(); } } #endregion #region 重新选择未删除项事件 /// /// 重新选择未删除项 /// /// /// protected void btnReCheck_Click(object sender, EventArgs e) { this.Grid1.DataSource = workPackages; this.Grid1.DataBind(); for (int i = 0; i < this.Grid1.Rows.Count; i++) { Model.WBS_WorkPackage w = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(this.Grid1.Rows[i].RowID.ToString()); AspNet.CheckBox cb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); if (w != null && w.IsApprove == true) //已生成的分部分项内容 { cb.Checked = true; } else { var w2 = workPackages.FirstOrDefault(x => x.WorkPackageId == this.Grid1.Rows[i].RowID.ToString()); if (w2 != null && w2.IsCopy == true) { cb.Checked = true; } } } GetTotalWeights(); } #endregion #region 保存事件 /// /// 临时保存 /// /// /// protected void btnSet_Click(object sender, EventArgs e) { SaveData(); PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(WorkPackageId) + ActiveWindow.GetHidePostBackReference()); //ShowNotify("保存成功!", MessageBoxIcon.Success); } private void SaveData() { string workPackageCode = string.Empty; int num = 1; string code = string.Empty; string name = string.Empty; Model.WBS_WorkPackage parentWorkPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(WorkPackageId); foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); string workPackageId = this.Grid1.Rows[i].DataKeys[0].ToString(); Model.WBS_WorkPackage oldWorkPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(workPackageId); AspNet.CheckBox ckbWorkPackageCode = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); string workPackageCode2 = this.Grid1.Rows[i].DataKeys[1].ToString(); string txtName = values.Value("SuperWorkPack"); string txtWeights = values.Value("Weights"); string txtCosts = values.Value("Costs"); name = string.Empty; if (!string.IsNullOrEmpty(txtName.Trim())) { name = "-" + txtName.Trim(); } if (!string.IsNullOrEmpty(name) || !string.IsNullOrEmpty(txtWeights)) { Model.WBS_WorkPackageProject workPackageProject = BLL.WorkPackageProjectService.GetWorkPackageProjectByWorkPackageCode(workPackageCode2, this.CurrUser.LoginProjectId); if (oldWorkPackage == null) //新增内容 { Model.WBS_WorkPackage newWorkPackage = new Model.WBS_WorkPackage(); if (workPackageCode != workPackageProject.WorkPackageCode) //循环至新的分部 { workPackageCode = workPackageProject.WorkPackageCode; var oldWorkPackages = BLL.WorkPackageService.GetWorkPackagesByInitWorkPackageCodeAndUnitWorkId(workPackageCode, UnitWorkId); if (oldWorkPackages.Count > 0) //该工作包已存在内容 { var old = oldWorkPackages.First(); string oldStr = old.WorkPackageCode.Substring(old.WorkPackageCode.Length - 2); num = Convert.ToInt32(oldStr) + 1; if (num < 10) { code = "0" + num.ToString(); } else { code = num.ToString(); } } else { num = 1; code = "01"; } } else { if (num < 10) { code = "0" + num.ToString(); } else { code = num.ToString(); } } newWorkPackage.WorkPackageId = SQLHelper.GetNewID(typeof(Model.WBS_WorkPackage)); newWorkPackage.WorkPackageCode = parentWorkPackage.WorkPackageCode + workPackageCode.Substring(workPackageCode.IndexOf(parentWorkPackage.InitWorkPackageCode) + parentWorkPackage.InitWorkPackageCode.Length).Replace("00", "0000") + code; newWorkPackage.ProjectId = this.CurrUser.LoginProjectId; newWorkPackage.UnitWorkId = UnitWorkId; newWorkPackage.PackageContent = workPackageProject.PackageContent + name; newWorkPackage.SuperWorkPack = workPackageProject.SuperWorkPack; newWorkPackage.SuperWorkPackageId = WorkPackageId; newWorkPackage.IsChild = workPackageProject.IsChild; newWorkPackage.PackageCode = code; newWorkPackage.ProjectType = workPackageProject.ProjectType; newWorkPackage.InitWorkPackageCode = workPackageProject.WorkPackageCode; try { newWorkPackage.Weights = Convert.ToDecimal(txtWeights.Trim()); } catch (Exception) { newWorkPackage.Weights = null; } try { newWorkPackage.Costs = Convert.ToDecimal(txtCosts.Trim()); } catch (Exception) { newWorkPackage.Costs = null; } BLL.WorkPackageService.AddWorkPackage(newWorkPackage); num++; } else { oldWorkPackage.PackageContent = workPackageProject.PackageContent + name; try { oldWorkPackage.Weights = Convert.ToDecimal(txtWeights.Trim()); } catch (Exception) { oldWorkPackage.Weights = null; } try { oldWorkPackage.Costs = Convert.ToDecimal(txtCosts.Trim()); } catch (Exception) { oldWorkPackage.Costs = null; } BLL.WorkPackageService.UpdateWorkPackage(oldWorkPackage); } } //else //未选中项 //{ // if (oldWorkPackage != null) //已存在内容 // { // oldWorkPackage.IsApprove = null; // BLL.WorkPackageService.UpdateWorkPackage(oldWorkPackage); // } //} } } /// /// 保存 /// /// /// protected void btnSave_Click(object sender, EventArgs e) { decimal weights = 0; foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); AspNet.CheckBox cb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); if (cb.Checked) //总权重只累计选择项 { string weights1 = values.Value("Weights"); try { weights += Convert.ToDecimal(weights1); } catch (Exception) { } } } if (weights != 100) { Alert.ShowInTop("权重值不是100,请调整后再保存!", MessageBoxIcon.Warning); return; } string workPackageCode = string.Empty; int num = 1; string code = string.Empty; string name = string.Empty; Model.WBS_WorkPackage parentWorkPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(WorkPackageId); foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); string workPackageId = this.Grid1.Rows[i].DataKeys[0].ToString(); Model.WBS_WorkPackage oldWorkPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(workPackageId); AspNet.CheckBox ckbWorkPackageCode = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); string workPackageCode2 = this.Grid1.Rows[i].DataKeys[1].ToString(); string txtName = values.Value("SuperWorkPack"); string txtWeights = values.Value("Weights"); string txtCosts = values.Value("Costs"); name = string.Empty; if (!string.IsNullOrEmpty(txtName.Trim())) { name = "-" + txtName.Trim(); } Model.WBS_WorkPackageProject workPackageProject = BLL.WorkPackageProjectService.GetWorkPackageProjectByWorkPackageCode(workPackageCode2, this.CurrUser.LoginProjectId); if (ckbWorkPackageCode.Checked) { if (oldWorkPackage == null) //新增内容 { Model.WBS_WorkPackage newWorkPackage = new Model.WBS_WorkPackage(); if (workPackageCode != workPackageProject.WorkPackageCode) //循环至新的分部 { workPackageCode = workPackageProject.WorkPackageCode; var oldWorkPackages = BLL.WorkPackageService.GetWorkPackagesByInitWorkPackageCodeAndUnitWorkId(workPackageCode, UnitWorkId); if (oldWorkPackages.Count > 0) //该工作包已存在内容 { var old = oldWorkPackages.First(); string oldStr = old.WorkPackageCode.Substring(old.WorkPackageCode.Length - 2); num = Convert.ToInt32(oldStr) + 1; if (num < 10) { code = "0" + num.ToString(); } else { code = num.ToString(); } } else { num = 1; code = "01"; } } else { if (num < 10) { code = "0" + num.ToString(); } else { code = num.ToString(); } } newWorkPackage.WorkPackageId = SQLHelper.GetNewID(typeof(Model.WBS_WorkPackage)); newWorkPackage.WorkPackageCode = parentWorkPackage.WorkPackageCode + workPackageCode.Substring(workPackageCode.IndexOf(parentWorkPackage.InitWorkPackageCode) + parentWorkPackage.InitWorkPackageCode.Length).Replace("00", "0000") + code; newWorkPackage.ProjectId = this.CurrUser.LoginProjectId; newWorkPackage.UnitWorkId = UnitWorkId; newWorkPackage.PackageContent = workPackageProject.PackageContent + name; newWorkPackage.SuperWorkPack = workPackageProject.SuperWorkPack; newWorkPackage.SuperWorkPackageId = WorkPackageId; newWorkPackage.IsChild = workPackageProject.IsChild; newWorkPackage.PackageCode = code; newWorkPackage.IsApprove = true; newWorkPackage.ProjectType = workPackageProject.ProjectType; newWorkPackage.InitWorkPackageCode = workPackageProject.WorkPackageCode; try { newWorkPackage.Weights = Convert.ToDecimal(txtWeights.Trim()); } catch (Exception) { newWorkPackage.Weights = null; } try { newWorkPackage.Costs = Convert.ToDecimal(txtCosts.Trim()); } catch (Exception) { newWorkPackage.Costs = null; } BLL.WorkPackageService.AddWorkPackage(newWorkPackage); num++; } else { oldWorkPackage.PackageContent = workPackageProject.PackageContent + name; try { oldWorkPackage.Weights = Convert.ToDecimal(txtWeights.Trim()); } catch (Exception) { oldWorkPackage.Weights = null; } try { oldWorkPackage.Costs = Convert.ToDecimal(txtCosts.Trim()); } catch (Exception) { oldWorkPackage.Costs = null; } oldWorkPackage.IsApprove = true; BLL.WorkPackageService.UpdateWorkPackage(oldWorkPackage); } } else //未选中项 { if (oldWorkPackage != null) //已存在内容 { oldWorkPackage.IsApprove = null; BLL.WorkPackageService.UpdateWorkPackage(oldWorkPackage); } else { if (!string.IsNullOrEmpty(name) || !string.IsNullOrEmpty(txtWeights)) { Model.WBS_WorkPackage newWorkPackage = new Model.WBS_WorkPackage(); if (workPackageCode != workPackageProject.WorkPackageCode) //循环至新的分部 { workPackageCode = workPackageProject.WorkPackageCode; var oldWorkPackages = BLL.WorkPackageService.GetWorkPackagesByInitWorkPackageCodeAndUnitWorkId(workPackageCode, UnitWorkId); if (oldWorkPackages.Count > 0) //该工作包已存在内容 { var old = oldWorkPackages.First(); string oldStr = old.WorkPackageCode.Substring(old.WorkPackageCode.Length - 2); num = Convert.ToInt32(oldStr) + 1; if (num < 10) { code = "0" + num.ToString(); } else { code = num.ToString(); } } else { num = 1; code = "01"; } } else { if (num < 10) { code = "0" + num.ToString(); } else { code = num.ToString(); } } newWorkPackage.WorkPackageId = SQLHelper.GetNewID(typeof(Model.WBS_WorkPackage)); newWorkPackage.WorkPackageCode = parentWorkPackage.WorkPackageCode + workPackageCode.Substring(workPackageCode.IndexOf(parentWorkPackage.InitWorkPackageCode) + parentWorkPackage.InitWorkPackageCode.Length).Replace("00", "0000") + code; newWorkPackage.ProjectId = this.CurrUser.LoginProjectId; newWorkPackage.UnitWorkId = UnitWorkId; newWorkPackage.PackageContent = workPackageProject.PackageContent + name; newWorkPackage.SuperWorkPack = workPackageProject.SuperWorkPack; newWorkPackage.SuperWorkPackageId = WorkPackageId; newWorkPackage.IsChild = workPackageProject.IsChild; newWorkPackage.PackageCode = code; newWorkPackage.ProjectType = workPackageProject.ProjectType; newWorkPackage.InitWorkPackageCode = workPackageProject.WorkPackageCode; try { newWorkPackage.Weights = Convert.ToDecimal(txtWeights.Trim()); } catch (Exception) { newWorkPackage.Weights = null; } try { newWorkPackage.Costs = Convert.ToDecimal(txtCosts.Trim()); } catch (Exception) { newWorkPackage.Costs = null; } BLL.WorkPackageService.AddWorkPackage(newWorkPackage); num++; } } } } PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(WorkPackageId) + ActiveWindow.GetHidePostBackReference()); //ShowNotify("保存成功!", MessageBoxIcon.Success); } #endregion protected void cbAll_CheckedChanged(object sender, CheckedEventArgs e) { workPackages = GetDetails(); //保存页面数据 foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); string name = values.Value("SuperWorkPack"); string weights = values.Value("Weights"); AspNet.CheckBox cb = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); var w = workPackages.FirstOrDefault(x => x.WorkPackageId == this.Grid1.Rows[i].RowID); if (w != null) { w.SuperWorkPack = name; try { w.Weights = Convert.ToDecimal(weights); } catch (Exception) { w.Weights = null; } if (cb.Checked) { w.IsCopy = true; } } } workPackages = workPackages.OrderBy(x => x.WorkPackageCode).ToList(); this.Grid1.DataSource = workPackages; this.Grid1.DataBind(); for (int i = 0; i < this.Grid1.Rows.Count; i++) { AspNet.CheckBox ckbWorkPackageCode = (AspNet.CheckBox)(this.Grid1.Rows[i].FindControl("cbSelect")); ckbWorkPackageCode.Checked = e.Checked; } GetTotalWeights(); } protected void btnImport_Click(object sender, EventArgs e) { SaveData(); PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WorkPackageSet2In.aspx?WorkPackageId={0}", WorkPackageId, "导入 - "))); } protected void Window1_Close(object sender, WindowCloseEventArgs e) { BindGrid(); } } }