姜永辉 пре 10 месеци
родитељ
комит
c687c262a2
2 измењених фајлова са 296 додато и 118 уклоњено
  1. 168 54
      wwwroot/mes/rpt/rpt206/rpt.ashx
  2. 128 64
      wwwroot/mes/rpt/rpt216/rpt.ashx

+ 168 - 54
wwwroot/mes/rpt/rpt206/rpt.ashx

@@ -32,9 +32,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																	DISTINCT MDF.DEFECTCODE AS DC,
                                                                  'CASE WHEN gd.GOODSNAME IS NULL 
                                   THEN
-	                                TO_CHAR( ( COUNT( DISTINCT  CASE WHEN   DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) / COUNT( DISTINCT PD.BARCODE ) * 100 ), ''fm99990.00'' ) || ''%''
+	                                TO_CHAR( ( COUNT( DISTINCT  CASE WHEN   DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(PD.productiondataid||pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) / COUNT( DISTINCT PD.productiondataid) * 100 ), ''fm99990.00'' ) || ''%''
 	                              ELSE
-                                   TO_CHAR( COUNT( DISTINCT  CASE WHEN DF.DEFECTCODE IS NOT NULL  AND   DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) ) END
+                                   TO_CHAR( COUNT( DISTINCT  CASE WHEN DF.DEFECTCODE IS NOT NULL  AND   DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(PD.productiondataid||pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) ) END
 ' AS DEFECTCODE,
 	                                                                                            MDF.DEFECTNAME  	
 															FROM TP_MST_DEFECT MDF
@@ -47,7 +47,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				}
 					string sumdefect = "";
               DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT MDF.DEFECTCODE AS DC,
-                                                       'TO_CHAR( COUNT( DISTINCT  CASE WHEN   DF.DEFECTCODE IS NOT NULL  AND  DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) )' AS DEFECTCODE,
+                                                       'TO_CHAR( COUNT( DISTINCT  CASE WHEN   DF.DEFECTCODE IS NOT NULL  AND  DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(PD.productiondataid||pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) )' AS DEFECTCODE,
 	                                                   MDF.DEFECTNAME 
 												FROM TP_MST_DEFECT MDF
 															where DEFECTTYPEID=5 or  MDF.DEFECTCODE='20' ORDER BY  MDF.DEFECTCODE");
@@ -64,60 +64,174 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 	                                TO_CHAR(GD.GOODSSPECIFICATION) AS 产品规格,
 	                                TO_CHAR(MD.DICTIONARYVALUE) AS 釉色,
 	                                TO_CHAR(LG.LOGONAME) AS 商标,
-	                                TO_CHAR(COUNT(DISTINCT PD.BARCODE)) 出窑量,
-                                TO_CHAR(COUNT( DISTINCT CASE WHEN MDF.DEFECTCODE IS NOT NULL AND DF.BARCODE IS NOT NULL  THEN  to_char(DF.BARCODE||DF.DEFECTID )ELSE NULL END ))缺陷量,
-	                                TO_CHAR( (COUNT( DISTINCT CASE WHEN MDF.DEFECTCODE IS NOT NULL AND DF.BARCODE IS NOT NULL  THEN DF.BARCODE ELSE NULL END )/COUNT(DISTINCT PD.BARCODE) * 100), 'fm99990.00') || '%' 缺陷率,
+	                                TO_CHAR(COUNT(DISTINCT PD.productiondataid)) 出窑量,
+                                TO_CHAR(COUNT( DISTINCT CASE WHEN   df.DEFECTCODE IN ( '47','48','49','50','51','52','53','54','55','56','20','57')  THEN  to_char(PD.productiondataid||DF.BARCODE||DF.DEFECTID )ELSE NULL END ))缺陷量,
+	                                TO_CHAR( (COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '47','48','49','50','51','52','53','54','55','56','20','57')   THEN to_char(PD.productiondataid||DF.BARCODE||DF.DEFECTID ) ELSE NULL END )/COUNT(DISTINCT PD.productiondataid) * 100), 'fm99990.00') || '%' 缺陷率,
                                     {DEFECT}
