<%@ 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()) { if (context.Request["m"].ToString() == "BIG") { //读取报表数据 string sqlStr = @" SELECT ROWNUM, GOODSCODE, NUM FROM ( SELECT F.GOODSCODE, COUNT( DISTINCT F.BARCODE ) AS NUM FROM TP_PM_FINISHEDPRODUCT F INNER JOIN TP_MST_GOODS G ON F.GOODSID = G.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE F.CREATETIME >= TRUNC(SYSDATE, 'MM') AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 AND F.VALUEFLAG = 1 GROUP BY F.GOODSCODE ORDER BY COUNT( DISTINCT F.BARCODE ) DESC ) WHERE ROWNUM <= 10 "; //直接获取不分页数据 DataTable dt = conn.ExecuteDatatable(sqlStr); string jsonStr = new JsonResult(dt).ToJson(); context.Response.Write(jsonStr); }else if (context.Request["m"].ToString() == "SMALL") { //读取报表数据 string sqlStr = @" SELECT ROWNUM, GOODSCODE, NUM FROM ( SELECT F.GOODSCODE, COUNT( DISTINCT F.BARCODE ) AS NUM FROM TP_PM_FINISHEDPRODUCT F INNER JOIN TP_MST_GOODS G ON F.GOODSID = G.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE F.CREATETIME >= TRUNC(SYSDATE, 'MM') AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 AND F.VALUEFLAG = 1 GROUP BY F.GOODSCODE ORDER BY COUNT( DISTINCT F.BARCODE ) DESC ) WHERE ROWNUM <= 10 "; //直接获取不分页数据 DataTable dt = conn.ExecuteDatatable(sqlStr); string jsonStr = new JsonResult(dt).ToJson(); context.Response.Write(jsonStr); }else if (context.Request["m"].ToString() == "TOTAL") { //读取报表数据 string sqlStr = @" SELECT TO_NUMBER(TO_CHAR( F.CREATETIME, 'DD' )) AS TIME, COUNT( DISTINCT F.BARCODE ) AS NUM, ( SELECT ROUND( DP.PLANNUM / 30, 0 ) FROM TP_MST_DASHBOARD_PLAN DP INNER JOIN TP_MST_DASHBOARD D ON DP.DASHBOARDID = D.DASHBOARDID WHERE DP.PLANTYPE = 3 AND DP.PLANYEAR = TO_NUMBER( TO_CHAR( SYSDATE, 'YYYY' ) ) AND DP.PLANMONTH = TO_NUMBER( TO_CHAR( SYSDATE, 'MM' ) ) AND D.DASHBOARDNAME = '包装' ) AS PLAN FROM TP_PM_FINISHEDPRODUCT F INNER JOIN TP_MST_GOODS G ON F.GOODSID = G.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID WHERE F.CREATETIME >= TRUNC( SYSDATE, 'MM' ) AND F.VALUEFLAG = 1 AND INSTR(GT.GOODSTYPECODE,'001001') = 1 GROUP BY TO_CHAR( F.CREATETIME, 'DD' ) ORDER BY TO_CHAR( F.CREATETIME, 'DD' ) "; //直接获取不分页数据 DataTable dt = conn.ExecuteDatatable(sqlStr); int year = Convert.ToInt32(DateTime.Now.Year); int month = Convert.ToInt32(DateTime.Now.Month); for (int i = dt.Rows.Count + 1; i <= DateTime.DaysInMonth(year, month); i++) { DataRow dr = dt.NewRow(); dr["TIME"] = i; dr["NUM"] = 0; dr["PLAN"] = 0; dt.Rows.Add(dr); } string jsonStr = new JsonResult(dt).ToJson(); context.Response.Write(jsonStr); } } } public decimal toNumber(object o) { if (o != DBNull.Value) return Convert.ToDecimal(o); else return 0; } public bool IsReusable { get { return false; } } }