姜永辉 1 год назад
Родитель
Сommit
837e88e438
2 измененных файлов с 970 добавлено и 4 удалено
  1. 957 0
      wwwroot/mes/rpt/rpt014/rpt - 250416.ashx
  2. 13 4
      wwwroot/mes/rpt/rpt014/rpt.ashx

+ 957 - 0
wwwroot/mes/rpt/rpt014/rpt - 250416.ashx

@@ -0,0 +1,957 @@
+<%@ WebHandler Language="C#" Class="rpt" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Data;
+using System.Text;
+using System.Collections;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+
+public class rpt : IHttpHandler, IReadOnlySessionState
+{
+    List<CDAParameter> goodsnull = new List<CDAParameter>();
+    string[] goodsCodes = new string[] { };
+    string goodsStr = "";
+    DataTable goodsTable = new DataTable();
+    string defectStr = "";
+    DataTable col = new DataTable();
+    string proc = "";
+    string sqlStr = "";
+    //楼号
+    string buding = null;
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        proc = context.Request["procedureidMaster"].ToString();
+        //主表
+        if (context.Request["m"].ToString() == "master")
+        {
+            #region 产品编码
+            if (context.Request["GOODSCODE"] != "" || context.Request["GOODSCODE"] != null)
+            {
+                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")
+                {
+                    goodssql += @" AND GOODSCODE NOT LIKE ('%" + goodsCodes[0].ToUpper() + "%') ";
+                    for (int i = 1; i < goodsCodes.Length; i++)
+                    {
+                        goodssql += @" AND GOODSCODE NOT LIKE ('%" + goodsCodes[i].ToUpper() + "%') ";
+                    }
+                }
+                else
+                {
+                    goodssql += @" AND GOODSCODE  LIKE ('%" + goodsCodes[0].ToUpper() + "%') ";
+                    for (int i = 1; i < goodsCodes.Length; i++)
+                    {
+                        goodssql += @" OR GOODSCODE  LIKE ('%" + goodsCodes[i].ToUpper() + "%') ";
+                    }
+                }
+            }
+
+            #endregion
+            #region 取缺陷拼接串
+            string procedureId = "21,2,6,16,31,25,30,33,7,8,9";
+            if (context.Request["buildingnoMaster"].ToString().IndexOf("2#") >= 0)
+            {
+                //二期 原料21 成型2 施釉6 循环线16     出装/登窑7 烧窑/入窑8 卸窑9
+                procedureId = "21,2,6,16,7,8,9";
+            }
+
+            if (context.Request["buildingnoMaster"].ToString().IndexOf("1#") >= 0)
+            {
+                //一期 原料31 成型25 施釉30 循环线33   出装/登窑7 烧窑/入窑8 卸窑9
+                procedureId = "31,25,30,33,7,8,9";
+            }
+
+
+            if (context.Request["buildingnoMaster"].ToString() != "12")
+            {
+                buding = "IN('" + context.Request["buildingnoMaster"] + "')";
+            }
+            else
+            {
+                buding = "IN(" + "'1#','2#'" + ")";
+            }
+            using (IDataAccess conn = DataAccess.Create())
+            {
+                col = conn.ExecuteDatatable(@"
+					SELECT
+						DG.DEFECTGROUPTYPE AS TNO,
+						DG.DEFECTGROUPID AS DNO,
+						DG.DEFECTGROUPNAME || '_' || D.DEFECTNAME AS DEFECT 
+					FROM
+						TP_MST_DEFECTGROUP DG
+						LEFT JOIN TP_MST_DEFECT D ON DG.DEFECTID = D.DEFECTID 
+					WHERE 
+						DG.DEFECTGROUPTYPE LIKE '每窑%'
+					UNION
+
+					SELECT
+						DG.DEFECTGROUPTYPE AS TNO,
+						9999 AS DNO,
+						DG.DEFECTGROUPNAME || '_合计' AS DEFECT 
+					FROM
+						(select * from TP_MST_DEFECTGROUP WHERE DEFECTGROUPTYPE LIKE '每窑%') DG
+					GROUP BY 
+						DG.DEFECTGROUPTYPE,
+						DG.DEFECTGROUPNAME
+
+					ORDER BY
+						TNO,DNO
+					");
+            }
+
+            for (int i = 0; i < col.Rows.Count; i++)
+            {
+                if (defectStr.IndexOf("'" + col.Rows[i]["DEFECT"].ToString() + "'") < 0)
+                {
+                    if (i > 0) defectStr += ",";
+                    defectStr += "'" + col.Rows[i]["DEFECT"].ToString() + "' AS " + col.Rows[i]["DEFECT"].ToString();
+                }
+            }
+            #endregion
+            using (IDataAccess conn = DataAccess.Create())
+            {
+                if (proc == "13")
+                {
+                    //读取报表数据
+                    sqlStr = @"
+            SELECT
+	            DECODE( TA.GID, 3, '合计', TA.GOODSTYPENAME ) AS 产品类别,
+	            --TA.GOODSCODE AS 产品编码,
+	            TA.GOODSNAME AS 产品名称,
+	            DECODE( TA.OUT_K, 0, NULL, TA.OUT_K ) AS 出窑数,
+	            --DECODE( TA.COUNT_U4 + TA.COUNT_U5 + TA.COUNT_AB, 0, NULL, TA.COUNT_U4 + TA.COUNT_U5 + TA.COUNT_AB ) 合格123,
+	            DECODE( TA.COUNT_U4, 0, NULL, TA.COUNT_U4 ) AS U级,
+	            DECODE( TA.COUNT_U5 + TA.COUNT_AB, 0, NULL, TA.COUNT_U5 + TA.COUNT_AB ) A级,
+	            DECODE( TA.COUNT_AA, 0, NULL, TA.COUNT_AA ) AS AA级,
+	            DECODE( TA.COUNT_B, 0, NULL, TA.COUNT_B ) AS B级,
+	            DECODE( TA.COUNT_R, 0, NULL, TA.COUNT_R ) AS R级,
+				DECODE( TA.LB_NUM, 0, NULL, TA.LB_NUM ) AS 冷补数,
+	            DECODE( TA.COUNT_L, 0, NULL, TA.COUNT_L ) AS L级,
+	            DECODE( TA.COUNT_U7 - TA.COUNT_B + TA.COUNT_H + TA.COUNT_F, 0, NULL, TA.COUNT_U7 - TA.COUNT_B + TA.COUNT_H + TA.COUNT_F ) AS F级,
+	            DECODE( TA.COUNT_Z, 0, NULL, TA.COUNT_Z ) AS Z级,
+	            DECODE( TA.Waste, 0, NULL, TA.Waste ) AS 废品,
+	            CASE WHEN TA.OUT_K IS NULL OR TA.OUT_K = 0 THEN NULL ELSE ROUND( ( TA.COUNT_U4 + TA.COUNT_U5 + TA.COUNT_AB + 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(LB_NUM) LB_NUM,
+			            SUM( T.OUT_K ) OUT_K,
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 4 THEN 1 ELSE 0 END ) COUNT_U4, -- 直接正品
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 5 THEN 1 ELSE 0 END ) COUNT_U5, -- 直接副品
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 7 THEN 1 ELSE 0 END ) COUNT_U7, -- 直接次品
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 19 THEN 1 ELSE 0 END ) AS COUNT_R,
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 36 THEN 1 ELSE 0 END ) AS COUNT_Z,
+			            SUM( T.B_NUM ) AS COUNT_B,
+			            SUM( CASE WHEN T.H_FLAG = 1 THEN 1 ELSE 0 END ) AS COUNT_H,
+			            SUM( CASE WHEN RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN - 1 ELSE 0 END ) COUNT_L, -- 冷补、堵漏气检验数 + 研磨+刷洗
+			            SUM( CASE WHEN T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23 ) THEN 1 ELSE 0 END ) COUNT_AA, -- 冷补合格数
+			            SUM( CASE WHEN T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 37, 20, 41 ) THEN 1 ELSE 0 END ) COUNT_AB, -- 堵漏气合格数 + 研磨+刷洗
+			            SUM( CASE WHEN T.GOODSLEVELTYPEID NOT IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN 1 ELSE 0 END ) COUNT_F, -- 冷补、堵漏气不合格数 + 研磨+刷洗
+						SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 20 THEN 1 ELSE 0 END ) Waste -- 直接次品
+		            FROM
+			            (
+			            SELECT      
+					           DISTINCT 
+                                TO_CHAR(pd.Barcode),
+					            NULL MPDID,
+					            0 GOODSLEVELTYPEID,
+					            PD.GOODSID,
+					            0 REWORKPROCEDUREID,
+								DECODE(DL.PRODUCTIONDATAID,null,0,1) LB_NUM,
+					            0 B_NUM, --B级品
+					            1 OUT_K,
+					            -1 H_FLAG,
+                                0 Waste
+			            FROM
+				            TP_PM_PRODUCTIONDATA PD
+				            INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID 
+							--取冷补数 code=8606 id=67 xuwei 2020-11-17
+				            LEFT JOIN TP_PM_DEFECT DL ON DL.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+				            AND DL.DEFECTID = 67 
+				            AND DL.VALUEFLAG = '1'
+			            WHERE
+                           PD.PROCEDUREID = @PROCEDUREID@
+                           AND PD.CHECKFLAG = 1
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
+                           -- AND (PD.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
+                           --AND (INSTR((@GOODSCODE@),PD.GOODSCODE)>0 OR @GOODSCODE@ IS NULL)
+                           AND PD.GOODSCODE IN({goodsCodes})
+                           AND GL.BUILDINGNO {BUILDINGNO}
+			            UNION ALL
+			            SELECT
+					            TO_CHAR(PD.PRODUCTIONDATAID),
+					            MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+					            PD.GOODSLEVELTYPEID,
+					            PD.GOODSID,
+					            PD.REWORKPROCEDUREID,
+								0 LB_NUM,
+					            CASE WHEN PD.GOODSLEVELTYPEID = 7 AND sum( D.PRODUCTIONDEFECTID ) > 0 THEN 1 ELSE 0 END B_NUM, --B级品
+					            0 OUT_K,
+					            CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG, 
+                                0 Waste
+			            FROM
+				            TP_PM_PRODUCTIONDATA PD
+			                LEFT 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)
+				            LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+				            AND D.DEFECTID = 92 
+				            AND D.VALUEFLAG = '1'
+				            INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID 
+			            WHERE
+                           PD.VALUEFLAG = '1'
+                           AND PD.PROCEDUREID = @PROCEDUREID@
+                           AND PD.CHECKBATCHNO = 1
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
+                           -- AND (PD.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
+                           --AND (INSTR((@GOODSCODE@),PD.GOODSCODE)>0 OR @GOODSCODE@ IS NULL)
+                            AND PD.GOODSCODE IN({goodsCodes})
+                           AND GL.BUILDINGNO {BUILDINGNO}
+			            GROUP BY
+				            PD.PRODUCTIONDATAID,
+				            PD.GOODSLEVELTYPEID,
+				            PD.GOODSID,
+				            PD.REWORKPROCEDUREID 
+                            UNION ALL
+                            SELECT
+					            TO_CHAR(PD.PRODUCTIONDATAID),
+					            NULL MPDID,
+					            0 GOODSLEVELTYPEID,
+					            PD.GOODSID,
+					            0 REWORKPROCEDUREID,
+								0 LB_NUM,
+					            0 B_NUM, --B级品
+					            0 OUT_K,
+					            0 H_FLAG,
+                                 0 Waste
+			            FROM
+				            TP_PM_PRODUCTIONDATA PD
+				            INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID 
+				            LEFT JOIN TP_PM_DEFECT DL ON DL.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+				            AND DL.DEFECTID = 67 
+				            AND DL.VALUEFLAG = '1'
+			            WHERE
+                           PD.PROCEDUREID = @PROCEDUREID@
+                           AND PD.CHECKFLAG = 1
+                           AND PD.CHECKBATCHNO = 1
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
+                           -- AND (PD.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
+                           --AND (INSTR((@GOODSCODE@),PD.GOODSCODE)>0 OR @GOODSCODE@ IS NULL)
+                            AND PD.GOODSCODE IN({goodsCodes})
+							AND (INSTR((@GOODSNAME@),PD.GOODSNAME)>0 OR @GOODSNAME@ IS NULL)
+                           AND GL.BUILDINGNO  {BUILDINGNO}
+				            ) 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 ( GT.GOODSTYPECODE, G.GOODSCODE, PDP.DEFECTGROUPNAME, M.DEFECTNAME ) AS GID,
+				            GT.GOODSTYPECODE,
+				            GT.GOODSTYPENAME,
+				            G.GOODSCODE,
+				            PDP.DEFECTGROUPNAME,
+				            TO_CHAR( PDP.DEFECTGROUPNAME || '_' || M.DEFECTNAME ) AS DEFECT,
+							SUM(CASE WHEN D.DEFECTID = 11 AND (P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5) THEN 0 ELSE 1 END) AS CNUM
+			            FROM
+				            TP_PM_PRODUCTIONDATA P
+				            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_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
+				            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 and d.defectprocedureid is null)
+                                    OR  (@PROCEDUREID@ = 13 and d.defectprocedureid is null)
+								) 
+			            WHERE
+				            P.VALUEFLAG = '1'
+                            AND P.PROCEDUREID = @PROCEDUREID@
+                            AND P.CHECKBATCHNO = 1
+							--xuwei fix 2020-10-09 begin  20250414 石磊 以pc客户端的为主
+
+                            --AND P.CHECKTIME >= @DATEBEGIN@
+                            --AND P.CHECKTIME < @DATEEND@
+                            AND P.CREATETIME >= @DATEBEGIN@
+                            AND P.CREATETIME < @DATEEND@
+							--xuwei fix 2020-10-09 end 
+
+                            AND P.GOODSLEVELTYPEID <> 4
+                            AND (P.KILNID = @KILNID@ OR @KILNID@ IS NULL)
+                            -- AND (P.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
+                            --AND (INSTR((@GOODSCODE@),P.GOODSCODE)>0 OR @GOODSCODE@ IS NULL)
+                             AND P.GOODSCODE IN({goodsCodes})
+                            AND L.BUILDINGNO {BUILDINGNO}
+				            --XUWEI 2020-07-10 ADD
+				            --AND (NOT D.DEFECTPROCEDUREID IS NULL)
+			            GROUP BY
+				            GROUPING SETS (
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, PDP.DEFECTGROUPNAME ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, PDP.DEFECTGROUPNAME ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME ),
+					            ( PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
+					            ( PDP.DEFECTGROUPNAME ),
+					            ( ) 
+				            ) 
+			            ORDER BY
+				            GT.GOODSTYPECODE,
+				            G.GOODSCODE,
+				            PDP.DEFECTGROUPNAME,
+				            M.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 ) 
+	            )
+				ORDER BY TA.GOODSTYPENAME,TA.GOODSCODE
+                ".Replace("{DEFECT}", defectStr).Replace("{BUILDINGNO}", buding).Replace("{goodsCodes}", goodssql);
+                }
+                else
+                {
+                    //读取报表数据
+                    sqlStr = @"
+            SELECT
+	            DECODE( TA.GID, 3, '合计', TA.GOODSTYPENAME ) AS 产品类别,
+	            --TA.GOODSCODE AS 产品编码,
+	            TA.GOODSNAME AS 产品名称,
+	            DECODE( TA.OUT_K, 0, NULL, TA.OUT_K ) AS 出窑数,
+	            --DECODE( TA.COUNT_U4 + TA.COUNT_U5 + TA.COUNT_AB, 0, NULL, TA.COUNT_U4 + TA.COUNT_U5 + TA.COUNT_AB ) 合格123,
+	            DECODE( TA.COUNT_U4, 0, NULL, TA.COUNT_U4 ) AS U级,
+	            DECODE( TA.COUNT_U5 + TA.COUNT_AB, 0, NULL, TA.COUNT_U5 + TA.COUNT_AB ) A级,
+	            DECODE( TA.COUNT_AA, 0, NULL, TA.COUNT_AA ) AS AA级,
+	            DECODE( TA.COUNT_B, 0, NULL, TA.COUNT_B ) AS B级,
+	            DECODE( TA.COUNT_R, 0, NULL, TA.COUNT_R ) AS R级,
+				DECODE( TA.LB_NUM, 0, NULL, TA.LB_NUM ) AS 冷补数,
+	            DECODE( TA.COUNT_L, 0, NULL, TA.COUNT_L ) AS L级,
+	            DECODE( TA.COUNT_U7 - TA.COUNT_B + TA.COUNT_H + TA.COUNT_F, 0, NULL, TA.COUNT_U7 - TA.COUNT_B + TA.COUNT_H + TA.COUNT_F ) AS F级,
+	            DECODE( TA.COUNT_Z, 0, NULL, TA.COUNT_Z ) AS Z级,
+	            DECODE( TA.Waste, 0, NULL, TA.Waste ) AS 废品,
+	            CASE WHEN TA.OUT_K IS NULL OR TA.OUT_K = 0 THEN NULL ELSE ROUND( ( TA.COUNT_U4 + TA.COUNT_U5 + TA.COUNT_AB + 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(LB_NUM) LB_NUM,
+			            SUM( T.OUT_K ) OUT_K,
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 4 THEN 1 ELSE 0 END ) COUNT_U4, -- 直接正品
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 5 THEN 1 ELSE 0 END ) COUNT_U5, -- 直接副品
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 7 THEN 1 ELSE 0 END ) COUNT_U7, -- 直接次品
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 19 THEN 1 ELSE 0 END ) AS COUNT_R,
+			            SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 36 THEN 1 ELSE 0 END ) AS COUNT_Z,
+			            SUM( T.B_NUM ) AS COUNT_B,
+			            SUM( CASE WHEN T.H_FLAG = 1 THEN 1 ELSE 0 END ) AS COUNT_H,
+			            SUM( CASE WHEN RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN - 1 ELSE 0 END ) COUNT_L, -- 冷补、堵漏气检验数 + 研磨+刷洗
+			            SUM( CASE WHEN T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23 ) THEN 1 ELSE 0 END ) COUNT_AA, -- 冷补合格数
+			            SUM( CASE WHEN T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 37, 20, 41 ) THEN 1 ELSE 0 END ) COUNT_AB, -- 堵漏气合格数 + 研磨+刷洗
+			            SUM( CASE WHEN T.GOODSLEVELTYPEID NOT IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN 1 ELSE 0 END ) COUNT_F, -- 冷补、堵漏气不合格数 + 研磨+刷洗
+						SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 20 THEN 1 ELSE 0 END ) Waste -- 直接次品
+		            FROM
+			            (
+			            SELECT
+					            PD.PRODUCTIONDATAID,
+					            NULL MPDID,
+					            0 GOODSLEVELTYPEID,
+					            PD.GOODSID,
+					            0 REWORKPROCEDUREID,
+								DECODE(DL.PRODUCTIONDATAID,null,0,1) LB_NUM,
+					            0 B_NUM, --B级品
+					            1 OUT_K,
+					            -1 H_FLAG,
+                                0 Waste
+			            FROM
+				            TP_PM_PRODUCTIONDATA PD
+				            INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID 
+							--取冷补数 code=8606 id=67 xuwei 2020-11-17
+				            LEFT JOIN TP_PM_DEFECT DL ON DL.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+				            AND DL.DEFECTID = 67 
+				            AND DL.VALUEFLAG = '1'
+			            WHERE
+                           PD.PROCEDUREID = @PROCEDUREID@
+                           AND PD.CHECKFLAG = 1
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
+                           -- AND (PD.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
+                           --AND (INSTR((@GOODSCODE@),PD.GOODSCODE)>0 OR @GOODSCODE@ IS NULL)
+                           AND PD.GOODSCODE IN({goodsCodes})
+                           AND GL.BUILDINGNO {BUILDINGNO}
+			            UNION ALL
+			            SELECT
+					            PD.PRODUCTIONDATAID,
+					            MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+					            PD.GOODSLEVELTYPEID,
+					            PD.GOODSID,
+					            PD.REWORKPROCEDUREID,
+								0 LB_NUM,
+					            CASE WHEN PD.GOODSLEVELTYPEID = 7 AND sum( D.PRODUCTIONDEFECTID ) > 0 THEN 1 ELSE 0 END B_NUM, --B级品
+					            0 OUT_K,
+					            CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG, 
+                                0 Waste
+			            FROM
+				            TP_PM_PRODUCTIONDATA PD
+			                LEFT 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)
+				            LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+				            AND D.DEFECTID = 92 
+				            AND D.VALUEFLAG = '1'
+				            INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID 
+			            WHERE
+                           PD.VALUEFLAG = '1'
+                           AND PD.PROCEDUREID = @PROCEDUREID@
+                           AND PD.CHECKBATCHNO = 1
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
+                           -- AND (PD.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
+                           --AND (INSTR((@GOODSCODE@),PD.GOODSCODE)>0 OR @GOODSCODE@ IS NULL)
+                            AND PD.GOODSCODE IN({goodsCodes})
+                           AND GL.BUILDINGNO {BUILDINGNO}
+			            GROUP BY
+				            PD.PRODUCTIONDATAID,
+				            PD.GOODSLEVELTYPEID,
+				            PD.GOODSID,
+				            PD.REWORKPROCEDUREID 
+                            UNION ALL
+                            SELECT
+					            PD.PRODUCTIONDATAID,
+					            NULL MPDID,
+					            0 GOODSLEVELTYPEID,
+					            PD.GOODSID,
+					            0 REWORKPROCEDUREID,
+								0 LB_NUM,
+					            0 B_NUM, --B级品
+					            0 OUT_K,
+					            0 H_FLAG,
+                                 0 Waste
+			            FROM
+				            TP_PM_PRODUCTIONDATA PD
+				            INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID 
+				            LEFT JOIN TP_PM_DEFECT DL ON DL.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+				            AND DL.DEFECTID = 67 
+				            AND DL.VALUEFLAG = '1'
+			            WHERE
+                           PD.PROCEDUREID = @PROCEDUREID@
+                           AND PD.CHECKFLAG = 1
+                           AND PD.CHECKBATCHNO = 1
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
+                           -- AND (PD.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
+                           --AND (INSTR((@GOODSCODE@),PD.GOODSCODE)>0 OR @GOODSCODE@ IS NULL)
+                            AND PD.GOODSCODE IN({goodsCodes})
+							AND (INSTR((@GOODSNAME@),PD.GOODSNAME)>0 OR @GOODSNAME@ IS NULL)
+                           AND GL.BUILDINGNO  {BUILDINGNO}
+				            ) 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 ( GT.GOODSTYPECODE, G.GOODSCODE, PDP.DEFECTGROUPNAME, M.DEFECTNAME ) AS GID,
+				            GT.GOODSTYPECODE,
+				            GT.GOODSTYPENAME,
+				            G.GOODSCODE,
+				            PDP.DEFECTGROUPNAME,
+				            TO_CHAR( PDP.DEFECTGROUPNAME || '_' || M.DEFECTNAME ) AS DEFECT,
+							SUM(CASE WHEN D.DEFECTID = 11 AND (P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5) THEN 0 ELSE 1 END) AS CNUM
+			            FROM
+				            TP_PM_PRODUCTIONDATA P
+				            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_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
+				            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 and d.defectprocedureid is null)
+                                    OR  (@PROCEDUREID@ = 13 and d.defectprocedureid is null)
+								) 
+			            WHERE
+				            P.VALUEFLAG = '1'
+                            AND P.PROCEDUREID = @PROCEDUREID@
+                            AND P.CHECKBATCHNO = 1
+							--xuwei fix 2020-10-09 begin
+                            AND P.CHECKTIME >= @DATEBEGIN@
+                            AND P.CHECKTIME < @DATEEND@
+                            --AND P.CREATETIME >= @DATEBEGIN@
+                            --AND P.CREATETIME < @DATEEND@
+							--xuwei fix 2020-10-09 end 
+
+                            AND P.GOODSLEVELTYPEID <> 4
+                            AND (P.KILNID = @KILNID@ OR @KILNID@ IS NULL)
+                            -- AND (P.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
+                            --AND (INSTR((@GOODSCODE@),P.GOODSCODE)>0 OR @GOODSCODE@ IS NULL)
+                             AND P.GOODSCODE IN({goodsCodes})
+                            AND L.BUILDINGNO {BUILDINGNO}
+				            --XUWEI 2020-07-10 ADD
+				            --AND (NOT D.DEFECTPROCEDUREID IS NULL)
+			            GROUP BY
+				            GROUPING SETS (
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, PDP.DEFECTGROUPNAME ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, PDP.DEFECTGROUPNAME ),
+					            ( GT.GOODSTYPECODE, GT.GOODSTYPENAME ),
+					            ( PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
+					            ( PDP.DEFECTGROUPNAME ),
+					            ( ) 
+				            ) 
+			            ORDER BY
+				            GT.GOODSTYPECODE,
+				            G.GOODSCODE,
+				            PDP.DEFECTGROUPNAME,
+				            M.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 ) 
+	            )
+				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"]), DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(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"]).ToString("yyyy-MM-dd") + "'");
+                sqlStr = sqlStr.Replace("@DATEEND@", "DATE'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).ToString("yyyy-MM-dd") + "'");
+                sqlStr = sqlStr.Replace("@KILNID@", context.Request["kilnidMaster"].ToString() != "" ? context.Request["kilnidMaster"].ToString() : " NULL ");
+                sqlStr = sqlStr.Replace("@PROCEDUREID@", context.Request["procedureidMaster"].ToString() != "" ? context.Request["procedureidMaster"].ToString() : " NULL ");
+                sqlStr = sqlStr.Replace("@GOODSCODE@", " '' ");
+                sqlStr = sqlStr.Replace("@GOODSNAME@", " '' ");
+                string nameGuid = string.Empty;
+                nameGuid = DateTime.Now.ToString("hh24:mi:ss").Replace("/", "").Replace(":", "").Replace(" ", "");
+                sqlStr = @"CREATE OR REPLACE PROCEDURE PRO_" + nameGuid + @" (RS OUT SYS_REFCURSOR) IS
+							BEGIN
+							  OPEN RS FOR
+						" + sqlStr +
+
+                        @";
+							END PRO_" + nameGuid + @";
+						";
+                conn.ExecuteNonQuery(sqlStr);
+                sqlPara.Clear();
+                string procedureName = "PRO_" + nameGuid;
+                sqlPara.Add(new CDAParameter("rs", DataType.Cursor, ParameterDirection.Output));
+                DataTable dt = conn.ExecuteSPDatatable(procedureName, sqlPara.ToArray());
+                string deleteProcedure = "drop PROCEDURE PRO_" + nameGuid;
+                int resultProcedure = conn.ExecuteNonQuery(deleteProcedure);
+
+                //直接获取不分页数据
+                //DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
+                //					
+                //xuwei end ==============================================
+                //========================================================
+
+                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('/', ' ');
+                }
+
+                //增加 施釉循环线合计
+                int ind1 = dt.Columns.IndexOf("施釉缺陷_合计");
+                int ind2 = dt.Columns.IndexOf("循环线施釉缺陷_合计");
+                int ind = Math.Max(ind1, ind2);
+                if (ind > 0)
+                {
+                    dt.Columns.Add(new DataColumn("施釉_合计", typeof(Int32)));
+                    dt.Columns["施釉_合计"].SetOrdinal(ind + 1);
+                    for (int i = 0; i < dt.Rows.Count; i++)
+                    {
+                        int c1 = 0;
+                        int c2 = 0;
+                        if (ind1 > 0 && dt.Rows[i]["施釉缺陷_合计"] != DBNull.Value)
+                        {
+                            c1 = Convert.ToInt32(dt.Rows[i]["施釉缺陷_合计"]);
+                        }
+                        if (ind2 > 0 && dt.Rows[i]["循环线施釉缺陷_合计"] != DBNull.Value)
+                        {
+                            c2 = Convert.ToInt32(dt.Rows[i]["循环线施釉缺陷_合计"]);
+                        }
+                        if (c1 + c2 > 0)
+                        {
+                            dt.Rows[i]["施釉_合计"] = c1 + c2;
+                        }
+                    }
+                }
+                //获取分页参数
+                int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;
+                int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 10;
+                string sort = HttpContext.Current.Request["sort"] is object ? HttpContext.Current.Request["sort"] : "m.REPORTCODE";
+                string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
+                //获取分页数据
+                int total = 0;
+                //dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                string jsonStr = new JsonResult(dt) { total = total }.ToJson();
+                //string jsonStr = new JsonResult(dt) { total = dt.Rows.Count }.ToJson();
+                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#'" + ")";
+                }
+                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());
+                string jsonStr = new JsonResult(dt) { total = total }.ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+}

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

