using BLL; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.UI.WebControls; namespace FineUIPro.Web.JDGL.Check { public partial class PlanSet : PageBase { #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindGrid(); } } #endregion private void BindGrid() { DataTable table = BLL.WorkPackageService.GetAllTreeDataTable(this.CurrUser.LoginProjectId); Grid1.DataSource = table; Grid1.DataBind(); for (int i = 0; i < this.Grid1.Rows.Count; i++) { if (string.IsNullOrEmpty(this.Grid1.Rows[i].DataKeys[2].ToString())) { System.Web.UI.WebControls.CheckBox cbIsMileStone = (System.Web.UI.WebControls.CheckBox)(this.Grid1.Rows[i].FindControl("cbIsMileStone")); cbIsMileStone.Visible = false; foreach (GridColumn column in Grid1.Columns) { if (column.ColumnIndex != 0) { this.Grid1.Rows[i].CellCssClasses[column.ColumnIndex] = "f-grid-cell-uneditable"; } } } else { System.Web.UI.WebControls.CheckBox cbIsMileStone = (System.Web.UI.WebControls.CheckBox)(this.Grid1.Rows[i].FindControl("cbIsMileStone")); Model.WBS_WorkPackage workPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(this.Grid1.Rows[i].DataKeys[2].ToString()); if (workPackage != null && workPackage.IsMileStone == true) { cbIsMileStone.Checked = true; } } } } #region 保存 /// /// 保存按钮 /// /// /// protected void btnSave_Click(object sender, EventArgs e) { if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, BLL.Const.PlanSetMenuId, BLL.Const.BtnSave)) { Save(); BindGrid(); ShowNotify("保存成功!", MessageBoxIcon.Success); PageContext.RegisterStartupScript(ActiveWindow.GetHideReference()); } else { ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } private void Save() { Model.SGGLDB db = Funs.DB; var workPackages = from x in db.WBS_WorkPackage where x.ProjectId == this.CurrUser.LoginProjectId select x; var unitWorks = from x in db.WBS_UnitWork where x.ProjectId == this.CurrUser.LoginProjectId select x; string[] ids = this.hdId.Text.Split(','); if (ids.Length > 0) { foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); if (this.Grid1.Rows[i].DataKeys[2] != null) { Model.WBS_WorkPackage workPackage = workPackages.FirstOrDefault(x => x.WorkPackageId == this.Grid1.Rows[i].DataKeys[2].ToString()); if (workPackage != null) { string weights = values.Value("Weights"); string unit = values.Value("Unit"); string planProjectQuantity = values.Value("PlanProjectQuantity"); string realProjectQuantity = values.Value("RealProjectQuantity"); string planStartDate = values.Value("PlanStartDate"); string planEndDate = values.Value("PlanEndDate"); string realStartDate = values.Value("RealStartDate"); string realEndDate = values.Value("RealEndDate"); System.Web.UI.WebControls.CheckBox cbIsMileStone = (System.Web.UI.WebControls.CheckBox)(this.Grid1.Rows[i].FindControl("cbIsMileStone")); workPackage.Weights = Funs.GetNewDecimal(weights); workPackage.Unit = unit; workPackage.PlanProjectQuantity = Funs.GetNewDecimal(planProjectQuantity); workPackage.RealProjectQuantity = Funs.GetNewDecimal(realProjectQuantity); workPackage.PlanStartDate = Funs.GetNewDateTime(planStartDate); workPackage.PlanEndDate = Funs.GetNewDateTime(planEndDate); workPackage.RealStartDate = Funs.GetNewDateTime(realStartDate); workPackage.RealEndDate = Funs.GetNewDateTime(realEndDate); workPackage.IsMileStone = cbIsMileStone.Checked; BLL.WorkPackageService.UpdateWorkPackage(workPackage); if (workPackage.PlanStartDate != null || workPackage.PlanEndDate != null || workPackage.RealStartDate != null || workPackage.RealEndDate != null) { UpdateWorkPackages(db, workPackage, workPackage.PlanStartDate, workPackage.PlanEndDate, workPackage.RealStartDate, workPackage.RealEndDate); var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage.UnitWorkId); if (workPackage.PlanStartDate != null) { if (unitWork.PlanStartDate == null) { unitWork.PlanStartDate = workPackage.PlanStartDate; } else { if (unitWork.PlanStartDate > workPackage.PlanStartDate) { unitWork.PlanStartDate = workPackage.PlanStartDate; } } } if (workPackage.PlanEndDate != null) { if (unitWork.PlanEndDate == null) { unitWork.PlanEndDate = workPackage.PlanEndDate; } else { if (unitWork.PlanEndDate < workPackage.PlanEndDate) { unitWork.PlanEndDate = workPackage.PlanEndDate; } } } if (workPackage.RealStartDate != null) { if (unitWork.RealStartDate == null) { unitWork.RealStartDate = workPackage.RealStartDate; } else { if (unitWork.RealStartDate > workPackage.RealStartDate) { unitWork.RealStartDate = workPackage.RealStartDate; } } } if (workPackage.RealEndDate != null) { if (unitWork.RealEndDate == null) { unitWork.RealEndDate = workPackage.RealEndDate; } else { if (unitWork.RealEndDate < workPackage.RealEndDate) { unitWork.RealEndDate = workPackage.RealEndDate; } } } } db.SubmitChanges(); } } } } } #region 更新工作包、工作项 /// /// 更新月工作包、工作项 /// /// /// /// /// private void UpdateWorkPackages(Model.SGGLDB db, Model.WBS_WorkPackage workPackage, DateTime? planStartDate, DateTime? planEndDate, DateTime? realStartDate, DateTime? realEndDate) { if (workPackage != null) { Model.WBS_WorkPackage parentWorkPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(workPackage.SuperWorkPackageId); if (parentWorkPackage != null) { if (planStartDate != null) { if (parentWorkPackage.PlanStartDate == null) { parentWorkPackage.PlanStartDate = planStartDate; } else { if (parentWorkPackage.PlanStartDate > planStartDate) { parentWorkPackage.PlanStartDate = planStartDate; } } } if (planEndDate != null) { if (parentWorkPackage.PlanEndDate == null) { parentWorkPackage.PlanEndDate = planEndDate; } else { if (parentWorkPackage.PlanEndDate < planEndDate) { parentWorkPackage.PlanEndDate = planEndDate; } } } if (realStartDate != null) { if (parentWorkPackage.RealStartDate == null) { parentWorkPackage.RealStartDate = realStartDate; } else { if (parentWorkPackage.RealStartDate > realStartDate) { parentWorkPackage.RealStartDate = realStartDate; } } } if (realEndDate != null) { if (parentWorkPackage.RealEndDate == null) { parentWorkPackage.RealEndDate = realEndDate; } else { if (parentWorkPackage.RealEndDate < realEndDate) { parentWorkPackage.RealEndDate = realEndDate; } } } UpdateWorkPackages(db, parentWorkPackage, planStartDate, planEndDate, realStartDate, realEndDate); } } } /// /// 更新周工作包、工作项 /// /// /// /// /// private void UpdateWeekWbsSetDetail(string wbsSetId, DateTime months, DateTime startDate, DateTime endDate, decimal changeThisPlanValue, decimal changeThisRealCost, decimal changeThisPlanCost) { //Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSetId); //if (wbsSet != null) //{ // Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonthsWeek(wbsSetId, months, startDate); // if (parentDetail != null) // { // parentDetail.ThisPlanValue += changeThisPlanValue; // parentDetail.ThisRealCost += changeThisRealCost; // parentDetail.ThisPlanCost += changeThisPlanCost; // BLL.CostControlParentDetailService.UpdateCostControlParentDetail(parentDetail); // } // else // { // parentDetail = new Model.WBS_CostControlParentDetail(); // parentDetail.CostControlParentDetailId = SQLHelper.GetNewID(); // parentDetail.ParentId = wbsSetId; // parentDetail.Months = months; // parentDetail.StartDate = startDate; // parentDetail.EndDate = endDate; // parentDetail.ThisPlanValue = changeThisPlanValue; // parentDetail.ThisRealCost = changeThisRealCost; // parentDetail.ThisPlanCost = changeThisPlanCost; // BLL.CostControlParentDetailService.AddCostControlParentDetail(parentDetail); // } // if (wbsSet.SuperWbsSetId != null) //还存在上级节点,需要继续循环 // { // UpdateWeekWbsSetDetail(wbsSet.SuperWbsSetId, months, startDate, endDate, changeThisPlanValue, changeThisRealCost, changeThisPlanCost); // } //} } #endregion #region 更新装置 /// /// 更新月装置 /// /// /// /// /// private void UpdateInstallationDetail(Model.SGGLDB db, string installationId, DateTime months, decimal changeThisPlanValue, decimal changeThisRealCost, decimal changeThisPlanCost) { //Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(installationId); //if (installation != null) //{ // Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonths(installationId, months); // if (parentDetail != null) // { // parentDetail.ThisPlanValue += changeThisPlanValue; // parentDetail.ThisRealCost += changeThisRealCost; // parentDetail.ThisPlanCost += changeThisPlanCost; // //BLL.CostControlParentDetailService.UpdateCostControlParentDetail(parentDetail); // } // else // { // parentDetail = new Model.WBS_CostControlParentDetail(); // parentDetail.CostControlParentDetailId = SQLHelper.GetNewID(); // parentDetail.ParentId = installationId; // parentDetail.Months = months; // parentDetail.ThisPlanValue = changeThisPlanValue; // parentDetail.ThisRealCost = changeThisRealCost; // parentDetail.ThisPlanCost = changeThisPlanCost; // //BLL.CostControlParentDetailService.AddCostControlParentDetail(parentDetail); // db.WBS_CostControlParentDetail.InsertOnSubmit(parentDetail); // } // if (installation.SuperInstallationId != null) //还存在上级节点,需要继续循环 // { // UpdateInstallationDetail(db, installation.SuperInstallationId, months, changeThisPlanValue, changeThisRealCost, changeThisPlanCost); // } //} } /// /// 更新周装置 /// /// /// /// /// private void UpdateWeekInstallationDetail(string installationId, DateTime months, DateTime startDate, DateTime endDate, decimal changeThisPlanValue, decimal changeThisRealCost, decimal changeThisPlanCost) { //Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(installationId); //if (installation != null) //{ // Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonths(installationId, months); // if (parentDetail != null) // { // parentDetail.ThisPlanValue += changeThisPlanValue; // parentDetail.ThisRealCost += changeThisRealCost; // parentDetail.ThisPlanCost += changeThisPlanCost; // BLL.CostControlParentDetailService.UpdateCostControlParentDetail(parentDetail); // } // else // { // parentDetail = new Model.WBS_CostControlParentDetail(); // parentDetail.CostControlParentDetailId = SQLHelper.GetNewID(); // parentDetail.ParentId = installationId; // parentDetail.Months = months; // parentDetail.StartDate = startDate; // parentDetail.EndDate = endDate; // parentDetail.ThisPlanValue = changeThisPlanValue; // parentDetail.ThisRealCost = changeThisRealCost; // parentDetail.ThisPlanCost = changeThisPlanCost; // BLL.CostControlParentDetailService.AddCostControlParentDetail(parentDetail); // } // if (installation.SuperInstallationId != null) //还存在上级节点,需要继续循环 // { // UpdateWeekInstallationDetail(installation.SuperInstallationId, months, startDate, endDate, changeThisPlanValue, changeThisRealCost, changeThisPlanCost); // } //} } #endregion #endregion } }