Forráskód Böngészése

每窑的总合计穿透

姜永辉 5 hónapja
szülő
commit
03027accbf

+ 3 - 0
wwwroot/Plugins/xeasyui/xuwell.js

@@ -578,6 +578,9 @@ $.fn.datagridLoadRpt = function (ops) {
                     title: title,
                     fitColumns: false,
                     data: [],
+                    onLoadSuccess: function (data) { 
+                        onLoadSuccess(data);
+                    }
                 });
                 $.loaded();
             }

+ 156 - 0
wwwroot/mes/rpt/rpt014/rpt_index_detail_total.html

@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8" />
+    <meta name="keywords" content="dongke,mes,ibossmes">
+    <meta name="description" content="制造企业生产过程执行管理系统">
+    <meta name="author" content="xuwei">
+    <title>东科软件</title>
+    <script src="/plugins/xeasyui/xeasyui.min.js"></script>
+    <style>
+        .container {
+            display: flex;
+            flex-wrap: wrap;
+        }
+
+        .sidebar {
+            flex: 1;
+            height:100%;
+            background-color: #f4f4f4;
+            padding: 20px;
+        }
+
+        .content {
+            flex: 1;
+            height: 100%;
+            background-color: red;
+            padding: 20px;
+        }
+        .panel-tool a {
+            display:none !important;
+        }
+    </style>
+</head>
+<body class="easyui-layout">
+    <!--工具条-->
+    <div id="tb" class="i-toolbar">
+        <a href="javascript:void(0)" id="btnExport" title="导出" class="easyui-linkbutton" iconcls="icon-excel" plain="true" onclick="tbExport()">导出</a>
+    </div>
+    <!-- HTML 遮罩层 -->
+    <div id="loading-mask" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:9999;">
+        <div style="position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); color:white; font-size:16px;">
+            正在处理,请稍等。。。
+        </div>
+    </div>
+    <div data-options="region:'west',plain:true,border:false,split:true,title:'详细条码'" style="width:100%">
+        <!--表格-->
+        <table id="DataGridMasterGrid"
+               data-options="toolbar: '#tb',method:'get',border:false,singleSelect:true,fit:true,fitColumns:false,rownumbers:true,onDblClickCell:dgDblclickcellleftdetail">
+            <thead>
+                <tr>
+                    <th data-options="field:'产品编码',title:'产品编码',width:250,align:'center',sortable:false"></th>
+                    <th data-options="field:'产品条码',title:'产品条码',width:250,align:'center',sortable:false"></th>
+                </tr>
+            </thead>
+        </table>
+
+    </div>
+    <!--<div data-options="region:'east',plain:true,border:false,split:true,title:'改判条码'" style="width:50%">-->
+        <!--表格-->
+        <!--<table id="DataGridMasterGridChange"
+               data-options="toolbar: '#tb',method:'get',border:false,singleSelect:true,fit:true,fitColumns:false,rownumbers:true,onDblClickCell:dgDblclickcellrightdetail">
+            <thead>
+                <tr>
+                    <th data-options="field:'产品编码',title:'产品编码',width:140,align:'center',sortable:false"></th>
+                    <th data-options="field:'产品条码',title:'产品条码',width:160,align:'center',sortable:false"></th>
+                    <th data-options="field:'改判后质量',title:'改判后质量',width:160,align:'center',sortable:false"></th>
+                </tr>
+            </thead>
+        </table>
+    </div>-->
+
+    <script type="text/javascript">
+
+        //导出
+        function tbExport() {
+            var fields = $('#DataGridMasterGrid').datagrid('getColumnFields');
+            var headers = [];
+            for (var i = 0; i < fields.length; i++) {
+                headers.push(fields[i]);
+            }
+            $('#DataGridMasterGrid').datagridExport({
+                headers: headers,
+                fileName: '导出条码数据(新每窑质量总缺陷统计表-结转).xls',
+                workSheet: '导出条码数据(新每窑质量总缺陷统计表-结转)'
+            });
+
+        }
+
+
+        // 点击某行某列
+        function dgDblclickcellleftdetail(index, fields, value) {
+            if (fields == "产品条码") {
+                window.location.href = '../rpt042/rpt_index.html?barcode=' + value;
+            }
+        }
+
+        // 点击某行某列
+        function dgDblclickcellrightdetail(index, fields, value) {
+            if (fields == "产品条码") {
+                window.location.href = '../rpt042/rpt_index.html?barcode=' + value;
+            }
+        }
+
+        function cancelForm() {
+            $.dialog.close();
+        }
+        function getQueryParams() {
+            let params = {};
+            let queryString = window.location.search.substring(1); // 获取查询字符串并去掉前面的问号
+            let pairs = queryString.split("&"); // 将查询字符串分割成键值对数组
+            for (let pair of pairs) {
+                let [key, value] = pair.split("="); // 将键值对分割成键和值
+                params[key] = decodeURIComponent(value); // 对值进行URL解码
+            }
+            return params;
+        }
+
+        let params = getQueryParams();
+        console.log(params); // {param1: "value1", param2: "value2"}
+
+
+
+        $(document).ready(function () {
+            let params = getQueryParams();
+            //传入的参数
+            let queryParams = JSON.parse(localStorage.getItem("SearchSubmit"));
+            console.log("$(document).ready", queryParams, params);
+            $('#loading-mask').show();
+            $('#DataGridMasterGrid').datagridLoadRpt({
+                title: '',
+                idField: 'SID',
+                queryParams: queryParams,
+                url: 'rptnew_detail_total.ashx?fields=' + params["fields"] + "&index=" + params["index"] + "&gs=" + params["gs"],
+                fixWidth: 140,
+                mergeWidth: 80,
+                pagination: false,
+                splitChar: '_',
+                onLoadSuccess: function (data) {
+                    $('#loading-mask').hide();
+                }
+            });
+            //$('#DataGridMasterGridChange').datagridLoadRpt({
+            //    title: '',
+            //    idField: 'SID',
+            //    queryParams: queryParams,
+            //    url: 'rptnew_detail_change_total.ashx?fields=' + params["fields"] + "&index=" + params["index"] + "&gs=" + params["gs"],
+            //    fixWidth: 140,
+            //    mergeWidth: 80,
+            //    pagination: false,
+            //    splitChar: '_'
+            //});
+        });
+
+    </script>
+</body>
+</html>

