rpt.ashx 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  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. if (context.Request["m"].ToString() == "master")
  21. {
  22. //读取报表数据
  23. string sqlStr = @"
  24. WITH hour AS (
  25. SELECT
  26. 00 AS h
  27. FROM
  28. dual UNION
  29. SELECT
  30. 01 AS h
  31. FROM
  32. dual UNION
  33. SELECT
  34. 02 AS h
  35. FROM
  36. dual UNION
  37. SELECT
  38. 03 AS h
  39. FROM
  40. dual UNION
  41. SELECT
  42. 04 AS h
  43. FROM
  44. dual UNION
  45. SELECT
  46. 05 AS h
  47. FROM
  48. dual UNION
  49. SELECT
  50. 06 AS h
  51. FROM
  52. dual UNION
  53. SELECT
  54. 07 AS h
  55. FROM
  56. dual UNION
  57. SELECT
  58. 08 AS h
  59. FROM
  60. dual UNION
  61. SELECT
  62. 09 AS h
  63. FROM
  64. dual UNION
  65. SELECT
  66. 10 AS h
  67. FROM
  68. dual UNION
  69. SELECT
  70. 11 AS h
  71. FROM
  72. dual UNION
  73. SELECT
  74. 12 AS h
  75. FROM
  76. dual UNION
  77. SELECT
  78. 13 AS h
  79. FROM
  80. dual UNION
  81. SELECT
  82. 14 AS h
  83. FROM
  84. dual UNION
  85. SELECT
  86. 15 AS h
  87. FROM
  88. dual UNION
  89. SELECT
  90. 16 AS h
  91. FROM
  92. dual UNION
  93. SELECT
  94. 17 AS h
  95. FROM
  96. dual UNION
  97. SELECT
  98. 18 AS h
  99. FROM
  100. dual UNION
  101. SELECT
  102. 19 AS h
  103. FROM
  104. dual UNION
  105. SELECT
  106. 20 AS h
  107. FROM
  108. dual UNION
  109. SELECT
  110. 21 AS h
  111. FROM
  112. dual UNION
  113. SELECT
  114. 22 AS h
  115. FROM
  116. dual UNION
  117. SELECT
  118. 23 AS h
  119. FROM
  120. dual
  121. )
  122. SELECT
  123. h.H AS TIME,
  124. '4楼干燥房1' AS NAME1,
  125. DECODE( NVL( t.设定温度, 0 ), 0, 0,NVL( t.房内温度, 0 )) AS WD1,
  126. NVL( t.设定温度, 0 ) AS WD1_SD,
  127. DECODE( NVL( t.设定湿度, 0 ), 0, 0, NVL( t.房内湿度, 0 )) AS SD1,
  128. NVL( t.设定湿度, 0 ) AS SD1_SD,
  129. '4楼干燥房2' AS NAME2,
  130. DECODE( NVL( t2.设定温度, 0 ), 0, 0,NVL( t2.房内温度, 0 )) AS WD2,
  131. NVL( t2.设定温度, 0 ) AS WD2_SD,
  132. DECODE( NVL( t2.设定湿度, 0 ), 0, 0, NVL( t2.房内湿度, 0 )) AS SD2,
  133. NVL( t2.设定湿度, 0 ) AS SD2_SD,
  134. '4楼干燥房3' AS NAME3,
  135. DECODE( NVL( t3.设定温度, 0 ), 0, 0,NVL( t3.房内温度, 0 )) AS WD3,
  136. NVL( t3.设定温度, 0 ) AS WD3_SD,
  137. DECODE( NVL( t3.设定湿度, 0 ), 0, 0, NVL( t3.房内湿度, 0 )) AS SD3,
  138. NVL( t3.设定湿度, 0 ) AS SD3_SD,
  139. '4楼干燥房4' AS NAME1,
  140. DECODE( NVL( t4.设定温度, 0 ), 0, 0,NVL( t4.房内温度, 0 )) AS WD4,
  141. NVL( t4.设定温度, 0 ) AS WD4_SD,
  142. DECODE( NVL( t4.设定湿度, 0 ), 0, 0, NVL( t4.房内湿度, 0 )) AS SD4,
  143. NVL( t4.设定湿度, 0 ) AS SD4_SD
  144. FROM
  145. (
  146. SELECT
  147. TO_CHAR( V.CREATETIME, 'HH24' ) AS 读取时间,
  148. ROUND( AVG( V.V100 ), 2 ) AS 房内温度,
  149. ROUND( AVG( V.V104 ), 2 ) AS 设定温度,
  150. ROUND( AVG( V.V108 ), 2 ) AS 房内湿度,
  151. ROUND( AVG( V.V112 ), 2 ) AS 设定湿度
  152. FROM
  153. T_XT_PLC_V V
  154. LEFT JOIN T_XT_PLC P ON P.PLC_ID = V.PLC_ID
  155. WHERE
  156. V.CREATETIME >= TRUNC( date'2021-11-21' )
  157. AND V.CREATETIME < TRUNC( date'2021-11-21' ) + 1
  158. AND P.PLC_IP = '172.18.40.51'
  159. GROUP BY
  160. TO_CHAR( V.CREATETIME, 'HH24' )
  161. ) t
  162. RIGHT JOIN ( SELECT h FROM hour ) h ON t.读取时间 = h.h
  163. LEFT JOIN (
  164. SELECT
  165. TO_CHAR( V.CREATETIME, 'HH24' ) AS 读取时间,
  166. ROUND( AVG( V.V100 ), 2 ) AS 房内温度,
  167. ROUND( AVG( V.V104 ), 2 ) AS 设定温度,
  168. ROUND( AVG( V.V108 ), 2 ) AS 房内湿度,
  169. ROUND( AVG( V.V112 ), 2 ) AS 设定湿度
  170. FROM
  171. T_XT_PLC_V V
  172. LEFT JOIN T_XT_PLC P ON P.PLC_ID = V.PLC_ID
  173. WHERE
  174. V.CREATETIME >= TRUNC( date'2021-11-21' )
  175. AND V.CREATETIME < TRUNC( date'2021-11-21' ) + 1
  176. AND P.PLC_IP = '172.18.40.52'
  177. GROUP BY
  178. TO_CHAR( V.CREATETIME, 'HH24' )
  179. ) t2 ON t2.读取时间 = t.读取时间
  180. LEFT JOIN (
  181. SELECT
  182. TO_CHAR( V.CREATETIME, 'HH24' ) AS 读取时间,
  183. ROUND( AVG( V.V100 ), 2 ) AS 房内温度,
  184. ROUND( AVG( V.V104 ), 2 ) AS 设定温度,
  185. ROUND( AVG( V.V108 ), 2 ) AS 房内湿度,
  186. ROUND( AVG( V.V112 ), 2 ) AS 设定湿度
  187. FROM
  188. T_XT_PLC_V V
  189. LEFT JOIN T_XT_PLC P ON P.PLC_ID = V.PLC_ID
  190. WHERE
  191. V.CREATETIME >= TRUNC( date'2021-11-21' )
  192. AND V.CREATETIME < TRUNC( date'2021-11-21' ) + 1
  193. AND P.PLC_IP = '172.18.40.53'
  194. GROUP BY
  195. TO_CHAR( V.CREATETIME, 'HH24' )
  196. ) t3 ON t3.读取时间 = t.读取时间
  197. LEFT JOIN (
  198. SELECT
  199. TO_CHAR( V.CREATETIME, 'HH24' ) AS 读取时间,
  200. ROUND( AVG( V.V100 ), 2 ) AS 房内温度,
  201. ROUND( AVG( V.V104 ), 2 ) AS 设定温度,
  202. ROUND( AVG( V.V108 ), 2 ) AS 房内湿度,
  203. ROUND( AVG( V.V112 ), 2 ) AS 设定湿度
  204. FROM
  205. T_XT_PLC_V V
  206. LEFT JOIN T_XT_PLC P ON P.PLC_ID = V.PLC_ID
  207. WHERE
  208. V.CREATETIME >= TRUNC( date'2021-11-21' )
  209. AND V.CREATETIME < TRUNC( date'2021-11-21' ) + 1
  210. AND P.PLC_IP = '172.18.40.54'
  211. GROUP BY
  212. TO_CHAR( V.CREATETIME, 'HH24' )
  213. ) t4 ON t4.读取时间 = t.读取时间
  214. ORDER BY h.H
  215. ";
  216. //直接获取不分页数据
  217. DataTable dt = conn.ExecuteDatatable(sqlStr);
  218. string jsonStr = new JsonResult(dt).ToJson();
  219. context.Response.Write(jsonStr);
  220. }
  221. }
  222. }
  223. public decimal toNumber(object o)
  224. {
  225. if (o != DBNull.Value)
  226. return Convert.ToDecimal(o);
  227. else
  228. return 0;
  229. }
  230. public bool IsReusable
  231. {
  232. get
  233. {
  234. return false;
  235. }
  236. }
  237. }