export05.ashx 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <%@ WebHandler Language="C#" Class="export05" %>
  2. using System;
  3. using System.Web;
  4. using System.Data;
  5. using Curtain.DataAccess;
  6. using DK.XuWei.WebMes;
  7. using Newtonsoft.Json;
  8. using Newtonsoft.Json.Linq;
  9. public class export05 : IHttpHandler
  10. {
  11. public void ProcessRequest(HttpContext context)
  12. {
  13. context.Response.ContentType = "text/plain";
  14. using (IDataAccess conn = DataAccess.Create())
  15. {
  16. DataTable dtDevice = conn.ExecuteDatatable(@"
  17. SELECT
  18. 'SYJG' || W.WORKSTATIONID AS deviceCode,
  19. '试用结果' || W.WORKSTATIONNAME AS name
  20. FROM
  21. TP_PM_GOODSLEAK L
  22. INNER JOIN TP_MST_WORKSTATION W ON W.WORKSTATIONID = L.WS_ID
  23. WHERE
  24. L.LEAKTYPE = 2
  25. AND L.CREATETIME >= to_date( to_char( SYSDATE, 'yyyy-mm-dd hh' ), 'yyyy-mm-dd hh:mi:ss' )
  26. AND L.CREATETIME < to_date( to_char( SYSDATE + 1 / 24, 'yyyy-mm-dd hh' ), 'yyyy-mm-dd hh:mi:ss' )
  27. GROUP BY
  28. W.WORKSTATIONID,
  29. W.WORKSTATIONNAME
  30. ORDER BY
  31. W.WORKSTATIONNAME"
  32. );
  33. DataTable dtDeviceData = conn.ExecuteDatatable(@"
  34. SELECT
  35. t.deviceCode,
  36. t.name,
  37. t.TESTRESULT_测试结果
  38. FROM
  39. (
  40. SELECT
  41. 'SYJG' || W.WORKSTATIONID AS deviceCode,
  42. '试用结果' || W.WORKSTATIONNAME AS name,
  43. DECODE( L.IS_GOOD, 0, '不合格', 1, '合格', '' ) AS TESTRESULT_测试结果,
  44. rank ( ) over ( PARTITION BY W.WORKSTATIONNAME ORDER BY L.CREATETIME DESC ) AS rk
  45. FROM
  46. TP_PM_GOODSLEAK L
  47. INNER JOIN TP_MST_WORKSTATION W ON W.WORKSTATIONID = L.WS_ID
  48. WHERE
  49. L.LEAKTYPE = 2
  50. AND L.CREATETIME >= to_date( to_char( SYSDATE, 'yyyy-mm-dd hh' ), 'yyyy-mm-dd hh:mi:ss' )
  51. AND L.CREATETIME < to_date( to_char( SYSDATE + 1 / 24, 'yyyy-mm-dd hh' ), 'yyyy-mm-dd hh:mi:ss' )
  52. ) t
  53. WHERE
  54. t.rk <= 1
  55. ORDER BY
  56. t.name"
  57. );
  58. if (dtDevice.Rows.Count == 0 || dtDeviceData.Rows.Count == 0)
  59. {
  60. context.Response.Write("当前时段无数据");
  61. return;
  62. }
  63. // 拼接主体
  64. JObject data = new JObject();
  65. data.Add(new JProperty("industryName", "广东区域"));
  66. data.Add(new JProperty("companyName", "佛山恒洁卫浴有限公司"));
  67. data.Add(new JProperty("productName", "试用结果"));
  68. data.Add(new JProperty("productCode", "FSHJCPCL"));
  69. data.Add(new JProperty("protocol", "HTTP"));
  70. data.Add(new JProperty("classfy", "陶瓷生产设备"));
  71. data.Add(new JProperty("lever", "低端"));
  72. data.Add(new JProperty("dimension", "工业品"));
  73. // 拼接device
  74. JArray arrDevice = new JArray();
  75. JObject device = null;
  76. foreach (DataRow row in dtDevice.Rows)
  77. {
  78. device = new JObject();
  79. device.Add(new JProperty("name", row["name"]));
  80. device.Add(new JProperty("deviceCode", "FSHJ" + row["deviceCode"]));
  81. device.Add(new JProperty("province", "广东省"));
  82. device.Add(new JProperty("city", "佛山市"));
  83. device.Add(new JProperty("address", "三水区乐平镇中油大道 3 号"));
  84. device.Add(new JProperty("worth", "0"));
  85. device.Add(new JProperty("latitude", "0"));
  86. device.Add(new JProperty("longitude", "0"));
  87. device.Add(new JProperty("manufacture", "2021-10-13"));
  88. arrDevice.Add(device);
  89. }
  90. data.Add("device", arrDevice);
  91. // 拼接deviceData
  92. JArray arrDeviceData = new JArray();
  93. JObject deviceData = null;
  94. string[] colNames;
  95. // 时间戳
  96. TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
  97. string timestamp = Convert.ToInt64(ts.TotalMilliseconds).ToString();
  98. foreach (DataRow row in dtDeviceData.Rows)
  99. {
  100. foreach (DataColumn col in dtDeviceData.Columns)
  101. {
  102. if (col.ColumnName.Equals("DEVICECODE") || col.ColumnName.Equals("NAME"))
  103. {
  104. continue;
  105. }
  106. colNames = col.ColumnName.Split('_');
  107. deviceData = new JObject();
  108. deviceData.Add(new JProperty("deviceCode", "FSHJ" + row["deviceCode"]));
  109. deviceData.Add(new JProperty("name", colNames[1]));
  110. deviceData.Add(new JProperty("mark", colNames[0]));
  111. deviceData.Add(new JProperty("value", row[col].ToString()));
  112. deviceData.Add(new JProperty("timestamp", timestamp));
  113. arrDeviceData.Add(deviceData);
  114. }
  115. }
  116. data.Add("deviceData", arrDeviceData);
  117. //上报数据
  118. //string url = "http://edge.cosmoplat.com:30152/company/device/access";// 测试
  119. //string url = "http://edge.cosmoplat.com:30032/company/device/access";// 生产
  120. //string message = JsonClient.Post(url, data.ToString());
  121. //context.Response.Write(message);
  122. context.Response.Write(data.ToString());
  123. }
  124. }
  125. public bool IsReusable
  126. {
  127. get
  128. {
  129. return false;
  130. }
  131. }
  132. }