+ 13 - 1
wwwroot/mes/rpt/rpt014/rpt_index_new.html

@@ -248,7 +248,19 @@
             var height = $(document).height();
             var row = $('#DataGridMasterGrid').datagrid('getRows')[index];
             console.log(index, fields, value, row);
-            if (row["产品名称"] == null || row["产品名称"] == "") {
+            if (row["产品名称"] == null || row["产品名称"] == "" || value == null || value == "" ) {
+                if (row["产品类别"] == '合计' && value != null  && (fields == "出窑数" || fields == "U级" || fields == "A级" || fields == "检验数" || fields == "再去AA"
+                    || fields == "AA级" || fields == "去AA" || fields == "F级" || fields == "R级" || fields == "重烧_合格数"
+                    || fields == "R重烧_检验数" || fields == "去R" || fields == "再去R"
+                    || fields == "研磨" || fields == "直接冷补" || fields == "研磨后冷补" || fields == "堵漏气"
+                    || (fields.toString().includes("_") && !fields.toString().includes("合计")))) {
+                    $('#DataGridMasterGrid').datagridDialog({
+                        title: fields + '合计',
+                        width: width,
+                        height: height,
+                        url: 'rpt_index_detail_total.html?fields=' + fields + "&index=" + index + "&gs=" + row["产品编码"]
+                    });
+                } 
                 return;
             }
             if (fields == "出窑数" || fields == "U级" || fields == "A级" || fields == "检验数" || fields == "再去AA"

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

@@ -252,8 +252,10 @@ public class rptnew_detail : IHttpHandler, IReadOnlySessionState
                            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_semicheck semicheck ON semicheck.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.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'    AND semicheck.productiondataid is null 
                              " + (proc == "999" ? "AND (pmax.kilncarbatchno = PDD.kilncarbatchno OR pmax.procedureid = PDD.procedureid)"
                                             : "AND (pmax.kilncarbatchno = PDD.kilncarbatchno )")
                             /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
@@ -530,9 +532,11 @@ public class rptnew_detail : IHttpHandler, IReadOnlySessionState
 							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_semicheck semicheck ON semicheck.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
+                            and pmax.KILNCARBATCHNO= PDD.KILNCARBATCHNO 	AND  semicheck.productiondataid is null 
 							/*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
 							AND PMAX.PROCEDUREID IN " + lb + @"							 
 			             
@@ -583,9 +587,12 @@ public class rptnew_detail : IHttpHandler, IReadOnlySessionState
 							AND GL.BUILDINGNO {BUILDINGNO}
 								GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID  ,pd.KILNCARBATCHNO   
 							) PD INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+					--   去除复检的质量登记
+                  LEFT JOIN tp_pm_productiondata_semicheck semicheck ON semicheck.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 IN (35) 
+                              AND (pmax.kilncarbatchno = pdd.kilncarbatchno OR pmax.procedureid = pdd.procedureid)
+							AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'  AND  semicheck.productiondataid is null  
+							AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41, 35)
 								 			             
 						GROUP BY
 							PD.BARCODE,

+ 153 - 0
wwwroot/mes/rpt/rpt014/rptnew_detail_change_total.ashx

@@ -0,0 +1,153 @@
+<%@ WebHandler Language="C#" Class="rptnew_detail" %>
+
+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 rptnew_detail : IHttpHandler, IReadOnlySessionState
+{
+    List<CDAParameter> goodsnull = new List<CDAParameter>();
+    string defectStr = "";
+    DataTable col = new DataTable();
+    string proc = "";
+    //楼号
+    string buding = null;
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        proc = context.Request["procedureidMaster"].ToString();
+        string fields = context.Request["fields"].ToString();
+        string index = context.Request["index"].ToString();
+        string gs = context.Request["gs"].ToString(); 
+        if (proc == "888")
+        {
+            proc = "13";
+        }
+        else if (proc == "999")
+        {
+            proc = "35";
+        } 
+
+        #region 取缺陷拼接串
+
+        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
+                                      ,to_char(dg.defectgroupname) || '_' || to_char(d.defectname) AS DEFECTGROUPNAME
+                                  FROM tp_mst_defectgroup dg
+                                  LEFT JOIN tp_mst_defect d
+                                    ON dg.defectid = d.defectid
+                                 WHERE dg.defectgrouptype LIKE '每窑%' and  dg.valueflag = '1' AND dg.defectgrouptype != '每窑4' AND dg.accountid = @ACCOUNTID@
+                                UNION
+
+                                SELECT dg.defectgrouptype AS tno
+                                      ,9999 AS dno
+                                      ,to_char(dg.defectgroupname) || '_合计' AS DEFECTGROUPNAME
+                                  FROM (SELECT *
+                                          FROM tp_mst_defectgroup
+                                         WHERE defectgrouptype LIKE '每窑%'  and  valueflag = '1' AND  defectgrouptype != '每窑4' AND  accountid = @ACCOUNTID@) dg
+                                 GROUP BY dg.defectgrouptype
+                                         ,dg.defectgroupname
+                                 ORDER BY tno
+                                         ,dno
+            ",
+               new CDAParameter("ACCOUNTID", 1)
+               );
+
+            for (int i = 0; i < col.Rows.Count; i++)
+            {
+                if (defectStr.IndexOf("'" + col.Rows[i]["DEFECTGROUPNAME"].ToString() + "'") < 0)
+                {
+                    if (i > 0) defectStr += ",";
+                    defectStr += "'" + col.Rows[i]["DEFECTGROUPNAME"].ToString() + "' AS " + col.Rows[i]["DEFECTGROUPNAME"].ToString();
+                }
+            }
+            #endregion
+
+            // 各个列的明细数据
+            string sqlDetail = @" SELECT  DISTINCT T.GOODSCODE  产品编码,  T.Barcode  产品条码	,TSGL.GOODSLEVELTYPENAME AS 改判后质量		            
+			           FROM ( 
+				          select p.Barcode  ,p.goodsleveltypeid,G.GOODSCODE FROM
+                            ( SELECT  pd.productiondataid
+                                      ,pd.procedureid
+                                      ,pd.Barcode,pd.groutingdailydetailid
+                                      ,pd.goodsleveltypeid
+                                      ,MAX(pmax.productiondataid) AS maxproductiondataid
+                          FROM tp_pm_productiondata pd
+                          LEFT JOIN tp_pm_productiondata pmax
+                            ON pmax.groutingdailydetailid = pd.groutingdailydetailid
+                           AND pmax.productiondataid < pd.productiondataid 
+                            AND (pmax.procedureid = 13 OR pmax.procedureid = 35)
+                         INNER JOIN tp_pc_groutingline gl
+                            ON gl.groutinglineid = pd.groutinglineid
+                         WHERE pd.procedureid in ( {PROCEDUREID} )  
+                           AND pd.createtime > @DATEEND@
+                             AND pd.checktime >= pmax.checktime
+                           --AND pd.CHECKTIME >= @DATEBEGIN@
+                          -- AND pd.CHECKTIME < @DATEEND@ 
+                           AND (pd.kilnid = @KILNID@ OR @KILNID@ IS NULL)
+                          -- AND pd.goodscode IN( '" + gs + @"' )
+                           AND gl.buildingno {BUILDINGNO}
+                         GROUP BY pd.productiondataid
+                                      ,pd.procedureid
+                                      ,pd.Barcode,pd.groutingdailydetailid,pd.goodsleveltypeid ) p
+                          INNER JOIN tp_pm_productiondata rpd
+                            ON rpd.productiondataid = p.maxproductiondataid
+                             INNER JOIN TP_MST_GOODS G ON G.GOODSID = rpd.GOODSID	 
+                           AND (rpd.procedureid=13 or rpd.procedureid=35) 
+                            left JOIN tp_pm_productiondata pll
+                                ON pll.groutingdailydetailid = p.groutingdailydetailid
+                               AND pll.productiondataid < p.productiondataid
+                               AND rpd.productiondataid < pll.productiondataid
+                               AND pll.valueflag = '1'
+                                  /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+                               AND pll.procedureid IN (20, 22, 23, 37, 41)
+                            where p.goodsleveltypeid<>rpd.goodsleveltypeid
+                                   AND rpd.CHECKTIME >= @DATEBEGIN@
+                                    AND rpd.CHECKTIME < @DATEEND@    and pll.productiondataid is null
+                            ) T   LEFT JOIN TP_SYS_GOODSLEVELTYPE TSGL ON T.GOODSLEVELTYPEID = TSGL.GOODSLEVELTYPEID  order by T.Barcode ";
+             
+            sqlDetail = sqlDetail.Replace("{DEFECT}", defectStr).Replace("{BUILDINGNO}", buding).Replace("{PROCEDUREID}", proc);
+            //获取查询条件
+            List<CDAParameter> sqlPara = new List<CDAParameter>();
+
+            sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(context.Request["datebeginMaster"]), DataType.DateTime));
+            /* sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).AddDays(-1), DataTy
+            pe.DateTime));*/
+            sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1), DataType.DateTime));
+            sqlPara.Add(new CDAParameter("KILNID", context.Request["kilnidMaster"]));
+            DataTable dt = conn.ExecuteDatatable(sqlDetail, sqlPara.ToArray());
+            string jsonStr = new JsonResult(dt) { total = dt.Rows.Count }.ToJson();
+            context.Response.Write(jsonStr);
+        }
+
+
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+}

