Browse Source

2026-03-26

订单产出标签统计增加“生产机台” “消耗机台”
master
fengyuan_yang 3 weeks ago
parent
commit
adaad811c1
  1. 18
      src/main/java/com/gaotao/modules/rollNoReview/data/SFDCRollsOutData.java
  2. 160
      src/main/resources/mapper/shopOrder/ProductionReportMapper.xml

18
src/main/java/com/gaotao/modules/rollNoReview/data/SFDCRollsOutData.java

@ -75,6 +75,24 @@ public class SFDCRollsOutData {
private BigDecimal yieldRate;
private String userName;
private String buNo;
private String productionResourceID;
private String consumptionResourceID;
public String getProductionResourceID() {
return productionResourceID;
}
public void setProductionResourceID(String productionResourceID) {
this.productionResourceID = productionResourceID;
}
public String getConsumptionResourceID() {
return consumptionResourceID;
}
public void setConsumptionResourceID(String consumptionResourceID) {
this.consumptionResourceID = consumptionResourceID;
}
public String getBuNo() {
return buNo;

160
src/main/resources/mapper/shopOrder/ProductionReportMapper.xml

@ -368,55 +368,53 @@
<select id="searchSfdcRollsReport" resultType="com.gaotao.modules.rollNoReview.data.SFDCRollsOutData">
SELECT
A.site,
a.bu_no,
A.bu_no,
A.RollNo,
A.RollQty,
A.parent_roll_no,
A.parent_roll_type,
A.OrderNo,
A.CreatedOpsSeqNo,
S.S_ResourceID AS productionResourceID, -- 生产机台
A.CreatedOpsItemNo,
A.Createdby,
A.CreatedDate,
B.OrderNo as consumeOrderNo,
B.SeqNo as consumeSeqNo,
B.S_ResourceID as consumptionResourceID, -- 消耗机台
B.ItemNo as consumeItemNo,
B.StartDate as date1,
B.ReportDate as date2,
B.Reportedby,
RollType,
(CASE WHEN RollType ='删除卷' THEN '删除卷'
WHEN RollType <![CDATA[<>]]> '删除卷' AND B.RollNo IS NOT NULL THEN '已消耗'
WHEN RollType <![CDATA[<>]]> '删除卷' AND ISNULL(A.status, '*') = '*' AND B.RollNo IS NULL THEN '未消耗'
WHEN RollType <![CDATA[<>]]> '删除卷' AND ISNULL(A.status, '*') != '*' THEN '待入库' ELSE ''
END) AS finalStatus,
B.HistType,
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(yieldRate, 100), 2) as yieldRate
FROM SFDC_Rolls A
LEFT JOIN (SELECT OrderNo,SeqNo,ItemNo,StartDate, ReportDate,Reportedby,HistType,SITE,StartFromRollNo,RollNo ,ROW_NUMBER() OVER (PARTITION BY SITE, OrderNo, StartFromRollNo ORDER BY ReportDate DESC, SeqNo ASC) AS rn FROM SFDC_MaterialHist) B ON A.Site = B.SITE AND A.OrderNo = B.OrderNo AND A.RollNo = B.StartFromRollNo AND B.rn = 1
left join part p on a.site = p.site and a.partNo = p.partNo
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
GROUP BY Site,order_no,roll_no,seq_no) R on r.Site = a.site and r.roll_no = a.RollNo
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 ISNULL(A.status, '*') = '*' THEN '未消耗'
ELSE '待入库'
END AS finalStatus,
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
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
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>
ISNULL(A.VirtualNewRollFlag,'Y') = 'N'
AND a.site in (select site from AccessSite where userID = #{userName})
@ -462,6 +460,21 @@
<if test=" createdby != null and createdby != ''">
AND A.Createdby like '%' + #{createdby} + '%'
</if>
<if test=" productionResourceID != null and productionResourceID != ''">
AND S.S_ResourceID like '%' + #{productionResourceID} + '%'
</if>
<if test=" consumptionResourceID != null and consumptionResourceID != ''">
AND B.S_ResourceID like '%' + #{consumptionResourceID} + '%'
</if>
<if test=" 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 ISNULL(A.status, '*') = '*' THEN '未消耗'
ELSE '待入库'
END) = #{finalStatus}
</if>
</where>
ORDER BY A.CreatedDate DESC
<if test="page != null and limit != null">
@ -473,27 +486,22 @@
<select id="searchSfdcRollsReportSummary" resultType="com.gaotao.modules.rollNoReview.data.SFDCRollsOutData">
SELECT
ISNULL(SUM(A.RollQty), 0) AS rollQty,
ISNULL(SUM(ISNULL(R.good_qty, 0)), 0) AS goodQty,
ISNULL(SUM(ISNULL(R.surface_loss_qty, 0)), 0) AS surfaceLossQty,
ISNULL(SUM(ISNULL(R.poor_performance_qty, 0)), 0) AS poorPerformanceQty,
ISNULL(SUM(ISNULL(R.defect_qty, 0)), 0) AS defectQty,
ISNULL(SUM(ISNULL(R.total_qty, 0)), 0) AS totalQty
FROM SFDC_Rolls A
LEFT JOIN (SELECT OrderNo,SeqNo,ItemNo,StartDate, ReportDate,Reportedby,HistType,SITE,StartFromRollNo,RollNo ,ROW_NUMBER() OVER (PARTITION BY SITE, OrderNo, StartFromRollNo ORDER BY ReportDate DESC, SeqNo ASC) AS rn FROM SFDC_MaterialHist) B ON A.Site = B.SITE AND A.OrderNo = B.OrderNo AND A.RollNo = B.StartFromRollNo AND B.rn = 1
left join part p on a.site = p.site and a.partNo = p.partNo
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
from ProductionReport
GROUP BY Site,order_no,roll_no,seq_no) R on r.Site = a.site and r.roll_no = a.RollNo
ISNULL(SUM(ISNULL(R.Good_Qty, 0)), 0) AS goodQty,
ISNULL(SUM(ISNULL(R.Surface_Loss_Qty, 0)), 0) AS surfaceLossQty,
ISNULL(SUM(ISNULL(R.Poor_Performance_Qty, 0)), 0) AS poorPerformanceQty,
ISNULL(SUM(ISNULL(R.Defect_Qty, 0)), 0) AS defectQty,
ISNULL(SUM(ISNULL(R.Total_Qty, 0)), 0) AS totalQty
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
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>
ISNULL(A.VirtualNewRollFlag,'Y') = 'N'
AND a.site in (select site from AccessSite where userID = #{userName})
@ -539,15 +547,38 @@
<if test=" createdby != null and createdby != ''">
AND A.Createdby like '%' + #{createdby} + '%'
</if>
<if test=" productionResourceID != null and productionResourceID != ''">
AND S.S_ResourceID like '%' + #{productionResourceID} + '%'
</if>
<if test=" consumptionResourceID != null and consumptionResourceID != ''">
AND B.S_ResourceID like '%' + #{consumptionResourceID} + '%'
</if>
<if test=" 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 ISNULL(A.status, '*') = '*' THEN '未消耗'
ELSE '待入库'
END) = #{finalStatus}
</if>
</where>
</select>
<!-- 查询订单产出标签总数 -->
<select id="searchSfdcRollsReportCount" resultType="int">
SELECT COUNT(*)
FROM SFDC_Rolls A
LEFT JOIN SFDC_MaterialHist B ON A.Site = B.SITE AND A.OrderNo = B.OrderNo AND A.RollNo = B.StartFromRollNo
LEFT JOIN part p ON A.site = p.site AND A.partNo = p.partNo
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
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>
ISNULL(A.VirtualNewRollFlag,'Y') = 'N'
AND a.site in (select site from AccessSite where userID = #{userName})
@ -594,6 +625,21 @@
<if test=" createdby != null and createdby != ''">
AND A.Createdby like '%' + #{createdby} + '%'
</if>
<if test=" productionResourceID != null and productionResourceID != ''">
AND S.S_ResourceID like '%' + #{productionResourceID} + '%'
</if>
<if test=" consumptionResourceID != null and consumptionResourceID != ''">
AND B.S_ResourceID like '%' + #{consumptionResourceID} + '%'
</if>
<if test=" 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 ISNULL(A.status, '*') = '*' THEN '未消耗'
ELSE '待入库'
END) = #{finalStatus}
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save