diff --git a/SGGL/BLL/API/HJGL/APIPreWeldingDailyService.cs b/SGGL/BLL/API/HJGL/APIPreWeldingDailyService.cs
index e55bb2f6..1b3a42ba 100644
--- a/SGGL/BLL/API/HJGL/APIPreWeldingDailyService.cs
+++ b/SGGL/BLL/API/HJGL/APIPreWeldingDailyService.cs
@@ -461,9 +461,8 @@ namespace BLL
weldingDaily.UnitWorkId = joint.UnitWorkId;
weldingDaily.UnitId = weldTask?.UnitId;
weldingDaily.Tabler = Personid;
- weldingDaily.TableDate = Convert.ToDateTime(time).Date;
- db.HJGL_WeldingDaily.InsertOnSubmit(weldingDaily);
- db.SubmitChanges();
+ weldingDaily.TableDate = Convert.ToDateTime(time).Date;
+ BLL.WeldingDailyService.AddWeldingDaily(weldingDaily);
}
BLL.HJGL_PipelineComponentjointService.UpdateStateByWeldJointId(WeldJointId, (DateTime)weldingDaily.WeldingDate);//更改预制口实际时间和状态
PipelineService.UpdataDateByWeldJointId(WeldJointId);//更改安装口时间和状态
diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj
index 52e87e5f..bd3dc5dd 100644
--- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj
+++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj
@@ -17033,7 +17033,10 @@
-
+
+
+
+
diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx
index a26d1829..f83192d6 100644
--- a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx
+++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx
@@ -123,14 +123,14 @@
DataField="CompletedRate" FieldType="String" HeaderTextAlign="Center" TextAlign="Left"
Width="120px">
-
-
+ --%>
diff --git a/SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx b/SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx
index 0a7fc2c8..4f78227a 100644
--- a/SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx
+++ b/SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx
@@ -124,26 +124,39 @@
+ Layout="Fit" ShowHeader="true" RegionSplitWidth="20px" BodyPadding="1px" Height="215px" Title="进度质量"
+ TitleToolTip="进度质量" AutoScroll="true">
-
+ TextAlign="Center" Width="200px">
+ TextAlign="Center" Width="150px">
+ TextAlign="Center" Width="150px">
+
+
+
+
+
+
+
@@ -230,7 +243,7 @@
-
+
diff --git a/SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx.cs b/SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx.cs
index e96b1dee..8eede89f 100644
--- a/SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx.cs
+++ b/SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx.cs
@@ -403,7 +403,7 @@ WHERE UnitWorkId = @UnitWorkId";
List listStr = new List();
if (this.rbType.SelectedValue == "1")
{
- // 优化:使用 CTE 和聚合替代嵌套子查询
+ // 优化:使用 CTE 和聚合替代嵌套子查询,增加焊工数量、焊工日功效、焊接一次合格率
strSql = @"
WITH UnitWeldingDaily AS (
-- 获取项目的所有焊接日报记录
@@ -413,8 +413,10 @@ WITH UnitWeldingDaily AS (
WHERE wd.ProjectId = @ProjectId
),
TodayStats AS (
- -- 当日完成统计
- SELECT wd.UnitId, SUM(ISNULL(jot.Size, 0)) AS TodayFinishSize
+ -- 当日完成统计(含焊工数量)
+ SELECT wd.UnitId,
+ SUM(ISNULL(jot.Size, 0)) AS TodayFinishSize,
+ COUNT(DISTINCT CASE WHEN jot.CoverWelderId IS NOT NULL AND jot.CoverWelderId != '' THEN jot.CoverWelderId END) AS CurrentWelders
FROM dbo.HJGL_WeldingDaily wd
INNER JOIN dbo.HJGL_WeldJoint jot ON jot.WeldingDailyId = wd.WeldingDailyId
WHERE wd.ProjectId = @ProjectId AND wd.WeldingDate = @WeldingDate AND jot.WeldingDailyId IS NOT NULL
@@ -427,19 +429,41 @@ CumulativeStats AS (
INNER JOIN dbo.HJGL_WeldJoint jot ON jot.WeldingDailyId = wd.WeldingDailyId
WHERE wd.ProjectId = @ProjectId AND wd.WeldingDate <= @WeldingDate AND jot.WeldingDailyId IS NOT NULL
GROUP BY wd.UnitId
+),
+NDERates AS (
+ -- 焊接一次合格率统计(按施工单位)
+ SELECT wd.UnitId,
+ CAST(CASE WHEN COUNT(*) = 0 THEN 0
+ ELSE 100.0 * SUM(CASE WHEN nde.CheckResult != '2' THEN 1 ELSE 0 END) / COUNT(*)
+ END AS DECIMAL(8, 2)) AS WeldingFirstPassRate
+ FROM dbo.HJGL_Batch_NDEItem nde
+ INNER JOIN dbo.HJGL_Batch_BatchTrustItem bt ON nde.TrustBatchItemId = bt.TrustBatchItemId
+ INNER JOIN dbo.HJGL_Batch_PointBatchItem pb ON bt.PointBatchItemId = pb.PointBatchItemId
+ INNER JOIN dbo.HJGL_Batch_NDE n ON nde.NDEID = n.NDEID
+ INNER JOIN dbo.HJGL_WeldJoint wj ON bt.WeldJointId = wj.WeldJointId
+ INNER JOIN dbo.HJGL_WeldingDaily wd ON wj.WeldingDailyId = wd.WeldingDailyId
+ WHERE pb.PointDate IS NOT NULL AND pb.PointState = '1' AND bt.RepairRecordId IS NULL
+ AND n.ProjectId = @ProjectId
+ GROUP BY wd.UnitId
)
SELECT uwd.UnitName,
CAST(ISNULL(ts.TodayFinishSize, 0) AS DECIMAL(12, 3)) AS TodayFinishSize,
- CAST(ISNULL(cs.FinishSize, 0) AS DECIMAL(12, 3)) AS FinishSize
+ CAST(ISNULL(cs.FinishSize, 0) AS DECIMAL(12, 3)) AS FinishSize,
+ ISNULL(ts.CurrentWelders, 0) AS CurrentWelders,
+ CASE WHEN ISNULL(ts.CurrentWelders, 0) = 0 THEN 0
+ ELSE CAST(ISNULL(ts.TodayFinishSize, 0) * 1.0 / ts.CurrentWelders AS DECIMAL(12, 3))
+ END AS WelderEfficiency,
+ ISNULL(nr.WeldingFirstPassRate, 0) AS WeldingFirstPassRate
FROM UnitWeldingDaily uwd
LEFT JOIN TodayStats ts ON uwd.UnitId = ts.UnitId
-LEFT JOIN CumulativeStats cs ON uwd.UnitId = cs.UnitId";
+LEFT JOIN CumulativeStats cs ON uwd.UnitId = cs.UnitId
+LEFT JOIN NDERates nr ON uwd.UnitId = nr.UnitId";
listStr.Add(new SqlParameter("@ProjectId", (CurrUser != null) ? CurrUser.LoginProjectId : ""));
listStr.Add(new SqlParameter("@WeldingDate", this.txtWeldingDate.Text.Trim()));
}
else
{
- // 优化:使用 CTE 和聚合(时间段模式)
+ // 优化:使用 CTE 和聚合(时间段模式),增加焊工数量、焊工日功效、焊接一次合格率
strSql = @"
WITH UnitWeldingDaily AS (
SELECT DISTINCT wd.UnitId, u.UnitName
@@ -448,8 +472,10 @@ WITH UnitWeldingDaily AS (
WHERE wd.ProjectId = @ProjectId
),
PeriodStats AS (
- -- 时间段完成统计
- SELECT wd.UnitId, SUM(ISNULL(jot.Size, 0)) AS TodayFinishSize
+ -- 时间段完成统计(含焊工数量)
+ SELECT wd.UnitId,
+ SUM(ISNULL(jot.Size, 0)) AS TodayFinishSize,
+ COUNT(DISTINCT CASE WHEN jot.CoverWelderId IS NOT NULL AND jot.CoverWelderId != '' THEN jot.CoverWelderId END) AS CurrentWelders
FROM dbo.HJGL_WeldingDaily wd
INNER JOIN dbo.HJGL_WeldJoint jot ON jot.WeldingDailyId = wd.WeldingDailyId
WHERE wd.ProjectId = @ProjectId AND wd.WeldingDate >= @WeldingStartDate AND wd.WeldingDate <= @WeldingEndDate AND jot.WeldingDailyId IS NOT NULL
@@ -462,13 +488,35 @@ CumulativeStats AS (
INNER JOIN dbo.HJGL_WeldJoint jot ON jot.WeldingDailyId = wd.WeldingDailyId
WHERE wd.ProjectId = @ProjectId AND wd.WeldingDate <= @WeldingEndDate AND jot.WeldingDailyId IS NOT NULL
GROUP BY wd.UnitId
+),
+NDERates AS (
+ -- 焊接一次合格率统计(按施工单位)
+ SELECT wd.UnitId,
+ CAST(CASE WHEN COUNT(*) = 0 THEN 0
+ ELSE 100.0 * SUM(CASE WHEN nde.CheckResult != '2' THEN 1 ELSE 0 END) / COUNT(*)
+ END AS DECIMAL(8, 2)) AS WeldingFirstPassRate
+ FROM dbo.HJGL_Batch_NDEItem nde
+ INNER JOIN dbo.HJGL_Batch_BatchTrustItem bt ON nde.TrustBatchItemId = bt.TrustBatchItemId
+ INNER JOIN dbo.HJGL_Batch_PointBatchItem pb ON bt.PointBatchItemId = pb.PointBatchItemId
+ INNER JOIN dbo.HJGL_Batch_NDE n ON nde.NDEID = n.NDEID
+ INNER JOIN dbo.HJGL_WeldJoint wj ON bt.WeldJointId = wj.WeldJointId
+ INNER JOIN dbo.HJGL_WeldingDaily wd ON wj.WeldingDailyId = wd.WeldingDailyId
+ WHERE pb.PointDate IS NOT NULL AND pb.PointState = '1' AND bt.RepairRecordId IS NULL
+ AND n.ProjectId = @ProjectId
+ GROUP BY wd.UnitId
)
SELECT uwd.UnitName,
CAST(ISNULL(ps.TodayFinishSize, 0) AS DECIMAL(12, 3)) AS TodayFinishSize,
- CAST(ISNULL(cs.FinishSize, 0) AS DECIMAL(12, 3)) AS FinishSize
+ CAST(ISNULL(cs.FinishSize, 0) AS DECIMAL(12, 3)) AS FinishSize,
+ ISNULL(ps.CurrentWelders, 0) AS CurrentWelders,
+ CASE WHEN ISNULL(ps.CurrentWelders, 0) = 0 THEN 0
+ ELSE CAST(ISNULL(ps.TodayFinishSize, 0) * 1.0 / ps.CurrentWelders AS DECIMAL(12, 3))
+ END AS WelderEfficiency,
+ ISNULL(nr.WeldingFirstPassRate, 0) AS WeldingFirstPassRate
FROM UnitWeldingDaily uwd
LEFT JOIN PeriodStats ps ON uwd.UnitId = ps.UnitId
-LEFT JOIN CumulativeStats cs ON uwd.UnitId = cs.UnitId";
+LEFT JOIN CumulativeStats cs ON uwd.UnitId = cs.UnitId
+LEFT JOIN NDERates nr ON uwd.UnitId = nr.UnitId";
listStr.Add(new SqlParameter("@ProjectId", (CurrUser != null) ? CurrUser.LoginProjectId : ""));
listStr.Add(new SqlParameter("@WeldingStartDate", this.txtWeldingStartDate.Text.Trim()));
listStr.Add(new SqlParameter("@WeldingEndDate", this.txtWeldingEndDate.Text.Trim()));
@@ -646,6 +694,7 @@ LEFT JOIN CumulativeStats cs ON uwd.UnitId = cs.UnitId";
this.Grid1.Columns[1].HeaderText = "当日完成达因数";
this.Grid2.Columns[2].HeaderText = "当日完成达因数";
this.Grid3.Columns[1].HeaderText = "当日完成达因数";
+ this.Grid3.Columns[3].HeaderText = "当日焊工数量";
this.BtnAnalyse.Hidden = true;
BindGrid1();
BindGrid2(this.tvControlItem.SelectedNodeID);
@@ -659,6 +708,7 @@ LEFT JOIN CumulativeStats cs ON uwd.UnitId = cs.UnitId";
this.Grid1.Columns[1].HeaderText = "当期完成达因数";
this.Grid2.Columns[2].HeaderText = "当期完成达因数";
this.Grid3.Columns[1].HeaderText = "当期完成达因数";
+ this.Grid3.Columns[3].HeaderText = "当期焊工数量";
this.BtnAnalyse.Hidden = false;
}
}