export01.ashx 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <%@ WebHandler Language="C#" Class="export01" %>
  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 export01 : 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. 'GYZJ' || GROUTINGLINECODE AS deviceCode,
  19. '高压注浆设备' || GROUTINGLINECODE AS name
  20. FROM
  21. TP_PM_H_GROUTINGPARAS
  22. GROUP BY
  23. GROUTINGLINECODE
  24. ORDER BY
  25. GROUTINGLINECODE"
  26. );
  27. DataTable dtDeviceData = conn.ExecuteDatatable(@"
  28. SELECT
  29. t.deviceCode,
  30. t.name,
  31. t.LZTIME_低注时间,
  32. t.GZTIME_高注时间,
  33. t.PNTIME_排泥时间,
  34. t.GGTIME_巩固时间,
  35. t.PRESSURE_压力,
  36. t.TEMPERATURE_温度
  37. FROM
  38. (
  39. SELECT
  40. 'GYZJ' || GP.GROUTINGLINECODE AS deviceCode,
  41. '高压注浆设备' || GP.GROUTINGLINECODE AS name,
  42. GP.LZ_TIME AS LZTIME_低注时间,
  43. GP.GZ_TIME AS GZTIME_高注时间,
  44. GP.PN_TIME AS PNTIME_排泥时间,
  45. GP.GG_TIME AS GGTIME_巩固时间,
  46. GPT.G_PRESSURE AS PRESSURE_压力,
  47. GPT.G_TEMPERATURE AS TEMPERATURE_温度,
  48. rank ( ) over ( PARTITION BY GP.GROUTINGDAILYID ORDER BY GPT.HGPT_ID DESC ) AS rk
  49. FROM
  50. TP_PM_H_GROUTINGPARAS GP
  51. INNER JOIN ( SELECT MAX( GROUTINGDAILYID ) AS GROUTINGDAILYID FROM TP_PM_H_GROUTINGPARAS GROUP BY GROUTINGLINECODE, H_LINEINDEX ) T ON T.GROUTINGDAILYID = GP.GROUTINGDAILYID
  52. LEFT JOIN TP_PM_H_GROUTINGPARAS_PT GPT ON GPT.GROUTINGDAILYID = GP.GROUTINGDAILYID
  53. ) t
  54. WHERE
  55. t.rk <= 1
  56. ORDER BY
  57. t.name"
  58. );
  59. // 拼接主体
  60. JObject data = new JObject();
  61. data.Add(new JProperty("industryName", "广东区域"));
  62. data.Add(new JProperty("companyName", "佛山恒洁卫浴有限公司"));
  63. data.Add(new JProperty("productName", "高压注浆设备"));
  64. data.Add(new JProperty("productCode", "FSHJGYZJ"));
  65. data.Add(new JProperty("protocol", "HTTP"));
  66. data.Add(new JProperty("classfy", "陶瓷生产设备"));
  67. data.Add(new JProperty("lever", "低端"));
  68. data.Add(new JProperty("dimension", "工业品"));
  69. // 拼接device
  70. JArray arrDevice = new JArray();
  71. JObject device = null;
  72. foreach (DataRow row in dtDevice.Rows)
  73. {
  74. device = new JObject();
  75. device.Add(new JProperty("name", row["name"]));
  76. device.Add(new JProperty("deviceCode", "FSHJ" + row["deviceCode"]));
  77. device.Add(new JProperty("province", "广东省"));
  78. device.Add(new JProperty("city", "佛山市"));
  79. device.Add(new JProperty("address", "三水区乐平镇中油大道 3 号"));
  80. device.Add(new JProperty("worth", "0"));
  81. device.Add(new JProperty("latitude", "0"));
  82. device.Add(new JProperty("longitude", "0"));
  83. device.Add(new JProperty("manufacture", "2021-10-13"));
  84. arrDevice.Add(device);
  85. }
  86. data.Add("device", arrDevice);
  87. // 拼接deviceData
  88. JArray arrDeviceData = new JArray();
  89. JObject deviceData = null;
  90. string[] colNames;
  91. // 时间戳
  92. TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
  93. string timestamp = Convert.ToInt64(ts.TotalMilliseconds).ToString();
  94. foreach (DataRow row in dtDeviceData.Rows)
  95. {
  96. foreach (DataColumn col in dtDeviceData.Columns)
  97. {
  98. if (col.ColumnName.Equals("DEVICECODE") || col.ColumnName.Equals("NAME"))
  99. {
  100. continue;
  101. }
  102. colNames = col.ColumnName.Split('_');
  103. deviceData = new JObject();
  104. deviceData.Add(new JProperty("deviceCode", "FSHJ" + row["deviceCode"]));
  105. deviceData.Add(new JProperty("name", colNames[1]));
  106. deviceData.Add(new JProperty("mark", colNames[0]));
  107. deviceData.Add(new JProperty("value", row[col].ToString()));
  108. deviceData.Add(new JProperty("timestamp", timestamp));
  109. arrDeviceData.Add(deviceData);
  110. }
  111. }
  112. data.Add("deviceData", arrDeviceData);
  113. //上报数据
  114. //string url = "http://edge.cosmoplat.com:30152/company/device/access";// 测试
  115. string url = "http://edge.cosmoplat.com:30032/company/device/access";// 生产
  116. string message = JsonClient.Post(url, data.ToString());
  117. context.Response.Write(message);
  118. context.Response.Write(data.ToString());
  119. //data.Add("deviceData", JArray.Parse(JsonConvert.SerializeObject(dt)));
  120. }
  121. }
  122. public bool IsReusable
  123. {
  124. get
  125. {
  126. return false;
  127. }
  128. }
  129. }