A.OrderNo, A.CreatedOpsSeqNo, A.Createdby AS productionResourceID,
A.CreatedOpsItemNo, A.Createdby, A.CreatedDate,
B.OrderNo as consumeOrderNo, B.SeqNo as consumeSeqNo, B.Reportedby as consumptionResourceID,
B.ItemNo as consumeItemNo, B.StartDate as date1, B.ReportDate as date2, B.HistType,
A.RollType,
A.RollType,
CASE
CASE
WHEN A.RollType = '删除卷' THEN '删除卷'
WHEN A.RollType = '删除卷' THEN '删除卷'
WHEN B.StartFromRollNo IS NOT NULL 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 '未消耗'
WHEN ISNULL(A.status, '*') = '*' THEN '未消耗'
ELSE '待入库'
ELSE '待入库'
END AS finalStatus,
END AS finalStatus,
A.partNo,
P.PartDescription AS partDesc,
P.Spec AS spec,
A.partNo, P.PartDescription AS partDesc, P.Spec AS spec,
ISNULL(R.Good_Qty, 0) as goodQty,
ISNULL(R.Good_Qty, 0) as goodQty,
ISNULL(R.Surface_Loss_Qty, 0) as surfaceLossQty,
ISNULL(R.Surface_Loss_Qty, 0) as surfaceLossQty,
ISNULL(R.Poor_Performance_Qty, 0) as poorPerformanceQty,
ISNULL(R.Poor_Performance_Qty, 0) as poorPerformanceQty,
ISNULL(R.Defect_Qty, 0) as defectQty,
ISNULL(R.Defect_Qty, 0) as defectQty,
ISNULL(R.Total_Qty, 0) as totalQty,
ISNULL(R.Total_Qty, 0) as totalQty,
ROUND(ISNULL(R.YieldRate, 100), 2) as yieldRate
ROUND(ISNULL(100.0 * R.Good_Qty / NULLIF(R.Total_Qty, 0), 100), 2) as yieldRate
FROM SFDC_Rolls A WITH(NOLOCK)
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
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
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
<where>
<where>
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'
<iftest=" createdDate2 != null">
<iftest=" createdDate2 != null">
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
</if>
</if>
@ -431,15 +439,6 @@
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
</if>
</if>
<iftest=" consumeOrderNo != null and consumeOrderNo != ''">
AND B.OrderNo like '%'+#{consumeOrderNo}+'%'
</if>
<iftest=" consumeSeqNo != null and consumeSeqNo != ''">
AND CAST(B.SeqNo AS VARCHAR) like '%'+#{consumeSeqNo}+'%'
</if>
<iftest=" consumeItemNo != null and consumeItemNo != ''">
AND CAST(B.ItemNo AS VARCHAR) like '%'+#{consumeItemNo}+'%'
</if>
<iftest=" partNo != null and partNo != ''">
<iftest=" partNo != null and partNo != ''">
AND A.partNo like '%'+#{partNo}+'%'
AND A.partNo like '%'+#{partNo}+'%'
</if>
</if>
@ -459,16 +458,13 @@
AND A.Createdby like '%' + #{createdby} + '%'
AND A.Createdby like '%' + #{createdby} + '%'
</if>
</if>
<iftest=" productionResourceID != null and productionResourceID != ''">
<iftest=" productionResourceID != null and productionResourceID != ''">
AND S.S_ResourceID like '%' + #{productionResourceID} + '%'
</if>
<iftest=" consumptionResourceID != null and consumptionResourceID != ''">
AND B.S_ResourceID like '%' + #{consumptionResourceID} + '%'
AND A.Createdby like '%' + #{productionResourceID} + '%'
</if>
</if>
<iftest=" finalStatus != null and finalStatus != ''">
<iftest=" finalStatus != null and finalStatus != ''">
AND (CASE
AND (CASE
WHEN A.RollType = '删除卷' THEN '删除卷'
WHEN A.RollType = '删除卷' THEN '删除卷'
WHEN B.StartFromRollNo IS NOT NULL 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 '已消耗'
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
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
<where>
<where>
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'
<iftest=" createdDate2 != null">
<iftest=" createdDate2 != null">
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
</if>
</if>
@ -518,15 +539,6 @@
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
</if>
</if>
<iftest=" consumeOrderNo != null and consumeOrderNo != ''">
AND B.OrderNo like '%'+#{consumeOrderNo}+'%'
</if>
<iftest=" consumeSeqNo != null and consumeSeqNo != ''">
AND CAST(B.SeqNo AS VARCHAR) like '%'+#{consumeSeqNo}+'%'
</if>
<iftest=" consumeItemNo != null and consumeItemNo != ''">
AND CAST(B.ItemNo AS VARCHAR) like '%'+#{consumeItemNo}+'%'
</if>
<iftest=" partNo != null and partNo != ''">
<iftest=" partNo != null and partNo != ''">
AND A.partNo like '%'+#{partNo}+'%'
AND A.partNo like '%'+#{partNo}+'%'
</if>
</if>
@ -546,16 +558,13 @@
AND A.Createdby like '%' + #{createdby} + '%'
AND A.Createdby like '%' + #{createdby} + '%'
</if>
</if>
<iftest=" productionResourceID != null and productionResourceID != ''">
<iftest=" productionResourceID != null and productionResourceID != ''">
AND S.S_ResourceID like '%' + #{productionResourceID} + '%'
</if>
<iftest=" consumptionResourceID != null and consumptionResourceID != ''">
AND B.S_ResourceID like '%' + #{consumptionResourceID} + '%'
AND A.Createdby like '%' + #{productionResourceID} + '%'
</if>
</if>
<iftest=" finalStatus != null and finalStatus != ''">
<iftest=" finalStatus != null and finalStatus != ''">
AND (CASE
AND (CASE
WHEN A.RollType = '删除卷' THEN '删除卷'
WHEN A.RollType = '删除卷' THEN '删除卷'
WHEN B.StartFromRollNo IS NOT NULL 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 '已消耗'
ROW_NUMBER() OVER (PARTITION BY M.Site, M.StartFromRollNo ORDER BY M.ReportDate DESC) AS rn
FROM SFDC_MaterialHist M WITH(NOLOCK)
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})
<iftest=" consumeOrderNo != null and consumeOrderNo != ''">
AND M.OrderNo like '%'+#{consumeOrderNo}+'%'
</if>
<iftest=" consumeSeqNo != null and consumeSeqNo != ''">
AND CAST(M.SeqNo AS VARCHAR) like '%'+#{consumeSeqNo}+'%'
</if>
<iftest=" consumeItemNo != null and consumeItemNo != ''">
AND CAST(M.ItemNo AS VARCHAR) like '%'+#{consumeItemNo}+'%'
</if>
<iftest=" consumptionResourceID != null and consumptionResourceID != ''">
AND M.Reportedby like '%' + #{consumptionResourceID} + '%'
</if>
),
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
<where>
<where>
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'
<iftest=" createdDate2 != null">
<iftest=" createdDate2 != null">
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
</if>
</if>
@ -595,16 +629,6 @@
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
</if>
</if>
<iftest=" consumeOrderNo != null and consumeOrderNo != ''">
AND B.OrderNo like '%'+#{consumeOrderNo}+'%'
</if>
<iftest=" consumeSeqNo != null and consumeSeqNo != ''">
AND CAST(B.SeqNo AS VARCHAR) like '%'+#{consumeSeqNo}+'%'
</if>
<iftest=" consumeItemNo != null and consumeItemNo != ''">
AND CAST(B.ItemNo AS VARCHAR) like '%'+#{consumeItemNo}+'%'
</if>
<iftest=" partNo != null and partNo != ''">
<iftest=" partNo != null and partNo != ''">
AND A.partNo like '%'+#{partNo}+'%'
AND A.partNo like '%'+#{partNo}+'%'
</if>
</if>
@ -624,16 +648,13 @@
AND A.Createdby like '%' + #{createdby} + '%'
AND A.Createdby like '%' + #{createdby} + '%'
</if>
</if>
<iftest=" productionResourceID != null and productionResourceID != ''">
<iftest=" productionResourceID != null and productionResourceID != ''">
AND S.S_ResourceID like '%' + #{productionResourceID} + '%'
</if>
<iftest=" consumptionResourceID != null and consumptionResourceID != ''">
AND B.S_ResourceID like '%' + #{consumptionResourceID} + '%'
AND A.Createdby like '%' + #{productionResourceID} + '%'
</if>
</if>
<iftest=" finalStatus != null and finalStatus != ''">
<iftest=" finalStatus != null and finalStatus != ''">
AND (CASE
AND (CASE
WHEN A.RollType = '删除卷' THEN '删除卷'
WHEN A.RollType = '删除卷' THEN '删除卷'
WHEN B.StartFromRollNo IS NOT NULL 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 '已消耗'