Led.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  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. #region 总产量
  222. if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["总计"] != null)
  223. {
  224. SiemensS7.Write<short>("30.0", Convert.ToInt16(infoDt.Rows[0]["总计"]));//包装总量
  225. }
  226. else
  227. {
  228. SiemensS7.Write<short>("30.0", Convert.ToInt16(0));//包装总量
  229. }
  230. if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["一线产量"].ToString() != "")
  231. {
  232. SiemensS7.Write<short>("30.2", Convert.ToInt16(infoDt.Rows[0]["一线产量"]));//一线包装产量
  233. }
  234. else
  235. {
  236. SiemensS7.Write<short>("30.2", Convert.ToInt16(0));//一线包装产量
  237. }
  238. if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["二线产量"].ToString() != "")
  239. {
  240. SiemensS7.Write<short>("30.4", Convert.ToInt16(infoDt.Rows[0]["二线产量"]));//二线包装产量
  241. }
  242. else
  243. {
  244. SiemensS7.Write<short>("30.4", Convert.ToInt16(0));//二线包装产量
  245. }
  246. #endregion
  247. #region 一线产量
  248. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[0] != null && oneDt.Rows[0]["CL"].ToString() != "")
  249. {
  250. SiemensS7.Write<short>("30.6", Convert.ToInt16(oneDt.Rows[0]["CL"]));//一线7:00-9:00产量
  251. }
  252. else
  253. {
  254. SiemensS7.Write<short>("30.6", Convert.ToInt16(0));//一线7:00-9:00产量
  255. }
  256. if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[1] != null && oneDt.Rows[1]["CL"].ToString() != "")
  257. {
  258. SiemensS7.Write<short>("30.8", Convert.ToInt16(oneDt.Rows[1]["CL"]));//一线9:00-10:00产量
  259. }
  260. else
  261. {
  262. SiemensS7.Write<short>("30.8", Convert.ToInt16(0));//一线9:00-10:00产量
  263. }
  264. if (oneDt != null && oneDt.Rows.Count > 2 && oneDt.Rows[2] != null && oneDt.Rows[2]["CL"].ToString() != "")
  265. {
  266. SiemensS7.Write<short>("30.10", Convert.ToInt16(oneDt.Rows[2]["CL"]));//一线10:00-11:00产量
  267. }
  268. else
  269. {
  270. SiemensS7.Write<short>("30.10", Convert.ToInt16(0));//一线10:00-11:00产量
  271. }
  272. if (oneDt != null && oneDt.Rows.Count > 3 && oneDt.Rows[3] != null && oneDt.Rows[3]["CL"].ToString() != "")
  273. {
  274. SiemensS7.Write<short>("30.12", Convert.ToInt16(oneDt.Rows[3]["CL"]));//一线12:00-14:00产量
  275. }
  276. else
  277. {
  278. SiemensS7.Write<short>("30.12", Convert.ToInt16(0));//一线12:00-14:00产量
  279. }
  280. if (oneDt != null && oneDt.Rows.Count > 4 && oneDt.Rows[4] != null && oneDt.Rows[4]["CL"].ToString() != "")
  281. {
  282. SiemensS7.Write<short>("30.14", Convert.ToInt16(oneDt.Rows[4]["CL"]));//一线14:00-15:00产量
  283. }
  284. else
  285. {
  286. SiemensS7.Write<short>("30.14", Convert.ToInt16(0));//一线14:00-15:00产量
  287. }
  288. if (oneDt != null && oneDt.Rows.Count > 5 && oneDt.Rows[5] != null && oneDt.Rows[5]["CL"].ToString() != "")
  289. {
  290. SiemensS7.Write<short>("30.16", Convert.ToInt16(oneDt.Rows[5]["CL"]));//一线15:00-16:00产量
  291. }
  292. else
  293. {
  294. SiemensS7.Write<short>("30.16", Convert.ToInt16(0));//一线15:00-16:00产量
  295. }
  296. if (oneDt != null && oneDt.Rows.Count > 6 && oneDt.Rows[6] != null && oneDt.Rows[6]["CL"].ToString() != "")
  297. {
  298. SiemensS7.Write<short>("30.18", Convert.ToInt16(oneDt.Rows[6]["CL"]));//一线16:00-17:00产量
  299. }
  300. else
  301. {
  302. SiemensS7.Write<short>("30.18", Convert.ToInt16(0));//一线16:00-17:00产量
  303. }
  304. if (oneDt != null && oneDt.Rows.Count > 7 && oneDt.Rows[7] != null && oneDt.Rows[7]["CL"].ToString() != "")
  305. {
  306. SiemensS7.Write<short>("30.20", Convert.ToInt16(oneDt.Rows[7]["CL"]));//一线17:00-18:00产量
  307. }
  308. else
  309. {
  310. SiemensS7.Write<short>("30.20", Convert.ToInt16(0));//一线17:00-18:00产量
  311. }
  312. #endregion
  313. #region 二线产量
  314. if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[0] != null && twoDt.Rows[0]["CL"].ToString() != "")
  315. {
  316. SiemensS7.Write<short>("30.22", Convert.ToInt16(twoDt.Rows[0]["CL"]));//二线7:00-9:00产量
  317. }
  318. else
  319. {
  320. SiemensS7.Write<short>("30.22", Convert.ToInt16(0));//二线17:00-18:00产量
  321. }
  322. if (twoDt != null && twoDt.Rows.Count > 1 && twoDt.Rows[1] != null && twoDt.Rows[1]["CL"].ToString() != "")
  323. {
  324. SiemensS7.Write<short>("30.24", Convert.ToInt16(twoDt.Rows[1]["CL"]));//二线9:00-10:00产量
  325. }
  326. else
  327. {
  328. SiemensS7.Write<short>("30.24", Convert.ToInt16(0));//二线9:00-10:00产量
  329. }
  330. if (twoDt != null && twoDt.Rows.Count > 2 && twoDt.Rows[2] != null && twoDt.Rows[2]["CL"].ToString() != "")
  331. {
  332. SiemensS7.Write<short>("30.26", Convert.ToInt16(twoDt.Rows[2]["CL"]));//二线10:00-11:00产量
  333. }
  334. else
  335. {
  336. SiemensS7.Write<short>("30.26", Convert.ToInt16(0));//二线10:00-11:00产量
  337. }
  338. if (twoDt != null && twoDt.Rows.Count > 3 && twoDt.Rows[3] != null && twoDt.Rows[3]["CL"].ToString() != "")
  339. {
  340. SiemensS7.Write<short>("30.28", Convert.ToInt16(twoDt.Rows[3]["CL"]));//二线12:00-14:00产量
  341. }
  342. else
  343. {
  344. SiemensS7.Write<short>("30.28", Convert.ToInt16(0));//二线12:00-14:00产量
  345. }
  346. if (twoDt != null && twoDt.Rows.Count > 4 && twoDt.Rows[4] != null && twoDt.Rows[4]["CL"].ToString() != "")
  347. {
  348. SiemensS7.Write<short>("30.30", Convert.ToInt16(twoDt.Rows[4]["CL"]));//二线14:00-15:00产量
  349. }
  350. else
  351. {
  352. SiemensS7.Write<short>("30.30", Convert.ToInt16(0));//二线14:00-15:00产量
  353. }
  354. if (twoDt != null && twoDt.Rows.Count > 5 && twoDt.Rows[5] != null && twoDt.Rows[5]["CL"].ToString() != "")
  355. {
  356. SiemensS7.Write<short>("30.32", Convert.ToInt16(twoDt.Rows[5]["CL"]));//二线15:00-16:00产量
  357. }
  358. else
  359. {
  360. SiemensS7.Write<short>("30.32", Convert.ToInt16(0));//二线15:00-16:00产量
  361. }
  362. if (twoDt != null && twoDt.Rows.Count > 6 && twoDt.Rows[6] != null && twoDt.Rows[6]["CL"].ToString() != "")
  363. {
  364. SiemensS7.Write<short>("30.34", Convert.ToInt16(twoDt.Rows[6]["CL"]));//二线16:00-17:00产量
  365. }
  366. else
  367. {
  368. SiemensS7.Write<short>("30.34", Convert.ToInt16(0));//二线16:00-17:00产量
  369. }
  370. if (twoDt != null && twoDt.Rows.Count > 7 && twoDt.Rows[7] != null && twoDt.Rows[7]["CL"].ToString() != "")
  371. {
  372. SiemensS7.Write<short>("30.36", Convert.ToInt16(twoDt.Rows[7]["CL"]));//二线17:00-18:00产量
  373. }
  374. else
  375. {
  376. SiemensS7.Write<short>("30.36", Convert.ToInt16(0));//二线17:00-18:00产量
  377. }
  378. #endregion
  379. SiemensS7.Close();
  380. Logger.Debug("发送LED数据完成!");
  381. }
  382. }