chenxy 1 год назад
Родитель
Сommit
9a17bce083
2 измененных файлов с 454 добавлено и 418 удалено
  1. BIN
      wwwroot/Bin/Oracle.ManagedDataAccess.dll
  2. 454 418
      wwwroot/mes/rpt/rpt013/rpt.ashx

BIN
wwwroot/Bin/Oracle.ManagedDataAccess.dll


+ 454 - 418
wwwroot/mes/rpt/rpt013/rpt.ashx

@@ -14,12 +14,12 @@ using DK.XuWei.WebMes;
 
 public class rpt : IHttpHandler, IReadOnlySessionState
 {
-	public void ProcessRequest(HttpContext context)
-	{
-		context.Response.ContentType = "text/plain";
-		using (IDataAccess conn = DataAccess.Create())
-		{
-				  #region 产品编码
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        using (IDataAccess conn = DataAccess.Create())
+        {
+            #region 产品编码
             List<CDAParameter> goodsnull = new List<CDAParameter>();
             string[] goodsCodes = new string[] { };
             string goodsStr = "";
@@ -28,34 +28,70 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                 goodsCodes = context.Request["GOODSCODE"].ToString().Split(',');
             }
 
-            string goodssql = @"SELECT
-                                        GOODSCODE 
-                                        FROM TP_MST_GOODS
-										WHERE 1=1";
-
+            //string goodssql = @"SELECT  GOODSCODE   FROM TP_MST_GOODS WHERE 1=1";
+            /*
+            string goodssql = "";
+            if (goodsCodes.Length > 1 || goodsCodes[0]!="")
+            {
 
-             if (goodsCodes.Length > 1 || goodsCodes[0]!="")
+                if (context.Request["isNotcheck"].ToString() == "1")
                 {
-
-                    if (context.Request["isNotcheck"].ToString() == "1")
+                    goodssql += @" AND ( GS.GOODSCODE NOT LIKE ('%" + goodsCodes[0] + "%') ";
+                    for (int i = 1; i < goodsCodes.Length; i++)
                     {
-                        goodssql += @" AND GOODSCODE NOT LIKE ('%" + goodsCodes[0] + "%') ";
-                        for (int i = 1; i < goodsCodes.Length; i++)
+                        if (goodsCodes[i] != "")
                         {
-                            goodssql += @" AND GOODSCODE NOT LIKE ('%" + goodsCodes[i] + "%') ";
+                            goodssql += @" AND GS.GOODSCODE NOT LIKE ('%" + goodsCodes[i] + "%') ";
                         }
                     }
-                    else
+                    goodssql += @" ) ";
+                }
+                else
+                {
+                    goodssql += @" AND ( GS.GOODSCODE  LIKE ('%" + goodsCodes[0] + "%') ";
+                    for (int i = 1; i < goodsCodes.Length; i++)
                     {
-                        goodssql += @" AND GOODSCODE  LIKE ('%" + goodsCodes[0] + "%') ";
-                        for (int i = 1; i < goodsCodes.Length; i++)
+                        if (goodsCodes[i] != "")
                         {
-                            goodssql += @" OR GOODSCODE  LIKE ('%" + goodsCodes[i] + "%') ";
+                            goodssql += @" OR GS.GOODSCODE  LIKE ('%" + goodsCodes[i] + "%') ";
                         }
                     }
-
+                    goodssql += @" ) ";
                 }
+
+            }*/
             
+            string goodssql = "";
+            if (goodsCodes.Length > 1 || goodsCodes[0]!="")
+            {
+
+                if (context.Request["isNotcheck"].ToString() == "1")
+                {
+                    goodssql += @" AND ( instr( GS.GOODSCODE, '" + goodsCodes[0] + "') = 0 ";
+                    for (int i = 1; i < goodsCodes.Length; i++)
+                    {
+                        if (goodsCodes[i] != "")
+                        {
+                            goodssql += @" AND instr( GS.GOODSCODE, '" + goodsCodes[i] + "') =0";
+                        }
+                    }
+                    goodssql += @" ) ";
+                }
+                else
+                {
+                    goodssql += @" AND ( instr( GS.GOODSCODE, '" + goodsCodes[0] + "') > 0";
+                    for (int i = 1; i < goodsCodes.Length; i++)
+                    {
+                        if (goodsCodes[i] != "")
+                        {
+                            goodssql += @" OR instr( GS.GOODSCODE, '" + goodsCodes[i] + "') > 0 ";
+                        }
+                    }
+                    goodssql += @" ) ";
+                }
+
+            }
+            /*
             DataTable goodsTable = conn.ExecuteDatatable(goodssql,goodsnull.ToArray());
 
 
@@ -67,35 +103,35 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                     if (i > 0) goodsStr += ",";
                     goodsStr += "'" + goodsTable.Rows[i]["GOODSCODE"].ToString() + "'";
                 }
-            }
+            }*/
             #endregion 
-			//主表
-			if (context.Request["m"].ToString() == "master")
-			{
-				//默认是本烧检验进行统计 19 R级重烧修补 36 Z级再修 要按重烧检验统计 xuwei add 2020-06-13
-				string checkProcedureId = "13";
-				string isRefire = "0";
-				if (context.Request["procedureidMaster"].ToString() == "19" ||
-				   context.Request["procedureidMaster"].ToString() == "36")
-				{
-					checkProcedureId = "35";
-					isRefire = "6";
-				}
-
-				//确定modeltype 成型工序 需要附加条件 modeltype=5 
-				string modelType = "";
-
-				if (context.Request["procedureidMaster"].ToString() == "2" ||
-					context.Request["procedureidMaster"].ToString() == "25")
-				{
-					modelType = "AND PB.MODELTYPE = 5";
-				}
-				DataTable pTable = null;
-				// 擦水
-				if (context.Request["procedureidMaster"].ToString() == "5" ||
-					context.Request["procedureidMaster"].ToString() == "29")
-				{
-					string sqlStr1 = @"
+            //主表
+            if (context.Request["m"].ToString() == "master")
+            {
+                //默认是本烧检验进行统计 19 R级重烧修补 36 Z级再修 要按重烧检验统计 xuwei add 2020-06-13
+                string checkProcedureId = "13";
+                string isRefire = "0";
+                if (context.Request["procedureidMaster"].ToString() == "19" ||
+                   context.Request["procedureidMaster"].ToString() == "36")
+                {
+                    checkProcedureId = "35";
+                    isRefire = "6";
+                }
+
+                //确定modeltype 成型工序 需要附加条件 modeltype=5 
+                string modelType = "";
+
+                if (context.Request["procedureidMaster"].ToString() == "2" ||
+                    context.Request["procedureidMaster"].ToString() == "25")
+                {
+                    modelType = "AND PB.MODELTYPE = 5";
+                }
+                DataTable pTable = null;
+                // 擦水
+                if (context.Request["procedureidMaster"].ToString() == "5" ||
+                    context.Request["procedureidMaster"].ToString() == "29")
+                {
+                    string sqlStr1 = @"
 					    SELECT
 						    DEFECTNAME 
 					    FROM
@@ -105,15 +141,15 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 					    ORDER BY
 						    displayno_imex_1
 				    ";
-					pTable = conn.ExecuteDatatable(
-						sqlStr1,
-						new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"])
-						);
-				}
-				else
-				{
-					//读取工序配置缺陷
-					string sqlStr1 = @"
+                    pTable = conn.ExecuteDatatable(
+                        sqlStr1,
+                        new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"])
+                        );
+                }
+                else
+                {
+                    //读取工序配置缺陷
+                    string sqlStr1 = @"
 					SELECT
 						DEFECTNAME 
 					FROM
@@ -123,26 +159,26 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 					ORDER BY
 						DISPLAYNO
 				";
-					pTable = conn.ExecuteDatatable(
-						sqlStr1,
-						new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"])
-						);
-				}
-
-				string colStr = "";
-				for (int i = 0; i < pTable.Rows.Count; i++)
-				{
-					//if (i > 0) colStr += ",";
-					colStr += "'" + pTable.Rows[i]["DEFECTNAME"].ToString() + "' AS " + pTable.Rows[i]["DEFECTNAME"].ToString();
-					colStr += ",";
-				}
-
-				//读取报表数据
-				string sqlStr = @"
+                    pTable = conn.ExecuteDatatable(
+                        sqlStr1,
+                        new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"])
+                        );
+                }
+
+                string colStr = "";
+                for (int i = 0; i < pTable.Rows.Count; i++)
+                {
+                    //if (i > 0) colStr += ",";
+                    colStr += "'" + pTable.Rows[i]["DEFECTNAME"].ToString() + "' AS " + pTable.Rows[i]["DEFECTNAME"].ToString();
+                    colStr += ",";
+                }
+
+                //读取报表数据
+                string sqlStr = @"
 					SELECT
 						PC.工号,
 						PC.姓名,
-						NVL(PC.产品型号,PD.产品型号) AS 产品型号,
+						NVL(PC.产品型号,PD.产品型号1) AS 产品型号,
 						PC.出窑数,
 						PC.出窑数 - NVL( PD.合计, 0 ) AS 合格数,
 						--ROUND( (PC.出窑数 - NVL( PD.合计, 0 )) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ), 4 ) * 100  AS 合格率,
@@ -156,9 +192,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 							(
 								SELECT
 								--GID,
-								DECODE( GID, 6, USERCODE || '合计', 7, USERCODE || '合计', USERCODE ) AS 工号,
-								USERNAME AS 姓名,
-								GOODSMODEL AS 产品型号,
+								DECODE( GID, 6, USERCODE || '合计', 7, USERCODE || '合计', USERCODE ) AS 工号1,
+								USERNAME AS 姓名1,
+								GOODSMODEL AS 产品型号1,
 								DECODE( GID, 1, '合计', 3, '合计', 7, '合计', DEFECT ) AS DEFECT,
 								CNUM 
 							FROM
@@ -170,15 +206,15 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 									GS.GOODSMODEL,
 									D.DEFECTID,
 									M.DEFECTNAME AS DEFECT,";
-				if (context.Request["procedureidMaster"].ToString() == "19")
-				{
-					sqlStr += @"COUNT( DISTINCT P.PRODUCTIONDATAID  ) AS CNUM ";
-				}
-				else
-				{
-					sqlStr += @"COUNT( * ) AS CNUM ";
-				}
-				sqlStr += @"FROM
+                if (context.Request["procedureidMaster"].ToString() == "19")
+                {
+                    sqlStr += @"COUNT( DISTINCT P.PRODUCTIONDATAID  ) AS CNUM ";
+                }
+                else
+                {
+                    sqlStr += @"COUNT( * ) AS CNUM ";
+                }
+                sqlStr += @"FROM
 									TP_PM_PRODUCTIONDATA P
 									INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
 									INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
@@ -198,8 +234,8 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 									AND P.CHECKTIME <= @DATEEND@
 									AND P.ISREFIRE = @ISREFIRE@ 
 									AND (L.BUILDINGNO = @BUILDINGNO@ OR @BUILDINGNO@ IS NULL)
-									AND (D.DEFECTPROCEDUREID = @PROCEDUREID@ OR @PROCEDUREID@ IS NULL)
-									AND GS.GOODSCODE IN({goodsCodes})
+									AND (D.DEFECTPROCEDUREID = @PROCEDUREID@ OR @PROCEDUREID@ IS NULL) " +
+                                    goodssql + @"
 									AND (U.USERCODE = @USERCODE@ OR @USERCODE@ IS NULL)
 								GROUP BY
 									GROUPING SETS (
@@ -218,7 +254,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 								SUM( CNUM ) FOR DEFECT IN ( {COLSTR} '合计' AS 合计 ) 
 							) 
 						ORDER BY
-							工号, 产品型号
+							工号1, 产品型号1
 						) PD
 						RIGHT JOIN (
 						SELECT
@@ -234,15 +270,15 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 								U.USERCODE AS 工号,
 								U.USERNAME AS 姓名,
 								GS.GOODSMODEL AS 产品型号,";
-				if (context.Request["procedureidMaster"].ToString() == "19")
-				{
-					sqlStr += @"COUNT( DISTINCT P.PRODUCTIONDATAID  ) AS 出窑数 ";
-				}
-				else
-				{
-					sqlStr += @"COUNT( * ) AS 出窑数 ";
-				}
-				sqlStr += @"FROM
+                if (context.Request["procedureidMaster"].ToString() == "19")
+                {
+                    sqlStr += @"COUNT( DISTINCT P.PRODUCTIONDATAID  ) AS 出窑数 ";
+                }
+                else
+                {
+                    sqlStr += @"COUNT( * ) AS 出窑数 ";
+                }
+                sqlStr += @"FROM
 								TP_PM_PRODUCTIONDATA P
 								INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
 								INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
@@ -261,179 +297,179 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 								AND (L.BUILDINGNO = @BUILDINGNO@ OR @BUILDINGNO@ IS NULL)
 								AND ( @PROCEDUREID@ IS NULL OR PB.PROCEDUREID = @PROCEDUREID@ )
 								--AND P.ISREFIRE = '0'
-								AND PB.VALUEFLAG='1'
-								AND GS.GOODSCODE IN({goodsCodes})
+								AND PB.VALUEFLAG='1' " +
+                                    goodssql + @"
 								AND (U.USERCODE = @USERCODE@ OR @USERCODE@ IS NULL)
 							GROUP BY
 								GROUPING SETS ( ( U.USERCODE, U.USERNAME, GS.GOODSMODEL ), ( U.USERCODE, U.USERNAME ),() )
 							) T
 						ORDER BY
 							工号, 产品型号
-						) PC ON ((PC.GID = 3 OR PC.GID = 1) AND PD.工号 = PC.工号 AND PD.产品型号 IS NULL ) OR ( PD.工号 = PC.工号 AND PD.产品型号 = PC.产品型号 )"
-						 ;
-				sqlStr = sqlStr.Replace("{COLSTR}", colStr).Replace("{MODELTYPE}", modelType).Replace("{goodsCodes}", goodsStr);
-
-				//获取查询条件
-				List<CDAParameter> sqlPara = new List<CDAParameter>();
-				//sqlPara.Add(new CDAParameter("ACCOUNTID", context.Session["accountId"].ToString()));
-
-				sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(context.Request["datebeginMaster"]), DataType.DateTime));
-				sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(context.Request["dateendMaster"]), DataType.DateTime));
-				sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
-				sqlPara.Add(new CDAParameter("BUILDINGNO", context.Request["buildingnoMaster"]));
-				sqlPara.Add(new CDAParameter("USERCODE", context.Request["usercodeMaster"]));
-				sqlPara.Add(new CDAParameter("CHECKPROCEDUREID", checkProcedureId));
-				sqlPara.Add(new CDAParameter("ISREFIRE", isRefire));
-
-				//if(context.Request["USERID"] is object)
-				//{
-				//    sqlStr += " AND m.USERID = @USERID@ ";
-				//    sqlPara.Add(new CDAParameter("USERID", context.Request["USERID"].ToString()));
-				//}
-
-				//获取分页参数
-				//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"] : "";
-				//string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
-
-				//获取分页数据    
-				//int total = 0;
-				//DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
-				//string jsonStr = new JsonResult(dt) { total = total }.ToJson();
-
-				//直接获取不分页数据
-				DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
-
-				dt.Columns.Remove("工号1");
-				dt.Columns.Remove("姓名1");
-				dt.Columns.Remove("产品型号1");
-
-				//一期循环线33 二期循环线16 特殊处理
-				if (context.Request["procedureidMaster"].ToString() == "33" || context.Request["procedureidMaster"].ToString() == "16")
-				{
-					//拆分合格数
-					dt.Columns["合格数"].ColumnName = "合格数_合计";
-					dt.Columns.Add(new DataColumn("合格数_擦水", typeof(Int32)));
-					dt.Columns["合格数_擦水"].SetOrdinal(4);
-					dt.Columns.Add(new DataColumn("合格数_喷釉", typeof(Int32)));
-					dt.Columns["合格数_喷釉"].SetOrdinal(5);
-
-					//拆分缺陷率
-					dt.Columns["缺陷率"].ColumnName = "缺陷率_合计";
-					dt.Columns.Add(new DataColumn("缺陷率_擦水", typeof(string)));
-					dt.Columns["缺陷率_擦水"].SetOrdinal(7);
-					dt.Columns.Add(new DataColumn("缺陷率_喷釉", typeof(string)));
-					dt.Columns["缺陷率_喷釉"].SetOrdinal(8);
-
-					//合并 擦水
-					dt.Columns["棕眼"].ColumnName = "擦水_棕眼";
-					dt.Columns["糙活"].ColumnName = "擦水_糙活";
-					dt.Columns["成脏"].ColumnName = "擦水_成脏";
-
-					//插入 擦水与喷釉重复列
-					dt.Columns.Add(new DataColumn("擦水_爆釉", typeof(Int32)));
-					dt.Columns["擦水_爆釉"].SetOrdinal(13);
-					dt.Columns.Add(new DataColumn("擦水_脱釉", typeof(Int32)));
-					dt.Columns["擦水_脱釉"].SetOrdinal(14);
-					dt.Columns.Add(new DataColumn("擦水_釉磕", typeof(Int32)));
-					dt.Columns["擦水_釉磕"].SetOrdinal(15);
-					dt.Columns.Add(new DataColumn("擦水_釉脏", typeof(Int32)));
-					dt.Columns["擦水_釉脏"].SetOrdinal(16);
-
-					dt.Columns.Add(new DataColumn("擦水_合计", typeof(Int32)));
-					dt.Columns["擦水_合计"].SetOrdinal(17);
-
-					//合并 喷釉
-					dt.Columns["爆釉"].ColumnName = "喷釉_爆釉";
-					dt.Columns["脱釉"].ColumnName = "喷釉_脱釉";
-					dt.Columns["釉磕"].ColumnName = "喷釉_釉磕";
-					dt.Columns["釉粘"].ColumnName = "喷釉_釉粘";
-					dt.Columns["釉薄"].ColumnName = "喷釉_釉薄";
-					dt.Columns["波纹"].ColumnName = "喷釉_波纹";
-					dt.Columns["釉脏"].ColumnName = "喷釉_釉脏";
-					dt.Columns["标不良"].ColumnName = "喷釉_标不良";
-					dt.Columns["釉绺"].ColumnName = "喷釉_釉绺";
-					dt.Columns["釉泡"].ColumnName = "喷釉_釉泡";
-					dt.Columns["氯化镁"].ColumnName = "喷釉_氯化镁";
-					dt.Columns["灌釉不良"].ColumnName = "喷釉_灌釉不良";
-					dt.Columns.Add(new DataColumn("喷釉_合计", typeof(Int32)));
-					dt.Columns["喷釉_合计"].SetOrdinal(30);
-
-					//重新计算合计
-					for (int i = 0; i < dt.Rows.Count; i++)
-					{
-						//擦水重复列赋值
-						dt.Rows[i]["擦水_爆釉"] = dt.Rows[i]["喷釉_爆釉"];
-						dt.Rows[i]["擦水_脱釉"] = dt.Rows[i]["喷釉_脱釉"];
-						dt.Rows[i]["擦水_釉磕"] = dt.Rows[i]["喷釉_釉磕"];
-						dt.Rows[i]["擦水_釉脏"] = dt.Rows[i]["喷釉_釉脏"];
-
-
-						dt.Rows[i]["擦水_合计"] =
-								toNumber(dt.Rows[i]["擦水_棕眼"])
-								+ toNumber(dt.Rows[i]["擦水_糙活"])
-								+ toNumber(dt.Rows[i]["擦水_成脏"])
-								+ toNumber(dt.Rows[i]["擦水_爆釉"])
-								+ toNumber(dt.Rows[i]["擦水_脱釉"])
-								+ toNumber(dt.Rows[i]["擦水_釉磕"])
-								+ toNumber(dt.Rows[i]["擦水_釉脏"]);
-
-						dt.Rows[i]["喷釉_合计"] =
-								toNumber(dt.Rows[i]["喷釉_爆釉"])
-								+ toNumber(dt.Rows[i]["喷釉_脱釉"])
-								+ toNumber(dt.Rows[i]["喷釉_釉磕"])
-								+ toNumber(dt.Rows[i]["喷釉_釉粘"])
-								+ toNumber(dt.Rows[i]["喷釉_釉薄"])
-								+ toNumber(dt.Rows[i]["喷釉_波纹"])
-								+ toNumber(dt.Rows[i]["喷釉_釉脏"])
-								+ toNumber(dt.Rows[i]["喷釉_标不良"])
-								+ toNumber(dt.Rows[i]["喷釉_釉绺"])
-								+ toNumber(dt.Rows[i]["喷釉_釉泡"])
-								+ toNumber(dt.Rows[i]["喷釉_氯化镁"])
-								+ toNumber(dt.Rows[i]["喷釉_灌釉不良"]);
-						dt.Rows[i]["合格数_擦水"] = toNumber(dt.Rows[i]["出窑数"]) - toNumber(dt.Rows[i]["擦水_合计"]);
-						dt.Rows[i]["合格数_喷釉"] = toNumber(dt.Rows[i]["出窑数"]) - toNumber(dt.Rows[i]["喷釉_合计"]);
-						dt.Rows[i]["缺陷率_擦水"] = Convert.ToString(Math.Round(100 - (toNumber(dt.Rows[i]["合格数_擦水"]) / toNumber(dt.Rows[i]["出窑数"])) * 100, 2)) + "%";
-						dt.Rows[i]["缺陷率_喷釉"] = Convert.ToString(Math.Round(100 - (toNumber(dt.Rows[i]["合格数_喷釉"]) / toNumber(dt.Rows[i]["出窑数"])) * 100, 2)) + "%";
-					}
-				}
-
-				string jsonStr = new JsonResult(dt) { total = dt.Rows.Count }.ToJson();
-
-
-				context.Response.Write(jsonStr);
-			}
-
-			//子表
-			if (context.Request["m"].ToString() == "detail")
-			{
-				//读取报表数据
-				string sqlStr = @"
+						) PC ON ((PC.GID = 3 OR PC.GID = 1) AND PD.工号1 = PC.工号 AND PD.产品型号1 IS NULL ) OR ( PD.工号1 = PC.工号 AND PD.产品型号1 = PC.产品型号 )"
+                         ;
+                sqlStr = sqlStr.Replace("{COLSTR}", colStr).Replace("{MODELTYPE}", modelType);//.Replace("{goodsCodes}", goodssql);
+
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                //sqlPara.Add(new CDAParameter("ACCOUNTID", context.Session["accountId"].ToString()));
+
+                sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(context.Request["datebeginMaster"]), DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(context.Request["dateendMaster"]), DataType.DateTime));
+                sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
+                sqlPara.Add(new CDAParameter("BUILDINGNO", context.Request["buildingnoMaster"]));
+                sqlPara.Add(new CDAParameter("USERCODE", context.Request["usercodeMaster"]));
+                sqlPara.Add(new CDAParameter("CHECKPROCEDUREID", checkProcedureId));
+                sqlPara.Add(new CDAParameter("ISREFIRE", isRefire));
+
+                //if(context.Request["USERID"] is object)
+                //{
+                //    sqlStr += " AND m.USERID = @USERID@ ";
+                //    sqlPara.Add(new CDAParameter("USERID", context.Request["USERID"].ToString()));
+                //}
+
+                //获取分页参数
+                //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"] : "";
+                //string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
+
+                //获取分页数据    
+                //int total = 0;
+                //DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                //string jsonStr = new JsonResult(dt) { total = total }.ToJson();
+
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
+
+                dt.Columns.Remove("工号1");
+                dt.Columns.Remove("姓名1");
+                dt.Columns.Remove("产品型号1");
+
+                //一期循环线33 二期循环线16 特殊处理
+                if (context.Request["procedureidMaster"].ToString() == "33" || context.Request["procedureidMaster"].ToString() == "16")
+                {
+                    //拆分合格数
+                    dt.Columns["合格数"].ColumnName = "合格数_合计";
+                    dt.Columns.Add(new DataColumn("合格数_擦水", typeof(Int32)));
+                    dt.Columns["合格数_擦水"].SetOrdinal(4);
+                    dt.Columns.Add(new DataColumn("合格数_喷釉", typeof(Int32)));
+                    dt.Columns["合格数_喷釉"].SetOrdinal(5);
+
+                    //拆分缺陷率
+                    dt.Columns["缺陷率"].ColumnName = "缺陷率_合计";
+                    dt.Columns.Add(new DataColumn("缺陷率_擦水", typeof(string)));
+                    dt.Columns["缺陷率_擦水"].SetOrdinal(7);
+                    dt.Columns.Add(new DataColumn("缺陷率_喷釉", typeof(string)));
+                    dt.Columns["缺陷率_喷釉"].SetOrdinal(8);
+
+                    //合并 擦水
+                    dt.Columns["棕眼"].ColumnName = "擦水_棕眼";
+                    dt.Columns["糙活"].ColumnName = "擦水_糙活";
+                    dt.Columns["成脏"].ColumnName = "擦水_成脏";
+
+                    //插入 擦水与喷釉重复列
+                    dt.Columns.Add(new DataColumn("擦水_爆釉", typeof(Int32)));
+                    dt.Columns["擦水_爆釉"].SetOrdinal(13);
+                    dt.Columns.Add(new DataColumn("擦水_脱釉", typeof(Int32)));
+                    dt.Columns["擦水_脱釉"].SetOrdinal(14);
+                    dt.Columns.Add(new DataColumn("擦水_釉磕", typeof(Int32)));
+                    dt.Columns["擦水_釉磕"].SetOrdinal(15);
+                    dt.Columns.Add(new DataColumn("擦水_釉脏", typeof(Int32)));
+                    dt.Columns["擦水_釉脏"].SetOrdinal(16);
+
+                    dt.Columns.Add(new DataColumn("擦水_合计", typeof(Int32)));
+                    dt.Columns["擦水_合计"].SetOrdinal(17);
+
+                    //合并 喷釉
+                    dt.Columns["爆釉"].ColumnName = "喷釉_爆釉";
+                    dt.Columns["脱釉"].ColumnName = "喷釉_脱釉";
+                    dt.Columns["釉磕"].ColumnName = "喷釉_釉磕";
+                    dt.Columns["釉粘"].ColumnName = "喷釉_釉粘";
+                    dt.Columns["釉薄"].ColumnName = "喷釉_釉薄";
+                    dt.Columns["波纹"].ColumnName = "喷釉_波纹";
+                    dt.Columns["釉脏"].ColumnName = "喷釉_釉脏";
+                    dt.Columns["标不良"].ColumnName = "喷釉_标不良";
+                    dt.Columns["釉绺"].ColumnName = "喷釉_釉绺";
+                    dt.Columns["釉泡"].ColumnName = "喷釉_釉泡";
+                    dt.Columns["氯化镁"].ColumnName = "喷釉_氯化镁";
+                    dt.Columns["灌釉不良"].ColumnName = "喷釉_灌釉不良";
+                    dt.Columns.Add(new DataColumn("喷釉_合计", typeof(Int32)));
+                    dt.Columns["喷釉_合计"].SetOrdinal(30);
+
+                    //重新计算合计
+                    for (int i = 0; i < dt.Rows.Count; i++)
+                    {
+                        //擦水重复列赋值
+                        dt.Rows[i]["擦水_爆釉"] = dt.Rows[i]["喷釉_爆釉"];
+                        dt.Rows[i]["擦水_脱釉"] = dt.Rows[i]["喷釉_脱釉"];
+                        dt.Rows[i]["擦水_釉磕"] = dt.Rows[i]["喷釉_釉磕"];
+                        dt.Rows[i]["擦水_釉脏"] = dt.Rows[i]["喷釉_釉脏"];
+
+
+                        dt.Rows[i]["擦水_合计"] =
+                                toNumber(dt.Rows[i]["擦水_棕眼"])
+                                + toNumber(dt.Rows[i]["擦水_糙活"])
+                                + toNumber(dt.Rows[i]["擦水_成脏"])
+                                + toNumber(dt.Rows[i]["擦水_爆釉"])
+                                + toNumber(dt.Rows[i]["擦水_脱釉"])
+                                + toNumber(dt.Rows[i]["擦水_釉磕"])
+                                + toNumber(dt.Rows[i]["擦水_釉脏"]);
+
+                        dt.Rows[i]["喷釉_合计"] =
+                                toNumber(dt.Rows[i]["喷釉_爆釉"])
+                                + toNumber(dt.Rows[i]["喷釉_脱釉"])
+                                + toNumber(dt.Rows[i]["喷釉_釉磕"])
+                                + toNumber(dt.Rows[i]["喷釉_釉粘"])
+                                + toNumber(dt.Rows[i]["喷釉_釉薄"])
+                                + toNumber(dt.Rows[i]["喷釉_波纹"])
+                                + toNumber(dt.Rows[i]["喷釉_釉脏"])
+                                + toNumber(dt.Rows[i]["喷釉_标不良"])
+                                + toNumber(dt.Rows[i]["喷釉_釉绺"])
+                                + toNumber(dt.Rows[i]["喷釉_釉泡"])
+                                + toNumber(dt.Rows[i]["喷釉_氯化镁"])
+                                + toNumber(dt.Rows[i]["喷釉_灌釉不良"]);
+                        dt.Rows[i]["合格数_擦水"] = toNumber(dt.Rows[i]["出窑数"]) - toNumber(dt.Rows[i]["擦水_合计"]);
+                        dt.Rows[i]["合格数_喷釉"] = toNumber(dt.Rows[i]["出窑数"]) - toNumber(dt.Rows[i]["喷釉_合计"]);
+                        dt.Rows[i]["缺陷率_擦水"] = Convert.ToString(Math.Round(100 - (toNumber(dt.Rows[i]["合格数_擦水"]) / toNumber(dt.Rows[i]["出窑数"])) * 100, 2)) + "%";
+                        dt.Rows[i]["缺陷率_喷釉"] = Convert.ToString(Math.Round(100 - (toNumber(dt.Rows[i]["合格数_喷釉"]) / toNumber(dt.Rows[i]["出窑数"])) * 100, 2)) + "%";
+                    }
+                }
+
+                string jsonStr = new JsonResult(dt) { total = dt.Rows.Count }.ToJson();
+
+
+                context.Response.Write(jsonStr);
+            }
+
+            //子表
+            if (context.Request["m"].ToString() == "detail")
+            {
+                //读取报表数据
+                string sqlStr = @"
 
                 ";
 
-				//获取查询条件
-				List<CDAParameter> sqlPara = new List<CDAParameter>();
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
 
-				//获取分页参数
-				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 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;
-				DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
-				string jsonStr = new JsonResult(dt) { total = total }.ToJson();
+                //获取分页数据    
+                int total = 0;
+                DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                string jsonStr = new JsonResult(dt) { total = total }.ToJson();
 
-				context.Response.Write(jsonStr);
-			}
+                context.Response.Write(jsonStr);
+            }
 
