diff --git a/DataBase/版本日志/SGGLDB_V2022-01-18-001.sql b/DataBase/版本日志/SGGLDB_V2022-01-18-001.sql
new file mode 100644
index 00000000..aa0ee50a
--- /dev/null
+++ b/DataBase/版本日志/SGGLDB_V2022-01-18-001.sql
@@ -0,0 +1,48 @@
+
+ALTER VIEW [dbo].[View_WBS_CostControlDetailStatistics]
+AS
+select InstallationId as Id,null as SupId ,InstallationCode as Code, InstallationName as Name,'Installation' as WBSType,null as OldCnProfessionId,null as OldUnitProjectCode,null as OldWbsSetCode,
+ProjectId from dbo.Project_Installation where SuperInstallationId is null
+Union
+select InstallationId as Id,SuperInstallationId as SupId ,InstallationCode as Code, '['+InstallationCode+']'+InstallationName as Name,'Installation' as WBSType,null as OldCnProfessionId,null as OldUnitProjectCode,null as OldWbsSetCode,
+ProjectId from dbo.Project_Installation where SuperInstallationId is not null
+Union
+select CnProfessionId as Id , InstallationId as SupId,CnProfessionCode as Code, CnProfessionName as Name,'CnProfession' as WBSType,OldId as OldCnProfessionId,null as OldUnitProjectCode,null as OldWbsSetCode,
+ProjectId from dbo.WBS_CnProfession where IsApprove=1
+Union all
+select UnitProjectId as Id, isnull(CnProfessionId,InstallationId) as SupId,UnitProjectCode as Code,UnitProjectName as Name,'UnitProject' as WBSType,
+(case when u.CnProfessionId is null then (select CnProfessionId from WBS_CnProfessionInit where CnProfessionName like (select '%'+substring(InstallationName,0,2)+'%' from Project_Installation where InstallationId=u.InstallationId)) else (select OldId from WBS_CnProfession c where c.CnProfessionId=u.CnProfessionId) end) as OldCnProfessionId,UnitProjectCode as OldUnitProjectCode,null as OldWbsSetCode,
+ProjectId from dbo.Wbs_UnitProject u where IsApprove=1
+Union all
+select WbsSetId as id,UnitProjectId as SupId,WbsSetCode as Code, WbsSetName as Name,'WbsSet' as WBSType,
+(case when w.CnProfessionId is null then (select CnProfessionId from WBS_CnProfessionInit where CnProfessionName like (select '%'+substring(InstallationName,0,2)+'%' from Project_Installation where InstallationId=w.InstallationId)) else (select OldId from WBS_CnProfession c where c.CnProfessionId=w.CnProfessionId) end) as OldCnProfessionId,(select UnitProjectCode from Wbs_UnitProject c where c.UnitProjectId=w.UnitProjectId) as OldUnitProjectCode,
+WbsSetCode as OldWbsSetCode,
+ProjectId from dbo.Wbs_WbsSet w where IsApprove=1 and SuperWbsSetId is null
+Union all
+select WbsSetId as id,SuperWbsSetId as SupId,WbsSetCode as Code, WbsSetName as Name,'WbsSet' as WBSType,
+(case when w.CnProfessionId is null then (select CnProfessionId from WBS_CnProfessionInit where CnProfessionName like (select '%'+substring(InstallationName,0,2)+'%' from Project_Installation where InstallationId=w.InstallationId)) else (select OldId from WBS_CnProfession c where c.CnProfessionId=w.CnProfessionId) end) as OldCnProfessionId,(select UnitProjectCode from Wbs_UnitProject c where c.UnitProjectId=w.UnitProjectId) as OldUnitProjectCode,
+(select WbsSetCode from Wbs_WbsSet ws where ws.WbsSetId=w.SuperWbsSetId) as OldWbsSetCode,
+ProjectId from dbo.Wbs_WbsSet w where IsApprove=1 and SuperWbsSetId is not null
+Union all
+select c.CostControlId as id,c.WbsSetId as SupId,CostControlCode as Code,c.CostControlName as Name,'CostControl' as WBSType,
+(case when ws.CnProfessionId is null then (select CnProfessionId from WBS_CnProfessionInit where CnProfessionName like (select '%'+substring(InstallationName,0,2)+'%' from Project_Installation where InstallationId=ws.InstallationId)) else (select OldId from WBS_CnProfession cn where cn.CnProfessionId=(select top 1 CnProfessionId from Wbs_WbsSet w where w.WbsSetId=c.WbsSetId)) end) as OldCnProfessionId,
+(select UnitProjectCode from Wbs_UnitProject u where u.UnitProjectId=(select top 1 UnitProjectId from Wbs_WbsSet w where w.WbsSetId=c.WbsSetId)) as OldUnitProjectCode,
+(select WbsSetCode from Wbs_WbsSet u where u.WbsSetId=(select top 1 w.SuperWbsSetId from Wbs_WbsSet w where w.WbsSetId=c.WbsSetId)) as OldWbsSetCode,
+c.ProjectId from dbo.WBS_CostControl c
+left join dbo.Wbs_WbsSet ws on ws.WbsSetId=c.WbsSetId
+where c.IsSelected=1
+
+
+
+
+
+
+
+
+
+
+
+
+GO
+
+
diff --git a/SGGL/BLL/JDGL/WBS/WbsSetService.cs b/SGGL/BLL/JDGL/WBS/WbsSetService.cs
index ae63b9ab..8804eb69 100644
--- a/SGGL/BLL/JDGL/WBS/WbsSetService.cs
+++ b/SGGL/BLL/JDGL/WBS/WbsSetService.cs
@@ -344,24 +344,35 @@ namespace BLL
///
public static List GetWbsSetIdByInstallationIdAndCNCodeAndUnitProjectCodeAndWbsSetCode(string installationId, string cnCode, string unitProjectCode, string wbsSetCode)
{
+ List ids = new List();
Model.SGGLDB db = Funs.DB;
string inId = string.Empty;
Model.Project_Installation ins = db.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId);
- if (ins.IsEnd == true)
+ var childInss = from x in db.Project_Installation where x.SuperInstallationId == installationId select x;
+ if (childInss.Count() == 0)
{
inId = installationId;
+ var cn = (from x in db.WBS_CnProfession where x.InstallationId == inId && x.OldId.ToString() == cnCode select x).FirstOrDefault();
+ if (cn != null)
+ {
+ var list = (from x in db.Wbs_WbsSet
+ join y in db.Wbs_UnitProject
+ on x.UnitProjectId equals y.UnitProjectId
+ where x.CnProfessionId == cn.CnProfessionId && y.UnitProjectCode == unitProjectCode && x.WbsSetCode == wbsSetCode
+ select x.WbsSetId).ToList();
+ ids.AddRange(list);
+ }
}
else
{
- inId = Project_InstallationService.GetEndInstallationId(installationId);
+ var childIns = from x in db.Project_Installation where x.SuperInstallationId == installationId select x;
+ foreach (var childIn in childIns)
+ {
+ ids.AddRange(GetWbsSetIdByInstallationIdAndCNCodeAndUnitProjectCodeAndWbsSetCode(childIn.InstallationId, cnCode, unitProjectCode, wbsSetCode));
+ }
}
- var cn = (from x in db.WBS_CnProfession where x.InstallationId == inId && x.OldId.ToString() == cnCode select x).FirstOrDefault();
- var list = (from x in db.Wbs_WbsSet
- join y in db.Wbs_UnitProject
- on x.UnitProjectId equals y.UnitProjectId
- where x.CnProfessionId == cn.CnProfessionId && y.UnitProjectCode == unitProjectCode && x.WbsSetCode == wbsSetCode
- select x.WbsSetId).ToList();
- return list;
+
+ return ids;
}
///
diff --git a/SGGL/BLL/JDGL/WBS/WorkloadStatisticsService.cs b/SGGL/BLL/JDGL/WBS/WorkloadStatisticsService.cs
index ab39f50a..a27b9b3b 100644
--- a/SGGL/BLL/JDGL/WBS/WorkloadStatisticsService.cs
+++ b/SGGL/BLL/JDGL/WBS/WorkloadStatisticsService.cs
@@ -372,8 +372,8 @@ namespace BLL
else
{
Model.WBS_CnProfessionInit cnInit = BLL.CnProfessionInitService.GetCnProfessionInitByCnProfessionId(cnProfessionId);
- newList = (from x in newList where (x.WBSType == "Installation" && x.Name == cnInit.CnProfessionName) || (x.WBSType != "Installation" && x.OldCnProfessionId.ToString() == cnProfessionId) select x).ToList();
- var cn = newList.FirstOrDefault(x => x.Name == cnInit.CnProfessionName);
+ newList = (from x in newList where (x.WBSType == "Installation" && x.Name.Contains(cnInit.CnProfessionName.Substring(0, 2))) || (x.WBSType != "Installation" && x.OldCnProfessionId.ToString() == cnProfessionId) select x).ToList();
+ var cn = newList.FirstOrDefault(x => x.Name.Contains(cnInit.CnProfessionName.Substring(0, 2)) && x.WBSType == "Installation");
parentRow = table.NewRow();
parentRow[0] = cn.Id;
parentRow[1] = "0";
@@ -1169,119 +1169,122 @@ namespace BLL
newList = (from x in newList where x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.WBSType != "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode && x.OldWbsSetCode == wbsSetCode select x).ToList();
var wb = newList.FirstOrDefault(x => x.WBSType == "WbsSet" && x.OldWbsSetCode == wbsSetCode);
parentRow = table.NewRow();
- parentRow[0] = wb.Id;
- parentRow[1] = "0";
- parentRow[2] = wb.Name;
- parentRow[3] = projectId;
- Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == wb.Id && x.Months == months);
- if (pparentDetail != null)
+ if (wb != null)
{
- d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisRealCost), 2);
- d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanValue), 2);
- d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanCost), 2);
- d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalRealCost), 2);
- d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanValue), 2);
- d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanCost), 2);
- }
- else
- {
- Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == wb.Id);
- if (parentLastDetail != null && parentLastDetail.Months <= months)
+ parentRow[0] = wb.Id;
+ parentRow[1] = "0";
+ parentRow[2] = wb.Name;
+ parentRow[3] = projectId;
+ Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == wb.Id && x.Months == months);
+ if (pparentDetail != null)
{
- d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);
- d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);
- d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);
+ d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisRealCost), 2);
+ d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanValue), 2);
+ d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanCost), 2);
+ d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalRealCost), 2);
+ d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanValue), 2);
+ d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanCost), 2);
}
- }
- foreach (Model.View_WBS_CostControlDetailStatistics item in newList)
- {
- row = table.NewRow();
- row[0] = item.Id;
- row[2] = item.Name;
- row[3] = item.ProjectId;
- if (item.WBSType == "WbsSet")
+ else
{
- row[1] = item.SupId;
- var wbsSet = wbsSets.FirstOrDefault(x => x.WbsSetId == item.Id);
- Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months);
- if (parentDetail != null)
+ Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == wb.Id);
+ if (parentLastDetail != null && parentLastDetail.Months <= months)
{
- row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本
- row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算
- row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算
- row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本
- row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算
- row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算
+ d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);
+ d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);
+ d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);
}
- else
+ }
+ foreach (Model.View_WBS_CostControlDetailStatistics item in newList)
+ {
+ row = table.NewRow();
+ row[0] = item.Id;
+ row[2] = item.Name;
+ row[3] = item.ProjectId;
+ if (item.WBSType == "WbsSet")
{
- Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id);
- if (parentLastDetail != null && parentLastDetail.Months <= months)
+ row[1] = item.SupId;
+ var wbsSet = wbsSets.FirstOrDefault(x => x.WbsSetId == item.Id);
+ Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months);
+ if (parentDetail != null)
{
- row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本
- row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算
- row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算
+ row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本
+ row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算
+ row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算
+ row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本
+ row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算
+ row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算
+ }
+ else
+ {
+ Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id);
+ if (parentLastDetail != null && parentLastDetail.Months <= months)
+ {
+ row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本
+ row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算
+ row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算
+ }
}
}
- }
- else if (item.WBSType == "CostControl")
- {
- row[1] = item.SupId;
- Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months);
- if (detail != null)
+ else if (item.WBSType == "CostControl")
{
- row[4] = detail.Unit;//单位
- row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量
- row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价
- row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量
- row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量
- row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价
- row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本
- row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算
- row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算
- row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量
- row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量
- row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本
- row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算
- row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算
- }
- else
- {
- Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id);
- if (lastDetail != null && lastDetail.Months <= months)
+ row[1] = item.SupId;
+ Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months);
+ if (detail != null)
{
- row[4] = lastDetail.Unit;//单位
- row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量
- row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价
- row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量
- row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量
- row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价
- row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量
- row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量
- row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本
- row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算
- row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算
+ row[4] = detail.Unit;//单位
+ row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量
+ row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价
+ row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量
+ row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量
+ row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价
+ row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本
+ row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算
+ row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算
+ row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量
+ row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量
+ row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本
+ row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算
+ row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算
+ }
+ else
+ {
+ Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id);
+ if (lastDetail != null && lastDetail.Months <= months)
+ {
+ row[4] = lastDetail.Unit;//单位
+ row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量
+ row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价
+ row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量
+ row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量
+ row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价
+ row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量
+ row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量
+ row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本
+ row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算
+ row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算
+ }
}
}
+ table.Rows.Add(row);
}
- table.Rows.Add(row);
+ if (d10 != 0)
+ {
+ parentRow[10] = decimal.Round(d10, 2);//本月实际成本
+ parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算
+ parentRow[12] = decimal.Round(d12, 2);//本月完成预算
+ parentRow[15] = decimal.Round(d15, 2);//累计完成成本
+ parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算
+ parentRow[17] = decimal.Round(d17, 2);//累计完成预算
+ }
+ else
+ {
+ parentRow[15] = decimal.Round(d15, 2);//累计完成成本
+ parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算
+ parentRow[17] = decimal.Round(d17, 2);//累计完成预算
+ }
+ table.Rows.Add(parentRow);
}
- if (d10 != 0)
- {
- parentRow[10] = decimal.Round(d10, 2);//本月实际成本
- parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算
- parentRow[12] = decimal.Round(d12, 2);//本月完成预算
- parentRow[15] = decimal.Round(d15, 2);//累计完成成本
- parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算
- parentRow[17] = decimal.Round(d17, 2);//累计完成预算
- }
- else
- {
- parentRow[15] = decimal.Round(d15, 2);//累计完成成本
- parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算
- parentRow[17] = decimal.Round(d17, 2);//累计完成预算
- }
- table.Rows.Add(parentRow);
}
}
#endregion