rpt.ashx 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. <%@ WebHandler Language="C#" Class="rpt" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using Newtonsoft.Json.Linq;
  7. using Curtain.Net.Sockets.PLC;
  8. using Curtain.Net.Sockets.PLC.Model.Siemens;
  9. using Curtain.DataAccess;
  10. using DK.XuWei.WebMes;
  11. public class rpt : IHttpHandler, IReadOnlySessionState
  12. {
  13. public void ProcessRequest(HttpContext context)
  14. {
  15. context.Response.ContentType = "text/plain";
  16. using (IDataAccess conn = DataAccess.Create())
  17. {
  18. if (context.Request["m"].ToString() == "packingDataNumber") {
  19. string sqlStr=@"
  20. SELECT
  21. COUNT(1)AS counts
  22. FROM(
  23. SELECT
  24. M.PACKINGLINE AS 线号,
  25. G.GOODSCODE AS 产品型号,
  26. GM.MATERIALCODE AS 物料编码,
  27. L.LOGONAME AS 商标,
  28. NVL( ML.LOGONAME, '' ) AS 商标变更,
  29. G.OUTLETDISTANCE AS 出水距,
  30. M.PLATENUM AS 任务数量,
  31. M.OUTNUM AS 出库数量,
  32. CASE WHEN M.STATUS = '-1' THEN '未确认'
  33. WHEN M.STATUS = '0' THEN '队列中'
  34. WHEN M.STATUS = '1' THEN '执行中'
  35. WHEN M.STATUS = '2' THEN '已完成'
  36. WHEN M.STATUS = '3' THEN '异常终止'
  37. END AS 状态,
  38. M.CREATETIME AS 下单时间
  39. FROM
  40. TP_MST_PACKINGFORM M
  41. LEFT JOIN V_GOODS_MATERIALCODE GM ON GM.GOODSID = M.GOODSID
  42. AND GM.MATERIALCODE = M.MATERIALCODE
  43. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = M.GOODSID
  44. LEFT JOIN TP_MST_LOGO L ON L.LOGOID = G.LOGOID
  45. LEFT JOIN TP_MST_LOGO ML ON ML.LOGOID = M.LOGOID
  46. WHERE
  47. M.VALUEFLAG = '1'
  48. AND M.STATUS < 2 ) ";
  49. object count = conn.ExecuteScalar(sqlStr,null);
  50. JObject json = new JObject(
  51. new JProperty("success",true),
  52. new JProperty("counts", Convert.ToInt32(count))
  53. );
  54. context.Response.Write(json.ToString());
  55. }
  56. //成型产量 月
  57. if (context.Request["m"].ToString() == "packingData")
  58. {
  59. string sqlStr1 = @"
  60. SELECT
  61. ROWNUM AS 序号,
  62. M.PACKINGLINE AS 线号,
  63. G.GOODSCODE AS 产品型号,
  64. GM.MATERIALCODE AS 物料编码,
  65. L.LOGONAME AS 商标,
  66. NVL( ML.LOGONAME, '' ) AS 商标变更,
  67. G.OUTLETDISTANCE AS 出水距,
  68. M.PLATENUM AS 任务数量,
  69. M.OUTNUM AS 出库数量,
  70. CASE WHEN M.STATUS = '-1' THEN '未确认'
  71. WHEN M.STATUS = '0' THEN '队列中'
  72. WHEN M.STATUS = '1' THEN '执行中'
  73. WHEN M.STATUS = '2' THEN '已完成'
  74. WHEN M.STATUS = '3' THEN '异常终止'
  75. END AS 状态,
  76. M.CREATETIME AS 下单时间
  77. FROM
  78. TP_MST_PACKINGFORM M
  79. LEFT JOIN V_GOODS_MATERIALCODE GM ON GM.GOODSID = M.GOODSID
  80. AND GM.MATERIALCODE = M.MATERIALCODE
  81. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = M.GOODSID
  82. LEFT JOIN TP_MST_LOGO L ON L.LOGOID = G.LOGOID
  83. LEFT JOIN TP_MST_LOGO ML ON ML.LOGOID = M.LOGOID
  84. WHERE
  85. M.VALUEFLAG = '1'
  86. AND M.STATUS < 2
  87. --AND TRUNC( M.CREATETIME ) = TRUNC( SYSDATE )
  88. ORDER BY
  89. ROWNUM,
  90. M.STATUS,
  91. M.PACKINGLINE,
  92. M.begintime
  93. ";
  94. int page = 1;
  95. if (Convert.ToInt32(context.Request["page"].ToString()) != 1)
  96. {
  97. page = Convert.ToInt32(context.Request["page"].ToString());
  98. }
  99. int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 3;
  100. //获取分页数据
  101. int total = 0;
  102. DataTable dt = conn.SelectPages(page, rows, out total, sqlStr1);
  103. context.Response.Write(new JsonResult(dt) { total = total }.ToJson());
  104. }
  105. else if (context.Request["m"].ToString() == "canvasDayCL3")
  106. {
  107. DataTable dt = conn.ExecuteDatatable(@"
  108. SELECT
  109. TO_CHAR(CREATETIME,'dd') AS SJ,
  110. SUM( SBZ001 ) SBZ001,
  111. SUM( SBZ002 ) SBZ002
  112. FROM
  113. (
  114. SELECT
  115. CREATETIME,
  116. CASE WHEN USERCODE = 'SBZ001' THEN 1 ELSE 0 END SBZ001,
  117. CASE WHEN USERCODE = 'SBZ002' THEN 1 ELSE 0 END SBZ002
  118. FROM
  119. TP_PM_PRODUCTIONDATA
  120. WHERE
  121. USERCODE IN ( 'SBZ001', 'SBZ002' )
  122. AND CREATETIME >= trunc(sysdate)+7/24
  123. AND TO_CHAR(CREATETIME,'yyyymmddhh24miss') <= to_char(sysdate+1,'yyyyMMdd')||'055959'
  124. ORDER BY CREATETIME
  125. )
  126. GROUP BY TO_CHAR(CREATETIME,'dd')
  127. ORDER BY TO_CHAR(CREATETIME,'dd')
  128. "
  129. );
  130. string jsonStr = new JsonResult(dt).ToJson();
  131. context.Response.Write(jsonStr);
  132. }
  133. else if (context.Request["m"].ToString() == "pack")
  134. {
  135. try
  136. {
  137. //string url = "http://api-iothub-iotsuite-ensaas.leando.cloud/v1/devices/b3d314fd19584f59b7da1f4a898d8dff/deviceshadow";
  138. //string result = JsonClient.Get(url);
  139. //JObject json = JObject.Parse(result);
  140. //包装机器人
  141. JArray dataArray = new JArray();
  142. //自动装箱01
  143. dataArray.Add(new JObject(new JProperty("data", plcData("172.18.36.37", "240.0").ToString())));
  144. //自动码垛01
  145. dataArray.Add(new JObject(new JProperty("data", plcData("172.18.36.15", "240.0").ToString())));
  146. //自动装箱02
  147. dataArray.Add(new JObject(new JProperty("data", plcData("172.18.36.35", "240.0").ToString())));
  148. //自动码垛02
  149. dataArray.Add(new JObject(new JProperty("data", plcData("172.18.36.95", "240.0").ToString())));
  150. //输出数据
  151. context.Response.Write(dataArray.ToString());
  152. }
  153. catch (Exception ex)
  154. {
  155. context.Response.Write("[]");
  156. Curtain.Log.Logger.Error(ex);
  157. }
  158. } else if (context.Request["m"].ToString() == "packHour") {
  159. DataTable dt = conn.ExecuteDatatable(@"
  160. --包装产量日统计(小时)
  161. SELECT
  162. TO_CHAR(CREATETIME,'HH24') AS SJ,
  163. SUM( SBZ001 ) SBZ001,
  164. SUM( SBZ002 ) SBZ002
  165. FROM
  166. (
  167. SELECT
  168. CREATETIME,
  169. CASE WHEN USERCODE = 'SBZ001' THEN 1 ELSE 0 END SBZ001,
  170. CASE WHEN USERCODE = 'SBZ002' THEN 1 ELSE 0 END SBZ002
  171. FROM
  172. TP_PM_PRODUCTIONDATA
  173. WHERE
  174. USERCODE IN ( 'SBZ001', 'SBZ002' )
  175. AND PROCEDUREID = 107
  176. AND CREATETIME >= TRUNC(SYSDATE) + INTERVAL '7' HOUR
  177. AND CREATETIME < TRUNC(SYSDATE) + 1 + INTERVAL '6' HOUR
  178. )
  179. GROUP BY TO_CHAR(CREATETIME,'HH24')
  180. ORDER BY TO_CHAR(CREATETIME,'HH24')");
  181. string jsonStr = new JsonResult(dt).ToJson();
  182. context.Response.Write(jsonStr);
  183. }else if (context.Request["m"].ToString() == "packDay") {
  184. DataTable dt = conn.ExecuteDatatable(@"
  185. WITH 数据 AS (
  186. SELECT
  187. TO_CHAR(CREATETIME,'DD') AS SJ,
  188. SUM( SBZ001 ) SBZ001,
  189. SUM( SBZ002 ) SBZ002
  190. FROM
  191. (
  192. SELECT
  193. CREATETIME ,
  194. CASE WHEN USERCODE = 'SBZ001' THEN 1 ELSE 0 END SBZ001,
  195. CASE WHEN USERCODE = 'SBZ002' THEN 1 ELSE 0 END SBZ002
  196. FROM
  197. TP_PM_PRODUCTIONDATA
  198. WHERE
  199. USERCODE IN ( 'SBZ001', 'SBZ002' )
  200. AND PROCEDUREID = 107
  201. AND CREATETIME >= trunc(sysdate,'MM')
  202. AND CREATETIME <= trunc(sysdate,'DD')
  203. )
  204. GROUP BY TO_CHAR(CREATETIME,'DD')
  205. ORDER BY TO_CHAR(CREATETIME,'DD')
  206. ),
  207. 日期 AS (
  208. SELECT
  209. TO_CHAR(DAY,'DD') AS SJ
  210. FROM(
  211. SELECT TRUNC(SYSDATE,'MM')+ROWNUM-1 AS DAY
  212. FROM dual connect by ROWNUM<=to_char(last_day(SYSDATE),'dd')
  213. )
  214. )
  215. SELECT
  216. 日期.SJ,
  217. NVL(数据.SBZ001, 0) AS SBZ001,
  218. NVL(数据.SBZ002, 0) AS SBZ002
  219. FROM 日期
  220. LEFT JOIN 数据 ON 数据.SJ=日期.SJ
  221. ORDER BY 日期.SJ ASC ");
  222. string jsonStr = new JsonResult(dt).ToJson();
  223. context.Response.Write(jsonStr);
  224. }
  225. else if (context.Request["m"].ToString() == "pg")
  226. {
  227. string sqlStr = @"
  228. WITH 基础 AS(
  229. SELECT
  230. FD.INSPECTTYPE,
  231. FD.INSPECTITEM 检验项目,
  232. COUNT(DISTINCT FD.BARCODE) 检验数量,
  233. SUM(CASE WHEN FD.ISQUALIFIED = 0 THEN 1 ELSE 0 END) 不合格数量
  234. FROM TP_PM_FQCITEMSDATA FD
  235. left join TP_PM_FQCITEMS F ON F.ITEMSID = FD.ITEMSID
  236. WHERE FD.VALUEFLAG=1
  237. AND F.inspectname in ('包装检验通用版','功能检验通用版','外观检验标准') and F.valueflag = 1
  238. AND TRUNC( FD.CREATETIME ) = TRUNC(SYSDATE)
  239. GROUP BY FD.INSPECTITEM,FD.INSPECTTYPE
  240. ),
  241. 总不合格数 AS (
  242. SELECT
  243. SUM(CASE WHEN FD.ISQUALIFIED = 0 THEN 1 ELSE 0 END) 总不合格数
  244. FROM TP_PM_FQCITEMSDATA FD
  245. left join TP_PM_FQCITEMS F ON F.ITEMSID = FD.ITEMSID
  246. WHERE FD.VALUEFLAG=1
  247. AND TRUNC( FD.CREATETIME ) = TRUNC(SYSDATE)
  248. AND F.inspectname in ('包装检验通用版','功能检验通用版','外观检验标准') and F.valueflag = 1
  249. )
  250. SELECT
  251. CASE WHEN INSPECTTYPE = 617 THEN '包装-合格'
  252. WHEN INSPECTTYPE = 647 THEN '功能-合格'
  253. WHEN INSPECTTYPE = 616 THEN '外观-合格'
  254. ELSE '' END AS 类型,
  255. SUM(检验数量) - SUM(不合格数量) AS 合格
  256. FROM 基础
  257. LEFT JOIN 总不合格数 ON 1 = 1
  258. GROUP BY INSPECTTYPE
  259. UNION ALL
  260. SELECT
  261. CASE WHEN INSPECTTYPE = 617 THEN '包装-不合格'
  262. WHEN INSPECTTYPE = 647 THEN '功能-不合格'
  263. WHEN INSPECTTYPE = 616 THEN '外观-不合格'
  264. ELSE '' END AS 类型,
  265. SUM(不合格数量) AS 不合格
  266. FROM 基础
  267. LEFT JOIN 总不合格数 ON 1 = 1
  268. GROUP BY INSPECTTYPE
  269. ";
  270. //直接获取不分页数据
  271. DataTable dt = conn.ExecuteDatatable(sqlStr);
  272. string jsonStr = new JsonResult(dt).ToJson();
  273. context.Response.Write(jsonStr);
  274. }
  275. }
  276. }
  277. public string plcData(string ip, string db)
  278. {
  279. PLCResult<Int16> result = SiemensS7.PlcRead<Int16>(ip, db);
  280. return result.Data.ToString();
  281. }
  282. public bool IsReusable
  283. {
  284. get
  285. {
  286. return false;
  287. }
  288. }
  289. }