FurnanceTask.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. package com.ruoyi.framework.task;
  2. import com.github.stuxuhai.jpinyin.PinyinException;
  3. import com.ruoyi.common.sendEmail.IMailService;
  4. import com.ruoyi.common.thread.furnance.FurnancePressureThread;
  5. import com.ruoyi.common.thread.furnance.FurnanceTemperatureThread;
  6. import com.ruoyi.common.utils.StringUtils;
  7. import com.ruoyi.framework.web.controller.BaseController;
  8. import com.ruoyi.framework.web.domain.AjaxResult;
  9. import com.ruoyi.project.plant.domain.TStaffmgr;
  10. import com.ruoyi.project.plant.service.ITStaffmgrService;
  11. import com.ruoyi.project.production.controller.TFurnancePressureController;
  12. import com.ruoyi.project.production.controller.TFurnanceTemperatureController;
  13. import com.ruoyi.project.production.controller.vo.FurnancePressureFvpVO;
  14. import com.ruoyi.project.production.controller.vo.FurnanceTemperatureVO;
  15. import com.ruoyi.project.production.domain.TFurnancePressure;
  16. import com.ruoyi.project.production.domain.TFurnanceTemperature;
  17. import com.ruoyi.project.production.service.ITFurnancePressureService;
  18. import com.ruoyi.project.production.service.ITFurnanceTemperatureService;
  19. import com.ruoyi.project.system.domain.SysDictData;
  20. import com.ruoyi.project.system.domain.SysUser;
  21. import com.ruoyi.project.system.service.ISysDictTypeService;
  22. import com.ruoyi.project.system.service.ISysUserService;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Component;
  25. import java.text.ParseException;
  26. import java.text.SimpleDateFormat;
  27. import java.util.Date;
  28. import java.util.List;
  29. /**
  30. * 定时任务 - 裂解炉管测温测压
  31. *
  32. * @author Wang Zi Wen
  33. * @email wangggziwen@163.com
  34. * @date 2024/05/16 14:51:21
  35. */
  36. @Component("furnanceTask")
  37. public class FurnanceTask extends BaseController {
  38. @Autowired
  39. private ITFurnancePressureService pressureService;
  40. @Autowired
  41. private ITFurnanceTemperatureService temperatureService;
  42. @Autowired
  43. private TFurnancePressureController pressureController;
  44. @Autowired
  45. private TFurnanceTemperatureController temperatureController;
  46. @Autowired
  47. private ISysDictTypeService iSysDictTypeService;
  48. @Autowired
  49. private IMailService mailService;
  50. @Autowired
  51. private ITStaffmgrService staffmgrService;
  52. @Autowired
  53. private ISysUserService userService;
  54. @Autowired
  55. private ITFurnanceTemperatureService tFurnanceTemperatureService;
  56. @Autowired
  57. private ITFurnancePressureService tFurnancePressureService;
  58. /**
  59. * 每日巡检数据生成
  60. */
  61. public void genData() throws ParseException {
  62. TFurnancePressure pressure = new TFurnancePressure();
  63. TFurnanceTemperature temperature = new TFurnanceTemperature();
  64. Date recordTime = new Date();
  65. Date date = new Date();
  66. date.setYear(recordTime.getYear());
  67. date.setMonth(recordTime.getMonth());
  68. date.setDate(recordTime.getDate());
  69. date.setHours(0);
  70. date.setMinutes(0);
  71. date.setSeconds(0);
  72. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  73. Date parse = sdf.parse(sdf.format(date));
  74. pressure.setRecordTime(parse);
  75. temperature.setRecordTime(parse);
  76. List<TFurnancePressure> tFurnancePressures = tFurnancePressureService.selectTFurnancePressureByDate(pressure);
  77. List<TFurnanceTemperature> tFurnanceTemperatures = tFurnanceTemperatureService.selectTFurnanceTemperatureByDate2(temperature);
  78. if (tFurnancePressures.size() == 0) {
  79. this.genPressureData();
  80. }
  81. if (tFurnanceTemperatures.size() == 0) {
  82. this.genTemperatureData();
  83. }
  84. }
  85. /**
  86. * 生成测压数据
  87. */
  88. public void genPressureData() {
  89. // yyyy-MM-dd 08:00:00
  90. Date am = new Date();
  91. am.setHours(8);
  92. am.setMinutes(0);
  93. am.setSeconds(0);
  94. // yyyy-MM-dd 20:00:00
  95. Date pm = new Date();
  96. pm.setHours(20);
  97. pm.setMinutes(0);
  98. pm.setSeconds(0);
  99. // furnanceName array
  100. String[] furnanceNames = {"H109", "H110", "H111", "H112", "H113", "H114", "H115", "H116", "H117", "H118", "H130"};
  101. // 遍历生成数据
  102. for (String furnanceName : furnanceNames) {
  103. // 测压 08:00:00
  104. TFurnancePressure pressure1 = new TFurnancePressure();
  105. pressure1.setRecordTime(am);
  106. pressure1.setDeptId(103L);
  107. pressure1.setFurnanceName(furnanceName);
  108. // 测压 20:00:00
  109. TFurnancePressure pressure2 = new TFurnancePressure();
  110. pressure2.setRecordTime(pm);
  111. pressure2.setDeptId(103L);
  112. pressure2.setFurnanceName(furnanceName);
  113. // 默认赋值=0
  114. // switch (furnanceName) {
  115. // case "H109":
  116. // this.setZeroPressure(pressure1, 16, 15);
  117. // this.setZeroPressure(pressure2, 16, 15);
  118. // break;
  119. // case "H110":
  120. // case "H111":
  121. // case "H112":
  122. // case "H113":
  123. // case "H114":
  124. // case "H115":
  125. // case "H116":
  126. // case "H117":
  127. // case "H118":
  128. // this.setZeroPressure(pressure1, 8, 11);
  129. // this.setZeroPressure(pressure2, 8, 11);
  130. // break;
  131. // case "H130":
  132. // this.setZeroPressure(pressure1, 4, 7);
  133. // this.setZeroPressure(pressure2, 4, 7);
  134. // break;
  135. // }
  136. // 新增
  137. pressureService.insertTFurnancePressure(pressure1);
  138. pressureService.insertTFurnancePressure(pressure2);
  139. }
  140. }
  141. public String getZeroString(int length) {
  142. StringBuffer sb = new StringBuffer();
  143. for (int i = 0; i < length; i++) {
  144. sb.append("0");
  145. if (i != length - 1) {
  146. sb.append(",");
  147. }
  148. }
  149. return sb.toString();
  150. }
  151. public void setZeroPressure(TFurnancePressure pressure, int passNum, int length) {
  152. String zeroString = this.getZeroString(length);
  153. pressure.setPass1(zeroString);
  154. pressure.setPass2(zeroString);
  155. pressure.setPass3(zeroString);
  156. pressure.setPass4(zeroString);
  157. if (passNum == 8 || passNum == 16) {
  158. pressure.setPass5(zeroString);
  159. pressure.setPass6(zeroString);
  160. pressure.setPass7(zeroString);
  161. pressure.setPass8(zeroString);
  162. }
  163. if (passNum == 16) {
  164. pressure.setPass9(zeroString);
  165. pressure.setPass10(zeroString);
  166. pressure.setPass11(zeroString);
  167. pressure.setPass12(zeroString);
  168. pressure.setPass13(zeroString);
  169. pressure.setPass14(zeroString);
  170. pressure.setPass15(zeroString);
  171. pressure.setPass16(zeroString);
  172. }
  173. }
  174. public void setZeroTemperature(TFurnanceTemperature temperature, int passNum, int length) {
  175. String zeroString = this.getZeroString(length);
  176. temperature.setPass1(zeroString);
  177. temperature.setPass2(zeroString);
  178. temperature.setPass3(zeroString);
  179. temperature.setPass4(zeroString);
  180. temperature.setPass5(zeroString);
  181. temperature.setPass6(zeroString);
  182. temperature.setPass7(zeroString);
  183. temperature.setPass8(zeroString);
  184. if (passNum == 12 || passNum == 16) {
  185. temperature.setPass9(zeroString);
  186. temperature.setPass10(zeroString);
  187. temperature.setPass11(zeroString);
  188. temperature.setPass12(zeroString);
  189. }
  190. if (passNum == 16) {
  191. temperature.setPass13(zeroString);
  192. temperature.setPass14(zeroString);
  193. temperature.setPass15(zeroString);
  194. temperature.setPass16(zeroString);
  195. }
  196. }
  197. /**
  198. * 生成测温数据
  199. */
  200. public void genTemperatureData() {
  201. // yyyy-MM-dd 08:00:00
  202. Date am = new Date();
  203. am.setHours(8);
  204. am.setMinutes(0);
  205. am.setSeconds(0);
  206. // yyyy-MM-dd 20:00:00
  207. Date pm = new Date();
  208. pm.setHours(20);
  209. pm.setMinutes(0);
  210. pm.setSeconds(0);
  211. // furnanceName array
  212. String[] furnanceNames = {"H109", "H110", "H111", "H112", "H113", "H114", "H115", "H116", "H117", "H118", "H130"};
  213. // 遍历生成数据
  214. for (String furnanceName : furnanceNames) {
  215. // 测温 08:00:00
  216. TFurnanceTemperature temperature = new TFurnanceTemperature();
  217. temperature.setRecordTime(am);
  218. temperature.setDeptId(103L);
  219. temperature.setFurnanceName(furnanceName);
  220. // 默认赋值=0
  221. // switch (furnanceName) {
  222. // case "H109":
  223. // this.setZeroTemperature(temperature, 16, 14);
  224. // break;
  225. // case "H110":
  226. // case "H111":
  227. // case "H112":
  228. // case "H113":
  229. // case "H114":
  230. // case "H115":
  231. // case "H116":
  232. // case "H117":
  233. // case "H118":
  234. // this.setZeroTemperature(temperature, 8, 10);
  235. // break;
  236. // case "H130":
  237. // this.setZeroTemperature(temperature, 12, 3);
  238. // break;
  239. // }
  240. // 新增
  241. temperatureService.insertTFurnanceTemperature(temperature);
  242. }
  243. }
  244. /**
  245. * FVP邮件提醒
  246. */
  247. public void alertFvp() throws ParseException, PinyinException {
  248. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  249. Date date = new Date();
  250. date.setHours(0);
  251. date.setMinutes(0);
  252. date.setSeconds(0);
  253. Date parse = sdf.parse(sdf.format(date));
  254. TFurnancePressure pressure = new TFurnancePressure();
  255. pressure.setRecordTime(parse);
  256. AjaxResult fvp = pressureController.fvp(pressure);
  257. Object obj = fvp.get("data");
  258. if (obj != null) {
  259. List<FurnancePressureFvpVO> data = (List<FurnancePressureFvpVO>) obj;
  260. boolean flag = false;
  261. for (FurnancePressureFvpVO datum : data) {
  262. double pass1Ratio = datum.getPass1Ratio();
  263. double pass2Ratio = datum.getPass2Ratio();
  264. double pass3Ratio = datum.getPass3Ratio();
  265. double pass4Ratio = datum.getPass4Ratio();
  266. double pass5Ratio = datum.getPass5Ratio();
  267. double pass6Ratio = datum.getPass6Ratio();
  268. double pass7Ratio = datum.getPass7Ratio();
  269. double pass8Ratio = datum.getPass8Ratio();
  270. double allPassMaxRatio = datum.getAllPassMaxRatio();
  271. if (Double.compare(pass1Ratio, 0.9) >= 0 || Double.compare(pass2Ratio, 0.9) >= 0
  272. || Double.compare(pass3Ratio, 0.9) >= 0 || Double.compare(pass4Ratio, 0.9) >= 0
  273. || Double.compare(pass5Ratio, 0.9) >= 0 || Double.compare(pass6Ratio, 0.9) >= 0
  274. || Double.compare(pass7Ratio, 0.9) >= 0 || Double.compare(pass8Ratio, 0.9) >= 0
  275. || Double.compare(allPassMaxRatio, 0.9) >= 0) {
  276. flag = true;
  277. }
  278. }
  279. if (flag) {
  280. List<SysDictData> furnanceRecipientDict = iSysDictTypeService.selectDictDataByType("FURNANCE_RECIPIENT");
  281. for (SysDictData sysDictData : furnanceRecipientDict) {
  282. String dictValue = sysDictData.getDictValue();
  283. TStaffmgr staffmgr = staffmgrService.selectTStaffmgrByStaffId(dictValue);
  284. SysUser sysUser = userService.selectUserByStaffId(dictValue);
  285. FurnancePressureThread mailThread = new FurnancePressureThread(mailService, staffmgr, sysUser.getUserName(), "");
  286. Thread thread = new Thread(mailThread);
  287. thread.start();
  288. }
  289. }
  290. }
  291. }
  292. /**
  293. * COIL邮件提醒
  294. */
  295. public void alertCoil() throws ParseException, PinyinException {
  296. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  297. Date date = new Date();
  298. date.setDate(1);
  299. Date parse = sdf.parse(sdf.format(date));
  300. TFurnanceTemperature temperature = new TFurnanceTemperature();
  301. temperature.setRecordTime(parse);
  302. AjaxResult coil = temperatureController.coil(temperature);
  303. Object obj = coil.get("data");
  304. if (obj != null) {
  305. List<FurnanceTemperatureVO> data = (List<FurnanceTemperatureVO>) obj;
  306. boolean flag = false;
  307. for (FurnanceTemperatureVO datum : data) {
  308. String h109Out = datum.getH109Out();
  309. String h110Out = datum.getH110Out();
  310. String h111Out = datum.getH111Out();
  311. String h112Out = datum.getH112Out();
  312. String h113Out = datum.getH113Out();
  313. String h114Out = datum.getH114Out();
  314. String h115Out = datum.getH115Out();
  315. String h116Out = datum.getH116Out();
  316. String h117Out = datum.getH117Out();
  317. String h118Out = datum.getH118Out();
  318. String h130Out = datum.getH130Out();
  319. if (this.compare1080(h109Out)) { flag = true; }
  320. if (this.compare1080(h110Out)) { flag = true; }
  321. if (this.compare1080(h111Out)) { flag = true; }
  322. if (this.compare1080(h112Out)) { flag = true; }
  323. if (this.compare1080(h113Out)) { flag = true; }
  324. if (this.compare1080(h114Out)) { flag = true; }
  325. if (this.compare1080(h115Out)) { flag = true; }
  326. if (this.compare1080(h116Out)) { flag = true; }
  327. if (this.compare1080(h117Out)) { flag = true; }
  328. if (this.compare1080(h118Out)) { flag = true; }
  329. if (this.compare1080(h130Out)) { flag = true; }
  330. }
  331. if (flag) {
  332. List<SysDictData> furnanceRecipientDict = iSysDictTypeService.selectDictDataByType("FURNANCE_RECIPIENT");
  333. for (SysDictData sysDictData : furnanceRecipientDict) {
  334. String dictValue = sysDictData.getDictValue();
  335. TStaffmgr staffmgr = staffmgrService.selectTStaffmgrByStaffId(dictValue);
  336. SysUser sysUser = userService.selectUserByStaffId(dictValue);
  337. FurnanceTemperatureThread mailThread = new FurnanceTemperatureThread(mailService, staffmgr, sysUser.getUserName());
  338. Thread thread = new Thread(mailThread);
  339. thread.start();
  340. }
  341. }
  342. }
  343. }
  344. private boolean compare1080(String string) {
  345. boolean flag = false;
  346. if (StringUtils.isNotNull(string) && StringUtils.isNotEmpty(string)) {
  347. String[] split = string.split(",");
  348. for (int i = 0; i < split.length; i++) {
  349. int element = Integer.parseInt(split[i]);
  350. if (element > 1080) {
  351. flag = true;
  352. }
  353. }
  354. }
  355. return flag;
  356. }
  357. }