修改进度与合同关联
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user