Browse Source

精修、施釉、烧成 看板的修正

姜永辉 1 month ago
parent
commit
f52d8d9660

+ 92 - 24
wwwroot/main/Procedure/BurnIntoKanban/BurnIntoKanban.ashx

@@ -355,30 +355,98 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 
             if (context.Request["m"].ToString() == "Alltotal")
             {
-                string sqlStr = @"with 打磨 AS (
-											SELECT
-												COUNT(dfc.BARCODE) 缺陷数量
-												FROM TP_PM_DEFECT dfc
-												LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
-												WHERE dfc.VALUEFLAG=1
-												AND dfc.DEFECTPROCEDUREID IN (13,14,39,55,56,57)
-												AND  ( dfc.CREATETIME ) >= trunc(sysdate) 
-												),
-													一烧产量 AS 
-												(
-											  SELECT COUNT( * ) 出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID IN (15,16)  AND GOODSLEVELID IN (1,4,5) AND  ( CREATETIME ) >= trunc(sysdate)    and VALUEFLAG=1 
-												),
-												检验数 AS 
-												(
-										SELECT COUNT( * ) 一烧出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID =16  and VALUEFLAG=1 	AND  (CREATETIME)>=TRUNC(SYSDATE)
-												)
-												SELECT
-												一烧产量.出窑数 ,
-												DECODE( NVL( 打磨.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 打磨.缺陷数量, 0 ) / DECODE( NVL( 检验数.一烧出窑数, 1 ), 0, 1, NVL( 检验数.一烧出窑数, 1 ) ) ) * 100,'fm99990.00' ) || '%' ) as 缺陷率
-												FROM  
-												打磨
-												LEFT JOIN 检验数 on 1=1
-												LEFT JOIN 一烧产量 ON 1=1";
+                string sqlStr = @"SELECT COUNT(DISTINCT pd.productiondataid) 出窑量
+								  ,COUNT(DISTINCT CASE
+											 WHEN pd.goodsleveltypeid IN (4, 5) THEN
+											  pd.productiondataid
+											 ELSE
+											  NULL
+										 END) 一烧产量
+								  ,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) 缺陷量
+								  ,to_char((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) / COUNT(DISTINCT pd.productiondataid) * 100)
+										  ,'fm99990.00') || '%' 缺陷率
+							  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')
+							";
                 //直接获取不分页数据
                 DataTable dt = conn.ExecuteDatatable(sqlStr);
                 string jsonStr = new JsonResult(dt).ToJson();

+ 4 - 5
wwwroot/main/Procedure/BurnIntoKanban/BurnIntoKanban.html

@@ -164,7 +164,7 @@
 			initData();
 			initData2();
 			doGetData = setInterval(function () { loadServerTime(); }, 3000);
-            doGetData = setInterval(function () { timeUp(); }, 30000);
+            doGetData = setInterval(function () { timeUp(); }, 40000);
            loadDayTable();
         });
 
