From 2535bcaee5edc0168693efb86e1c3ea0bcf04426 Mon Sep 17 00:00:00 2001 From: fei550 <1420031550@qq.com> Date: Mon, 13 Apr 2026 10:01:04 +0800 Subject: [PATCH 1/2] 1 --- SGGL/BLL/API/HJGL/APIPreWeldingDailyService.cs | 5 ++--- SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) 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 5971df32..d98a37e8 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -17019,7 +17019,7 @@ - + From 467b936ae565c88040affb2aaa6d99e2bb624518 Mon Sep 17 00:00:00 2001 From: fei550 <1420031550@qq.com> Date: Mon, 13 Apr 2026 21:20:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(HJGL):=20=E7=84=8A=E6=8E=A5=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E7=BB=9F=E8=AE=A1=E6=96=BD=E5=B7=A5=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E7=BB=9F=E8=AE=A1=E5=A2=9E=E5=8A=A0=E7=84=8A?= =?UTF-8?q?=E5=B7=A5=E6=95=B0=E9=87=8F=E3=80=81=E7=84=8A=E5=B7=A5=E6=97=A5?= =?UTF-8?q?=E5=8A=9F=E6=95=88=E3=80=81=E7=84=8A=E6=8E=A5=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E7=8E=87=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PreDesign/ProductionSchedulingPlan.aspx | 4 +- SGGL/FineUIPro.Web/common/mainMenu_HJGL3.aspx | 27 +++++-- .../common/mainMenu_HJGL3.aspx.cs | 70 ++++++++++++++++--- 3 files changed, 82 insertions(+), 19 deletions(-) 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; } }