AlarmWtService.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. package com.gyee.alarm.service;
  2. import com.gyee.alarm.init.CacheContext;
  3. import com.gyee.alarm.model.auto.*;
  4. import com.gyee.alarm.model.vo.*;
  5. import com.gyee.alarm.service.auto.IAlarmTsService;
  6. import com.gyee.alarm.service.auto.IProEconAlarmInfoService;
  7. import com.gyee.alarm.util.DateUtils;
  8. import com.gyee.alarm.util.StringUtils;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.stereotype.Service;
  11. import javax.annotation.Resource;
  12. import java.sql.SQLException;
  13. import java.sql.Timestamp;
  14. import java.util.*;
  15. @Service
  16. public class AlarmWtService {
  17. @Resource
  18. private IAlarmTsService alarmTsService;
  19. @Resource
  20. private IProEconAlarmInfoService proEconAlarmInfoService;
  21. @Value("${initialcode}")
  22. private String initialcode;
  23. public void dropSuperTable()
  24. {
  25. alarmTsService.dropSuperTable(AlarmSuperTalbeType.WT.getCode());
  26. }
  27. public void createSuperTable()
  28. {
  29. alarmTsService.createSuperTable(AlarmSuperTalbeType.WT.getCode());
  30. }
  31. public void initalWtAlarm() throws SQLException {
  32. List<AlarmVo> alarmVoList=CacheContext.alarmWtList;
  33. List<AlarmTag> alarmTags=new ArrayList<>();
  34. if(!alarmVoList.isEmpty())
  35. {
  36. for(AlarmVo vo: alarmVoList)
  37. {
  38. alarmTsService.createTable(vo.getTbName(), vo.getAlarmid(), vo.getAlarmtype(),
  39. vo.getCharacteristic(), vo.getComponents(),
  40. vo.getDescription(),
  41. vo.getDeviceid(), vo.getDevicename(),
  42. vo.getDevicetype(), vo.getEnabled(),
  43. vo.getLineid(), vo.getLinename(),
  44. vo.getModelId(), vo.getProjectid(),
  45. vo.getProjectname(), vo.getRank(),
  46. vo.getResettable(), vo.getStationid(),
  47. vo.getStationname(), vo.getSubcomponents(),
  48. vo.getSuffix(), vo.getTagid(),
  49. vo.getTriggertype(), vo.getUniformcode(),vo.getSuperTableName());
  50. AlarmTag po=new AlarmTag();
  51. po.setId(vo.getTbName());
  52. po.setVal(0.0);
  53. po.setTriggerType(vo.getTriggertype());
  54. po.setTagId(vo.getTagid());
  55. po.setOval(0.0);
  56. po.setRank(vo.getRank());
  57. po.setTimeLong(0.0);
  58. po.setTs(new Date().getTime());
  59. alarmTags.add(po);
  60. }
  61. }
  62. alarmTsService.insertList(alarmTags);
  63. }
  64. public List<AlarmVo> initalAlarmVo() {
  65. List<AlarmVo> alarmVoList=new ArrayList<>();
  66. Map<String, List<ProEconAlarmConfiguration>> wtAlarmMap = CacheContext.wtAlarmMap;
  67. Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
  68. for (ProBasicEquipment wt : CacheContext.wtls) {
  69. // if(wt.getId().contains("SXJ_KGDL_DJY_F_WT_0001_EQ"))
  70. // {
  71. // System.out.println("");
  72. // }
  73. // if(wt.getId().contains("SXJ_KGDL_GJY_F_WT_0001_EQ"))
  74. // {
  75. // System.out.println("");
  76. // }
  77. if (wtpAimap.containsKey(wt.getId())) {
  78. Map<String, ProBasicEquipmentPoint> pointMap = wtpAimap.get(wt.getId());
  79. StringBuilder sb = new StringBuilder();
  80. sb.append(wt.getWindpowerstationId() + wt.getModelId());
  81. if (StringUtils.notEmp(pointMap) && wtAlarmMap.containsKey(String.valueOf(sb))) {
  82. List<ProEconAlarmConfiguration> alarmls = wtAlarmMap.get(String.valueOf(sb));
  83. if (!alarmls.isEmpty()) {
  84. for (ProEconAlarmConfiguration alarm : alarmls) {
  85. if (pointMap.containsKey(alarm.getUniformCode())) {
  86. ProBasicEquipmentPoint equipmentPoint = pointMap.get(alarm.getUniformCode());
  87. if(StringUtils.notEmp(initialcode) &&
  88. StringUtils.notEmp(equipmentPoint.getNemCode()) &&
  89. !equipmentPoint.getNemCode().equals(initialcode))
  90. {
  91. AlarmVo vo=new AlarmVo();
  92. StringBuilder tbName = new StringBuilder();
  93. tbName.append(wt.getId()).append("_").append(alarm.getId());
  94. vo.setTbName(String.valueOf(tbName));
  95. vo.setAlarmid(alarm.getId());
  96. vo.setTagid(equipmentPoint.getNemCode());
  97. vo.setAlarmtype(alarm.getAlarmType());
  98. vo.setCharacteristic(alarm.getCharacteristic());
  99. vo.setComponents(alarm.getComponents());
  100. vo.setDescription(alarm.getDescription());
  101. vo.setDeviceid(wt.getId());
  102. vo.setDevicename(wt.getName());
  103. vo.setDevicetype(DeviceTypeValue.WT.getCode());
  104. vo.setEnabled(alarm.getEnable());
  105. vo.setLineid(wt.getLineId());
  106. if(CacheContext.lnmap.containsKey(wt.getLineId()))
  107. {
  108. ProBasicLine ln=CacheContext.lnmap.get(wt.getLineId());
  109. vo.setLinename(ln.getName());
  110. }
  111. vo.setModelId(wt.getModelId());
  112. vo.setProjectid(wt.getProjectId());
  113. if(CacheContext.pjmap.containsKey(wt.getProjectId()))
  114. {
  115. ProBasicProject pj=CacheContext.pjmap.get(wt.getProjectId());
  116. vo.setProjectname(pj.getName());
  117. }
  118. vo.setRank(alarm.getRank());
  119. vo.setResettable(alarm.getResetTable());
  120. vo.setStationid(wt.getWindpowerstationId());
  121. if(CacheContext.wpmap.containsKey(wt.getWindpowerstationId()))
  122. {
  123. ProBasicPowerstation wp=CacheContext.wpmap.get(wt.getWindpowerstationId());
  124. vo.setStationname(wp.getName());
  125. }
  126. vo.setSubcomponents(alarm.getSubcomponents());
  127. vo.setSuffix(alarm.getSuffix());
  128. vo.setTriggertype(alarm.getTriggerType());
  129. vo.setUniformcode(alarm.getUniformCode());
  130. vo.setSuperTableName(AlarmSuperTalbeType.WT.getCode());
  131. vo.setVal(0);
  132. alarmVoList.add(vo);
  133. }
  134. }else {
  135. //临时创建表
  136. AlarmVo vo=new AlarmVo();
  137. StringBuilder tbName = new StringBuilder();
  138. tbName.append(wt.getId()).append("_").append(alarm.getId());
  139. vo.setTbName(String.valueOf(tbName));
  140. vo.setAlarmid(alarm.getId());
  141. vo.setTagid("GF-TZ-SYZ.038200G9911SYB99GI017DB0111PA99RAW01");
  142. vo.setAlarmtype(alarm.getAlarmType());
  143. vo.setCharacteristic(alarm.getCharacteristic());
  144. vo.setComponents(alarm.getComponents());
  145. vo.setDescription(alarm.getDescription());
  146. vo.setDeviceid(wt.getId());
  147. vo.setDevicename(wt.getName());
  148. vo.setDevicetype(DeviceTypeValue.WT.getCode());
  149. vo.setEnabled(alarm.getEnable());
  150. vo.setLineid(wt.getLineId());
  151. if(CacheContext.lnmap.containsKey(wt.getLineId()))
  152. {
  153. ProBasicLine ln=CacheContext.lnmap.get(wt.getLineId());
  154. vo.setLinename(ln.getName());
  155. }
  156. vo.setModelId(wt.getModelId());
  157. vo.setProjectid(wt.getProjectId());
  158. if(CacheContext.pjmap.containsKey(wt.getProjectId()))
  159. {
  160. ProBasicProject pj=CacheContext.pjmap.get(wt.getProjectId());
  161. vo.setProjectname(pj.getName());
  162. }
  163. vo.setRank(alarm.getRank());
  164. vo.setResettable(alarm.getResetTable());
  165. vo.setStationid(wt.getWindpowerstationId());
  166. if(CacheContext.wpmap.containsKey(wt.getWindpowerstationId()))
  167. {
  168. ProBasicPowerstation wp=CacheContext.wpmap.get(wt.getWindpowerstationId());
  169. vo.setStationname(wp.getName());
  170. }
  171. vo.setSubcomponents(alarm.getSubcomponents());
  172. vo.setSuffix(alarm.getSuffix());
  173. vo.setTriggertype(alarm.getTriggerType());
  174. vo.setUniformcode(alarm.getUniformCode());
  175. vo.setSuperTableName(AlarmSuperTalbeType.WT.getCode());
  176. vo.setVal(0);
  177. alarmVoList.add(vo);
  178. }
  179. }
  180. }
  181. }
  182. }
  183. }
  184. return alarmVoList;
  185. }
  186. public List<AlarmTag> findTags(String stbaleName)
  187. {
  188. List<AlarmTag> ls=new ArrayList<>();
  189. if(StringUtils.notEmp(stbaleName))
  190. {
  191. // List<AlarmVo> vos= alarmTsService.findTags(stbaleName);
  192. List<AlarmVo> vos= CacheContext.alarmWtList;
  193. if(!vos.isEmpty())
  194. {
  195. for(AlarmVo vo:vos)
  196. {
  197. AlarmTag po=new AlarmTag();
  198. po.setId(vo.getTbName());
  199. po.setOval(vo.getVal().doubleValue());
  200. po.setTriggerType(vo.getTriggertype());
  201. po.setTagId(vo.getTagid());
  202. po.setVal(vo.getVal().doubleValue());
  203. po.setRank(vo.getRank());
  204. ls.add(po);
  205. }
  206. }
  207. }
  208. return ls;
  209. }
  210. public synchronized void saveAlarms(List<AlarmTag> ls)
  211. {
  212. if(StringUtils.notEmp(ls) && !ls.isEmpty()) {
  213. alarmTsService.insertList(ls);
  214. if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
  215. List<ProEconAlarmInfo> valuels = new ArrayList<>();
  216. for (AlarmTag alarm : ls) {
  217. if (CacheContext.alarmWtMap.containsKey(alarm.getId())) {
  218. AlarmVo vo = CacheContext.alarmWtMap.get(alarm.getId());
  219. ProEconAlarmInfo po = new ProEconAlarmInfo();
  220. po.setTbname(vo.getTbName());
  221. po.setLastUpdateTime(new Date(alarm.getTs()));
  222. po.setTagId(alarm.getTagId());
  223. po.setTriggerType(alarm.getTriggerType());
  224. po.setAlarmId(vo.getAlarmid());
  225. po.setDeviceId(vo.getDeviceid());
  226. po.setSubcomponents(vo.getSuffix());
  227. po.setRank(vo.getRank());
  228. po.setConfirmed(false);
  229. po.setUniformCode(vo.getUniformcode());
  230. po.setAlarmType(vo.getAlarmtype());
  231. po.setDeviceType(vo.getDevicetype());
  232. po.setComponents(vo.getComponents());
  233. po.setSubcomponents(vo.getSubcomponents());
  234. po.setDescription(vo.getDescription());
  235. po.setModelId(vo.getModelId());
  236. po.setResetTable(vo.getResettable());
  237. po.setEnable(vo.getEnabled());
  238. po.setCharacteristic(vo.getCharacteristic());
  239. po.setStationId(vo.getStationid());
  240. po.setProjectId(vo.getProjectid());
  241. po.setLineId(vo.getLineid());
  242. po.setStationName(vo.getStationname());
  243. po.setProjectiName(vo.getProjectname());
  244. po.setLineidName(vo.getLinename());
  245. po.setDeviceName(vo.getDevicename());
  246. po.setOval(alarm.getOval().intValue());
  247. po.setIsOpen(1);
  248. po.setVal(alarm.getVal().intValue());
  249. valuels.add(po);
  250. }
  251. }
  252. List<String> idls = new ArrayList<>();
  253. for (ProEconAlarmInfo vo : valuels) {
  254. idls.add(vo.getTbname());
  255. }
  256. if (!idls.isEmpty()) {
  257. proEconAlarmInfoService.removeByIds(idls);
  258. }
  259. List<ProEconAlarmInfo> templs = new ArrayList<>();
  260. for (ProEconAlarmInfo vo : valuels) {
  261. templs.add(vo);
  262. if (templs.size() == 100) {
  263. proEconAlarmInfoService.saveBatch(templs);
  264. templs = new ArrayList<>();
  265. }
  266. }
  267. if (!templs.isEmpty()) {
  268. proEconAlarmInfoService.saveBatch(templs);
  269. }
  270. }
  271. }
  272. }
  273. public synchronized void updateAlarms(List<AlarmTag> ls) {
  274. if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
  275. StringBuilder sb=new StringBuilder();
  276. Map<String, AlarmSimpleVo> map=new HashMap<>();
  277. for (AlarmTag alarm : ls) {
  278. sb.append("'").append(alarm.getId()).append("',");
  279. }
  280. String ids=sb.substring(0,sb.length()-1);
  281. List<AlarmSimpleVo> alarmls=alarmTsService.selectLastRowByTbname(AlarmSuperTalbeType.WT.getCode(),ids);
  282. if(!alarmls.isEmpty())
  283. {
  284. for(AlarmSimpleVo vo:alarmls)
  285. {
  286. map.put(vo.getTbName(),vo);
  287. }
  288. }
  289. for (AlarmTag alarm : ls) {
  290. if(map.containsKey(alarm.getId()))
  291. {
  292. AlarmSimpleVo tag=map.get(alarm.getId());
  293. tag.setTs(new Timestamp(alarm.getTs()));
  294. Date begin = new Date(alarm.getEndts());
  295. Date end = new Date(alarm.getTs());
  296. double value= DateUtils.hoursDiff(begin,end);
  297. tag.setTimelong(value);
  298. }
  299. }
  300. alarmTsService.insertList(ls);
  301. if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
  302. List<ProEconAlarmInfo> valuels = new ArrayList<>();
  303. for (AlarmTag alarm : ls) {
  304. if (CacheContext.alarmWtMap.containsKey(alarm.getId())) {
  305. AlarmVo vo = CacheContext.alarmWtMap.get(alarm.getId());
  306. ProEconAlarmInfo po = new ProEconAlarmInfo();
  307. po.setTbname(vo.getTbName());
  308. po.setLastUpdateTime(new Date(alarm.getEndts()));
  309. po.setTagId(alarm.getTagId());
  310. po.setTriggerType(alarm.getTriggerType());
  311. po.setAlarmId(vo.getAlarmid());
  312. po.setDeviceId(vo.getDeviceid());
  313. po.setSubcomponents(vo.getSuffix());
  314. po.setRank(vo.getRank());
  315. po.setConfirmed(false);
  316. po.setUniformCode(vo.getUniformcode());
  317. po.setAlarmType(vo.getAlarmtype());
  318. po.setDeviceType(vo.getDevicetype());
  319. po.setComponents(vo.getComponents());
  320. po.setSubcomponents(vo.getSubcomponents());
  321. po.setDescription(vo.getDescription());
  322. po.setModelId(vo.getModelId());
  323. po.setResetTable(vo.getResettable());
  324. po.setEnable(vo.getEnabled());
  325. po.setCharacteristic(vo.getCharacteristic());
  326. po.setStationId(vo.getStationid());
  327. po.setProjectId(vo.getProjectid());
  328. po.setLineId(vo.getLineid());
  329. po.setStationName(vo.getStationname());
  330. po.setProjectiName(vo.getProjectname());
  331. po.setLineidName(vo.getLinename());
  332. po.setDeviceName(vo.getDevicename());
  333. po.setOval(alarm.getOval().intValue());
  334. po.setCloseTime(new Date(alarm.getEndts()));
  335. po.setIsOpen(0);
  336. po.setVal(alarm.getVal().intValue());
  337. valuels.add(po);
  338. }
  339. }
  340. List<String> idls = new ArrayList<>();
  341. for (ProEconAlarmInfo vo : valuels) {
  342. idls.add(vo.getTbname());
  343. }
  344. if (!idls.isEmpty()) {
  345. proEconAlarmInfoService.removeByIds(idls);
  346. }
  347. List<ProEconAlarmInfo> templs = new ArrayList<>();
  348. for (ProEconAlarmInfo vo : valuels) {
  349. templs.add(vo);
  350. if (templs.size() == 1000) {
  351. proEconAlarmInfoService.saveBatch(templs);
  352. templs = new ArrayList<>();
  353. }
  354. }
  355. if (!templs.isEmpty()) {
  356. proEconAlarmInfoService.saveBatch(templs);
  357. }
  358. }
  359. }
  360. }
  361. }