-                                FROM
-	                            TP_PM_PRODUCTIONDATA PD
-								LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
+                               FROM 
+	                            (SELECT DISTINCT pd.barcode
+                                       ,pd.reworkprocedureid
+                                       ,pd.groutinglinecode
+                                        ,pd.goodsid
+                                       ,pd.goodscode
+                                       ,pd.goodsname
+                                       ,pd.groutinguserid
+                                       ,pd.groutingusercode
+                                       ,pd.groutingdailydetailid
+                                       ,pd.procedureid AS procedureid
+                                       ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+                                       ,nvl(pd61.productiondataid, pd.productiondataid) productiondataid
+                                       ,pd.createtime
+                                       ,pd.logoid
+                          FROM (SELECT *
+                                  FROM (SELECT pd28.groutinglinecode
+                                              ,pd28.reworkprocedureid
+                                              ,pd28.barcode
+                                              ,pd28.createtime
+                                              ,pd28.goodsid
+                                              ,pd28.goodsname
+                                              ,pd28.valueflag
+                                              ,pd28.goodsleveltypeid
+                                              ,pd28.goodscode
+                                              ,pd28.logoid
+                                              ,pd28.groutinguserid
+                                              ,pd28.groutingusercode
+                                              ,pd28.kilncarbatchno
+                                              ,pd28.productiondataid
+                                              ,pd28.groutingdailydetailid
+                                              ,pd24.procedureid
+                                              ,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+                                          FROM tp_pm_productiondata pd28 -- 重烧质量登记
+                                         INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+                                            ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+                                         WHERE pd28.procedureid = 16   -- 28
+                                           AND pd28.valueflag = 1
+                                           AND pd24.valueflag = 1
+                                           AND pd24.procedureid IN (  42,10, 37, 41) --  重烧质量登记里包含 重烧修补24 / 冷补42     
+                                            AND pd28.CREATETIME >= @DATEBEGIN@
+                                            AND pd28.CREATETIME < @DATEEND@    
+                                           --AND pd28.createtime >= to_date('2025-04-17', 'yyyy-MM-DD')
+                                          -- AND pd28.createtime < to_date('2025-04-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
+                                           AND pd24.productiondataid < pd28.productiondataid) t
+                                 WHERE rownums = 1
+                                   AND t.procedureid  in ( 10, 37, 41)) pd
+                         LEFT JOIN tp_mst_goods gd
+                            ON gd.goodsid = pd.goodsid
+                          LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+                            ON pd61.procedureid = 60
+                           AND pd61.valueflag = 1
+                           AND pd61.groutingdailydetailid = pd.groutingdailydetailid
+                           AND pd61.kilncarbatchno = pd.kilncarbatchno
+                           AND pd61.productiondataid > pd.productiondataid
+                              -- 取最近的数据
+                           AND NOT EXISTS
+                         (SELECT 1
+                                  FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+                                 WHERE pd28c.procedureid = 16   -- 28
+                                   AND pd28c.valueflag = 1
+                                   AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
+                                   AND pd28c.kilncarbatchno = pd.kilncarbatchno
+                                   AND pd28c.productiondataid > pd.productiondataid
+                                   AND pd28c.productiondataid < pd61.productiondataid))  PD
+								LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.groutingdailydetailid=PD.groutingdailydetailid
                                 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
                                 LEFT JOIN TP_MST_DataDictionary MD ON GD.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID  
-                                LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.PROCEDUREID NOT IN(61,28) AND DF.VALUEFLAG=1
-                                LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTID IN (
-													SELECT  DISTINCT 		 MDF.DEFECTID
-															FROM TP_MST_DEFECT MDF
-															where DEFECTTYPEID=5 or  MDF.DEFECTCODE='20' )
-                                WHERE
-	                                PD.PROCEDUREID IN ( 16) 
-	                                AND PD.CREATETIME >= @DATEBEGIN@
-                                    AND PD.CREATETIME < @DATEEND@ 
-	                                AND PD.VALUEFLAG = 1
-                                GROUP BY
-												Grouping sets ( (GD.GOODSCODE ,
-	                                                    GD.GOODSNAME,
-	                                                    GD.GOODSSPECIFICATION,
-	                                                    MD.DICTIONARYVALUE,
-	                                                    LG.LOGONAME ), ( ) )
-											union ALL 	
-													SELECT 
-														1,
-														''  产品编码,
-														''  产品名称,
-														''  产品规格,
-														''  釉色,
-														''  商标,
-														'' 出窑量,
-														'' 缺陷量,
-														'' 缺陷率,
-														{DEFECTSUM}                              
-    
-												 FROM
-												     TP_PM_PRODUCTIONDATA PD
-												 LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
-												 LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
-												 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
-												 LEFT JOIN TP_MST_DataDictionary MD ON GD.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-												 LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID  
-												 LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE   AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(61,28)
-												 LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTCODE = MDF.DEFECTCODE AND MDF.DEFECTCODE IN ( '47','48','49','50','51','52','53','54','55','56','20','57')
-												 WHERE
-												     PD.PROCEDUREID IN ( 16) 
-												      AND PD.CREATETIME >= @DATEBEGIN@
-												     AND PD.CREATETIME < @DATEEND@  
-												     AND PD.VALUEFLAG = 1
-																		) ORDER BY GID".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);
+                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID" ;
+                sqlStr += @" LEFT JOIN TP_PM_DEFECT DF ON PD.productiondataid = DF.productiondataid  	AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN (61, 28) ";
+                sqlStr += @" LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTID IN (
+                          SELECT  DISTINCT     MDF.DEFECTID
+                              FROM TP_MST_DEFECT MDF
+                              where DEFECTTYPEID=5 or  MDF.DEFECTCODE='20' ) ";
+                sqlStr += @"  GROUP BY Grouping sets ( (GD.GOODSCODE ,
+                                                        GD.GOODSNAME,
+                                                        GD.GOODSSPECIFICATION,
+                                                        MD.DICTIONARYVALUE,
+                                                        LG.LOGONAME ), ( ) ) 
+                union ALL
+                        SELECT
+                            1,
+                            ''  产品编码,
+                            ''  产品名称,
+                            ''  产品规格,
+                            ''  釉色,
+                            ''  商标,
+                            '' 出窑量,
+                            '' 缺陷量,
+                            '' 缺陷率,
+                            {DEFECTSUM}  
+                        FROM 
+	                            (SELECT DISTINCT pd.barcode
+                                       ,pd.reworkprocedureid
+                                       ,pd.groutinglinecode
+                                        ,pd.goodsid
+                                       ,pd.goodscode
+                                       ,pd.goodsname
+                                       ,pd.groutinguserid
+                                       ,pd.groutingusercode
+                                       ,pd.groutingdailydetailid
+                                       ,pd.procedureid AS procedureid
+                                       ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+                                       ,nvl(pd61.productiondataid, pd.productiondataid) productiondataid
+                                       ,pd.createtime
+                                       ,pd.logoid
+                          FROM (SELECT *
+                                  FROM (SELECT pd28.groutinglinecode
+                                              ,pd28.reworkprocedureid
+                                              ,pd28.barcode
+                                              ,pd28.createtime
+                                              ,pd28.goodsid
+                                              ,pd28.goodsname
+                                              ,pd28.valueflag
+                                              ,pd28.goodsleveltypeid
+                                              ,pd28.goodscode
+                                              ,pd28.logoid
+                                              ,pd28.groutinguserid
+                                              ,pd28.groutingusercode
+                                              ,pd28.kilncarbatchno
+                                              ,pd28.productiondataid
+                                              ,pd28.groutingdailydetailid
+                                              ,pd24.procedureid
+                                              ,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+                                          FROM tp_pm_productiondata pd28 -- 重烧质量登记
+                                         INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+                                            ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+                                         WHERE pd28.procedureid = 16    
+                                           AND pd28.valueflag = 1
+                                           AND pd24.valueflag = 1
+                                           AND pd24.procedureid IN (  42,10, 37, 41) --  重烧质量登记里包含 重烧修补24 / 冷补42     
+                                            AND pd28.CREATETIME >= @DATEBEGIN@
+                                            AND pd28.CREATETIME < @DATEEND@    
+                                           --AND pd28.createtime >= to_date('2025-04-17', 'yyyy-MM-DD')
+                                          -- AND pd28.createtime < to_date('2025-04-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
+                                           AND pd24.productiondataid < pd28.productiondataid) t
+                                 WHERE rownums = 1
+                                   AND t.procedureid  in ( 10, 37, 41)) pd
+                          LEFT JOIN tp_mst_goods gd
+                            ON gd.goodsid = pd.goodsid
+                          LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+                            ON pd61.procedureid = 60
+                           AND pd61.valueflag = 1
+                           AND pd61.groutingdailydetailid = pd.groutingdailydetailid
+                           AND pd61.kilncarbatchno = pd.kilncarbatchno
+                           AND pd61.productiondataid > pd.productiondataid
+                              -- 取最近的数据
+                           AND NOT EXISTS
+                         (SELECT 1
+                                  FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+                                 WHERE pd28c.procedureid = 16   -- 28
+                                   AND pd28c.valueflag = 1
+                                   AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
+                                   AND pd28c.kilncarbatchno = pd.kilncarbatchno
+                                   AND pd28c.productiondataid > pd.productiondataid
+                                   AND pd28c.productiondataid < pd61.productiondataid)) PD
+								LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.groutingdailydetailid=PD.groutingdailydetailid
+                                LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+                                LEFT JOIN TP_MST_DataDictionary MD ON GD.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
+                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID " ;
+                sqlStr += @"LEFT JOIN TP_PM_DEFECT DF ON PD.productiondataid = DF.productiondataid    AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN (61, 28) ";
+                sqlStr += @"LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTCODE IN ( '47','48','49','50','51','52','53','54','55','56','20','57')      ) ORDER BY GID ";
+                                  
+                 sqlStr = sqlStr.Replace("{DEFECT}", defect).Replace("{DEFECTSUM}",sumdefect); 
 
 				//获取查询条件
 				List<CDAParameter> sqlPara = new List<CDAParameter>();

+ 128 - 64
wwwroot/mes/rpt/rpt216/rpt.ashx

@@ -30,9 +30,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 							SELECT
 												 DISTINCT MDF.DEFECTCODE AS DC,			 MDF.DEFECTID,
 	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=126 
-															THEN  	TO_CHAR(( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''
+															THEN  	TO_CHAR(( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(productiondataid||缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT productiondataid) * 100 ), ''fm99990.00'' ) || ''%''
 	                              ELSE
-                                    TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) END' AS DEFECTCODE,
+                                    TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(productiondataid||缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) END' AS DEFECTCODE,
 	                            MDF.DEFECTNAME 
 															FROM TP_MST_DEFECT MDF
 															where DEFECTTYPEID=5 or MDF.DEFECTCODE='20' ORDER BY  MDF.DEFECTID");
@@ -45,7 +45,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 						string sumdefect = "";
               DataTable dts = conn.ExecuteDatatable(@"SELECT
 	                           DISTINCT MDF.DEFECTCODE AS DC,			 MDF.DEFECTID,
-	                            'TO_CHAR(( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''' AS DEFECTCODE,
+	                            'TO_CHAR(( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(productiondataid||缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT productiondataid) * 100 ), ''fm99990.00'' ) || ''%''' AS DEFECTCODE,
 	                            MDF.DEFECTNAME 
                            	FROM TP_MST_DEFECT MDF
 															where DEFECTTYPEID=5 or MDF.DEFECTCODE='20' ORDER BY  MDF.DEFECTID");
@@ -66,60 +66,124 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                 }
 
 				string sqlStr = @"WITH 基础数据 AS 
-                                        (
-                                         SELECT
-									pd.GROUTINGLINEID,pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE 缺陷编码,缺陷类别,PROCEDUREID AS 工序,GOODSLEVELTYPEID
-									FROM(
-									SELECT
-										GROUTINGLINEID,工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
-									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
-										FROM(
-									 SELECT
-											GDL.GROUTINGLINEID,
-                                        	case when PDC.PROCEDUREID=41  THEN  'Y26 ' else TO_CHAR(STF.STAFFCODE) end  AS 工号,
-                                        	case when PDC.PROCEDUREID=41  THEN  'Y26擦坯 ' else TO_CHAR(STF.STAFFNAME) end   AS 姓名,
-											GD.GOODSCODE AS 产品编码,
-                                        	GD.GOODSNAME AS 产品名称,
-                                        	GD.GOODSSPECIFICATION AS 产品规格,
-                                        	MD.DICTIONARYVALUE AS 釉色,
-                                        	LG.LOGONAME AS 商标,
-                                        	PD.BARCODE 出窑条码,
-                                        	DF.BARCODE 缺陷条码,
-                                        	DF.DEFECTID 缺陷ID,
-											DF.DEFECTCODE ,
-											MDF.DEFECTTYPEID 缺陷类别,
-											CASE WHEN  PDC.PROCEDUREID=10 THEN  '人工' 
-												WHEN  PDC.PROCEDUREID=37 THEN  '机械手单柜' 
-												WHEN  PDC.PROCEDUREID=41 THEN  '1拖4机械手'  ELSE NULL END    PROCEDUREID,
-											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
-											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
-											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
-											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
-											ELSE NULL END GOODSLEVELTYPEID
-                                        	                                        FROM
-                                        TP_PM_PRODUCTIONDATA PD
-                                        	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
-                                        	LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
-                                        	LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
-                                        	LEFT JOIN TP_MST_DataDictionary MD ON GD.GLAZETYPEID = MD.DICTIONARYID 
-                                        	AND MD.DICTIONARYTYPE = 'TPC002'
-                                        	LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID
-                                        	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE AND DF.PROCEDUREID NOT IN(61,28)  AND DF.DEFECTID IN (
-																								SELECT  DISTINCT 		 MDF.DEFECTID FROM TP_MST_DEFECT MDF  where DEFECTTYPEID=5 or  MDF.DEFECTCODE='20')  AND DF.VALUEFLAG=1
-											LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID				
-											INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (10,37,41)AND PDC.VALUEFLAG=1
-															LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
-															LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
-															LEFT JOIN TP_MST_JOBS jobs ON jobs.JOBSID=CLS.SJOBSID
-											LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID=60 AND PDS.VALUEFLAG=1
-                                            WHERE
-                                        	PD.PROCEDUREID IN ( 16)  AND PD.VALUEFLAG = 1 AND   CLS.UJOBSID =22
-                                           AND PD.CREATETIME >= @DATEBEGIN@
-                                           AND PD.CREATETIME < @DATEEND@  
-										 )) pd
-																 
-							
-                                        )
+                                      (SELECT groutinglineid
+                                        ,工号
+                                        ,产品名称
+                                        ,姓名
+                                        ,产品编码
+                                        ,产品规格
+                                        ,釉色
+                                        ,商标
+                                        ,出窑条码
+                                        ,缺陷条码
+                                        ,缺陷id
+                                        ,defectcode 缺陷编码
+                                        ,goodsleveltypeid
+                                        ,缺陷类别
+                                        ,工序
+                                        ,productiondataid
+                                    FROM (SELECT DISTINCT gdl.groutinglineid
+                                                           ,CASE
+                                                              WHEN pd.procedureid = 41 THEN
+                                                               'Y26 '
+                                                              ELSE
+                                                               to_char(stf.staffcode)
+                                                          END AS 工号
+                                                         ,CASE
+                                                              WHEN pd.procedureid = 41 THEN
+                                                               'Y26擦坯 '
+                                                              ELSE
+                                                               to_char(stf.staffname)
+                                                          END AS 姓名                         
+                                                         ,gd.goodscode AS 产品编码
+                                                         ,gd.goodsname AS 产品名称
+                                                         ,gd.goodsspecification AS 产品规格
+                                                         ,md.dictionaryvalue AS 釉色
+                                                         ,lg.logoname AS 商标
+                                                         ,pd.barcode 出窑条码
+                                                         ,df.barcode 缺陷条码
+                                                         ,df.defectid 缺陷id
+                                                         ,df.defectcode
+                                                         ,mdf.defecttypeid 缺陷类别
+                                                          ,CASE
+                                                              WHEN pd.procedureid = 10 THEN
+                                                               '人工'
+                                                              WHEN pd.procedureid = 37 THEN
+                                                               '机械手单柜'
+                                                              WHEN pd.procedureid = 41 THEN
+                                                               '1拖4机械手'
+                                                              ELSE
+                                                               NULL
+                                                          END 工序
+                                                         ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+                                                         ,nvl(pd61.productiondataid, pd.productiondataid) productiondataid
+                                            FROM (SELECT *
+                                                    FROM (SELECT pd28.groutingdailydetailid
+                                                                ,pd28.goodsid
+                                                                ,pd28.logoid
+                                                                ,pd28.goodsleveltypeid
+                                                                ,pd24.procedureid
+                                                                ,pd28.barcode
+                                                                ,pd28.kilncarbatchno
+                                                                ,pd28.productiondataid
+                                                                ,pd24.classessettingid
+                                                                ,pd24.usercode
+                                                                ,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+                                                            FROM tp_pm_productiondata pd28 -- 重烧质量登记
+                                                           INNER JOIN tp_pm_productiondata pd24 -- 5-8重烧烧窑
+                                                              ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+                                                           WHERE pd28.procedureid = 16
+                                                             AND pd28.valueflag = 1
+                                                             AND pd24.valueflag = 1
+                                                             AND pd24.procedureid IN (24, 10, 37, 41) --  质量登记里包含                                 
+                                                             AND pd28.createtime >= @DATEBEGIN@ --to_date('2025-06-02', 'yyyy-MM-DD')
+                                                             AND pd28.createtime <  @DATEEND@
+                                                                 -- to_date('2025-06-02 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
+                                                             AND pd24.productiondataid < pd28.productiondataid) t
+                                                   WHERE rownums = 1
+                                                     AND t.procedureid IN (10, 37, 41)) pd
+                                            LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测  功能检测
+                                              ON pd61.procedureid = 60
+                                             AND pd61.valueflag = 1
+                                             AND pd61.groutingdailydetailid = pd.groutingdailydetailid
+                                             AND pd61.kilncarbatchno = pd.kilncarbatchno
+                                             AND pd61.productiondataid > pd.productiondataid
+                                                -- TODO 
+                                             AND NOT EXISTS (SELECT 1
+                                                    FROM tp_pm_productiondata pd28c -- 质量登记 重复的
+                                                   WHERE pd28c.procedureid = 16
+                                                     AND pd28c.valueflag = 1
+                                                     AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
+                                                     AND pd28c.kilncarbatchno = pd.kilncarbatchno
+                                                     AND pd28c.productiondataid > pd.productiondataid
+                                                     AND pd28c.productiondataid < pd61.productiondataid)
+                                            LEFT JOIN tp_pm_groutingdailydetail gdl
+                                              ON gdl.groutingdailydetailid = pd.groutingdailydetailid
+                                            LEFT JOIN tp_pc_groutingline gl
+                                              ON gl.groutinglineid = gdl.groutinglineid
+                                            LEFT JOIN tp_mst_goods gd
+                                              ON pd.goodsid = gd.goodsid
+                                            LEFT JOIN tp_mst_datadictionary md
+                                              ON gd.glazetypeid = md.dictionaryid
+                                             AND md.dictionarytype = 'TPC002'
+                                            LEFT JOIN tp_mst_logo lg
+                                              ON pd.logoid = lg.logoid
+                                            LEFT JOIN tp_pm_defect df
+                                             ON df.productiondataid = nvl(pd61.productiondataid, pd.productiondataid)
+                                             AND df.defectcode IN (SELECT DISTINCT mdf.defectcode
+                                                                     FROM tp_mst_defect mdf
+                                                                    WHERE defecttypeid = 5 OR mdf.defectcode = '20')
+                                             AND df.valueflag = 1
+                                             AND df.procedureid NOT IN (61, 28)
+                                            LEFT JOIN tp_mst_defect mdf
+                                              ON df.defectid = mdf.defectid
+                                            LEFT JOIN tp_pc_classesdetail cls
+                                              ON cls.classessettingid = pd.classessettingid
+                                            LEFT JOIN tp_hr_staff stf
+                                              ON stf.staffid = cls.staffid
+                                            LEFT JOIN tp_mst_jobs jobs
+                                              ON jobs.jobsid = stf.jobs) pd  
+                                          )
                                       SELECT * FROM(  
                                         SELECT
                                         GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标,基础数据.工序) AS GID,
@@ -134,14 +198,14 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(基础数据.产品规格)产品规格,
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
-                                        TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
-										TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (缺陷类别=5 or  缺陷编码='20')THEN 基础数据.出窑条码 ELSE NULL END )) 优级品量,
-                      DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or  缺陷编码='20')  THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
-	TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or  缺陷编码='20')  THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
-	DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 优级品率,
+                                        TO_CHAR(COUNT(DISTINCT productiondataid)) 出窑量,
+										TO_CHAR(COUNT(DISTINCT productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (缺陷类别=5 or  缺陷编码='20')THEN productiondataid ELSE NULL END )) 优级品量,
+                      DECODE(NVL((COUNT( DISTINCT productiondataid ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or  缺陷编码='20')  THEN productiondataid ELSE NULL END)),0),0,'0%',
+	TO_CHAR((NVL((COUNT(DISTINCT productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or  缺陷编码='20')  THEN productiondataid ELSE NULL END ) ) ,0 ) / 
+	DECODE(NVL( COUNT( DISTINCT productiondataid ), 1 ),0,1,NVL( COUNT( DISTINCT productiondataid ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 优级品率,
 					
-                                        TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
-                                        TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率, {DEFECT}
+                                        TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
+                                        TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT productiondataid) * 100), 'fm99990.00') || '%' 缺陷率, {DEFECT}
                                FROM 基础数据
                                LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
                                  	GROUP BY			Grouping sets ( (