Переглянути джерело

每窑,除了出窑数所有的列(包括去AA和后面的缺陷)都会随着后期改判(包括复检)的变化而增加或减少,去AA和后面的缺陷是不会随着回收合格而减少 修改后的第一次

姜永辉 8 місяців тому
батько
коміт
6c66d4eff8

+ 1 - 1
wwwroot/Web.config

@@ -14,7 +14,7 @@
   <appSettings>
     <add key="ProductCheckServer" value="http://10.0.8.2:1234"/>
 	  <!--验厂标识 true:  false: -->
-	<add key="FactoryInspectionFlag" value="false"/> 
+	<!--<add key="FactoryInspectionFlag" value="false"/>--> 
   </appSettings>
   <system.web>
     <customErrors mode="Off"/>

+ 82 - 45
wwwroot/mes/rpt/rpt008/rpt.ashx

@@ -77,19 +77,21 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                 conn.BeginTransaction();
                 try
                 {
-                        string sqltmp = @" insert into TMP_PROD_HG_BZ(FLAG,GROUTINGDAILYDETAILID,OUT_K_B,OUT_K_R,OUT_K_ALL,
-                                                            OK_B,OK_R,OK_H,OK_ALL,END_B,END_R,END_H,END_ALL,HGP,BZGP)(SELECT 1 FLAG
-                                      ,TP.GROUTINGDAILYDETAILID
+                        string sqltmp = @" insert into TMP_PROD_HG_BZ(FLAG,GROUTINGDAILYDETAILID,MPDID,OUT_K_B,OUT_K_R,OUT_K_ALL,
+                                                            OK_B,OK_R,OK_H,OK_RH,OK_ALL,END_B,END_R,END_H,END_RH,END_ALL,HGP,BZGP)(SELECT 1 FLAG
+                                      ,TP.GROUTINGDAILYDETAILID,null  mpdid
                                       ,decode(TP.PROCEDUREID, 13, 1, 0) OUT_K_B
                                       ,decode(TP.PROCEDUREID, 35, 1, 0) OUT_K_R
                                       ,1 OUT_K_ALL
                                       ,0 OK_B
                                       ,0 OK_R
                                       ,0 OK_H
+                                      ,0 OK_RH
                                       ,0 OK_ALL
                                       ,0 END_B
                                       ,0 END_R
                                       ,0 END_H
+                                      ,0 END_RH
                                       ,0 END_ALL
                                       ,0 hgp
                                       ,0 bzgp
@@ -102,56 +104,43 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                    
                                  UNION ALL
                                 SELECT 2 FLAG
-                                      ,P.GROUTINGDAILYDETAILID
+                                      ,P.GROUTINGDAILYDETAILID,null  mpdid
                                       ,0 OUT_K_B
                                       ,0 OUT_K_R
                                       ,0 OUT_K_ALL
                                       ,CASE
-                                         WHEN P.PROCEDUREID = 13 AND 
-                                              RPD.Productiondataid IS NULL  AND pdd.checktime >= date'" + Convert.ToDateTime(context.Request["datebeginMaster"]).ToString("yyyy-MM-dd")+@"'
-                                           AND pdd.checktime <= date'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).ToString("yyyy-MM-dd")+@"' THEN
+                                         WHEN pdd.PROCEDUREID = 13 AND 
+                                              RPD.Productiondataid IS NULL  and pdd.goodsleveltypeid IN (4, 5) THEN
                                           1
                                          ELSE
                                           0
                                        END OK_B
                                       ,CASE
-                                         WHEN P.PROCEDUREID = 35  AND pdd.checktime >= date'" + Convert.ToDateTime(context.Request["datebeginMaster"]).ToString("yyyy-MM-dd")+@"'
-                                           AND pdd.checktime <= date'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).ToString("yyyy-MM-dd")+@"' THEN
+                                         WHEN pdd.PROCEDUREID = 35 AND 
+                                              RPD.Productiondataid IS NULL   and pdd.goodsleveltypeid IN (4, 5)  THEN
                                           1
                                          ELSE
                                           0
                                        END OK_R
-                                      ,CASE
-                                         WHEN P.PROCEDUREID = 13 AND RPD.Productiondataid IS NOT NULL THEN
-                                          1
-                                         ELSE
-                                          0
-                                       END OK_H
+                                      ,0 OK_H
+                                      ,0 OK_RH
                                       ,1 OK_ALL
                                       ,0 END_B
                                       ,0 END_R
                                       ,0 END_H
+                                      ,0 END_RH
                                       ,0 END_ALL
                                       ,0 hgp
                                       ,0 bzgp
-                                  FROM (SELECT TP.PRODUCTIONDATAID
-                                              ,TP.GROUTINGDAILYDETAILID
-                                              ,TP.PROCEDUREID
-                                              --,MAX(PMAX.PRODUCTIONDATAID) AS MAXPRODUCTIONDATAID
+                                  FROM (SELECT MAX(tp.productiondataid) productiondataid
+                                              ,TP.GROUTINGDAILYDETAILID 
                                           FROM TP_PM_PRODUCTIONDATA TP
-                                         -- LEFT JOIN TP_PM_PRODUCTIONDATA PMAX
-                                         --   ON PMAX.GROUTINGDAILYDETAILID = TP.GROUTINGDAILYDETAILID
-                                        --   AND PMAX.PRODUCTIONDATAID < TP.PRODUCTIONDATAID
-                                         --  AND PMAX.VALUEFLAG = '1'
-                                         WHERE TP.CHECKBATCHNO = 1
-                                           AND TP.GOODSLEVELTYPEID IN (4, 5)
-                                           AND TP.PROCEDUREID IN (13, 35)
-                                           AND TP.CREATETIME >= date'" + Convert.ToDateTime(context.Request["datebeginMaster"]).ToString("yyyy-MM-dd")+@"'
-                                           AND TP.CREATETIME <= date'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).ToString("yyyy-MM-dd")+@"'
+                                        
+                                         WHERE   TP.PROCEDUREID IN (13, 35)
+                                           AND TP.checktime >= date'" + Convert.ToDateTime(context.Request["datebeginMaster"]).ToString("yyyy-MM-dd")+@"'
+                                           AND TP.checktime <= date'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).ToString("yyyy-MM-dd")+@"'
                                        
-                                        -- GROUP BY TP.PRODUCTIONDATAID
-                                         ---        ,TP.GROUTINGDAILYDETAILID
-                                         --        ,TP.PROCEDUREID
+                                         GROUP BY TP.GROUTINGDAILYDETAILID 
                                             ) P  inner JOIN tp_pm_productiondata pdd ON pdd.productiondataid = p.productiondataid
                                    LEFT JOIN tp_pm_productiondata rpd
                                             ON rpd.groutingdailydetailid = p.groutingdailydetailid
@@ -162,14 +151,53 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                            AND rpd.procedureid IN (20, 22, 23, 37, 41)
                                   
                                 UNION ALL
+                                    SELECT 2 FLAG
+                                      ,P.GROUTINGDAILYDETAILID,MAX(rpd.productiondataid) mpdid
+                                      ,0 OUT_K_B
+                                      ,0 OUT_K_R
+                                      ,0 OUT_K_ALL
+                                      ,0 OK_B
+                                      ,0 OK_R
+                                      ,CASE WHEN SUM(rpd.productiondataid) > 0 and pdd.PROCEDUREID = 13 and   pdd.goodsleveltypeid IN (4, 5)   THEN 1  ELSE 0
+                                       END OK_H
+                                      ,CASE WHEN SUM(rpd.productiondataid) > 0 and pdd.PROCEDUREID = 35 and   pdd.goodsleveltypeid IN (4, 5)   THEN 1  ELSE 0
+                                       END OK_RH
+                                      ,1 OK_ALL
+                                      ,0 END_B
+                                      ,0 END_R
+                                      ,0 END_H
+                                      ,0 END_RH
+                                      ,0 END_ALL
+                                      ,0 hgp
+                                      ,0 bzgp
+                                  FROM (SELECT MAX(tp.productiondataid) productiondataid
+                                              ,TP.GROUTINGDAILYDETAILID 
+                                          FROM TP_PM_PRODUCTIONDATA TP
+                                        
+                                         WHERE   TP.PROCEDUREID IN (13, 35)
+                                           AND TP.createtime >= date'" + Convert.ToDateTime(context.Request["datebeginMaster"]).ToString("yyyy-MM-dd")+@"'
+                                           AND TP.createtime <= date'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).ToString("yyyy-MM-dd")+@"'
+                                       
+                                         GROUP BY TP.GROUTINGDAILYDETAILID 
+                                            ) P  inner JOIN tp_pm_productiondata pdd ON pdd.productiondataid = p.productiondataid
+                                   LEFT JOIN tp_pm_productiondata rpd
+                                            ON rpd.groutingdailydetailid = p.groutingdailydetailid
+                                           AND rpd.productiondataid < p.productiondataid
+                                           and rpd.kilncarbatchno = pdd.kilncarbatchno
+                                           AND rpd.valueflag = '1' 
+                                              /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+                                           AND rpd.procedureid IN (20, 22, 23, 37, 41)
+                                   GROUP BY p.groutingdailydetailid,pdd.goodsleveltypeid ,pdd.PROCEDUREID 
+                                UNION ALL
                                 SELECT 3 FLAG
-                                      ,TP_PM_ProductionData.groutingdailydetailid
+                                      ,TP_PM_ProductionData.groutingdailydetailid,null  mpdid
                                       ,0 OUT_K_B
                                       ,0 OUT_K_R
                                       ,0 OUT_K_ALL
                                       ,0 OK_B
                                       ,0 OK_R
                                       ,0 OK_H
+                                      ,0 OK_RH
                                       ,0 OK_ALL
                                       ,CASE
                                          WHEN SUM(CASE
@@ -205,8 +233,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                           1
                                          ELSE
                                           0
-                                       END END_H,
-                                       1 END_ALL
+                                       END END_H
+                                      ,0 END_RH
+                                      ,1 END_ALL
                                       ,0 hgp
                                       ,0 bzgp
                                    from TP_PM_ProductionData INNER JOIN  TP_PM_ProductionData TP on TP.barcode=TP_PM_ProductionData.BARCODE and TP.CHECKBATCHNO = 1  and TP.VALUEFLAG=1
@@ -225,17 +254,19 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 
                          UNION ALL
                           SELECT 4 FLAG
-                                    ,P.GROUTINGDAILYDETAILID
+                                    ,P.GROUTINGDAILYDETAILID,null  mpdid
                                     ,0 OUT_K_B
                                     ,0 OUT_K_R
                                     ,0 OUT_K_ALL
                                     ,0 OK_B
                                     ,0 OK_R
                                     ,0 OK_H
+                                    ,0 OK_RH
                                     ,0 OK_ALL
                                     ,0 END_B
                                     ,0 END_R
                                     ,0 END_H
+                                    ,0 END_RH
                                     ,0 END_ALL
                                     ,CASE
                                    WHEN rpd.productiondataid IS NOT NULL AND rpd.goodsleveltypeid NOT IN (4, 5) 
@@ -274,18 +305,20 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                        AND rpd.productiondataid < rpdd.productiondataid AND rpdd.valueflag = '1')
                                    UNION ALL   
                                     SELECT 5 FLAG
-                                            ,TP_PM_ProductionData.groutingdailydetailid
+                                            ,TP_PM_ProductionData.groutingdailydetailid,null  mpdid
                                             ,0 OUT_K_B
                                             ,0 OUT_K_R
                                             ,0 OUT_K_ALL
                                             ,0 OK_B
                                             ,0 OK_R
                                             ,0 OK_H
+                                            ,0 OK_RH
                                             ,0 OK_ALL
                                             ,0 END_B
                                             ,0 END_R
-                                            ,0 END_H,
-                                             0 END_ALL
+                                            ,0 END_H
+                                            ,0 END_RH
+                                            , 0 END_ALL
                                             ,0 hgp
                                             ,CASE
                                                WHEN  rpd.productiondataid is null AND pds.productiondataid IS NULL   THEN
@@ -347,12 +380,13 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                       ,T.出窑数_本烧
                       ,T.出窑数_重烧
                       ,T.合格数_本烧
+                      ,T.合格数_本烧回收
                       ,T.合格数_重烧
-                      ,T.合格数_回收                     
+                      ,T.合格数_重烧回收                    
                       
                       ,T.合格数_改判,T.合格数_合计
                       --,NVL(ROUND(T.合格数_合计 / DECODE(T.出窑数, 0, 1, T.出窑数), 4) * 100, 0) || '%' AS 合格率
-                      ,NVL(ROUND((T.合格数_本烧 + 合格数_回收) / DECODE(T.出窑数_本烧, 0, 1, T.出窑数_本烧), 4) * 100, 0) || '%' AS 合格率
+                      ,NVL(ROUND((T.合格数_本烧 + 合格数_本烧回收+合格数_重烧回收) / DECODE(T.出窑数_本烧, 0, 1, T.出窑数_本烧), 4) * 100, 0) || '%' AS 合格率
                       ,NVL(ROUND(合格数_合计 / DECODE(T.出窑数_本烧, 0, 1, T.出窑数_本烧), 4) * 100, 0) || '%' AS 综合合格率
                       ,T.包装数_本烧
                       ,T.包装数_重烧
@@ -373,10 +407,11 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                               ,SUM(TF.OUT_K_R) AS 出窑数_重烧
                               ,SUM(TF.OUT_K_ALL) AS 出窑数
                               ,SUM(TF.OK_B) AS 合格数_本烧
+                              ,SUM(TF.OK_H) AS 合格数_本烧回收
                               ,SUM(TF.OK_R) AS 合格数_重烧
-                              ,SUM(TF.OK_H) AS 合格数_回收
+                              ,SUM(TF.OK_RH) AS 合格数_重烧回收
                               ,SUM(TF.hgp) AS 合格数_改判
-                              ,SUM(tf.ok_b + tf.ok_r+tf.ok_h+TF.hgp) AS 合格数_合计
+                              ,SUM(tf.ok_b + tf.ok_r+tf.ok_h+TF.hgp+TF.OK_RH) AS 合格数_合计
                               ,SUM(TF.END_B) 包装数_本烧
                               ,SUM(TF.END_R) 包装数_重烧
                               ,SUM(TF.END_H) 包装数_回收
@@ -418,12 +453,13 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                       ,T.出窑数_本烧
                       ,T.出窑数_重烧
                       ,T.合格数_本烧
+                      ,T.合格数_本烧回收
                       ,T.合格数_重烧
-                      ,T.合格数_回收
+                      ,T.合格数_重烧回收
                       
                       ,t.合格数_改判,T.合格数_合计
                       --,NVL(ROUND(T.合格数_合计 / DECODE(T.出窑数, 0, 1, T.出窑数), 4) * 100, 0) || '%' AS 合格率
-                      ,NVL(ROUND((T.合格数_本烧 + 合格数_回收) / DECODE(T.出窑数_本烧, 0, 1, T.出窑数_本烧), 4) * 100, 0) || '%' AS 合格率
+                      ,NVL(ROUND((T.合格数_本烧 + 合格数_本烧回收 + 合格数_重烧回收) / DECODE(T.出窑数_本烧, 0, 1, T.出窑数_本烧), 4) * 100, 0) || '%' AS 合格率
                       ,NVL(ROUND(合格数_合计 / DECODE(T.出窑数_本烧, 0, 1, T.出窑数_本烧), 4) * 100, 0) || '%' AS 综合合格率
                       ,T.包装数_本烧
                       ,T.包装数_重烧
@@ -442,8 +478,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                               ,SUM(TF.OUT_K_R) AS 出窑数_重烧
                               ,SUM(TF.OUT_K_ALL) AS 出窑数
                               ,SUM(TF.OK_B) AS 合格数_本烧
+                                ,SUM(TF.OK_H) AS 合格数_本烧回收
                               ,SUM(TF.OK_R) AS 合格数_重烧
-                              ,SUM(TF.OK_H) AS 合格数_回收
+                              ,SUM(TF.OK_RH) AS 合格数_重烧回收
                               ,SUM(tf.hgp) AS 合格数_改判
                               ,SUM(tf.ok_b + tf.ok_r+tf.ok_h+tf.hgp) AS 合格数_合计
                               ,SUM(TF.END_B) 包装数_本烧

+ 4 - 4
wwwroot/mes/rpt/rpt014/rpt.ashx

@@ -233,11 +233,11 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                            PD.PROCEDUREID = @PROCEDUREID@
                             -- AND PD.VALUEFLAG = '1'
                            -- AND PD.CHECKBATCHNO = 1  
-                           AND PD.CREATETIME >= @DATEBEGIN@
-                           AND PD.CREATETIME < @DATEEND@ 
+                          -- AND PD.CREATETIME >= @DATEBEGIN@
+                          -- AND PD.CREATETIME < @DATEEND@ 
 								{strFactoryInspection}			
-						 --  AND PD.CHECKTIME >= @DATEBEGIN@
-                         --  AND PD.CHECKTIME < @DATEEND@
+						  AND PD.CHECKTIME >= @DATEBEGIN@
+                           AND PD.CHECKTIME < @DATEEND@
                            AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
                             AND PD.GOODSCODE IN({goodsCodes})
                            AND GL.BUILDINGNO {BUILDINGNO} 

+ 1359 - 287
wwwroot/mes/rpt/rpt014/rptnew.ashx

@@ -316,28 +316,27 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 			            FROM
 				            ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
 										  ,PD.GOODSID,PD.BARCODE
-										  ,PD.GROUTINGDAILYDETAILID ,PD.KILNCARBATCHNO
+										  ,PD.GROUTINGDAILYDETAILID 
 							 FROM TP_PM_PRODUCTIONDATA PD 
 							  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
 								WHERE
                            PD.PROCEDUREID = @PROCEDUREID@
                             -- AND PD.VALUEFLAG = '1'
                             --AND PD.CHECKBATCHNO = 1  
-                           AND PD.CREATETIME >= @DATEBEGIN@
-                           AND PD.CREATETIME < @DATEEND@
+                          -- AND PD.CREATETIME >= @DATEBEGIN@
+                          -- AND PD.CREATETIME < @DATEEND@
 						   AND PD.CHECKTIME >= @DATEBEGIN@
                            AND PD.CHECKTIME < @DATEEND@
                            AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
                             AND PD.GOODSCODE IN({goodsCodes})
                            AND GL.BUILDINGNO {BUILDINGNO} 
-							 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID ,PD.KILNCARBATCHNO 
-							) PD
+							 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID 
+							) PD  INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
 			                LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
