diff --git a/SGGL/BLL/PHTGL/ContractCompile/PhtglContracttrackService .cs b/SGGL/BLL/PHTGL/ContractCompile/PhtglContracttrackService .cs index 7e1a3aa5..32643bc9 100644 --- a/SGGL/BLL/PHTGL/ContractCompile/PhtglContracttrackService .cs +++ b/SGGL/BLL/PHTGL/ContractCompile/PhtglContracttrackService .cs @@ -956,11 +956,15 @@ namespace BLL where personLogIds.Contains(x.ConstructionLogId) select x; var unitWorks = (from x in getContractTracks - select new { MainItemCode = x.MainItemCode, MainItemName = x.MainItemName }).Distinct().ToList(); + select new { MainItemCode = x.MainItemCode, MainItemName = x.MainItemName }).Distinct().OrderBy(x => x.MainItemCode).ToList(); DataTable table = new DataTable(); table.Columns.Add(new DataColumn("Id", typeof(String))); table.Columns.Add(new DataColumn("Code", typeof(String))); + table.Columns.Add(new DataColumn("MainItemCode", typeof(String))); + table.Columns.Add(new DataColumn("MainItemName", typeof(String))); + table.Columns.Add(new DataColumn("MajorCode", typeof(String))); + table.Columns.Add(new DataColumn("MajorName", typeof(String))); table.Columns.Add(new DataColumn("ProjectCode", typeof(String))); table.Columns.Add(new DataColumn("ProjectName", typeof(String))); table.Columns.Add(new DataColumn("UnitOfMeasurement", typeof(String))); @@ -1054,7 +1058,7 @@ namespace BLL row = table.NewRow(); row[0] = unitWork.MainItemCode; row[1] = a; - row[2] = string.Empty; + row[2] = unitWork.MainItemCode; row[3] = unitWork.MainItemName; table.Rows.Add(row); int b = 1; @@ -1064,84 +1068,186 @@ namespace BLL row[0] = unitWork.MainItemCode + b.ToString(); row[1] = a + "." + b; row[2] = string.Empty; - row[3] = proName; - table.Rows.Add(row); - int c = 1; - var contractTracks = getContractTracks.Where(x => x.MainItemCode == unitWork.MainItemCode && x.MajorName == proName); - foreach (Model.PHTGL_ContractTrack item in contractTracks) + row[3] = string.Empty; + var pro = pros.FirstOrDefault(x => x.Value == proName); + if (pro != null) { - row = table.NewRow(); - row[0] = item.Id; - row[1] = a + "." + b + "." + c; - row[2] = item.ProjectCode; - row[3] = item.ProjectName; - row[4] = item.UnitOfMeasurement; - row[7] = item.Id; - if (workEfficiencys.Count() > 0) + row[4] = pro.Text; + } + row[5] = proName; + table.Rows.Add(row); + var subProjects = (from x in getContractTracks + where x.MainItemCode == unitWork.MainItemCode && x.MajorName == proName && x.SubProject != null + select x.SubProject).Distinct().ToList(); + if (subProjects.Count == 0) //未填分部工程 + { + int c = 1; + var contractTracks = getContractTracks.Where(x => x.MainItemCode == unitWork.MainItemCode && x.MajorName == proName).OrderBy(x => x.SerialNumber); + foreach (Model.PHTGL_ContractTrack item in contractTracks) { - var we = (from x in workEfficiencys - where x.ContractTrackId == item.Id - select new { x.ConstructionLogId, x.ContractTrackId, x.PhysicalCompletionQuantity, x.MaterialConsumption }).Distinct().ToList(); - decimal physicalCompletionQuantity = 0, materialConsumption = 0; - if (we.Count() > 0) + row = table.NewRow(); + row[0] = item.Id; + row[1] = a + "." + b + "." + c; + row[6] = item.ProjectCode; + row[7] = item.ProjectName; + row[8] = item.UnitOfMeasurement; + row[11] = item.Id; + if (workEfficiencys.Count() > 0) { - foreach (var w in we) + var we = (from x in workEfficiencys + where x.ContractTrackId == item.Id + select new { x.ConstructionLogId, x.ContractTrackId, x.PhysicalCompletionQuantity, x.MaterialConsumption }).Distinct().ToList(); + decimal physicalCompletionQuantity = 0, materialConsumption = 0; + if (we.Count() > 0) { - physicalCompletionQuantity += w.PhysicalCompletionQuantity ?? 0; - materialConsumption += w.MaterialConsumption ?? 0; - } - row[5] = physicalCompletionQuantity; - row[6] = materialConsumption; - } - for (int i = 0; i < workPostIds.Count; i++) - { - var workEfficiencyList = workEfficiencys.Where(x => x.Type == "Person" && x.TypeId == workPostIds[i] && x.ContractTrackId == item.Id); - if (workEfficiencyList.Count() > 0) - { - decimal d = 0; - foreach (var workEfficiency in workEfficiencyList) + foreach (var w in we) { - if (workEfficiency.ConsumeHours != null) + physicalCompletionQuantity += w.PhysicalCompletionQuantity ?? 0; + materialConsumption += w.MaterialConsumption ?? 0; + } + row[9] = physicalCompletionQuantity; + row[10] = materialConsumption; + } + for (int i = 0; i < workPostIds.Count; i++) + { + var workEfficiencyList = workEfficiencys.Where(x => x.Type == "Person" && x.TypeId == workPostIds[i] && x.ContractTrackId == item.Id); + if (workEfficiencyList.Count() > 0) + { + decimal d = 0; + foreach (var workEfficiency in workEfficiencyList) { - d += decimal.Round(Convert.ToDecimal(workEfficiency.ConsumeHours), 2); + if (workEfficiency.ConsumeHours != null) + { + d += decimal.Round(Convert.ToDecimal(workEfficiency.ConsumeHours), 2); + } + } + if (d > 0) + { + row[12 + i * 2] = decimal.Round(d, 2); + if (physicalCompletionQuantity > 0) + { + row[13 + i * 2] = decimal.Round(Convert.ToDecimal(physicalCompletionQuantity / d), 2); + } } } - if (d > 0) + } + for (int i = 0; i < machineIds.Count; i++) + { + var workEfficiencyList = workEfficiencys.Where(x => x.Type == "Machine" && x.TypeId == machineIds[i] && x.ContractTrackId == item.Id); + if (workEfficiencyList.Count() > 0) { - row[8 + i * 2] = decimal.Round(d, 2); - if (physicalCompletionQuantity > 0) + decimal d = 0; + foreach (var workEfficiency in workEfficiencyList) { - row[9 + i * 2] = decimal.Round(Convert.ToDecimal(physicalCompletionQuantity / d), 2); - } - } - } - } - for (int i = 0; i < machineIds.Count; i++) - { - var workEfficiencyList = workEfficiencys.Where(x => x.Type == "Machine" && x.TypeId == machineIds[i] && x.ContractTrackId == item.Id); - if (workEfficiencyList.Count() > 0) - { - decimal d = 0; - foreach (var workEfficiency in workEfficiencyList) - { - if (workEfficiency.ConsumeHours != null) - { - d += decimal.Round(Convert.ToDecimal(workEfficiency.ConsumeHours), 2); - } - } - if (d > 0) - { - row[48 + i * 2] = decimal.Round(d, 2); - if (physicalCompletionQuantity > 0) - { - row[49 + i * 2] = decimal.Round(Convert.ToDecimal(physicalCompletionQuantity / d), 2); + if (workEfficiency.ConsumeHours != null) + { + d += decimal.Round(Convert.ToDecimal(workEfficiency.ConsumeHours), 2); + } + } + if (d > 0) + { + row[52 + i * 2] = decimal.Round(d, 2); + if (physicalCompletionQuantity > 0) + { + row[53 + i * 2] = decimal.Round(Convert.ToDecimal(physicalCompletionQuantity / d), 2); + } } } } } + table.Rows.Add(row); + c++; + } + } + else //存在分部工程 + { + int c = 1; + foreach (var subProject in subProjects) + { + row = table.NewRow(); + row[0] = unitWork.MainItemCode + b.ToString() + c.ToString(); + row[1] = a + "." + b + "." + c; + row[7] = subProject; + table.Rows.Add(row); + int f = 1; + var contractTracks = getContractTracks.Where(x => x.MainItemCode == unitWork.MainItemCode && x.MajorName == proName && x.SubProject == subProject).OrderBy(x => x.SerialNumber); + foreach (Model.PHTGL_ContractTrack item in contractTracks) + { + row = table.NewRow(); + row[0] = item.Id; + row[1] = a + "." + b + "." + c + "." + f; + row[6] = item.ProjectCode; + row[7] = item.ProjectName; + row[8] = item.UnitOfMeasurement; + row[11] = item.Id; + if (workEfficiencys.Count() > 0) + { + var we = (from x in workEfficiencys + where x.ContractTrackId == item.Id + select new { x.ConstructionLogId, x.ContractTrackId, x.PhysicalCompletionQuantity, x.MaterialConsumption }).Distinct().ToList(); + decimal physicalCompletionQuantity = 0, materialConsumption = 0; + if (we.Count() > 0) + { + foreach (var w in we) + { + physicalCompletionQuantity += w.PhysicalCompletionQuantity ?? 0; + materialConsumption += w.MaterialConsumption ?? 0; + } + row[9] = physicalCompletionQuantity; + row[10] = materialConsumption; + } + for (int i = 0; i < workPostIds.Count; i++) + { + var workEfficiencyList = workEfficiencys.Where(x => x.Type == "Person" && x.TypeId == workPostIds[i] && x.ContractTrackId == item.Id); + if (workEfficiencyList.Count() > 0) + { + decimal d = 0; + foreach (var workEfficiency in workEfficiencyList) + { + if (workEfficiency.ConsumeHours != null) + { + d += decimal.Round(Convert.ToDecimal(workEfficiency.ConsumeHours), 2); + } + } + if (d > 0) + { + row[12 + i * 2] = decimal.Round(d, 2); + if (physicalCompletionQuantity > 0) + { + row[13 + i * 2] = decimal.Round(Convert.ToDecimal(physicalCompletionQuantity / d), 2); + } + } + } + } + for (int i = 0; i < machineIds.Count; i++) + { + var workEfficiencyList = workEfficiencys.Where(x => x.Type == "Machine" && x.TypeId == machineIds[i] && x.ContractTrackId == item.Id); + if (workEfficiencyList.Count() > 0) + { + decimal d = 0; + foreach (var workEfficiency in workEfficiencyList) + { + if (workEfficiency.ConsumeHours != null) + { + d += decimal.Round(Convert.ToDecimal(workEfficiency.ConsumeHours), 2); + } + } + if (d > 0) + { + row[52 + i * 2] = decimal.Round(d, 2); + if (physicalCompletionQuantity > 0) + { + row[53 + i * 2] = decimal.Round(Convert.ToDecimal(physicalCompletionQuantity / d), 2); + } + } + } + } + } + table.Rows.Add(row); + f++; + } + c++; } - table.Rows.Add(row); - c++; } b++; } diff --git a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackComparison.aspx b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackComparison.aspx index 18568252..8ec0b75c 100644 --- a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackComparison.aspx +++ b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackComparison.aspx @@ -107,7 +107,7 @@ + FieldType="String" HeaderText="子分部工程" TextAlign="Left" HeaderTextAlign="Center"> @@ -141,13 +141,13 @@ + FieldType="String" HeaderText="全费用固定综合单价(元)" TextAlign="Left" HeaderTextAlign="Center" EnableColumnEdit="False"> + FieldType="String" HeaderText="其中:主材费(元)" TextAlign="Left" HeaderTextAlign="Center"> diff --git a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackList.aspx b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackList.aspx index 6ddfd618..1e221109 100644 --- a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackList.aspx +++ b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackList.aspx @@ -111,7 +111,7 @@ + FieldType="String" HeaderText="子分部工程" TextAlign="Left" HeaderTextAlign="Center"> diff --git a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractWBS.aspx b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractWBS.aspx index e4974a14..34f26861 100644 --- a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractWBS.aspx +++ b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractWBS.aspx @@ -105,7 +105,7 @@ + FieldType="String" HeaderText="子分部工程" TextAlign="Left" HeaderTextAlign="Center"> diff --git a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractWBS.aspx.cs b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractWBS.aspx.cs index bb75b6f2..64686ba1 100644 --- a/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractWBS.aspx.cs +++ b/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractWBS.aspx.cs @@ -176,7 +176,7 @@ namespace FineUIPro.Web.PHTGL.ContractCompile Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning); return; } - object[] ID = Grid1.DataKeys[Grid1.SelectedRowIndex]; + string ID = Grid1.SelectedRow.DataKeys[0].ToString(); var model = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackById(ID[0].ToString()); if (model != null) ///已上报时不能删除 { diff --git a/SGGL/FineUIPro.Web/PZHGL/InformationProject/ConstructionLogWorkEfficiency.aspx b/SGGL/FineUIPro.Web/PZHGL/InformationProject/ConstructionLogWorkEfficiency.aspx index e44234cc..d8463909 100644 --- a/SGGL/FineUIPro.Web/PZHGL/InformationProject/ConstructionLogWorkEfficiency.aspx +++ b/SGGL/FineUIPro.Web/PZHGL/InformationProject/ConstructionLogWorkEfficiency.aspx @@ -40,13 +40,13 @@ - - - + + + + + + + + diff --git a/SGGL/FineUIPro.Web/PZHGL/InformationProject/MonthConstructionLogWorkEfficiencySum.aspx b/SGGL/FineUIPro.Web/PZHGL/InformationProject/MonthConstructionLogWorkEfficiencySum.aspx index e92cd227..461cd6d0 100644 --- a/SGGL/FineUIPro.Web/PZHGL/InformationProject/MonthConstructionLogWorkEfficiencySum.aspx +++ b/SGGL/FineUIPro.Web/PZHGL/InformationProject/MonthConstructionLogWorkEfficiencySum.aspx @@ -44,6 +44,18 @@ + + + + + + + + diff --git a/SGGL/FineUIPro.Web/PZHGL/InformationProject/ProjectConstructionLogWorkEfficiency.aspx b/SGGL/FineUIPro.Web/PZHGL/InformationProject/ProjectConstructionLogWorkEfficiency.aspx index 5b63028d..ad6e8801 100644 --- a/SGGL/FineUIPro.Web/PZHGL/InformationProject/ProjectConstructionLogWorkEfficiency.aspx +++ b/SGGL/FineUIPro.Web/PZHGL/InformationProject/ProjectConstructionLogWorkEfficiency.aspx @@ -37,13 +37,13 @@ - -