修改进度与合同关联

This commit is contained in:
2023-09-05 09:52:10 +08:00
parent b917d217be
commit b238b27726
15 changed files with 497 additions and 53 deletions
@@ -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
/// <param name="e"></param>
protected void Grid1_OnRowClick(object sender, GridRowClickEventArgs e)
{
BindGrid2();
BindGrid3();
BindGrid2();
BindGrid3();
}
/// <summary>
@@ -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内容每月实际费用
/// <summary>
/// 更新上级WBS内容每月实际费用
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="PlanNum"></param>
/// <param name="parentId"></param>
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();
}
}
}