-							 and pmax.KILNCARBATCHNO= pd.KILNCARBATCHNO	
+							 and pmax.KILNCARBATCHNO= PDD.KILNCARBATCHNO	
 			                AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1'
 				            /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
-				            AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
-				             INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+				            AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)		            
 			             
 			            GROUP BY
 				            PD.BARCODE,
@@ -359,7 +358,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 			            FROM
 				            ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
 										  ,PD.GOODSID,PD.BARCODE
-										  ,PD.GROUTINGDAILYDETAILID ,pd.KILNCARBATCHNO
+										  ,PD.GROUTINGDAILYDETAILID  
 							 FROM TP_PM_PRODUCTIONDATA PD 
 							  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
 								WHERE
@@ -372,12 +371,11 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                             AND PD.GOODSCODE IN({goodsCodes})
                            AND GL.BUILDINGNO {BUILDINGNO}
 							 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID ,pd.KILNCARBATCHNO   
-							) PD
-			                LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID  and pmax.KILNCARBATCHNO= pd.KILNCARBATCHNO
+							) PD  INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+			                LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID  and pmax.KILNCARBATCHNO= PDD.KILNCARBATCHNO
 			                AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1'
 				            /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
-				            AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
-				             INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+				            AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)				            
 			             
 			            GROUP BY
 				            PD.BARCODE,
@@ -1135,7 +1133,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                 sqlStr = sqlStr.Replace("@PROCEDUREID@", pid != "" ? pid : " NULL ");
                 sqlStr = sqlStr.Replace("@GOODSCODE@", " '' ");
                 sqlStr = sqlStr.Replace("@GOODSNAME@", " '' ");
-					// 250717 存储过程的临时表 不好用
+                // 250717 存储过程的临时表 不好用
                 DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
 
                 //          string nameGuid = string.Empty;
@@ -1190,73 +1188,108 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                 context.Response.Write(jsonStr);
             }
         }