@@ -177,11 +177,10 @@
         }
 		function Alltotal() {
 			$.get('BurnIntoKanban.ashx?m=Alltotal', function (data) {
-				var json = JSON.parse(data);
-				if (json["success"] == true) {
-                    $('#cxqxl').text(  json["rows"][0]["出窑数"]);
+				var json = JSON.parse(data); 
+				if (json["success"] == true) { 
+                    $('#cxqxl').text(json["rows"][0]["一烧产量"] + "");
                     $('#dmqxl').text( json["rows"][0]["缺陷率"]);
-
 				}
 			});
         }

+ 140 - 55
wwwroot/main/Procedure/GlazedKanban/GlazedKanban.ashx

@@ -360,61 +360,146 @@ SELECT
 
 			    if (context.Request["m"].ToString() == "Alltotal")
             {
-                string sqlStr = @"with 施釉 AS (
-											SELECT
-												COUNT( DISTINCT  CASE WHEN DF.DEFECTCODE IN ( '36','37','38','39','40','41','42','43','44') THEN to_char(PD.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) 施釉缺陷数量
-												FROM( SELECT * FROM(
-                                                         SELECT
-                                                         BARCODE,REWORKPROCEDUREID,GROUTINGLINECODE,GOODSCODE,GOODSNAME,LOGONAME,GOODSLEVELTYPEID,GOODSSPECIFICATION,DICTIONARYVALUE,
-                                                       HIGHPRESSUREFLAG,PROCEDUREID,GOODSTYPENAME,GOODSTYPECODE,LUSTERWAREWEIGHT,
-                                                         row_number() over (partition by BARCODE order by GOODSLEVELTYPEID DESC ) as rownums
-                                                     FROM(
-                                             SELECT
-                                                DISTINCT pd.BARCODE,
-												PD.REWORKPROCEDUREID,
-                                                pd.GROUTINGLINECODE,
-                                                pd.GOODSCODE,
-                                                pd.GOODSNAME,
-                                                LOGO.LOGONAME,
-                                                good.GOODSSPECIFICATION,good.LUSTERWAREWEIGHT,
-                                                TP_MST_DataDictionary.DICTIONARYVALUE,
-                                                GL.HIGHPRESSUREFLAG,
-                                                pd.PROCEDUREID AS PROCEDUREID,
-												gtp.GOODSTYPENAME,gtp.GOODSTYPECODE,
-												CASE WHEN PDL.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
-												WHEN PD.GOODSLEVELTYPEID  < PDL.GOODSLEVELTYPEID THEN PDL.GOODSLEVELTYPEID
-												WHEN PDL.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
-												WHEN PD.GOODSLEVELTYPEID  = PDL.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
-												ELSE NULL END GOODSLEVELTYPEID
-										    FROM TP_PM_PRODUCTIONDATA pd
-                                                INNER JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
-						                        LEFT  JOIN TP_PM_PRODUCTIONDATA PDL ON PDL.BARCODE=PD.BARCODE AND PDL.PROCEDUREID=60 AND PDL.VALUEFLAG=1
-						                        LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
-						                        LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
-                                                LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=gd.LOGOID
-                                                LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
-                                                LEFT JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.DICTIONARYID=good.GLAZETYPEID AND TP_MST_DataDictionary.DictionaryType = 'TPC002'
-                                                WHERE PD.PROCEDUREID IN(16) AND PD.VALUEFLAG=1     AND PD.CREATETIME >= TRUNC(SYSDATE)
-												) )WHERE rownums=1
-                                                ) PD
-                                                LEFT JOIN TP_PM_DEFECT df ON DF.BARCODE=PD.BARCODE AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(61,28) 
-												LEFT JOIN TP_MST_DEFECT DEFECT ON DEFECT.DEFECTID=DF.DEFECTID AND DEFECT.VALUEFLAG=1   
-												INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE = PD.BARCODE AND PDS.VALUEFLAG=1 
-												),
-												一烧产量 AS (
-													  SELECT COUNT( * ) 出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID IN (15,16) AND GOODSLEVELID IN (1,4,5) AND  ( CREATETIME ) >= trunc(sysdate)    and VALUEFLAG=1 
-												),
-													检验数 AS 
-												(
-											SELECT COUNT( * ) 一烧出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID =16  and VALUEFLAG=1 	AND  (CREATETIME)>=TRUNC(SYSDATE)
-												)
-												SELECT
-												一烧产量.出窑数 ,
-												DECODE( NVL( 施釉缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 施釉缺陷数量, 0 ) / DECODE( NVL( 检验数.一烧出窑数, 1 ), 0, 1, NVL( 检验数.一烧出窑数, 1 ) ) ) * 100,'fm99990.00' ) || '%' ) as 施釉缺陷率
-												FROM  
-												施釉
-												LEFT JOIN 检验数 on 1=1
-												LEFT JOIN 一烧产量 ON 1=1";
+                string sqlStr = @"SELECT COUNT(DISTINCT pd.productiondataid) 出窑量
+      ,COUNT(DISTINCT CASE
+                 WHEN pd.goodsleveltypeid IN (4, 5) THEN
+                  pd.productiondataid
+                 ELSE
+                  NULL
+             END) 一烧产量
+      ,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) 缺陷量
+      ,to_char((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) / COUNT(DISTINCT pd.productiondataid) * 100)
+      ,'fm99990.00') || '%' 缺陷率
+
+  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')
+";
                 //直接获取不分页数据
                 DataTable dt = conn.ExecuteDatatable(sqlStr);
                 string jsonStr = new JsonResult(dt).ToJson();

+ 2 - 2
wwwroot/main/Procedure/GlazedKanban/GlazedKanban.html

