Преглед на файлове

缺陷数量和缺陷率

姜永辉 преди 5 дни
родител
ревизия
de418f1ce7

+ 169 - 63
wwwroot/main/Procedure/BurnIntoKanban/BurnIntoKanban.ashx

@@ -265,71 +265,177 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
             if (context.Request["m"].ToString() == "DefectDetail")
             {
                 string sqlStr = @"WITH 缺陷 AS (
-												SELECT
-												缺陷名称,
-													缺陷数量
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-														dfc.DEFECTPROCEDUREID IN (13,14,39,55,56,57)
-														AND dfc.VALUEFLAG = 1 
-														AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4
+												 SELECT *
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN mdf.defectcode IS NOT NULL
+                              AND df.barcode IS NOT NULL THEN
+                          to_char(pd.productiondataid || df.barcode || mdf.defectcode)
+                         ELSE
+                          NULL
+                     END) 缺陷数量
+        
+          FROM (SELECT DISTINCT pd.groutingdailydetailid
+                               ,pd.procedureid
+                               ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+                               ,nvl(pd61.productiondataid, pd.productiondataid) productiondataid
+                               ,pd.productiondataid fproductiondataid
+                  FROM (SELECT *
+                          FROM (SELECT pd28.goodsleveltypeid
+                                      ,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, 55, 13, 39, 57, 14, 56) --  重烧质量登记里包含 重烧修补24 / 冷补42    
+                                      -- 20251027 web报表中以末次质量登记时间 CREATETIME 节点统计质量数据调整为首次质量登记时间做统计质量数据变更  checktime
+                                   AND pd28.checktime >= trunc(SYSDATE)
+                                   AND pd24.productiondataid < pd28.productiondataid) t
+                         WHERE rownums = 1
+                           AND t.procedureid IN (55, 13, 39, 57, 14, 56)) 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
+                      -- 取最近的数据
+                   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_defect df
+            ON df.productiondataid IN (pd.productiondataid, pd.fproductiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON df.defectid = mdf.defectid
+           AND mdf.defectcode IN ('61'
+                                 ,'62'
+                                 ,'63'
+                                 ,'64'
+                                 ,'65'
+                                 ,'66'
+                                 ,'67'
+                                 ,'11'
+                                 ,'69'
+                                 ,'70'
+                                 ,'71'
+                                 ,'43'
+                                 ,'73'
+                                 ,'74'
+                                 ,'75'
+                                 ,'76'
+                                 ,'77'
+                                 ,'78'
+                                 ,'79'
+                                 ,'80'
+                                 ,'43'
+                                 ,'83'
+                                 ,'84')
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC)
+ WHERE rownum <= 4
+
 												),
 												其他缺陷 AS (
-												SELECT
-													SUM(缺陷数量) 其他缺陷数量
-												FROM
-													(
-											SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-													WHERE
-													  ( dfc.CREATETIME ) >= trunc(sysdate) 
-												AND	 dfc.DEFECTPROCEDUREID IN (13,14,39,55,56,57)
-												AND dfc.VALUEFLAG = 1 
-													GROUP BY
-														dfc.DEFECTNAME
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE 		缺陷名称 not  IN(
-													SELECT
-												缺陷名称
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-														dfc.DEFECTPROCEDUREID IN (13,14,39,55,56,57)
-														AND dfc.VALUEFLAG = 1 
-														AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4 )
-
+												SELECT SUM(缺陷数量) - SUM(CASE
+                           WHEN rownum <= 4 THEN
+                            缺陷数量
+                           ELSE
+                            NULL
+                       END) 其他缺陷数量
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN mdf.defectcode IS NOT NULL
+                              AND df.barcode IS NOT NULL THEN
+                          to_char(pd.productiondataid || df.barcode || mdf.defectcode)
+                         ELSE
+                          NULL
+                     END) 缺陷数量
+        
+          FROM (SELECT DISTINCT pd.groutingdailydetailid
+                               ,pd.procedureid
+                               ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+                               ,nvl(pd61.productiondataid, pd.productiondataid) productiondataid
+                               ,pd.productiondataid fproductiondataid
+                  FROM (SELECT *
+                          FROM (SELECT pd28.goodsleveltypeid
+                                      ,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, 55, 13, 39, 57, 14, 56) --  重烧质量登记里包含 重烧修补24 / 冷补42    
+                                      -- 20251027 web报表中以末次质量登记时间 CREATETIME 节点统计质量数据调整为首次质量登记时间做统计质量数据变更  checktime
+                                   AND pd28.checktime >= trunc(SYSDATE)
+                                   AND pd24.productiondataid < pd28.productiondataid) t
+                         WHERE rownums = 1
+                           AND t.procedureid IN (55, 13, 39, 57, 14, 56)) 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
+                      -- 取最近的数据
+                   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_defect df
+            ON df.productiondataid IN (pd.productiondataid, pd.fproductiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON df.defectid = mdf.defectid
+           AND mdf.defectcode IN ('61'
+                                 ,'62'
+                                 ,'63'
+                                 ,'64'
+                                 ,'65'
+                                 ,'66'
+                                 ,'67'
+                                 ,'11'
+                                 ,'69'
+                                 ,'70'
+                                 ,'71'
+                                 ,'43'
+                                 ,'73'
+                                 ,'74'
+                                 ,'75'
+                                 ,'76'
+                                 ,'77'
+                                 ,'78'
+                                 ,'79'
+                                 ,'80'
+                                 ,'43'
+                                 ,'83'
+                                 ,'84')
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC)
 												),
 												检验数 
 												AS 