-        // 结转
-        if (context.Request["m"].ToString() == "jiezhauang")
+		 // 结转250731
+		if (context.Request["m"].ToString() == "jiezhauang")
         {
-            using (IDataAccess conn = DataAccess.Create())
+            #region 产品编码
+            if (context.Request["GOODSCODE"] != "" || context.Request["GOODSCODE"] != null)
             {
-                string buding = null;
-                if (context.Request["buildingnoMaster"].ToString() != "12")
-                {
-                    buding = "IN('" + context.Request["buildingnoMaster"] + "')";
-                }
-                else
-                {
-                    buding = "IN(" + "'1#','2#'" + ")";
-                }
-                #region 可选缺陷  删除 插入
-                //d可选缺陷  删除 插入
-                string[] denames = new string[] { };
-                if (context.Request["defectMaster[]"] is object)
+                goodsCodes = context.Request["GOODSCODE"].ToString().Split(',');
+            }
+            string goodssql = @"SELECT
+			                                     GOODSCODE 
+			                                     FROM TP_MST_GOODS where 1=1";
+            if (goodsCodes.Length > 1 || goodsCodes[0] != "")
+            {
+                if (context.Request["isNotcheck"].ToString() == "1")
                 {
-                    if (context.Request["defectMaster[]"].ToString() != "")
+                    goodssql += @" AND GOODSCODE NOT LIKE ('%" + goodsCodes[0].ToUpper() + "%') ";
+                    for (int i = 1; i < goodsCodes.Length; i++)
                     {
-                        denames = context.Request["defectMaster[]"].ToString().Split(',');
+                        goodssql += @" AND GOODSCODE NOT LIKE ('%" + goodsCodes[i].ToUpper() + "%') ";
                     }
                 }
-                if (context.Request["defectMaster"] is object)
+                else
                 {
-                    if (context.Request["defectMaster"].ToString() != "")
+                    goodssql += @" AND GOODSCODE  LIKE ('%" + goodsCodes[0].ToUpper() + "%') ";
+                    for (int i = 1; i < goodsCodes.Length; i++)
                     {
-                        denames = context.Request["defectMaster"].ToString().Split(',');
+                        goodssql += @" OR GOODSCODE  LIKE ('%" + goodsCodes[i].ToUpper() + "%') ";
                     }
+                }
+            }
+
+            if (!string.IsNullOrEmpty(context.Request["goodsnameMaster"].ToString()))
+            {
+                goodssql += @" AND  GOODSNAME  LIKE ('%" + context.Request["goodsnameMaster"].ToString() + "%') ";
+            }
+
+            #endregion
+            #region 取缺陷拼接串
+            if (context.Request["buildingnoMaster"].ToString() != "12")
+            {
+                buding = "IN('" + context.Request["buildingnoMaster"] + "')";
+            }
+            else
+            {
+                buding = "IN(" + "'1#','2#'" + ")";
+            }
 
+            #endregion
+            #region 可选缺陷  删除 插入
+            //d可选缺陷  删除 插入
+            string[] denames = new string[] { };
+            if (context.Request["defectMaster[]"] is object)
+            {
+                if (context.Request["defectMaster[]"].ToString() != "")
+                {
+                    denames = context.Request["defectMaster[]"].ToString().Split(',');
                 }
-                // 判断可选缺陷 是否发生变化,如果没有变化则不用调用数据库
-                bool flg = true;
-                for (int i = 0; i < denames.Length; i++)
+            }
+            if (context.Request["defectMaster"] is object)
+            {
+                if (context.Request["defectMaster"].ToString() != "")
                 {
-                    if (string.IsNullOrEmpty(denames[i]))
-                    {
-                        continue;
-                    }
-                    defectallnames.Remove(denames[i]);
-                    // 前台传过来的 可选缺陷的字符串
-                    if (!context.Request["name"].ToString().Contains(denames[i]))
-                    {
-                        flg = false;
-                        break;
-                    }
+                    denames = context.Request["defectMaster"].ToString().Split(',');
+                }
+
+            }
+            // 判断可选缺陷 是否发生变化,如果没有变化则不用调用数据库
+            bool flg = true;
+            for (int i = 0; i < denames.Length; i++)
+            {
+                if (string.IsNullOrEmpty(denames[i]))
+                {
+                    continue;
                 }
-                if (context.Request["name"].ToString().Split(',').Length != denames.Length)
+                int index = defectallnames.FindIndex(item => item.Equals(denames[i]));
+                defectallnames.Remove(denames[i]);
+
+                // 前台传过来的 可选缺陷的字符串
+                if (!context.Request["name"].ToString().Contains(denames[i]))
                 {
                     flg = false;
                 }
-                //d可选缺陷  删除 插入
-                if (!flg)
+            }
+            if (context.Request["name"].ToString().Split(',').Length != denames.Length)
+            {
+                flg = false;
+            }
+            //d可选缺陷  删除 插入
+            if (!flg)
+            {
+                using (IDataAccess conn = DataAccess.Create())
                 {
-                    using (IDataAccess connn = DataAccess.Create())
-                    {
-                        connn.ExecuteNonQuery(@"delete from tp_mst_defectgroup_user where USERID = @USERID@",
-                            new CDAParameter("USERID", context.Request["userId"] + ""));
+                    conn.ExecuteNonQuery(@"delete from tp_mst_defectgroup_user where USERID = @USERID@",
+                        new CDAParameter("USERID", context.Request["userId"] + ""));
 
-                        for (int i = 0; i < denames.Length; i++)
+                    for (int i = 0; i < denames.Length; i++)
+                    {
+                        if (string.IsNullOrEmpty(denames[i]))
                         {
-                            if (string.IsNullOrEmpty(denames[i]))
-                            {
-                                continue;
-                            }
-                            int result = connn.ExecuteNonQuery(@"
+                            continue;
+                        }
+                        int result = conn.ExecuteNonQuery(@"
 					INSERT INTO tp_mst_defectgroup_user (  
 						DEFECTGROUPNAME, 
 						ACCOUNTID,CREATEUSERID,USERID
@@ -1265,235 +1298,1274 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 						@ACCOUNTID@,@CREATEUSERID@,@USERID@
 					)
 					",
-                           new CDAParameter("DEFECTGROUPNAME", denames[i]),
-                           new CDAParameter("ACCOUNTID", context.Request["accountId"] + ""),
-                           new CDAParameter("CREATEUSERID", context.Request["userId"] + ""),
-                           new CDAParameter("USERID", context.Request["userId"] + "")
-                        );
-                        }
+                       new CDAParameter("DEFECTGROUPNAME", denames[i]),
+                       new CDAParameter("ACCOUNTID", context.Request["accountId"] + ""),
+                       new CDAParameter("CREATEUSERID", context.Request["userId"] + ""),
+                       new CDAParameter("USERID", context.Request["userId"] + "")
+                    );
                     }
                 }
-                #endregion
-
-                string sqlStr = @"
-					SELECT
-		                
-						产品名称 ,
-						DECODE(产品类别, null, '合计',产品类别) 产品类别,
-						SUM(出窑数) AS 出窑数,
-						SUM(U级) AS U级,
-						SUM(A级) AS A级,
-						SUM(AA级) AS AA级,
-						SUM(B级) AS B级,
-						SUM(R级) AS R级,
-						SUM(冷补数) AS 冷补数,
-						SUM(L级 ) AS L级,
-						SUM(F级) AS F级,
-						SUM(Z级) AS Z级,
-						DEcode(ROUND(((nvl(sum(U级),0)+nvl(sum(A级),0)+ nvl(sum(AA级),0))/ sum(出窑数)), 4 ) *100,0,NULL,ROUND(  ((nvl(sum(U级),0)+nvl(sum(A级),0)+ nvl(sum(AA级),0))/ sum(出窑数)), 4 ) *100)  AS UA率,
-						SUM(原料缺陷_铁脏 ) AS 原料缺陷_铁脏,
-		                SUM(原料缺陷_铜脏) AS 原料缺陷_铜脏,
-		                SUM(原料缺陷_合计) AS 原料缺陷_合计,
-		                SUM(成型缺陷_糙活) AS 成型缺陷_糙活,
-		                SUM(成型缺陷_成裂) AS 成型缺陷_成裂,
-		                SUM(成型缺陷_成脏) AS 成型缺陷_成脏,
-		                SUM(成型缺陷_成走) AS 成型缺陷_成走,
-		                SUM(成型缺陷_孔不良) AS 成型缺陷_孔不良,
-		                SUM(成型缺陷_漏气) AS 成型缺陷_漏气,
-		                SUM(成型缺陷_泥绺) AS 成型缺陷_泥绺,
-		                SUM(成型缺陷_排水不良) AS 成型缺陷_排水不良,
-		                SUM(成型缺陷_坯脏) AS 成型缺陷_坯脏,
-		                SUM(成型缺陷_注泡) AS 成型缺陷_注泡,
-		                SUM(成型缺陷_棕眼) AS 成型缺陷_棕眼,
-		                SUM(成型缺陷_炸圈) AS 成型缺陷_炸圈,
-		                SUM(成型缺陷_卡球) AS 成型缺陷_卡球,
-		                SUM(成型缺陷_合计) AS 成型缺陷_合计,
-		                SUM(施釉缺陷_爆釉) AS 施釉缺陷_爆釉,
-		                SUM(施釉缺陷_标不良) AS 施釉缺陷_标不良 ,
-		                SUM(施釉缺陷_脱釉) AS 施釉缺陷_脱釉 ,
-		                 SUM(施釉缺陷_釉薄) AS 施釉缺陷_釉薄,
-		                 SUM(施釉缺陷_釉磕) AS 施釉缺陷_釉磕 ,
-		                 SUM(施釉缺陷_釉绺) AS 施釉缺陷_釉绺 ,
-		                 SUM(施釉缺陷_釉脏) AS 施釉缺陷_釉脏 ,
-		                 SUM(施釉缺陷_釉粘) AS 施釉缺陷_釉粘,
-		                 SUM(施釉缺陷_釉泡) AS 施釉缺陷_釉泡,
-		                 SUM(施釉缺陷_波纹) AS 施釉缺陷_波纹,
-		                 SUM(施釉缺陷_合计) AS 施釉缺陷_合计,
-		                 SUM(循环线施釉缺陷_爆釉) AS 循环线施釉缺陷_爆釉 ,
-		                 SUM(循环线施釉缺陷_标不良) AS 循环线施釉缺陷_标不良 ,
-		                 SUM(循环线施釉缺陷_脱釉) AS 循环线施釉缺陷_脱釉,
-		                 SUM(循环线施釉缺陷_釉薄) AS 循环线施釉缺陷_釉薄,
-		                 SUM(循环线施釉缺陷_釉磕) AS 循环线施釉缺陷_釉磕,
-		                 SUM(循环线施釉缺陷_釉绺) AS 循环线施釉缺陷_釉绺,
-		                 SUM(循环线施釉缺陷_釉脏) AS 循环线施釉缺陷_釉脏,
-		                 SUM(循环线施釉缺陷_釉粘) AS 循环线施釉缺陷_釉粘,
-		                 SUM(循环线施釉缺陷_釉泡) AS 循环线施釉缺陷_釉泡,
-		                 SUM(循环线施釉缺陷_波纹) AS 循环线施釉缺陷_波纹,
-		                 SUM(循环线施釉缺陷_合计) AS 循环线施釉缺陷_合计,
-						 SUM(施釉_合计) AS 施釉_合计,
-		                 SUM(出装窑缺陷_蹭釉) AS 出装窑缺陷_蹭釉,
-		                 SUM(出装窑缺陷_出磕) AS 出装窑缺陷_出磕,
-		                 SUM(出装窑缺陷_划釉) AS 出装窑缺陷_划釉,
-		                 SUM(出装窑缺陷_落脏) AS 出装窑缺陷_落脏,
-		                 SUM(出装窑缺陷_装磕) AS 出装窑缺陷_装磕,
-		                 SUM(出装窑缺陷_装粘) AS出装窑缺陷_装粘,
-		                 SUM(出装窑缺陷_装脏) AS 出装窑缺陷_装脏,
-		                 SUM(出装窑缺陷_装走) AS 出装窑缺陷_装走,
-		                 SUM(出装窑缺陷_合计) AS 出装窑缺陷_合计,
-		                 SUM(烧窑缺陷_过火泡) AS 烧窑缺陷_过火泡,
-		                 SUM(烧窑缺陷_桔釉) AS 烧窑缺陷_桔釉,
-		                 SUM(烧窑缺陷_麻坑) AS 烧窑缺陷_麻坑,
-		                 SUM(烧窑缺陷_烧裂) AS 烧窑缺陷_烧裂,
-		                 SUM(烧窑缺陷_烧生) AS 烧窑缺陷_烧生,
-		                 SUM(烧窑缺陷_窑脏) AS 烧窑缺陷_窑脏,
-		                 SUM(烧窑缺陷_烧炸) AS 烧窑缺陷_烧炸,
-		                 SUM(烧窑缺陷_烟熏) AS 烧窑缺陷_烟熏,
-		                 SUM(烧窑缺陷_水滴) AS 烧窑缺陷_水滴,
-		                 SUM(烧窑缺陷_风惊) AS 烧窑缺陷_风惊,
-		                 SUM(烧窑缺陷_针孔) AS 烧窑缺陷_针孔,
-		                 SUM(烧窑缺陷_合计) AS 烧窑缺陷_合计,
-		                 SUM(其他缺陷_崩脏) AS 其他缺陷_崩脏,
-		                 SUM(其他缺陷_坯磕) AS 其他缺陷_坯磕,
-		                 SUM(其他缺陷_研磨) AS 其他缺陷_研磨,
-		                 SUM(其他缺陷_复烧修补不良) AS 其他缺陷_复烧修补不良,
-		                 SUM(其他缺陷_合计) AS 其他缺陷_合计,
-		                 SUM(研磨缺陷_眼) AS 研磨缺陷_眼,
-		                 SUM(研磨缺陷_底) AS 研磨缺陷_底,
-		                 SUM(研磨缺陷_底和面) AS 研磨缺陷_底和面 ,
-		                 SUM(研磨缺陷_面) AS 研磨缺陷_面,
-		                 SUM(研磨缺陷_边) AS 研磨缺陷_边,
-		                 SUM(研磨缺陷_研磨配盖) AS 研磨缺陷_研磨配盖,
-		                 SUM(研磨缺陷_合计) AS 研磨缺陷_合计,
-		                 SUM(合计) AS 合计
-					FROM(
-									SELECT
-									GOODSTYPENAME AS 产品类别,
-													GOODSNAME AS 产品名称 ,
-													sum(OUT_K) AS  出窑数 ,
-									sum(COUNT_U4) AS U级,
-									sum(COUNT_AB) AS A级,
-									sum(COUNT_AA) AS AA级,
-									sum(COUNT_B) AS B级,
-									sum(COUNT_R) AS R级,
-									sum(LB_NUM)  AS 冷补数,
-									sum(COUNT_L) AS L级 ,
-									sum(COUNT_U7) AS F级,
-									sum(COUNT_Z) AS Z级,
-									DEcode(ROUND(  ((nvl(sum(COUNT_U4),0)+nvl(sum(COUNT_AB),0)+ nvl(sum(COUNT_AA),0))/ sum(OUT_K)), 4 ) *100,0,NULL,ROUND(  ((nvl(sum(COUNT_U4),0)+nvl(sum(COUNT_AB),0)+ nvl(sum(COUNT_AA),0))/ sum(OUT_K)), 4 ) *100)  AS UA率,
-									sum( CNUM1 ) AS 原料缺陷_铁脏 ,
-									sum( CNUM2 ) AS 原料缺陷_铜脏,
-									sum( CNUM3 ) AS 原料缺陷_合计,
-									sum( CNUM4 ) AS 成型缺陷_糙活,
-									sum( CNUM5 ) AS 成型缺陷_成裂,
-									sum( CNUM6 ) AS 成型缺陷_成脏,
-									sum( CNUM7 ) AS 成型缺陷_成走,
-									sum( CNUM8 ) AS 成型缺陷_孔不良,
-									sum( CNUM9 ) AS 成型缺陷_漏气,
-									sum( CNUM10 ) AS 成型缺陷_泥绺,
-									sum( CNUM11 ) AS 成型缺陷_排水不良,
-									sum( CNUM12 ) AS 成型缺陷_坯脏,
-									sum( CNUM13 ) AS 成型缺陷_注泡,
-									sum( CNUM14 ) AS 成型缺陷_棕眼,
-									sum( CNUM15 ) AS 成型缺陷_炸圈,
-									sum( CNUM16 ) AS 成型缺陷_卡球,
-									sum( CNUM17 ) AS 成型缺陷_合计,
-									sum( CNUM18 ) AS 施釉缺陷_爆釉,
-									sum( CNUM19 ) AS 施釉缺陷_标不良,
-									sum( CNUM20 ) AS 施釉缺陷_脱釉,
-									sum( CNUM21 ) AS 施釉缺陷_釉薄,
-									sum( CNUM22 ) AS 施釉缺陷_釉磕,
-									sum( CNUM23 ) AS 施釉缺陷_釉绺,
-									sum( CNUM24 ) AS 施釉缺陷_釉脏,
-									sum( CNUM25 ) AS 施釉缺陷_釉粘,
-									sum( CNUM26 ) AS 施釉缺陷_釉泡,
-									sum( CNUM27 ) AS 施釉缺陷_波纹,
-									sum( CNUM28 ) AS 施釉缺陷_合计,
-									sum( CNUM29 ) AS 循环线施釉缺陷_爆釉,
-									sum( CNUM30 ) AS 循环线施釉缺陷_标不良,
-									sum( CNUM31 ) AS 循环线施釉缺陷_脱釉,
-									sum( CNUM32 ) AS 循环线施釉缺陷_釉薄,
-									sum( CNUM33 ) AS 循环线施釉缺陷_釉磕,
-									sum( CNUM34 ) AS 循环线施釉缺陷_釉绺,
-									sum( CNUM35 ) AS 循环线施釉缺陷_釉脏,
-									sum( CNUM36 ) AS 循环线施釉缺陷_釉粘,
-									sum( CNUM37 ) AS 循环线施釉缺陷_釉泡,
-									sum( CNUM38 ) AS 循环线施釉缺陷_波纹,
-									sum( CNUM39 ) AS 循环线施釉缺陷_合计,
-									sum(CNUM39) + sum (CNUM28) AS 施釉_合计,
-									sum( CNUM40 ) AS 出装窑缺陷_蹭釉,
-									sum( CNUM41 ) AS 出装窑缺陷_出磕,
-									sum( CNUM42 ) AS 出装窑缺陷_划釉,
-									sum( CNUM43 ) AS 出装窑缺陷_落脏,
-									sum( CNUM44 ) AS 出装窑缺陷_装磕,
-									sum( CNUM45 ) AS 出装窑缺陷_装粘,
-									sum( CNUM46 ) AS 出装窑缺陷_装脏,
-									sum( CNUM47 ) AS 出装窑缺陷_装走,
-									sum( CNUM48 ) AS 出装窑缺陷_合计,
-									sum( CNUM49 ) AS 烧窑缺陷_过火泡,
-									sum( CNUM50 ) AS 烧窑缺陷_桔釉,
-									sum( CNUM51 ) AS 烧窑缺陷_麻坑,
-									sum( CNUM52 ) AS 烧窑缺陷_烧裂,
-									sum( CNUM53 ) AS 烧窑缺陷_烧生,
-									sum( CNUM54 ) AS 烧窑缺陷_窑脏,
-									sum( CNUM55 ) AS 烧窑缺陷_烧炸,
-									sum( CNUM56 ) AS 烧窑缺陷_烟熏,
-									sum( CNUM57 ) AS 烧窑缺陷_水滴,
-									sum( CNUM58 ) AS 烧窑缺陷_风惊,
-									sum( CNUM59 ) AS 烧窑缺陷_针孔,
-									sum( CNUM60 ) AS 烧窑缺陷_合计,
-									sum( CNUM61 ) AS 其他缺陷_崩脏,
-									sum( CNUM62 ) AS 其他缺陷_坯磕,
-									sum( CNUM63 ) AS 其他缺陷_研磨,
-									sum( CNUM64 ) AS 其他缺陷_复烧修补不良,
-									sum( CNUM65 ) AS 其他缺陷_合计,
-									sum( CNUM66 ) AS 研磨缺陷_眼,
-									sum( CNUM67 ) AS 研磨缺陷_底,
-									sum( CNUM68 ) AS 研磨缺陷_底和面,
-									sum( CNUM69 ) AS 研磨缺陷_面,
-									sum( CNUM70 ) AS 研磨缺陷_边,
-									sum( CNUM71 ) AS 研磨缺陷_研磨配盖,
-									sum( CNUM72 ) AS 研磨缺陷_合计,
-									sum( CNUM73 ) AS 合计,
-									GOOD AS 序号
-									from
-										JZ_RPT014
-								WHERE  PROCEDUREID = @PROCEDUREID@
-												AND FORWARDTIME >= @BEGINMONTH@
-												AND  FORWARDTIME < =@ENDMONTH@
-												AND BUILDINGNO {BUILDINGNO}
-												AND (KILNID = @KILNID@ OR @KILNID@ IS NULL)
-												GROUP BY
-												GROUPING SETS ((GOODSTYPENAME,GOODSNAME,GOOD)) 
-																			 ) GROUP BY
-																			   GROUPING SETS ((产品类别,产品名称),()) ".Replace("{BUILDINGNO}", buding);
+            }
+            #endregion 
+            using (IDataAccess conn = DataAccess.Create())
+            {
+                if (proc == "13" || proc == "35")
+                {
+                    conn.BeginTransaction();
+                    string sqltmp = @" insert into TMP_PORD_KILIN_QUALITY_DEFECT(GOODSTYPECODE,
+                                          GOODSTYPENAME,
+                                          GOODSCODE,
+                                          DEFECTGROUPNAME,
+                                          DEFECT,
+                                          DEFECTID,
+                                          DEFECTNAME,
+                                          GOODSLEVELTYPEID,
+                                          PRODUCTIONDATAID) (SELECT DISTINCT gt.goodstypecode
+                                                    ,gt.goodstypename
+                                                    ,g.goodscode
+                                                    ,pdp.defectgroupname
+                                                    ,to_char(pdp.defectgroupname || '_' ||
+                                                             m.defectname) AS defect
+                                                    ,d.defectid
+                                                    ,m.defectname
+                                                    ,pp.goodsleveltypeid
+                                                    ,pp.productiondataid
+			             FROM
+				            ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID										 
+										  ,PD.GROUTINGDAILYDETAILID  
+							 FROM TP_PM_PRODUCTIONDATA PD 
+							  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+								WHERE
+                           PD.PROCEDUREID = " + proc + @" 
+						    AND PD.CHECKTIME >= date'" + Convert.ToDateTime(context.Request["datebeginMaster"] + "-01").ToString("yyyy-MM-dd") + @"'
+                            AND PD.CHECKTIME <= date'" + Convert.ToDateTime(context.Request["dateendMaster"]+ "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd") + @"'                            
+                           AND GL.BUILDINGNO " + buding + @" 
+							 AND pd.goodsleveltypeid <> 4
+							 GROUP BY  PD.GROUTINGDAILYDETAILID  
+							)  P
+							-- 缺陷工序分组的 工序id1 工序id2 对应
+							inner join   tp_pm_productiondata pp on p.productiondataid = pp.productiondataid  
+							INNER JOIN tp_pm_productiondata ppdg ON p.groutingdailydetailid = ppdg.groutingdailydetailid AND ppdg.valueflag = '1'	
+				            INNER JOIN TP_MST_GOODS G ON G.GOODSID = PP.GOODSID
+				            INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID 
+				            INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID 
+				            INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 ) 
+				            INNER JOIN TP_MST_DEFECTGROUP PDP ON PDP.DEFECTID = D.DEFECTID AND PDP.DEFECTGROUPTYPE LIKE '每窑%'
+				            AND (  
+									-- ( PDP.PROCEDUREID1 = PR.PROCEDUREID OR PDP.PROCEDUREID2 = PR.PROCEDUREID )
+									--xuwei 2020-09-01 add 重烧的没有责任工序也算 
+									-- 20250417 改为用 是否走过 tp_mst_defectgroup 缺陷工序分组的 工序id1 工序id2 为基准
+									pdp.procedureid1 = ppdg.procedureid OR pdp.procedureid2 = ppdg.procedureid
+								) 
+			              ) ";
+                    int count = conn.ExecuteNonQuery(sqltmp);
 
