rpt.ashx 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <%@ WebHandler Language="C#" Class="rpt" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using Curtain.DataAccess;
  7. using DK.XuWei.WebMes;
  8. public class rpt : IHttpHandler, IReadOnlySessionState
  9. {
  10. public void ProcessRequest(HttpContext context)
  11. {
  12. context.Response.ContentType = "text/plain";
  13. using (IDataAccess conn = DataAccess.Create())
  14. {
  15. if (context.Request["m"].ToString() == "rate")
  16. {
  17. string sqlStr = @"
  18. SELECT T2.SJ,
  19. NVL(T1.NUM1, 0) AS NUM1,
  20. NVL(T2.NUM2, 0) AS NUM2
  21. FROM (SELECT TO_CHAR(DP.ACCOUNTDATE, 'MM/DD') AS ACCOUNTDATE,
  22. SUM(DPD.PLANQUANTITY) AS NUM1
  23. FROM TP_PC_DAILYPLAN DP
  24. LEFT JOIN TP_PC_DAILYPLANDETAIL DPD
  25. ON DP.DAILYPLANID = DPD.DAILYPLANID
  26. WHERE DP.VALUEFLAG = 1
  27. AND DPD.VALUEFLAG = 1
  28. AND DP.ACCOUNTDATE >= TRUNC(ADD_MONTHS(LAST_DAY(SYSDATE), -1) + 1)
  29. AND DP.ACCOUNTDATE < TRUNC(LAST_DAY(SYSDATE) + 1)
  30. GROUP BY TO_CHAR(DP.ACCOUNTDATE, 'MM/DD')) T1
  31. RIGHT JOIN (SELECT TO_CHAR(TRUNC(T.CREATETIME), 'MM/DD') AS SJ,
  32. NVL(SUM(T.GOODSLEVELTYPEID), 0) NUM2
  33. FROM (SELECT 1 AS GOODSLEVELTYPEID,
  34. PD.GOODSID,
  35. PD.CREATETIME
  36. FROM TP_PM_FINISHEDPRODUCT PD
  37. WHERE PD.VALUEFLAG = '1'
  38. AND PD.ACCOUNTID = 1
  39. AND PD.CREATETIME >= TRUNC(ADD_MONTHS(LAST_DAY(SYSDATE), -1) + 1)
  40. AND PD.CREATETIME < TRUNC(LAST_DAY(SYSDATE) + 1)) T
  41. INNER JOIN TP_MST_GOODS MSTGOODS
  42. ON MSTGOODS.GOODSID = T.GOODSID
  43. INNER JOIN TP_MST_GOODSTYPE MSTGOODSTYPE
  44. ON MSTGOODSTYPE.GOODSTYPEID = MSTGOODS.GOODSTYPEID
  45. WHERE MSTGOODSTYPE.GOODSTYPECODE LIKE '001001%'
  46. GROUP BY TO_CHAR(TRUNC(T.CREATETIME), 'MM/DD')) T2
  47. ON T2.SJ = T1.ACCOUNTDATE
  48. ORDER BY T2.SJ ";
  49. //直接获取不分页数据
  50. DataTable dt = conn.ExecuteDatatable(sqlStr);
  51. string jsonStr = new JsonResult(dt).ToJson();
  52. context.Response.Write(jsonStr);
  53. }
  54. else if (context.Request["m"].ToString() == "table1")
  55. {
  56. string sqlStr = @"
  57. SELECT * FROM (
  58. SELECT T1.MATNR,
  59. DECODE(INSTR(G.GOODSCODE, '-')
  60. ,0
  61. ,G.GOODSCODE
  62. ,SUBSTR(G.GOODSCODE, 0, LENGTH(G.GOODSCODE) - 2)) AS GOODSCODE,
  63. NVL(T1.NUM1, 0) AS NUM1,
  64. NVL(T2.NUM2, 0) AS NUM2,
  65. --NVL(T1.NUM1, 0) - NVL(T2.NUM2, 0) AS NUM3,
  66. CASE WHEN NVL(T1.NUM1, 0) < NVL(T2.NUM2, 0) THEN 0 ELSE NVL(T1.NUM1, 0) - NVL(T2.NUM2, 0) END AS NUM3,
  67. DECODE(NVL(T1.NUM1, 0)
  68. ,0
  69. ,'-'
  70. ,ROUND((NVL(T2.NUM2, 0) / DECODE(NVL(T1.NUM1, 1), 0, 1, NVL(T1.NUM1, 1))) * 100, 1) || '%') AS RATE
  71. FROM (SELECT DPD.MATNR,
  72. SUM(DPD.OUTQUANTITY) AS NUM1
  73. FROM TP_PC_DAILYPLAN DP
  74. LEFT JOIN TP_PC_DAILYPLANDETAIL DPD
  75. ON DP.DAILYPLANID = DPD.DAILYPLANID
  76. WHERE DP.VALUEFLAG = 1
  77. AND DPD.VALUEFLAG = 1
  78. AND DP.ACCOUNTDATE = TRUNC(SYSDATE)
  79. GROUP BY DPD.MATNR) T1
  80. LEFT JOIN (SELECT T.MATERIALCODE,
  81. NVL(SUM(T.GOODSLEVELTYPEID), 0) NUM2
  82. FROM (SELECT 1 AS GOODSLEVELTYPEID,
  83. GD.MATERIALCODE
  84. FROM TP_PM_FINISHEDPRODUCT PD
  85. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GD
  86. ON GD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  87. WHERE PD.VALUEFLAG = '1'
  88. AND PD.ACCOUNTID = 1
  89. AND PD.CREATETIME >= TRUNC(SYSDATE)
  90. AND PD.CREATETIME < TRUNC(SYSDATE) + 1) T
  91. GROUP BY T.MATERIALCODE) T2
  92. ON T1.MATNR = T2.MATERIALCODE
  93. LEFT JOIN (SELECT T.MATERIALCODE,
  94. MIN(T.GOODSID) AS GOODSID
  95. FROM (SELECT G.GOODSID,
  96. G.MATERIALCODE
  97. FROM TP_MST_GOODS G
  98. WHERE G.VALUEFLAG = '1'
  99. AND G.PLANFLAG = '1'
  100. UNION ALL
  101. SELECT S.GOODSID,
  102. S.MATERIALCODE
  103. FROM TP_MST_GOODSLOGOSAP S
  104. INNER JOIN TP_MST_GOODS G
  105. ON G.GOODSID = S.GOODSID
  106. WHERE G.VALUEFLAG = '1'
  107. AND G.PLANFLAG = '1') T
  108. GROUP BY T.MATERIALCODE) T3
  109. ON T3.MATERIALCODE = T1.MATNR
  110. LEFT JOIN TP_MST_GOODS G
  111. ON G.GOODSID = T3.GOODSID
  112. --ORDER BY ROUND((NVL(T2.NUM2, 0) / DECODE(NVL(T1.NUM1, 1), 0, 1, NVL(T1.NUM1, 1))) * 100, 1) DESC,
  113. -- T1.NUM1 DESC,
  114. -- T2.NUM2 DESC,
  115. -- G.GOODSCODE
  116. ) WHERE NUM1 > 0 AND NUM2 > 0 ORDER BY TO_NUMBER(SUBSTR(RATE, 0, LENGTH(RATE)-1)) DESC";
  117. //直接获取不分页数据
  118. DataTable dt = conn.ExecuteDatatable(sqlStr);
  119. string jsonStr = new JsonResult(dt).ToJson();
  120. context.Response.Write(jsonStr);
  121. }
  122. else if (context.Request["m"].ToString() == "table2")
  123. {
  124. string sqlStr = @"
  125. SELECT * FROM (
  126. SELECT T1.MATNR,
  127. DECODE(INSTR(G.GOODSCODE, '-')
  128. ,0
  129. ,G.GOODSCODE
  130. ,SUBSTR(G.GOODSCODE, 0, LENGTH(G.GOODSCODE) - 2)) AS GOODSCODE,
  131. NVL(T1.NUM1, 0) AS NUM1,
  132. NVL(T2.NUM2, 0) AS NUM2,
  133. NVL(T1.NUM1, 0) - NVL(T2.NUM2, 0) AS NUM3,
  134. DECODE(NVL(T1.NUM1, 0)
  135. ,0
  136. ,'-'
  137. ,DECODE(NVL(T2.NUM2, 0)
  138. ,0
  139. ,'0%'
  140. ,TO_CHAR((NVL(T2.NUM2, 0) / DECODE(NVL(T1.NUM1, 1), 0, 1, NVL(T1.NUM1, 1))) * 100
  141. ,'FM99990.0') || '%')) AS RATE
  142. FROM (SELECT DPD.MATNR,
  143. SUM(DPD.MENGE) AS NUM1
  144. FROM TP_PC_MONTHPLAN DP
  145. LEFT JOIN TP_PC_MONTHPLANDETAIL DPD
  146. ON DP.MONTHPLANID = DPD.MONTHPLANID
  147. WHERE DP.VALUEFLAG = 1
  148. AND DPD.VALUEFLAG = 1
  149. AND DP.PROCEDUREID = 104
  150. AND DP.ACCOUNTMONTH >= TO_CHAR(SYSDATE, 'YYYY-MM')
  151. GROUP BY DPD.MATNR) T1
  152. LEFT JOIN (SELECT T.MATERIALCODE,
  153. NVL(SUM(T.GOODSLEVELTYPEID), 0) NUM2
  154. FROM (SELECT 1 AS GOODSLEVELTYPEID,
  155. GD.MATERIALCODE
  156. FROM TP_PM_FINISHEDPRODUCT PD
  157. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GD
  158. ON GD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  159. WHERE PD.VALUEFLAG = '1'
  160. AND PD.ACCOUNTID = 1
  161. AND PD.CREATETIME >= TRUNC(ADD_MONTHS(LAST_DAY(SYSDATE), -1) + 1)
  162. AND PD.CREATETIME < TRUNC(LAST_DAY(SYSDATE) + 1)) T
  163. GROUP BY T.MATERIALCODE) T2
  164. ON T1.MATNR = T2.MATERIALCODE
  165. LEFT JOIN (SELECT T.MATERIALCODE,
  166. MIN(T.GOODSID) AS GOODSID
  167. FROM (SELECT G.GOODSID,
  168. G.MATERIALCODE
  169. FROM TP_MST_GOODS G
  170. WHERE G.VALUEFLAG = '1'
  171. AND G.PLANFLAG = '1'
  172. UNION ALL
  173. SELECT S.GOODSID,
  174. S.MATERIALCODE
  175. FROM TP_MST_GOODSLOGOSAP S
  176. INNER JOIN TP_MST_GOODS G
  177. ON G.GOODSID = S.GOODSID
  178. WHERE G.VALUEFLAG = '1'
  179. AND G.PLANFLAG = '1') T
  180. GROUP BY T.MATERIALCODE) T3
  181. ON T3.MATERIALCODE = T1.MATNR
  182. LEFT JOIN TP_MST_GOODS G
  183. ON G.GOODSID = T3.GOODSID
  184. --ORDER BY ROUND((NVL(T2.NUM2, 0) / DECODE(NVL(T1.NUM1, 1), 0, 1, NVL(T1.NUM1, 1))) * 100, 1) DESC,
  185. -- T1.NUM1 DESC,
  186. -- T2.NUM2 DESC,
  187. -- G.GOODSCODE
  188. ) WHERE NUM1 > 0 AND NUM2 > 0 ORDER BY TO_NUMBER(SUBSTR(RATE, 0, LENGTH(RATE)-1)) DESC";
  189. //直接获取不分页数据
  190. DataTable dt = conn.ExecuteDatatable(sqlStr);
  191. string jsonStr = new JsonResult(dt).ToJson();
  192. context.Response.Write(jsonStr);
  193. }
  194. }
  195. }
  196. public decimal toNumber(object o)
  197. {
  198. if (o != DBNull.Value)
  199. return Convert.ToDecimal(o);
  200. else
  201. return 0;
  202. }
  203. public bool IsReusable
  204. {
  205. get
  206. {
  207. return false;
  208. }
  209. }
  210. }