+ 128 - 46
wwwroot/main/Procedure/FormingKanban/FormingKanban.ashx

@@ -545,53 +545,135 @@ SELECT 检验数.一烧产量
            AND pd.valueflag = 1
          GROUP BY mdf.defectname
          ORDER BY 缺陷数量 DESC)
- WHERE rownum <= 4
-
-												),
+ WHERE rownum <= 4 ),
 												其他缺陷 AS (
-												SELECT
-													SUM( 缺陷数量 ) 其他缺陷数量 
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-														 dfc.VALUEFLAG = 1 
-														AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-														AND df.DEFECTTYPEID=1
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													缺陷名称 NOT IN (
-													SELECT
-														缺陷名称 
-													FROM
-														(
-														SELECT
-															dfc.DEFECTNAME 缺陷名称,
-															COUNT( dfc.DEFECTNAME ) 缺陷数量 
-														FROM
-															TP_PM_DEFECT dfc
-															LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-														WHERE
-															 dfc.VALUEFLAG = 1 
-															AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-															AND df.DEFECTTYPEID=1
-														GROUP BY
-															dfc.DEFECTNAME 
-														ORDER BY
-															COUNT( dfc.DEFECTNAME ) DESC 
-														) 
-													WHERE
-														ROWNUM <= 4 
-													) 
+												SELECT SUM(缺陷数量) - SUM(CASE
+                           WHEN rownum <= 4 THEN
+                            缺陷数量
+                           ELSE
+                            NULL
+                       END) 其他缺陷数量
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN (mdf.defectcode IN ('01'
+                                                 ,'02'
+                                                 ,'03'
+                                                 ,'04'
+                                                 ,'05'
+                                                 ,'06'
+                                                 ,'07'
+                                                 ,'08'
+                                                 ,'09'
+                                                 ,'10'
+                                                 ,'12'
+                                                 ,'13'
+                                                 ,'14'
+                                                 ,'15'
+                                                 ,'16'
+                                                 ,'17'
+                                                 ,'18'
+                                                 ,'19'
+                                                 ,'21'
+                                                 ,'22'
+                                                 ,'23'
+                                                 ,'24'
+                                                 ,'25'
+                                                 ,'26'
+                                                 ,'27'
+                                                 ,'28'
+                                                 ,'29'
+                                                 ,'30'
+                                                 ,'31'
+                                                 ,'32'
+                                                 ,'33'
+                                                 ,'34'
+                                                 ,'35'
+                                                 ,'001'
+                                                 ,'002'
+                                                 ,'099'
+                                                 ,'99'
+                                                 ,'1'
+                                                 ,'2'
+                                                 ,'3'))
+                              AND mdf.defectcode IS NOT NULL
+                              AND df.barcode IS NOT NULL THEN
+                          to_char(nvl(pds.productiondataid, pd.productiondataid) || df.barcode ||
+                                  mdf.defectcode)
+                         ELSE
+                          NULL
+                     END) AS 缺陷数量
+        
+          FROM tp_pm_productiondata pd
+          LEFT JOIN tp_pm_productiondata pds
+            ON pds.groutingdailydetailid = pd.groutingdailydetailid
+           AND pds.procedureid = 60
+           AND pds.valueflag = 1
+           AND pds.kilncarbatchno = pd.kilncarbatchno
+           AND pds.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 < pds.productiondataid)
+          LEFT JOIN tp_pm_defect df
+            ON df.productiondataid IN (pds.productiondataid, pd.productiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON mdf.defectid = df.defectid
+           AND mdf.valueflag = 1
+           AND (mdf.defectcode IN ('01'
+                                  ,'02'
+                                  ,'03'
+                                  ,'04'
+                                  ,'05'
+                                  ,'06'
+                                  ,'07'
+                                  ,'08'
+                                  ,'09'
+                                  ,'10'
+                                  ,'12'
+                                  ,'13'
+                                  ,'14'
+                                  ,'15'
+                                  ,'16'
+                                  ,'17'
+                                  ,'18'
+                                  ,'19'
+                                  ,'21'
+                                  ,'22'
+                                  ,'23'
+                                  ,'24'
+                                  ,'25'
+                                  ,'26'
+                                  ,'27'
+                                  ,'28'
+                                  ,'29'
+                                  ,'30'
+                                  ,'31'
+                                  ,'32'
+                                  ,'33'
+                                  ,'34'
+                                  ,'35'
+                                  ,'001'
+                                  ,'002'
+                                  ,'099'
+                                  ,'99'
+                                  ,'1'
+                                  ,'2'
+                                  ,'3'))
+        
+         WHERE pd.procedureid IN (16)
+              -- 20251027 web报表中以末次质量登记时间节点统计质量数据调整为首次质量登记时间做统计质量数据变更
+           AND pd.checktime >= trunc(SYSDATE)
+           AND pd.valueflag = 1
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC)
+ 
 												),
 												检验数 AS 
                                             (SELECT COUNT(DISTINCT pd.barcode) AS 一烧出窑数 

+ 222 - 62
wwwroot/main/Procedure/GlazedKanban/GlazedKanban.ashx

@@ -270,70 +270,230 @@ SELECT
         	if (context.Request["m"].ToString() == "DefectDetail")
 			{
 				string sqlStr = @"WITH 缺陷 AS (
-												SELECT
-												缺陷名称,
-													缺陷数量
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-														dfc.DEFECTPROCEDUREID IN(10,37,41)
-														AND dfc.VALUEFLAG = 1 
-															AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4
+												 SELECT *
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN df.defectcode IN ('36'
+                                               ,'37'
+                                               ,'38'
+                                               ,'39'
+                                               ,'40'
+                                               ,'41'
+                                               ,'42'
+                                               ,'43'
+                                               ,'44'
+                                               ,'47'
+                                               ,'48'
+                                               ,'49'
+                                               ,'50'
+                                               ,'51'
+                                               ,'52'
+                                               ,'53'
+                                               ,'54'
+                                               ,'55'
+                                               ,'56'
+                                               ,'20'
+                                               ,'57') THEN
+                          to_char(pd.productiondataid || df.barcode || mdf.defectcode)
+                         ELSE
+                          NULL
+                     END) 缺陷数量
+          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.productiondataid fproductiondataid
+                               ,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     
+                                      -- 20251027 web报表中以末次质量登记时间 CREATETIME 节点统计质量数据调整为首次质量登记时间做统计质量数据变更  checktime
+                                   AND pd28.checktime >= trunc(SYSDATE)
+                                   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 gdl.logoid = lg.logoid
+          LEFT JOIN tp_pm_defect df
+            ON df.productiondataid IN (pd.productiondataid, pd.fproductiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON df.defectid = mdf.defectid
+           AND (mdf.defecttypeid = 4 OR mdf.defecttypeid = 5 OR mdf.defectcode = '20')
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC)
+ WHERE rownum <= 4 
 												),
 												其他缺陷 AS (
-												SELECT
-													SUM(缺陷数量) 其他缺陷数量
-												FROM
-													(
-											SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-													WHERE
-														dfc.DEFECTPROCEDUREID IN (10,37,41)
-														AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-													GROUP BY
-														dfc.DEFECTNAME
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE 		缺陷名称 not  IN(
-													SELECT
-												缺陷名称
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-															dfc.DEFECTPROCEDUREID IN(10,37,41)
-														AND dfc.VALUEFLAG = 1 
-														AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4 )
-
+												SELECT SUM(缺陷数量) - SUM(CASE
+                           WHEN rownum <= 4 THEN
+                            缺陷数量
+                           ELSE
+                            NULL
+                       END) 其他缺陷数量
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN df.defectcode IN ('36'
+                                               ,'37'
+                                               ,'38'
+                                               ,'39'
+                                               ,'40'
+                                               ,'41'
+                                               ,'42'
+                                               ,'43'
+                                               ,'44'
+                                               ,'47'
+                                               ,'48'
+                                               ,'49'
+                                               ,'50'
+                                               ,'51'
+                                               ,'52'
+                                               ,'53'
+                                               ,'54'
+                                               ,'55'
+                                               ,'56'
+                                               ,'20'
+                                               ,'57') THEN
+                          to_char(pd.productiondataid || df.barcode || mdf.defectcode)
+                         ELSE
+                          NULL
+                     END) 缺陷数量
+          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.productiondataid fproductiondataid
+                               ,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     
+                                      -- 20251027 web报表中以末次质量登记时间 CREATETIME 节点统计质量数据调整为首次质量登记时间做统计质量数据变更  checktime
+                                   AND pd28.checktime >= trunc(SYSDATE)
+                                   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 gdl.logoid = lg.logoid
+          LEFT JOIN tp_pm_defect df
+            ON df.productiondataid IN (pd.productiondataid, pd.fproductiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON df.defectid = mdf.defectid
+           AND (mdf.defecttypeid = 4 OR mdf.defecttypeid = 5 OR mdf.defectcode = '20')
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC)
 												),
 												检验数 
 												AS 

