张忠帅 1 年間 前
コミット
facac68d80

+ 1 - 1
wwwroot/mes/rpt/rpt201/rpt.ashx

@@ -76,7 +76,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 	                                TO_CHAR(logo.LOGONAME) AS 商标,
 	                                TO_CHAR(COUNT(DISTINCT PD.BARCODE)) 出窑量,
                                     TO_CHAR(COUNT( DISTINCT CASE WHEN  (  MDF.DEFECTTYPEID=1 OR MDF.DEFECTCODE='99' ) AND MDF.DEFECTCODE IS NOT NULL AND DF.BARCODE IS NOT NULL THEN TO_CHAR(DF.BARCODE||MDF.DEFECTCODE) ELSE NULL END )) AS 缺陷量,
-	                                TO_CHAR((COUNT( DISTINCT CASE WHEN MDF.DEFECTCODE IS NOT NULL AND DF.BARCODE IS NOT NULL  THEN DF.BARCODE ELSE NULL END )/COUNT(DISTINCT PD.BARCODE) * 100), 'fm99990.00') || '%' 缺陷率,
+	                                  TO_CHAR((COUNT( DISTINCT CASE WHEN  (  MDF.DEFECTTYPEID=1 OR MDF.DEFECTCODE='99' ) AND MDF.DEFECTCODE IS NOT NULL AND DF.BARCODE IS NOT NULL THEN TO_CHAR(DF.BARCODE||MDF.DEFECTCODE) ELSE NULL END  )/COUNT(DISTINCT PD.BARCODE) * 100), 'fm99990.00') || '%' 缺陷率,
                                     {DEFECT}
                                 FROM
 	                              TP_PM_PRODUCTIONDATA PD

+ 100 - 81
wwwroot/mes/rpt/rpt207/rpt.ashx