-			if (context.Request["m"].ToString() == "jiezhauang")
-			{
-				//读取报表数据
-				string sqlStr = @"
+            if (context.Request["m"].ToString() == "jiezhauang")
+            {
+                //读取报表数据
+                string sqlStr = @"
                                 SELECT
 	                            DECODE(USERNAME_FRONT, NULL, '合计',USERCODE_FRONT)  AS 工号,
 	                            USERNAME_FRONT AS 姓名,
@@ -527,26 +563,26 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 	                            grouping sets ( ( USERCODE_FRONT, USERNAME_FRONT, GOODSCODE_FRONT, GOODSCODE_BEHIND ), ( USERCODE_FRONT, USERNAME_FRONT ),() )
                 ";
 
-				//获取查询条件
-				List<CDAParameter> sqlPara = new List<CDAParameter>();
-				sqlPara.Add(new CDAParameter("BEGINMONTH", Convert.ToInt32(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", Convert.ToInt32(context.Request["dateendMaster"].Substring(0, context.Request["dateendMaster"].IndexOf("-")) + context.Request["dateendMaster"].Substring(context.Request["dateendMaster"].IndexOf("-") + 1).PadLeft(2, '0'))));
-				sqlPara.Add(new CDAParameter("PROCEDUREID", Convert.ToInt32(context.Request["procedureidMaster"])));
-				sqlPara.Add(new CDAParameter("BUILDINGNO", context.Request["buildingnoMaster"]));
-				sqlPara.Add(new CDAParameter("GOODSMODEL", context.Request["goodsmodelMaster"]));
-				sqlPara.Add(new CDAParameter("USERCODE", context.Request["usercodeMaster"]));
-				//获取分页参数
-				//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;
-				DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
-
-				#region  根据工序查询列结构
-				sqlStr = @"SELECT DISTINCT
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                sqlPara.Add(new CDAParameter("BEGINMONTH", Convert.ToInt32(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", Convert.ToInt32(context.Request["dateendMaster"].Substring(0, context.Request["dateendMaster"].IndexOf("-")) + context.Request["dateendMaster"].Substring(context.Request["dateendMaster"].IndexOf("-") + 1).PadLeft(2, '0'))));
+                sqlPara.Add(new CDAParameter("PROCEDUREID", Convert.ToInt32(context.Request["procedureidMaster"])));
+                sqlPara.Add(new CDAParameter("BUILDINGNO", context.Request["buildingnoMaster"]));
+                sqlPara.Add(new CDAParameter("GOODSMODEL", context.Request["goodsmodelMaster"]));
+                sqlPara.Add(new CDAParameter("USERCODE", context.Request["usercodeMaster"]));
+                //获取分页参数
+                //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;
+                DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
+
+                #region  根据工序查询列结构
+                sqlStr = @"SELECT DISTINCT
 	                            b.DEFECTNAME 
                             FROM
 	                            TP_PC_DEFECTPROCEDUREJOBS a
@@ -554,143 +590,143 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                             WHERE
 	                            a.PROCEDUREID = @PROCEDUREID@ 
 	                            AND b.VALUEFLAG = 1";
-				DataTable dt1 = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
-				#endregion
-
-				DataTable dt3 = new DataTable();
-				dt3.Columns.Add("工号");
-				dt3.Columns.Add("姓名");
-				dt3.Columns.Add("产品型号");
-				dt3.Columns.Add("出窑数");
-				dt3.Columns.Add("合格数");
-				dt3.Columns.Add("缺陷率");
-				dt3.Columns.Add("合计");
-				for (int i = 0; i < dt1.Rows.Count; i++)
-				{
-					dt3.Columns.Add(dt1.Rows[i]["DEFECTNAME"].ToString());
-				}
-				DataTable dtcopy = dt.Clone();
-				for (int i = 0; i < dtcopy.Columns.Count; i++)
-				{
-					if (!dt3.Columns.Contains(dtcopy.Columns[i].ColumnName))
-					{
-						dt.Columns.Remove(dtcopy.Columns[i].ToString());
-					}
-				}
-
-
-				if (context.Request["procedureidMaster"].ToString() == "33" || context.Request["procedureidMaster"].ToString() == "16")
-				{
-					//拆分合格数
-					dt.Columns["合格数"].ColumnName = "合格数_合计";
-					dt.Columns.Add(new DataColumn("合格数_擦水", typeof(Int32)));
-					dt.Columns["合格数_擦水"].SetOrdinal(4);
-					dt.Columns.Add(new DataColumn("合格数_喷釉", typeof(Int32)));
-					dt.Columns["合格数_喷釉"].SetOrdinal(5);
-
-					//拆分缺陷率
-					dt.Columns["缺陷率"].ColumnName = "缺陷率_合计";
-					dt.Columns.Add(new DataColumn("缺陷率_擦水", typeof(string)));
-					dt.Columns["缺陷率_擦水"].SetOrdinal(7);
-					dt.Columns.Add(new DataColumn("缺陷率_喷釉", typeof(string)));
-					dt.Columns["缺陷率_喷釉"].SetOrdinal(8);
-
-					//合并 擦水
-					dt.Columns["棕眼"].ColumnName = "擦水_棕眼";
-					dt.Columns["糙活"].ColumnName = "擦水_糙活";
-					dt.Columns["成脏"].ColumnName = "擦水_成脏";
-
-					//插入 擦水与喷釉重复列
-					dt.Columns.Add(new DataColumn("擦水_爆釉", typeof(Int32)));
-					dt.Columns["擦水_爆釉"].SetOrdinal(13);
-					dt.Columns.Add(new DataColumn("擦水_脱釉", typeof(Int32)));
-					dt.Columns["擦水_脱釉"].SetOrdinal(14);
-					dt.Columns.Add(new DataColumn("擦水_釉磕", typeof(Int32)));
-					dt.Columns["擦水_釉磕"].SetOrdinal(15);
-					dt.Columns.Add(new DataColumn("擦水_釉脏", typeof(Int32)));
-					dt.Columns["擦水_釉脏"].SetOrdinal(16);
-
-					dt.Columns.Add(new DataColumn("擦水_合计", typeof(Int32)));
-					dt.Columns["擦水_合计"].SetOrdinal(17);
-
-					//合并 喷釉
-					dt.Columns["爆釉"].ColumnName = "喷釉_爆釉";
-					dt.Columns["脱釉"].ColumnName = "喷釉_脱釉";
-					dt.Columns["釉磕"].ColumnName = "喷釉_釉磕";
-					dt.Columns["釉粘"].ColumnName = "喷釉_釉粘";
-					dt.Columns["釉薄"].ColumnName = "喷釉_釉薄";
-					dt.Columns["波纹"].ColumnName = "喷釉_波纹";
-					dt.Columns["釉脏"].ColumnName = "喷釉_釉脏";
-					dt.Columns["标不良"].ColumnName = "喷釉_标不良";
-					dt.Columns["釉绺"].ColumnName = "喷釉_釉绺";
-					dt.Columns["釉泡"].ColumnName = "喷釉_釉泡";
-					dt.Columns["氯化镁"].ColumnName = "喷釉_氯化镁";
-					dt.Columns["灌釉不良"].ColumnName = "喷釉_灌釉不良";
-					dt.Columns.Add(new DataColumn("喷釉_合计", typeof(Int32)));
-					dt.Columns["喷釉_合计"].SetOrdinal(30);
-
-					//重新计算合计
-					for (int i = 0; i < dt.Rows.Count; i++)
-					{
-						//擦水重复列赋值
-						dt.Rows[i]["擦水_爆釉"] = dt.Rows[i]["喷釉_爆釉"];
-						dt.Rows[i]["擦水_脱釉"] = dt.Rows[i]["喷釉_脱釉"];
-						dt.Rows[i]["擦水_釉磕"] = dt.Rows[i]["喷釉_釉磕"];
-						dt.Rows[i]["擦水_釉脏"] = dt.Rows[i]["喷釉_釉脏"];
-
-
-						dt.Rows[i]["擦水_合计"] =
-								toNumber(dt.Rows[i]["擦水_棕眼"])
-								+ toNumber(dt.Rows[i]["擦水_糙活"])
-								+ toNumber(dt.Rows[i]["擦水_成脏"])
-								+ toNumber(dt.Rows[i]["擦水_爆釉"])
-								+ toNumber(dt.Rows[i]["擦水_脱釉"])
-								+ toNumber(dt.Rows[i]["擦水_釉磕"])
-								+ toNumber(dt.Rows[i]["擦水_釉脏"]);
-
-						dt.Rows[i]["喷釉_合计"] =
-								toNumber(dt.Rows[i]["喷釉_爆釉"])
-								+ toNumber(dt.Rows[i]["喷釉_脱釉"])
-								+ toNumber(dt.Rows[i]["喷釉_釉磕"])
-								+ toNumber(dt.Rows[i]["喷釉_釉粘"])
-								+ toNumber(dt.Rows[i]["喷釉_釉薄"])
-								+ toNumber(dt.Rows[i]["喷釉_波纹"])
-								+ toNumber(dt.Rows[i]["喷釉_釉脏"])
-								+ toNumber(dt.Rows[i]["喷釉_标不良"])
-								+ toNumber(dt.Rows[i]["喷釉_釉绺"])
-								+ toNumber(dt.Rows[i]["喷釉_釉泡"])
-								+ toNumber(dt.Rows[i]["喷釉_氯化镁"])
-								+ toNumber(dt.Rows[i]["喷釉_灌釉不良"]);
-						dt.Rows[i]["合格数_擦水"] = toNumber(dt.Rows[i]["出窑数"]) - toNumber(dt.Rows[i]["擦水_合计"]);
-						dt.Rows[i]["合格数_喷釉"] = toNumber(dt.Rows[i]["出窑数"]) - toNumber(dt.Rows[i]["喷釉_合计"]);
-						dt.Rows[i]["缺陷率_擦水"] = Convert.ToString(Math.Round(100 - (toNumber(dt.Rows[i]["合格数_擦水"]) / toNumber(dt.Rows[i]["出窑数"])) * 100, 2)) + "%";
-						dt.Rows[i]["缺陷率_喷釉"] = Convert.ToString(Math.Round(100 - (toNumber(dt.Rows[i]["合格数_喷釉"]) / toNumber(dt.Rows[i]["出窑数"])) * 100, 2)) + "%";
-					}
-				}
-				string jsonStr = new JsonResult(dt) { total = dt.Rows.Count }.ToJson();
-
-				context.Response.Write(jsonStr);
-			}
-
-
-		}
-
-	}
-
-	public decimal toNumber(object o)
-	{
-		if (o != DBNull.Value)
-			return Convert.ToDecimal(o);
-		else
-			return 0;
-	}
-
-	public bool IsReusable
-	{
-		get
-		{
-			return false;
-		}
-	}
+                DataTable dt1 = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
+                #endregion
+
+                DataTable dt3 = new DataTable();
+                dt3.Columns.Add("工号");
+                dt3.Columns.Add("姓名");
+                dt3.Columns.Add("产品型号");
+                dt3.Columns.Add("出窑数");
+                dt3.Columns.Add("合格数");
+                dt3.Columns.Add("缺陷率");
+                dt3.Columns.Add("合计");
+                for (int i = 0; i < dt1.Rows.Count; i++)
+                {
+                    dt3.Columns.Add(dt1.Rows[i]["DEFECTNAME"].ToString());
+                }
+                DataTable dtcopy = dt.Clone();
+                for (int i = 0; i < dtcopy.Columns.Count; i++)
+                {
+                    if (!dt3.Columns.Contains(dtcopy.Columns[i].ColumnName))
+                    {
+                        dt.Columns.Remove(dtcopy.Columns[i].ToString());
+                    }
+                }
+
+
+                if (context.Request["procedureidMaster"].ToString() == "33" || context.Request["procedureidMaster"].ToString() == "16")
+                {
+                    //拆分合格数
+                    dt.Columns["合格数"].ColumnName = "合格数_合计";
+                    dt.Columns.Add(new DataColumn("合格数_擦水", typeof(Int32)));
+                    dt.Columns["合格数_擦水"].SetOrdinal(4);
+                    dt.Columns.Add(new DataColumn("合格数_喷釉", typeof(Int32)));
+                    dt.Columns["合格数_喷釉"].SetOrdinal(5);
+
+                    //拆分缺陷率
+                    dt.Columns["缺陷率"].ColumnName = "缺陷率_合计";
+                    dt.Columns.Add(new DataColumn("缺陷率_擦水", typeof(string)));
+                    dt.Columns["缺陷率_擦水"].SetOrdinal(7);
+                    dt.Columns.Add(new DataColumn("缺陷率_喷釉", typeof(string)));
+                    dt.Columns["缺陷率_喷釉"].SetOrdinal(8);
+
+                    //合并 擦水
+                    dt.Columns["棕眼"].ColumnName = "擦水_棕眼";
+                    dt.Columns["糙活"].ColumnName = "擦水_糙活";
+                    dt.Columns["成脏"].ColumnName = "擦水_成脏";
+
+                    //插入 擦水与喷釉重复列
+                    dt.Columns.Add(new DataColumn("擦水_爆釉", typeof(Int32)));
+                    dt.Columns["擦水_爆釉"].SetOrdinal(13);
+                    dt.Columns.Add(new DataColumn("擦水_脱釉", typeof(Int32)));
+                    dt.Columns["擦水_脱釉"].SetOrdinal(14);
+                    dt.Columns.Add(new DataColumn("擦水_釉磕", typeof(Int32)));
+                    dt.Columns["擦水_釉磕"].SetOrdinal(15);
+                    dt.Columns.Add(new DataColumn("擦水_釉脏", typeof(Int32)));
+                    dt.Columns["擦水_釉脏"].SetOrdinal(16);
+
+                    dt.Columns.Add(new DataColumn("擦水_合计", typeof(Int32)));
+                    dt.Columns["擦水_合计"].SetOrdinal(17);
+
+                    //合并 喷釉
+                    dt.Columns["爆釉"].ColumnName = "喷釉_爆釉";
+                    dt.Columns["脱釉"].ColumnName = "喷釉_脱釉";
+                    dt.Columns["釉磕"].ColumnName = "喷釉_釉磕";
+                    dt.Columns["釉粘"].ColumnName = "喷釉_釉粘";
+                    dt.Columns["釉薄"].ColumnName = "喷釉_釉薄";
+                    dt.Columns["波纹"].ColumnName = "喷釉_波纹";
+                    dt.Columns["釉脏"].ColumnName = "喷釉_釉脏";
+                    dt.Columns["标不良"].ColumnName = "喷釉_标不良";
+                    dt.Columns["釉绺"].ColumnName = "喷釉_釉绺";
+                    dt.Columns["釉泡"].ColumnName = "喷釉_釉泡";
+                    dt.Columns["氯化镁"].ColumnName = "喷釉_氯化镁";
+                    dt.Columns["灌釉不良"].ColumnName = "喷釉_灌釉不良";
+                    dt.Columns.Add(new DataColumn("喷釉_合计", typeof(Int32)));
+                    dt.Columns["喷釉_合计"].SetOrdinal(30);
+
+                    //重新计算合计
+                    for (int i = 0; i < dt.Rows.Count; i++)
+                    {
+                        //擦水重复列赋值
+                        dt.Rows[i]["擦水_爆釉"] = dt.Rows[i]["喷釉_爆釉"];
+                        dt.Rows[i]["擦水_脱釉"] = dt.Rows[i]["喷釉_脱釉"];
+                        dt.Rows[i]["擦水_釉磕"] = dt.Rows[i]["喷釉_釉磕"];
+                        dt.Rows[i]["擦水_釉脏"] = dt.Rows[i]["喷釉_釉脏"];
+
+
+                        dt.Rows[i]["擦水_合计"] =
+                                toNumber(dt.Rows[i]["擦水_棕眼"])
+                                + toNumber(dt.Rows[i]["擦水_糙活"])
+                                + toNumber(dt.Rows[i]["擦水_成脏"])
+                                + toNumber(dt.Rows[i]["擦水_爆釉"])
+                                + toNumber(dt.Rows[i]["擦水_脱釉"])
+                                + toNumber(dt.Rows[i]["擦水_釉磕"])
+                                + toNumber(dt.Rows[i]["擦水_釉脏"]);
+
+                        dt.Rows[i]["喷釉_合计"] =
+                                toNumber(dt.Rows[i]["喷釉_爆釉"])
+                                + toNumber(dt.Rows[i]["喷釉_脱釉"])
+                                + toNumber(dt.Rows[i]["喷釉_釉磕"])
+                                + toNumber(dt.Rows[i]["喷釉_釉粘"])
+                                + toNumber(dt.Rows[i]["喷釉_釉薄"])
+                                + toNumber(dt.Rows[i]["喷釉_波纹"])
+                                + toNumber(dt.Rows[i]["喷釉_釉脏"])
+                                + toNumber(dt.Rows[i]["喷釉_标不良"])
+                                + toNumber(dt.Rows[i]["喷釉_釉绺"])
+                                + toNumber(dt.Rows[i]["喷釉_釉泡"])
+                                + toNumber(dt.Rows[i]["喷釉_氯化镁"])
+                                + toNumber(dt.Rows[i]["喷釉_灌釉不良"]);
+                        dt.Rows[i]["合格数_擦水"] = toNumber(dt.Rows[i]["出窑数"]) - toNumber(dt.Rows[i]["擦水_合计"]);
+                        dt.Rows[i]["合格数_喷釉"] = toNumber(dt.Rows[i]["出窑数"]) - toNumber(dt.Rows[i]["喷釉_合计"]);
+                        dt.Rows[i]["缺陷率_擦水"] = Convert.ToString(Math.Round(100 - (toNumber(dt.Rows[i]["合格数_擦水"]) / toNumber(dt.Rows[i]["出窑数"])) * 100, 2)) + "%";
+                        dt.Rows[i]["缺陷率_喷釉"] = Convert.ToString(Math.Round(100 - (toNumber(dt.Rows[i]["合格数_喷釉"]) / toNumber(dt.Rows[i]["出窑数"])) * 100, 2)) + "%";
+                    }
+                }
+                string jsonStr = new JsonResult(dt) { total = dt.Rows.Count }.ToJson();
+
+                context.Response.Write(jsonStr);
+            }
+
+
+        }
+
+    }
+
+    public decimal toNumber(object o)
+    {
+        if (o != DBNull.Value)
+            return Convert.ToDecimal(o);
+        else
+            return 0;
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
 
 }