-                //获取查询条件
-                List<CDAParameter> sqlPara = new List<CDAParameter>();
-                sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(context.Request["datebeginMaster"]), DataType.DateTime));
-                sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1), DataType.DateTime));
-                sqlPara.Add(new CDAParameter("BUILDINGNO", context.Request["buildingnoMaster"]));
-                sqlPara.Add(new CDAParameter("KILNID", context.Request["kilnidMaster"]));
-                sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
-                sqlPara.Add(new CDAParameter("BEGINMONTH", context.Request["datebeginMaster"].Substring(0, context.Request["datebeginMaster"].IndexOf("-")) + context.Request["datebeginMaster"].Substring(context.Request["datebeginMaster"].IndexOf("-") + 1).PadLeft(2, '0')));
-                sqlPara.Add(new CDAParameter("ENDMONTH", context.Request["dateendMaster"].Substring(0, context.Request["dateendMaster"].IndexOf("-")) + context.Request["dateendMaster"].Substring(context.Request["dateendMaster"].IndexOf("-") + 1).PadLeft(2, '0')));
 
-                //获取分页数据    
-                int total = 0;
-                DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
-                for (int m = dt.Columns.Count - 1; m > 0; m--)
-                {
-                    for (int mn = 0; mn < defectallnames.Count; mn++)
-                    {
-                        if (dt.Columns[m].ColumnName.Contains(defectallnames[mn]))
-                        {
-                            dt.Columns.Remove(dt.Columns[m].ColumnName);
-                        }
-                    }
-                }
-                string jsonStr = new JsonResult(dt) { total = total }.ToJson();
-                context.Response.Write(jsonStr);
-            }
-        }
+                    //读取报表数据
+                    sqlStr = @"
+            SELECT 
+				TA.GOODSNAME AS 产品名称,
+				TA.GOODSCODE AS 产品编码,
+				DECODE( TA.GID, 3, '合计', TA.GOODSTYPENAME ) AS 产品类别,
+	            DECODE( TA.OUT_K, 0, NULL, TA.OUT_K ) AS 出窑数, 
+	            DECODE( TA.COUNT_U4, 0, NULL, TA.COUNT_U4 ) AS U级,
+	            DECODE( TA.COUNT_U5  , 0, NULL, TA.COUNT_U5   ) A级,
+	            DECODE( TA.COUNT_AA, 0, NULL, TA.COUNT_AA ) AS AA级, 
+				DECODE(TA.COUNT_U7, 0, NULL, TA.COUNT_U7) AS 去AA,
+	            DECODE( TA.COUNT_R, 0, NULL, TA.COUNT_R ) AS R级,   
+	            DECODE( TA.Waste, 0, NULL, TA.Waste ) AS F级,
+	            CASE WHEN TA.OUT_K IS NULL OR TA.OUT_K = 0 THEN NULL ELSE ROUND( ( TA.COUNT_U4 + TA.COUNT_U5 +  TA.COUNT_AA ) / TA.OUT_K, 4 ) * 100 END AS UA率,
+	            TD.* 
+            FROM
+		            (
+		            SELECT
+			           GROUPING_ID ( GT.GOODSTYPECODE, G.GOODSCODE ) GID,
+			            GT.GOODSTYPECODE,
+			            GT.GOODSTYPENAME,
+			            G.GOODSCODE,
+			            G.GOODSNAME, 
+			            SUM( T.OUT_K ) OUT_K,
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.AA_FLAG = 0 AND T.GOODSLEVELTYPEID = 4 THEN 1 ELSE 0 END ) COUNT_U4, -- 直接正品
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.AA_FLAG = 0 AND T.GOODSLEVELTYPEID = 5 THEN 1 ELSE 0 END ) COUNT_U5, -- 直接副品
+			            COUNT( DISTINCT CASE WHEN T.AA_FLAG = 0 AND (T.GOODSLEVELTYPEID = 7 or T.H_FLAG = 1) THEN  t.BARCODE ELSE NULL END ) COUNT_U7, -- 当前的等级是次品或经过了研磨、堵漏气、刷洗不良、直接冷补、研磨冷补工序
+			            SUM( CASE WHEN T.AA_FLAG = 0 and t.h_flag=0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 19 THEN 1 ELSE 0 END ) AS COUNT_R,   
+			            COUNT(DISTINCT   CASE WHEN T.AA_FLAG = 1 AND T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN  t.BARCODE ELSE NULL END ) COUNT_AA, -- 研磨、堵漏气、刷洗不良、直接冷补、研磨冷补合格数
+						SUM( CASE WHEN  T.H_FLAG = 0 AND T.AA_FLAG = 0 AND  T.GOODSLEVELTYPEID = 20 THEN 1 ELSE 0 END ) Waste -- 直接次品
+		            FROM
+			            (
+						--出窑数		
+			            SELECT      
+					           DISTINCT 
+                                pd.Barcode,
+					            NULL MPDID,
+					            0 GOODSLEVELTYPEID,
+					            PD.GOODSID,
+					            0 REWORKPROCEDUREID,  
+					            1 OUT_K,
+					            -1 H_FLAG,
+								-1 AA_FLAG,--区分AA级 可以不再出窑数的范围内
+                                0 Waste
+			            FROM
+				            TP_PM_PRODUCTIONDATA PD
+				            INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID  
+				           
+			            WHERE
+                           PD.PROCEDUREID = @PROCEDUREID@
+                           AND PD.CHECKFLAG = 1
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@                    
+                           AND GL.BUILDINGNO {BUILDINGNO}
+			            UNION ALL
+						  --U级 A级 F级 去AA级 R级
+			            SELECT
+					            PD.BARCODE,
+					            MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+					            PDD.GOODSLEVELTYPEID,
+					            PDD.GOODSID,
+					            PDD.REWORKPROCEDUREID,  
+					            0 OUT_K,
+					            CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG, 
+								0 AA_FLAG,--区分AA级 可以不再出窑数的范围内
+                                0 Waste
+			            FROM
+				            ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
+										  ,PD.GOODSID,PD.BARCODE
+										  ,PD.GROUTINGDAILYDETAILID ,PD.KILNCARBATCHNO
+							 FROM TP_PM_PRODUCTIONDATA PD 
+							  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+								WHERE
+                           PD.PROCEDUREID = @PROCEDUREID@
+                            -- AND PD.VALUEFLAG = '1'
+                            --AND PD.CHECKBATCHNO = 1  
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@
+						   AND PD.CHECKTIME >= @DATEBEGIN@
+                           AND PD.CHECKTIME < @DATEEND@ 
+                           AND GL.BUILDINGNO {BUILDINGNO} 
+							 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID ,PD.KILNCARBATCHNO 
+							) PD
+			                LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+							 and pmax.KILNCARBATCHNO= pd.KILNCARBATCHNO	
+			                AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1'
+				            /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+				            AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
+				             INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+			             
+			            GROUP BY
+				            PD.BARCODE,
+				            PDD.GOODSLEVELTYPEID,
+				            PDD.GOODSID,
+				            PDD.REWORKPROCEDUREID     
+						UNION ALL
+						--AA级 包含出窑数和不在出窑数范围内的
+			            SELECT
+					            PD.BARCODE,
+					            MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+					            PDD.GOODSLEVELTYPEID,
+					            PDD.GOODSID,
+					            PDD.REWORKPROCEDUREID,  
+					            0 OUT_K,
+					            CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG, 
+								1 AA_FLAG,--区分AA级 可以不再出窑数的范围内
+                                0 Waste
+			            FROM
+				            ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
+										  ,PD.GOODSID,PD.BARCODE
+										  ,PD.GROUTINGDAILYDETAILID ,pd.KILNCARBATCHNO
+							 FROM TP_PM_PRODUCTIONDATA PD 
+							  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+								WHERE
+                           PD.PROCEDUREID = @PROCEDUREID@
+                            -- AND PD.VALUEFLAG = '1'
+                           -- AND PD.CHECKBATCHNO = 1  
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@  
+                           AND GL.BUILDINGNO {BUILDINGNO}
+							 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID ,pd.KILNCARBATCHNO   
+							) PD
+			                LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID  and pmax.KILNCARBATCHNO= pd.KILNCARBATCHNO
+			                AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1'
+				            /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+				            AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
+				             INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+			             
+			            GROUP BY
+				            PD.BARCODE,
+				            PDD.GOODSLEVELTYPEID,
+				            PDD.GOODSID,
+				            PDD.REWORKPROCEDUREID 						 
+
+				            ) T
+			            LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID
+			            INNER JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
+			            INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID 
+			            GROUP BY
+				            GROUPING SETS ( ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, G.GOODSNAME ), ( GT.GOODSTYPECODE, GT.GOODSTYPENAME ), ( ) ) 
+				            ) TA
+	            LEFT JOIN (
+	            SELECT
+		            * 
+	            FROM
+		            (
+			            SELECT
+				            CASE WHEN TT.GID IN ( 12, 13, 15 ) THEN 3 WHEN TT.GID IN ( 4, 5, 7 ) THEN 1 ELSE 0 END AS D_GID,
+				            TT.GOODSTYPECODE D_GOODSTYPECODE, --,TT.GOODSTYPENAME D_
+				            TT.GOODSCODE D_GOODSCODE,
+				            CASE WHEN TT.GID IN ( 1, 5, 13 ) THEN TT.DEFECT || '合计' WHEN TT.GID IN ( 3, 7, 15 ) THEN '合计' ELSE TT.DEFECT END AS DEFECT,
+			              TT.CNUM 
+					 FROM (SELECT grouping_id(ppp.goodstypecode
+                                               ,ppp.goodscode
+                                               ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+                                               ,ppp.defectname) AS gid
+                                   ,ppp.goodstypecode
+                                   ,ppp.goodstypename
+                                   ,ppp.goodscode
+                                   ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+                                   ,to_char((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ) || '_' || ppp.defectname) AS defect
+                                   ,SUM(CASE
+                                            WHEN ppp.defectid = 11
+                                                 AND (ppp.goodsleveltypeid = 4  ) THEN
+                                             0
+                                            ELSE
+                                             1
+                                        END) AS cnum
+                             
+                               FROM   TMP_PORD_KILIN_QUALITY_DEFECT  ppp 
+			            GROUP BY GROUPING SETS((ppp.goodstypecode, ppp.goodstypename, ppp.goodscode, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+                              (ppp.goodstypecode, ppp.goodstypename, ppp.goodscode, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),
+                              (ppp.goodstypecode, ppp.goodstypename, ppp.goodscode),
+                              (ppp.goodstypecode, ppp.goodstypename, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+                              (ppp.goodstypecode, ppp.goodstypename, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),
+                              (ppp.goodstypecode, ppp.goodstypename),
+                              ((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+                              ((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),())
+                              ORDER BY ppp.goodstypecode
+                                      ,ppp.goodscode
+                                      ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+                                      ,ppp.defectname) tt) 
+			             PIVOT (
+			            SUM( CNUM ) FOR DEFECT IN ({DEFECT},'合计' AS 合计 
+			            ) 
+		            ) 
+	            ) TD ON TA.GID = TD.D_GID 
+	            AND 
+	            (
+		            ( TA.GID = 0 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE AND TA.GOODSCODE = TD.D_GOODSCODE ) 
+		            OR ( TA.GID = 1 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE ) 
+		            OR ( TA.GID = 3 ) 
+	            )
+				  where ta.OUT_K  <> 0
+						OR ta.COUNT_U4 <> 0 OR ta.COUNT_AA <> 0
+						OR ta.COUNT_U5 <> 0
+						OR ta.COUNT_U7 <> 0
+						OR ta.COUNT_R <> 0 
+						OR ta.waste <> 0  
+				ORDER BY TA.GOODSTYPENAME,TA.GOODSCODE
+                ".Replace("{DEFECT}", defectStr).Replace("{BUILDINGNO}", buding).Replace("{goodsCodes}", goodssql);
+                }
+
+                else if (proc == "888")
+                {
+                    //读取报表数据
+                    sqlStr = @" SELECT 
+						TA.GOODSNAME AS 产品名称,
+						TA.GOODSCODE AS 产品编码						
+						,DECODE( TA.GID, 3, '合计', TA.GOODSTYPENAME ) AS 产品类别  						
+						,DECODE(TA.count_l, 0, NULL, TA.count_l) AS 检验数
+						,DECODE( TA.COUNT_AA, 0, NULL, TA.COUNT_AA ) AS AA级
+						,DECODE(ta.count_ym, 0, NULL, ta.count_ym) AS 研磨_检验数
+						,DECODE(ta.count_ym_ok, 0, NULL, ta.count_ym_ok) AS 研磨_合格数
+
+						,DECODE(ta.count_lb, 0, NULL, ta.count_lb) AS 直接冷补_检验数
+						,DECODE(ta.count_lb_ok, 0, NULL, ta.count_lb_ok) AS 直接冷补_合格数
+						,DECODE(ta.count_ymlb, 0, NULL, ta.count_ymlb) AS 研磨后冷补_检验数
+						,DECODE(ta.count_ymlb_ok, 0, NULL, ta.count_ymlb_ok) AS 研磨后冷补_合格数
+						,DECODE(ta.count_dlq, 0, NULL, ta.count_dlq) AS 堵漏气_检验数
+						,DECODE(ta.count_dlq_ok, 0, NULL, ta.count_dlq_ok) AS 堵漏气_合格数
+						--,DECODE(ta.count_sxbl, 0, NULL, ta.count_sxbl) AS 刷洗不良_检验数 
+						--,DECODE(ta.count_sxbl_ok, 0, NULL, ta.count_sxbl_ok) AS 刷洗不良_合格数
+						,decode(ta.count_r, 0, NULL, ta.count_r) AS 去R
+						,DECODE(TA.COUNT_AAS, 0, NULL, TA.COUNT_AAS) AS 再去AA
+						,DECODE( TA.Waste, 0, NULL, TA.Waste ) AS F级						 
+						,TD.* 
+					FROM
+							(
+							SELECT
+							   GROUPING_ID ( GT.GOODSTYPECODE, G.GOODSCODE ) GID,
+								GT.GOODSTYPECODE,
+								GT.GOODSTYPENAME,
+								G.GOODSCODE,
+								G.GOODSNAME,  
+								SUM( CASE WHEN  T.flagaa = 1  and t.h_flag = 2   THEN 1 ELSE 0 END ) AS  COUNT_AAF,  
+								SUM( CASE WHEN  T.flagaa = 1  and t.h_flag = 3  THEN 1 ELSE 0 END ) AS  COUNT_AAS,-- 再去AA
+								COUNT(DISTINCT CASE WHEN  T.flagaa = 0  and rpd.procedureid = 20 THEN  rpd.barcode ELSE null END ) AS  count_ym , --研磨  
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid = 22 THEN rpd.barcode ELSE null  END ) AS  count_lb ,--直接冷补, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid = 23 THEN rpd.barcode ELSE null  END ) AS  count_ymlb, --研磨后冷补, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid = 37 THEN rpd.barcode ELSE null  END ) AS   count_dlq ,--堵漏气, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid = 41 THEN rpd.barcode ELSE null  END ) AS  count_sxbl, --刷洗不良,
+								COUNT(DISTINCT CASE WHEN  T.flagaa = 0 AND t.goodsleveltypeid IN (4, 5)  and rpd.procedureid = 20 THEN  rpd.barcode ELSE null END ) AS  count_ym_ok , --研磨  
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND t.goodsleveltypeid IN (4, 5) and rpd.procedureid = 22 THEN rpd.barcode ELSE null  END ) AS  count_lb_ok ,--直接冷补, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND t.goodsleveltypeid IN (4, 5) and rpd.procedureid = 23 THEN rpd.barcode ELSE null  END ) AS  count_ymlb_ok, --研磨后冷补, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND t.goodsleveltypeid IN (4, 5) and rpd.procedureid = 37 THEN rpd.barcode ELSE null  END ) AS   count_dlq_ok ,--堵漏气, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND t.goodsleveltypeid IN (4, 5) and rpd.procedureid = 41 THEN rpd.barcode ELSE null  END ) AS  count_sxbl_ok, --刷洗不良,
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid IN (22, 23, 37, 20, 41) THEN  rpd.barcode ELSE null   END)  count_l  ,
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN rpd.barcode ELSE null  END ) COUNT_AA, -- 研磨、堵漏气、刷洗不良、直接冷补、研磨冷补合格数
+								SUM( CASE WHEN  T.flagaa = 0  and t.h_flag = 1 and   T.GOODSLEVELTYPEID = 20 THEN 1 ELSE 0 END ) Waste -- 二次以后得报废
+								,COUNT(DISTINCT CASE  WHEN t.flagaa = 1 AND t.goodsleveltypeid = 6 AND t.reworkprocedureid = 19 THEN rpd.barcode ELSE null  END) AS count_r 
+							FROM
+								(								 
+								 SELECT
+										TO_CHAR(PD.BARCODE),
+										MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										pdd.reworkprocedureid ,
+										CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN  1 ELSE 0 END H_FLAG , 0 flagaa
+										FROM
+										  ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
+													  ,PD.GOODSID,PD.BARCODE
+													  ,PD.GROUTINGDAILYDETAILID  
+										 FROM TP_PM_PRODUCTIONDATA PD 
+										  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+											WHERE
+									   PD.PROCEDUREID = @PROCEDUREID@
+										-- AND PD.VALUEFLAG = '1'
+									   -- AND PD.CHECKBATCHNO = 1  
+									   AND PD.CREATETIME >= @DATEBEGIN@
+									   AND PD.CREATETIME < @DATEEND@  
+									   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID  
+										) PD
+										INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
+										LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+										AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1'  and pmax.KILNCARBATCHNO= PDD.KILNCARBATCHNO	
+										/*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+										AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)									  
+			             
+									GROUP BY
+										PD.BARCODE,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										PDD.REWORKPROCEDUREID  
+								-- 再去AA
+								UNION ALL
+								SELECT
+										TO_CHAR(PD.BARCODE),
+										MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										pdd.reworkprocedureid ,
+										CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN (CASE WHEN PDD.checkbatchno = 1 and PDD.goodsleveltypeid !=7 or pdd.goodsleveltypeid = 5 or pdd.goodsleveltypeid = 4  THEN 2 else 3 end) ELSE 0 END H_FLAG , 1 flagaa
+								FROM
+									 ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
+													  ,PD.GOODSID,PD.BARCODE
+													  ,PD.GROUTINGDAILYDETAILID  
+										 FROM TP_PM_PRODUCTIONDATA PD 
+										  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+											WHERE
+									   PD.PROCEDUREID = @PROCEDUREID@
+										-- AND PD.VALUEFLAG = '1'
+									   -- AND PD.CHECKBATCHNO = 1  
+									   AND PD.CREATETIME >= @DATEBEGIN@
+									   AND PD.CREATETIME < @DATEEND@  
+									   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID  
+										) PD INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
+										LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+										AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1' and pmax.KILNCARBATCHNO= PDD.KILNCARBATCHNO	
+										/*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+										AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41) 
+			             
+									GROUP BY
+										PD.BARCODE,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										PDD.checkbatchno,pdd.reworkprocedureid 
+									
+									) T
+								LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID
+								INNER JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
+								INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID 
+								GROUP BY
+									GROUPING SETS ( ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, G.GOODSNAME ), ( GT.GOODSTYPECODE, GT.GOODSTYPENAME ), ( ) ) 
+									) TA
+						LEFT JOIN (
+						SELECT
+							* 
+						FROM
+							(
+								SELECT
+									CASE WHEN TT.GID IN ( 12, 13, 15 ) THEN 3 WHEN TT.GID IN ( 4, 5, 7 ) THEN 1 ELSE 0 END AS D_GID,
+									TT.GOODSTYPECODE D_GOODSTYPECODE, --,TT.GOODSTYPENAME D_
+									TT.GOODSCODE D_GOODSCODE,
+									CASE WHEN TT.GID IN ( 1, 5, 13 ) THEN TT.DEFECT || '合计' WHEN TT.GID IN ( 3, 7, 15 ) THEN '合计' ELSE TT.DEFECT END AS DEFECT,
+								  TT.CNUM 
+							 FROM (SELECT grouping_id(ppp.goodstypecode
+													   ,ppp.goodscode
+													   ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+													   ,ppp.defectname) AS gid
+										   ,ppp.goodstypecode
+										   ,ppp.goodstypename
+										   ,ppp.goodscode
+										   ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+										   ,to_char((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ) || '_' || ppp.defectname) AS defect
+										   ,SUM(CASE
+													WHEN ppp.defectid = 11
+														 AND (ppp.goodsleveltypeid = 4 OR ppp.goodsleveltypeid = 5) THEN
+													 0
+													ELSE
+													 1
+												END) AS cnum
+                             
+									   FROM (SELECT DISTINCT gt.goodstypecode
+															,gt.goodstypename
+															,g.goodscode
+															,pdp.defectgroupname
+															,to_char(pdp.defectgroupname || '_' ||
+																	 m.defectname) AS defect
+															,d.defectid
+															,m.defectname
+															,p.goodsleveltypeid
+															,pp.productiondataid
+								 FROM
+									
+									(SELECT PD.PRODUCTIONDATAID
+											  ,MAX(PMAX.PRODUCTIONDATAID) MPDID
+											  ,PD.GOODSLEVELTYPEID
+											  ,PD.GOODSID
+											  ,PD.GROUTINGDAILYDETAILID
+										  FROM TP_PM_PRODUCTIONDATA PD
+										 INNER JOIN TP_PM_PRODUCTIONDATA PMAX
+											ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
+										   AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID
+										   AND PMAX.VALUEFLAG = '1'
+										   AND PMAX.PROCEDUREMODEL = '1'
+											  /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+										   AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
+										 INNER JOIN TP_PC_GROUTINGLINE GL
+											ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+										 WHERE PD.PROCEDUREID = @PROCEDUREID@	-- IN (13, 35)
+										  -- AND PD.VALUEFLAG = '1'
+										   --AND PD.CHECKBATCHNO = 1
+										   AND PD.createtime >= @DATEBEGIN@
+										   AND PD.createtime < @DATEEND@
+										   AND PD.GOODSLEVELTYPEID = 20 
+										   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.PRODUCTIONDATAID
+												 ,PD.GOODSLEVELTYPEID
+												 ,PD.GOODSID
+												 ,PD.GROUTINGDAILYDETAILID
+										UNION ALL
+										SELECT PD.PRODUCTIONDATAID
+											  ,MAX(PMAX.PRODUCTIONDATAID) MPDID
+											  ,PD.GOODSLEVELTYPEID
+											  ,PD.GOODSID
+											  ,PD.GROUTINGDAILYDETAILID
+										  FROM TP_PM_PRODUCTIONDATA PD
+										 INNER JOIN TP_PM_PRODUCTIONDATA PMAX
+											ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
+										   AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID
+											and pmax.KILNCARBATCHNO= pd.KILNCARBATCHNO
+										   AND PMAX.VALUEFLAG = '1'
+										   AND PMAX.PROCEDUREMODEL = '1'
+											  /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+										   AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
+										 INNER JOIN TP_PC_GROUTINGLINE GL
+											ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+										 WHERE PD.PROCEDUREID = @PROCEDUREID@	-- IN (13, 35)
+											  -- AND PD.VALUEFLAG = '1'
+											  -- AND PD.CHECKBATCHNO = 1
+										   AND PD.CREATETIME >= @DATEBEGIN@
+										   AND PD.CREATETIME < @DATEEND@
+										   --AND PD.CHECKBATCHNO > 1
+										   AND PD.GOODSLEVELTYPEID <> 4	 
+										   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.PRODUCTIONDATAID
+												 ,PD.GOODSLEVELTYPEID
+												 ,PD.GOODSID
+												 ,PD.GROUTINGDAILYDETAILID
+										)  P
+									-- 缺陷工序分组的 工序id1 工序id2 对应
+									inner join   tp_pm_productiondata pp on p.groutingdailydetailid = pp.groutingdailydetailid  and pp.valueflag = '1'
+                               
+									INNER JOIN TP_MST_GOODS G ON G.GOODSID = P.GOODSID
+									INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID 
+									INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID --AND (P.GOODSLEVELTYPEID NOT IN (4, 5) OR D.DEFECTID <> 11)
+									INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
+									LEFT JOIN TP_PC_PROCEDURE PR ON PR.PROCEDUREID = D.DEFECTPROCEDUREID
+									INNER JOIN TP_MST_DEFECTGROUP PDP ON PDP.DEFECTID = D.DEFECTID AND PDP.DEFECTGROUPTYPE LIKE '每窑%'
+									AND (  
+											-- ( PDP.PROCEDUREID1 = PR.PROCEDUREID OR PDP.PROCEDUREID2 = PR.PROCEDUREID )
+											--xuwei 2020-09-01 add 重烧的没有责任工序也算
+											-- OR @PROCEDUREID@ = 35
+											-- 20250417 改为用 是否走过 tp_mst_defectgroup 缺陷工序分组的 工序id1 工序id2 为基准
+											pdp.procedureid1 = pp.procedureid OR pdp.procedureid2 = pp.procedureid
+										) 
+								  ) ppp 
+								GROUP BY GROUPING SETS((ppp.goodstypecode, ppp.goodstypename, ppp.goodscode, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+									  (ppp.goodstypecode, ppp.goodstypename, ppp.goodscode, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),
+									  (ppp.goodstypecode, ppp.goodstypename, ppp.goodscode),
+									  (ppp.goodstypecode, ppp.goodstypename, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+									  (ppp.goodstypecode, ppp.goodstypename, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),
+									  (ppp.goodstypecode, ppp.goodstypename),
+									  ((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+									  ((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),())
+									  ORDER BY ppp.goodstypecode
+											  ,ppp.goodscode
+											  ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+											  ,ppp.defectname) tt) 
+								 PIVOT (
+								SUM( CNUM ) FOR DEFECT IN ({DEFECT},'合计' AS 合计 
+								) 
+							) 
+						) TD ON TA.GID = TD.D_GID 
+						AND 
+						(
+							( TA.GID = 0 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE AND TA.GOODSCODE = TD.D_GOODSCODE ) 
+							OR ( TA.GID = 1 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE ) 
+							OR ( TA.GID = 3 ) 
+						)
+						  where ta.count_aa  <> 0
+						OR ta.COUNT_AAS <> 0
+						OR ta.count_ym <> 0
+						OR ta.count_lb <> 0
+						OR ta.count_ymlb <> 0
+						OR ta.count_dlq <> 0
+						OR ta.count_sxbl <> 0  
+						OR ta.waste <> 0  
+						OR ta.count_r <> 0 
+						OR ta.count_ym_ok <> 0
+						OR ta.count_lb_ok <> 0
+						OR ta.count_ymlb_ok <> 0
+						OR ta.count_dlq_ok <> 0
+						OR ta.count_sxbl_ok <> 0 
+						ORDER BY TA.GOODSTYPENAME,TA.GOODSCODE
+						".Replace("{DEFECT}", defectStr).Replace("{BUILDINGNO}", buding).Replace("{goodsCodes}", goodssql);
+                }
+                else
+                {
+                    //读取报表数据
+                    sqlStr = @" SELECT 
+						TA.GOODSNAME AS 产品名称,
+						TA.GOODSCODE AS 产品编码						
+						,DECODE( TA.GID, 3, '合计', TA.GOODSTYPENAME ) AS 产品类别  						
+						,DECODE(TA.count_l, 0, NULL, TA.count_l) AS 检验数
+						,DECODE( TA.COUNT_AA, 0, NULL, TA.COUNT_AA ) AS AA级
+						,DECODE(ta.count_csr, 0, NULL, ta.count_csr) AS 重烧_检验数
+						,DECODE(ta.count_csr_ok, 0, NULL, ta.count_csr_ok) AS 重烧_合格数
+						,DECODE(ta.count_ym, 0, NULL, ta.count_ym) AS 研磨_检验数
+						,DECODE(ta.count_ym_ok, 0, NULL, ta.count_ym_ok) AS 研磨_合格数
+
+						,DECODE(ta.count_lb, 0, NULL, ta.count_lb) AS 直接冷补_检验数
+						,DECODE(ta.count_lb_ok, 0, NULL, ta.count_lb_ok) AS 直接冷补_合格数
+						,DECODE(ta.count_ymlb, 0, NULL, ta.count_ymlb) AS 研磨后冷补_检验数
+						,DECODE(ta.count_ymlb_ok, 0, NULL, ta.count_ymlb_ok) AS 研磨后冷补_合格数
+						,DECODE(ta.count_dlq, 0, NULL, ta.count_dlq) AS 堵漏气_检验数
+						,DECODE(ta.count_dlq_ok, 0, NULL, ta.count_dlq_ok) AS 堵漏气_合格数
+						--,DECODE(ta.count_sxbl, 0, NULL, ta.count_sxbl) AS 刷洗不良_检验数 
+						--,DECODE(ta.count_sxbl_ok, 0, NULL, ta.count_sxbl_ok) AS 刷洗不良_合格数
+						,decode(ta.count_r, 0, NULL, ta.count_r) AS 再去R
+						,DECODE(TA.COUNT_AAS, 0, NULL, TA.COUNT_AAS) AS 再去AA
+						,DECODE( TA.Waste, 0, NULL, TA.Waste ) AS F级						 
+						,TD.* 
+					FROM
+							(
+							SELECT
+							   GROUPING_ID ( GT.GOODSTYPECODE, G.GOODSCODE ) GID,
+								GT.GOODSTYPECODE,
+								GT.GOODSTYPENAME,
+								G.GOODSCODE,
+								G.GOODSNAME,  
+								SUM( CASE WHEN  T.flagaa = 1  and t.h_flag = 2   THEN 1 ELSE 0 END ) AS  COUNT_AAF,  
+								SUM( CASE WHEN  T.flagaa = 1  and t.h_flag = 3  THEN 1 ELSE 0 END ) AS  COUNT_AAS,-- 再去AA
+								COUNT(DISTINCT CASE WHEN  T.flagaa = 0  and rpd.procedureid = 20 THEN  rpd.barcode ELSE null END ) AS  count_ym , --研磨  
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid = 22 THEN rpd.barcode ELSE null  END ) AS  count_lb ,--直接冷补, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid = 23 THEN rpd.barcode ELSE null  END ) AS  count_ymlb, --研磨后冷补, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid = 37 THEN rpd.barcode ELSE null  END ) AS   count_dlq ,--堵漏气, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and rpd.procedureid = 41 THEN rpd.barcode ELSE null  END ) AS  count_sxbl, --刷洗不良,
+								COUNT(DISTINCT CASE WHEN  T.flagaa = 0 AND t.goodsleveltypeid IN (4, 5)  and rpd.procedureid = 20 THEN  rpd.barcode ELSE null END ) AS  count_ym_ok , --研磨  
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND t.goodsleveltypeid IN (4, 5) and rpd.procedureid = 22 THEN rpd.barcode ELSE null  END ) AS  count_lb_ok ,--直接冷补, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND t.goodsleveltypeid IN (4, 5) and rpd.procedureid = 23 THEN rpd.barcode ELSE null  END ) AS  count_ymlb_ok, --研磨后冷补, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND t.goodsleveltypeid IN (4, 5) and rpd.procedureid = 37 THEN rpd.barcode ELSE null  END ) AS   count_dlq_ok ,--堵漏气, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND t.goodsleveltypeid IN (4, 5) and rpd.procedureid = 41 THEN rpd.barcode ELSE null  END ) AS  count_sxbl_ok, --刷洗不良,
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  AND ((rpd.procedureid IN (22, 23, 37, 20, 41) AND t.goodsleveltypeid != 6 AND t.goodsleveltypeid != 7) OR
+                              (rpd.procedureid IN (35) AND t.goodsleveltypeid !=7 )  ) THEN  T.barcode ELSE null   END)  count_l  ,
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and T.GOODSLEVELTYPEID IN ( 4, 5 ) AND (rpd.procedureid IN (22, 23, 37, 20, 41,35) or (rpd.procedureid IS NULL AND rpd.goodsleveltypeid != 6)) THEN T.barcode ELSE null  END ) COUNT_AA, -- 研磨、堵漏气、刷洗不良、直接冷补、研磨冷补合格数
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and T.GOODSLEVELTYPEID IN ( 4, 5 ) AND (rpd.procedureid IN (35) OR
+                              (rpd.procedureid IS NULL AND rpd.goodsleveltypeid != 6)) THEN T.barcode ELSE null  END ) count_csr_ok, 
+								COUNT(DISTINCT  CASE WHEN  T.flagaa = 0  and (rpd.procedureid IN (35) OR
+                              (rpd.procedureid IS NULL AND rpd.goodsleveltypeid != 6)) THEN T.barcode ELSE null  END ) count_csr,
+								SUM( CASE WHEN  T.flagaa = 0  and t.h_flag = 1 and   T.GOODSLEVELTYPEID = 20 THEN 1 ELSE 0 END ) Waste -- 二次以后得报废
+								,SUM( CASE WHEN  T.flagaa = 2  and t.h_flag = 3  THEN 1 ELSE 0 END ) AS count_r 
+							FROM
+								(								 
+								 SELECT
+										TO_CHAR(PD.BARCODE) BARCODE,
+										MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										pdd.reworkprocedureid ,
+										CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN  1 ELSE 0 END H_FLAG , 0 flagaa
+										FROM
+										  ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
+													  ,PD.GOODSID,PD.BARCODE
+													  ,PD.GROUTINGDAILYDETAILID  
+										 FROM TP_PM_PRODUCTIONDATA PD 
+										  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+											WHERE
+									   PD.PROCEDUREID = @PROCEDUREID@
+										-- AND PD.VALUEFLAG = '1'
+									   -- AND PD.CHECKBATCHNO = 1  
+									   AND PD.CREATETIME >= @DATEBEGIN@
+									   AND PD.CREATETIME < @DATEEND@  
+									   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID  
+										) PD
+										INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 	
+										LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+										AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND (pmax.kilncarbatchno = PDD.kilncarbatchno OR pmax.procedureid = PDD.procedureid)
+										/* 20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良 */
+										AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41, 35)
+										 		             
+									GROUP BY
+										PD.BARCODE,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										PDD.REWORKPROCEDUREID  
+								-- 再去aa
+								UNION ALL
+								SELECT
+										TO_CHAR(PD.BARCODE),
+										MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										pdd.reworkprocedureid ,
+										CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN (CASE WHEN PDD.checkbatchno = 1 and PDD.goodsleveltypeid !=7 THEN 2 else 3 end) ELSE 0 END H_FLAG , 1 flagaa
+								FROM
+									 ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
+													  ,PD.GOODSID,PD.BARCODE
+													  ,PD.GROUTINGDAILYDETAILID  
+										 FROM TP_PM_PRODUCTIONDATA PD 
+										  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+											WHERE
+									   PD.PROCEDUREID = @PROCEDUREID@
+										-- AND PD.VALUEFLAG = '1'
+									   -- AND PD.CHECKBATCHNO = 1  
+									   AND PD.CREATETIME >= @DATEBEGIN@
+									   AND PD.CREATETIME < @DATEEND@  
+									   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID    
+										) PD
+										 INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
+										LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+										AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1' and pmax.KILNCARBATCHNO= PDD.KILNCARBATCHNO
+										/*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+										AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)			             
+									GROUP BY
+										PD.BARCODE,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										PDD.checkbatchno,pdd.reworkprocedureid 
+								--  再去R
+								UNION ALL
+								SELECT
+										TO_CHAR(PD.BARCODE),
+										MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										pdd.reworkprocedureid ,
+										CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN (CASE WHEN (PDD.checkbatchno > 1  or (PDD.checkbatchno = 1 and PDD.goodsleveltypeid=6 ))   THEN 3 else 2 end) ELSE 4 END H_FLAG , 2 flagaa
+								FROM
+									 ( SELECT MAX(PD.PRODUCTIONDATAID) PRODUCTIONDATAID
+													  ,PD.GOODSID,PD.BARCODE
+													  ,PD.GROUTINGDAILYDETAILID 
+										 FROM TP_PM_PRODUCTIONDATA PD 
+										  INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+											WHERE
+									   PD.PROCEDUREID = @PROCEDUREID@
+										-- AND PD.VALUEFLAG = '1'
+									   -- AND PD.CHECKBATCHNO = 1  
+									   AND PD.CREATETIME >= @DATEBEGIN@
+									   AND PD.CREATETIME < @DATEEND@  
+									   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID    
+										) PD
+									   INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
+										LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+										AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' 
+										/*重烧 两次以上*/
+										AND PMAX.PROCEDUREID =  35 
+									GROUP BY
+										PD.BARCODE,
+										PDD.GOODSLEVELTYPEID,
+										PDD.GOODSID,
+										PDD.checkbatchno,pdd.reworkprocedureid 
+									
+									) T
+								LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID
+								INNER JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
+								INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID 
+								GROUP BY
+									GROUPING SETS ( ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, G.GOODSNAME ), ( GT.GOODSTYPECODE, GT.GOODSTYPENAME ), ( ) ) 
+									) TA
+						LEFT JOIN (
+						SELECT
+							* 
+						FROM
+							(
+								SELECT
+									CASE WHEN TT.GID IN ( 12, 13, 15 ) THEN 3 WHEN TT.GID IN ( 4, 5, 7 ) THEN 1 ELSE 0 END AS D_GID,
+									TT.GOODSTYPECODE D_GOODSTYPECODE, --,TT.GOODSTYPENAME D_
+									TT.GOODSCODE D_GOODSCODE,
+									CASE WHEN TT.GID IN ( 1, 5, 13 ) THEN TT.DEFECT || '合计' WHEN TT.GID IN ( 3, 7, 15 ) THEN '合计' ELSE TT.DEFECT END AS DEFECT,
+								  TT.CNUM 
+							 FROM (SELECT grouping_id(ppp.goodstypecode
+													   ,ppp.goodscode
+													   ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+													   ,ppp.defectname) AS gid
+										   ,ppp.goodstypecode
+										   ,ppp.goodstypename
+										   ,ppp.goodscode
+										   ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+										   ,to_char((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ) || '_' || ppp.defectname) AS defect
+										   ,SUM(CASE
+													WHEN ppp.defectid = 11
+														 AND (ppp.goodsleveltypeid = 4 OR ppp.goodsleveltypeid = 5) THEN
+													 0
+													ELSE
+													 1
+												END) AS cnum
+                             
+									   FROM (SELECT DISTINCT gt.goodstypecode
+															,gt.goodstypename
+															,g.goodscode
+															,pdp.defectgroupname
+															,to_char(pdp.defectgroupname || '_' ||
+																	 m.defectname) AS defect
+															,d.defectid
+															,m.defectname
+															,p.goodsleveltypeid
+															,pp.productiondataid
+								 FROM
+									
+									(SELECT PD.PRODUCTIONDATAID
+											  ,MAX(PMAX.PRODUCTIONDATAID) MPDID
+											  ,PD.GOODSLEVELTYPEID
+											  ,PD.GOODSID
+											  ,PD.GROUTINGDAILYDETAILID
+										  FROM TP_PM_PRODUCTIONDATA PD
+										 INNER JOIN TP_PM_PRODUCTIONDATA PMAX
+											ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
+										   AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID
+											 and pmax.KILNCARBATCHNO= pd.KILNCARBATCHNO
+										   AND PMAX.VALUEFLAG = '1'
+										   AND PMAX.PROCEDUREMODEL = '1'
+											  /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+										   AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
+										 INNER JOIN TP_PC_GROUTINGLINE GL
+											ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+										 WHERE PD.PROCEDUREID = @PROCEDUREID@	-- IN (13, 35)
+										  -- AND PD.VALUEFLAG = '1'
+										   --AND PD.CHECKBATCHNO = 1
+										   AND PD.createtime >= @DATEBEGIN@
+										   AND PD.createtime < @DATEEND@
+										   AND PD.GOODSLEVELTYPEID = 20 
+										   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.PRODUCTIONDATAID
+												 ,PD.GOODSLEVELTYPEID
+												 ,PD.GOODSID
+												 ,PD.GROUTINGDAILYDETAILID
+										UNION ALL
+										SELECT PD.PRODUCTIONDATAID
+											  ,MAX(PMAX.PRODUCTIONDATAID) MPDID
+											  ,PD.GOODSLEVELTYPEID
+											  ,PD.GOODSID
+											  ,PD.GROUTINGDAILYDETAILID
+										  FROM TP_PM_PRODUCTIONDATA PD
+										 INNER JOIN TP_PM_PRODUCTIONDATA PMAX
+											ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
+										   AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID
+											 and pmax.KILNCARBATCHNO= pd.KILNCARBATCHNO
+										   AND PMAX.VALUEFLAG = '1'
+										   AND PMAX.PROCEDUREMODEL = '1'
+											  /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+										   AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
+										 INNER JOIN TP_PC_GROUTINGLINE GL
+											ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+										 WHERE PD.PROCEDUREID = @PROCEDUREID@	-- IN (13, 35)
+											  -- AND PD.VALUEFLAG = '1'
+											  -- AND PD.CHECKBATCHNO = 1
+										   AND PD.CREATETIME >= @DATEBEGIN@
+										   AND PD.CREATETIME < @DATEEND@
+										   --AND PD.CHECKBATCHNO > 1
+										   AND PD.GOODSLEVELTYPEID <> 4	 
+										   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.PRODUCTIONDATAID
+												 ,PD.GOODSLEVELTYPEID
+												 ,PD.GOODSID
+												 ,PD.GROUTINGDAILYDETAILID
+										)  P
+									-- 缺陷工序分组的 工序id1 工序id2 对应
+									inner join   tp_pm_productiondata pp on p.groutingdailydetailid = pp.groutingdailydetailid  and pp.valueflag = '1'
+                               
+									INNER JOIN TP_MST_GOODS G ON G.GOODSID = P.GOODSID
+									INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID 
+									INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID --AND (P.GOODSLEVELTYPEID NOT IN (4, 5) OR D.DEFECTID <> 11)
+									INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
+									LEFT JOIN TP_PC_PROCEDURE PR ON PR.PROCEDUREID = D.DEFECTPROCEDUREID
+									INNER JOIN TP_MST_DEFECTGROUP PDP ON PDP.DEFECTID = D.DEFECTID AND PDP.DEFECTGROUPTYPE LIKE '每窑%'
+									AND (  
+											-- ( PDP.PROCEDUREID1 = PR.PROCEDUREID OR PDP.PROCEDUREID2 = PR.PROCEDUREID )
+											--xuwei 2020-09-01 add 重烧的没有责任工序也算
+											-- OR @PROCEDUREID@ = 35
+											-- 20250417 改为用 是否走过 tp_mst_defectgroup 缺陷工序分组的 工序id1 工序id2 为基准
+											pdp.procedureid1 = pp.procedureid OR pdp.procedureid2 = pp.procedureid
+										) 
+								  ) ppp 
+								GROUP BY GROUPING SETS((ppp.goodstypecode, ppp.goodstypename, ppp.goodscode, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+									  (ppp.goodstypecode, ppp.goodstypename, ppp.goodscode, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),
+									  (ppp.goodstypecode, ppp.goodstypename, ppp.goodscode),
+									  (ppp.goodstypecode, ppp.goodstypename, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+									  (ppp.goodstypecode, ppp.goodstypename, (case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),
+									  (ppp.goodstypecode, ppp.goodstypename),
+									  ((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end ), ppp.defectname),
+									  ((case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )),())
+									  ORDER BY ppp.goodstypecode
+											  ,ppp.goodscode
+											  ,(case when INSTR(to_char(ppp.defectgroupname), '施釉缺陷') > 0 then '施釉缺陷' else  to_char(ppp.defectgroupname) end )
+											  ,ppp.defectname) tt) 
+								 PIVOT (
+								SUM( CNUM ) FOR DEFECT IN ({DEFECT},'合计' AS 合计 
+								) 
+							) 
+						) TD ON TA.GID = TD.D_GID 
+						AND 
+						(
+							( TA.GID = 0 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE AND TA.GOODSCODE = TD.D_GOODSCODE ) 
+							OR ( TA.GID = 1 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE ) 
+							OR ( TA.GID = 3 ) 
+						)
+						  where ta.count_aa  <> 0
+						OR ta.COUNT_AAS <> 0
+						OR ta.count_ym <> 0
+						OR ta.count_lb <> 0
+						OR ta.count_ymlb <> 0
+						OR ta.count_dlq <> 0
+						OR ta.count_sxbl <> 0  
+						OR ta.waste <> 0  
+						OR ta.count_r <> 0  
+						OR ta.count_ym_ok <> 0
+						OR ta.count_lb_ok <> 0
+						OR ta.count_ymlb_ok <> 0
+						OR ta.count_dlq_ok <> 0
+						OR ta.count_sxbl_ok <> 0
+						OR ta.count_csr <> 0
+						OR ta.count_csr_ok <> 0
+						ORDER BY TA.GOODSTYPENAME,TA.GOODSCODE
+						".Replace("{DEFECT}", defectStr).Replace("{BUILDINGNO}", buding).Replace("{goodsCodes}", goodssql);
+                }
+
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(context.Request["datebeginMaster"] + "-01"), DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(context.Request["dateendMaster"] + "-01").AddMonths(1).AddDays(-1), DataType.DateTime));
+                sqlPara.Add(new CDAParameter("KILNID", context.Request["kilnidMaster"]));
+                sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
+
+                if (context.Request["goodscodeMaster[]"] is object)
+                {
+                    if (context.Request["goodscodeMaster[]"].ToString() != "")
+                    {
+                        sqlPara.Add(new CDAParameter("GOODSCODE", context.Request["goodscodeMaster[]"]));
+                    }
+                }
+
+                if (context.Request["goodscodeMaster"] is object)
+                {
+                    if (context.Request["goodscodeMaster"].ToString() != "")
+                    {
+                        sqlPara.Add(new CDAParameter("GOODSCODE", context.Request["goodscodeMaster"]));
+                    }
+                }
+                else
+                {
+                    sqlPara.Add(new CDAParameter("GOODSCODE", null));
+                }
+
+                if (context.Request["goodsnameMaster"] is object)
+                {
+                    if (context.Request["goodsnameMaster"].ToString() != "")
+                    {
+                        sqlPara.Add(new CDAParameter("GOODSNAME", context.Request["goodsnameMaster"]));
+                    }
+                    else
+                    {
+                        sqlPara.Add(new CDAParameter("GOODSNAME", null));
+                    }
+                }
+                else
+                {
+                    sqlPara.Add(new CDAParameter("GOODSNAME", null));
+                }
+
+                //xuwei add 2023-12-29 ====================================
+                //=========================================================
+                //sqlStr = sqlStr.Replace("@DATEBEGIN@", "DATE'" + Convert.ToDateTime(context.Request["datebeginMaster"])  + "'");
+                //sqlStr = sqlStr.Replace("@DATEEND@", "DATE'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1) + "'");
+                sqlStr = sqlStr.Replace("@DATEBEGIN@", "to_date('" + Convert.ToDateTime(context.Request["datebeginMaster"]+ "-01") + "','yyyy-mm-dd hh24:mi:ss')");
+                sqlStr = sqlStr.Replace("@DATEEND@", "to_date('" + Convert.ToDateTime(context.Request["dateendMaster"]+ "-01").AddMonths(1).AddDays(-1) + "','yyyy-mm-dd hh24:mi:ss')");
+                sqlStr = sqlStr.Replace("@KILNID@", context.Request["kilnidMaster"].ToString() != "" ? context.Request["kilnidMaster"].ToString() : " NULL ");
+                string pid = context.Request["procedureidMaster"].ToString();
+                if (pid == "888")
+                {
+                    pid = "13";
+                }
+                else if (pid == "999")
+                {
+                    pid = "35";
+                }
+                sqlStr = sqlStr.Replace("@PROCEDUREID@", pid != "" ? pid : " NULL ");
+                sqlStr = sqlStr.Replace("@GOODSCODE@", " '' ");
+                sqlStr = sqlStr.Replace("@GOODSNAME@", " '' ");
+					// 250717 存储过程的临时表 不好用
+                DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
+ 
+
+                dt.Columns.Remove("D_GID");
+                dt.Columns.Remove("D_goodstypecode");
+                dt.Columns.Remove("D_goodscode");
+                //处理列特殊字符
+                for (int c = 0; c < dt.Columns.Count; c++)
+                {
+                    dt.Columns[c].ColumnName = dt.Columns[c].ColumnName.Replace("'", "").Replace("+", "").Replace('/', ' ');
+                }
+
+                // 删除可选缺陷的列
+                for (int m = dt.Columns.Count - 1; m > 0; m--)
+                {
+                    for (int mn = 0; mn < defectallnames.Count; mn++)
+                    {
+                        if (dt.Columns[m].ColumnName.Contains(defectallnames[mn]))
+                        {
+                            dt.Columns.Remove(dt.Columns[m].ColumnName);
+                        }
+                    }
+                }
+                //获取分页数据
+                int total = 0;
+                //dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                string jsonStr = new JsonResult(dt) { total = total }.ToJson();
+                if (proc == "13" || proc == "35")
+                {
+                    conn.Commit();
+                }
+                context.Response.Write(jsonStr);
+            }
+        }
+        // 结转
+        //   if (context.Request["m"].ToString() == "jiezhauang")
+        //   {
+        //       using (IDataAccess conn = DataAccess.Create())
+        //       {
+        //           string buding = null;
+        //           if (context.Request["buildingnoMaster"].ToString() != "12")
+        //           {
+        //               buding = "IN('" + context.Request["buildingnoMaster"] + "')";
+        //           }
+        //           else
+        //           {
+        //               buding = "IN(" + "'1#','2#'" + ")";
+        //           }
+        //           #region 可选缺陷  删除 插入
+        //           //d可选缺陷  删除 插入
+        //           string[] denames = new string[] { };
+        //           if (context.Request["defectMaster[]"] is object)
+        //           {
+        //               if (context.Request["defectMaster[]"].ToString() != "")
+        //               {
+        //                   denames = context.Request["defectMaster[]"].ToString().Split(',');
+        //               }
+        //           }
+        //           if (context.Request["defectMaster"] is object)
+        //           {
+        //               if (context.Request["defectMaster"].ToString() != "")
+        //               {
+        //                   denames = context.Request["defectMaster"].ToString().Split(',');
+        //               }
+
+        //           }
+        //           // 判断可选缺陷 是否发生变化,如果没有变化则不用调用数据库
+        //           bool flg = true;
+        //           for (int i = 0; i < denames.Length; i++)
+        //           {
+        //               if (string.IsNullOrEmpty(denames[i]))
+        //               {
+        //                   continue;
+        //               }
+        //               defectallnames.Remove(denames[i]);
+        //               // 前台传过来的 可选缺陷的字符串
+        //               if (!context.Request["name"].ToString().Contains(denames[i]))
+        //               {
+        //                   flg = false;
+        //                   break;
+        //               }
+        //           }
+        //           if (context.Request["name"].ToString().Split(',').Length != denames.Length)
+        //           {
+        //               flg = false;
+        //           }
+        //           //d可选缺陷  删除 插入
+        //           if (!flg)
+        //           {
+        //               using (IDataAccess connn = DataAccess.Create())
+        //               {
+        //                   connn.ExecuteNonQuery(@"delete from tp_mst_defectgroup_user where USERID = @USERID@",
+        //                       new CDAParameter("USERID", context.Request["userId"] + ""));
+
+        //                   for (int i = 0; i < denames.Length; i++)
+        //                   {
+        //                       if (string.IsNullOrEmpty(denames[i]))
+        //                       {
+        //                           continue;
+        //                       }
+        //                       int result = connn.ExecuteNonQuery(@"
+        //INSERT INTO tp_mst_defectgroup_user (  
+        //	DEFECTGROUPNAME, 
+        //	ACCOUNTID,CREATEUSERID,USERID
+        //) VALUES (  
+        //	@DEFECTGROUPNAME@,                    
+        //	@ACCOUNTID@,@CREATEUSERID@,@USERID@
+        //)
+        //",
+        //                      new CDAParameter("DEFECTGROUPNAME", denames[i]),
+        //                      new CDAParameter("ACCOUNTID", context.Request["accountId"] + ""),
+        //                      new CDAParameter("CREATEUSERID", context.Request["userId"] + ""),
+        //                      new CDAParameter("USERID", context.Request["userId"] + "")
+        //                   );
+        //                   }
+        //               }
+        //           }
+        //           #endregion
+
+        //           string sqlStr = @"
+        //SELECT
+
+        //	产品名称 ,
+        //	DECODE(产品类别, null, '合计',产品类别) 产品类别,
+        //	SUM(出窑数) AS 出窑数,
+        //	SUM(U级) AS U级,
+        //	SUM(A级) AS A级,
+        //	SUM(AA级) AS AA级,
+        //	SUM(B级) AS B级,
+        //	SUM(R级) AS R级,
+        //	SUM(冷补数) AS 冷补数,
+        //	SUM(L级 ) AS L级,
+        //	SUM(F级) AS F级,
+        //	SUM(Z级) AS Z级,
+        //	DEcode(ROUND(((nvl(sum(U级),0)+nvl(sum(A级),0)+ nvl(sum(AA级),0))/ sum(出窑数)), 4 ) *100,0,NULL,ROUND(  ((nvl(sum(U级),0)+nvl(sum(A级),0)+ nvl(sum(AA级),0))/ sum(出窑数)), 4 ) *100)  AS UA率,
+        //	SUM(原料缺陷_铁脏 ) AS 原料缺陷_铁脏,
+        //             SUM(原料缺陷_铜脏) AS 原料缺陷_铜脏,
+        //             SUM(原料缺陷_合计) AS 原料缺陷_合计,
+        //             SUM(成型缺陷_糙活) AS 成型缺陷_糙活,
+        //             SUM(成型缺陷_成裂) AS 成型缺陷_成裂,
+        //             SUM(成型缺陷_成脏) AS 成型缺陷_成脏,
+        //             SUM(成型缺陷_成走) AS 成型缺陷_成走,
+        //             SUM(成型缺陷_孔不良) AS 成型缺陷_孔不良,
+        //             SUM(成型缺陷_漏气) AS 成型缺陷_漏气,
+        //             SUM(成型缺陷_泥绺) AS 成型缺陷_泥绺,
+        //             SUM(成型缺陷_排水不良) AS 成型缺陷_排水不良,
+        //             SUM(成型缺陷_坯脏) AS 成型缺陷_坯脏,
+        //             SUM(成型缺陷_注泡) AS 成型缺陷_注泡,
+        //             SUM(成型缺陷_棕眼) AS 成型缺陷_棕眼,
+        //             SUM(成型缺陷_炸圈) AS 成型缺陷_炸圈,
+        //             SUM(成型缺陷_卡球) AS 成型缺陷_卡球,
+        //             SUM(成型缺陷_合计) AS 成型缺陷_合计,
+        //             SUM(施釉缺陷_爆釉) AS 施釉缺陷_爆釉,
+        //             SUM(施釉缺陷_标不良) AS 施釉缺陷_标不良 ,
+        //             SUM(施釉缺陷_脱釉) AS 施釉缺陷_脱釉 ,
+        //              SUM(施釉缺陷_釉薄) AS 施釉缺陷_釉薄,
+        //              SUM(施釉缺陷_釉磕) AS 施釉缺陷_釉磕 ,
+        //              SUM(施釉缺陷_釉绺) AS 施釉缺陷_釉绺 ,
+        //              SUM(施釉缺陷_釉脏) AS 施釉缺陷_釉脏 ,
+        //              SUM(施釉缺陷_釉粘) AS 施釉缺陷_釉粘,
+        //              SUM(施釉缺陷_釉泡) AS 施釉缺陷_釉泡,
+        //              SUM(施釉缺陷_波纹) AS 施釉缺陷_波纹,
+        //              SUM(施釉缺陷_合计) AS 施釉缺陷_合计,
+        //              SUM(循环线施釉缺陷_爆釉) AS 循环线施釉缺陷_爆釉 ,
+        //              SUM(循环线施釉缺陷_标不良) AS 循环线施釉缺陷_标不良 ,
+        //              SUM(循环线施釉缺陷_脱釉) AS 循环线施釉缺陷_脱釉,
+        //              SUM(循环线施釉缺陷_釉薄) AS 循环线施釉缺陷_釉薄,
+        //              SUM(循环线施釉缺陷_釉磕) AS 循环线施釉缺陷_釉磕,
+        //              SUM(循环线施釉缺陷_釉绺) AS 循环线施釉缺陷_釉绺,
+        //              SUM(循环线施釉缺陷_釉脏) AS 循环线施釉缺陷_釉脏,
+        //              SUM(循环线施釉缺陷_釉粘) AS 循环线施釉缺陷_釉粘,
+        //              SUM(循环线施釉缺陷_釉泡) AS 循环线施釉缺陷_釉泡,
+        //              SUM(循环线施釉缺陷_波纹) AS 循环线施釉缺陷_波纹,
+        //              SUM(循环线施釉缺陷_合计) AS 循环线施釉缺陷_合计,
+        //	 SUM(施釉_合计) AS 施釉_合计,
+        //              SUM(出装窑缺陷_蹭釉) AS 出装窑缺陷_蹭釉,
+        //              SUM(出装窑缺陷_出磕) AS 出装窑缺陷_出磕,
+        //              SUM(出装窑缺陷_划釉) AS 出装窑缺陷_划釉,
+        //              SUM(出装窑缺陷_落脏) AS 出装窑缺陷_落脏,
+        //              SUM(出装窑缺陷_装磕) AS 出装窑缺陷_装磕,
+        //              SUM(出装窑缺陷_装粘) AS出装窑缺陷_装粘,
+        //              SUM(出装窑缺陷_装脏) AS 出装窑缺陷_装脏,
+        //              SUM(出装窑缺陷_装走) AS 出装窑缺陷_装走,
+        //              SUM(出装窑缺陷_合计) AS 出装窑缺陷_合计,
+        //              SUM(烧窑缺陷_过火泡) AS 烧窑缺陷_过火泡,
+        //              SUM(烧窑缺陷_桔釉) AS 烧窑缺陷_桔釉,
+        //              SUM(烧窑缺陷_麻坑) AS 烧窑缺陷_麻坑,
+        //              SUM(烧窑缺陷_烧裂) AS 烧窑缺陷_烧裂,
+        //              SUM(烧窑缺陷_烧生) AS 烧窑缺陷_烧生,
+        //              SUM(烧窑缺陷_窑脏) AS 烧窑缺陷_窑脏,
+        //              SUM(烧窑缺陷_烧炸) AS 烧窑缺陷_烧炸,
+        //              SUM(烧窑缺陷_烟熏) AS 烧窑缺陷_烟熏,
+        //              SUM(烧窑缺陷_水滴) AS 烧窑缺陷_水滴,
+        //              SUM(烧窑缺陷_风惊) AS 烧窑缺陷_风惊,
+        //              SUM(烧窑缺陷_针孔) AS 烧窑缺陷_针孔,
+        //              SUM(烧窑缺陷_合计) AS 烧窑缺陷_合计,
+        //              SUM(其他缺陷_崩脏) AS 其他缺陷_崩脏,
+        //              SUM(其他缺陷_坯磕) AS 其他缺陷_坯磕,
+        //              SUM(其他缺陷_研磨) AS 其他缺陷_研磨,
+        //              SUM(其他缺陷_复烧修补不良) AS 其他缺陷_复烧修补不良,
+        //              SUM(其他缺陷_合计) AS 其他缺陷_合计,
+        //              SUM(研磨缺陷_眼) AS 研磨缺陷_眼,
+        //              SUM(研磨缺陷_底) AS 研磨缺陷_底,
+        //              SUM(研磨缺陷_底和面) AS 研磨缺陷_底和面 ,
+        //              SUM(研磨缺陷_面) AS 研磨缺陷_面,
+        //              SUM(研磨缺陷_边) AS 研磨缺陷_边,
+        //              SUM(研磨缺陷_研磨配盖) AS 研磨缺陷_研磨配盖,
+        //              SUM(研磨缺陷_合计) AS 研磨缺陷_合计,
+        //              SUM(合计) AS 合计
+        //FROM(
+        //				SELECT
+        //				GOODSTYPENAME AS 产品类别,
+        //								GOODSNAME AS 产品名称 ,
+        //								sum(OUT_K) AS  出窑数 ,
+        //				sum(COUNT_U4) AS U级,
+        //				sum(COUNT_AB) AS A级,
+        //				sum(COUNT_AA) AS AA级,
+        //				sum(COUNT_B) AS B级,
+        //				sum(COUNT_R) AS R级,
+        //				sum(LB_NUM)  AS 冷补数,
+        //				sum(COUNT_L) AS L级 ,
+        //				sum(COUNT_U7) AS F级,
+        //				sum(COUNT_Z) AS Z级,
+        //				DEcode(ROUND(  ((nvl(sum(COUNT_U4),0)+nvl(sum(COUNT_AB),0)+ nvl(sum(COUNT_AA),0))/ sum(OUT_K)), 4 ) *100,0,NULL,ROUND(  ((nvl(sum(COUNT_U4),0)+nvl(sum(COUNT_AB),0)+ nvl(sum(COUNT_AA),0))/ sum(OUT_K)), 4 ) *100)  AS UA率,
+        //				sum( CNUM1 ) AS 原料缺陷_铁脏 ,
+        //				sum( CNUM2 ) AS 原料缺陷_铜脏,
+        //				sum( CNUM3 ) AS 原料缺陷_合计,
+        //				sum( CNUM4 ) AS 成型缺陷_糙活,
+        //				sum( CNUM5 ) AS 成型缺陷_成裂,
+        //				sum( CNUM6 ) AS 成型缺陷_成脏,
+        //				sum( CNUM7 ) AS 成型缺陷_成走,
+        //				sum( CNUM8 ) AS 成型缺陷_孔不良,
+        //				sum( CNUM9 ) AS 成型缺陷_漏气,
+        //				sum( CNUM10 ) AS 成型缺陷_泥绺,
+        //				sum( CNUM11 ) AS 成型缺陷_排水不良,
+        //				sum( CNUM12 ) AS 成型缺陷_坯脏,
+        //				sum( CNUM13 ) AS 成型缺陷_注泡,
+        //				sum( CNUM14 ) AS 成型缺陷_棕眼,
+        //				sum( CNUM15 ) AS 成型缺陷_炸圈,
+        //				sum( CNUM16 ) AS 成型缺陷_卡球,
+        //				sum( CNUM17 ) AS 成型缺陷_合计,
+        //				sum( CNUM18 ) AS 施釉缺陷_爆釉,
+        //				sum( CNUM19 ) AS 施釉缺陷_标不良,
+        //				sum( CNUM20 ) AS 施釉缺陷_脱釉,
+        //				sum( CNUM21 ) AS 施釉缺陷_釉薄,
+        //				sum( CNUM22 ) AS 施釉缺陷_釉磕,
+        //				sum( CNUM23 ) AS 施釉缺陷_釉绺,
+        //				sum( CNUM24 ) AS 施釉缺陷_釉脏,
+        //				sum( CNUM25 ) AS 施釉缺陷_釉粘,
+        //				sum( CNUM26 ) AS 施釉缺陷_釉泡,
+        //				sum( CNUM27 ) AS 施釉缺陷_波纹,
+        //				sum( CNUM28 ) AS 施釉缺陷_合计,
+        //				sum( CNUM29 ) AS 循环线施釉缺陷_爆釉,
+        //				sum( CNUM30 ) AS 循环线施釉缺陷_标不良,
+        //				sum( CNUM31 ) AS 循环线施釉缺陷_脱釉,
+        //				sum( CNUM32 ) AS 循环线施釉缺陷_釉薄,
+        //				sum( CNUM33 ) AS 循环线施釉缺陷_釉磕,
+        //				sum( CNUM34 ) AS 循环线施釉缺陷_釉绺,
+        //				sum( CNUM35 ) AS 循环线施釉缺陷_釉脏,
+        //				sum( CNUM36 ) AS 循环线施釉缺陷_釉粘,
+        //				sum( CNUM37 ) AS 循环线施釉缺陷_釉泡,
+        //				sum( CNUM38 ) AS 循环线施釉缺陷_波纹,
+        //				sum( CNUM39 ) AS 循环线施釉缺陷_合计,
+        //				sum(CNUM39) + sum (CNUM28) AS 施釉_合计,
+        //				sum( CNUM40 ) AS 出装窑缺陷_蹭釉,
+        //				sum( CNUM41 ) AS 出装窑缺陷_出磕,
+        //				sum( CNUM42 ) AS 出装窑缺陷_划釉,
+        //				sum( CNUM43 ) AS 出装窑缺陷_落脏,
+        //				sum( CNUM44 ) AS 出装窑缺陷_装磕,
+        //				sum( CNUM45 ) AS 出装窑缺陷_装粘,
+        //				sum( CNUM46 ) AS 出装窑缺陷_装脏,
+        //				sum( CNUM47 ) AS 出装窑缺陷_装走,
+        //				sum( CNUM48 ) AS 出装窑缺陷_合计,
+        //				sum( CNUM49 ) AS 烧窑缺陷_过火泡,
+        //				sum( CNUM50 ) AS 烧窑缺陷_桔釉,
+        //				sum( CNUM51 ) AS 烧窑缺陷_麻坑,
+        //				sum( CNUM52 ) AS 烧窑缺陷_烧裂,
+        //				sum( CNUM53 ) AS 烧窑缺陷_烧生,
+        //				sum( CNUM54 ) AS 烧窑缺陷_窑脏,
+        //				sum( CNUM55 ) AS 烧窑缺陷_烧炸,
+        //				sum( CNUM56 ) AS 烧窑缺陷_烟熏,
+        //				sum( CNUM57 ) AS 烧窑缺陷_水滴,
+        //				sum( CNUM58 ) AS 烧窑缺陷_风惊,
+        //				sum( CNUM59 ) AS 烧窑缺陷_针孔,
+        //				sum( CNUM60 ) AS 烧窑缺陷_合计,
+        //				sum( CNUM61 ) AS 其他缺陷_崩脏,
+        //				sum( CNUM62 ) AS 其他缺陷_坯磕,
+        //				sum( CNUM63 ) AS 其他缺陷_研磨,
+        //				sum( CNUM64 ) AS 其他缺陷_复烧修补不良,
+        //				sum( CNUM65 ) AS 其他缺陷_合计,
+        //				sum( CNUM66 ) AS 研磨缺陷_眼,
+        //				sum( CNUM67 ) AS 研磨缺陷_底,
+        //				sum( CNUM68 ) AS 研磨缺陷_底和面,
+        //				sum( CNUM69 ) AS 研磨缺陷_面,
+        //				sum( CNUM70 ) AS 研磨缺陷_边,
+        //				sum( CNUM71 ) AS 研磨缺陷_研磨配盖,
+        //				sum( CNUM72 ) AS 研磨缺陷_合计,
+        //				sum( CNUM73 ) AS 合计,
+        //				GOOD AS 序号
+        //				from
+        //					JZ_RPT014
+        //			WHERE  PROCEDUREID = @PROCEDUREID@
+        //							AND FORWARDTIME >= @BEGINMONTH@
+        //							AND  FORWARDTIME < =@ENDMONTH@
+        //							AND BUILDINGNO {BUILDINGNO}
+        //							AND (KILNID = @KILNID@ OR @KILNID@ IS NULL)
+        //							GROUP BY
+        //							GROUPING SETS ((GOODSTYPENAME,GOODSNAME,GOOD)) 
+        //														 ) GROUP BY
+        //														   GROUPING SETS ((产品类别,产品名称),()) ".Replace("{BUILDINGNO}", buding);
+
+        //           //获取查询条件
+        //           List<CDAParameter> sqlPara = new List<CDAParameter>();
+        //           sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(context.Request["datebeginMaster"]), DataType.DateTime));
+        //           sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1), DataType.DateTime));
+        //           sqlPara.Add(new CDAParameter("BUILDINGNO", context.Request["buildingnoMaster"]));
+        //           sqlPara.Add(new CDAParameter("KILNID", context.Request["kilnidMaster"]));
+        //           sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
+        //           sqlPara.Add(new CDAParameter("BEGINMONTH", context.Request["datebeginMaster"].Substring(0, context.Request["datebeginMaster"].IndexOf("-")) + context.Request["datebeginMaster"].Substring(context.Request["datebeginMaster"].IndexOf("-") + 1).PadLeft(2, '0')));
+        //           sqlPara.Add(new CDAParameter("ENDMONTH", context.Request["dateendMaster"].Substring(0, context.Request["dateendMaster"].IndexOf("-")) + context.Request["dateendMaster"].Substring(context.Request["dateendMaster"].IndexOf("-") + 1).PadLeft(2, '0')));
+
+        //           //获取分页数据    
+        //           int total = 0;
+        //           DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
+        //           for (int m = dt.Columns.Count - 1; m > 0; m--)
+        //           {
+        //               for (int mn = 0; mn < defectallnames.Count; mn++)
+        //               {
+        //                   if (dt.Columns[m].ColumnName.Contains(defectallnames[mn]))
+        //                   {
+        //                       dt.Columns.Remove(dt.Columns[m].ColumnName);
+        //                   }
+        //               }
+        //           }
+        //           string jsonStr = new JsonResult(dt) { total = total }.ToJson();
+        //           context.Response.Write(jsonStr);
+        //       }
+        //   }
     }
 
     public bool IsReusable

+ 2 - 2
wwwroot/mes/rpt/rpt014/rptnew_detail.ashx

@@ -115,8 +115,8 @@ public class rptnew_detail : IHttpHandler, IReadOnlySessionState
 								WHERE  PD.PROCEDUREID in ( {PROCEDUREID} ) 
                             -- AND PD.VALUEFLAG = '1'
                            -- AND PD.CHECKBATCHNO = 1 
-                           AND PD.CREATETIME >= @DATEBEGIN@
-                           AND PD.CREATETIME < @DATEEND@
+                           --AND PD.CREATETIME >= @DATEBEGIN@
+                           --AND PD.CREATETIME < @DATEEND@
                             --区分AA级 必须再出窑数的范围内
                            AND PD.CHECKTIME >= @DATEBEGIN@
                            AND PD.CHECKTIME < @DATEEND@