@@ -296,6 +296,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 							SUM(CASE WHEN D.DEFECTID = 11 AND (P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5) THEN 0 ELSE 1 END) AS CNUM
 			            FROM
 				            TP_PM_PRODUCTIONDATA 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_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
@@ -304,9 +307,12 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				            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 )
+ 
+									-- ( PDP.PROCEDUREID1 = PR.PROCEDUREID OR PDP.PROCEDUREID2 = PR.PROCEDUREID )
 									--xuwei 2020-09-01 add 重烧的没有责任工序也算
-									OR @PROCEDUREID@ = 35
+									-- OR @PROCEDUREID@ = 35
+									-- 20250417 改为用 是否走过 tp_mst_defectgroup 缺陷工序分组的 工序id1 工序id2 为基准
+									pdp.procedureid1 = pp.procedureid OR pdp.procedureid2 = pp.procedureid
 								) 
 			            WHERE
 				            P.VALUEFLAG = '1'
@@ -531,6 +537,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 							SUM(CASE WHEN D.DEFECTID = 11 AND (P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5) THEN 0 ELSE 1 END) AS CNUM
 			            FROM
 				            TP_PM_PRODUCTIONDATA P
+							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_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
@@ -539,9 +546,11 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				            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 )
+									--( PDP.PROCEDUREID1 = PR.PROCEDUREID OR PDP.PROCEDUREID2 = PR.PROCEDUREID )
 									--xuwei 2020-09-01 add 重烧的没有责任工序也算
-									OR @PROCEDUREID@ = 35
+									--OR @PROCEDUREID@ = 35
+									-- 20250417 改为用 是否走过 tp_mst_defectgroup 缺陷工序分组的 工序id1 工序id2 为基准
+									pdp.procedureid1 = pp.procedureid OR pdp.procedureid2 = pp.procedureid
 								) 
 			            WHERE
 				            P.VALUEFLAG = '1'