@@ -175,8 +175,8 @@
 			$.get('GlazedKanban.ashx?m=Alltotal', function (data) {
 				var json = JSON.parse(data);
 				if (json["success"] == true) {
-                    $('#yscl').text( json["rows"][0]["出窑数"]);
-					$('#syqx').text( json["rows"][0]["施釉缺陷率"]);
+                    $('#yscl').text(json["rows"][0]["一烧产量"]);
+					$('#syqx').text( json["rows"][0]["缺陷率"]);
 				}
 			});
         }

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

@@ -419,71 +419,117 @@ public class  FormingKanban : IHttpHandler, IReadOnlySessionState
 
 			    if (context.Request["m"].ToString() == "Alltotal")
             {
-                string sqlStr = @"with 缺陷 AS (
-											SELECT
-												COUNT( DISTINCT   CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND PDS.VALUEFLAG=1 AND df.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '23', '25' , '35'  ) THEN to_char(DF.BARCODE||df.DEFECTCODE ) ELSE NULL END ) 打磨缺陷数量,
-COUNT( DISTINCT   CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND PDS.VALUEFLAG=1 AND df.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35' ) THEN to_char(DF.BARCODE||df.DEFECTCODE ) ELSE NULL END ) 擦洗缺陷数量
-												FROM( SELECT * FROM(
-                                                         SELECT
-                                                         BARCODE,REWORKPROCEDUREID,GROUTINGLINECODE,GOODSCODE,GOODSNAME,LOGONAME,GOODSLEVELTYPEID,GOODSSPECIFICATION,DICTIONARYVALUE,
-                                                       HIGHPRESSUREFLAG,PROCEDUREID,GOODSTYPENAME,GOODSTYPECODE,LUSTERWAREWEIGHT,
-                                                         row_number() over (partition by BARCODE order by GOODSLEVELTYPEID DESC ) as rownums
-                                                     FROM(
-                                             SELECT
-                                                DISTINCT pd.BARCODE,
-												PD.REWORKPROCEDUREID,
-                                                pd.GROUTINGLINECODE,
-                                                pd.GOODSCODE,
-                                                pd.GOODSNAME,
-                                                LOGO.LOGONAME,
-                                                good.GOODSSPECIFICATION,good.LUSTERWAREWEIGHT,
-                                                TP_MST_DataDictionary.DICTIONARYVALUE,
-                                                GL.HIGHPRESSUREFLAG,
-                                                pd.PROCEDUREID AS PROCEDUREID,
-												gtp.GOODSTYPENAME,gtp.GOODSTYPECODE,
-												CASE WHEN PDL.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
-												WHEN PD.GOODSLEVELTYPEID  < PDL.GOODSLEVELTYPEID THEN PDL.GOODSLEVELTYPEID
-												WHEN PDL.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
-												WHEN PD.GOODSLEVELTYPEID  = PDL.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
-												ELSE NULL END GOODSLEVELTYPEID
-										    FROM TP_PM_PRODUCTIONDATA pd
-                                                INNER JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
-						                        LEFT  JOIN TP_PM_PRODUCTIONDATA PDL ON PDL.BARCODE=PD.BARCODE AND PDL.PROCEDUREID=60 AND PDL.VALUEFLAG=1
-						                        LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
-						                        LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
-                                                LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=gd.LOGOID
-                                                LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
-                                                LEFT JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.DICTIONARYID=good.GLAZETYPEID AND TP_MST_DataDictionary.DictionaryType = 'TPC002'
-                                                WHERE PD.PROCEDUREID IN(16) AND PD.VALUEFLAG=1     AND PD.CREATETIME >= TRUNC(SYSDATE)
-												) )WHERE rownums=1
-                                                ) PD
-                                                LEFT JOIN TP_PM_DEFECT df ON DF.BARCODE=PD.BARCODE AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(61,28) 
-												LEFT JOIN TP_MST_DEFECT DEFECT ON DEFECT.DEFECTID=DF.DEFECTID AND DEFECT.VALUEFLAG=1   
-												INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE = PD.BARCODE AND PDS.VALUEFLAG=1 
-												),
-												
-												一烧产量 AS 
-												(
-											  SELECT COUNT( * ) 出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID IN (15,16) AND GOODSLEVELID IN (1,4,5) AND  ( CREATETIME ) >= trunc(sysdate)    and VALUEFLAG=1 
-												),
-													检验数 AS 
-												(
-											select 	TO_CHAR(COUNT( DISTINCT CASE WHEN  PDS.PROCEDUREID IN (4,36,53) AND PDS.VALUEFLAG=1  THEN PD.BARCODE ELSE NULL END )) 打磨出窑量,
-											    TO_CHAR(COUNT( DISTINCT CASE WHEN  PDS.PROCEDUREID IN (5,36,52) AND PDS.VALUEFLAG=1 THEN PD.BARCODE ELSE NULL END )) 擦洗出窑量	 FROM TP_PM_PRODUCTIONDATA PD
-											    INNER JOIN TP_PM_PRODUCTIONDATA pds on pds.BARCODE=pd.BARCODE 
-											    LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
-											    LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
-											    WHERE PD.VALUEFLAG=1 AND PD.PROCEDUREID=16
-											    	AND pd.CREATETIME>=TRUNC(SYSDATE)
-												)
-												SELECT
-												一烧产量.出窑数 ,
-												DECODE( NVL( 打磨缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 打磨缺陷数量, 0 ) / DECODE( NVL( 检验数.打磨出窑量, 1 ), 0, 1, NVL( 检验数.打磨出窑量, 1 ) ) ) * 100,'fm99990.00' ) || '%' ) as 打磨缺陷率,
-												DECODE( NVL( 擦洗缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 擦洗缺陷数量, 0 ) / DECODE( NVL( 检验数.擦洗出窑量, 1 ), 0, 1, NVL( 检验数.擦洗出窑量, 1 ) ) ) * 100,'fm99990.00' ) || '%' ) as 擦洗缺陷率
-												FROM  
-												缺陷
-												LEFT JOIN 检验数 on 1=1												
-												LEFT JOIN 一烧产量 ON 1=1";
+                string sqlStr = @"
+SELECT COUNT(DISTINCT pd.productiondataid) 出窑量
+      ,COUNT(DISTINCT CASE
+                 WHEN pd.goodsleveltypeid IN (4, 5) THEN
+                  pd.productiondataid
+                 ELSE
+                  NULL
+             END) 一烧产量
+      ,COUNT(DISTINCT CASE
+                 WHEN df.defectcode IN
+                      ('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35') THEN
+                  to_char(pd.productiondataid || df.barcode || df.defectcode)
+                 ELSE
+                  NULL
+             END) 擦洗缺陷量
+      ,to_char((COUNT(DISTINCT CASE
+                          WHEN df.defectcode IN
+                               ('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35') THEN
+                           to_char(pd.productiondataid || df.barcode || df.defectcode)
+                          ELSE
+                           NULL
+                      END) / COUNT(DISTINCT pd.productiondataid) * 100)
+              ,'fm99990.00') || '%' 擦洗缺陷率
+      ,COUNT(DISTINCT CASE
+                 WHEN df.defectcode IN
+                      ('10', '12', '13', '14', '15', '16', '17', '18', '19', '23', '25', '35') THEN
+                  to_char(pd.productiondataid || df.barcode || df.defectcode)
+                 ELSE
+                  NULL
+             END) 打磨缺陷量
+      ,to_char((COUNT(DISTINCT CASE
+                          WHEN df.defectcode IN
+                               ('10', '12', '13', '14', '15', '16', '17', '18', '19', '23', '25', '35') THEN
+                           to_char(pd.productiondataid || df.barcode || df.defectcode)
+                          ELSE
+                           NULL
+                      END) / COUNT(DISTINCT pd.productiondataid) * 100)
+              ,'fm99990.00') || '%' 打磨缺陷率
+
+  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')
+	 ";
                 //直接获取不分页数据
                 DataTable dt = conn.ExecuteDatatable(sqlStr);
                 string jsonStr = new JsonResult(dt).ToJson();

+ 1 - 1
wwwroot/main/Procedure/RefinementKanban/RefinementKanban.html

@@ -186,7 +186,7 @@
 			$.get('RefinementKanban.ashx?m=Alltotal', function (data) {
 				var json = JSON.parse(data);
 				if (json["success"] == true) {
-                    $('#scl').text( json["rows"][0]["出窑数"]);
+                    $('#scl').text(json["rows"][0]["一烧产量"] + "");
 					$('#dmqxl').text(json["rows"][0]["打磨缺陷率"]);
 					$('#cxqxl').text(json["rows"][0]["擦洗缺陷率"]);
 				}