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,
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 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.Surface_Loss_Qty, 0) as surfaceLossQty,
ISNULL(R.Poor_Performance_Qty, 0) as poorPerformanceQty,
ISNULL(R.Defect_Qty, 0) as defectQty,
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)
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>
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">
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
</if>
@ -431,15 +439,6 @@
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
</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 != ''">
AND A.partNo like '%'+#{partNo}+'%'
</if>
@ -459,16 +458,13 @@
AND A.Createdby like '%' + #{createdby} + '%'
</if>
<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>
<iftest=" finalStatus != null and finalStatus != ''">
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 '已消耗'
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>
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">
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
</if>
@ -518,15 +539,6 @@
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
</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 != ''">
AND A.partNo like '%'+#{partNo}+'%'
</if>
@ -546,16 +558,13 @@
AND A.Createdby like '%' + #{createdby} + '%'
</if>
<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>
<iftest=" finalStatus != null and finalStatus != ''">
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 '已消耗'
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})
<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>
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">
AND CONVERT(varchar(10), a.CreatedDate, 120) >= #{createdDate2}
</if>
@ -595,16 +629,6 @@
<iftest=" createdOpsItemNo != null and createdOpsItemNo != '' and createdOpsItemNo != 0">
AND CAST(A.CreatedOpsItemNo AS VARCHAR) like '%'+CAST(#{createdOpsItemNo} AS VARCHAR)+'%'
</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 != ''">
AND A.partNo like '%'+#{partNo}+'%'
</if>
@ -624,16 +648,13 @@
AND A.Createdby like '%' + #{createdby} + '%'
</if>
<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>
<iftest=" finalStatus != null and finalStatus != ''">
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 '已消耗'