+ 758 - 0
wwwroot/mes/rpt/rpt014/rptnew_detail_total.ashx

@@ -0,0 +1,758 @@
+<%@ WebHandler Language="C#" Class="rptnew_detail" %>
+
+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 rptnew_detail : IHttpHandler, IReadOnlySessionState
+{
+    List<CDAParameter> goodsnull = new List<CDAParameter>();
+
+    string defectStr = "";
+    DataTable col = new DataTable();
+    string proc = "";
+    //楼号
+    string buding = null;
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        proc = context.Request["procedureidMaster"].ToString();
+
+        string fields = context.Request["fields"].ToString();
+        int index = Convert.ToInt32(context.Request["index"] + "");
+        string gs = context.Request["gs"].ToString();
+        string lb = "(20, 22, 23, 37, 41)";
+        if (proc == "999")
+        {
+            lb = " ( 20, 22, 23, 37, 41,35 ) ";
+        }
+
+        #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
+            // 各个列的明细数据
+            string sqlDetail = @" SELECT  DISTINCT  T.GOODSCODE 产品编码,  T.Barcode  产品条码				            
+			            FROM
+				            (SELECT
+					            PDD.Barcode,
+					            MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+					            PDD.GOODSLEVELTYPEID,
+					            PDD.GOODSID,G.GOODSCODE,
+					            PDD.REWORKPROCEDUREID, 
+					            CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG
+			            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 in ( {PROCEDUREID} ) 
+                            -- AND PD.VALUEFLAG = '1'
+                           -- AND PD.CHECKBATCHNO = 1 
+                           --AND PD.CREATETIME >= @DATEBEGIN@
+                           --AND PD.CREATETIME < @DATEEND@
+                            --区分AA级 必须再出窑数的范围内
+                           AND PD.CHECKTIME >= @DATEBEGIN@
+                           AND PD.CHECKTIME < @DATEEND@
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+                           --  AND PD.GOODSCODE IN( '" + gs + @"' )
+                           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.KILNCARBATCHNO= PDD.KILNCARBATCHNO
+			                AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' 
+				            /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+				            AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)	
+                            INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID
+			            GROUP BY
+				            PDD.Barcode,
+				            PDD.GOODSLEVELTYPEID,
+				            PDD.GOODSID,G.GOODSCODE,
+				            PDD.REWORKPROCEDUREID    ) T  ";
+            switch (fields)
+            {
+                case "出窑数":
+                    {
+                        sqlDetail = @" SELECT  DISTINCT  G.GOODSCODE 产品编码, TO_CHAR(pd.Barcode)	产品条码				            
+			            FROM
+				            TP_PM_PRODUCTIONDATA PD
+				            INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID  
+				            INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
+			            WHERE
+                           PD.PROCEDUREID in ( {PROCEDUREID} )
+                           AND  PD.CHECKFLAG = 1
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+                           -- AND PD.GOODSCODE IN( '" + gs + @"' )
+                           AND GL.BUILDINGNO {BUILDINGNO} ";
+                        sqlDetail += " order by G.GOODSCODE, pd.Barcode ";
+                        break;
+                    }
+                case "U级":
+                    {
+                        sqlDetail += @"  where T.GOODSLEVELTYPEID = 4 and T.H_FLAG = 0";
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "A级":
+                    {
+                        sqlDetail += @"  where T.GOODSLEVELTYPEID = 5 and T.H_FLAG = 0";
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "AA级":
+                    {
+                        sqlDetail = @" SELECT  DISTINCT T.GOODSCODE 产品编码,  T.Barcode  产品条码				            
+			            FROM
+				            (SELECT
+					            PDD.Barcode,
+					            MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+					            PDD.GOODSLEVELTYPEID,
+					            PDD.GOODSID,G.GOODSCODE,
+					            PDD.REWORKPROCEDUREID, 
+					            CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG
+			            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 in ( {PROCEDUREID} ) 
+                            -- AND PD.VALUEFLAG = '1'
+                           -- AND PD.CHECKBATCHNO = 1 
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@ 
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+                           --   AND PD.GOODSCODE IN( '" + gs + @"' )
+                           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_semicheck semicheck ON semicheck.productiondataid = pd.productiondataid
+			                LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+			                AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'   AND semicheck.productiondataid is null
+                            " + (proc == "999" ? "AND (pmax.kilncarbatchno = PDD.kilncarbatchno OR pmax.procedureid = PDD.procedureid)"
+                                            : "AND (pmax.kilncarbatchno = PDD.kilncarbatchno )")
+                           /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+                           + @" AND PMAX.PROCEDUREID IN  " + lb + @"				             
+			             INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID 
+			            GROUP BY
+				            PDD.Barcode,
+				            PDD.GOODSLEVELTYPEID,
+				            PDD.GOODSID,G.GOODSCODE,
+				            PDD.REWORKPROCEDUREID   ) T  LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID where  T.GOODSLEVELTYPEID IN ( 4, 5 )  ";
+                        if (proc == "999")
+                        {
+                            sqlDetail += " AND (rpd.procedureid IN  " + lb + " OR (rpd.procedureid IS NULL AND rpd.goodsleveltypeid != 6))  ";
+                        }
+                        else
+                        {
+                            sqlDetail += " AND RPD.PROCEDUREID IN  " + lb;
+                        }
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "去AA":
+                    {
+                        sqlDetail += @"  where    T.GOODSLEVELTYPEID = 7 or T.H_FLAG = 1  ";
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "检验数":
+                    {
+                        sqlDetail = @" SELECT  DISTINCT T.GOODSCODE 产品编码, T.Barcode  产品条码				            
+			            FROM
+				            (SELECT
+					            PDD.Barcode,
+					            MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+					            PDD.GOODSLEVELTYPEID,
+					            PDD.GOODSID,G.GOODSCODE,
+					            PDD.REWORKPROCEDUREID, 
+					            CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG
+			            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 in ( {PROCEDUREID} ) 
+                            -- AND PD.VALUEFLAG = '1'
+                           -- AND PD.CHECKBATCHNO = 1 
+                           AND PD.CREATETIME >= @DATEBEGIN@
+                           AND PD.CREATETIME < @DATEEND@ 
+                           AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+                           --   AND PD.GOODSCODE IN( '" + gs + @"' )
+                           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_semicheck semicheck ON semicheck.productiondataid = pd.productiondataid
+			                LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+			                AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'   AND semicheck.productiondataid is null 
+                             " + (proc == "999" ? "AND (pmax.kilncarbatchno = PDD.kilncarbatchno OR pmax.procedureid = PDD.procedureid)"
+                                            : "AND (pmax.kilncarbatchno = PDD.kilncarbatchno )")
+                            /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+                            + @" AND PMAX.PROCEDUREID IN  " + lb + @"	 		            
+			              INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID 
+			            GROUP BY
+				            PDD.Barcode,
+				            PDD.GOODSLEVELTYPEID,
+				            PDD.GOODSID,G.GOODSCODE,
+				            PDD.REWORKPROCEDUREID  ) T  LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID  where  1=1   ";
+                        if (proc == "999")
+                        {
+                            sqlDetail += " AND (rpd.procedureid IN  " + lb + " OR (rpd.procedureid IS NULL AND rpd.goodsleveltypeid != 6))  ";
+                        }
+                        else
+                        {
+                            sqlDetail += " AND RPD.PROCEDUREID IN  " + lb;
+                        }
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "再去AA":
+                    {
+                        sqlDetail = @" SELECT  DISTINCT T.GOODSCODE  产品编码, T.Barcode  产品条码				            
+			            FROM
+				            (SELECT to_char(pd.Barcode) Barcode
+                              ,MAX(pmax.productiondataid) mpdid
+                              ,PDD.goodsleveltypeid
+                              ,PDD.goodsid ,G.GOODSCODE
+                              ,PDD.checkbatchno                              
+                          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 (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+										--  AND PD.GOODSCODE IN( '" + gs + @"')
+									   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID  
+										) PD INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+                          INNER JOIN tp_pm_productiondata pmax
+                            ON pmax.groutingdailydetailid = pd.groutingdailydetailid
+                           AND pmax.productiondataid < pd.productiondataid
+                            and pmax.KILNCARBATCHNO= PDD.KILNCARBATCHNO
+                           AND pmax.valueflag = '1' 
+                              /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+                           AND pmax.procedureid IN (20, 22, 23, 37, 41)
+                           INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID 
+                         GROUP BY pd.Barcode
+                                 ,PDD.goodsleveltypeid
+                                 ,PDD.goodsid ,G.GOODSCODE,PDD.checkbatchno  ) T  
+                                where mpdid > 0 and (checkbatchno > 1 or (checkbatchno = 1 and goodsleveltypeid = 7) ) ";
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "再去R":
+                    {
+                        sqlDetail = @" SELECT  DISTINCT T.GOODSCODE  产品编码,   T.Barcode  产品条码				            
+			            FROM
+				            (SELECT to_char(pd.Barcode) Barcode
+                              ,MAX(pmax.productiondataid) mpdid
+                              ,PDD.goodsleveltypeid
+                              ,PDD.goodsid ,G.GOODSCODE
+                              ,PDD.checkbatchno                              
+                          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 (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+										--  AND PD.GOODSCODE IN( '" + gs + @"')
+									   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID 
+										) PD INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+                          INNER JOIN tp_pm_productiondata pmax
+                            ON pmax.groutingdailydetailid = pd.groutingdailydetailid
+                           AND pmax.productiondataid < pd.productiondataid 
+                           AND pmax.valueflag = '1' 
+                              /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+                           AND pmax.procedureid IN ( {PROCEDUREID} )
+                           INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID
+                         GROUP BY pd.Barcode
+                                 ,PDD.goodsleveltypeid
+                                 ,PDD.goodsid ,G.GOODSCODE ,PDD.checkbatchno  ) T  
+                                where mpdid > 0 and (checkbatchno > 1 or (checkbatchno = 1 and  goodsleveltypeid = 6) ) ";
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "去R":
+                    {
+                        sqlDetail = @" SELECT  DISTINCT  T.GOODSCODE 产品编码,   T.Barcode  产品条码				            
+			            FROM
+				            (SELECT to_char(pd.Barcode) Barcode
+                              ,MAX(pmax.productiondataid) mpdid
+                              ,PDD.goodsleveltypeid
+                              ,PDD.goodsid ,G.GOODSCODE
+                              ,PDD.checkbatchno                              
+                          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 (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+										--  AND PD.GOODSCODE IN( '" + gs + @"')
+									   AND GL.BUILDINGNO {BUILDINGNO}
+										 GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID 
+										) PD INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+                          INNER JOIN tp_pm_productiondata pmax
+                            ON pmax.groutingdailydetailid = pd.groutingdailydetailid
+                           AND pmax.productiondataid < pd.productiondataid 
+                           AND pmax.valueflag = '1' 
+                           and pmax.KILNCARBATCHNO= PDD.KILNCARBATCHNO
+                           AND pmax.valueflag = '1' 
+                              /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+                           AND pmax.procedureid IN (20, 22, 23, 37, 41)
+                            INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID
+                         GROUP BY pd.Barcode
+                                 ,PDD.goodsleveltypeid
+                                 ,PDD.goodsid,G.GOODSCODE ,PDD.checkbatchno  ) T  
+                                where  T.GOODSLEVELTYPEID = 6   ";
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "F级":
+                    {
+                        if (proc == "13" || proc == "35")
+                        {
+                            sqlDetail += @"  where T.GOODSLEVELTYPEID = 20   and T.H_FLAG = "
+                            + ((proc == "13" || proc == "35") ? 0 : 1);
+                        }
+                        else
+                        {
+                            sqlDetail = @" SELECT  DISTINCT T.GOODSCODE  产品编码,  T.Barcode  产品条码				            
+			                FROM
+				                (SELECT
+					                PDD.Barcode,
+					                MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+					                PDD.GOODSLEVELTYPEID,
+					                PDD.GOODSID,G.GOODSCODE,
+					                PDD.REWORKPROCEDUREID, 
+					                CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG
+			                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 in ( {PROCEDUREID} ) 
+                                -- AND PD.VALUEFLAG = '1'
+                               -- AND PD.CHECKBATCHNO = 1 
+                               AND PD.CREATETIME >= @DATEBEGIN@
+                               AND PD.CREATETIME < @DATEEND@ 
+                               AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+                               --   AND PD.GOODSCODE IN( '" + gs + @"' )
+                               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'
+                                 " + (proc == "999" ? "AND (pmax.kilncarbatchno = PDD.kilncarbatchno OR pmax.procedureid = PDD.procedureid)"
+                                            : "AND (pmax.kilncarbatchno = PDD.kilncarbatchno )")
+                                /*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+                                + @" AND PMAX.PROCEDUREID IN  " + lb + @"	
+				                 INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID             
+			                GROUP BY
+				                PDD.Barcode,
+				                PDD.GOODSLEVELTYPEID,
+				                PDD.GOODSID,G.GOODSCODE,
+				                PDD.REWORKPROCEDUREID    ) T where  T.H_FLAG =  1  AND t.goodsleveltypeid = 20 ";
+                        }
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "R级":
+                    {
+                        sqlDetail += @"   where T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 19 and T.H_FLAG = 0";
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "研磨_检验数":
+                case "研磨_合格数":
+                case "直接冷补_检验数":
+                case "直接冷补_合格数":
+                case "研磨后冷补_检验数":
+                case "研磨后冷补_合格数":
+                case "堵漏气_检验数":
+                case "堵漏气_合格数":
+                // case "刷洗不良_检验数":
+                // case "刷洗不良_合格数":
+                    {
+                        string procedureid = "";
+                        if (fields == "研磨_检验数")
+                        {
+                            procedureid = "20";
+                        }
+                        else if (fields == "研磨_合格数")
+                        {
+                            procedureid = " 20  AND t.goodsleveltypeid IN (4, 5) ";
+                        }
+                        else if (fields == "直接冷补_检验数")
+                        {
+                            procedureid = "22";
+                        }
+                        else if (fields == "直接冷补_合格数")
+                        {
+                            procedureid = " 22  AND t.goodsleveltypeid IN (4, 5) ";
+                        }
+                        else if (fields == "研磨后冷补_检验数")
+                        {
+                            procedureid = "23";
+                        }
+                        else if (fields == "研磨后冷补_合格数")
+                        {
+                            procedureid = " 23  AND t.goodsleveltypeid IN (4, 5) ";
+                        }
+                        else if (fields == "堵漏气_检验数")
+                        {
+                            procedureid = "37";
+                        }
+                        else if (fields == "堵漏气_合格数")
+                        {
+                            procedureid = " 37  AND t.goodsleveltypeid IN (4, 5) ";
+                        }
+                        else if (fields == "刷洗不良_检验数")
+                        {
+                            procedureid = "41";
+                        }
+                        else if (fields == "刷洗不良_合格数")
+                        {
+                            procedureid = " 41  AND t.goodsleveltypeid IN (4, 5) ";
+                        }
+
+                        sqlDetail = @" SELECT  DISTINCT T.GOODSCODE 产品编码, T.Barcode  产品条码				            
+			            FROM
+				            (SELECT
+							TO_CHAR(PD.BARCODE) BARCODE,
+							MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+							PDD.GOODSLEVELTYPEID,
+							PDD.GOODSID,G.GOODSCODE,
+							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 in ( {PROCEDUREID} )
+							-- AND PD.VALUEFLAG = '1'
+							-- AND PD.CHECKBATCHNO = 1  
+							AND PD.CREATETIME >= @DATEBEGIN@
+							AND PD.CREATETIME < @DATEEND@ 
+							AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+							--  AND PD.GOODSCODE IN( '" + gs + @"' )
+							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_semicheck semicheck ON semicheck.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 	AND  semicheck.productiondataid is null 
+							/*20  研磨 22  直接冷补 23  研磨后冷补(非回收) 37  堵漏气 41  刷洗不良*/
+							AND PMAX.PROCEDUREID IN " + lb + @"							 
+			                INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID  
+						GROUP BY
+							PD.BARCODE,
+							PDD.GOODSLEVELTYPEID,
+							PDD.GOODSID,G.GOODSCODE,
+							PDD.REWORKPROCEDUREID    ) T  LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID where  rpd.procedureid =   " + procedureid;
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                case "重烧_合格数":
+                case "重烧_检验数":
+                    {
+                        string wh = "";
+                        if (fields == "重烧_合格数")
+                        {
+                            wh = " t.goodsleveltypeid IN (4, 5)  AND (rpd.procedureid IN (35) OR  (rpd.procedureid IS NULL AND rpd.goodsleveltypeid != 6)) ";
+                        }
+                        else if (fields == "重烧_检验数")
+                        {
+                            wh = "   (rpd.procedureid IN (35) OR  (rpd.procedureid IS NULL AND rpd.goodsleveltypeid != 6)) ";
+                        }
+
+                        sqlDetail = @" SELECT  DISTINCT T.GOODSCODE 产品编码, T.Barcode  产品条码				            
+			            FROM
+				            (SELECT
+							TO_CHAR(PD.BARCODE) BARCODE,
+							MAX( PMAX.PRODUCTIONDATAID ) MPDID,
+							PDD.GOODSLEVELTYPEID,
+							PDD.GOODSID,G.GOODSCODE,
+							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  ,pd.KILNCARBATCHNO
+								FROM TP_PM_PRODUCTIONDATA PD 
+								INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
+								WHERE
+							PD.PROCEDUREID in ( {PROCEDUREID} )
+							-- AND PD.VALUEFLAG = '1'
+							-- AND PD.CHECKBATCHNO = 1  
+							AND PD.CREATETIME >= @DATEBEGIN@
+							AND PD.CREATETIME < @DATEEND@ 
+							AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+							--  AND PD.GOODSCODE IN( '" + gs + @"' )
+							AND GL.BUILDINGNO {BUILDINGNO}
+								GROUP BY PD.GOODSID,PD.BARCODE ,PD.GROUTINGDAILYDETAILID  ,pd.KILNCARBATCHNO   
+							) PD INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PDD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID 
+ --   去除复检的质量登记
+                            LEFT JOIN tp_pm_productiondata_semicheck semicheck ON semicheck.productiondataid = pd.productiondataid
+							LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID 
+                            AND (pmax.kilncarbatchno = pdd.kilncarbatchno OR pmax.procedureid = pdd.procedureid)
+							AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'   AND  semicheck.productiondataid is null
+							AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41, 35)
+							 INNER JOIN TP_MST_GOODS G ON G.GOODSID = PDD.GOODSID	 			             
+						GROUP BY
+							PD.BARCODE,
+							PDD.GOODSLEVELTYPEID,
+							PDD.GOODSID,G.GOODSCODE,
+							PDD.REWORKPROCEDUREID    ) T  LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID where  " + wh;
+                        sqlDetail += " order by T.GOODSCODE,T.Barcode ";
+                        break;
+                    }
+                default:
+                    {
+                        // 缺陷的详细条码
+                        if (fields.Contains("_") && !fields.Contains("合计"))
+                        {
+                            if (proc == "13" || proc == "35")
+                            {
+                                sqlDetail = @"SELECT DISTINCT G.GOODSCODE 产品编码,  pp.Barcode  产品条码	
+			                             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 = {PROCEDUREID} 
+						                           AND PD.CHECKTIME >= @DATEBEGIN@
+                                                   AND PD.CHECKTIME < @DATEEND@
+                                                   AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+                                                   --   AND PD.GOODSCODE IN  ( '" + gs + @"')
+                                                   AND GL.BUILDINGNO {BUILDINGNO} 
+                                                        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 = ppdg.procedureid OR pdp.procedureid2 = ppdg.procedureid
+								                ) 
+			                            WHERE instr(  to_char(pdp.defectgroupname || '_' || m.defectname) ,  '" + fields + @"' ) > 0 
+                                          
+                                             and not  (d.defectid = 11 AND  pp.goodsleveltypeid = 4) ";
+                                sqlDetail += " order by G.GOODSCODE,PP.Barcode ";
+                            }
+                            else
+                            {
+                                sqlDetail = @"SELECT DISTINCT  G.GOODSCODE 产品编码,  pp.Barcode  产品条码	
+			                             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.KILNCARBATCHNO= pd.KILNCARBATCHNO
+											  /*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 IN (13, 35)
+										   --AND PD.VALUEFLAG = '1'
+										   --AND PD.CHECKBATCHNO = 1
+										   AND PD.createtime >= @DATEBEGIN@
+										   AND PD.createtime < @DATEEND@
+										   AND PD.GOODSLEVELTYPEID = 20
+										   AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+										   --  AND PD.GOODSCODE IN( '" + gs + @"')
+										   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.VALUEFLAG = '1'
+										   and pmax.KILNCARBATCHNO= pd.KILNCARBATCHNO
+											  /*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 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 (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL) 
+										   --  AND PD.GOODSCODE IN( '" + gs + @"')
+										   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  
+				                            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 = pp.procedureid OR pdp.procedureid2 = pp.procedureid
+								                )   and instr ( to_char(pdp.defectgroupname || '_' || m.defectname)  , '" + fields + @"' ) > 0  ";
+                                sqlDetail += " order by G.GOODSCODE,pp.Barcode ";
+                            }
+
+                        }
+                        break;
+                    }
+
+            }
+            if (proc == "888")
+            {
+                proc = "13";
+            }
+            else if (proc == "999")
+            {
+                proc = "35";
+            }
+            sqlDetail = sqlDetail.Replace("{DEFECT}", defectStr).Replace("{BUILDINGNO}", buding).Replace("{PROCEDUREID}", proc);
+            //获取查询条件
+            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"].ToString() == "13" || context.Request["procedureidMaster"].ToString() == "35") ? context.Request["procedureidMaster"] + "" : "13,35"));
+            DataTable dt = conn.ExecuteDatatable(sqlDetail, sqlPara.ToArray());
+            string jsonStr = new JsonResult(dt) { total = dt.Rows.Count }.ToJson();
+            //string jsonStr = new JsonResult(dt) { total = dt.Rows.Count }.ToJson();
+            context.Response.Write(jsonStr);
+        }
+
+
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+}