EarlywarningService.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  1. package com.gyee.failurestatistics.service;
  2. import com.gyee.common.model.StringUtils;
  3. import com.gyee.failurestatistics.init.CacheContext;
  4. import com.gyee.failurestatistics.model.auto.ProEconEarlyWarningSub;
  5. import com.gyee.failurestatistics.model.auto.ProBasicEquipment;
  6. import com.gyee.failurestatistics.model.auto.ProBasicPowerstation;
  7. import com.gyee.failurestatistics.model.auto.ProEconEarlyWarningMain;
  8. import com.gyee.failurestatistics.service.auto.IProEconEarlyWarningMainService;
  9. import com.gyee.failurestatistics.service.auto.IProEconEarlyWarningSubService;
  10. import com.gyee.failurestatistics.vo.EventVo;
  11. import com.gyee.failurestatistics.vo.ShutdowneventVo;
  12. import org.springframework.stereotype.Service;
  13. import javax.annotation.Resource;
  14. import java.util.*;
  15. import java.util.Map.Entry;
  16. /**
  17. * @ClassName : EarlywarningService
  18. * @Description : 报警统计service
  19. */
  20. @Service
  21. public class EarlywarningService {
  22. @Resource
  23. private IProEconEarlyWarningMainService proEconEarlyWarningMainService;
  24. @Resource
  25. private IProEconEarlyWarningSubService proEconEarlyWarningSubService;
  26. private final String ALARMHISTORY="ALARMHISTORY";
  27. public void saveEarlywarningmain() throws Exception {
  28. for (ProBasicPowerstation wp : CacheContext.wpls) {
  29. if (wp.getId().contains("FDC")) {
  30. String wpname=wp.getId().split("_")[2];
  31. StringBuilder alerthistory1=new StringBuilder(ALARMHISTORY).append("_").append(wpname).append("_");
  32. StringBuilder alerthistory2=new StringBuilder(ALARMHISTORY).append("_").append(wpname).append("_");
  33. Calendar cal = Calendar.getInstance();
  34. cal.set(Calendar.HOUR_OF_DAY, 0);
  35. cal.set(Calendar.MINUTE, 0);
  36. cal.set(Calendar.SECOND, 0);
  37. int year=cal.get(Calendar.YEAR);
  38. int month=cal.get(Calendar.MONTH)+1;
  39. alerthistory2.append(year);
  40. if(month<10)
  41. {
  42. alerthistory2.append("0").append(month);
  43. }else
  44. {
  45. alerthistory2.append(month);
  46. }
  47. cal.add(Calendar.MONTH, -1);
  48. year=cal.get(Calendar.YEAR);
  49. month=cal.get(Calendar.MONTH)+1;
  50. alerthistory1.append(year);
  51. if(month<10)
  52. {
  53. alerthistory1.append("0").append(month);
  54. }else
  55. {
  56. alerthistory1.append(month);
  57. }
  58. cal = Calendar.getInstance();
  59. cal.set(Calendar.HOUR_OF_DAY, 0);
  60. cal.set(Calendar.MINUTE, 0);
  61. cal.set(Calendar.SECOND, 0);
  62. Date endDate = cal.getTime();
  63. cal.set(Calendar.DAY_OF_MONTH, -1);
  64. Date beginDate = cal.getTime();
  65. Map<String, List<EventVo>> day1nummap = getCountMap(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  66. //Map<String, Map<String, List<ShutdowneventVo>>> day1eventmap = getEventMap(beginDate, endDate);
  67. Map<String, Integer> day1ordermap = getCountOrderNum(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  68. cal = Calendar.getInstance();
  69. cal.set(Calendar.HOUR_OF_DAY, 0);
  70. cal.set(Calendar.MINUTE, 0);
  71. cal.set(Calendar.SECOND, 0);
  72. endDate = cal.getTime();
  73. cal.set(Calendar.DAY_OF_MONTH, -3);
  74. beginDate = cal.getTime();
  75. Map<String, List<EventVo>> day3nummap = getCountMap(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  76. //Map<String, Map<String, List<ShutdowneventVo>>> day3eventmap = getEventMap(beginDate, endDate);
  77. Map<String, Integer> day3ordermap = getCountOrderNum(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  78. cal = Calendar.getInstance();
  79. cal.set(Calendar.HOUR_OF_DAY, 0);
  80. cal.set(Calendar.MINUTE, 0);
  81. cal.set(Calendar.SECOND, 0);
  82. endDate = cal.getTime();
  83. cal.set(Calendar.DAY_OF_MONTH, -7);
  84. beginDate = cal.getTime();
  85. Map<String, List<EventVo>> day7nummap = getCountMap(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  86. //Map<String, Map<String, List<ShutdowneventVo>>> day7eventmap = getEventMap(beginDate, endDate);
  87. Map<String, Integer> day7ordermap = getCountOrderNum(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  88. cal = Calendar.getInstance();
  89. cal.set(Calendar.HOUR_OF_DAY, 0);
  90. cal.set(Calendar.MINUTE, 0);
  91. cal.set(Calendar.SECOND, 0);
  92. endDate = cal.getTime();
  93. cal.set(Calendar.DAY_OF_MONTH, -15);
  94. beginDate = cal.getTime();
  95. Map<String, List<EventVo>> day15nummap = getCountMap(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  96. //Map<String, Map<String, List<ShutdowneventVo>>> day15eventmap = getEventMap(beginDate, endDate);
  97. Map<String, Integer> day15ordermap = getCountOrderNum(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  98. cal = Calendar.getInstance();
  99. cal.set(Calendar.HOUR_OF_DAY, 0);
  100. cal.set(Calendar.MINUTE, 0);
  101. cal.set(Calendar.SECOND, 0);
  102. endDate = cal.getTime();
  103. cal.set(Calendar.MONTH, -1);
  104. beginDate = cal.getTime();
  105. Map<String, List<EventVo>> month1nummap = getCountMap(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  106. // Map<String, Map<String, List<ShutdowneventVo>>> month1eventmap = getEventMap(beginDate, endDate);
  107. Map<String, Integer> month1ordermap = getCountOrderNum(String.valueOf(alerthistory1),String.valueOf(alerthistory2),beginDate, endDate);
  108. cal = Calendar.getInstance();
  109. cal.set(Calendar.HOUR_OF_DAY, 0);
  110. cal.set(Calendar.MINUTE, 0);
  111. cal.set(Calendar.SECOND, 0);
  112. System.out.println("开始统计"+wp.getName()+"预警排名和次数统计");
  113. List<ProBasicEquipment> wtls = CacheContext.wtsmap.get(wp.getId());
  114. Map<String, Integer> synthesistopordermap =getSynthesistopOrderNum(wtls,day1ordermap, day3ordermap, day7ordermap, day15ordermap, month1ordermap);
  115. for (ProBasicEquipment wt : wtls) {
  116. ProEconEarlyWarningMain po = new ProEconEarlyWarningMain();
  117. po.setWpId(wp.getId());
  118. po.setWpName(wp.getName());
  119. po.setWtId(wt.getId());
  120. po.setWtName(wt.getName());
  121. po.setRecordDate(cal.getTime());
  122. if (day1nummap.containsKey(wt.getId())) {
  123. /*********************************************************************************/
  124. setEarlywarningmainValue(po, 0, day1nummap, wt);
  125. if (day1ordermap.containsKey(wt.getId())) {
  126. po.setDay1topnum(day1ordermap.get(wt.getId()));
  127. } else {
  128. po.setDay1topnum(wtls.size());
  129. }
  130. } else {
  131. po.setDay1topnum(wtls.size());
  132. }
  133. if (day3nummap.containsKey(wt.getId())) {
  134. /*********************************************************************************/
  135. setEarlywarningmainValue(po, 1, day3nummap, wt);
  136. if (day3ordermap.containsKey(wt.getId())) {
  137. po.setDay3topnum(day3ordermap.get(wt.getId()));
  138. } else {
  139. po.setDay3topnum(wtls.size());
  140. }
  141. } else {
  142. po.setDay3topnum(wtls.size());
  143. }
  144. if (day7nummap.containsKey(wt.getId())) {
  145. /*********************************************************************************/
  146. setEarlywarningmainValue(po, 2, day7nummap, wt);
  147. if (day7ordermap.containsKey(wt.getId())) {
  148. po.setDay7topnum(day7ordermap.get(wt.getId()));
  149. } else {
  150. po.setDay7topnum(wtls.size());
  151. }
  152. } else {
  153. po.setDay7topnum(wtls.size());
  154. }
  155. /*********************************************************************************/
  156. if (day15nummap.containsKey(wt.getId())) {
  157. setEarlywarningmainValue(po, 3, day15nummap, wt);
  158. if (day15ordermap.containsKey(wt.getId())) {
  159. po.setDay15topnum(day15ordermap.get(wt.getId()));
  160. } else {
  161. po.setDay15topnum(wtls.size());
  162. }
  163. } else {
  164. po.setDay15topnum(wtls.size());
  165. }
  166. /*********************************************************************************/
  167. if (month1nummap.containsKey(wt.getId())) {
  168. setEarlywarningmainValue(po, 4, month1nummap, wt);
  169. if (month1ordermap.containsKey(wt.getId())) {
  170. po.setMonth1topnum(month1ordermap.get(wt.getId()));
  171. } else {
  172. po.setMonth1topnum(wtls.size());
  173. }
  174. } else {
  175. po.setMonth1topnum(wtls.size());
  176. }
  177. /*********************************************************************************/
  178. if(synthesistopordermap.containsKey(wt.getId()))
  179. {
  180. po.setSynthesistopnum(synthesistopordermap.get(wt.getId()));
  181. }else
  182. {
  183. po.setSynthesistopnum(wtls.size());
  184. }
  185. String tid=com.gyee.failurestatistics.util.StringUtils.getUUID();
  186. po.setId(tid);
  187. // proEconEarlyWarningMainService.save(po);
  188. insertEarlywarningmain(po);
  189. // DAY3TOP1
  190. // DAY3TOP2
  191. // DAY3TOP3
  192. // DAY7TOP1
  193. // DAY7TOP2
  194. // DAY7TOP3
  195. // DAY15TOP1
  196. // DAY15TOP2
  197. // DAY15TOP3
  198. // MONTH1TOP1
  199. // MONTH1TOP2
  200. // MONTH1TOP3
  201. //保存子表分类统计1天预警编号
  202. // saveEarlywarningsub(cal, day1eventmap, wp, wt, po, tid, "DAY1TOP1", po.getDay1top1Id());
  203. // saveEarlywarningsub(cal, day1eventmap, wp, wt, po, tid, "DAY1TOP2", po.getDay1top2Id());
  204. // saveEarlywarningsub(cal, day1eventmap, wp, wt, po, tid, "DAY1TOP3", po.getDay1top3Id());
  205. // //保存子表分类统计3天预警编号
  206. // saveEarlywarningsub(cal, day3eventmap, wp, wt, po, tid, "DAY3TOP1", po.getDay3top1Id());
  207. // saveEarlywarningsub(cal, day3eventmap, wp, wt, po, tid, "DAY3TOP2", po.getDay3top2Id());
  208. // saveEarlywarningsub(cal, day3eventmap, wp, wt, po, tid, "DAY3TOP3", po.getDay3top3Id());
  209. // //保存子表分类统计7天预警编号
  210. // saveEarlywarningsub(cal, day7eventmap, wp, wt, po, tid, "DAY7TOP1", po.getDay7top1Id());
  211. // saveEarlywarningsub(cal, day7eventmap, wp, wt, po, tid, "DAY7TOP2", po.getDay7top2Id());
  212. // saveEarlywarningsub(cal, day7eventmap, wp, wt, po, tid, "DAY7TOP3", po.getDay7top3Id());
  213. // //保存子表分类统计15天预警编号
  214. // saveEarlywarningsub(cal, day15eventmap, wp, wt, po, tid, "DAY15TOP1", po.getDay15top1Id());
  215. // saveEarlywarningsub(cal, day15eventmap, wp, wt, po, tid, "DAY15TOP2", po.getDay15top2Id());
  216. // saveEarlywarningsub(cal, day15eventmap, wp, wt, po, tid, "DAY15TOP3", po.getDay15top3Id());
  217. // //保存子表分类统计1月预警编号
  218. // saveEarlywarningsub(cal, month1eventmap, wp, wt, po, tid, "MONTH1TOP1", po.getMonth1top1Id());
  219. // saveEarlywarningsub(cal, month1eventmap, wp, wt, po, tid, "MONTH1TOP2", po.getMonth1top2Id());
  220. // saveEarlywarningsub(cal, month1eventmap, wp, wt, po, tid, "MONTH1TOP3", po.getMonth1top3Id());
  221. }
  222. }
  223. System.out.println("结束统计"+wp.getName()+"预警排名和次数统计");
  224. }
  225. }
  226. /**
  227. * 复制排名前三的预警名称和预警数量
  228. *
  229. * @param po
  230. * @param type
  231. * @param nummap
  232. * @param wt
  233. */
  234. private void setEarlywarningmainValue(ProEconEarlyWarningMain po, int type, Map<String, List<EventVo>> nummap, ProBasicEquipment wt) {
  235. List<EventVo> eventls = nummap.get(wt.getId());
  236. int i = 1;
  237. if (type == 0) {
  238. for (EventVo vo : eventls) {
  239. switch (i) {
  240. case 1:
  241. po.setDay1top1(vo.getEventnum());
  242. po.setDay1top1Id(vo.getWarnId());
  243. po.setDay1top1name1(vo.getWarnName());
  244. i++;
  245. break;
  246. case 2:
  247. po.setDay1top2(vo.getEventnum());
  248. po.setDay1top2Id(vo.getWarnId());
  249. po.setDay1top2name2(vo.getWarnName());
  250. i++;
  251. break;
  252. case 3:
  253. po.setDay1top3(vo.getEventnum());
  254. po.setDay1top3Id(vo.getWarnId());
  255. po.setDay1top3name3(vo.getWarnName());
  256. i++;
  257. break;
  258. default:
  259. break;
  260. }
  261. }
  262. } else if (type == 1) {
  263. for (EventVo vo : eventls) {
  264. switch (i) {
  265. case 1:
  266. po.setDay3top1(vo.getEventnum());
  267. po.setDay3top1Id(vo.getWarnId());
  268. po.setDay3top1name(vo.getWarnName());
  269. i++;
  270. break;
  271. case 2:
  272. po.setDay3top2(vo.getEventnum());
  273. po.setDay3top2Id(vo.getWarnId());
  274. po.setDay3top2name(vo.getWarnName());
  275. i++;
  276. break;
  277. case 3:
  278. po.setDay3top3(vo.getEventnum());
  279. po.setDay3top3Id(vo.getWarnId());
  280. po.setDay3top3name(vo.getWarnName());
  281. i++;
  282. break;
  283. default:
  284. break;
  285. }
  286. }
  287. } else if (type == 2) {
  288. for (EventVo vo : eventls) {
  289. switch (i) {
  290. case 1:
  291. po.setDay7top1(vo.getEventnum());
  292. po.setDay7top1Id(vo.getWarnId());
  293. po.setDay7top1name(vo.getWarnName());
  294. i++;
  295. break;
  296. case 2:
  297. po.setDay7top2(vo.getEventnum());
  298. po.setDay7top2Id(vo.getWarnId());
  299. po.setDay7top2name(vo.getWarnName());
  300. i++;
  301. break;
  302. case 3:
  303. po.setDay7top3(vo.getEventnum());
  304. po.setDay7top3Id(vo.getWarnId());
  305. po.setDay7top3name(vo.getWarnName());
  306. i++;
  307. break;
  308. default:
  309. break;
  310. }
  311. }
  312. } else if (type == 3) {
  313. for (EventVo vo : eventls) {
  314. switch (i) {
  315. case 1:
  316. po.setDay15top1(vo.getEventnum());
  317. po.setDay15top1Id(vo.getWarnId());
  318. po.setDay15top1name(vo.getWarnName());
  319. i++;
  320. break;
  321. case 2:
  322. po.setDay15top2(vo.getEventnum());
  323. po.setDay15top2Id(vo.getWarnId());
  324. po.setDay15top2name(vo.getWarnName());
  325. i++;
  326. break;
  327. case 3:
  328. po.setDay15top3(vo.getEventnum());
  329. po.setDay15top3Id(vo.getWarnId());
  330. po.setDay15top3name(vo.getWarnName());
  331. i++;
  332. break;
  333. default:
  334. break;
  335. }
  336. }
  337. } else if (type == 4) {
  338. for (EventVo vo : eventls) {
  339. switch (i) {
  340. case 1:
  341. po.setMonth1top1(vo.getEventnum());
  342. po.setMonth1top1Id(vo.getWarnId());
  343. po.setMonth1top1name(vo.getWarnName());
  344. i++;
  345. break;
  346. case 2:
  347. po.setMonth1top2(vo.getEventnum());
  348. po.setMonth1top2Id(vo.getWarnId());
  349. po.setMonth1top2name(vo.getWarnName());
  350. i++;
  351. break;
  352. case 3:
  353. po.setMonth1top3(vo.getEventnum());
  354. po.setMonth1top3Id(vo.getWarnId());
  355. po.setMonth1top3name(vo.getWarnName());
  356. i++;
  357. break;
  358. default:
  359. break;
  360. }
  361. }
  362. }
  363. }
  364. /**
  365. * 风机编号》Listt<EventVo> 获得统计数量map
  366. *
  367. * @param beginDate
  368. * @param endDate
  369. * @return
  370. */
  371. @SuppressWarnings({ "unchecked", "rawtypes" })
  372. public Map<String, List<EventVo>> getCountMap(String alerthistory1,String alerthistory2,Date beginDate, Date endDate) {
  373. Map<String, List<EventVo>> map = new HashMap<String, List<EventVo>>();
  374. if (StringUtils.notEmp(alerthistory1) && StringUtils.notEmp(alerthistory2) && StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
  375. List<EventVo> list =proEconEarlyWarningMainService.getCountMap(beginDate.getTime(), endDate.getTime());
  376. if (!list.isEmpty()) {
  377. for (EventVo vo : list) {
  378. if (map.containsKey(vo.getWtId())) {
  379. List<EventVo> ls = map.get(vo.getWtId());
  380. ls.add(vo);
  381. map.put(vo.getWtId(), ls);
  382. } else {
  383. List<EventVo> ls = new ArrayList<EventVo>();
  384. ls.add(vo);
  385. map.put(vo.getWtId(), ls);
  386. }
  387. }
  388. }
  389. }
  390. return map;
  391. }
  392. /**
  393. * 风机编号》Integer 获得统计排名顺序号
  394. *
  395. * @param beginDate
  396. * @param endDate
  397. * @return
  398. */
  399. @SuppressWarnings({ "unchecked", "rawtypes" })
  400. public Map<String, Integer> getCountOrderNum(String alerthistory1,String alerthistory2,Date beginDate, Date endDate) {
  401. Map<String, Integer> map = new HashMap<String, Integer>();
  402. if (StringUtils.notEmp(alerthistory1) && StringUtils.notEmp(alerthistory2) && StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
  403. List<EventVo> list = proEconEarlyWarningMainService.getCountOrderNum(beginDate.getTime(), endDate.getTime());
  404. if (!list.isEmpty()) {
  405. String wpId = list.get(0).getWpId();
  406. int i = 1;
  407. for (EventVo vo : list) {
  408. if (wpId.equals(vo.getWpId())) {
  409. map.put(vo.getWtId(), i);
  410. i++;
  411. } else {
  412. wpId = vo.getWpId();
  413. i = 1;
  414. map.put(vo.getWtId(), i);
  415. i++;
  416. }
  417. }
  418. }
  419. }
  420. return map;
  421. }
  422. /**
  423. * 风机编号》Integer 获得统计综合排名顺序号
  424. *
  425. * @return
  426. */
  427. public Map<String, Integer> getSynthesistopOrderNum(List<ProBasicEquipment> wtls, Map<String, Integer> day1ordermap, Map<String, Integer> day3ordermap, Map<String, Integer> day7ordermap, Map<String, Integer> day15ordermap, Map<String, Integer> month1ordermap) {
  428. Map<String, Integer> synthesistopordermap = new TreeMap<String, Integer>();
  429. if (StringUtils.notEmp(wtls) && !wtls.isEmpty() && StringUtils.notEmp(day3ordermap) && StringUtils.notEmp(day7ordermap) && StringUtils.notEmp(day15ordermap) && StringUtils.notEmp(month1ordermap)) {
  430. for (ProBasicEquipment wt : wtls) {
  431. int day1 = 0;
  432. int day3 = 0;
  433. int day7 = 0;
  434. int day15 = 0;
  435. int month1 = 0;
  436. if (day1ordermap.containsKey(wt.getId())) {
  437. day1 = day1ordermap.get(wt.getId());
  438. } else {
  439. day1 = wtls.size();
  440. }
  441. if (day3ordermap.containsKey(wt.getId())) {
  442. day3 = day3ordermap.get(wt.getId());
  443. } else {
  444. day3 = wtls.size();
  445. }
  446. if (day7ordermap.containsKey(wt.getId())) {
  447. day7 = day7ordermap.get(wt.getId());
  448. } else {
  449. day7 = wtls.size();
  450. }
  451. if (day15ordermap.containsKey(wt.getId())) {
  452. day15 = day15ordermap.get(wt.getId());
  453. } else {
  454. day15 = wtls.size();
  455. }
  456. if (month1ordermap.containsKey(wt.getId())) {
  457. month1 = month1ordermap.get(wt.getId());
  458. } else {
  459. month1 = wtls.size();
  460. }
  461. synthesistopordermap.put(wt.getId(), day1 +day3 + day7 + day15 + month1);
  462. }
  463. }
  464. // 这里将map.entrySet()转换成list
  465. List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(synthesistopordermap.entrySet());
  466. // 然后通过比较器来实现排序
  467. Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
  468. // 升序排序
  469. public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
  470. return o1.getValue().compareTo(o2.getValue());
  471. }
  472. });
  473. synthesistopordermap = new TreeMap<String, Integer>();
  474. int i = 1;
  475. for (Map.Entry<String, Integer> mapping : list) {
  476. // System.out.println(mapping.getKey()+":"+mapping.getValue());
  477. synthesistopordermap.put(mapping.getKey(), i);
  478. i++;
  479. }
  480. return synthesistopordermap;
  481. }
  482. /**
  483. * 获得风机》报警编号》List<ShutdowneventVo>
  484. *
  485. * @param beginDate
  486. * @param endDate
  487. * @return
  488. */
  489. @SuppressWarnings({ "unchecked", "rawtypes" })
  490. public Map<String, Map<String, List<ShutdowneventVo>>> getEventMap(String alerthistory1,String alerthistory2,Date beginDate, Date endDate) {
  491. Map<String, Map<String, List<ShutdowneventVo>>> map = new HashMap<String, Map<String, List<ShutdowneventVo>>>();
  492. if (StringUtils.notEmp(alerthistory1) && StringUtils.notEmp(alerthistory2) && StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
  493. List<ShutdowneventVo> list = proEconEarlyWarningMainService.getEventMap(beginDate.getTime(), endDate.getTime());
  494. if (!list.isEmpty()) {
  495. for (ShutdowneventVo vo : list) {
  496. if (map.containsKey(vo.getWindTurbineId())) {
  497. Map<String, List<ShutdowneventVo>> tempmap = map.get(vo.getWindTurbineId());
  498. if (tempmap.containsKey(vo.getWarningId())) {
  499. List<ShutdowneventVo> ls = tempmap.get(vo.getWarningId());
  500. ls.add(vo);
  501. tempmap.put(vo.getWarningId(), ls);
  502. } else {
  503. List<ShutdowneventVo> ls = new ArrayList<ShutdowneventVo>();
  504. ls.add(vo);
  505. tempmap.put(vo.getWarningId(), ls);
  506. }
  507. map.put(vo.getWindTurbineId(), tempmap);
  508. } else {
  509. Map<String, List<ShutdowneventVo>> tempmap = new HashMap<String, List<ShutdowneventVo>>();
  510. List<ShutdowneventVo> ls = new ArrayList<ShutdowneventVo>();
  511. ls.add(vo);
  512. tempmap.put(vo.getWarningId(), ls);
  513. map.put(vo.getWindTurbineId(), tempmap);
  514. }
  515. }
  516. }
  517. }
  518. return map;
  519. }
  520. private void saveEarlywarningsub(Calendar cal, Map<String, Map<String, List<ShutdowneventVo>>> eventmap, ProBasicPowerstation wp, ProBasicEquipment wt,
  521. ProEconEarlyWarningMain po, String tid,String name,String warningId) {
  522. if(eventmap.containsKey(wt.getId()))
  523. {
  524. Map<String, List<ShutdowneventVo>> map=eventmap.get(wt.getId());
  525. if(map.containsKey(warningId))
  526. {
  527. List<ShutdowneventVo> eventls=map.get(warningId);
  528. for(ShutdowneventVo vo:eventls)
  529. {
  530. ProEconEarlyWarningSub subpo=new ProEconEarlyWarningSub();
  531. subpo.setTid(tid);
  532. subpo.setWpId(wp.getId());
  533. subpo.setWpName(wp.getName());
  534. subpo.setWtId(wt.getId());
  535. subpo.setWtName(wt.getName());
  536. subpo.setRecordDate(cal.getTime());
  537. subpo.setName(name);
  538. subpo.setEventId(vo.getId());
  539. proEconEarlyWarningSubService.insertEarlywarningsub(subpo);
  540. }
  541. }
  542. }
  543. }
  544. public void deleteEarlywarningmain(Date recodedate) {
  545. proEconEarlyWarningMainService.deleteEarlywarningmain(recodedate);
  546. }
  547. public int insertEarlywarningmain(ProEconEarlyWarningMain po) {
  548. return proEconEarlyWarningMainService.insertEarlywarningmain(po);
  549. }
  550. }