rpt.ashx 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <%@ WebHandler Language="C#" Class="rpt" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using System.Text;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using Curtain.DataAccess;
  12. using DK.XuWei.WebMes;
  13. public class rpt : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. using(IDataAccess conn = DataAccess.Create())
  19. {
  20. //主表
  21. if(context.Request["m"].ToString()=="upph")
  22. {
  23. //string dateBegin = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 00:00:00");
  24. //string dateEnd = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 23:59:59");
  25. //读取报表数据
  26. string sqlStr = @"
  27. SELECT YY.WS_ID
  28. ,YY.SHIFT_TYPE
  29. ,YY.USERID
  30. ,NVL(YY.USERCODE, ' ') AS USERCODE
  31. ,NVL(YY.USERNAME, ' ') AS USERNAME
  32. ,YY.KB_WS_NAME
  33. ,YY.STANDARDCAPACITY
  34. ,YY.CLASSSETTINGSTAFFCOUNT
  35. ,YY.YIELD
  36. ,ROUND(YY.UPPH, 2) UPPH
  37. ,ROUND(YY.COMP) COMP
  38. ,TO_CHAR(ROUND(YY.COMP)) || '%' COMP_TEST
  39. ,RANK() OVER(ORDER BY YY.UPPH) UPPH_RANK
  40. ,RANK() OVER(ORDER BY YY.COMP) COMP_RANK
  41. FROM (SELECT Y.*
  42. ,DECODE(Y.CLASSSETTINGSTAFFCOUNT, 0, 0, Y.YIELD / Y.CLASSSETTINGSTAFFCOUNT) UPPH
  43. ,DECODE(Y.STANDARDCAPACITY, 0, 100, Y.YIELD / Y.STANDARDCAPACITY * 100) COMP
  44. FROM (SELECT T.WS_ID
  45. ,T.SHIFT_TYPE
  46. ,T.USERID
  47. ,T.USERCODE
  48. ,U.USERNAME
  49. ,T.KB_WS_NAME
  50. ,T.STANDARDCAPACITY
  51. ,T.CLASSSETTINGSTAFFCOUNT
  52. ,COUNT(PD.PRODUCTIONDATAID) YIELD
  53. --,COUNT(gdd.groutingdailydetailid) YIELD
  54. FROM TP_MST_HGWS_USERSINFO T
  55. LEFT JOIN TP_MST_USER U
  56. ON U.USERID = T.USERID
  57. INNER JOIN TP_MST_WORKSTATION WS
  58. ON WS.WORKSTATIONID = T.WS_ID
  59. /*LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  60. ON GDD.CREATETIME >= T.BEGINTIME
  61. AND GDD.GROUTINGLINEID = WS.GROUTINGLINEID
  62. AND GDD.USERID = T.USERID
  63. AND gdd.groutingflag = '1'
  64. AND gdd.scrapflag = '0'*/
  65. LEFT JOIN TP_PM_PRODUCTIONDATA PD
  66. ON PD.USERID = T.USERID
  67. AND PD.VALUEFLAG = '1'
  68. AND PD.PROCEDUREID = 82
  69. AND PD.GROUTINGLINEID = WS.GROUTINGLINEID
  70. AND PD.CREATETIME >= T.BEGINTIME
  71. GROUP BY T.WS_ID
  72. ,T.SHIFT_TYPE
  73. ,T.USERID
  74. ,T.USERCODE
  75. ,U.USERNAME
  76. ,T.KB_WS_NAME
  77. ,T.STANDARDCAPACITY
  78. ,T.CLASSSETTINGSTAFFCOUNT
  79. ORDER BY T.WS_ID
  80. ,T.SHIFT_TYPE) Y) YY
  81. ORDER BY WS_ID
  82. ,SHIFT_TYPE
  83. ";
  84. //获取查询条件
  85. //List<CDAParameter> sqlPara = new List<CDAParameter>();
  86. //sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  87. //sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  88. //直接获取不分页数据
  89. //DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  90. DataTable dt = conn.ExecuteDatatable(sqlStr);
  91. string jsonStr = new JsonResult(dt).ToJson();
  92. context.Response.Write(jsonStr);
  93. }
  94. if(context.Request["m"].ToString()=="goods")
  95. {
  96. string dateBegin = DateTime.Now.ToString("yyyy-MM-01");
  97. //string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01");
  98. DateTime date = Convert.ToDateTime(dateBegin);
  99. //读取报表数据
  100. string sqlStr = @"
  101. SELECT YY.GOODSCODE
  102. ,YY.PLANNEDOUTPUT
  103. ,YY.YIELD
  104. ,ROUND(YY.COMP) COMP
  105. ,TO_CHAR(ROUND(YY.COMP)) || '%' COMP_TEST
  106. ,RANK() OVER(ORDER BY COMP_R) - 1 COMP_RANK
  107. FROM (SELECT Y.*
  108. ,Y.YIELD / Y.PLANNEDOUTPUT * 100 COMP
  109. ,DECODE(GOODSCODE, NULL, -1, Y.YIELD / Y.PLANNEDOUTPUT * 100) COMP_R
  110. FROM (SELECT T.GOODSCODE
  111. ,SUM(T.PLANNEDOUTPUT) PLANNEDOUTPUT
  112. ,NVL(SUM(PDD.YIELD), 0) YIELD
  113. FROM TP_MST_HGWS_GOODS_PLAN T
  114. LEFT JOIN (SELECT PD.GOODSID
  115. ,COUNT(PD.PRODUCTIONDATAID) YIELD
  116. FROM TP_PM_PRODUCTIONDATA PD
  117. WHERE PD.VALUEFLAG = '1'
  118. AND PD.PROCEDUREID = 82
  119. AND PD.CREATETIME >= @DATEBEGIN@
  120. AND PD.CREATETIME < @DATEEND@
  121. GROUP BY PD.GOODSID) PDD
  122. /*LEFT JOIN (SELECT pd.goodsid
  123. ,COUNT(pd.groutingdailydetailid) yield
  124. FROM tp_pm_groutingdailydetail pd
  125. INNER JOIN tp_pc_groutingline gl
  126. ON gl.groutinglineid = pd.groutinglineid
  127. WHERE pd.valueflag = '1'
  128. AND pd.groutingflag = '1'
  129. AND pd.scrapflag = '0'
  130. AND gl.buildingno = 'C'
  131. AND gl.floorno = 5
  132. AND gl.h_lineindex = 1
  133. AND pd.createtime >= @DATEBEGIN@
  134. AND pd.createtime < @DATEEND@
  135. GROUP BY pd.goodsid) pdd*/
  136. ON PDD.GOODSID = T.GOODSID
  137. WHERE T.PLANTYPE = 1
  138. AND T.PLANNEDOUTPUT > 0
  139. GROUP BY GROUPING SETS((T.GOODSCODE),())) Y) YY
  140. ORDER BY GOODSCODE
  141. ";
  142. //获取查询条件
  143. List<CDAParameter> sqlPara = new List<CDAParameter>();
  144. sqlPara.Add(new CDAParameter("DATEBEGIN", date, DataType.DateTime));
  145. sqlPara.Add(new CDAParameter("DATEEND", date.AddMonths(1), DataType.DateTime));
  146. //直接获取不分页数据
  147. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  148. string jsonStr = new JsonResult(dt).ToJson();
  149. context.Response.Write(jsonStr);
  150. }
  151. }
  152. }
  153. public decimal toNumber(object o)
  154. {
  155. if (o != DBNull.Value)
  156. return Convert.ToDecimal(o);
  157. else
  158. return 0;
  159. }
  160. public bool IsReusable
  161. {
  162. get
  163. {
  164. return false;
  165. }
  166. }
  167. }