+ 229 - 62
wwwroot/main/Procedure/HalfCheckKanban/HalfCheckKanban.ashx

@@ -432,70 +432,237 @@ SELECT 检验数.一烧产量
             if (context.Request["m"].ToString() == "DefectDetail")
             {
                 string sqlStr = @"WITH 缺陷 AS (
-												SELECT
-													缺陷名称,
-													缺陷数量
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-														 dfc.VALUEFLAG = 1 
-														AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-														AND dfc.DEFECTCODE IN ('01','02','03','04','05','06','07','08','09','10','19','20','25','26','27','28','29','30','12','13','14','15','16','17','18','23','31','32','33','34','35')  
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4 
-												),
-												其他缺陷 AS (
-												SELECT
-													SUM(缺陷数量) 其他缺陷数量
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-													WHERE
-													  ( dfc.CREATETIME ) >= trunc(sysdate) 
-														AND dfc.DEFECTCODE IN ('01','02','03','04','05','06','07','08','09','10','19','20','25','26','27','28','29','30','12','13','14','15','16','17','18','23','31','32','33','34','35')  
-													GROUP BY
-														dfc.DEFECTNAME
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE 		缺陷名称 not  IN(SELECT
-													缺陷名称
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-														 dfc.VALUEFLAG = 1 
-														AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-														AND dfc.DEFECTCODE IN ('01','02','03','04','05','06','07','08','09','10','19','20','25','26','27','28','29','30','12','13','14','15','16','17','18','23','31','32','33','34','35')  
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4 )
+												 SELECT *
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN mdf.defectcode IS NOT NULL
+                              AND df.barcode IS NOT NULL THEN
+                          pd.productiondataid || df.barcode || df.defectcode
+                         ELSE
+                          NULL
+                     END) 缺陷数量        
+          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.productiondataid fproductiondataid
+                               ,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, 40, 6, 31) --  重烧质量登记里包含 重烧修补24 / 冷补42     
+                                      -- 20251027 web报表中以末次质量登记时间节点统计质量数据调整为首次质量登记时间做统计质量数据变更 createtime - > checktime
+                                   AND pd28.checktime >= trunc(SYSDATE)
+                                   AND pd24.productiondataid < pd28.productiondataid) t
+                         WHERE rownums = 1
+                           AND t.procedureid IN (40, 6, 31)) 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_defect df
+            ON df.productiondataid IN (pd.productiondataid, pd.fproductiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON df.defectid = mdf.defectid
+           AND mdf.defectcode IN ('01'
+                                 ,'02'
+                                 ,'03'
+                                 ,'04'
+                                 ,'05'
+                                 ,'06'
+                                 ,'07'
+                                 ,'08'
+                                 ,'09'
+                                 ,'10'
+                                 ,'19'
+                                 ,'20'
+                                 ,'25'
+                                 ,'26'
+                                 ,'27'
+                                 ,'28'
+                                 ,'29'
+                                 ,'30'
+                                 ,'12'
+                                 ,'13'
+                                 ,'14'
+                                 ,'15'
+                                 ,'16'
+                                 ,'17'
+                                 ,'18'
+                                 ,'23'
+                                 ,'31'
+                                 ,'32'
+                                 ,'33'
+                                 ,'34'
+                                 ,'35')
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC)
+ WHERE rownum <= 4
 
 												),