@@ -14,20 +14,29 @@ using DK.XuWei.WebMes;
 
 public class rpt : IHttpHandler, IReadOnlySessionState
 {
-	public void ProcessRequest(HttpContext context)
-	{
-		context.Response.ContentType = "text/plain";
-
-
-		using (IDataAccess conn = DataAccess.Create())
-		{
-			//主表
-			if (context.Request["m"].ToString() == "master")
-			{
-				DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
-				DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
-				string defect = "";
-				DataTable dt = conn.ExecuteDatatable(@"SELECT
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        string kilproc = "16"; //出窑工序
+        string notInproc = " (61,28)";//排除工序
+        string FunctionalTesting = "60"; //功能检测
+        string defectcode = "'61','62','63','64','65','66','67'";
+        if (context.Request["procedureMaster"] == "回烧") {
+            kilproc = "28";//出窑工序
+            FunctionalTesting = "61";//功能检测
+            notInproc = "(16,60)";//排除工序
+            defectcode = "'061','062','063','064','065','066','067'";
+        }
+
+        using (IDataAccess conn = DataAccess.Create())
+        {
+            //主表
+            if (context.Request["m"].ToString() == "master")
+            {
+                DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
+                DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
+                string defect = "";
+                DataTable dt = conn.ExecuteDatatable(@"SELECT
 	                         DISTINCT MDF.DEFECTCODE AS DC,
 	                            'CASE WHEN gd.GOODSNAME IS NULL 
                                   THEN
@@ -37,27 +46,26 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 ' AS DEFECTCODE,
 	                            MDF.DEFECTNAME 
                           FROM TP_MST_DEFECT MDF
-															where DEFECTCODE IN('61','62','63','64','65','66','67') ORDER BY  MDF.DEFECTCODE
-	                            ");
-				for (int i = 0; i < dt.Rows.Count; i++)
-				{
-					if (i > 0) defect += ",";
-					defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
-				}
-			string sumdefect = "";
-              DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT MDF.DEFECTCODE AS DC,
+						where DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTCODE");
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    if (i > 0) defect += ",";
+                    defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
+                }
+                string sumdefect = "";
+                DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT MDF.DEFECTCODE AS DC,
                                                           'TO_CHAR( COUNT( DISTINCT  CASE WHEN   DF.DEFECTCODE IS NOT NULL  AND  DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) )' AS DEFECTCODE,
 	                                                   MDF.DEFECTNAME 
 													 
 	                          FROM TP_MST_DEFECT MDF
-															where DEFECTCODE IN('61','62','63','64','65','66','67')  ORDER BY  MDF.DEFECTCODE");
+							where DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTCODE");
                 for (int i = 0; i < dts.Rows.Count; i++) {
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
 
 
-				string sqlStr = @"SELECT* FROM(
+                string sqlStr = @"SELECT* FROM(
                    SELECT   GROUPING_ID(GD.GOODSNAME,GD.GOODSSPECIFICATION,MD.DICTIONARYVALUE,LG.LOGONAME) AS GID, 
 											CASE WHEN GROUPING_ID(GD.GOODSNAME,GD.GOODSSPECIFICATION,MD.DICTIONARYVALUE,LG.LOGONAME) =15 then '合计'  ELSE TO_CHAR(GD.GOODSCODE )END AS 产品编码,
 	                                TO_CHAR(GD.GOODSNAME) AS 产品名称,
@@ -73,24 +81,30 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 								LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
                                 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
                                 LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID 
-                                LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.PROCEDUREID NOT IN(61,28)
-                                LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTCODE IN('61','62','63','64','65','66','67') AND DF.VALUEFLAG=1
-                                WHERE
-	                                PD.PROCEDUREID = 16 
+                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID ".Replace("{DEFECT}", defect);
+                sqlStr += @"LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE    AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN"+notInproc;
+                sqlStr += @"LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTCODE IN(" + defectcode + ") AND DF.VALUEFLAG=1";
+                sqlStr += @" WHERE
+
+                                    PD.PROCEDUREID = @kilproc@
 	                                AND PD.CREATETIME >= @DATEBEGIN@
                                     AND PD.CREATETIME < @DATEEND@ 
 	                                AND PD.VALUEFLAG = 1
-									
+
+
                                 GROUP BY
-												Grouping sets ( (GD.GOODSCODE ,
-	                                                    GD.GOODSNAME,
-	                                                    GD.GOODSSPECIFICATION,
-	                                                    MD.DICTIONARYVALUE,
-	                                                    LG.LOGONAME ), ( ) )
-											union ALL 	
-													SELECT 
-														1,
+
+                                                Grouping sets ( (GD.GOODSCODE ,
+                                                        GD.GOODSNAME,
+                                                        GD.GOODSSPECIFICATION,
+                                                        MD.DICTIONARYVALUE,
+                                                        LG.LOGONAME ), ( ) )
+
+                                            union ALL
+
+                                                    SELECT
+
+                                                        1,
 														''  产品编码,
 														''  产品名称,
 														''  产品规格,
@@ -99,49 +113,54 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 														'' 出窑量,
 														'' 缺陷量,
 														'' 缺陷率,
-														{DEFECTSUM}                              
-    
-												 FROM
-												     TP_PM_PRODUCTIONDATA PD
-												 LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
-												 LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
-												 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
-												 LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-												 LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID 
-												 LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE   AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN(61,28)
-												 LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTCODE = MDF.DEFECTCODE AND MDF.DEFECTCODE IN('61','62','63','64','65','66','67') 
-												 WHERE
-												     PD.PROCEDUREID = 16 
+														{DEFECTSUM}
+
+                FROM
+                    TP_PM_PRODUCTIONDATA PD
+                LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
+
+                                                 LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
+
+                                                 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+
+                                                 LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
+
+                                                 LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID ".Replace("{DEFECTSUM}",sumdefect);
+                sqlStr +=@"	 LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  	AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN"+notInproc+"";
+               sqlStr += @"LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTCODE IN(" + defectcode + ") AND DF.VALUEFLAG=1";
+                sqlStr += @" WHERE
+												     PD.PROCEDUREID = @kilproc@ 
 												      AND PD.CREATETIME >= @DATEBEGIN@
 												     AND PD.CREATETIME < @DATEEND@  
 												     AND PD.VALUEFLAG = 1
-																		) ORDER BY GID".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);
-
-				//获取查询条件
-				List<CDAParameter> sqlPara = new List<CDAParameter>();
-				sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
-				sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
-				//获取分页参数
-				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"]) : 10000;
-				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 d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
-				d.Columns.Remove("GID");//移除GID列
-				string jsonStr = new JsonResult(d) { total = total }.ToJson();
-				context.Response.Write(jsonStr);
-			}
-		}
-	}
-
-	public bool IsReusable
-	{
-		get
-		{
-			return false;
-		}
-	}
+																		) ORDER BY GID";
+
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("kilproc", Convert.ToInt32(kilproc), DataType.Int32));
+                //获取分页参数
+                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"]) : 10000;
+                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 d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                d.Columns.Remove("GID");//移除GID列
+                string jsonStr = new JsonResult(d) { total = total }.ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
 }

+ 23 - 14
wwwroot/mes/rpt/rpt207/rpt_index.html

@@ -26,6 +26,13 @@
                         <input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
                         截止日期:
                         <input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
+                        数据源:
+                        <input class="easyui-combobox" id="procedureMaster" name="procedureMaster" data-options="required:true,prompt:'请选择...',tipPosition:'top',
+		   data:[
+		   {'text':'回烧','value':'回烧'},
+		   {'text':'本烧','value':'本烧'},
+		   ],valueField:'value',textField:'text',panelHeight:'200px',editable:'true'" style="width:160px;height:32px;">
+
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
                     </div>
@@ -65,21 +72,23 @@
 
         //搜索提交
         function tbSearchSubmit() {
-            $('#DataGridMaster').datagridLoad({
-                title: '',
-                idField: 'SID',
-                queryParams: $('#ffMaster').serializeJson(),
-                url: 'rpt.ashx?m=master&id=' + request('id'),
-                fixWidth: 160,
-                mergeWidth: 100,
-                splitChar: '_',
-                columnMenu: '#btnColumnMenu',
-                columnMoving: true,
-                pagination: true,
-                pagelist: [10000, 50, 100, 50, 1000, 5000],
-                pageSize: 10000
+            if ($('#ffMaster').form("validate")) {
+                $('#DataGridMaster').datagridLoad({
+                    title: '',
+                    idField: 'SID',
+                    queryParams: $('#ffMaster').serializeJson(),
+                    url: 'rpt.ashx?m=master&id=' + request('id'),
+                    fixWidth: 160,
+                    mergeWidth: 100,
+                    splitChar: '_',
+                    columnMenu: '#btnColumnMenu',
+                    columnMoving: true,
+                    pagination: true,
+                    pagelist: [10000, 50, 100, 50, 1000, 5000],
+                    pageSize: 10000
 
-            });
+                });
+            }
         }
 
         //导出

+ 98 - 79
wwwroot/mes/rpt/rpt208/rpt.ashx

@@ -14,21 +14,30 @@ using DK.XuWei.WebMes;
 
 public class rpt : IHttpHandler, IReadOnlySessionState
 {
-	public void ProcessRequest(HttpContext context)
-	{
-		context.Response.ContentType = "text/plain";
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        string kilproc = "16"; //出窑工序
+        string notInproc = " (61,28)";//排除工序
+        string FunctionalTesting = "60"; //功能检测
+        string defectcode = "'69','70','71','43','73','74','75','76','77','78','79','80','43'";
+        if (context.Request["procedureMaster"] == "回烧") {
+            kilproc = "28";//出窑工序
+            FunctionalTesting = "61";//功能检测
+            notInproc = "(16,60)";//排除工序
+            defectcode = "'069','070','071','43','073','074','075','076','077','078','079','080'";
+        }
 
 
-
-		using (IDataAccess conn = DataAccess.Create())
-		{
-			//主表
-			if (context.Request["m"].ToString() == "master")
-			{
-				DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
-				DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
-				string defect = "";
-				DataTable dt = conn.ExecuteDatatable(@"SELECT
+        using (IDataAccess conn = DataAccess.Create())
+        {
+            //主表
+            if (context.Request["m"].ToString() == "master")
+            {
+                DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
+                DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
+                string defect = "";
+                DataTable dt = conn.ExecuteDatatable(@"SELECT
 	                            DISTINCT MDF.DEFECTCODE AS DC,
 	                            'CASE WHEN gd.GOODSNAME IS NULL 
                                   THEN
@@ -38,26 +47,26 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 ' AS DEFECTCODE,
 	                            MDF.DEFECTNAME 
                             FROM TP_MST_DEFECT MDF
-															where MDF.VALUEFLAG=1 AND(DEFECTTYPEID=7 or  MDF.DEFECTCODE=43) ORDER BY  MDF.DEFECTCODE
-	                            ");
-				for (int i = 0; i < dt.Rows.Count; i++)
-				{
-					if (i > 0) defect += ",";
-					defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
-				}
-			string sumdefect = "";
-              DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT MDF.DEFECTCODE AS DC,
+							where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTCODE DESC");
+
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    if (i > 0) defect += ",";
+                    defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
+                }
+                string sumdefect = "";
+                DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT MDF.DEFECTCODE AS DC,
                                                         'TO_CHAR( COUNT( DISTINCT  CASE WHEN   DF.DEFECTCODE IS NOT NULL  AND  DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) )' AS DEFECTCODE,
 	                                                   MDF.DEFECTNAME 
 	                         FROM TP_MST_DEFECT MDF
-															where MDF.VALUEFLAG=1 AND(DEFECTTYPEID=7 or  MDF.DEFECTCODE=43 ) ORDER BY  MDF.DEFECTCODE");
+						where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTCODE DESC");
                 for (int i = 0; i < dts.Rows.Count; i++) {
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
 
 
-				string sqlStr = @"SELECT* FROM(
+                string sqlStr = @"SELECT* FROM(
                    SELECT   GROUPING_ID(GD.GOODSNAME,GD.GOODSSPECIFICATION,MD.DICTIONARYVALUE,LG.LOGONAME) AS GID, 
 											CASE WHEN GROUPING_ID(GD.GOODSNAME,GD.GOODSSPECIFICATION,MD.DICTIONARYVALUE,LG.LOGONAME) =15 then '合计'  ELSE TO_CHAR(GD.GOODSCODE )END AS 产品编码,
 	                                TO_CHAR(GD.GOODSNAME) AS 产品名称,
@@ -73,23 +82,28 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 								LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
                                 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
                                 LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID 
-                                LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(61,28)
-                                LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND(DEFECTTYPEID=7 or  MDF.DEFECTCODE=43)
-                                WHERE
-	                                PD.PROCEDUREID IN ( 16) 
+                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID" .Replace("{DEFECT}", defect);
+                sqlStr += @" LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  	AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN"+notInproc;
+                sqlStr += @" LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND  MDF.DEFECTCODE IN(" + defectcode + ")";
+                sqlStr += @"WHERE
+
+                                    PD.PROCEDUREID = @kilproc@
 	                                AND PD.CREATETIME >= @DATEBEGIN@
                                     AND PD.CREATETIME < @DATEEND@ 
 	                                AND PD.VALUEFLAG = 1
                                   GROUP BY
-												Grouping sets ( (GD.GOODSCODE ,
-	                                                    GD.GOODSNAME,
-	                                                    GD.GOODSSPECIFICATION,
-	                                                    MD.DICTIONARYVALUE,
-	                                                    LG.LOGONAME ), ( ) )
-											union ALL 	
-													SELECT 
-														1,
+
+                                                Grouping sets ( (GD.GOODSCODE ,
+                                                        GD.GOODSNAME,
+                                                        GD.GOODSSPECIFICATION,
+                                                        MD.DICTIONARYVALUE,
+                                                        LG.LOGONAME ), ( ) )
+
+                                            union ALL
+
+                                                    SELECT
+
+                                                        1,
 														''  产品编码,
 														''  产品名称,
 														''  产品规格,
@@ -98,49 +112,54 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 														'' 出窑量,
 														'' 缺陷量,
 														'' 缺陷率,
-														{DEFECTSUM}                              
-    
-												 FROM
-												     TP_PM_PRODUCTIONDATA PD
-												 LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
-												 LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
-												 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
-												 LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-												 LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID 
-												 LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.VALUEFLAG=1 
-												 LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTCODE = MDF.DEFECTCODE AND(DEFECTTYPEID=7 or  MDF.DEFECTCODE=43)
-												 WHERE
-												     PD.PROCEDUREID IN ( 16) 
+														{DEFECTSUM}
+
+                FROM
+                    TP_PM_PRODUCTIONDATA PD
+                                                 LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
+
+                                                 LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
+
+                                                 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+
+                                                 LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
+
+                                                 LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID ".Replace("{DEFECTSUM}", sumdefect);
+                sqlStr += @" LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  	AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN"+notInproc;
+                sqlStr += @" LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTCODE = MDF.DEFECTCODE AND  MDF.DEFECTCODE IN(" + defectcode + ")";
+                sqlStr += @"								 WHERE
+												     PD.PROCEDUREID = @kilproc@
 												      AND PD.CREATETIME >= @DATEBEGIN@
 												     AND PD.CREATETIME < @DATEEND@ 
 												     AND PD.VALUEFLAG = 1
-																		) ORDER BY GID".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);
-
-				//获取查询条件
-				List<CDAParameter> sqlPara = new List<CDAParameter>();
-				sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
-				sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
-				//获取分页参数
-				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"]) : 10000;
-				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 d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
-				d.Columns.Remove("GID");//移除GID列
-				string jsonStr = new JsonResult(d) { total = total }.ToJson();
-				context.Response.Write(jsonStr);
-			}
-		}
-	}
-
-	public bool IsReusable
-	{
-		get
-		{
-			return false;
-		}
-	}
+																		) ORDER BY GID";
+
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("kilproc", Convert.ToInt32(kilproc), DataType.Int32));
+                //获取分页参数
+                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"]) : 10000;
+                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 d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                d.Columns.Remove("GID");//移除GID列
+                string jsonStr = new JsonResult(d) { total = total }.ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
 }

+ 23 - 14
wwwroot/mes/rpt/rpt208/rpt_index.html

@@ -26,6 +26,13 @@
                         <input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
                         截止日期:
                         <input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
+                        数据源:
+                        <input class="easyui-combobox" id="procedureMaster" name="procedureMaster" data-options="required:true,prompt:'请选择...',tipPosition:'top',
+		   data:[
+		   {'text':'回烧','value':'回烧'},
+		   {'text':'本烧','value':'本烧'},
+		   ],valueField:'value',textField:'text',panelHeight:'200px',editable:'true'" style="width:160px;height:32px;">
+
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
                     </div>
@@ -65,21 +72,23 @@
 
         //搜索提交
         function tbSearchSubmit() {
-            $('#DataGridMaster').datagridLoad({
-                title: '',
-                idField: 'SID',
-                queryParams: $('#ffMaster').serializeJson(),
-                url: 'rpt.ashx?m=master&id=' + request('id'),
-                fixWidth: 160,
-                mergeWidth: 100,
-                splitChar: '_',
-                columnMenu: '#btnColumnMenu',
-                columnMoving: true,
-                pagination: true,
-                pagelist: [10000, 50, 100, 50, 1000, 5000],
-                pageSize: 10000
+            if ($('#ffMaster').form("validate")) {
+                $('#DataGridMaster').datagridLoad({
+                    title: '',
+                    idField: 'SID',
+                    queryParams: $('#ffMaster').serializeJson(),
+                    url: 'rpt.ashx?m=master&id=' + request('id'),
+                    fixWidth: 160,
+                    mergeWidth: 100,
+                    splitChar: '_',
+                    columnMenu: '#btnColumnMenu',
+                    columnMoving: true,
+                    pagination: true,
+                    pagelist: [10000, 50, 100, 50, 1000, 5000],
+                    pageSize: 10000
 
-            });
+                });
+            }
         }
 
         //导出

+ 70 - 60
wwwroot/mes/rpt/rpt209/rpt.ashx

@@ -14,21 +14,30 @@ using DK.XuWei.WebMes;
 
 public class rpt : IHttpHandler, IReadOnlySessionState
 {
-	public void ProcessRequest(HttpContext context)
-	{
-		context.Response.ContentType = "text/plain";
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        string kilproc = "16"; //出窑工序
+        string notInproc = " (61,28)";//排除工序
+        string FunctionalTesting = "60"; //功能检测
+        string defectcode = "'83','84'";
+        if (context.Request["procedureMaster"] == "回烧") {
+            kilproc = "28";//出窑工序
+            FunctionalTesting = "61";//功能检测
+            notInproc = "(16,60)";//排除工序
+            defectcode = "'0083','0084'";
+        }
 
 
-
-		using (IDataAccess conn = DataAccess.Create())
-		{
-			//主表
-			if (context.Request["m"].ToString() == "master")
-			{
-				DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
-				DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
-				string defect = "";
-				DataTable dt = conn.ExecuteDatatable(@"SELECT
+        using (IDataAccess conn = DataAccess.Create())
+        {
+            //主表
+            if (context.Request["m"].ToString() == "master")
+            {
+                DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
+                DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
+                string defect = "";
+                DataTable dt = conn.ExecuteDatatable(@"SELECT
 	                            DISTINCT MDF.DEFECTCODE AS DC,
 	                             'CASE WHEN gd.GOODSNAME IS NULL 
                                   THEN
@@ -39,27 +48,26 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 	                            MDF.DEFECTNAME 
                             FROM
 	                            TP_MST_DEFECT MDF 
-                            WHERE MDF.DEFECTTYPEID in(8) ORDER BY  MDF.DEFECTCODE
-	                            ");
-				for (int i = 0; i < dt.Rows.Count; i++)
-				{
-					if (i > 0) defect += ",";
-					defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
-				}
-				string sumdefect = "";
-              DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT MDF.DEFECTCODE AS DC,
+                            where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTCODE DESC");
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    if (i > 0) defect += ",";
+                    defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
+                }
+                string sumdefect = "";
+                DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT MDF.DEFECTCODE AS DC,
                                                         'TO_CHAR( COUNT( DISTINCT  CASE WHEN   DF.DEFECTCODE IS NOT NULL  AND  DF.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(pd.BARCODE||DF.DEFECTCODE ) ELSE NULL END ) )' AS DEFECTCODE,
 	                                                   MDF.DEFECTNAME 
                             FROM
 	                            TP_MST_DEFECT MDF 
-                            WHERE MDF.DEFECTTYPEID in(8) ORDER BY  MDF.DEFECTCODE");
+                           where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTCODE DESC");
                 for (int i = 0; i < dts.Rows.Count; i++) {
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
 
 
-				string sqlStr = @"SELECT* FROM(
+                string sqlStr = @"SELECT* FROM(
                    SELECT   GROUPING_ID(GD.GOODSNAME,GD.GOODSSPECIFICATION,MD.DICTIONARYVALUE,LG.LOGONAME) AS GID, 
 											CASE WHEN GROUPING_ID(GD.GOODSNAME,GD.GOODSSPECIFICATION,MD.DICTIONARYVALUE,LG.LOGONAME) =15 then '合计'  ELSE TO_CHAR(GD.GOODSCODE )END AS 产品编码,
 	                                TO_CHAR(GD.GOODSNAME) AS 产品名称,
@@ -75,11 +83,11 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 								LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE=PD.BARCODE
                                 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
                                 LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID 
-                                LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE   AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(61,28)
-                                LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTTYPEID =8
-                                WHERE
-	                                PD.PROCEDUREID IN ( 16) 
+                                LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID ".Replace("{DEFECT}", defect);
+                sqlStr +=@"      LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN"+notInproc;
+                sqlStr += @"		LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND  MDF.DEFECTCODE IN(" + defectcode + ")";
+                sqlStr += @"                WHERE
+	                                PD.PROCEDUREID = @kilproc@
 	                                AND PD.CREATETIME >= @DATEBEGIN@
                                     AND PD.CREATETIME < @DATEEND@ 
 	                               AND PD.VALUEFLAG=1
@@ -108,40 +116,42 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 												 LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
 												 LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
 												 LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-												 LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID 
-												 LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(61,28)
-												 LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTCODE = MDF.DEFECTCODE AND MDF.DEFECTTYPEID =8
-												 WHERE
-												     PD.PROCEDUREID IN ( 16) 
+												 LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID ".Replace("{DEFECTSUM}", sumdefect);
+
+                sqlStr +=@"						 LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.VALUEFLAG=1 	AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN"+notInproc;
+                sqlStr += @"						 LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTCODE = MDF.DEFECTCODE AND  MDF.DEFECTCODE IN(" + defectcode + ")";
+				sqlStr += @"								 WHERE
+												     PD.PROCEDUREID = @kilproc@
 												      AND PD.CREATETIME >= @DATEBEGIN@
 												     AND PD.CREATETIME < @DATEEND@  
 												     AND PD.VALUEFLAG=1
-																		) ORDER BY GID".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);
-				//获取查询条件
-				List<CDAParameter> sqlPara = new List<CDAParameter>();
-				sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
-				sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
-				//获取分页参数
-				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"]) : 10000;
-				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"] : "";
+																		) ORDER BY GID";
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("kilproc", Convert.ToInt32(kilproc), DataType.Int32));
+                //获取分页参数
+                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"]) : 10000;
+                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 d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
-				d.Columns.Remove("GID");//移除GID列
-				string jsonStr = new JsonResult(d) { total = total }.ToJson();
-				context.Response.Write(jsonStr);
-			}
-		}
-	}
+                //获取分页数据    
+                int total = 0;
+                DataTable d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                d.Columns.Remove("GID");//移除GID列
+                string jsonStr = new JsonResult(d) { total = total }.ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
 
-	public bool IsReusable
-	{
-		get
-		{
-			return false;
-		}
-	}
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
 }

+ 23 - 14
wwwroot/mes/rpt/rpt209/rpt_index.html

@@ -26,6 +26,13 @@
                         <input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
                         截止日期:
                         <input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
+                        数据源:
+                        <input class="easyui-combobox" id="procedureMaster" name="procedureMaster" data-options="required:true,prompt:'请选择...',tipPosition:'top',
+		   data:[
+		   {'text':'回烧','value':'回烧'},
+		   {'text':'本烧','value':'本烧'},
+		   ],valueField:'value',textField:'text',panelHeight:'200px',editable:'true'" style="width:160px;height:32px;">
+
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
                     </div>
@@ -65,21 +72,23 @@
 
         //搜索提交
         function tbSearchSubmit() {
-            $('#DataGridMaster').datagridLoad({
-                title: '',
-                idField: 'SID',
-                queryParams: $('#ffMaster').serializeJson(),
-                url: 'rpt.ashx?m=master&id=' + request('id'),
-                fixWidth: 160,
-                mergeWidth: 100,
-                splitChar: '_',
-                columnMenu: '#btnColumnMenu',
-                columnMoving: true,
-                pagination: true,
-                pagelist: [10000, 50, 100, 50, 1000, 5000],
-                pageSize: 10000
+            if ($('#ffMaster').form("validate")) {
+                $('#DataGridMaster').datagridLoad({
+                    title: '',
+                    idField: 'SID',
+                    queryParams: $('#ffMaster').serializeJson(),
+                    url: 'rpt.ashx?m=master&id=' + request('id'),
+                    fixWidth: 160,
+                    mergeWidth: 100,
+                    splitChar: '_',
+                    columnMenu: '#btnColumnMenu',
+                    columnMoving: true,
+                    pagination: true,
+                    pagelist: [10000, 50, 100, 50, 1000, 5000],
+                    pageSize: 10000
 
-            });
+                });
+            }
         }
 
         //导出

+ 53 - 55
wwwroot/mes/rpt/rpt211/rpt.ashx

@@ -69,6 +69,14 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         ),基础数据 AS 
                                         (
                                         SELECT
+pd.GROUTINGLINEID,pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,pd.缺陷类别,
+GOODSLEVELTYPEID
+FROM(
+SELECT
+	GROUTINGLINEID,工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,缺陷类别,GOODSLEVELTYPEID,
+row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+	FROM(
+ SELECT
                                         	GDL.GROUTINGLINEID,
                                         	gdl.USERCODE AS 工号,
                                         	staff.STAFFNAME AS 姓名,
@@ -80,9 +88,13 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	PD.BARCODE 出窑条码,
                                         	DF.BARCODE 缺陷条码,
                                         	DF.DEFECTID 缺陷ID,
-                                        	 MDF.DEFECTTYPEID 缺陷类别
-                                        					 
-                                        FROM
+                                        	MDF.DEFECTTYPEID 缺陷类别,
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                       FROM
                                         	TP_PM_PRODUCTIONDATA PD
                                         	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
                                         	LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
@@ -93,11 +105,11 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	LEFT JOIN TP_PM_DEFECT DF ON DF.BARCODE = PD.BARCODE AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN(61,28)
                                             LEFT JOIN TP_MST_DEFECT MDF ON MDF.DEFECTID=DF.DEFECTID AND MDF.VALUEFLAG=1 AND (  MDF.DEFECTTYPEID=1 OR MDF.DEFECTCODE='99' )
                                         	LEFT JOIN TP_MST_USER us ON us.USERID=gdl.USERID
-																					LEFT JOIN TP_MST_USERSTAFF us ON us.USERID=gdl.USERID
-																					LEFT JOIN TP_HR_STAFF  staff ON staff.STAFFID=us.STAFFID 
-                                            
-                                        WHERE
-                                        	PD.PROCEDUREID IN ( 16) 
+											LEFT JOIN TP_MST_USERSTAFF us ON us.USERID=gdl.USERID
+											LEFT JOIN TP_HR_STAFF  staff ON staff.STAFFID=us.STAFFID 
+											LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID=60 AND PDS.VALUEFLAG=1
+                                            WHERE
+                                        	PD.PROCEDUREID IN ( 16)  AND PD.VALUEFLAG=1
                                            AND PD.CREATETIME >= @DATEBEGIN@
                                            AND PD.CREATETIME < @DATEEND@ ";
                       if (context.Request["linecodeMaster"] != null && context.Request["linecodeMaster"] != "") { //判断首个下拉框是否有值
@@ -127,52 +139,40 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                     }
                         }
                 }
-                sqlStr +=@"  
-                                        	AND PD.VALUEFLAG = 1
-							GROUP BY 		GDL.GROUTINGLINEID,
-                                        	gdl.USERCODE ,
-                                        	staff.STAFFNAME,
-											GD.GOODSCODE,
-                                        	GD.GOODSNAME ,
-                                        	GD.GOODSSPECIFICATION ,
-                                        	MD.DICTIONARYVALUE ,
-                                        	LG.LOGONAME ,
-                                        	PD.BARCODE ,MDF.DEFECTTYPEID,
-                                        	DF.BARCODE ,DF.DEFECTID
-                                        )
-                               SELECT * FROM(             
-                                        SELECT
-                                        GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
+                sqlStr +=@"  ) ) pd   )
+              SELECT * FROM(             
+                    SELECT					
+                       GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
                                         CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 THEN'总计'
                                         	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=111 THEN'合计'
-                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE null END AS 统计方式,
-                                        TO_CHAR(基础数据.工号 ) AS 工号,
-                                        基础数据.姓名,
-                                        部门.部门,
+                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 统计方式,
+										TO_CHAR(基础数据.工号 ) AS 工号,
+                    基础数据.姓名,
+                    部门.部门,
 										基础数据.产品编码,
-                                        基础数据.产品名称,
-                                        基础数据.产品规格,
-                                        基础数据.釉色,
-                                        基础数据.商标,
-                                        TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
-                                       TO_CHAR(COUNT( DISTINCT CASE WHEN  (缺陷类别 =1 OR 缺陷ID=126) THEN TO_CHAR(缺陷条码||基础数据.缺陷ID) ELSE NULL END )) 缺陷量,
-                                           TO_CHAR( ((COUNT( DISTINCT CASE WHEN  缺陷类别 =1  THEN 缺陷条码 ELSE NULL END ))/COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
-                                        {DEFECT}
-                                        FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
-                                        AND MDF.DEFECTTYPEID = 1 
-                                             GROUP BY
-												Grouping sets ( ( 
-																					基础数据.工号,
-																					基础数据.姓名,
-																					部门.部门,
-																					基础数据.产品编码,
-																					基础数据.产品名称,
-																					基础数据.产品规格,
-																					基础数据.釉色,
-																					基础数据.商标), 
-                                                                                   (基础数据.工号,基础数据.姓名,部门.部门),(部门.部门),() )
+                    基础数据.产品名称,
+                    基础数据.产品规格,
+                    基础数据.釉色,
+                    基础数据.商标,
+                     TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码)) 出窑量,
+                    TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (基础数据.缺陷类别 =1 OR 基础数据.缺陷ID=126) THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+                      DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (基础数据.缺陷类别 = 1 OR 基础数据.缺陷ID= 126) THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+	TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (基础数据.缺陷类别 = 1 OR 基础数据.缺陷ID = 126) THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+	DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
+					TO_CHAR(COUNT( CASE WHEN   (基础数据.缺陷类别 =1 OR 基础数据.缺陷ID=126) THEN TO_CHAR(基础数据.缺陷条码|| 基础数据.缺陷ID) ELSE NULL END )) 缺陷量,
+					TO_CHAR( (COUNT( CASE WHEN   (基础数据.缺陷类别 =1 OR 基础数据.缺陷ID=126) THEN TO_CHAR(基础数据.缺陷条码|| 基础数据.缺陷ID) ELSE NULL END ) /COUNT(DISTINCT 基础数据.出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
+					{DEFECT}
+                    FROM 基础数据
+                    LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
+                         GROUP BY  Grouping sets ( ( 
+                                  基础数据.工号,
+                                  基础数据.姓名,
+                                  部门.部门,
+								  基础数据.产品编码,
+                                  基础数据.产品名称,
+                                  基础数据.产品规格,
+                                  基础数据.釉色,
+                                  基础数据.商标 ),(基础数据.工号,基础数据.姓名,部门.部门),(部门.部门),())
 																				
 					                                UNION ALL  
                             SELECT * FROM(
@@ -180,7 +180,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 									    GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
                                         CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 THEN'总计'
                                         	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=111 THEN'合计'
-                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 工号,
+                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 统计方式,
                                         '' AS工号,
                                         基础数据.姓名,
                                         部门.部门,
@@ -189,14 +189,12 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         基础数据.产品规格,
                                         基础数据.釉色,
                                         基础数据.商标,
-                                        '' 出窑量,
+                                        '' 出窑量,''合格量,''合格率,
                                         '' 缺陷量,
                                         '' 缺陷率,
                                         {sumdefect}
                                         FROM 基础数据
                                         LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
-                                        AND MDF.DEFECTTYPEID = 1 
                             GROUP BY Grouping sets ( ( 
 																					基础数据.工号,
 																					基础数据.姓名,

+ 57 - 42
wwwroot/mes/rpt/rpt212/rpt.ashx

@@ -28,7 +28,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				string defect = "";
 				DataTable dt = conn.ExecuteDatatable(@"		SELECT
 												 DISTINCT MDF.DEFECTCODE AS DC,			 MDF.DEFECTID,
-	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 
+	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 
 															THEN  TO_CHAR(  ( SUM( CASE WHEN 基础数据.缺陷ID = '''||MDF.DEFECTID||''' THEN 1 ELSE 0 END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''
 	                              ELSE
                                     TO_CHAR(SUM( CASE WHEN 基础数据.缺陷ID = '''||MDF.DEFECTID||''' THEN 1 ELSE 0 END )) END' AS DEFECTCODE,
@@ -44,7 +44,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 
 					string sumdefect = "";
               DataTable dts = conn.ExecuteDatatable(@"	SELECT  DISTINCT MDF.DEFECTCODE AS DC,			 MDF.DEFECTID,
-	                             ' TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) ' AS DEFECTCODE,
+	                             ' TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.DEFECTCODE = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) ' AS DEFECTCODE,
 	                            MDF.DEFECTNAME 
                            FROM TP_PC_DEFECTPROCEDUREJOBS JOBS
 															LEFT JOIN  TP_MST_DEFECT MDF  ON mdf.DEFECTID=JOBS.DEFECTID 
@@ -53,15 +53,33 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
-
+				string sumdefectnames = "";
+                DataTable dtnames = conn.ExecuteDatatable(@"SELECT
+														DISTINCT MDF.DEFECTCODE AS DC,	MDF.DEFECTNAME  AS DEFECTCODE,
+	                            MDF.DEFECTNAME ,MDF.DEFECTID
+									
+                             FROM TP_PC_DEFECTPROCEDUREJOBS JOBS
+							LEFT JOIN  TP_MST_DEFECT MDF  ON mdf.DEFECTID=JOBS.DEFECTID 
+							WHERE MDF.DEFECTCODE IN ('10', '12', '13', '14', '15', '16', '17', '18', '19', '20'  ) ORDER BY  MDF.DEFECTCODE");
+                for (int i = 0; i < dtnames.Rows.Count; i++) {
+                    if (i > 0) sumdefectnames += ",";
+                    sumdefectnames += dtnames.Rows[i]["DEFECTCODE"].ToString()+" AS "+dtnames.Rows[i]["DEFECTNAME"].ToString();
+                }
 				string sqlStr = @"WITH 部门 AS (
                                         SELECT  GROUTINGLINEID,
                                         CASE WHEN HIGHPRESSUREFLAG=1 THEN'高压' else TO_CHAR(SUBSTR(GROUTINGLINECODE, 1, 2)) END AS 部门
                                         FROM  TP_PC_GROUTINGLINE
                                         ),基础数据 AS 
                                         (
-                                        SELECT
-                                        	GDL.GROUTINGLINEID,
+                                       SELECT
+									pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE,缺陷类别,PROCEDUREID,GOODSLEVELTYPEID
+									FROM(
+									SELECT
+										工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
+									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+										FROM(
+									 SELECT
+											
                                         	PDC.USERCODE AS 工号,
                                         	STF.STAFFNAME AS 姓名,
 											GD.GOODSCODE AS 产品编码,
@@ -71,43 +89,40 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	LG.LOGONAME AS 商标,
                                         	PD.BARCODE 出窑条码,
                                         	DF.BARCODE 缺陷条码,
-                                        	DF.DEFECTID 缺陷ID,DF.DEFECTCODE 缺陷编码,
-											df.DEFECTCODE,
-											PDC.PROCEDUREID
-                                        FROM
+                                        	DF.DEFECTID 缺陷ID,
+											DF.DEFECTCODE ,
+											MDF.DEFECTTYPEID 缺陷类别,
+											PDC.PROCEDUREID,
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                        	                                        FROM
                                         	TP_PM_PRODUCTIONDATA PD
                                         	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
-												LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
-												INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (4,36,53) AND PDC.VALUEFLAG=1
-												LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
-												LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
-												LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID 
-												LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN(61,28)
-												LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTCODE IN ('10', '12', '13', '14', '15', '16', '17', '18', '19', '20'  )
-												LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
-												LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID   AND STF.JOBS IN(3,5)
-                                        WHERE
-                                        	PD.PROCEDUREID IN ( 16) 
+											LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
+											INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (4,36,53) AND PDC.VALUEFLAG=1
+											LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+											LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID AND MD.DICTIONARYTYPE = 'TPC002'
+											LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID 
+											LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN(61,28)
+											LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID AND MDF.DEFECTCODE IN ('10', '12', '13', '14', '15', '16', '17', '18', '19', '20'  )
+											LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
+											LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID   AND STF.JOBS IN(3,5)
+											LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID=60 AND PDS.VALUEFLAG=1
+                                            WHERE
+                                        	PD.PROCEDUREID IN ( 16)  AND PD.VALUEFLAG = 1
                                            AND PD.CREATETIME >= @DATEBEGIN@
                                            AND PD.CREATETIME <= @DATEEND@ 
-                                        	
-                                        	AND PD.VALUEFLAG = 1
-								GROUP BY GDL.GROUTINGLINEID,
-                                        	PDC.USERCODE,
-                                        	STF.STAFFNAME,GD.GOODSCODE,
-                                        	GD.GOODSNAME,
-                                        	GD.GOODSSPECIFICATION,
-                                        	MD.DICTIONARYVALUE ,
-                                        	LG.LOGONAME,
-                                        	PD.BARCODE,
-                                        	DF.BARCODE,DF.DEFECTID,df.DEFECTCODE,PDC.PROCEDUREID
+										)) pd
                                         )
                           SELECT * FROM(
                                         SELECT
-                                         GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
-                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 THEN'总计'
-                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=31 THEN'小计'ELSE NULL END AS 统计方式,
-                                        TO_CHAR(基础数据.工号) 工号,
+                                        GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
+                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 THEN'总计'
+                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 统计方式,
+							TO_CHAR(基础数据.工号) AS 工号,
 										TO_CHAR(基础数据.姓名) 姓名,
 										TO_CHAR(基础数据.产品编码)产品编码,
                                         TO_CHAR(基础数据.产品名称)产品名称,
@@ -115,18 +130,20 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
+										 TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN 基础数据.PROCEDUREID IN (4,36,53) AND  GOODSLEVELTYPEID NOT IN (4)  AND  基础数据.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '20' ) THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+                      DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN 基础数据.PROCEDUREID IN (4,36,53) AND  GOODSLEVELTYPEID NOT IN (4)  AND  基础数据.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '20' ) THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+	TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN 基础数据.PROCEDUREID IN (4,36,53) AND  GOODSLEVELTYPEID NOT IN (4)  AND  基础数据.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '20' ) THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+	DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
+                                        
                                         TO_CHAR(COUNT( DISTINCT  CASE WHEN 基础数据.PROCEDUREID IN (4,36,53) AND 基础数据.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '20' ) THEN to_char(基础数据.缺陷条码||基础数据.DEFECTCODE ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN 基础数据.PROCEDUREID IN (4,36,53) AND 基础数据.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '20' ) THEN to_char(基础数据.缺陷条码||基础数据.DEFECTCODE ) ELSE NULL END )/COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
                                         {DEFECT}
                                         FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
-                                        AND MDF.DEFECTTYPEID = 1 
                                              GROUP BY
 												Grouping sets ( ( 
 																	基础数据.工号,
 																	基础数据.姓名,
-																	部门.部门,基础数据.产品编码,
+																	基础数据.产品编码,
 																	基础数据.产品名称,
 																	基础数据.产品规格,
 																	基础数据.釉色,
@@ -137,7 +154,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																	126 ,
 																	'',
 																	'',
-																	'',
+																	'','','',
 																	'',
 																	'',
 																	'',
@@ -148,8 +165,6 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																	'',
 																	{DEFECTSUM}
 															FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
 		) ORDER BY 姓名,GID,统计方式
 
 ".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);

+ 64 - 46
wwwroot/mes/rpt/rpt213/rpt.ashx

@@ -28,7 +28,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				string defect = "";
 				DataTable dt = conn.ExecuteDatatable(@"		SELECT
 												 DISTINCT MDF.DEFECTCODE AS DC,			 MDF.DEFECTID,
-	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=126 
+	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 
 															THEN  	TO_CHAR(( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''
 	                              ELSE
                                     TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) END' AS DEFECTCODE,
@@ -53,29 +53,51 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
 
-
+				string sumdefectnames = "";
+                DataTable dtnames = conn.ExecuteDatatable(@"SELECT
+														DISTINCT MDF.DEFECTCODE AS DC,	MDF.DEFECTNAME  AS DEFECTCODE,
+	                            MDF.DEFECTNAME ,MDF.DEFECTID
+					FROM TP_PC_DEFECTPROCEDUREJOBS JOBS
+															LEFT JOIN  TP_MST_DEFECT MDF  ON mdf.DEFECTID=JOBS.DEFECTID 
+															WHERE jobs.JOBSID=4 ORDER BY  MDF.DEFECTID");
+                for (int i = 0; i < dtnames.Rows.Count; i++) {
+                    if (i > 0) sumdefectnames += ",";
+                    sumdefectnames += dtnames.Rows[i]["DEFECTCODE"].ToString()+" AS "+dtnames.Rows[i]["DEFECTNAME"].ToString();
+                }
 					string sqlStr = @"WITH 部门 AS (
 											SELECT  GROUTINGLINEID,
 											CASE WHEN HIGHPRESSUREFLAG=1 THEN'高压' else TO_CHAR(SUBSTR(GROUTINGLINECODE, 1, 2)) END AS 部门
 											FROM  TP_PC_GROUTINGLINE
 											),基础数据 AS 
-											(
-											SELECT
-                                        		GDL.GROUTINGLINEID,
-                                        		PDC.USERCODE AS 工号,
-                                        		CASE WHEN STF.STAFFNAME IS NULL THEN USERS.USERNAME 
-													 ELSE STF.STAFFNAME END AS 姓名,GD.GOODSCODE AS 产品编码,
-                                        		GD.GOODSNAME AS 产品名称,
-                                        		GD.GOODSSPECIFICATION AS 产品规格,
-                                        		MD.DICTIONARYVALUE AS 釉色,
-                                        		LG.LOGONAME AS 商标,
-                                        		PD.BARCODE 出窑条码,
-                                        		DF.BARCODE 缺陷条码,
-                                        		DF.DEFECTID 缺陷ID,
-											df.DEFECTCODE 缺陷编码,
-											PDC.PROCEDUREID
-											FROM
-                                        		TP_PM_PRODUCTIONDATA PD
+											(  SELECT
+									pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,缺陷编码,缺陷类别,PROCEDUREID,GOODSLEVELTYPEID
+									FROM(
+									SELECT
+										工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,缺陷编码,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
+									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+										FROM(
+									 SELECT
+											GDL.GROUTINGLINEID,
+                                        	PDC.USERCODE AS 工号,
+                                        	STF.STAFFNAME AS 姓名,
+											GD.GOODSCODE AS 产品编码,
+                                        	GD.GOODSNAME AS 产品名称,
+                                        	GD.GOODSSPECIFICATION AS 产品规格,
+                                        	MD.DICTIONARYVALUE AS 釉色,
+                                        	LG.LOGONAME AS 商标,
+                                        	PD.BARCODE 出窑条码,
+                                        	DF.BARCODE 缺陷条码,
+                                        	DF.DEFECTID 缺陷ID,
+											DF.DEFECTCODE 缺陷编码,
+											MDF.DEFECTTYPEID 缺陷类别,
+											PDC.PROCEDUREID,
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                        	                                        FROM
+                                        	TP_PM_PRODUCTIONDATA PD
                                         		LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
                                         		LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
                                         		LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
@@ -83,30 +105,24 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         		LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID
 												INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (5,36,52) AND PDC.VALUEFLAG=1
 												LEFT JOIN TP_MST_USER USERS ON USERS.USERID=PDC.USERID 
-												LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE   AND DF.PROCEDUREID NOT IN(61,28) AND DF.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '25', '34' )  AND DF.VALUEFLAG=1
+												LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE   AND DF.PROCEDUREID NOT IN(61,28) 
+												AND DF.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '25', '34' )  AND DF.VALUEFLAG=1
+												LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID												
 												LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
 												LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID 
-
-											WHERE
-                                        		PD.PROCEDUREID IN ( 16) 
-											   AND PD.CREATETIME >= @DATEBEGIN@
-											   AND PD.CREATETIME <= @DATEEND@ 
-                                        	   AND PD.VALUEFLAG = 1
-										GROUP BY GDL.GROUTINGLINEID,
-                                        	PDC.USERCODE ,
-                                        	STF.STAFFNAME ,USERS.USERNAME,GD.GOODSCODE ,
-                                        	GD.GOODSNAME ,
-                                        	GD.GOODSSPECIFICATION ,
-                                        	MD.DICTIONARYVALUE ,
-                                        	LG.LOGONAME ,
-                                        	PD.BARCODE ,
-                                        	DF.BARCODE ,DF.DEFECTID,df.DEFECTCODE,PDC.PROCEDUREID
-											)
+												LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID=60 AND PDS.VALUEFLAG=1
+                                            WHERE
+                                        	PD.PROCEDUREID IN ( 16)  AND PD.VALUEFLAG = 1
+                                           AND PD.CREATETIME >= @DATEBEGIN@
+                                           AND PD.CREATETIME <= @DATEEND@ 
+																					 )
+																					 ) pd
+										)
 											SELECT * FROM(
 												 SELECT
-											GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
-											CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 THEN'总计'
-                                        		 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=31 THEN'小计'ELSE null  END AS 统计方式,TO_CHAR(基础数据.工号) AS 工号,
+											GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
+                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 THEN'总计'
+                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 统计方式,TO_CHAR(基础数据.工号) AS 工号,
 											TO_CHAR(基础数据.姓名)姓名,
 											TO_CHAR(基础数据.产品编码)产品编码,
 											TO_CHAR(基础数据.产品名称)产品名称,
@@ -114,18 +130,21 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 											TO_CHAR(基础数据.釉色)釉色,
 											TO_CHAR(基础数据.商标)商标,
 											TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
+											TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND 基础数据.PROCEDUREID IN (5,36,52) AND 基础数据.缺陷编码 IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '25', '34') THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+                      DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND 基础数据.PROCEDUREID IN (5,36,52) AND 基础数据.缺陷编码 IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '25', '34') THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+	TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND 基础数据.PROCEDUREID IN (5,36,52) AND 基础数据.缺陷编码 IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '25', '34') THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+	DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
+                                        
 											TO_CHAR(COUNT( DISTINCT  CASE WHEN 基础数据.PROCEDUREID IN (5,36,52) AND 基础数据.缺陷编码 IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '25', '34') THEN to_char(基础数据.缺陷条码||基础数据.缺陷编码 ) ELSE NULL END )) 缺陷量,
 											TO_CHAR( (COUNT( DISTINCT  CASE WHEN 基础数据.PROCEDUREID IN (5,36,52) AND 基础数据.缺陷编码 IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '25', '34') THEN to_char(基础数据.缺陷条码||基础数据.缺陷编码 ) ELSE NULL END )/COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
 											{DEFECT}
 											FROM 基础数据
-											LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-											LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
-											AND MDF.DEFECTTYPEID = 1 
+										
 												 GROUP BY
 													Grouping sets ( ( 
 																		基础数据.工号,
 																		基础数据.姓名,
-																		部门.部门,基础数据.产品编码,
+																		基础数据.产品编码,
 																		基础数据.产品名称,
 																		基础数据.产品规格,
 																		基础数据.釉色,
@@ -137,7 +156,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																		126 ,'',
 																		'',
 																		'',
-																		'',
+																		'','','',
 																		'',
 																		'',
 																		'',
@@ -147,8 +166,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																		'',
 																		{DEFECTSUM} 
 																FROM 基础数据
-											LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-											LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
+											 
 			)  ORDER BY 姓名,GID,统计方式
 
 ".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);

+ 56 - 36
wwwroot/mes/rpt/rpt214/rpt.ashx

@@ -30,7 +30,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				DataTable dt = conn.ExecuteDatatable(@"	
 							SELECT
 												 DISTINCT MDF.DEFECTCODE AS DC,			 MDF.DEFECTID,
-	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=126 
+	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 
 															THEN  	TO_CHAR(( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''
 	                              ELSE
                                     TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) END' AS DEFECTCODE,
@@ -54,16 +54,35 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
+
+				string sumdefectnames = "";
+                DataTable dtnames = conn.ExecuteDatatable(@"SELECT
+														DISTINCT MDF.DEFECTCODE AS DC,	MDF.DEFECTNAME  AS DEFECTCODE,
+	                            MDF.DEFECTNAME ,MDF.DEFECTID
+															 FROM
+	                            TP_MST_DEFECT MDF 
+                            where   MDF.DEFECTTYPEID = 1  AND DEFECTTYPEID=1   AND MDF.DEFECTCODE NOT IN  ('001','002','1','2','3')  ORDER BY  MDF.DEFECTID");
+                for (int i = 0; i < dtnames.Rows.Count; i++) {
+                    if (i > 0) sumdefectnames += ",";
+                    sumdefectnames += dtnames.Rows[i]["DEFECTCODE"].ToString()+" AS "+dtnames.Rows[i]["DEFECTNAME"].ToString();
+                }
 				string sqlStr = @"WITH 部门 AS (
                                         SELECT  GROUTINGLINEID,
                                         CASE WHEN HIGHPRESSUREFLAG=1 THEN'高压' else TO_CHAR(SUBSTR(GROUTINGLINECODE, 1, 2)) END AS 部门
                                         FROM  TP_PC_GROUTINGLINE
                                         ),基础数据 AS 
-                                        (
-                                        SELECT
-                                        		GDL.GROUTINGLINEID,
+                                        ( SELECT
+									pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE 缺陷编码,缺陷类别,PROCEDUREID,GOODSLEVELTYPEID
+									FROM(
+									SELECT
+										工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
+									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+										FROM(
+									 SELECT
+											
                                         	PDC.USERCODE AS 工号,
-                                        	STF.STAFFNAME AS 姓名,GD.GOODSCODE AS 产品编码,
+                                        	STF.STAFFNAME AS 姓名,
+											GD.GOODSCODE AS 产品编码,
                                         	GD.GOODSNAME AS 产品名称,
                                         	GD.GOODSSPECIFICATION AS 产品规格,
                                         	MD.DICTIONARYVALUE AS 釉色,
@@ -71,46 +90,44 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	PD.BARCODE 出窑条码,
                                         	DF.BARCODE 缺陷条码,
                                         	DF.DEFECTID 缺陷ID,
-											DF.DEFECTCODE 缺陷编码
-                                        FROM
-                                        	TP_PM_PRODUCTIONDATA PD
+											DF.DEFECTCODE ,
+											MDF.DEFECTTYPEID 缺陷类别,
+											PDC.PROCEDUREID,
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                        	                                        FROM
+                                          	TP_PM_PRODUCTIONDATA PD
                                         	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
                                         	LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
                                         	LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
                                         	LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID 
                                         	AND MD.DICTIONARYTYPE = 'TPC002'
                                         	LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID
-                                        	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE AND DF.PROCEDUREID NOT IN(61,28)   AND DF.DEFECTID IN (
-												SELECT   DISTINCT  	 MDF.DEFECTID
-																  FROM
-																      TP_MST_DEFECT MDF 
-																  WHERE
-																      MDF.DEFECTTYPEID = 1 
-																      AND MDF.VALUEFLAG = 1 AND MDF.DEFECTCODE NOT IN  ('001','002','1','2','3') )  AND DF.VALUEFLAG=1
+                                        	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE AND DF.PROCEDUREID NOT IN(61,28)   
+											AND DF.DEFECTID IN ( SELECT   DISTINCT  	 MDF.DEFECTID  FROM  TP_MST_DEFECT MDF  
+											WHERE MDF.DEFECTTYPEID = 1 AND MDF.VALUEFLAG = 1 AND MDF.DEFECTCODE NOT IN  ('001','002','1','2','3') )  AND DF.VALUEFLAG=1
+											LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID		
 											INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (	40,6,31)AND PDC.VALUEFLAG=1
 											LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
 											LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
-                                        WHERE
-                                        	PD.PROCEDUREID IN ( 16) 
+											LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID=60 AND PDS.VALUEFLAG=1
+                                            WHERE
+                                        	PD.PROCEDUREID IN ( 16)  AND PD.VALUEFLAG = 1
                                            AND PD.CREATETIME >= @DATEBEGIN@
-                                           AND PD.CREATETIME < @DATEEND@ 
-                                        	 
-                                        	AND PD.VALUEFLAG = 1
-										GROUP BY GDL.GROUTINGLINEID,
-                                        	PDC.USERCODE ,
-                                        	STF.STAFFNAME ,GD.GOODSCODE,
-                                        	GD.GOODSNAME ,
-                                        	GD.GOODSSPECIFICATION ,
-                                        	MD.DICTIONARYVALUE ,
-                                        	LG.LOGONAME ,
-                                        	PD.BARCODE ,
-                                        	DF.BARCODE ,DF.DEFECTID,DF.DEFECTCODE
+                                           AND PD.CREATETIME <= @DATEEND@ 
+										 )) pd
+																 
+							
+									
                                         )
                                         SELECT * FROM(
                                         SELECT
-                                         GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
-                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 THEN'总计'
-                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=31 THEN'小计'ELSE NULL END AS 统计方式,
+                                         GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
+                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 THEN'总计'
+                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 统计方式,
 										TO_CHAR(基础数据.工号)工号,
                                         TO_CHAR(基础数据.姓名)姓名,
 										TO_CHAR(基础数据.产品编码)产品编码,
@@ -119,18 +136,22 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
+										TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (基础数据.缺陷类别 =1) THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+										DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (基础数据.缺陷类别 = 1) THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+											TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (基础数据.缺陷类别 = 1 OR 基础数据.缺陷ID = 126) THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+											DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
+					
                                         TO_CHAR(COUNT(DISTINCT 缺陷条码)) 缺陷量,
                                         TO_CHAR( (COUNT(DISTINCT 缺陷条码)/COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
                                         {DEFECT}
                                         FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
                                         LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
                                         AND MDF.DEFECTTYPEID = 1 
                                               GROUP BY
 												Grouping sets ( ( 
 																	基础数据.工号,
 																	基础数据.姓名,
-																	部门.部门,基础数据.产品编码,
+																	基础数据.产品编码,
 																	基础数据.产品名称,
 																	基础数据.产品规格,
 																	基础数据.釉色,
@@ -142,7 +163,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																	'',
 																	'',
 																	'',
-																	'',
+																	'','','',
 																	'',
 																	'',
 																	'',
@@ -151,7 +172,6 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																	'',
 																	{DEFECTSUM}  
 															FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
                                         LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
                                         AND MDF.DEFECTTYPEID = 1 
 		)  ORDER BY 姓名,GID,统计方式

+ 44 - 27
wwwroot/mes/rpt/rpt215/rpt.ashx

@@ -52,27 +52,51 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
-
+				string sumdefectnames = "";
+                DataTable dtnames = conn.ExecuteDatatable(@"SELECT
+														DISTINCT MDF.DEFECTCODE AS DC,	MDF.DEFECTNAME  AS DEFECTCODE,
+	                            MDF.DEFECTNAME ,MDF.DEFECTID
+															 FROM
+	                            TP_MST_DEFECT MDF 
+                          where DEFECTTYPEID=4  ORDER BY  MDF.DEFECTID");
+                for (int i = 0; i < dtnames.Rows.Count; i++) {
+                    if (i > 0) sumdefectnames += ",";
+                    sumdefectnames += dtnames.Rows[i]["DEFECTCODE"].ToString()+" AS "+dtnames.Rows[i]["DEFECTNAME"].ToString();
+                }
 
 				string sqlStr = @"WITH 基础数据 AS 
                                         (
-                                      SELECT
-                                        	
+                                      
+                                          SELECT
+									pd.GROUTINGLINEID,pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE 缺陷编码,缺陷类别,工序 AS 工序,GOODSLEVELTYPEID
+									FROM(
+									SELECT
+										GROUTINGLINEID,工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,工序,
+									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+										FROM(
+									 SELECT
+											GDL.GROUTINGLINEID,
                                         	CASE  WHEN  PDC.PROCEDUREID=41 THEN 'Y26'  ELSE TO_CHAR(STF.STAFFCODE) END  AS 工号,
                                         	CASE  WHEN  PDC.PROCEDUREID=41 THEN '李跃'  ELSE TO_CHAR(STF.STAFFNAME) END    AS 姓名,
-																					jobs.JOBSNAME,jobs.JOBSID,
-																					GD.GOODSCODE AS 产品编码,
+											GD.GOODSCODE AS 产品编码,
                                         	GD.GOODSNAME AS 产品名称,
                                         	GD.GOODSSPECIFICATION AS 产品规格,
                                         	MD.DICTIONARYVALUE AS 釉色,
                                         	LG.LOGONAME AS 商标,
                                         	PD.BARCODE 出窑条码,
                                         	DF.BARCODE 缺陷条码,
+                                        	DF.DEFECTID 缺陷ID,
+											DF.DEFECTCODE ,
+											MDF.DEFECTTYPEID 缺陷类别,
 											CASE WHEN  PDC.PROCEDUREID=10 THEN  '人工' 
 												WHEN  PDC.PROCEDUREID=37 THEN  '机械手单柜' 
 												WHEN  PDC.PROCEDUREID=41 THEN  '1拖4机械手'  ELSE NULL END    工序,
-                                        	DF.DEFECTID 缺陷ID,	df.DEFECTCODE 缺陷编码
-                                        FROM
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                        	                                        FROM
                                         	TP_PM_PRODUCTIONDATA PD
                                         	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
                                         	LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
@@ -82,30 +106,18 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID
                                         	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE AND DF.PROCEDUREID NOT IN(61,28)   AND DF.DEFECTID IN (
 																										SELECT  DISTINCT 		 MDF.DEFECTID  FROM TP_MST_DEFECT MDF where DEFECTTYPEID=4 )  AND DF.VALUEFLAG=1
+											LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID											
 											INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (	10,37,41) AND PDC.VALUEFLAG=1
 											LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
 											LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
 											LEFT JOIN TP_MST_JOBS jobs ON jobs.JOBSID=stf.JOBS 
-                                        WHERE
-                                        	PD.PROCEDUREID IN ( 16) AND STF.JOBS IN(8,20,32)
+											LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID=60 AND PDS.VALUEFLAG=1
+                                            WHERE
+                                        	PD.PROCEDUREID IN ( 16)  AND PD.VALUEFLAG = 1
                                            AND PD.CREATETIME >= @DATEBEGIN@
                                            AND PD.CREATETIME < @DATEEND@  
-                                        	AND PD.VALUEFLAG = 1
-										GROUP BY 
-                                        	STF.STAFFCODE  ,
-                                        	STF.STAFFNAME ,
-											GD.GOODSCODE,
-                                        	GD.GOODSNAME ,
-                                        	GD.GOODSSPECIFICATION ,
-                                        	MD.DICTIONARYVALUE ,
-                                        	LG.LOGONAME ,
-											jobs.JOBSID,
-                                        	PD.BARCODE ,
-											PDC.USERCODE,	
-											jobs.JOBSNAME,
-                                        	DF.BARCODE ,
-											PDC.PROCEDUREID,
-											DF.DEFECTID	,df.DEFECTCODE 
+										 )) pd
+																 
                                         )
                                         SELECT * FROM(
                                         SELECT
@@ -114,7 +126,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																						 when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标,基础数据.工序)=127 THEN '总计'
                                         	   when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标,基础数据.工序)=30 THEN'小计'ELSE NULL END AS 统计方式,
 										TO_CHAR(工序) AS 工序,
-                                       TO_CHAR(基础数据.工号) AS 工号,
+                                        TO_CHAR(基础数据.工号) AS 工号,
 										TO_CHAR(基础数据.姓名)姓名,
 										TO_CHAR(基础数据.产品编码)产品编码,
                                         TO_CHAR(基础数据.产品名称)产品名称,
@@ -122,6 +134,11 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
+										TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  基础数据.缺陷类别 =4 THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+                      DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND 基础数据.缺陷类别 =4  THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+	TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND 基础数据.缺陷类别 =4  THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+	DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
+					
 										TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
                                         {DEFECT}
@@ -156,7 +173,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(基础数据.产品规格)产品规格,
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
-                                        '' 出窑量,
+                                        '' 出窑量,''合格量,''合格率,
                                         '' 缺陷量,
                                         '' 缺陷率,
 																				{DEFECTSUM}  

+ 50 - 32
wwwroot/mes/rpt/rpt216/rpt.ashx

@@ -53,27 +53,51 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
-
+				string sumdefectnames = "";
+                DataTable dtnames = conn.ExecuteDatatable(@"SELECT
+														DISTINCT MDF.DEFECTCODE AS DC,	MDF.DEFECTNAME  AS DEFECTCODE,
+	                            MDF.DEFECTNAME ,MDF.DEFECTID
+															 FROM
+	                            TP_MST_DEFECT MDF 
+                            where DEFECTTYPEID=5 or MDF.DEFECTCODE='20' ORDER BY  MDF.DEFECTID");
+                for (int i = 0; i < dtnames.Rows.Count; i++) {
+                    if (i > 0) sumdefectnames += ",";
+                    sumdefectnames += dtnames.Rows[i]["DEFECTCODE"].ToString()+" AS "+dtnames.Rows[i]["DEFECTNAME"].ToString();
+                }
 
 				string sqlStr = @"WITH 基础数据 AS 
                                         (
-                                        SELECT
+                                         SELECT
+									pd.GROUTINGLINEID,pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE 缺陷编码,缺陷类别,PROCEDUREID AS 工序,GOODSLEVELTYPEID
+									FROM(
+									SELECT
+										GROUTINGLINEID,工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
+									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+										FROM(
+									 SELECT
+											GDL.GROUTINGLINEID,
                                         	CASE  WHEN  PDC.PROCEDUREID=41 THEN PDC.USERCODE  ELSE STF.STAFFCODE END  AS 工号,
                                         	STF.STAFFNAME AS 姓名,
-																				  jobs.JOBSNAME,jobs.JOBSID,
-																				  GD.GOODSCODE AS 产品编码,
+											GD.GOODSCODE AS 产品编码,
                                         	GD.GOODSNAME AS 产品名称,
                                         	GD.GOODSSPECIFICATION AS 产品规格,
                                         	MD.DICTIONARYVALUE AS 釉色,
                                         	LG.LOGONAME AS 商标,
                                         	PD.BARCODE 出窑条码,
                                         	DF.BARCODE 缺陷条码,
-																				CASE WHEN  PDC.PROCEDUREID=10 THEN  '人工' 
-																					WHEN  PDC.PROCEDUREID=37 THEN  '机械手单柜' 
-																					WHEN  PDC.PROCEDUREID=41 THEN  '1拖4机械手'  ELSE NULL END    工序,
-                                        	DF.DEFECTID 缺陷ID,	df.DEFECTCODE 缺陷编码
-                                      FROM
-                                        	TP_PM_PRODUCTIONDATA PD
+                                        	DF.DEFECTID 缺陷ID,
+											DF.DEFECTCODE ,
+											MDF.DEFECTTYPEID 缺陷类别,
+											CASE WHEN  PDC.PROCEDUREID=10 THEN  '人工' 
+												WHEN  PDC.PROCEDUREID=37 THEN  '机械手单柜' 
+												WHEN  PDC.PROCEDUREID=41 THEN  '1拖4机械手'  ELSE NULL END    PROCEDUREID,
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                        	                                        FROM
+                                        TP_PM_PRODUCTIONDATA PD
                                         	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
                                         	LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
                                         	LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
@@ -82,30 +106,19 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID
                                         	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE AND DF.PROCEDUREID NOT IN(61,28)  AND DF.DEFECTID IN (
 																								SELECT  DISTINCT 		 MDF.DEFECTID FROM TP_MST_DEFECT MDF  where DEFECTTYPEID=5 or  MDF.DEFECTCODE='20')  AND DF.VALUEFLAG=1
-															INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (10,37,41)AND PDC.VALUEFLAG=1
+											LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID				
+											INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (10,37,41)AND PDC.VALUEFLAG=1
 															LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
 															LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
 															LEFT JOIN TP_MST_JOBS jobs ON jobs.JOBSID=CLS.SJOBSID
-                                        WHERE
-                                        	  PD.PROCEDUREID IN (16) AND STF.JOBS=22
-                                            AND PD.CREATETIME >= @DATEBEGIN@
-                                            AND PD.CREATETIME < @DATEEND@ 
-                                        	  AND PD.VALUEFLAG = 1
-																					GROUP BY 
-																					STF.STAFFCODE  ,
-																					STF.STAFFNAME ,
-																					GD.GOODSCODE,
-																					GD.GOODSNAME ,
-																					GD.GOODSSPECIFICATION ,
-																					MD.DICTIONARYVALUE ,
-																					LG.LOGONAME ,
-																					jobs.JOBSID,
-																					PD.BARCODE ,
-																					PDC.USERCODE,	
-																					jobs.JOBSNAME,
-																					DF.BARCODE ,
-																					PDC.PROCEDUREID,
-																					DF.DEFECTID,	df.DEFECTCODE 
+											LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID=60 AND PDS.VALUEFLAG=1
+                                            WHERE
+                                        	PD.PROCEDUREID IN ( 16)  AND PD.VALUEFLAG = 1 AND STF.JOBS=22
+                                           AND PD.CREATETIME >= @DATEBEGIN@
+                                           AND PD.CREATETIME < @DATEEND@  
+										 )) pd
+																 
+							
                                         )
                                       SELECT * FROM(  
                                         SELECT
@@ -122,6 +135,11 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
+										TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (缺陷类别=5 or  缺陷编码='20')THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+                      DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or  缺陷编码='20')  THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+	TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or  缺陷编码='20')  THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+	DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
+					
                                         TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率, {DEFECT}
                                FROM 基础数据
@@ -150,7 +168,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(基础数据.产品规格)产品规格,
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
-                                        '' 出窑量,
+                                        '' 出窑量,''合格量,''合格率,
                                         '' 缺陷量,
                                         '' 缺陷率,
 																					{DEFECTSUM}  

+ 138 - 98
wwwroot/mes/rpt/rpt217/rpt.ashx

@@ -14,64 +14,101 @@ using DK.XuWei.WebMes;
 
 public class rpt : IHttpHandler, IReadOnlySessionState
 {
-	public void ProcessRequest(HttpContext context)
-	{
-		context.Response.ContentType = "text/plain";
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        string kilproc = "16"; //出窑工序
+        string notInproc = " (61,28)";//排除工序
+        string FunctionalTesting = "60"; //功能检测
+       string defectcode = "'61','62','63','64','65','66','67'";
+        if (context.Request["procedureMaster"] == "回烧") {
+            kilproc = "28";//出窑工序
+            FunctionalTesting = "61";//功能检测
+            notInproc = "(16,60)";//排除工序
+             defectcode = "'061','062','063','064','065','066','067'";
+        }
 
-		using (IDataAccess conn = DataAccess.Create())
-		{
-			//主表
-			if (context.Request["m"].ToString() == "master")
-			{
-				DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
-				DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
-				string defect = "";
-				DataTable dt = conn.ExecuteDatatable(@"	
+        using (IDataAccess conn = DataAccess.Create())
+        {
+            //主表
+            if (context.Request["m"].ToString() == "master")
+            {
+                DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
+                DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
+
+                string defect = "";
+                DataTable dt = conn.ExecuteDatatable(@"	
 							SELECT
 												 DISTINCT MDF.DEFECTCODE AS DC,			 MDF.DEFECTID,
-	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=126 
+	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 
 															THEN  	TO_CHAR(( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''
 	                              ELSE
                                     TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) END' AS DEFECTCODE,
 	                            MDF.DEFECTNAME 
 															FROM TP_MST_DEFECT MDF
-															where DEFECTTYPEID=6 ORDER BY  MDF.DEFECTID");
-				for (int i = 0; i < dt.Rows.Count; i++)
-				{
-					if (i > 0) defect += ",";
-					defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
-				}
+															where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    if (i > 0) defect += ",";
+                    defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
+                }
 
-				string sumdefect = "";
-              DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT
+                string sumdefect = "";
+                DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT
 															 MDF.DEFECTID,
                                                         ' TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) ' AS DEFECTCODE,
 	                                                   MDF.DEFECTNAME 
 								FROM TP_MST_DEFECT MDF
-															where DEFECTTYPEID=6  ORDER BY  MDF.DEFECTID");
+								        where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
                 for (int i = 0; i < dts.Rows.Count; i++) {
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
-
-				string sqlStr = @"WITH 部门 AS (
+                string sumdefectnames = "";
+                DataTable dtnames = conn.ExecuteDatatable(@"SELECT
+														DISTINCT MDF.DEFECTCODE AS DC,	MDF.DEFECTNAME  AS DEFECTCODE,
+	                            MDF.DEFECTNAME ,MDF.DEFECTID
+															 FROM
+	                            TP_MST_DEFECT MDF 
+                            where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
+                for (int i = 0; i < dtnames.Rows.Count; i++) {
+                    if (i > 0) sumdefectnames += ",";
+                    sumdefectnames += dtnames.Rows[i]["DEFECTCODE"].ToString()+" AS "+dtnames.Rows[i]["DEFECTNAME"].ToString();
+                }
+                string sqlStr = @"WITH 部门 AS (
                                         SELECT  GROUTINGLINEID,
                                         CASE WHEN HIGHPRESSUREFLAG=1 THEN'高压' else TO_CHAR(SUBSTR(GROUTINGLINECODE, 1, 2)) END AS 部门
                                         FROM  TP_PC_GROUTINGLINE
                                         ),基础数据 AS 
                                         (
-                                        SELECT
-                                        	GDL.GROUTINGLINEID,
+                                  SELECT
+									pd.GROUTINGLINEID,pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE 缺陷编码,缺陷类别,PROCEDUREID,GOODSLEVELTYPEID
+									FROM(
+									SELECT
+										GROUTINGLINEID,工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
+									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+										FROM(
+									 SELECT
+											GDL.GROUTINGLINEID,
                                         	PDC.USERCODE AS 工号,
-                                        	STF.STAFFNAME AS 姓名,GD.GOODSCODE AS 产品编码,
+                                        	STF.STAFFNAME AS 姓名,
+											GD.GOODSCODE AS 产品编码,
                                         	GD.GOODSNAME AS 产品名称,
                                         	GD.GOODSSPECIFICATION AS 产品规格,
                                         	MD.DICTIONARYVALUE AS 釉色,
                                         	LG.LOGONAME AS 商标,
                                         	PD.BARCODE 出窑条码,
                                         	DF.BARCODE 缺陷条码,
-                                        	DF.DEFECTID 缺陷ID,	df.DEFECTCODE 缺陷编码
-                                        FROM
+                                        	DF.DEFECTID 缺陷ID,
+											DF.DEFECTCODE ,
+											MDF.DEFECTTYPEID 缺陷类别,
+											PDC.PROCEDUREID,
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                        	                                        FROM
                                         	TP_PM_PRODUCTIONDATA PD
                                         	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
                                         	LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
@@ -79,31 +116,27 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID 
                                         	AND MD.DICTIONARYTYPE = 'TPC002'
                                         	LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID
-                                        	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE   AND DF.DEFECTCODE IN('61','62','63','64','65','66','67')  AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN(61,28)
-											INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (	55,13) AND PDC.VALUEFLAG=1
-											LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
-											LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
-                                        WHERE
-                                        	PD.PROCEDUREID IN ( 16) 
+                                        	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE   AND DF.DEFECTCODE IN(" + defectcode + ") AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN"+notInproc+"";
+               sqlStr +=@"                  LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID
+                                            INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN ( 55,13) AND PDC.VALUEFLAG=1
+                                            LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
+                                            LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
+                                            LEFT JOIN TP_MST_JOBS jobs ON jobs.JOBSID=stf.JOBS 
+                                            LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID="+FunctionalTesting+@" AND PDS.VALUEFLAG=1
+                                           WHERE
+                                        	PD.PROCEDUREID =@kilproc@  AND PD.VALUEFLAG = 1 
                                            AND PD.CREATETIME >= @DATEBEGIN@
-                                           AND PD.CREATETIME < @DATEEND@ 
-                                        	
-                                        	AND PD.VALUEFLAG = 1
-																					GROUP BY GDL.GROUTINGLINEID,
-                                        	PDC.USERCODE ,
-                                        	STF.STAFFNAME ,GD.GOODSCODE,
-                                        	GD.GOODSNAME ,
-                                        	GD.GOODSSPECIFICATION ,
-                                        	MD.DICTIONARYVALUE ,
-                                        	LG.LOGONAME ,
-                                        	PD.BARCODE ,
-                                        	DF.BARCODE ,DF.DEFECTID,df.DEFECTCODE
+                                           AND PD.CREATETIME < @DATEEND@  
+										 )) pd
+																 
+								
                                         )
-                                   SELECT * FROM(     
+                                   SELECT * FROM(
                                         SELECT
-                                         GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
-                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 THEN'总计'
-                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=31 THEN'小计'ELSE NULL END AS 统计方式,
+                                         GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
+                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 THEN'总计'
+
+                                             when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 统计方式,
 TO_CHAR(基础数据.工号) 工号,
                                         TO_CHAR(基础数据.姓名)姓名,
 										TO_CHAR(基础数据.产品编码)产品编码,
@@ -112,29 +145,36 @@ TO_CHAR(基础数据.工号) 工号,
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
+                                        TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND   (缺陷编码 IN(" + defectcode + ")"+@")THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+                                        DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@") THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@")  THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+	                                    DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
                                         TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
                                         {DEFECT}
-                                        FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
-                                        AND MDF.DEFECTTYPEID = 1 
+                FROM 基础数据
+                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID
+                                        AND MDF.DEFECTTYPEID = 1
                                              GROUP BY
-												Grouping sets ( ( 
-																	基础数据.工号,
-																	基础数据.姓名,
-																	部门.部门,基础数据.产品编码,
-																	基础数据.产品名称,
-																	基础数据.产品规格,
-																	基础数据.釉色,
-																	基础数据.商标), (基础数据.工号,基础数据.姓名),() )
-																													
-						UNION ALL
-																	SELECT
-																	126 ,'',
-																	'',
+
+                                                Grouping sets ( (
+                                                                    基础数据.工号,
+                                                                    基础数据.姓名,
+                                                                    基础数据.产品编码,
+                                                                    基础数据.产品名称,
+                                                                    基础数据.产品规格,
+                                                                    基础数据.釉色,
+                                                                    基础数据.商标), (基础数据.工号,基础数据.姓名),() )
+
+
+                        UNION ALL
+
+                                                                    SELECT
+
+                                                                    63 ,'',
 																	'',
 																	'',
+																	'','','',
 																	'',
 																	'',
 																	'',
@@ -142,40 +182,40 @@ TO_CHAR(基础数据.工号) 工号,
 																	'',
 																	'',
 																	'',
-																	{DEFECTSUM}  
-															FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
+																	{DEFECTSUM}
+                FROM 基础数据
+                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID
                                       
 		) ORDER BY 姓名,GID,统计方式
 
 ".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);
-				//获取查询条件
-				List<CDAParameter> sqlPara = new List<CDAParameter>();
-				sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
-				sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
-				sqlPara.Add(new CDAParameter("GROUTINGLINECODE", context.Request["GROUTINGLINECODE"], DataType.NVarChar));
-				//获取分页参数
-				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"]) : 10000;
-				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"] : "";
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("kilproc", Convert.ToInt32(kilproc), DataType.Int32));
+                sqlPara.Add(new CDAParameter("GROUTINGLINECODE", context.Request["GROUTINGLINECODE"], DataType.NVarChar));
+                //获取分页参数
+                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"]) : 10000;
+                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 d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
-				d.Columns.Remove("GID");//移除GID列
-				string jsonStr = new JsonResult(d) { total = total }.ToJson();
-				context.Response.Write(jsonStr);
-			}
-		}
-	}
+                //获取分页数据    
+                int total = 0;
+                DataTable d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                d.Columns.Remove("GID");//移除GID列
+                string jsonStr = new JsonResult(d) { total = total }.ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
 
-	public bool IsReusable
-	{
-		get
-		{
-			return false;
-		}
-	}
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
 }

+ 22 - 14
wwwroot/mes/rpt/rpt217/rpt_index.html

@@ -25,6 +25,12 @@
                         <input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
                         截止日期:
                         <input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
+                        数据源:
+                        <input class="easyui-combobox" id="procedureMaster" name="procedureMaster" data-options="required:true,prompt:'请选择...',tipPosition:'top',
+		   data:[
+		   {'text':'回烧','value':'回烧'},
+		   {'text':'本烧','value':'本烧'},
+		   ],valueField:'value',textField:'text',panelHeight:'200px',editable:'true'" style="width:160px;height:32px;">
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
                     </div>
@@ -64,21 +70,23 @@
 
         //搜索提交
         function tbSearchSubmit() {
-            $('#DataGridMaster').datagridLoad({
-                title: '',
-                idField: 'SID',
-                queryParams: $('#ffMaster').serializeJson(),
-                url: 'rpt.ashx?m=master&id=' + request('id'),
-                fixWidth: 160,
-                mergeWidth: 100,
-                splitChar: '_',
-                columnMenu: '#btnColumnMenu',
-                columnMoving: true,
-                pagination: true,
-                pagelist: [10000, 50, 100, 50, 1000, 5000],
-                pageSize: 10000
+            if ($('#ffMaster').form("validate")) {
+                $('#DataGridMaster').datagridLoad({
+                    title: '',
+                    idField: 'SID',
+                    queryParams: $('#ffMaster').serializeJson(),
+                    url: 'rpt.ashx?m=master&id=' + request('id'),
+                    fixWidth: 160,
+                    mergeWidth: 100,
+                    splitChar: '_',
+                    columnMenu: '#btnColumnMenu',
+                    columnMoving: true,
+                    pagination: true,
+                    pagelist: [10000, 50, 100, 50, 1000, 5000],
+                    pageSize: 10000
 
-            });
+                });
+            }
         }
 
         //导出

+ 71 - 39
wwwroot/mes/rpt/rpt218/rpt.ashx

@@ -17,9 +17,18 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 	public void ProcessRequest(HttpContext context)
 	{
 		context.Response.ContentType = "text/plain";
-
+			 string kilproc = "16"; //出窑工序
+        string notInproc = " (61,28)";//排除工序
+        string FunctionalTesting = "60"; //功能检测
+		string defectcode = "'69','70','71','43','73','74','75','76','77','78','79','80','43'";
+        if (context.Request["procedureMaster"] == "回烧") {
+            kilproc = "28";//出窑工序
+            FunctionalTesting = "61";//功能检测
+            notInproc = "(16,60)";//排除工序
+			defectcode = "'069','070','071','43','073','074','075','076','077','078','079','080'";
+        }
 		using (IDataAccess conn = DataAccess.Create())
-		{
+		{ 
 			//主表
 			if (context.Request["m"].ToString() == "master")
 			{
@@ -29,13 +38,13 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				DataTable dt = conn.ExecuteDatatable(@"		
 							SELECT
 												 DISTINCT MDF.DEFECTCODE AS DC,			 MDF.DEFECTID,
-	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=126 
+	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 
 															THEN  	TO_CHAR(( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''
 	                              ELSE
                                     TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) END' AS DEFECTCODE,
 	                            MDF.DEFECTNAME 
 															FROM TP_MST_DEFECT MDF
-															where MDF.VALUEFLAG=1 AND( MDF.DEFECTTYPEID=7 or  MDF.DEFECTCODE=43) ORDER BY  MDF.DEFECTID");
+															where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
 				for (int i = 0; i < dt.Rows.Count; i++)
 				{
 					if (i > 0) defect += ",";
@@ -45,24 +54,40 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				string sumdefect = "";
               DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT
 															 MDF.DEFECTID,
-                                                        '
-  TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) )' AS DEFECTCODE,
+                                                        'TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) )' AS DEFECTCODE,
 	                                                   MDF.DEFECTNAME 
 								FROM TP_MST_DEFECT MDF
-															where MDF.VALUEFLAG=1 AND(DEFECTTYPEID=7 or  MDF.DEFECTCODE=43)  ORDER BY  MDF.DEFECTID");
+														where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
                 for (int i = 0; i < dts.Rows.Count; i++) {
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
-
+				string sumdefectnames = "";
+                DataTable dtnames = conn.ExecuteDatatable(@"SELECT
+														DISTINCT MDF.DEFECTCODE AS DC,	MDF.DEFECTNAME  AS DEFECTCODE,
+	                            MDF.DEFECTNAME ,MDF.DEFECTID
+															 FROM
+	                            TP_MST_DEFECT MDF 
+                             where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
+                for (int i = 0; i < dtnames.Rows.Count; i++) {
+                    if (i > 0) sumdefectnames += ",";
+                    sumdefectnames += dtnames.Rows[i]["DEFECTCODE"].ToString()+" AS "+dtnames.Rows[i]["DEFECTNAME"].ToString();
+                }
 				string sqlStr = @"WITH 部门 AS (
                                         SELECT  GROUTINGLINEID,
                                         CASE WHEN HIGHPRESSUREFLAG=1 THEN'高压' else TO_CHAR(SUBSTR(GROUTINGLINECODE, 1, 2)) END AS 部门
                                         FROM  TP_PC_GROUTINGLINE
                                         ),基础数据 AS 
                                         (
-                                         SELECT		DISTINCT PD.BARCODE 出窑条码,
-                                        	GDL.GROUTINGLINEID,
+                                        SELECT
+									pd.GROUTINGLINEID,pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE 缺陷编码,缺陷类别,PROCEDUREID,GOODSLEVELTYPEID
+									FROM(
+									SELECT
+										GROUTINGLINEID,工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
+									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+										FROM(
+									 SELECT
+											GDL.GROUTINGLINEID,
                                         	PDC.USERCODE AS 工号,
                                         	STF.STAFFNAME AS 姓名,
 											GD.GOODSCODE AS 产品编码,
@@ -70,9 +95,18 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	GD.GOODSSPECIFICATION AS 产品规格,
                                         	MD.DICTIONARYVALUE AS 釉色,
                                         	LG.LOGONAME AS 商标,
+                                        	PD.BARCODE 出窑条码,
                                         	DF.BARCODE 缺陷条码,
-											DF.DEFECTID 缺陷ID,	df.DEFECTCODE 缺陷编码
-                                        FROM
+                                        	DF.DEFECTID 缺陷ID,
+											DF.DEFECTCODE ,
+											MDF.DEFECTTYPEID 缺陷类别,
+											PDC.PROCEDUREID,
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                        	                                        FROM
                                         	TP_PM_PRODUCTIONDATA PD
                                         	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
                                         	LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
@@ -80,57 +114,55 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	LEFT JOIN TP_MST_DataDictionary MD ON GDL.GLAZETYPEID = MD.DICTIONARYID 
                                         	AND MD.DICTIONARYTYPE = 'TPC002'
                                         	LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID
-                                        	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE AND DF.PROCEDUREID NOT IN(61,28)  AND DF.DEFECTCODE IN (SELECT DISTINCT  MDF.DEFECTCODE
-																							  FROM TP_MST_DEFECT MDF where MDF.VALUEFLAG=1 AND( DEFECTTYPEID=7 or  MDF.DEFECTCODE='43' ) )  AND DF.VALUEFLAG=1
+                                        	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  
+											AND DF.DEFECTCODE IN (SELECT DISTINCT  MDF.DEFECTCODE
+											FROM TP_MST_DEFECT MDF where MDF.VALUEFLAG=1 AND MDF.DEFECTCODE IN("+defectcode+") ) AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN"+notInproc+"";
+               sqlStr +=@"					LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID
 											INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (39,57) AND PDC.VALUEFLAG=1
 											LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
 											LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
-                                        WHERE
-                                        		PD.PROCEDUREID IN ( 16) 
-											AND PD.CREATETIME >= @DATEBEGIN@
-											AND PD.CREATETIME < @DATEEND@ 
-                                        	 
-                                        	AND PD.VALUEFLAG = 1 
-									GROUP BY  PD.BARCODE,
-                                        	GDL.GROUTINGLINEID,
-                                        	PDC.USERCODE ,
-                                        	STF.STAFFNAME  ,GD.GOODSCODE,
-                                        	GD.GOODSNAME  ,
-                                        	GD.GOODSSPECIFICATION ,
-                                        	MD.DICTIONARYVALUE  ,
-                                        	LG.LOGONAME ,
-                                        	DF.BARCODE ,DF.DEFECTID,df.DEFECTCODE
+											LEFT JOIN TP_MST_JOBS jobs ON jobs.JOBSID=stf.JOBS 
+                                            LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID="+FunctionalTesting+@" AND PDS.VALUEFLAG=1
+                                           WHERE
+                                        	PD.PROCEDUREID =@kilproc@  AND PD.VALUEFLAG = 1 
+                                           AND PD.CREATETIME >= @DATEBEGIN@
+                                           AND PD.CREATETIME < @DATEEND@  
+										 )) pd
+							
                                         )
                                  SELECT * FROM(       
                                       SELECT
-                                         GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
-                                        CASE when  GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) =127 THEN'总计'
-																						 WHEN  GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=31 THEN '小计'
-																						 WHEN  GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=126 THEN '合计'
-                                        	 ELSE NULL END AS 统计方式,TO_CHAR(基础数据.工号) AS 工号,
-										TO_CHAR(基础数据.姓名)姓名,
+                                         GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
+                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 THEN'总计'
+
+                                             when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 统计方式,
+TO_CHAR(基础数据.工号) 工号,
+                                        TO_CHAR(基础数据.姓名)姓名,
 										TO_CHAR(基础数据.产品编码)产品编码,
                                         TO_CHAR(基础数据.产品名称)产品名称,
                                         TO_CHAR(基础数据.产品规格)产品规格,
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
+                                        TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (缺陷编码 IN(" + defectcode + ")"+@")THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+                                        DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@") THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@")  THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+	                                    DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
                                          TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
 										{DEFECT}
                                         FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
                                         LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
                                         AND MDF.DEFECTTYPEID = 1 
                                               GROUP BY
-												Grouping sets ( ( 基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品编码,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标),(基础数据.工号,基础数据.姓名) ,())
+												Grouping sets ( ( 基础数据.工号,基础数据.姓名,基础数据.产品编码,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标),(基础数据.工号,基础数据.姓名) ,())
 																							
 						UNION ALL
 																	SELECT
 																	126 ,'',
 																	'',
 																	'',
-																	'',
+																	'','','',
 																	'',
 																	'',
 																	'',
@@ -140,7 +172,6 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																	'',
 																	{DEFECTSUM}  
 															FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
                                         LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
                                        
 		) ORDER BY 姓名,GID ".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);
@@ -149,6 +180,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 				List<CDAParameter> sqlPara = new List<CDAParameter>();
 				sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
 				sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
+					sqlPara.Add(new CDAParameter("kilproc", Convert.ToInt32(kilproc), DataType.Int32));
 				sqlPara.Add(new CDAParameter("GROUTINGLINECODE", context.Request["GROUTINGLINECODE"], DataType.NVarChar));
 				//获取分页参数
 				int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;

+ 23 - 14
wwwroot/mes/rpt/rpt218/rpt_index.html

@@ -28,6 +28,13 @@
                         <input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
                         截止日期:
                         <input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
+                        数据源:
+                        <input class="easyui-combobox" id="procedureMaster" name="procedureMaster" data-options="required:true,prompt:'请选择...',tipPosition:'top',
+		   data:[
+		   {'text':'回烧','value':'回烧'},
+		   {'text':'本烧','value':'本烧'},
+		   ],valueField:'value',textField:'text',panelHeight:'200px',editable:'true'" style="width:160px;height:32px;">
+
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
                     </div>
@@ -67,21 +74,23 @@
 
         //搜索提交
         function tbSearchSubmit() {
-            $('#DataGridMaster').datagridLoad({
-                title: '',
-                idField: 'SID',
-                queryParams: $('#ffMaster').serializeJson(),
-                url: 'rpt.ashx?m=master&id=' + request('id'),
-                fixWidth: 160,
-                mergeWidth: 100,
-                splitChar: '_',
-                columnMenu: '#btnColumnMenu',
-                columnMoving: true,
-                pagination: true,
-                pagelist: [10000, 50, 100, 50, 1000, 5000],
-                pageSize: 10000
+            if ($('#ffMaster').form("validate")) {
+                $('#DataGridMaster').datagridLoad({
+                    title: '',
+                    idField: 'SID',
+                    queryParams: $('#ffMaster').serializeJson(),
+                    url: 'rpt.ashx?m=master&id=' + request('id'),
+                    fixWidth: 160,
+                    mergeWidth: 100,
+                    splitChar: '_',
+                    columnMenu: '#btnColumnMenu',
+                    columnMoving: true,
+                    pagination: true,
+                    pagelist: [10000, 50, 100, 50, 1000, 5000],
+                    pageSize: 10000
 
-            });
+                });
+            }
         }
         //导出
 

+ 122 - 87
wwwroot/mes/rpt/rpt219/rpt.ashx

@@ -14,65 +14,100 @@ using DK.XuWei.WebMes;
 
 public class rpt : IHttpHandler, IReadOnlySessionState
 {
-	public void ProcessRequest(HttpContext context)
-	{
-		context.Response.ContentType = "text/plain";
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        string kilproc = "16"; //出窑工序
+        string notInproc = " (61,28)";//排除工序
+        string FunctionalTesting = "60"; //功能检测
+        string defectcode = "'83','84'";
+        if (context.Request["procedureMaster"] == "回烧") {
+            kilproc = "28";//出窑工序
+            FunctionalTesting = "61";//功能检测
+            notInproc = "(16,60)";//排除工序
+            defectcode = "'0083','0084'";
+        }
 
-
-		using (IDataAccess conn = DataAccess.Create())
-		{
-			//主表
-			if (context.Request["m"].ToString() == "master")
-			{
-				DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
-				DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
-				string defect = "";
-				DataTable dt = conn.ExecuteDatatable(@"	SELECT  DISTINCT
+        using (IDataAccess conn = DataAccess.Create())
+        {
+            //主表
+            if (context.Request["m"].ToString() == "master")
+            {
+                DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
+                DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
+                string defect = "";
+                DataTable dt = conn.ExecuteDatatable(@"	SELECT  DISTINCT
 															 MDF.DEFECTID,
-	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 
+	                            'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 
 															THEN  TO_CHAR(  ( SUM( CASE WHEN 基础数据.缺陷ID = '''||MDF.DEFECTID||''' THEN 1 ELSE 0 END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''
 	                              ELSE
                                     TO_CHAR(SUM( CASE WHEN 基础数据.缺陷ID = '''||MDF.DEFECTID||''' THEN 1 ELSE 0 END )) END' AS DEFECTCODE,
 	                            MDF.DEFECTNAME 
 												 FROM TP_MST_DEFECT MDF
-															where DEFECTTYPEID=8 ORDER BY  MDF.DEFECTID");
-				for (int i = 0; i < dt.Rows.Count; i++)
-				{
-					if (i > 0) defect += ",";
-					defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
-				}
+												  where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    if (i > 0) defect += ",";
+                    defect += dt.Rows[i]["DEFECTCODE"].ToString() + " " + dt.Rows[i]["DEFECTNAME"].ToString();
+                }
 
-				string sumdefect = "";
-              DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT
+                string sumdefect = "";
+                DataTable dts = conn.ExecuteDatatable(@"SELECT DISTINCT
 															 MDF.DEFECTID,
                                                          ' TO_CHAR( COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) ' AS DEFECTCODE,
 	                                                   MDF.DEFECTNAME 
                             FROM TP_MST_DEFECT MDF
-															where DEFECTTYPEID=8 ORDER BY  MDF.DEFECTID");
+														  where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
                 for (int i = 0; i < dts.Rows.Count; i++) {
                     if (i > 0) sumdefect += ",";
                     sumdefect += dts.Rows[i]["DEFECTCODE"].ToString()+" "+dts.Rows[i]["DEFECTNAME"].ToString();
                 }
 
-
-				string sqlStr = @"WITH 部门 AS (
+                string sumdefectnames = "";
+                DataTable dtnames = conn.ExecuteDatatable(@"SELECT
+														DISTINCT MDF.DEFECTCODE AS DC,	MDF.DEFECTNAME  AS DEFECTCODE,
+	                            MDF.DEFECTNAME ,MDF.DEFECTID
+															 FROM
+	                            TP_MST_DEFECT MDF 
+                             where MDF.DEFECTCODE IN("+defectcode+") ORDER BY  MDF.DEFECTID DESC");
+                for (int i = 0; i < dtnames.Rows.Count; i++) {
+                    if (i > 0) sumdefectnames += ",";
+                    sumdefectnames += dtnames.Rows[i]["DEFECTCODE"].ToString()+" AS "+dtnames.Rows[i]["DEFECTNAME"].ToString();
+                }
+                string sqlStr = @"WITH 部门 AS (
                                         SELECT  GROUTINGLINEID,
                                         CASE WHEN HIGHPRESSUREFLAG=1 THEN'高压' else TO_CHAR(SUBSTR(GROUTINGLINECODE, 1, 2)) END AS 部门
                                         FROM  TP_PC_GROUTINGLINE
                                         ),基础数据 AS 
                                         (
-                                       SELECT		
-											DISTINCT PD.BARCODE 出窑条码,
-                                        	GDL.GROUTINGLINEID,
+                                       SELECT
+									pd.GROUTINGLINEID,pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE 缺陷编码,缺陷类别,PROCEDUREID,GOODSLEVELTYPEID
+									FROM(
+									SELECT
+										GROUTINGLINEID,工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
+									row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums 
+										FROM(
+									 SELECT
+											GDL.GROUTINGLINEID,
                                         	PDC.USERCODE AS 工号,
-                                        	STF.STAFFNAME AS 姓名,GD.GOODSCODE AS 产品编码,
+                                        	STF.STAFFNAME AS 姓名,
+											GD.GOODSCODE AS 产品编码,
                                         	GD.GOODSNAME AS 产品名称,
                                         	GD.GOODSSPECIFICATION AS 产品规格,
                                         	MD.DICTIONARYVALUE AS 釉色,
                                         	LG.LOGONAME AS 商标,
+                                        	PD.BARCODE 出窑条码,
                                         	DF.BARCODE 缺陷条码,
-											DF.DEFECTID 缺陷ID,	df.DEFECTCODE 缺陷编码
-                                        FROM
+                                        	DF.DEFECTID 缺陷ID,
+											DF.DEFECTCODE ,
+											MDF.DEFECTTYPEID 缺陷类别,
+											PDC.PROCEDUREID,
+											CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+											WHEN PD.GOODSLEVELTYPEID  < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
+											WHEN PDS.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+											WHEN PD.GOODSLEVELTYPEID  = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+											ELSE NULL END GOODSLEVELTYPEID
+                                        	                                        FROM
                                         	TP_PM_PRODUCTIONDATA PD
                                         	LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
                                         	LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
@@ -83,32 +118,29 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         	LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE  AND DF.DEFECTID IN (
 													SELECT  DISTINCT 		 MDF.DEFECTID
 															 FROM TP_MST_DEFECT MDF
-															where DEFECTTYPEID=8 )  AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN(61,28) 
+															where MDF.DEFECTCODE IN("+defectcode+") )  	AND DF.VALUEFLAG=1  AND DF.PROCEDUREID NOT IN"+notInproc;
+                sqlStr += @"                LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID               
 											INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE    AND PDC.PROCEDUREID IN (14,56) AND PDC.VALUEFLAG=1
 											LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
 											LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
-                                        WHERE
-                                        		PD.PROCEDUREID IN ( 16) 
+                                            LEFT JOIN TP_MST_JOBS jobs ON jobs.JOBSID=stf.JOBS 
+                                            LEFT  JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID="+FunctionalTesting+@"  AND PDS.VALUEFLAG=1
+                                       WHERE
+                                        	PD.PROCEDUREID =@kilproc@  AND PD.VALUEFLAG = 1 
                                            AND PD.CREATETIME >= @DATEBEGIN@
-                                           AND PD.CREATETIME < @DATEEND@ 
-                                           
-                                        	AND PD.VALUEFLAG = 1
-											GROUP BY  PD.BARCODE,
-                                        	GDL.GROUTINGLINEID,
-                                        	PDC.USERCODE ,
-                                        	STF.STAFFNAME  ,GD.GOODSCODE,
-                                        	GD.GOODSNAME  ,
-                                        	GD.GOODSSPECIFICATION ,
-                                        	MD.DICTIONARYVALUE  ,
-                                        	LG.LOGONAME ,
-                                        	DF.BARCODE ,DF.DEFECTID,df.DEFECTCODE
+                                           AND PD.CREATETIME < @DATEEND@  
+										 )) pd
+																 
+								
                                         )
-                               SELECT * FROM(         
-                                        SELECT
-                                         GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
-                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=127 THEN'总计'
-                                        	 when GROUPING_ID(基础数据.工号,基础数据.姓名,部门.部门,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=31 THEN'小计'ELSE NULL END AS 统计方式,
-										TO_CHAR(基础数据.工号)工号,
+
+                SELECT * FROM(
+                              SELECT
+                                         GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标) AS GID,
+                                        CASE when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=63 THEN'总计'
+
+                                             when GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=15 THEN'小计'ELSE NULL END AS 统计方式,
+TO_CHAR(基础数据.工号) 工号,
                                         TO_CHAR(基础数据.姓名)姓名,
 										TO_CHAR(基础数据.产品编码)产品编码,
                                         TO_CHAR(基础数据.产品名称)产品名称,
@@ -116,18 +148,21 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
+                                        TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (缺陷编码 IN(" + defectcode + ")"+@")THEN 基础数据.出窑条码 ELSE NULL END )) 合格量,
+                                        DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@") THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
+	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@")  THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) / 
+	                                    DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 合格率,
                                         TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率,
                                         {DEFECT}
                                         FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
-                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
-                                        AND MDF.DEFECTTYPEID = 1 
-                                             GROUP BY
+                                        LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID ".Replace("{DEFECT}", defect);
+                sqlStr +=@"  AND MDF.DEFECTCODE IN("+defectcode+")";
+                sqlStr +=@"           GROUP BY
 												Grouping sets ( ( 
 																	基础数据.工号,
 																	基础数据.姓名,
-																	部门.部门,基础数据.产品编码,
+																	基础数据.产品编码,
 																	基础数据.产品名称,
 																	基础数据.产品规格,
 																	基础数据.釉色,
@@ -135,10 +170,10 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																													
 						UNION ALL
 																	SELECT
-																	126 ,'',
-																	'',
+																	63 ,'',
 																	'',
 																	'',
+																	'','','',
 																	'',
 																	'',
 																	'',
@@ -148,39 +183,39 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 																	'',
 																{DEFECTSUM}              
 															FROM 基础数据
-                                        LEFT JOIN 部门 ON 部门.GROUTINGLINEID=基础数据.GROUTINGLINEID
                                         LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID 
                                         
 		)ORDER BY 姓名,GID
 
-".Replace("{DEFECTSUM}",sumdefect).Replace("{DEFECT}", defect);
+".Replace("{DEFECTSUM}",sumdefect);
 
-				//获取查询条件
-				List<CDAParameter> sqlPara = new List<CDAParameter>();
-				sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
-				sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
-				sqlPara.Add(new CDAParameter("GROUTINGLINECODE", context.Request["GROUTINGLINECODE"], DataType.NVarChar));
-				//获取分页参数
-				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"]) : 10000;
-				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"] : "";
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("kilproc", Convert.ToInt32(kilproc), DataType.Int32));
+                sqlPara.Add(new CDAParameter("GROUTINGLINECODE", context.Request["GROUTINGLINECODE"], DataType.NVarChar));
+                //获取分页参数
+                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"]) : 10000;
+                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 d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
-				d.Columns.Remove("GID");//移除GID列
-				string jsonStr = new JsonResult(d) { total = total }.ToJson();
-				context.Response.Write(jsonStr);
-			}
-		}
-	}
+                //获取分页数据    
+                int total = 0;
+                DataTable d = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+                d.Columns.Remove("GID");//移除GID列
+                string jsonStr = new JsonResult(d) { total = total }.ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
 
-	public bool IsReusable
-	{
-		get
-		{
-			return false;
-		}
-	}
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
 }

+ 23 - 14
wwwroot/mes/rpt/rpt219/rpt_index.html

@@ -28,6 +28,13 @@
                         <input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
                         截止日期:
                         <input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:180px; height:32px;">
+                        数据源:
+                        <input class="easyui-combobox" id="procedureMaster" name="procedureMaster" data-options="required:true,prompt:'请选择...',tipPosition:'top',
+		   data:[
+		   {'text':'回烧','value':'回烧'},
+		   {'text':'本烧','value':'本烧'},
+		   ],valueField:'value',textField:'text',panelHeight:'200px',editable:'true'" style="width:160px;height:32px;">
+
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
                         <a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
                     </div>
@@ -67,21 +74,23 @@
 
         //搜索提交
         function tbSearchSubmit() {
-            $('#DataGridMaster').datagridLoad({
-                title: '',
-                idField: 'SID',
-                queryParams: $('#ffMaster').serializeJson(),
-                url: 'rpt.ashx?m=master&id=' + request('id'),
-                fixWidth: 160,
-                mergeWidth: 100,
-                splitChar: '_',
-                columnMenu: '#btnColumnMenu',
-                columnMoving: true,
-                pagination: true,
-                pagelist: [10000, 50, 100, 50, 1000, 5000],
-                pageSize: 10000
+            if ($('#ffMaster').form("validate")) {
+                $('#DataGridMaster').datagridLoad({
+                    title: '',
+                    idField: 'SID',
+                    queryParams: $('#ffMaster').serializeJson(),
+                    url: 'rpt.ashx?m=master&id=' + request('id'),
+                    fixWidth: 160,
+                    mergeWidth: 100,
+                    splitChar: '_',
+                    columnMenu: '#btnColumnMenu',
+                    columnMoving: true,
+                    pagination: true,
+                    pagelist: [10000, 50, 100, 50, 1000, 5000],
+                    pageSize: 10000
 
-            });
+                });
+            }
         }
 
         //导出

+ 22 - 12
wwwroot/mes/rpt/rpt226/rpt.ashx

@@ -48,7 +48,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         FROM  TP_PC_GROUTINGLINE
                                         ),基础数据 AS 
                                         (
-                                           SELECT
+                                             SELECT DISTINCT
                                                     GL.GROUTINGLINEID,
                                                     PD.BARCODE 出窑条码,
                                                     DF.BARCODE 缺陷条码,
@@ -59,7 +59,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                                     good.GOODSSPECIFICATION AS 产品规格,
                                                     TP_MST_DataDictionary.DICTIONARYVALUE AS 釉色,
                                                     logo.LOGONAME AS 商标,
-                                                    PD.USERCODE AS 工号,
+                                                    PDL.USERCODE AS 工号,
                                                     STF.STAFFNAME AS 姓名
 													FROM
                                                     TP_PM_PRODUCTIONDATA pd
@@ -67,11 +67,16 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                                 INNER JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
                                                 LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=gd.LOGOID
                                                 LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
-												LEFT  JOIN TP_PM_PRODUCTIONDATA PDL ON PDL.BARCODE=PD.BARCODE AND PDL.PROCEDUREID=24
-												LEFT JOIN TP_PM_DEFECT df ON DF.BARCODE=PDL.BARCODE AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(61,28) 
+												LEFT  JOIN (
+												SELECT * FROM(
+                                                   SELECT BARCODE,USERCODE,CLASSESSETTINGID,PROCEDUREID,VALUEFLAG,
+												row_number() over (partition by BARCODE order by CREATETIME DESC ) as rownums 
+												FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID=24 ) WHERE rownums=1
+												            ) PDL ON PDL.BARCODE=PD.BARCODE  AND PDL.VALUEFLAG=1
+												LEFT JOIN TP_PM_DEFECT df ON DF.BARCODE=PDL.BARCODE AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(60,16) 
 												LEFT JOIN TP_MST_DEFECT DEFECT ON DEFECT.DEFECTID=DF.DEFECTID
                                                 LEFT JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.DICTIONARYID=gd.GLAZETYPEID AND TP_MST_DataDictionary.DictionaryType = 'TPC002'
-												LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PD.CLASSESSETTINGID
+												LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDL.CLASSESSETTINGID
                                                 LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
                                                 WHERE PD.PROCEDUREID IN (28) AND PD.VALUEFLAG=1 AND PDL.BARCODE IS NOT NULL
                                                    AND PD.CREATETIME >= @DATEBEGIN@
@@ -118,7 +123,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         FROM  TP_PC_GROUTINGLINE
                                         ),基础数据 AS 
                                         (
-                                           SELECT
+                                           SELECT DISTINCT
                                                     GL.GROUTINGLINEID,
                                                     PD.BARCODE 出窑条码,
                                                     DF.BARCODE 缺陷条码,
@@ -129,19 +134,24 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                                     good.GOODSSPECIFICATION AS 产品规格,
                                                     TP_MST_DataDictionary.DICTIONARYVALUE AS 釉色,
                                                     logo.LOGONAME AS 商标,
-                                                    PD.USERCODE AS 工号,
+                                                    PDL.USERCODE AS 工号,
                                                     STF.STAFFNAME AS 姓名
 													FROM
                                                     TP_PM_PRODUCTIONDATA pd
                                                 LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
-                                                LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=pd.LOGOID
-                                                LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
+                                                INNER JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
+                                                LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=gd.LOGOID
                                                 LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
-												LEFT  JOIN TP_PM_PRODUCTIONDATA PDL ON PDL.BARCODE=PD.BARCODE AND PDL.PROCEDUREID=42
-												LEFT JOIN TP_PM_DEFECT df ON DF.BARCODE=PDL.BARCODE AND DF.VALUEFLAG=1
+												LEFT  JOIN (
+												SELECT * FROM(
+                                                   SELECT BARCODE,USERCODE,CLASSESSETTINGID,PROCEDUREID,VALUEFLAG,
+												row_number() over (partition by BARCODE order by CREATETIME DESC ) as rownums 
+												FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID=42 ) WHERE rownums=1
+												            ) PDL ON PDL.BARCODE=PD.BARCODE  AND PDL.VALUEFLAG=1
+												LEFT JOIN TP_PM_DEFECT df ON DF.BARCODE=PDL.BARCODE AND DF.VALUEFLAG=1 AND DF.PROCEDUREID NOT IN(60,16) 
 												LEFT JOIN TP_MST_DEFECT DEFECT ON DEFECT.DEFECTID=DF.DEFECTID
                                                 LEFT JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.DICTIONARYID=gd.GLAZETYPEID AND TP_MST_DataDictionary.DictionaryType = 'TPC002'
-												LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PD.CLASSESSETTINGID
+												LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDL.CLASSESSETTINGID
                                                 LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
                                                 WHERE PD.PROCEDUREID IN (28) AND PD.VALUEFLAG=1 AND PDL.BARCODE IS NOT NULL
                                                    AND PD.CREATETIME >= @DATEBEGIN@

ファイルの差分が大きいため隠しています
+ 1584 - 1
wwwroot/mes/rpt/rpt304/rpt.ashx


+ 8 - 1
wwwroot/mes/rpt/rpt304/rpt_index.html

@@ -31,6 +31,13 @@
 						<input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:190px; height:32px;">
 						截止日期:
 						<input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width: 190px; height: 32px;">
+						数据源:
+						<input class="easyui-combobox" id="procedureMaster" name="procedureMaster" data-options="required:true,prompt:'请选择...',tipPosition:'top',
+		   data:[
+		   {'text':'冷修','value':'冷修'},
+		   {'text':'回烧','value':'回烧'},
+		   {'text':'本烧','value':'本烧'},
+		   ],valueField:'value',textField:'text',panelHeight:'200px',editable:'true'" style="width:160px;height:32px;">
 						<!--产品名称:<input class="easyui-combobox" id="goodsid" name="goodsid" data-options="required:false,prompt:'',tipPosition:'top',url:'../rpt.ashx?m=getGoods&select=1',method:'get',valueField:'GOODSNAME',textField:'GOODSNAME',panelHeight:'300px',editable:'true',multiple:true" style="width:120px;height:32px;">-->
 						<a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
 						<a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
@@ -206,7 +213,7 @@
 		}
 
         //搜索提交
-        function tbSearchSubmit() {
+		function tbSearchSubmit() {
             $('#DataGridMaster').datagridLoad({
                 title: '',
                 idField: 'SID',

+ 23 - 22
wwwroot/mes/rpt/rpt305/rpt.ashx

@@ -79,7 +79,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 									            TO_CHAR(COUNT( DISTINCT  CASE WHEN DF.DEFECTCODE IN ( '36','37','38','39','40','41','42','43','44') THEN to_char(PD.BARCODE||DF.DEFECTCODE ) ELSE NULL END )) AS 烧成窑缺陷_施釉,
                                                 TO_CHAR(COUNT( DISTINCT  CASE WHEN DF.DEFECTCODE IN ( '47','48','49','50','51','52','53','54','55','56','20','57')AND DF.DEFECTCODE IS NOT NULL AND PD.BARCODE IS NOT NULL  THEN to_char(PD.BARCODE||DF.DEFECTCODE ) ELSE NULL END ))AS 烧成窑缺陷_擦坯,
 												TO_CHAR(COUNT( DISTINCT  CASE WHEN DF.DEFECTCODE IN ( '61','62','63','64','65','66','67') THEN to_char(PD.BARCODE||DF.DEFECTCODE ) ELSE NULL END )) AS 烧成窑缺陷_装窑,
-									            TO_CHAR(COUNT( DISTINCT  CASE WHEN DF.DEFECTCODE IN ( '69','70','71','43','73','74','75','76','77','78','79','80') THEN to_char(PD.BARCODE||DF.DEFECTCODE ) ELSE NULL END ))AS 烧成窑缺陷_烧窑,
+									            TO_CHAR(COUNT( DISTINCT  CASE WHEN PDS.PROCEDUREID IN (39,57) AND DF.DEFECTCODE IN ( '69','70','71','43','73','74','75','76','77','78','79','80') THEN PD.BARCODE ELSE NULL END ))AS 烧成窑缺陷_烧窑,
 									            TO_CHAR(COUNT( DISTINCT  CASE WHEN DF.DEFECTCODE IN ( '83','84')  THEN to_char(PD.BARCODE||DF.DEFECTCODE ) ELSE NULL END )) AS 烧成窑缺陷_出窑,
                                                 COUNT(DISTINCT CASE WHEN  DF.DEFECTCODE IN ('99','100') THEN to_char(PD.BARCODE||DF.DEFECTCODE ) ELSE NULL END) 其他缺陷
                                                 FROM(
@@ -156,9 +156,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(产品名称) AS 产品名称,
                                         TO_CHAR(产品规格) AS 产品规格,
 										TO_CHAR(产品类别) AS 产品类别,
-                                        TO_CHAR(单重) 单重,
+                                       
                                         TO_CHAR(釉色) AS 釉色,
-                                        TO_CHAR(商标) AS 商标,
+                                        TO_CHAR(商标) AS 商标, TO_CHAR(单重) 单重,
                                         TO_CHAR(出窑量_出窑量) AS 出窑量,
                                         TO_CHAR(出窑量_出窑重量) AS 出窑重量,
                                         TO_CHAR(出窑量_产量) AS 产量,
@@ -166,7 +166,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(出窑量_残品) AS 残品,
                                         TO_CHAR(出窑量_残品重量) AS 残品重量,
                                          DECODE( NVL( 出窑量_产量, 0 ), 0, '0%', TO_CHAR( ( NVL( 出窑量_产量, 0 ) / DECODE( NVL( 出窑量_出窑量, 1 ), 0, 1, NVL( 出窑量_出窑量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )  合格率,
-                                        TO_CHAR(原料缺陷) AS 原料缺陷,
+                                       
                                         TO_CHAR(成型缺陷_成A) AS 成型缺陷_成A,
                                         TO_CHAR(成型缺陷_成B) AS 成型缺陷_成B,
                                         TO_CHAR(成型缺陷_成C) AS 成型缺陷_成C,
@@ -178,7 +178,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(烧成窑缺陷_擦坯) AS 烧成窑缺陷_擦坯,
                                         TO_CHAR(烧成窑缺陷_装窑) AS 烧成窑缺陷_装窑,
                                         TO_CHAR(烧成窑缺陷_烧窑) AS 烧成窑缺陷_烧窑,
-                                        TO_CHAR(烧成窑缺陷_出窑) AS 烧成窑缺陷_出窑,
+                                        TO_CHAR(烧成窑缺陷_出窑) AS 烧成窑缺陷_出窑, TO_CHAR(原料缺陷) AS 原料缺陷,
                                         TO_CHAR(其他缺陷) AS 其他缺陷
                                         FROM 数据源
                                           UNION ALL                                    
@@ -195,7 +195,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                     '',
                                     '',
                                     '','','','',
-	                                to_Char(出窑量_出窑量),	
+	                                
 									to_Char(成A出窑量),
 									to_Char(成B出窑量),
 									to_Char(成C出窑量),
@@ -207,7 +207,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 									to_Char(擦坯出窑量),
 									to_Char(装窑出窑量),
 									to_Char(烧窑出窑量),
-									to_Char(卸窑出窑量),
+									to_Char(卸窑出窑量),to_Char(出窑量_出窑量),	
 									to_Char(出窑量_出窑量 )
                                 FROM
 	                                工序对应出窑量
@@ -224,7 +224,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                       '',
                                       '','','','',
                                       '','','','',
-                                      DECODE( NVL(  数据源.原料缺陷, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.原料缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 原料缺陷,
+                                      
 																			
                                       DECODE( NVL(  数据源.成型缺陷_成A, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.成型缺陷_成A, 0 ) / DECODE( NVL( 工序对应出窑量.成A出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.成A出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 成型缺陷_成A,
 																			
@@ -248,7 +248,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                       DECODE( NVL(  数据源.烧成窑缺陷_烧窑, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.烧成窑缺陷_烧窑, 0 ) / DECODE( NVL( 工序对应出窑量.烧窑出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.烧窑出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 烧成窑缺陷_烧窑,
                                       
 									  DECODE( NVL(  数据源.烧成窑缺陷_出窑, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.烧成窑缺陷_出窑, 0 ) / DECODE( NVL( 工序对应出窑量.卸窑出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.卸窑出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 烧成窑缺陷_出窑,
-																			
+									 DECODE( NVL(  数据源.原料缺陷, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.原料缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 原料缺陷,									
                                       DECODE( NVL(  数据源.其他缺陷, 0 ), 0, '0%',TO_CHAR( (    ( NVL(数据源.其他缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 其他缺陷
                                         FROM 数据源
 										LEFT JOIN 工序对应出窑量 ON 1=1
@@ -386,9 +386,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(产品名称) AS 产品名称,
                                         TO_CHAR(产品规格) AS 产品规格,
 										TO_CHAR(产品类别) AS 产品类别,
-                                        TO_CHAR(单重) 单重,
+                                       
                                         TO_CHAR(釉色) AS 釉色,
-                                        TO_CHAR(商标) AS 商标,
+                                        TO_CHAR(商标) AS 商标, TO_CHAR(单重) 单重,
                                         TO_CHAR(出窑量_出窑量) AS 出窑量,
                                         TO_CHAR(出窑量_出窑重量) AS 出窑重量,
                                         TO_CHAR(出窑量_产量) AS 产量,
@@ -396,7 +396,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(出窑量_残品) AS 残品,
                                         TO_CHAR(出窑量_残品重量) AS 残品重量,
                                          DECODE( NVL( 出窑量_产量, 0 ), 0, '0%', TO_CHAR( ( NVL( 出窑量_产量, 0 ) / DECODE( NVL( 出窑量_出窑量, 1 ), 0, 1, NVL( 出窑量_出窑量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )  合格率,
-                                        TO_CHAR(原料缺陷) AS 原料缺陷,
+                                      
                                         TO_CHAR(成型缺陷_成A) AS 成型缺陷_成A,
                                         TO_CHAR(成型缺陷_成B) AS 成型缺陷_成B,
                                         TO_CHAR(成型缺陷_成C) AS 成型缺陷_成C,
@@ -408,7 +408,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(烧成窑缺陷_擦坯) AS 烧成窑缺陷_擦坯,
                                         TO_CHAR(烧成窑缺陷_装窑) AS 烧成窑缺陷_装窑,
                                         TO_CHAR(烧成窑缺陷_烧窑) AS 烧成窑缺陷_烧窑,
-                                        TO_CHAR(烧成窑缺陷_出窑) AS 烧成窑缺陷_出窑,
+                                        TO_CHAR(烧成窑缺陷_出窑) AS 烧成窑缺陷_出窑,  TO_CHAR(原料缺陷) AS 原料缺陷,
                                         TO_CHAR(其他缺陷) AS 其他缺陷
                                         FROM 数据源
                                           UNION ALL                                    
@@ -425,7 +425,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                     '',
                                     '',
                                     '','','','',
-	                                to_Char(出窑量_出窑量),	
+	                                
 									to_Char(成A出窑量),
 									to_Char(成B出窑量),
 									to_Char(成C出窑量),
@@ -437,7 +437,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 									to_Char(擦坯出窑量),
 									to_Char(装窑出窑量),
 									to_Char(烧窑出窑量),
-									to_Char(卸窑出窑量),
+									to_Char(卸窑出窑量),to_Char(出窑量_出窑量),	
 									to_Char(出窑量_出窑量 )
                                 FROM
 	                                工序对应出窑量
@@ -454,7 +454,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                       '',
                                       '','','','',
                                       '','','','',
-                                      DECODE( NVL(  数据源.原料缺陷, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.原料缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 原料缺陷,
+                                     
 																			
                                       DECODE( NVL(  数据源.成型缺陷_成A, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.成型缺陷_成A, 0 ) / DECODE( NVL( 工序对应出窑量.成A出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.成A出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 成型缺陷_成A,
 																			
@@ -478,7 +478,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                       DECODE( NVL(  数据源.烧成窑缺陷_烧窑, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.烧成窑缺陷_烧窑, 0 ) / DECODE( NVL( 工序对应出窑量.烧窑出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.烧窑出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 烧成窑缺陷_烧窑,
                                       
 									  DECODE( NVL(  数据源.烧成窑缺陷_出窑, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.烧成窑缺陷_出窑, 0 ) / DECODE( NVL( 工序对应出窑量.卸窑出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.卸窑出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 烧成窑缺陷_出窑,
-																			
+									  DECODE( NVL(  数据源.原料缺陷, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.原料缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 原料缺陷,									
                                       DECODE( NVL(  数据源.其他缺陷, 0 ), 0, '0%',TO_CHAR( (    ( NVL(数据源.其他缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 其他缺陷
                                         FROM 数据源
 										LEFT JOIN 工序对应出窑量 ON 1=1
@@ -615,9 +615,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(产品名称) AS 产品名称,
                                         TO_CHAR(产品规格) AS 产品规格,
 										TO_CHAR(产品类别) AS 产品类别,
-                                        TO_CHAR(单重) 单重,
                                         TO_CHAR(釉色) AS 釉色,
                                         TO_CHAR(商标) AS 商标,
+                                        TO_CHAR(单重) 单重,
                                         TO_CHAR(出窑量_出窑量) AS 出窑量,
                                         TO_CHAR(出窑量_出窑重量) AS 出窑重量,
                                         TO_CHAR(出窑量_产量) AS 产量,
@@ -625,7 +625,6 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(出窑量_残品) AS 残品,
                                         TO_CHAR(出窑量_残品重量) AS 残品重量,
                                          DECODE( NVL( 出窑量_产量, 0 ), 0, '0%', TO_CHAR( ( NVL( 出窑量_产量, 0 ) / DECODE( NVL( 出窑量_出窑量, 1 ), 0, 1, NVL( 出窑量_出窑量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )  合格率,
-                                        TO_CHAR(原料缺陷) AS 原料缺陷,
                                         TO_CHAR(成型缺陷_成A) AS 成型缺陷_成A,
                                         TO_CHAR(成型缺陷_成B) AS 成型缺陷_成B,
                                         TO_CHAR(成型缺陷_成C) AS 成型缺陷_成C,
@@ -638,6 +637,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                         TO_CHAR(烧成窑缺陷_装窑) AS 烧成窑缺陷_装窑,
                                         TO_CHAR(烧成窑缺陷_烧窑) AS 烧成窑缺陷_烧窑,
                                         TO_CHAR(烧成窑缺陷_出窑) AS 烧成窑缺陷_出窑,
+                                        TO_CHAR(原料缺陷) AS 原料缺陷,
                                         TO_CHAR(其他缺陷) AS 其他缺陷
                                         FROM 数据源
                                           UNION ALL                                    
@@ -654,7 +654,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                     '',
                                     '',
                                     '','','','',
-	                                to_Char(出窑量_出窑量),	
+	                                
 									to_Char(成A出窑量),
 									to_Char(成B出窑量),
 									to_Char(成C出窑量),
@@ -667,6 +667,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 									to_Char(装窑出窑量),
 									to_Char(烧窑出窑量),
 									to_Char(卸窑出窑量),
+                                    to_Char(出窑量_出窑量),	
 									to_Char(出窑量_出窑量 )
                                 FROM
 	                                工序对应出窑量
@@ -683,7 +684,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                       '',
                                       '','','','',
                                       '','','','',
-                                      DECODE( NVL(  数据源.原料缺陷, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.原料缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 原料缺陷,
+                                    
 																			
                                       DECODE( NVL(  数据源.成型缺陷_成A, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.成型缺陷_成A, 0 ) / DECODE( NVL( 工序对应出窑量.成A出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.成A出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 成型缺陷_成A,
 																			
@@ -707,7 +708,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                                       DECODE( NVL(  数据源.烧成窑缺陷_烧窑, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.烧成窑缺陷_烧窑, 0 ) / DECODE( NVL( 工序对应出窑量.烧窑出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.烧窑出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 烧成窑缺陷_烧窑,
                                       
 									  DECODE( NVL(  数据源.烧成窑缺陷_出窑, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.烧成窑缺陷_出窑, 0 ) / DECODE( NVL( 工序对应出窑量.卸窑出窑量, 1 ), 0, 1, NVL(  工序对应出窑量.卸窑出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 烧成窑缺陷_出窑,
-																			
+									    DECODE( NVL(  数据源.原料缺陷, 0 ), 0, '0%', TO_CHAR( (    ( NVL(数据源.原料缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 原料缺陷,										
                                       DECODE( NVL(  数据源.其他缺陷, 0 ), 0, '0%',TO_CHAR( (    ( NVL(数据源.其他缺陷, 0 ) / DECODE( NVL( 数据源.出窑量_出窑量, 1 ), 0, 1, NVL(  数据源.出窑量_出窑量, 1 ) ) ) ) * 100, 'fm99990.00' ) || '%' ) 其他缺陷
                                         FROM 数据源
 										LEFT JOIN 工序对应出窑量 ON 1=1

+ 112 - 132
wwwroot/mes/rpt/rpt306/rpt.ashx

@@ -29,7 +29,38 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 			if (context.Request["m"].ToString() == "Burnish")
 			{
 				//读取报表数据
-				sqlStr = @"WITH 
+				sqlStr = @"WITH 基础数据  AS (
+SELECT
+DISTINCT
+GDD.GROUTINGLINECODE,
+GDD.USERCODE,
+GDD.GOODSCODE
+FROM TP_PM_GROUTINGDAILYDETAIL GDD
+LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINECODE= GDD.GROUTINGLINECODE
+WHERE GDD.VALUEFLAG=1 AND GL.VALUEFLAG=1
+AND  GDD.GROUTINGLINECODE<>'00'
+AND  GDD.GROUTINGLINECODE<>'公坯'
+GROUP BY GDD.GROUTINGLINECODE,
+GDD.USERCODE,
+GDD.GOODSCODE
+),
+交坯 AS (
+	SELECT
+		GROUTINGUSERCODE,
+		GOODSCODE,
+		GROUTINGLINECODE,
+		COUNT( DISTINCT BARCODE ) AS 交坯个数 
+	FROM
+		TP_PM_PRODUCTIONDATA 
+	WHERE
+		CREATETIME >=@DATEBEGIN@ AND CREATETIME<=@DATEEND@
+		AND VALUEFLAG = 1 
+		AND PROCEDUREID = 7 
+	GROUP BY
+		GROUTINGUSERCODE,
+		GOODSCODE,
+		GROUTINGLINECODE 
+),
 模型数 AS (
 SELECT
 	line.GROUTINGLINECODE,
@@ -53,13 +84,11 @@ SELECT
 		ORDER BY  line.GROUTINGLINECODE
 ),
 期初 AS (
-	SELECT
+SELECT
+	DISTINCT
 		gdd.USERCODE,
-		gl.GROUTINGLINECODE,
+		gdd.GROUTINGLINECODE,
 		gdd.GOODSCODE,
-		gl.MOULDQUANTITY ,
-		0 模具数量,
-		0 应注次数,
 		COUNT( DISTINCT gdd.BARCODE ) AS 期初数
 FROM
 	TP_PC_GROUTINGLINE gl
@@ -75,51 +104,30 @@ WHERE
 	AND gdd.BARCODE NOT IN ( SELECT BARCODE FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 7 AND VALUEFLAG = 1 ) 
 GROUP BY
 	gdd.USERCODE,
-	gl.GROUTINGLINECODE,gl.MOULDQUANTITY,
+	gdd.GROUTINGLINECODE,
 	gdd.GOODSCODE 
 	),
-	交坯 AS (
-	SELECT
-		GROUTINGUSERCODE,
-		GOODSCODE,
-		GROUTINGLINECODE,
-		COUNT( DISTINCT BARCODE ) AS 交坯个数 
-	FROM
-		TP_PM_PRODUCTIONDATA 
-	WHERE
-			CREATETIME >@DATEBEGIN@ AND CREATETIME<=@DATEEND@
-		AND VALUEFLAG = 1 
-		AND PROCEDUREID = 7 
-	GROUP BY
-		GROUTINGUSERCODE,
-		GOODSCODE,
-		GROUTINGLINECODE 
-	),
 	注浆明细 AS (
 	SELECT
 		USERCODE,
 		GOODSCODE,
 		GROUTINGLINECODE,
-		GMOULDSTATUS,
-		SCRAPTYPE,
 	COUNT( DISTINCT CASE WHEN SCRAPTYPE = 0 THEN GROUTINGDAILYDETAILID ELSE NULL END ) 注浆损失,
-	SUM( CASE WHEN GROUTINGFLAG = 1 THEN 1 ELSE 0 END ) 注浆个数 ,
+	SUM( CASE WHEN GROUTINGFLAG = 1 THEN 1 ELSE 0 END ) 注浆个数,
 	COUNT(DISTINCT CASE WHEN GMOULDSTATUS IN ( 0, 1, 2, 3, 4 ) THEN GROUTINGDAILYDETAILID ELSE NULL END ) 模型设置数量,
 	COUNT(DISTINCT CASE WHEN GMOULDSTATUS <> 0 THEN GROUTINGDAILYDETAILID ELSE NULL END ) 应注模型数量 
 FROM
 	TP_PM_GROUTINGDAILYDETAIL 
 WHERE
-    CREATETIME >=@DATEBEGIN@ AND CREATETIME<=@DATEEND@
+    GroutingDate >=@DATEBEGIN@ AND GroutingDate<@DATEEND@
 	AND VALUEFLAG = 1 
 GROUP BY
-	USERCODE,
-	GOODSCODE,
-	GROUTINGLINECODE,
-	GMOULDSTATUS,
-	SCRAPTYPE,
-	GROUTINGFLAG 
-	),
-	损坯 AS (
+	  USERCODE,
+		GOODSCODE,
+		GROUTINGLINECODE
+	)
+	,
+损坯 AS (
 	SELECT
 		GROUTINGUSERCODE,
 		GOODSCODE,
@@ -134,103 +142,75 @@ GROUP BY
 	GROUTINGUSERCODE,
 	GOODSCODE,
 	GROUTINGLINECODE 
-	) 
-	
-	
-	SELECT
-CASE WHEN
-		GROUPING_ID ( USERCODE, USERNAME, GOODSCODE, GOODSNAME, GOODSSPECIFICATION,	车间 ) = 62 THEN
-			(
-			CASE WHEN 车间= '1A' THEN '成A' 
-					 WHEN 车间= '1B' THEN '成B' 
-					 WHEN 车间= '1C' THEN '成C' 
-					 WHEN 车间= '1D' THEN '成D' 
-					 WHEN 车间= '8-' THEN '高压' ELSE ''  END   ) 
-			WHEN GROUPING_ID ( USERCODE, USERNAME, GOODSCODE, GOODSNAME, GOODSSPECIFICATION,	车间 ) = 63 THEN
-				'总计' ELSE NULL  END AS 统计方式,
-				GROUTINGLINECODE 成型线编码,
-			USERCODE 工号,
-			USERNAME 姓名,
-			GOODSCODE 产品编码,
-			GOODSNAME 产品名称,
-			GOODSSPECIFICATION 产品规格,
-			nvl(sum(模型设置数量),0) 模型设置数量,
-			nvl(sum(应注模型数量),0) 应注模型数量,
-			sum(期初数) 期初,
-			sum(注浆个数) 注浆个数,
-			nvl(SUM(交坯个数),0)  交坯个数,
-			sum(注浆损失) 注浆损失,
-			SUM(毛坯损失) 毛坯损失,
-				(sum(期初数) + sum(注浆个数) - nvl(SUM(交坯个数),0)-sum(注浆损失) - SUM(毛坯损失) ) 期末数,
-			DECODE(NVL( SUM(注浆个数), 0 ),0,'100%',TO_CHAR(( ( NVL( SUM(交坯个数), 0 ) / DECODE( NVL( sum(注浆个数), 1 ), 0, 1, NVL( sum(注浆个数), 1 ) ) ) ) * 100,'fm99990.00' ) || '%' ) 保坯率,
-			DECODE(NVL( sum(应注模型数量), 0 ),0,'100%',TO_CHAR(( ( NVL( sum(应注模型数量), 0 ) / DECODE( NVL( sum(模型设置数量), 1 ), 0, 1, NVL( sum(模型设置数量), 1 ) ) ) ) * 100,'fm99990.00' ) || '%') 模型利用率,
-			DECODE(NVL( SUM(毛坯损失), 0 ),0,'100%',TO_CHAR(( ( ( sum(注浆个数)-SUM(毛坯损失) ) / DECODE( NVL( sum(注浆个数), 1 ), 0, 1, NVL( sum(注浆个数), 1 ) ) ) ) * 100,'fm99990.00' ) || '%' ) 注浆率,
-			SUM(累计次数) 累计次数,'' 组别,'' 工作地点,
-			CASE WHEN 车间= '1A' THEN '成A' 
-					 WHEN 车间= '1B' THEN '成B' 
-					 WHEN 车间= '1C' THEN '成C' 
-					 WHEN 车间= '1D' THEN '成D' 
-					 WHEN 车间= '8-' THEN '高压' ELSE ''  END 车间 
-		FROM
-			(
-			SELECT DISTINCT
-			    期初.GROUTINGLINECODE GROUTINGLINECODE,
-				SUBSTR( 期初.GROUTINGLINECODE, 1, 2 ) 车间,
-				期初.USERCODE,
-				users.USERNAME,
-				期初.GOODSCODE,
-				GOOD.GOODSNAME,
-				GOOD.GOODSSPECIFICATION,
-				NVL( SUM(期初.期初数), 0 ) 期初数,
-				交坯.交坯个数,
-				NVL( 注浆个数, 0 ) 注浆个数,
-				NVL( 注浆损失, 0 ) 注浆损失,
-				( NVL( 注浆损失, 0 ) + NVL( 损坯个数, 0 ) ) 毛坯损失,
-			    模型数.模具数量 AS 模型设置数量,
-				模型数.应注次数 AS 应注模型数量,
-				(
-				SELECT
-					SUM( GROUTINGBATCHNO ) 
-				FROM
-					( SELECT GROUTINGDATE, MAX( GROUTINGBATCHNO ) GROUTINGBATCHNO FROM TP_PM_GROUTINGDAILYDETAIL WHERE USERCODE = 期初.USERCODE AND GOODSCODE =期初.GOODSCODE GROUP BY GROUTINGDATE ) 
-				) 累计次数 
-			FROM
-				  期初
-				LEFT JOIN 交坯 ON 交坯.GROUTINGUSERCODE =期初.USERCODE AND 交坯.GOODSCODE =期初.GOODSCODE  AND 交坯.GROUTINGLINECODE =期初.GROUTINGLINECODE 
-				LEFT JOIN TP_MST_GOODS GOOD ON GOOD.GOODSCODE = 期初.GOODSCODE
-				LEFT JOIN TP_MST_USER users ON users.USERCODE = 期初.USERCODE
-				LEFT JOIN 注浆明细 ON 注浆明细.USERCODE = 期初.USERCODE  AND 注浆明细.GOODSCODE =期初.GOODSCODE AND 注浆明细.GROUTINGLINECODE =期初.GROUTINGLINECODE 
-				LEFT JOIN 损坯 ON 损坯.GROUTINGUSERCODE = 期初.USERCODE  AND 损坯.GOODSCODE =期初.GOODSCODE AND 损坯.GROUTINGLINECODE =期初.GROUTINGLINECODE 
-			    LEFT JOIN 模型数 on 模型数.USERCODE =期初.USERCODE AND 模型数.GOODSCODE =期初.GOODSCODE  AND 模型数.GROUTINGLINECODE =期初.GROUTINGLINECODE 
-				
-					GROUP BY   
-				期初.GROUTINGLINECODE ,SUBSTR( 期初.GROUTINGLINECODE, 1, 2 ),
-				期初.USERCODE,
-				users.USERNAME,
-				期初.GOODSCODE,
-				GOOD.GOODSNAME,
-				GOOD.GOODSSPECIFICATION,
-				交坯.交坯个数,
-				注浆个数,
-				注浆损失,
-			   模型数.模具数量 ,损坯个数,
-				模型数.应注次数 		
-	
 	)
-	WHERE GROUTINGLINECODE <>'00'
-		GROUP BY Grouping sets ( (
-												USERCODE,
-													USERNAME,
-													GOODSCODE,
-													GOODSNAME,
-													GOODSSPECIFICATION,	GROUTINGLINECODE,
-													车间 
-												),
-												(车间),()
-												)
-													
-												ORDER BY
-												车间,GROUTINGLINECODE,USERCODE";
+		SELECT
+		CASE WHEN
+				GROUPING_ID ( USERCODE, USERNAME, GOODSCODE, GOODSNAME, GOODSSPECIFICATION,	车间 ) = 62 THEN
+					(
+					CASE WHEN 车间= '1A' THEN '成A' 
+							 WHEN 车间= '1B' THEN '成B' 
+							 WHEN 车间= '1C' THEN '成C' 
+							 WHEN 车间= '1D' THEN '成D' 
+							 WHEN 车间= '8-' THEN '高压' ELSE ''  END   ) 
+					WHEN GROUPING_ID ( USERCODE, USERNAME, GOODSCODE, GOODSNAME, GOODSSPECIFICATION,	车间 ) = 63 THEN
+						'总计' ELSE NULL  END AS 统计方式,
+						GROUTINGLINECODE 成型线编码,
+					USERCODE 工号,
+					USERNAME 姓名,
+					GOODSCODE 产品编码,
+					GOODSNAME 产品名称,
+					GOODSSPECIFICATION 产品规格,
+					nvl(sum(模型设置数量),0) 模型设置数量,
+					nvl(sum(应注模型数量),0) 应注模型数量,
+					nvl(sum(期初数),0) 期初,
+					nvl(sum(注浆个数),0) 注浆个数,
+					nvl(SUM(交坯个数),0)  交坯个数,
+					nvl(sum(注浆损失),0) 注浆损失,
+					nvl(SUM(毛坯损失),0) 毛坯损失,
+						nvl((sum(期初数) + sum(注浆个数) - nvl(SUM(交坯个数),0)-sum(注浆损失) - SUM(毛坯损失) ),0) 期末数,
+					DECODE(NVL( SUM(注浆个数), 0 ),0,'100%',TO_CHAR(( ( NVL( SUM(交坯个数), 0 ) / DECODE( NVL( sum(注浆个数), 1 ), 0, 1, NVL( sum(注浆个数), 1 ) ) ) ) * 100,'fm99990.00' ) || '%' ) 保坯率,
+					DECODE(NVL( sum(应注模型数量), 0 ),0,'100%',TO_CHAR(( ( NVL( sum(应注模型数量), 0 ) / DECODE( NVL( sum(模型设置数量), 1 ), 0, 1, NVL( sum(模型设置数量), 1 ) ) ) ) * 100,'fm99990.00' ) || '%') 模型利用率,
+					DECODE(NVL( SUM(毛坯损失), 0 ),0,'100%',TO_CHAR(( ( ( sum(注浆个数)-SUM(毛坯损失) ) / DECODE( NVL( sum(注浆个数), 1 ), 0, 1, NVL( sum(注浆个数), 1 ) ) ) ) * 100,'fm99990.00' ) || '%' ) 注浆率,
+					SUM(累计次数) 累计次数,'' 组别,'' 工作地点,
+					CASE WHEN 车间= '1A' THEN '成A' 
+							 WHEN 车间= '1B' THEN '成B' 
+							 WHEN 车间= '1C' THEN '成C' 
+							 WHEN 车间= '1D' THEN '成D' 
+							 WHEN 车间= '8-' THEN '高压' ELSE ''  END 车间 
+				FROM(	
+							SELECT
+							基础数据.GROUTINGLINECODE,
+							SUBSTR( 基础数据.GROUTINGLINECODE, 1, 2 ) 车间,
+							基础数据.USERCODE,
+							users.USERNAME,
+							基础数据.GOODSCODE,
+							good.GOODSNAME,
+							good.GOODSSPECIFICATION,
+							期初.期初数 ,
+							交坯.交坯个数,
+							注浆明细.注浆损失,
+							注浆明细.注浆个数,
+							模型数.模具数量 AS 模型设置数量,
+							模型数.应注次数 AS 应注模型数量,
+							( NVL( 注浆损失, 0 ) + NVL( 损坯个数, 0 ) ) 毛坯损失,
+								(
+											SELECT
+												SUM( GROUTINGBATCHNO ) 
+											FROM
+												( SELECT GROUTINGDATE, MAX( GROUTINGBATCHNO ) GROUTINGBATCHNO FROM TP_PM_GROUTINGDAILYDETAIL WHERE USERCODE = 基础数据.USERCODE AND GOODSCODE =基础数据.GOODSCODE GROUP BY GROUTINGDATE ) 
+											) 累计次数 
+							FROM 基础数据 
+							LEFT JOIN TP_MST_GOODS good ON good.GOODSCODE=基础数据.GOODSCODE
+							LEFT JOIN TP_MST_USER users ON users.USERCODE=基础数据.USERCODE
+							LEFT JOIN 期初 ON 基础数据.GOODSCODE = 期初.GOODSCODE AND 基础数据.GROUTINGLINECODE =期初.GROUTINGLINECODE AND  基础数据.USERCODE=期初.USERCODE
+							LEFT JOIN 交坯 ON 交坯.GROUTINGLINECODE=基础数据.GROUTINGLINECODE AND 基础数据.USERCODE=交坯.GROUTINGUSERCODE AND 基础数据.GOODSCODE=交坯.GOODSCODE
+							LEFT JOIN 模型数 on 模型数.USERCODE =基础数据.USERCODE AND 模型数.GOODSCODE =基础数据.GOODSCODE  AND 模型数.GROUTINGLINECODE =基础数据.GROUTINGLINECODE 
+							LEFT JOIN 注浆明细 ON 注浆明细.USERCODE = 基础数据.USERCODE  AND 注浆明细.GOODSCODE =基础数据.GOODSCODE AND 注浆明细.GROUTINGLINECODE =基础数据.GROUTINGLINECODE 
+							LEFT JOIN 损坯 ON 损坯.GROUTINGUSERCODE = 基础数据.USERCODE  AND 损坯.GOODSCODE =基础数据.GOODSCODE AND 损坯.GROUTINGLINECODE =基础数据.GROUTINGLINECODE 
+				)
+				
+				GROUP BY Grouping sets ( ( USERCODE,USERNAME,GOODSCODE,GOODSNAME,GOODSSPECIFICATION,	GROUTINGLINECODE,车间 ),(车间),())
+								ORDER BY 车间,GROUTINGLINECODE,USERCODE";
 			}
 			//获取查询条件
 			List<CDAParameter> sqlPara = new List<CDAParameter>();

+ 1 - 0
wwwroot/mes/rpt/rpt308/rpt_index.html

@@ -27,6 +27,7 @@
 			<div id="tbSearchDiv" style="display:block;padding:10px;">
 				<form id="ffMaster">
 					<div>
+						开始日期:
 						<input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:190px; height:32px;">
 						截止日期:
 						<input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width: 190px; height: 32px;">

+ 164 - 0
wwwroot/mes/rpt/rpt309/rpt.ashx

@@ -0,0 +1,164 @@
+<%@ WebHandler Language="C#" Class="rpt" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Data;
+using System.Text;
+using System.Collections;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+
+public class rpt : IHttpHandler, IReadOnlySessionState
+{
+	public void ProcessRequest(HttpContext context)
+	{
+		context.Response.ContentType = "text/plain";
+
+		using (IDataAccess conn = DataAccess.Create())
+		{
+				DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
+				DateTime dateend = Convert.ToDateTime(context.Request["dateendMaster"]);
+			//主表
+			string sqlStr = "";
+			if (context.Request["m"].ToString() == "master")
+			{
+				//读取报表数据
+				sqlStr = @"WITH 期初 AS (
+SELECT  TP_PM_INPRODUCTION_BAKBYMONTH.GOODSCODE ,TP_MST_GOODS.GOODSNAME,
+TP_MST_GOODS.GOODSSPECIFICATION,
+COUNT(DISTINCT BARCODE) AS 期初
+FROM TP_PM_INPRODUCTION_BAKBYMONTH
+LEFT JOIN TP_MST_GOODS ON TP_MST_GOODS.GOODSCODE=TP_PM_INPRODUCTION_BAKBYMONTH.GOODSCODE
+WHERE PROCEDUREID=7
+AND BACKUPMONTH >=@DATEBEGIN@
+AND TP_MST_GOODS.VALUEFLAG=1
+GROUP BY TP_PM_INPRODUCTION_BAKBYMONTH.GOODSCODE,TP_MST_GOODS.GOODSNAME,
+TP_MST_GOODS.GOODSSPECIFICATION
+),
+转入 AS (
+SELECT 
+TP_MST_GOODS.GOODSCODE,TP_MST_GOODS.GOODSNAME,TP_MST_GOODS.GOODSSPECIFICATION,
+COUNT(DISTINCT CASE WHEN INSTR(TP_PC_GROUTINGLINE.GROUTINGLINECODE, 'A')>0 THEN BARCODE ELSE NULL END ) AS 成型A入,
+COUNT(DISTINCT CASE WHEN INSTR(TP_PC_GROUTINGLINE.GROUTINGLINECODE, 'B')>0 THEN BARCODE ELSE NULL END ) AS 成型B入,
+COUNT(DISTINCT CASE WHEN INSTR(TP_PC_GROUTINGLINE.GROUTINGLINECODE, 'C') >0 THEN BARCODE ELSE NULL END ) AS 成型C入,
+COUNT(DISTINCT CASE WHEN TP_PC_GROUTINGLINE.HIGHPRESSUREFLAG=1 THEN BARCODE ELSE NULL END ) AS 高压入,
+COUNT(DISTINCT BARCODE ) AS 转入
+FROM TP_PM_PRODUCTIONDATA
+LEFT JOIN TP_MST_GOODS ON TP_MST_GOODS.GOODSCODE =TP_PM_PRODUCTIONDATA.GOODSCODE
+LEFT JOIN TP_PC_GROUTINGLINE ON TP_PC_GROUTINGLINE.GROUTINGLINECODE=TP_PM_PRODUCTIONDATA.GROUTINGLINECODE
+WHERE TP_PM_PRODUCTIONDATA.CREATETIME>=@DATEBEGIN@ AND TP_PM_PRODUCTIONDATA.CREATETIME<=@DATEEND@
+AND TP_PM_PRODUCTIONDATA.VALUEFLAG = 1  
+AND TP_PM_PRODUCTIONDATA.PROCEDUREID=7
+	GROUP BY  TP_MST_GOODS.GOODSCODE,TP_MST_GOODS.GOODSNAME,TP_MST_GOODS.GOODSSPECIFICATION
+),
+损坯 AS (
+SELECT
+		TP_MST_GOODS.GOODSCODE,TP_MST_GOODS.GOODSNAME,TP_MST_GOODS.GOODSSPECIFICATION,
+	SUM( CASE WHEN PROCEDUREID IN ( 7) THEN 1 ELSE 0 END ) 库内损坯
+FROM
+	TP_PM_SCRAPPRODUCT 
+	LEFT JOIN TP_MST_GOODS ON TP_MST_GOODS.GOODSCODE=TP_PM_SCRAPPRODUCT.GOODSCODE
+  WHERE TP_PM_SCRAPPRODUCT.CREATETIME>=@DATEBEGIN@ AND TP_PM_SCRAPPRODUCT.CREATETIME<=@DATEEND@
+	AND TP_PM_SCRAPPRODUCT.VALUEFLAG = 1 
+	AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = 8 
+GROUP BY TP_MST_GOODS.GOODSCODE,TP_MST_GOODS.GOODSNAME,TP_MST_GOODS.GOODSSPECIFICATION
+),
+转出 AS (
+SELECT 
+TP_MST_GOODS.GOODSCODE,TP_MST_GOODS.GOODSNAME,TP_MST_GOODS.GOODSSPECIFICATION,
+COUNT(DISTINCT BARCODE ) AS 转出
+FROM TP_PM_PRODUCTIONDATA
+LEFT JOIN TP_MST_GOODS ON TP_MST_GOODS.GOODSCODE=TP_PM_PRODUCTIONDATA.GOODSCODE
+LEFT JOIN TP_PC_GROUTINGLINE ON TP_PC_GROUTINGLINE.GROUTINGLINECODE=TP_PM_PRODUCTIONDATA.GROUTINGLINECODE
+WHERE TP_PM_PRODUCTIONDATA.CREATETIME>=@DATEBEGIN@ AND TP_PM_PRODUCTIONDATA.CREATETIME<=@DATEEND@
+	AND TP_PM_PRODUCTIONDATA.VALUEFLAG = 1  AND TP_PM_PRODUCTIONDATA.PROCEDUREID=8
+	GROUP BY TP_MST_GOODS.GOODSCODE,TP_MST_GOODS.GOODSNAME,TP_MST_GOODS.GOODSSPECIFICATION
+)
+
+SELECT
+产品编码,
+产品名称,
+产品规格,
+SUM(期初) 期初,
+SUM(成型A入) 成型A入,
+SUM(成型B入) 成型B入,
+SUM(成型C入) 成型C入,
+SUM(高压入) 高压入,
+SUM(转入) 转入,
+SUM(库内损坯) 库内损坯,
+SUM(转出) 转出,
+SUM(期末库存) 期末库存
+FROM(
+SELECT
+GOODSCODE AS 产品编码,
+GOODSNAME 产品名称,
+GOODSSPECIFICATION 产品规格,
+期初,
+成型A入,
+成型B入,
+成型C入,
+高压入,
+转入 ,
+库内损坯,
+转出,
+(期初+转入-库内损坯-转出) 期末库存
+FROM(
+SELECT 
+TP_MST_GOODS.GOODSCODE,
+TP_MST_GOODS.GOODSNAME,
+TP_MST_GOODS.GOODSSPECIFICATION,
+sum(nvl(期初.期初,0)) 期初,
+sum(nvl(转入.成型A入,0)) 成型A入,
+sum(nvl(转入.成型B入,0)) 成型B入,
+sum(nvl(转入.成型C入,0)) 成型C入,
+sum(nvl(转入.高压入,0)) 高压入,
+sum(nvl(转入.转入,0)) 转入,
+sum(nvl(损坯.库内损坯,0)) 库内损坯,
+sum(nvl(转出.转出,0)) 转出
+FROM
+ TP_MST_GOODS 
+ LEFT JOIN 期初 ON 期初.GOODSCODE=TP_MST_GOODS.GOODSCODE AND 期初.GOODSNAME=TP_MST_GOODS.GOODSNAME AND 期初.GOODSSPECIFICATION=TP_MST_GOODS.GOODSSPECIFICATION
+ LEFT JOIN 转入 ON 转入.GOODSCODE=TP_MST_GOODS.GOODSCODE AND 转入.GOODSNAME=TP_MST_GOODS.GOODSNAME AND 转入.GOODSSPECIFICATION=TP_MST_GOODS.GOODSSPECIFICATION
+ LEFT JOIN 损坯 ON 损坯.GOODSCODE=TP_MST_GOODS.GOODSCODE AND 损坯.GOODSNAME=TP_MST_GOODS.GOODSNAME AND 损坯.GOODSSPECIFICATION=TP_MST_GOODS.GOODSSPECIFICATION
+ LEFT JOIN 转出 ON 转出.GOODSCODE=TP_MST_GOODS.GOODSCODE AND 转出.GOODSNAME=TP_MST_GOODS.GOODSNAME AND 转出.GOODSSPECIFICATION=TP_MST_GOODS.GOODSSPECIFICATION
+ WHERE TP_MST_GOODS.VALUEFLAG=1
+GROUP BY TP_MST_GOODS.GOODSCODE,TP_MST_GOODS.GOODSNAME,TP_MST_GOODS.GOODSSPECIFICATION
+)
+)
+GROUP BY Grouping sets((产品编码,产品名称,产品规格),())";
+			}
+			//获取查询条件
+			List<CDAParameter> sqlPara = new List<CDAParameter>();
+			sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
+			sqlPara.Add(new CDAParameter("DATEEND", dateend, DataType.DateTime));
+			//sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
+			//获取分页参数
+			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"]) : 10000;
+			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();
+
+			context.Response.Write(jsonStr);
+
+		}
+
+	}
+
+	public bool IsReusable
+	{
+		get
+		{
+			return false;
+		}
+	}
+
+}

+ 128 - 0
wwwroot/mes/rpt/rpt309/rpt_index.html

@@ -0,0 +1,128 @@
+<!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>
+	<link href="/plugins/xeasyui/toolbar.min.css" rel="stylesheet" />
+</head>
+<body class="easyui-layout">
+
+	<!--上部工具条-->
+	<!--中部主体-->
+	<div data-options="border:false,region:'center',title:'',iconCls:'icon-grid'">
+		<!--工具条-->
+		<div id="tb" class="i-toolbar">
+			<a href="javascript:void(0)" id="btnSearch" title="搜索" class="easyui-linkbutton" iconcls="icon-search" plain="true" toggle="true" onclick="tbSearch()">搜索</a>
+			<a href="javascript:void(0)" id="btnExport" title="导出" class="easyui-linkbutton" iconcls="icon-excel" plain="true" onclick="tbExport()">导出</a>
+			<!--<a href="javascript:void(0)" id="btnColumn" class="easyui-menubutton" data-options="menu:'#btnColumnMenu',iconCls:'icon-undo'">列显示</a>
+	<div id="btnColumnMenu" style="width:150px;"></div>-->
+			<a href="javascript:void(0)" id="btnReload" title="刷新" class="easyui-linkbutton" iconcls="icon-reload" plain="true" onclick="tbReload()">刷新</a>
+			<a href="javascript:void(0)" id="btnHelp" title="帮助" class="easyui-linkbutton" iconcls="icon-help" plain="true" onclick="tbHelp()">帮助</a>
+
+
+			<div id="tbSearchDiv" style="display:block;padding:10px;">
+				<form id="ffMaster">
+					<div>
+						<input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:190px; height:32px;">
+						截止日期:
+						<input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width: 190px; height: 32px;">
+						<!--产品名称:<input class="easyui-combobox" id="goodsid" name="goodsid" data-options="required:false,prompt:'',tipPosition:'top',url:'../rpt.ashx?m=getGoods&select=1',method:'get',valueField:'GOODSNAME',textField:'GOODSNAME',panelHeight:'300px',editable:'true',multiple:true" style="width:180px;height:32px;">-->
+						<a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
+						<a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
+					</div>
+				</form>
+			</div>
+		</div>
+	
+
+		<table class="easyui-datagrid"
+			   id="DataGridMaster"
+			   data-options="toolbar: '#tb',method:'get',border:false,singleSelect:true,fit:true,fitColumns:true">
+			<thead>
+			</thead>
+		</table>
+	</div>
+
+
+	<script type="text/javascript">
+
+		function formatterUA(value, row, index) {
+			return Math.round(value * 10000) / 100 + '%';
+		}
+        $(document).ready(function () {
+            var ctime = new Date();
+            var beginDate = ctime.getFullYear() + "-" + (ctime.getMonth() + 1) + "-" + ctime.getDate() + " 00:00:00";
+            var endDate = ctime.getFullYear() + "-" + (ctime.getMonth() + 1) + "-" + ctime.getDate() + " 23:59:59";
+            $("#datebeginMaster").datetimebox("setValue", beginDate);
+            $("#dateendMaster").datetimebox("setValue", endDate);
+
+            //tbSearchSubmit();
+
+        });
+        function toClear() {
+            var ctime = new Date();
+            var beginDate = ctime.getFullYear() + "-" + (ctime.getMonth() + 1) + "-" + ctime.getDate() + " 00:00:00";
+            var endDate = ctime.getFullYear() + "-" + (ctime.getMonth() + 1) + "-" + ctime.getDate() + " 23:59:59";
+            $("#datebeginMaster").datetimebox("setValue", beginDate);
+            $("#dateendMaster").datetimebox("setValue", endDate);
+        }
+
+        //搜索提交
+		function tbSearchSubmit() {
+			var test = $("#datebeginMaster").datetimebox("getValue");
+			if ($("#datebeginMaster").datetimebox("getValue") != null && $("#datebeginMaster").datetimebox("getValue") != " " && $("#datebeginMaster").datetimebox("getValue") != "") {
+				$('#DataGridMaster').datagridLoad({
+					title: '',
+					idField: 'SID',
+					queryParams: $('#ffMaster').serializeJson(),
+					url: 'rpt.ashx?m=master&id=' + request('id'),
+					fixWidth: 160,
+					mergeWidth: 100,
+					splitChar: '_',
+					columnMenu: '#btnColumnMenu',
+					columnMoving: true,
+                    pagination: true,
+                    pagelist: [10000, 50, 100, 50, 1000, 5000],
+                    pageSize: 10000
+
+				});
+			} else {
+                $.messager.alert("提示", "请选择日期");
+			}
+
+        }
+
+        //导出
+
+        function tbExport() {
+            $('#DataGridMaster').datagrid('toExcel', '(半成品库存表(结转周期天:精坯入))' + $("#datebeginMaster").datetimebox("getValue") + '_' + $("#dateendMaster").datetimebox("getValue")+'.xls');
+        }
+        //帮助事件
+        function tbHelp() {
+            $('#DataGridMaster').datagridDialog({
+                title: '帮助',
+                width: 640,
+                height: 480,
+                url: '半成品库存表(结转周期天:精坯入).html'
+            });
+        }
+		//搜索按钮
+		function tbSearch() {
+			$('#tbSearchDiv').toggle();
+			$('#toolbarLayout').panel('resize', { height: 'auto' });
+			$('body').layout('resize');
+			$('#tableTabs').tabs('resize');
+		}
+
+		//刷新
+		function tbReload() {
+			tbSearchSubmit();
+		}
+
+	</script>
+</body>
+</html>

+ 73 - 0
wwwroot/mes/rpt/rpt309/半成品库存表(结转周期天:精坯入).html

@@ -0,0 +1,73 @@
+<!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>
+</head>
+<body class="easyui-layout">
+    <div data-options="region:'center',plain:true,border:false">
+        <form id="ff" method="post" class="w-form">
+            <div class="w-div">
+                <div class="w-fieldbar" onclick="$('#more1').toggle()" style="cursor:pointer;"></div>
+            </div>
+            <div class="w-div">
+                <div class="w-fieldbar" onclick="$('#more2').toggle()" style="cursor:pointer;"></div>
+            </div>
+            <div id="more2" style="display:block;">
+                <div class="w-div">
+                    <div class="w-fieldname">使用说明:</div>
+                    <div class="w-field">
+                        <div id="ID" data-field="true" class="w-fieldvalue">
+                            烧成釉坯存量报表(结转周期天:釉坯库入)。
+                        </div>
+                    </div>
+                </div>
+                <div class="w-div">
+                    <div class="w-fieldname">数据算法:</div>
+                    <div class="w-field">
+                        <div id="ID" data-field="true" class="w-fieldvalue">
+                            窑号:隧道窑或者梭式窑;<br />
+                            期初库存:结转数据为准;<br />
+                            施釉转入:釉坯库入工序扫码计件数量;<br />
+                            转窑转入:空值;转窑转出:空值;<br />
+                            装车转出:登窑或者登窑(梭);<br />
+                            装车损失:产品报损责任工序为登窑或者登窑(梭);<br />
+                            釉坯损失:产品报损责任工序为釉坯库入;<br />
+                            期末库存:期初存量+施釉转入+转窑转入-装车转出-转窑转出-装车损失-釉坯损失;<br />
+                            月份结转数据计算规则:<br />
+                            期末摊存:由本月份第一天的期初+月份每天发生的生产数据(施釉转入+转窑转入-装车转出-转窑转出-装车损失-釉坯损失);
+                            
+                        </div>
+                    </div>
+                </div>
+                <div class="w-div">
+                    <div class="w-fieldname">更新时间:</div>
+                    <div class="w-field">
+                        <div id="ID" data-field="true" class="w-fieldvalue">
+                            2024-1-1。
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+    <div id="tb" data-options="region:'south',border:false" class="w-bar">
+        <a href="javascript:void(0)" id="tbClose" class="easyui-linkbutton" data-options="iconCls:'icon-cancel'" onclick="cancelForm()">关闭</a>
+    </div>
+    <script type="text/javascript">
+
+        $(function () {
+            $('#more1').toggle();
+        });
+
+        function cancelForm() {
+            $.dialog.close();
+        }
+
+    </script>
+</body>
+</html>

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません