Led.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using DK.XuWei.WebMes;
  6. using Curtain.DataAccess;
  7. using Curtain.Log;
  8. using System.Data;
  9. /// <summary>
  10. /// 发送LED看板数据到PLC xuwei add 2023-05-12
  11. /// </summary>
  12. public static class Led
  13. {
  14. public static void SendData()
  15. {
  16. //一线产量明细
  17. DataTable oneDt = new DataTable();
  18. //二线产量明细
  19. DataTable twoDt = new DataTable();
  20. //总计产量
  21. DataTable infoDt = new DataTable();
  22. //读取看板数据
  23. using (IDataAccess conn = DataAccess.Create())
  24. {
  25. //一线明细
  26. oneDt = conn.ExecuteDatatable(@"
  27. SELECT
  28. sj,
  29. CL
  30. FROM
  31. (
  32. SELECT
  33. '07-09' AS sj,
  34. SUM( ct ) CL
  35. FROM
  36. (
  37. SELECT
  38. TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
  39. COUNT( pd.BARCODE ) ct
  40. FROM
  41. TP_PM_PRODUCTIONDATA pd
  42. WHERE
  43. pd.USERCODE = 'Z26'
  44. AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
  45. AND pd.VALUEFLAG = 1
  46. AND pd.PROCEDUREID = 2
  47. GROUP BY
  48. TO_CHAR( pd.CREATETIME, 'hh24' )
  49. ORDER BY
  50. TO_CHAR( pd.CREATETIME, 'hh24' )
  51. )
  52. WHERE
  53. sj IN ( '07', '08' ) UNION ALL
  54. SELECT
  55. sj,
  56. ct
  57. FROM
  58. (
  59. SELECT
  60. TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
  61. COUNT( pd.BARCODE ) ct
  62. FROM
  63. TP_PM_PRODUCTIONDATA pd
  64. WHERE
  65. pd.USERCODE = 'Z26'
  66. AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
  67. AND pd.VALUEFLAG = 1
  68. AND pd.PROCEDUREID = 2
  69. GROUP BY
  70. TO_CHAR( pd.CREATETIME, 'hh24' )
  71. ORDER BY
  72. TO_CHAR( pd.CREATETIME, 'hh24' )
  73. )
  74. WHERE
  75. sj NOT IN ( '07', '08', '12', '13' ) UNION ALL
  76. SELECT
  77. '12-14' AS sj,
  78. SUM( ct )
  79. FROM
  80. (
  81. SELECT
  82. TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
  83. COUNT( pd.BARCODE ) ct
  84. FROM
  85. TP_PM_PRODUCTIONDATA pd
  86. WHERE
  87. pd.USERCODE = 'Z26'
  88. AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
  89. AND pd.VALUEFLAG = 1
  90. AND pd.PROCEDUREID = 2
  91. GROUP BY
  92. TO_CHAR( pd.CREATETIME, 'hh24' )
  93. ORDER BY
  94. TO_CHAR( pd.CREATETIME, 'hh24' )
  95. )
  96. WHERE
  97. sj IN ( '12', '13' )
  98. )
  99. ORDER BY
  100. sj
  101. ",
  102. new CDAParameter("USERID", "")
  103. );
  104. //二线明细
  105. twoDt = conn.ExecuteDatatable(@"
  106. SELECT
  107. sj,
  108. CL
  109. FROM
  110. (
  111. SELECT
  112. '07-09' AS sj,
  113. SUM( ct ) CL
  114. FROM
  115. (
  116. SELECT
  117. TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
  118. COUNT( pd.BARCODE ) ct
  119. FROM
  120. TP_PM_PRODUCTIONDATA pd
  121. WHERE
  122. pd.USERCODE = 'Z28'
  123. AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
  124. AND pd.VALUEFLAG = 1
  125. AND pd.PROCEDUREID = 2
  126. GROUP BY
  127. TO_CHAR( pd.CREATETIME, 'hh24' )
  128. ORDER BY
  129. TO_CHAR( pd.CREATETIME, 'hh24' )
  130. )
  131. WHERE
  132. sj IN ( '07', '08' ) UNION ALL
  133. SELECT
  134. sj,
  135. ct
  136. FROM
  137. (
  138. SELECT
  139. TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
  140. COUNT( pd.BARCODE ) ct
  141. FROM
  142. TP_PM_PRODUCTIONDATA pd
  143. WHERE
  144. pd.USERCODE = 'Z28'
  145. AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
  146. AND pd.VALUEFLAG = 1
  147. AND pd.PROCEDUREID = 2
  148. GROUP BY
  149. TO_CHAR( pd.CREATETIME, 'hh24' )
  150. ORDER BY
  151. TO_CHAR( pd.CREATETIME, 'hh24' )
  152. )
  153. WHERE
  154. sj NOT IN ( '07', '08', '12', '13' ) UNION ALL
  155. SELECT
  156. '12-14' AS sj,
  157. SUM( ct )
  158. FROM
  159. (
  160. SELECT
  161. TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
  162. COUNT( pd.BARCODE ) ct
  163. FROM
  164. TP_PM_PRODUCTIONDATA pd
  165. WHERE
  166. pd.USERCODE = 'Z28'
  167. AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
  168. AND pd.VALUEFLAG = 1
  169. AND pd.PROCEDUREID = 2
  170. GROUP BY
  171. TO_CHAR( pd.CREATETIME, 'hh24' )
  172. ORDER BY
  173. TO_CHAR( pd.CREATETIME, 'hh24' )
  174. )
  175. WHERE
  176. sj IN ( '12', '13' )
  177. )
  178. ORDER BY
  179. sj
  180. ",
  181. new CDAParameter("USERID", "")
  182. );
  183. //总计
  184. infoDt = conn.ExecuteDatatable(@"
  185. WITH 一线 AS (
  186. SELECT
  187. COUNT( DISTINCT pd.BARCODE ) 一线产量
  188. FROM
  189. TP_PM_PRODUCTIONDATA pd
  190. WHERE
  191. pd.VALUEFLAG = 1
  192. AND pd.PROCEDUREID = 2
  193. AND pd.USERCODE = 'Z26'
  194. AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
  195. ),
  196. 二线 AS (
  197. SELECT
  198. COUNT( DISTINCT pd.BARCODE ) 二线产量
  199. FROM
  200. TP_PM_PRODUCTIONDATA pd
  201. WHERE
  202. pd.VALUEFLAG = 1
  203. AND pd.PROCEDUREID = 2
  204. AND pd.USERCODE = 'Z28'
  205. AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
  206. ) SELECT
  207. 一线.一线产量,
  208. 二线.二线产量,
  209. ( 一线.一线产量 +二线.二线产量 ) 总计
  210. FROM
  211. 一线
  212. LEFT JOIN 二线 ON 1 =1
  213. ",
  214. new CDAParameter("USERID", "")
  215. );
  216. }
  217. Logger.Debug("读取看板数据完成!");
  218. //发送数据到LED
  219. //SiemensS7.Open("172.19.2.71", 102);
  220. SiemensS7.Open("172.19.26.82", 102);
  221. if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["总计"] != null)
  222. {
  223. SiemensS7.Write<short>("30.0", Convert.ToInt16(infoDt.Rows[0]["总计"]));//包装总量
  224. }
  225. else
  226. {
  227. SiemensS7.Write<short>("30.0", Convert.ToInt16(0));//包装总量
  228. }
  229. if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["一线产量"] != null)
  230. {
  231. SiemensS7.Write<short>("30.2", Convert.ToInt16(infoDt.Rows[0]["一线产量"]));//一线包装产量
  232. }
  233. else
  234. {
  235. SiemensS7.Write<short>("30.2", Convert.ToInt16(0));//一线包装产量
  236. }
  237. if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["二线产量"] != null)
  238. {
  239. SiemensS7.Write<short>("30.4", Convert.ToInt16(infoDt.Rows[0]["二线产量"]));//二线包装产量
  240. }
  241. else
  242. {
  243. SiemensS7.Write<short>("30.4", Convert.ToInt16(0));//二线包装产量
  244. }
  245. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[0] != null && oneDt.Rows[0]["CL"] != null)
  246. {
  247. SiemensS7.Write<short>("30.6", Convert.ToInt16(oneDt.Rows[0]["CL"]));//一线7:00-9:00产量
  248. }
  249. else
  250. {
  251. SiemensS7.Write<short>("30.6", Convert.ToInt16(0));//一线7:00-9:00产量
  252. }
  253. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[1] != null && oneDt.Rows[1]["CL"] != null)
  254. {
  255. SiemensS7.Write<short>("30.8", Convert.ToInt16(oneDt.Rows[1]["CL"]));//一线9:00-10:00产量
  256. }
  257. else
  258. {
  259. SiemensS7.Write<short>("30.8", Convert.ToInt16(0));//一线9:00-10:00产量
  260. }
  261. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[2] != null && oneDt.Rows[2]["CL"] != null)
  262. {
  263. SiemensS7.Write<short>("30.10", Convert.ToInt16(oneDt.Rows[2]["CL"]));//一线10:00-11:00产量
  264. }
  265. else
  266. {
  267. SiemensS7.Write<short>("30.10", Convert.ToInt16(0));//一线10:00-11:00产量
  268. }
  269. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[3] != null && oneDt.Rows[3]["CL"] != null)
  270. {
  271. SiemensS7.Write<short>("30.12", Convert.ToInt16(oneDt.Rows[3]["CL"]));//一线12:00-14:00产量
  272. }
  273. else
  274. {
  275. SiemensS7.Write<short>("30.12", Convert.ToInt16(0));//一线12:00-14:00产量
  276. }
  277. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[4] != null && oneDt.Rows[4]["CL"] != null)
  278. {
  279. SiemensS7.Write<short>("30.14", Convert.ToInt16(oneDt.Rows[4]["CL"]));//一线14:00-15:00产量
  280. }
  281. else
  282. {
  283. SiemensS7.Write<short>("30.14", Convert.ToInt16(0));//一线14:00-15:00产量
  284. }
  285. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[5] != null && oneDt.Rows[5]["CL"] != null)
  286. {
  287. SiemensS7.Write<short>("30.16", Convert.ToInt16(oneDt.Rows[5]["CL"]));//一线15:00-16:00产量
  288. }
  289. else
  290. {
  291. SiemensS7.Write<short>("30.16", Convert.ToInt16(0));//一线15:00-16:00产量
  292. }
  293. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[6] != null && oneDt.Rows[6]["CL"] != null)
  294. {
  295. SiemensS7.Write<short>("30.18", Convert.ToInt16(oneDt.Rows[6]["CL"]));//一线16:00-17:00产量
  296. }
  297. else
  298. {
  299. SiemensS7.Write<short>("30.18", Convert.ToInt16(0));//一线16:00-17:00产量
  300. }
  301. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[7] != null && oneDt.Rows[7]["CL"] != null)
  302. {
  303. SiemensS7.Write<short>("30.20", Convert.ToInt16(oneDt.Rows[7]["CL"]));//一线17:00-18:00产量
  304. }
  305. else
  306. {
  307. SiemensS7.Write<short>("30.20", Convert.ToInt16(0));//一线17:00-18:00产量
  308. }
  309. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[0] != null && twoDt.Rows[0]["CL"] != null)
  310. {
  311. SiemensS7.Write<short>("30.22", Convert.ToInt16(twoDt.Rows[0]["CL"]));//二线7:00-9:00产量
  312. }
  313. else
  314. {
  315. SiemensS7.Write<short>("30.22", Convert.ToInt16(0));//二线17:00-18:00产量
  316. }
  317. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[1] != null && twoDt.Rows[1]["CL"] != null)
  318. {
  319. SiemensS7.Write<short>("30.24", Convert.ToInt16(twoDt.Rows[1]["CL"]));//二线9:00-10:00产量
  320. }
  321. else
  322. {
  323. SiemensS7.Write<short>("30.24", Convert.ToInt16(0));//二线9:00-10:00产量
  324. }
  325. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[2] != null && twoDt.Rows[2]["CL"] != null)
  326. {
  327. SiemensS7.Write<short>("30.26", Convert.ToInt16(twoDt.Rows[2]["CL"]));//二线10:00-11:00产量
  328. }
  329. else
  330. {
  331. SiemensS7.Write<short>("30.26", Convert.ToInt16(0));//二线10:00-11:00产量
  332. }
  333. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[3] != null && twoDt.Rows[3]["CL"] != null)
  334. {
  335. SiemensS7.Write<short>("30.28", Convert.ToInt16(twoDt.Rows[3]["CL"]));//二线12:00-14:00产量
  336. }
  337. else
  338. {
  339. SiemensS7.Write<short>("30.28", Convert.ToInt16(0));//二线12:00-14:00产量
  340. }
  341. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[4] != null && twoDt.Rows[4]["CL"] != null)
  342. {
  343. SiemensS7.Write<short>("30.30", Convert.ToInt16(twoDt.Rows[4]["CL"]));//二线14:00-15:00产量
  344. }
  345. else
  346. {
  347. SiemensS7.Write<short>("30.30", Convert.ToInt16(0));//二线14:00-15:00产量
  348. }
  349. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[5] != null && twoDt.Rows[5]["CL"] != null)
  350. {
  351. SiemensS7.Write<short>("30.32", Convert.ToInt16(twoDt.Rows[5]["CL"]));//二线15:00-16:00产量
  352. }
  353. else
  354. {
  355. SiemensS7.Write<short>("30.32", Convert.ToInt16(0));//二线15:00-16:00产量
  356. }
  357. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[6] != null && twoDt.Rows[6]["CL"] != null)
  358. {
  359. SiemensS7.Write<short>("30.34", Convert.ToInt16(twoDt.Rows[6]["CL"]));//二线16:00-17:00产量
  360. }
  361. else
  362. {
  363. SiemensS7.Write<short>("30.34", Convert.ToInt16(0));//二线16:00-17:00产量
  364. }
  365. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[7] != null && twoDt.Rows[7]["CL"] != null)
  366. {
  367. SiemensS7.Write<short>("30.36", Convert.ToInt16(twoDt.Rows[7]["CL"]));//二线17:00-18:00产量
  368. }
  369. else
  370. {
  371. SiemensS7.Write<short>("30.36", Convert.ToInt16(0));//二线17:00-18:00产量
  372. }
  373. SiemensS7.Close();
  374. Logger.Debug("发送LED数据完成!");
  375. }
  376. }