+												其他缺陷 AS (
+												 SELECT SUM(缺陷数量) - SUM(CASE
+                           WHEN rownum <= 4 THEN
+                            缺陷数量
+                           ELSE
+                            NULL
+                       END) 其他缺陷数量
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN mdf.defectcode IS NOT NULL
+                              AND df.barcode IS NOT NULL THEN
+                          pd.productiondataid || df.barcode || df.defectcode
+                         ELSE
+                          NULL
+                     END) 缺陷数量
+          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.productiondataid fproductiondataid
+                               ,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, 40, 6, 31) --  重烧质量登记里包含 重烧修补24 / 冷补42     
+                                      -- 20251027 web报表中以末次质量登记时间节点统计质量数据调整为首次质量登记时间做统计质量数据变更 createtime - > checktime
+                                   AND pd28.checktime >= trunc(SYSDATE)
+                                   AND pd24.productiondataid < pd28.productiondataid) t
+                         WHERE rownums = 1
+                           AND t.procedureid IN (40, 6, 31)) 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_defect df
+            ON df.productiondataid IN (pd.productiondataid, pd.fproductiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON df.defectid = mdf.defectid
+           AND mdf.defectcode IN ('01'
+                                 ,'02'
+                                 ,'03'
+                                 ,'04'
+                                 ,'05'
+                                 ,'06'
+                                 ,'07'
+                                 ,'08'
+                                 ,'09'
+                                 ,'10'
+                                 ,'19'
+                                 ,'20'
+                                 ,'25'
+                                 ,'26'
+                                 ,'27'
+                                 ,'28'
+                                 ,'29'
+                                 ,'30'
+                                 ,'12'
+                                 ,'13'
+                                 ,'14'
+                                 ,'15'
+                                 ,'16'
+                                 ,'17'
+                                 ,'18'
+                                 ,'23'
+                                 ,'31'
+                                 ,'32'
+                                 ,'33'
+                                 ,'34'
+                                 ,'35')
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC) ),
 												检验数 
 												AS 
 												(SELECT COUNT(DISTINCT pd.barcode) AS 一烧出窑数 

+ 218 - 65
wwwroot/main/Procedure/RefinementKanban/RefinementKanban.ashx

@@ -319,72 +319,225 @@ public class  FormingKanban : IHttpHandler, IReadOnlySessionState
         	if (context.Request["m"].ToString() == "DefectDetail")
 			{
 				string sqlStr = @"WITH 缺陷 AS (
-												SELECT
-												缺陷名称,
-													缺陷数量
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-														dfc.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35',  '12', '13', '14', '15', '16', '17', '18', '19', '23', '25') 
-														AND dfc.VALUEFLAG = 1 
-														AND  (dfc.CREATETIME)>=TRUNC(SYSDATE)
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4
-												),
+												SELECT *
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN df.defectcode IN ('01'
+                                               ,'02'
+                                               ,'03'
+                                               ,'04'
+                                               ,'05'
+                                               ,'06'
+                                               ,'07'
+                                               ,'08'
+                                               ,'09'
+                                               ,'10'
+                                               ,'28'
+                                               ,'34'
+                                               ,'35'
+                                               ,'10'
+                                               ,'12'
+                                               ,'13'
+                                               ,'14'
+                                               ,'15'
+                                               ,'16'
+                                               ,'17'
+                                               ,'18'
+                                               ,'19'
+                                               ,'23'
+                                               ,'25'
+                                               ,'35') THEN
+                          to_char(pd.productiondataid || df.barcode || df.defectcode)
+                         ELSE
+                          NULL
+                     END) 缺陷数量
+        
+          FROM (SELECT DISTINCT pd.groutingdailydetailid
+                               ,pd.procedureid
+                               ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+                               ,nvl(pd61.productiondataid, pd.productiondataid) productiondataid
+                               ,pd.productiondataid fproductiondataid
+                  FROM (SELECT *
+                          FROM (SELECT pd28.goodsleveltypeid
+                                      ,pd28.groutingdailydetailid
+                                      ,pd28.kilncarbatchno
+                                      ,pd28.productiondataid
+                                      ,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, 5, 36, 52, 4, 53) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+                                      -- 20251027 web报表中以末次质量登记时间 CREATETIME 节点统计质量数据调整为首次质量登记时间做统计质量数据变更  checktime
+                                   AND pd28.checktime >= trunc(SYSDATE)
+                                   AND pd24.productiondataid < pd28.productiondataid) t
+                         WHERE rownums = 1
+                           AND t.procedureid IN (5, 36, 52, 4, 53)) 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
+                      -- 取最近的数据
+                   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_defect df
+            ON df.productiondataid IN (pd.productiondataid, pd.fproductiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON df.defectid = mdf.defectid
+           AND mdf.defectcode IN ('01'
+                                 ,'02'
+                                 ,'03'
+                                 ,'04'
+                                 ,'05'
+                                 ,'06'
+                                 ,'07'
+                                 ,'08'
+                                 ,'09'
+                                 ,'10'
+                                 ,'28'
+                                 ,'34'
+                                 ,'35'
+                                 ,'10'
+                                 ,'12'
+                                 ,'13'
+                                 ,'14'
+                                 ,'15'
+                                 ,'16'
+                                 ,'17'
+                                 ,'18'
+                                 ,'19'
+                                 ,'23'
+                                 ,'25'
+                                 ,'35')
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC)
+ WHERE rownum <= 4 ),
 												其他缺陷 AS (
-												SELECT
-													SUM(缺陷数量) 其他缺陷数量
-												FROM
-													(
-											SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-													WHERE
-														dfc.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35',  '12', '13', '14', '15', '16', '17', '18', '19', '23', '25') 
-														AND dfc.VALUEFLAG = 1 
-													AND  (dfc.CREATETIME)>=TRUNC(SYSDATE)
-													GROUP BY
-														dfc.DEFECTNAME
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE 		缺陷名称 not  IN(
-													SELECT
-												缺陷名称
-												FROM
-													(
-													SELECT
-														dfc.DEFECTNAME 缺陷名称,
-														COUNT( dfc.DEFECTNAME ) 缺陷数量 
-													FROM
-														TP_PM_DEFECT dfc
-														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-													WHERE
-														dfc.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35',  '12', '13', '14', '15', '16', '17', '18', '19', '23', '25') 
-														AND dfc.VALUEFLAG = 1 
-														AND  (dfc.CREATETIME)>=TRUNC(SYSDATE)
-													GROUP BY
-														dfc.DEFECTNAME 
-													ORDER BY
-														COUNT( dfc.DEFECTNAME ) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4 )
-
-												),
+												SELECT SUM(缺陷数量) - SUM(CASE
+                           WHEN rownum <= 4 THEN
+                            缺陷数量
+                           ELSE
+                            NULL
+                       END) 其他缺陷数量
+  FROM (SELECT mdf.defectname 缺陷名称
+              ,COUNT(DISTINCT CASE
+                         WHEN df.defectcode IN ('01'
+                                               ,'02'
+                                               ,'03'
+                                               ,'04'
+                                               ,'05'
+                                               ,'06'
+                                               ,'07'
+                                               ,'08'
+                                               ,'09'
+                                               ,'10'
+                                               ,'28'
+                                               ,'34'
+                                               ,'35'
+                                               ,'10'
+                                               ,'12'
+                                               ,'13'
+                                               ,'14'
+                                               ,'15'
+                                               ,'16'
+                                               ,'17'
+                                               ,'18'
+                                               ,'19'
+                                               ,'23'
+                                               ,'25'
+                                               ,'35') THEN
+                          to_char(pd.productiondataid || df.barcode || df.defectcode)
+                         ELSE
+                          NULL
+                     END) 缺陷数量
+        
+          FROM (SELECT DISTINCT pd.groutingdailydetailid
+                               ,pd.procedureid
+                               ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+                               ,nvl(pd61.productiondataid, pd.productiondataid) productiondataid
+                               ,pd.productiondataid fproductiondataid
+                  FROM (SELECT *
+                          FROM (SELECT pd28.goodsleveltypeid
+                                      ,pd28.groutingdailydetailid
+                                      ,pd28.kilncarbatchno
+                                      ,pd28.productiondataid
+                                      ,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, 5, 36, 52, 4, 53) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+                                      -- 20251027 web报表中以末次质量登记时间 CREATETIME 节点统计质量数据调整为首次质量登记时间做统计质量数据变更  checktime
+                                   AND pd28.checktime >= trunc(SYSDATE)
+                                   AND pd24.productiondataid < pd28.productiondataid) t
+                         WHERE rownums = 1
+                           AND t.procedureid IN (5, 36, 52, 4, 53)) 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
+                      -- 取最近的数据
+                   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_defect df
+            ON df.productiondataid IN (pd.productiondataid, pd.fproductiondataid)
+           AND df.valueflag = 1
+           AND df.procedureid NOT IN (61, 28)
+          LEFT JOIN tp_mst_defect mdf
+            ON df.defectid = mdf.defectid
+           AND mdf.defectcode IN ('01'
+                                 ,'02'
+                                 ,'03'
+                                 ,'04'
+                                 ,'05'
+                                 ,'06'
+                                 ,'07'
+                                 ,'08'
+                                 ,'09'
+                                 ,'10'
+                                 ,'28'
+                                 ,'34'
+                                 ,'35'
+                                 ,'10'
+                                 ,'12'
+                                 ,'13'
+                                 ,'14'
+                                 ,'15'
+                                 ,'16'
+                                 ,'17'
+                                 ,'18'
+                                 ,'19'
+                                 ,'23'
+                                 ,'25'
+                                 ,'35')
+         GROUP BY mdf.defectname
+         ORDER BY 缺陷数量 DESC) ),
 												检验数 
 												AS 
 												(SELECT COUNT(DISTINCT pd.barcode) AS 一烧出窑数