From a3fe71fe036c50038d1769b1ee4ac1ec16df7f50 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Thu, 23 Apr 2026 16:38:12 +0800 Subject: [PATCH] =?UTF-8?q?2026-04-23=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shopOrder/ProductionReportMapper.xml | 231 ++++++++++-------- 1 file changed, 126 insertions(+), 105 deletions(-) diff --git a/src/main/resources/mapper/shopOrder/ProductionReportMapper.xml b/src/main/resources/mapper/shopOrder/ProductionReportMapper.xml index 4e05b8e..ced9e2a 100644 --- a/src/main/resources/mapper/shopOrder/ProductionReportMapper.xml +++ b/src/main/resources/mapper/shopOrder/ProductionReportMapper.xml @@ -364,58 +364,66 @@ T.Orderno - SELECT COUNT(*) - FROM SFDC_Rolls A WITH(NOLOCK) - INNER JOIN SOScheduledRouting S WITH(NOLOCK) ON A.Site = S.Site AND A.CreatedOpsSeqNo = S.SeqNo - LEFT JOIN part P WITH(NOLOCK) ON A.Site = P.Site AND A.PartNo = P.PartNo - OUTER APPLY ( SELECT TOP (1) M.SITE, M.OrderNo, M.SeqNo, M.ItemNo, StartDate, ReportDate, Reportedby, HistType, StartFromRollNo, RollNo, sos.S_ResourceID + WITH LatestMaterial AS ( + SELECT + M.Site, M.StartFromRollNo, M.OrderNo, M.SeqNo, M.ItemNo, + M.StartDate, M.ReportDate, M.Reportedby, M.HistType, M.RollNo, + ROW_NUMBER() OVER (PARTITION BY M.Site, M.StartFromRollNo ORDER BY M.ReportDate DESC) AS rn FROM SFDC_MaterialHist M WITH(NOLOCK) - INNER JOIN SOScheduledRouting SOS WITH(NOLOCK) ON M.Site = SOS.Site AND M.SeqNo = SOS.SeqNo - WHERE M.Site = A.Site AND M.OrderNo = A.OrderNo AND M.StartFromRollNo = A.RollNo AND M.HistType = '发料' - ORDER BY M.ReportDate DESC) B - LEFT JOIN ( SELECT Site, Order_No, Roll_No, Seq_No, SUM(Good_Qty) AS Good_Qty, SUM(Surface_Loss_Qty) AS Surface_Loss_Qty, SUM(Poor_Performance_Qty) AS Poor_Performance_Qty, - SUM(Defect_Qty) AS Defect_Qty, SUM(Total_Qty) AS Total_Qty, (CASE WHEN SUM(Total_Qty) = 0 THEN NULL ELSE 100.0 * SUM(Good_Qty) / SUM(Total_Qty) END ) AS YieldRate - FROM ProductionReport WITH(NOLOCK) GROUP BY Site, Order_No, Roll_No, Seq_No) R ON R.Site = A.Site AND R.Roll_No = A.RollNo + WHERE M.site in (select site from AccessSite where userID = #{userName}) + + AND M.OrderNo like '%'+#{consumeOrderNo}+'%' + + + AND CAST(M.SeqNo AS VARCHAR) like '%'+#{consumeSeqNo}+'%' + + + AND CAST(M.ItemNo AS VARCHAR) like '%'+#{consumeItemNo}+'%' + + + AND M.Reportedby like '%' + #{consumptionResourceID} + '%' + + ), + AggregatedReport AS ( + SELECT + Site, Roll_No, Seq_No, + SUM(Good_Qty) AS Good_Qty, + SUM(Surface_Loss_Qty) AS Surface_Loss_Qty, + SUM(Poor_Performance_Qty) AS Poor_Performance_Qty, + SUM(Defect_Qty) AS Defect_Qty, + SUM(Total_Qty) AS Total_Qty + FROM ProductionReport WITH(NOLOCK) + GROUP BY Site, Roll_No, Seq_No + ) + SELECT + COUNT(1) + FROM SFDC_Rolls A WITH(NOLOCK) + INNER JOIN part P WITH(NOLOCK) ON A.Site = P.Site AND A.PartNo = P.PartNo + LEFT JOIN LatestMaterial B ON A.Site = B.Site AND A.RollNo = B.StartFromRollNo AND B.rn = 1 + LEFT JOIN AggregatedReport R ON A.Site = R.Site AND A.RollNo = R.Roll_No AND A.CreatedOpsSeqNo = R.Seq_No - ISNULL(A.VirtualNewRollFlag,'Y') = 'N' - AND a.site in (select site from AccessSite where userID = #{userName}) + A.site in (select site from AccessSite where userID = #{userName}) + AND ISNULL(A.VirtualNewRollFlag, 'Y') = 'N' AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2} @@ -595,16 +629,6 @@ AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%' - - - AND B.OrderNo like '%'+#{consumeOrderNo}+'%' - - - AND CAST(B.SeqNo AS VARCHAR) like '%'+#{consumeSeqNo}+'%' - - - AND CAST(B.ItemNo AS VARCHAR) like '%'+#{consumeItemNo}+'%' - AND A.partNo like '%'+#{partNo}+'%' @@ -624,16 +648,13 @@ AND A.Createdby like '%' + #{createdby} + '%' - AND S.S_ResourceID like '%' + #{productionResourceID} + '%' - - - AND B.S_ResourceID like '%' + #{consumptionResourceID} + '%' + AND A.Createdby like '%' + #{productionResourceID} + '%' AND (CASE WHEN A.RollType = '删除卷' THEN '删除卷' WHEN B.StartFromRollNo IS NOT NULL THEN '已消耗' - WHEN EXISTS ( SELECT 1 FROM SFDC_Genealogy G WHERE G.Site = A.Site AND G.OrderNo = A.OrderNo AND G.OriRollNo = A.RollNo AND RelationType ='合并卷' ) THEN '已消耗' + WHEN EXISTS ( SELECT 1 FROM SFDC_Genealogy G WHERE G.Site = A.Site AND G.OrderNo = A.OrderNo AND G.OriRollNo = A.RollNo AND RelationType = '合并卷' ) THEN '已消耗' WHEN ISNULL(A.status, '*') = '*' THEN '未消耗' ELSE '待入库' END) = #{finalStatus}