diff --git a/DataBase/版本日志/SGGLDB_V2023-09-05.sql b/DataBase/版本日志/SGGLDB_V2023-09-05.sql new file mode 100644 index 00000000..875cccf9 --- /dev/null +++ b/DataBase/版本日志/SGGLDB_V2023-09-05.sql @@ -0,0 +1,51 @@ +update WBS_ControlItemProject set Weights=b.Weights from WBS_ControlItemProject a, WBS_ControlItemInit b + where a.ControlItemCode=b.ControlItemCode + GO + + update WBS_ControlItemAndCycle set Weights=b.Weights from WBS_ControlItemAndCycle a, WBS_ControlItemInit b + where a.InitControlItemCode=b.ControlItemCode + GO + + +ALTER VIEW [dbo].[View_WBS] +AS +select '1' as Id,'0' as SupId ,'JZ' as Code, '' as Name,'ProjectType' as WBSType,null as PlanStartDate,null as PlanEndDate,null as RealEndDate,null as WBSCode, +ProjectId from dbo.WBS_UnitWork +Union +select '2' as Id,'0' as SupId ,'AZ' as Code, 'װ' as Name,'ProjectType' as WBSType,null as PlanStartDate,null as PlanEndDate,null as RealEndDate,null as WBSCode, +ProjectId from dbo.WBS_UnitWork +Union +select UnitWorkId as Id,ProjectType as SupId ,UnitWorkCode as Code, isnull(WBSCode,'')+'-'+UnitWorkName as Name,'UnitWork' as WBSType,PlanStartDate, PlanEndDate,RealEndDate,WBSCode, +ProjectId from dbo.WBS_UnitWork +Union all +select WorkPackageId as id,UnitWorkId as SupId,WorkPackageCode as Code,isnull(WBSCode,'')+'-'+PackageContent as Name,'WorkPackage' as WBSType,PlanStartDate, PlanEndDate,RealEndDate,WBSCode, +ProjectId from dbo.WBS_WorkPackage w where IsApprove=1 and SuperWorkPackageId is null +Union all +select WorkPackageId as id,SuperWorkPackageId as SupId,WorkPackageCode as Code, isnull(WBSCode,'')+'-'+PackageContent as Name,'WorkPackage' as WBSType,PlanStartDate, PlanEndDate,RealEndDate,WBSCode, +ProjectId from dbo.WBS_WorkPackage w where IsApprove=1 and SuperWorkPackageId is not null + + + + + + + + +GO + + +INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +VALUES('8317C0F7-3A69-48AB-87E5-03E96C543B1C','','CQMS/Check/SpotDataCheck.aspx',20,'B8500D87-407E-458C-9915-FD54F0E81F36','Menu_CQMS',0,1,1) +GO +INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +VALUES('9EAC9A0F-0E2E-4650-8318-3C9BC5EFC35D','8317C0F7-3A69-48AB-87E5-03E96C543B1C','',1) +INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +VALUES('BDAFA160-FC9D-4B2C-A887-178453E945FE','8317C0F7-3A69-48AB-87E5-03E96C543B1C','ύ',2) +GO + +delete from Sys_ButtonToMenu where MenuId='0B17549C-2749-4255-BFF4-574902E878FA' +delete from Sys_Menu where MenuId='0B17549C-2749-4255-BFF4-574902E878FA' +GO + +alter table WBS_ControlItemAndCycle add PlanCost decimal(9,2) null +GO \ No newline at end of file diff --git a/DataBase/菜单初始化脚本/1-2质量管理(Menu_CQMS).sql b/DataBase/菜单初始化脚本/1-2质量管理(Menu_CQMS).sql index 7d1369b0..b65a32a6 100644 --- a/DataBase/菜单初始化脚本/1-2质量管理(Menu_CQMS).sql +++ b/DataBase/菜单初始化脚本/1-2质量管理(Menu_CQMS).sql @@ -327,28 +327,28 @@ INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) VALUES('5B1DCDDD-344E-4BD3-8660-E816D5EF9E1E','CC43E208-335D-4AE3-A1CE-B2D8510AE854','提交',5) GO ---INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) ---VALUES('8317C0F7-3A69-48AB-87E5-03E96C543B1C','资料验收','CQMS/Check/SpotDataCheck.aspx',20,'B8500D87-407E-458C-9915-FD54F0E81F36','Menu_CQMS',0,1,1) ---GO ---INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) ---VALUES('9EAC9A0F-0E2E-4650-8318-3C9BC5EFC35D','8317C0F7-3A69-48AB-87E5-03E96C543B1C','保存',1) ---INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) ---VALUES('BDAFA160-FC9D-4B2C-A887-178453E945FE','8317C0F7-3A69-48AB-87E5-03E96C543B1C','提交',2) ---GO - - INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) -VALUES('0B17549C-2749-4255-BFF4-574902E878FA','资料验收','CQMS/Check/MaterialAcceptance.aspx',20,'B8500D87-407E-458C-9915-FD54F0E81F36','Menu_CQMS',0,1,1) +VALUES('8317C0F7-3A69-48AB-87E5-03E96C543B1C','资料验收','CQMS/Check/SpotDataCheck.aspx',20,'B8500D87-407E-458C-9915-FD54F0E81F36','Menu_CQMS',0,1,1) GO INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) -VALUES('00B413F9-1BB9-4F56-8952-D661716E9EF2','0B17549C-2749-4255-BFF4-574902E878FA','增加',1) +VALUES('9EAC9A0F-0E2E-4650-8318-3C9BC5EFC35D','8317C0F7-3A69-48AB-87E5-03E96C543B1C','保存',1) INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) -VALUES('419D13BE-438D-450B-92AE-2737B571A4F1','0B17549C-2749-4255-BFF4-574902E878FA','修改',2) -GO -INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) -VALUES('88813BE-438D-450B-92AE-2737B571A4F1','0B17549C-2749-4255-BFF4-574902E878FA','删除',3) +VALUES('BDAFA160-FC9D-4B2C-A887-178453E945FE','8317C0F7-3A69-48AB-87E5-03E96C543B1C','提交',2) GO + +--INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +--VALUES('0B17549C-2749-4255-BFF4-574902E878FA','资料验收','CQMS/Check/MaterialAcceptance.aspx',20,'B8500D87-407E-458C-9915-FD54F0E81F36','Menu_CQMS',0,1,1) +--GO +--INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +--VALUES('00B413F9-1BB9-4F56-8952-D661716E9EF2','0B17549C-2749-4255-BFF4-574902E878FA','增加',1) +--INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +--VALUES('419D13BE-438D-450B-92AE-2737B571A4F1','0B17549C-2749-4255-BFF4-574902E878FA','修改',2) +--GO +--INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +--VALUES('88813BE-438D-450B-92AE-2737B571A4F1','0B17549C-2749-4255-BFF4-574902E878FA','删除',3) +--GO + INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) VALUES('1433BE70-13C0-4AC7-BC3D-34C9471CE2A8','质量验收统计','CQMS/Check/SpotCheckStatistics.aspx',30,'B8500D87-407E-458C-9915-FD54F0E81F36','Menu_CQMS',0,1,1) GO diff --git a/SGGL/BLL/CQMS/WBS/ControlItemAndCycleService.cs b/SGGL/BLL/CQMS/WBS/ControlItemAndCycleService.cs index 3bd3e464..af7418a5 100644 --- a/SGGL/BLL/CQMS/WBS/ControlItemAndCycleService.cs +++ b/SGGL/BLL/CQMS/WBS/ControlItemAndCycleService.cs @@ -100,6 +100,7 @@ namespace BLL newControlItemAndCycle.Costs = ControlItemAndCycle.Costs; newControlItemAndCycle.CheckAcceptType = ControlItemAndCycle.CheckAcceptType; newControlItemAndCycle.RealEndDate = ControlItemAndCycle.RealEndDate; + newControlItemAndCycle.PlanCost = ControlItemAndCycle.PlanCost; db.SubmitChanges(); } diff --git a/SGGL/BLL/CQMS/WBS/WorkPackageService.cs b/SGGL/BLL/CQMS/WBS/WorkPackageService.cs index 98f1f8fc..02518032 100644 --- a/SGGL/BLL/CQMS/WBS/WorkPackageService.cs +++ b/SGGL/BLL/CQMS/WBS/WorkPackageService.cs @@ -739,5 +739,31 @@ namespace BLL return returnValues; } #endregion + + #region 更新分部分项概算费用 + /// + /// 更新分部分项概算费用 + /// + /// + /// + /// + /// + public static void UpdateWorkPackagesPlanCost(List workPackages, string workPackageId, decimal changePlanCost) + { + var workPackage = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackageId); + if (workPackage != null) + { + if (workPackage.PlanCost == null) + { + workPackage.PlanCost = changePlanCost; + } + else + { + workPackage.PlanCost += changePlanCost; + } + UpdateWorkPackagesPlanCost(workPackages, workPackage.SuperWorkPackageId, changePlanCost); + } + } + #endregion } } diff --git a/SGGL/FineUIPro.Web/CQMS/WBS/ControlItemAndCycleSet.aspx.cs b/SGGL/FineUIPro.Web/CQMS/WBS/ControlItemAndCycleSet.aspx.cs index 452c8b46..e8f1898f 100644 --- a/SGGL/FineUIPro.Web/CQMS/WBS/ControlItemAndCycleSet.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/WBS/ControlItemAndCycleSet.aspx.cs @@ -502,6 +502,7 @@ namespace FineUIPro.Web.CQMS.WBS newControlItemAndCycle.ControlItemDef = controlItemProject.ControlItemDef; newControlItemAndCycle.HGForms = controlItemProject.HGForms; newControlItemAndCycle.SHForms = controlItemProject.SHForms; + newControlItemAndCycle.Weights = controlItemProject.Weights; newControlItemAndCycle.Standard = controlItemProject.Standard; newControlItemAndCycle.ClauseNo = controlItemProject.ClauseNo; newControlItemAndCycle.CheckNum = controlItemProject.CheckNum; @@ -597,6 +598,7 @@ namespace FineUIPro.Web.CQMS.WBS newControlItemAndCycle.ControlItemDef = controlItemProject.ControlItemDef; newControlItemAndCycle.HGForms = controlItemProject.HGForms; newControlItemAndCycle.SHForms = controlItemProject.SHForms; + newControlItemAndCycle.Weights = controlItemProject.Weights; newControlItemAndCycle.Standard = controlItemProject.Standard; newControlItemAndCycle.ClauseNo = controlItemProject.ClauseNo; newControlItemAndCycle.IsApprove = true; @@ -668,6 +670,7 @@ namespace FineUIPro.Web.CQMS.WBS newControlItemAndCycle.ControlItemDef = controlItemProject.ControlItemDef; newControlItemAndCycle.HGForms = controlItemProject.HGForms; newControlItemAndCycle.SHForms = controlItemProject.SHForms; + newControlItemAndCycle.Weights = controlItemProject.Weights; newControlItemAndCycle.Standard = controlItemProject.Standard; newControlItemAndCycle.ClauseNo = controlItemProject.ClauseNo; newControlItemAndCycle.CheckNum = controlItemProject.CheckNum; diff --git a/SGGL/FineUIPro.Web/CQMS/WBS/ControlItemInitSet.aspx b/SGGL/FineUIPro.Web/CQMS/WBS/ControlItemInitSet.aspx index 6eed8437..05076cf0 100644 --- a/SGGL/FineUIPro.Web/CQMS/WBS/ControlItemInitSet.aspx +++ b/SGGL/FineUIPro.Web/CQMS/WBS/ControlItemInitSet.aspx @@ -70,7 +70,7 @@ - +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 +错误堆栈: + 在 FineUIPro.Web.index.MenuSwitchMethod(String type) 位置 E:\工作\赛鼎施工平台\SGGL_SeDin(New)\SGGL_SeDin_New\SGGL\FineUIPro.Web\index.aspx.cs:行号 417 + 在 FineUIPro.Web.index.btnPerson_Click(Object sender, EventArgs e) 位置 E:\工作\赛鼎施工平台\SGGL_SeDin(New)\SGGL_SeDin_New\SGGL\FineUIPro.Web\index.aspx.cs:行号 467 + 在 FineUIPro.Button.OnClick(EventArgs e) + 在 (Button , EventArgs ) + 在 FineUIPro.Button.RaisePostBackEvent(String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:09/03/2023 11:44:42 +出错文件:http://localhost:8797/index.aspx +IP地址:::1 + +出错时间:09/03/2023 11:44:42 + + +错误信息开始=====> +错误类型:ChangeConflictException +错误信息:2 的 1 更新失败。 +错误堆栈: + 在 System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) + 在 System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) + 在 System.Data.Linq.DataContext.SubmitChanges() + 在 BLL.PhtglContractTrackService.UpdatePHTGL_ContractTrack(PHTGL_ContractTrack newtable) 位置 E:\工作\赛鼎施工平台\SGGL_SeDin(New)\SGGL_SeDin_New\SGGL\BLL\PHTGL\ContractCompile\PhtglContracttrackService .cs:行号 200 + 在 FineUIPro.Web.PHTGL.ContractCompile.ContractTrackList.btnSave_OnClick(Object sender, EventArgs e) 位置 E:\工作\赛鼎施工平台\SGGL_SeDin(New)\SGGL_SeDin_New\SGGL\FineUIPro.Web\PHTGL\ContractCompile\ContractTrackList.aspx.cs:行号 371 + 在 FineUIPro.Button.OnClick(EventArgs e) + 在 (Button , EventArgs ) + 在 FineUIPro.Button.RaisePostBackEvent(String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:09/04/2023 10:22:11 +出错文件:http://localhost:8797/PHTGL/ContractCompile/ContractTrackList.aspx +IP地址:::1 +操作人员:JT + +出错时间:09/04/2023 10:22:11 + diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index e1616b8e..40fcdd75 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -322,6 +322,7 @@ + @@ -330,6 +331,7 @@ + diff --git a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackList.aspx.cs b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackList.aspx.cs index 71f4e802..3e10c138 100644 --- a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackList.aspx.cs +++ b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackList.aspx.cs @@ -16,8 +16,8 @@ namespace FineUIPro.Web.PHTGL.ContractCompile public string ContractId { get => (string)ViewState["ContractId"]; - set => ViewState["ContractId"] =value; - } + set => ViewState["ContractId"] = value; + } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) @@ -29,11 +29,11 @@ namespace FineUIPro.Web.PHTGL.ContractCompile this.DropContractCode.DataSource = BLL.PHTGL_ContractReviewService.GetContractReview_CompleteData(this.CurrUser.LoginProjectId); this.DropContractCode.DataBind(); Funs.FineUIPleaseSelect(this.DropContractCode); - DropMainContractCode_SelectedIndexChanged(null,null); + DropMainContractCode_SelectedIndexChanged(null, null); this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); // 绑定表格 this.BindGrid(); - + } } @@ -61,33 +61,33 @@ namespace FineUIPro.Web.PHTGL.ContractCompile Grid3.DataSource = null; Grid3.DataBind(); } - + } private void BindGrid2() { var db = Funs.DB; var q = from x in db.PHTGL_ContractTrackMatchWBS - join y in db.WBS_ControlItemAndCycle on x.ControlItemAndCycleId equals y.ControlItemAndCycleId - where x.ContractTrackId==Grid1.SelectedRowID - select new - { - x.Id, - x.ContractTrackId, - x.ControlItemAndCycleId, - y.ControlItemAndCycleCode, - y.ControlItemContent, - y.Weights, - x.WorkPackageEstimate - }; + join y in db.WBS_ControlItemAndCycle on x.ControlItemAndCycleId equals y.ControlItemAndCycleId + where x.ContractTrackId == Grid1.SelectedRowID + select new + { + x.Id, + x.ContractTrackId, + x.ControlItemAndCycleId, + y.ControlItemAndCycleCode, + y.ControlItemContent, + y.Weights, + x.WorkPackageEstimate + }; ; - Grid2.RecordCount =q.Count(); + Grid2.RecordCount = q.Count(); Grid2.DataSource = q; Grid2.DataBind(); string deleteScript = GetDeleteScript(); // 在第一行新增一条数据 btnMatchWBS_New.OnClientClick = Window1.GetShowReference(String.Format("ContractTrackMatchWBS.aspx?ContractTrackId={0}", Grid1.SelectedRowID, "增加 - ")); - + } private string GetDeleteScript() { @@ -165,7 +165,7 @@ namespace FineUIPro.Web.PHTGL.ContractCompile } else { - ShowNotify("请选择施工分包合同!",MessageBoxIcon.Information); + ShowNotify("请选择施工分包合同!", MessageBoxIcon.Information); } } @@ -196,8 +196,8 @@ namespace FineUIPro.Web.PHTGL.ContractCompile /// protected void Grid1_OnRowClick(object sender, GridRowClickEventArgs e) { - BindGrid2(); - BindGrid3(); + BindGrid2(); + BindGrid3(); } /// @@ -243,13 +243,42 @@ namespace FineUIPro.Web.PHTGL.ContractCompile { if (Grid2.SelectedRowIndexArray.Length > 0) { - + Model.SGGLDB db = Funs.DB; + var controlItemAndCycles = from x in db.WBS_ControlItemAndCycle + where x.ProjectId == this.CurrUser.LoginProjectId + select x; + var unitWorks = from x in db.WBS_UnitWork + where x.ProjectId == this.CurrUser.LoginProjectId + select x; + var workPackages = (from x in db.WBS_WorkPackage + where x.ProjectId == this.CurrUser.LoginProjectId + select x).ToList(); foreach (int rowIndex in Grid2.SelectedRowIndexArray) { string rowID = Grid2.DataKeys[rowIndex][0].ToString(); var p = BLL.PhtglContracttrackmatchwbsService.GetPHTGL_ContractTrackMatchWBSById(rowID); if (p != null) { + decimal changePlanCost = 0 - (p.WorkPackageEstimate ?? 0); + var c = controlItemAndCycles.First(x => x.ControlItemAndCycleId == p.ControlItemAndCycleId); + c.PlanCost = 0; + BLL.ControlItemAndCycleService.UpdateControlItemAndCycle(c); + //更新上级WBS内容概算费用 + BLL.WorkPackageService.UpdateWorkPackagesPlanCost(workPackages, c.WorkPackageId, changePlanCost); + var workPackage = workPackages.FirstOrDefault(x => x.WorkPackageId == c.WorkPackageId); + if (workPackage != null) + { + var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage.UnitWorkId); + if (unitWork.PlanCost == null) + { + unitWork.PlanCost = changePlanCost; + } + else + { + unitWork.PlanCost += changePlanCost; + } + } + db.SubmitChanges(); PhtglContracttrackmatchwbsService.DeleteModelById(rowID); } } @@ -284,8 +313,31 @@ namespace FineUIPro.Web.PHTGL.ContractCompile private void SaveGrid3() { - + Model.SGGLDB db = Funs.DB; + var list = (from x in db.PHTGL_ContractTrackProgress + where x.ContractTrackId == Grid1.SelectedRowID + select x).ToList(); PhtglContracttrackprogressService.DeleteModleByContractTrackId(Grid1.SelectedRowID); + decimal totalWeights = 0; + var SelectedList = (from x in db.PHTGL_ContractTrackMatchWBS + where x.ContractTrackId == Grid1.SelectedRowID + select x.ControlItemAndCycleId).ToList(); + var totalControlItemAndCycles = from x in db.WBS_ControlItemAndCycle + where x.ProjectId == this.CurrUser.LoginProjectId + select x; + var unitWorks = from x in db.WBS_UnitWork + where x.ProjectId == this.CurrUser.LoginProjectId + select x; + var workPackages = (from x in db.WBS_WorkPackage + where x.ProjectId == this.CurrUser.LoginProjectId + select x).ToList(); + var controlItemAndCycles = from x in totalControlItemAndCycles + where SelectedList.Contains(x.ControlItemAndCycleId) + select x; + foreach (var controlItemAndCycle in controlItemAndCycles) + { + totalWeights += controlItemAndCycle.Weights ?? 0; + } JArray EditorArr = Grid3.GetMergedData(); if (EditorArr.Count > 0) { @@ -304,12 +356,120 @@ namespace FineUIPro.Web.PHTGL.ContractCompile model.ACWP_Percentage = Funs.GetNewDecimal(objects["values"]["ACWP_Percentage"].ToString()); model.Date = objects["values"]["Date"].ToString(); BLL.PhtglContracttrackprogressService.AddPHTGL_ContractTrackProgress(model); + var old = list.FirstOrDefault(x => x.Date == model.Date); + decimal oldValue = 0; + if (old != null) + { + oldValue = old.ACWP_OutputValue ?? 0; + } + decimal changeValue = (model.ACWP_OutputValue ?? 0) - oldValue; + if (changeValue != 0) + { + foreach (var item in controlItemAndCycles) + { + var c = controlItemAndCycles.First(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId); + decimal thisValue = 0; + if (totalWeights > 0 && c.Weights.HasValue) + { + thisValue = decimal.Round(c.Weights.Value / totalWeights * changeValue, 2); + } + DateTime? months = Funs.GetNewDateTime(model.Date + "-01"); + var WorkPackage = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId); + Model.WBS_WorkPackageDetail WorkPackageDetail = BLL.WorkPackageDetailService.GetWorkPackageDetailByWorkPackageIdAndMonths(item.WorkPackageId, months.Value); + if (WorkPackageDetail != null) + { + WorkPackageDetail.ThisValue += thisValue; + } + else + { + WorkPackageDetail = new Model.WBS_WorkPackageDetail(); + WorkPackageDetail.WorkPackageDetailId = SQLHelper.GetNewID(); + WorkPackageDetail.WorkPackageId = item.WorkPackageId; + WorkPackageDetail.Months = months; + WorkPackageDetail.ThisValue = thisValue; + db.WBS_WorkPackageDetail.InsertOnSubmit(WorkPackageDetail); + } + //更新上级WBS内容每月实际费用 + UpdateWorkPackageParentThisValue(db, WorkPackage.SuperWorkPackageId, months.Value, thisValue); + ////更新单位工程 + Model.WBS_WorkPackageParentDetail unitWorkDetail = BLL.WorkPackageParentDetailService.GetWorkPackageParentDetailByParentIdAndMonths(WorkPackage.UnitWorkId, months.Value); + if (unitWorkDetail != null) + { + unitWorkDetail.ThisValue += thisValue; + } + else + { + unitWorkDetail = new Model.WBS_WorkPackageParentDetail(); + unitWorkDetail.WorkPackageParentDetailId = SQLHelper.GetNewID(); + unitWorkDetail.ParentId = WorkPackage.UnitWorkId; + unitWorkDetail.Months = months; + unitWorkDetail.ThisValue = thisValue; + db.WBS_WorkPackageParentDetail.InsertOnSubmit(unitWorkDetail); + } + ////更新建筑、安装工程 + Model.WBS_UnitWork unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == WorkPackage.UnitWorkId); + if (unitWork != null) + { + Model.WBS_WorkPackageParentDetail projectType = BLL.WorkPackageParentDetailService.GetWorkPackageParentDetailByParentIdAndMonths(unitWork.ProjectType, this.CurrUser.LoginProjectId, months.Value); + if (projectType != null) + { + projectType.ThisValue += thisValue; + } + else + { + projectType = new Model.WBS_WorkPackageParentDetail(); + projectType.WorkPackageParentDetailId = SQLHelper.GetNewID(); + projectType.ParentId = unitWork.ProjectType; + projectType.ProjectId = this.CurrUser.LoginProjectId; + projectType.Months = months; + projectType.ThisValue = thisValue; + db.WBS_WorkPackageParentDetail.InsertOnSubmit(projectType); + } + } + db.SubmitChanges(); + } + } } } ShowNotify("保存成功", MessageBoxIcon.Success); } + #region 更新上级WBS内容每月实际费用 + /// + /// 更新上级WBS内容每月实际费用 + /// + /// + /// + /// + /// + private void UpdateWorkPackageParentThisValue(Model.SGGLDB db, string SuperWorkPackageId, DateTime months, decimal thisValue) + { + Model.WBS_WorkPackage workPackage = db.WBS_WorkPackage.FirstOrDefault(x => x.WorkPackageId == SuperWorkPackageId); + if (workPackage != null) + { + Model.WBS_WorkPackageParentDetail parentDetail = BLL.WorkPackageParentDetailService.GetWorkPackageParentDetailByParentIdAndMonths(SuperWorkPackageId, months); + if (parentDetail != null) + { + parentDetail.ThisValue += thisValue; + } + else + { + parentDetail = new Model.WBS_WorkPackageParentDetail(); + parentDetail.WorkPackageParentDetailId = SQLHelper.GetNewID(); + parentDetail.ParentId = SuperWorkPackageId; + parentDetail.Months = months; + parentDetail.ThisValue = thisValue; + db.WBS_WorkPackageParentDetail.InsertOnSubmit(parentDetail); + } + if (workPackage.SuperWorkPackageId != null) //还存在上级节点,需要继续循环 + { + UpdateWorkPackageParentThisValue(db, workPackage.SuperWorkPackageId, months, thisValue); + } + } + } + #endregion + protected void btnSave_OnClick(object sender, EventArgs e) { JArray EditorArr = Grid1.GetMergedData(); @@ -499,7 +659,7 @@ namespace FineUIPro.Web.PHTGL.ContractCompile var model = ContractService.GetContractByContractNum(DropContractCode.SelectedValue); if (model != null) { - ContractId=model.ContractId; + ContractId = model.ContractId; this.txtContractName.Text = model.ContractName; } else @@ -509,7 +669,7 @@ namespace FineUIPro.Web.PHTGL.ContractCompile } } - BindGrid(); + BindGrid(); } protected void btnImport_Click(object sender, EventArgs e) @@ -525,7 +685,7 @@ namespace FineUIPro.Web.PHTGL.ContractCompile } else { - ShowNotify("请选择施工分包合同",MessageBoxIcon.Question); + ShowNotify("请选择施工分包合同", MessageBoxIcon.Question); } } @@ -535,6 +695,6 @@ namespace FineUIPro.Web.PHTGL.ContractCompile BindGrid2(); } - + } } \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackMatchWBS.aspx b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackMatchWBS.aspx index 579c0fc2..1557e77d 100644 --- a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackMatchWBS.aspx +++ b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackMatchWBS.aspx @@ -68,6 +68,9 @@ + + diff --git a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackMatchWBS.aspx.cs b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackMatchWBS.aspx.cs index 916b6ef4..0b76d3dc 100644 --- a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackMatchWBS.aspx.cs +++ b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackMatchWBS.aspx.cs @@ -16,6 +16,36 @@ namespace FineUIPro.Web.PHTGL.ContractCompile set { ViewState["ContractTrackId"] = value; } } + /// + /// 被选择项列表 + /// + public List SelectedList + { + get + { + return (List)ViewState["SelectedList"]; + } + set + { + ViewState["SelectedList"] = value; + } + } + + /// + /// 未被选择项列表 + /// + public List NoSelectedList + { + get + { + return (List)ViewState["NoSelectedList"]; + } + set + { + ViewState["NoSelectedList"] = value; + } + } + #region 页面加载 /// /// 页面加载 @@ -27,7 +57,8 @@ namespace FineUIPro.Web.PHTGL.ContractCompile if (!IsPostBack) { ContractTrackId = Request.Params["ContractTrackId"]; - + this.SelectedList = new List(); + this.NoSelectedList = new List(); InitTreeMenu(); } } @@ -358,6 +389,21 @@ namespace FineUIPro.Web.PHTGL.ContractCompile /// protected void trWBS_NodeCommand(object sender, TreeCommandEventArgs e) { + if (Grid1.SelectedRowIDArray.Length > 0) + { + var Ids = Grid1.SelectedRowIDArray; + for (int i = 0; i < this.Grid1.Rows.Count; i++) + { + if (Ids.Contains(this.Grid1.Rows[i].RowID)) + { + SelectedList.Add(this.Grid1.Rows[i].RowID); + } + else + { + NoSelectedList.Add(this.Grid1.Rows[i].RowID); + } + } + } BindGrid(); } #endregion @@ -407,7 +453,7 @@ namespace FineUIPro.Web.PHTGL.ContractCompile /// private void BindGrid() { - string strSql = @"SELECT ControlItemAndCycleId,ControlItemAndCycleCode,InitControlItemCode,ControlItemContent,ControlPoint,ControlItemDef,HGForms,SHForms,Standard,ClauseNo,CheckNum" + string strSql = @"SELECT ControlItemAndCycleId,ControlItemAndCycleCode,InitControlItemCode,ControlItemContent,ControlPoint,ControlItemDef,HGForms,SHForms,Standard,ClauseNo,CheckNum,Weights" + @" FROM WBS_ControlItemAndCycle "; List listStr = new List(); strSql += " where WorkPackageId = @WorkPackageId and IsApprove=1 "; @@ -463,10 +509,53 @@ namespace FineUIPro.Web.PHTGL.ContractCompile protected void btnAccept_Click(object sender, EventArgs e) { - if (Grid1.SelectedRowIDArray.Length>0) + if (Grid1.SelectedRowIDArray.Length > 0) { - var Ids=Grid1.SelectedRowIDArray; - foreach (var item in Ids) + var Ids = Grid1.SelectedRowIDArray; + for (int i = 0; i < this.Grid1.Rows.Count; i++) + { + if (Ids.Contains(this.Grid1.Rows[i].RowID)) + { + 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); + } + } + } + if (SelectedList.Count > 0) + { + SelectedList = SelectedList.Distinct().ToList(); + decimal estimatedAmount = 0; + var contractTrack = PhtglContractTrackService.GetPHTGL_ContractTrackById(ContractTrackId); + if (contractTrack != null && contractTrack.EstimatedAmount.HasValue) + { + estimatedAmount = contractTrack.EstimatedAmount.Value; + } + decimal totalWeights = 0; + Model.SGGLDB db = Funs.DB; + var totalControlItemAndCycles = from x in db.WBS_ControlItemAndCycle + where x.ProjectId == this.CurrUser.LoginProjectId + select x; + var unitWorks = from x in db.WBS_UnitWork + where x.ProjectId == this.CurrUser.LoginProjectId + select x; + var workPackages = (from x in db.WBS_WorkPackage + where x.ProjectId == this.CurrUser.LoginProjectId + select x).ToList(); + var controlItemAndCycles = from x in totalControlItemAndCycles + where SelectedList.Contains(x.ControlItemAndCycleId) + select x; + foreach (var controlItemAndCycle in controlItemAndCycles) + { + totalWeights += controlItemAndCycle.Weights ?? 0; + } + foreach (var item in SelectedList) { var querymodel = new Model.PHTGL_ContractTrackMatchWBS { @@ -484,7 +573,34 @@ namespace FineUIPro.Web.PHTGL.ContractCompile ControlItemAndCycleId = item, }; + var c = controlItemAndCycles.First(x => x.ControlItemAndCycleId == item); + decimal oldPlanCost = c.PlanCost ?? 0; + decimal changePlanCost = 0; + if (estimatedAmount > 0 && totalWeights > 0 && c.Weights.HasValue) + { + //工作包概算费用 + newtable.WorkPackageEstimate = decimal.Round(c.Weights.Value / totalWeights * estimatedAmount, 2); + } BLL.PhtglContracttrackmatchwbsService.AddPHTGL_ContractTrackMatchWBS(newtable); + c.PlanCost = newtable.WorkPackageEstimate ?? 0; + changePlanCost += (newtable.WorkPackageEstimate ?? 0) - oldPlanCost; + BLL.ControlItemAndCycleService.UpdateControlItemAndCycle(c); + //更新上级WBS内容概算费用 + BLL.WorkPackageService.UpdateWorkPackagesPlanCost(workPackages, c.WorkPackageId, changePlanCost); + var workPackage = workPackages.FirstOrDefault(x=>x.WorkPackageId== c.WorkPackageId); + if (workPackage != null) + { + var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage.UnitWorkId); + if (unitWork.PlanCost == null) + { + unitWork.PlanCost = changePlanCost; + } + else + { + unitWork.PlanCost += changePlanCost; + } + } + db.SubmitChanges(); } } ShowNotify("添加成功", MessageBoxIcon.Success); @@ -492,7 +608,7 @@ namespace FineUIPro.Web.PHTGL.ContractCompile } else { - ShowNotify("请选择需要添加的数据",MessageBoxIcon.Information); + ShowNotify("请选择需要添加的数据", MessageBoxIcon.Information); } } @@ -508,7 +624,7 @@ namespace FineUIPro.Web.PHTGL.ContractCompile if (queryResult.Any()) { e.RowCssClass = "color3"; - } + } } } } \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/common/Menu_Doc.xml b/SGGL/FineUIPro.Web/common/Menu_Doc.xml new file mode 100644 index 00000000..8ae51162 --- /dev/null +++ b/SGGL/FineUIPro.Web/common/Menu_Doc.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/common/Menu_PGJSX.xml b/SGGL/FineUIPro.Web/common/Menu_PGJSX.xml new file mode 100644 index 00000000..c92461f4 --- /dev/null +++ b/SGGL/FineUIPro.Web/common/Menu_PGJSX.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/SGGL/Model/Model.cs b/SGGL/Model/Model.cs index 4254ee34..fa3e9548 100644 --- a/SGGL/Model/Model.cs +++ b/SGGL/Model/Model.cs @@ -290949,7 +290949,7 @@ namespace Model } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(81)")] + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(101)")] public string Name { get @@ -293605,6 +293605,8 @@ namespace Model private string _WBSCode; + private System.Nullable _PlanCost; + private EntityRef _WBS_WorkPackage; #region 可扩展性方法定义 @@ -293655,6 +293657,8 @@ namespace Model partial void OnRealEndDateChanged(); partial void OnWBSCodeChanging(string value); partial void OnWBSCodeChanged(); + partial void OnPlanCostChanging(System.Nullable value); + partial void OnPlanCostChanged(); #endregion public WBS_ControlItemAndCycle() @@ -294107,6 +294111,26 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PlanCost", DbType="Decimal(9,2)")] + public System.Nullable PlanCost + { + get + { + return this._PlanCost; + } + set + { + if ((this._PlanCost != value)) + { + this.OnPlanCostChanging(value); + this.SendPropertyChanging(); + this._PlanCost = value; + this.SendPropertyChanged("PlanCost"); + this.OnPlanCostChanged(); + } + } + } + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_WBS_ControlItemAndCycle_WBS_ControlItemAndCycle", Storage="_WBS_WorkPackage", ThisKey="WorkPackageId", OtherKey="WorkPackageId", IsForeignKey=true)] public WBS_WorkPackage WBS_WorkPackage {