alarm_tactics_service.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. package service
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/astaxie/beego/orm"
  6. "rtzh_elec_temperature/enum"
  7. "rtzh_elec_temperature/logger"
  8. "rtzh_elec_temperature/models/bo"
  9. "rtzh_elec_temperature/rtelec_app_public_lib/models"
  10. "rtzh_elec_temperature/rtelec_app_public_lib/models/vo"
  11. "sync"
  12. )
  13. // 绝对值告警缓存
  14. var abslist = sync.Map{}
  15. // 升温告警缓存
  16. var riselist = sync.Map{}
  17. // 温度不平衡告警缓存
  18. var unbalancelist = sync.Map{}
  19. // 告警明细缓存
  20. var alarmMpList = sync.Map{}
  21. type AlarmTactics struct {
  22. BaseService
  23. }
  24. // 绝对值告警设置-获取列表数据
  25. func (t *AlarmTactics) GetAbsList() []orm.Params {
  26. key := "abslist"
  27. if info, ok := abslist.Load(key); ok {
  28. return info.([]orm.Params)
  29. }
  30. db := orm.NewOrm()
  31. var sqlCommandText = "select id,strategy_name,alarm_level,mod_name,mod_id,operation_symbol,threshold from t_base_absolute_alarm"
  32. lst := []orm.Params{}
  33. _, err := db.Raw(sqlCommandText).Values(&lst)
  34. if err != nil {
  35. logger.Logger.Error(err)
  36. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.", sqlCommandText))
  37. return nil
  38. }
  39. // 数据量小可以循环读取每一个记录的明细测点
  40. sqlCommandText = "select mod_id,mod_name,attrname from t_base_alarm_mplist where alarm_type=1 and fk_id=?"
  41. for _, row := range lst {
  42. mplst := []orm.Params{}
  43. _, err = db.Raw(sqlCommandText, row["id"]).Values(&mplst)
  44. if err != nil {
  45. logger.Logger.Error(err)
  46. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.", sqlCommandText))
  47. return nil
  48. }
  49. row["mplist"] = mplst
  50. }
  51. abslist.Store(key, lst)
  52. return lst
  53. }
  54. // 绝对值告警设置-保存绝对值告警信息
  55. func (t *AlarmTactics) SaveAbsAlarmTactics(info vo.AlarmTacticsAbsInfo) int64 {
  56. db := orm.NewOrm()
  57. var sqlCommandText = "insert into t_base_absolute_alarm (strategy_name,alarm_level,mod_name,mod_id,operation_symbol,threshold) values (?,?,?,?,?,?)"
  58. var paramValues = []interface{}{info.Strategy_name, info.Alarm_level, info.Mod_name, info.Mod_id, info.Operation_symbol, info.Threshold}
  59. db.Begin()
  60. res, err := db.Raw(sqlCommandText, paramValues).Exec()
  61. id, _ := res.LastInsertId()
  62. if err != nil {
  63. db.Rollback()
  64. logger.Logger.Error(err)
  65. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, paramValues))
  66. return 0
  67. }
  68. sqlCommandText = "insert into t_base_alarm_mplist (fk_id,alarm_type,mod_id,mod_name,attrname)values"
  69. mplist := info.MpIdNameList
  70. var parms = []interface{}{}
  71. if len(mplist) > 0 {
  72. for index, row := range mplist {
  73. if index == len(mplist)-1 {
  74. sqlCommandText += "(?,?,?,?,?)"
  75. } else {
  76. sqlCommandText += "(?,?,?,?,?),"
  77. }
  78. parms = append(parms, id, 1, info.Mod_id, info.Mod_name, row["attrname"])
  79. }
  80. _, err := db.Raw(sqlCommandText, parms).Exec()
  81. if err != nil {
  82. db.Rollback()
  83. logger.Logger.Error(err)
  84. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, parms))
  85. return 0
  86. }
  87. }
  88. err = db.Commit()
  89. if err != nil {
  90. new(bo.SystemLog).Fail(enum.Abs_Alarm_tactics,
  91. enum.LogType_Insert,
  92. enum.OptEventType_Bus,
  93. enum.OptEventLevel_Hight,
  94. fmt.Sprintf("保存绝对值告警信息失败:%s", err.Error()),
  95. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  96. )
  97. }
  98. key := "abslist"
  99. abslist.Delete(key)
  100. new(bo.SystemLog).Success(enum.Abs_Alarm_tactics,
  101. enum.LogType_Insert,
  102. enum.OptEventType_Bus,
  103. enum.OptEventLevel_Hight,
  104. fmt.Sprintf("保存绝对值告警信息成功!"),
  105. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  106. )
  107. return id
  108. }
  109. // 绝对值告警设置-更新绝对值告警设置
  110. func (t *AlarmTactics) UpdateAbsAlarmTactics(info vo.AlarmTacticsAbsInfo) (int64, error) {
  111. //obj := new(models.T_base_absolute_alarm)
  112. obj := models.T_base_absolute_alarm{Id: info.Id}
  113. if info.Id == 0 {
  114. return 0, errors.New("记录id不能为空!")
  115. }
  116. obj.Strategy_name = info.Strategy_name
  117. obj.Alarm_level = info.Alarm_level
  118. obj.Mod_name = info.Mod_name
  119. obj.Mod_id = info.Mod_id
  120. obj.Operation_symbol = info.Operation_symbol
  121. obj.Threshold = info.Threshold
  122. db := orm.NewOrm()
  123. num, err := db.Update(&obj)
  124. if err != nil {
  125. logger.Logger.Error(err)
  126. logger.Logger.Println(fmt.Sprintf("Update Error:%s", err.Error()))
  127. return 0, err
  128. }
  129. // 先删除原有节点信息,再添加新的信息
  130. var sqlCommandText = "delete from t_base_alarm_mplist where alarm_type=1 and fk_id=?"
  131. _, err = db.Raw(sqlCommandText, info.Id).Exec()
  132. if err != nil {
  133. logger.Logger.Error(err)
  134. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, info.Id))
  135. return 0, err
  136. }
  137. sqlCommandText = "insert into t_base_alarm_mplist (fk_id,alarm_type,mod_id,mod_name,attrname)values"
  138. mplist := info.MpIdNameList
  139. var parms = []interface{}{}
  140. if len(mplist) > 0 {
  141. for index, row := range mplist {
  142. if index == len(mplist)-1 {
  143. sqlCommandText += "(?,?,?,?,?)"
  144. } else {
  145. sqlCommandText += "(?,?,?,?,?),"
  146. }
  147. parms = append(parms, info.Id, 1, info.Mod_id, info.Mod_name, row["attrname"])
  148. }
  149. _, err := db.Raw(sqlCommandText, parms).Exec()
  150. if err != nil {
  151. logger.Logger.Error(err)
  152. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, parms))
  153. return 0, err
  154. }
  155. }
  156. key := "abslist"
  157. abslist.Delete(key)
  158. new(bo.SystemLog).Success(enum.Abs_Alarm_tactics,
  159. enum.LogType_Update,
  160. enum.OptEventType_Bus,
  161. enum.OptEventLevel_Hight,
  162. fmt.Sprintf("更新绝对值告警信息成功!"),
  163. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  164. )
  165. return num, nil
  166. }
  167. // 绝对值告警设置-删除绝对值告警信息
  168. func (t *AlarmTactics) DelAbsAlarmTactics(fkId int64) bool {
  169. db := orm.NewOrm()
  170. db.Begin()
  171. var sqlCommandText = "DELETE from t_base_absolute_alarm where id = ?"
  172. _, err := db.Raw(sqlCommandText, fkId).Exec()
  173. if err != nil {
  174. db.Rollback()
  175. logger.Logger.Error(err)
  176. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, fkId))
  177. return false
  178. }
  179. sqlCommandText = "DELETE from t_base_alarm_mplist where alarm_type=1 and fk_id=?"
  180. _, err = db.Raw(sqlCommandText, fkId).Exec()
  181. if err != nil {
  182. db.Rollback()
  183. logger.Logger.Error(err)
  184. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, fkId))
  185. return false
  186. }
  187. err = db.Commit()
  188. if err != nil {
  189. new(bo.SystemLog).Fail(enum.Abs_Alarm_tactics,
  190. enum.LogType_Insert,
  191. enum.OptEventType_Bus,
  192. enum.OptEventLevel_Hight,
  193. fmt.Sprintf("删除绝对值告警信息失败:%s", err.Error()),
  194. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  195. )
  196. }
  197. key := "abslist"
  198. abslist.Delete(key)
  199. new(bo.SystemLog).Success(enum.Abs_Alarm_tactics,
  200. enum.LogType_Delete,
  201. enum.OptEventType_Bus,
  202. enum.OptEventLevel_Hight,
  203. fmt.Sprintf("删除绝对值告警信息成功!"),
  204. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  205. )
  206. return true
  207. }
  208. // 升温告警设置-获取列表数据
  209. func (t *AlarmTactics) GetRiseList() []orm.Params {
  210. key := "riselist"
  211. if info, ok := riselist.Load(key); ok {
  212. return info.([]orm.Params)
  213. }
  214. db := orm.NewOrm()
  215. var sqlCommandText = "select id,strategy_name,alarm_level,mod_name,mod_id,upcycle,scope from t_base_rise_alarm"
  216. lst := []orm.Params{}
  217. _, err := db.Raw(sqlCommandText).Values(&lst)
  218. if err != nil {
  219. logger.Logger.Error(err)
  220. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.", sqlCommandText))
  221. return nil
  222. }
  223. // 数据量小可以循环读取每一个记录的明细测点
  224. sqlCommandText = "select mod_id,mod_name,attrname from t_base_alarm_mplist where alarm_type=2 and fk_id=?"
  225. for _, row := range lst {
  226. mplst := []orm.Params{}
  227. _, err = db.Raw(sqlCommandText, row["id"]).Values(&mplst)
  228. if err != nil {
  229. logger.Logger.Error(err)
  230. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.", sqlCommandText))
  231. return nil
  232. }
  233. row["mplist"] = mplst
  234. }
  235. riselist.Store(key, lst)
  236. return lst
  237. }
  238. // 升温告警设置-保存升温告警信息
  239. func (t *AlarmTactics) SaveRiseAlarmTactics(info vo.AlarmTacticsRiseInfo) int64 {
  240. db := orm.NewOrm()
  241. var sqlCommandText = "insert into t_base_rise_alarm (strategy_name,alarm_level,mod_name,mod_id,upcycle,scope) values (?,?,?,?,?,?)"
  242. var paramValues = []interface{}{info.Strategy_name, info.Alarm_level, info.Mod_name, info.Mod_id, info.Upcycle, info.Scope}
  243. db.Begin()
  244. res, err := db.Raw(sqlCommandText, paramValues).Exec()
  245. id, _ := res.LastInsertId()
  246. if err != nil {
  247. db.Rollback()
  248. logger.Logger.Error(err)
  249. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, paramValues))
  250. return 0
  251. }
  252. sqlCommandText = "insert into t_base_alarm_mplist (fk_id,alarm_type,mod_id,mod_name,attrname)values"
  253. mplist := info.MpIdNameList
  254. var parms = []interface{}{}
  255. if len(mplist) > 0 {
  256. for index, row := range mplist {
  257. if index == len(mplist)-1 {
  258. sqlCommandText += "(?,?,?,?,?)"
  259. } else {
  260. sqlCommandText += "(?,?,?,?,?),"
  261. }
  262. parms = append(parms, id, 2, info.Mod_id, info.Mod_name, row["attrname"])
  263. }
  264. _, err := db.Raw(sqlCommandText, parms).Exec()
  265. if err != nil {
  266. db.Rollback()
  267. logger.Logger.Error(err)
  268. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, parms))
  269. return 0
  270. }
  271. }
  272. err = db.Commit()
  273. if err != nil {
  274. new(bo.SystemLog).Fail(enum.Rise_Alarm_tactics,
  275. enum.LogType_Insert,
  276. enum.OptEventType_Bus,
  277. enum.OptEventLevel_Hight,
  278. fmt.Sprintf("保存升温告警信息失败:%s", err.Error()),
  279. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  280. )
  281. }
  282. key := "riselist"
  283. riselist.Delete(key)
  284. new(bo.SystemLog).Success(enum.Rise_Alarm_tactics,
  285. enum.LogType_Insert,
  286. enum.OptEventType_Bus,
  287. enum.OptEventLevel_Hight,
  288. fmt.Sprintf("保存升温告警信息成功!"),
  289. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  290. )
  291. return id
  292. }
  293. // 升温告警设置-更新升温告警信息
  294. func (t *AlarmTactics) UpdateRiseAlarmTactics(info vo.AlarmTacticsRiseInfo) (int64, error) {
  295. obj := models.T_base_rise_alarm{Id: info.Id}
  296. if info.Id == 0 {
  297. return 0, errors.New("记录id不能为空!")
  298. }
  299. obj.Strategy_name = info.Strategy_name
  300. obj.Alarm_level = info.Alarm_level
  301. obj.Mod_name = info.Mod_name
  302. obj.Mod_id = info.Mod_id
  303. obj.Upcycle = info.Upcycle
  304. obj.Scope = info.Scope
  305. db := orm.NewOrm()
  306. num, err := db.Update(&obj)
  307. if err != nil {
  308. logger.Logger.Error(err)
  309. logger.Logger.Println(fmt.Sprintf("Update Error:%s", err.Error()))
  310. return 0, err
  311. }
  312. // 先删除原有节点信息,再添加新的信息
  313. var sqlCommandText = "delete from t_base_alarm_mplist where alarm_type=2 and fk_id=?"
  314. _, err = db.Raw(sqlCommandText, info.Id).Exec()
  315. if err != nil {
  316. logger.Logger.Error(err)
  317. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, info.Id))
  318. return 0, err
  319. }
  320. sqlCommandText = "insert into t_base_alarm_mplist (fk_id,alarm_type,mod_id,mod_name,attrname) values"
  321. mplist := info.MpIdNameList
  322. var parms = []interface{}{}
  323. if len(mplist) > 0 {
  324. for index, row := range mplist {
  325. if index == len(mplist)-1 {
  326. sqlCommandText += "(?,?,?,?,?)"
  327. } else {
  328. sqlCommandText += "(?,?,?,?,?),"
  329. }
  330. parms = append(parms, info.Id, 2, info.Mod_id, info.Mod_name, row["attrname"])
  331. }
  332. _, err := db.Raw(sqlCommandText, parms).Exec()
  333. if err != nil {
  334. logger.Logger.Error(err)
  335. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, parms))
  336. return 0, err
  337. }
  338. }
  339. key := "riselist"
  340. riselist.Delete(key)
  341. new(bo.SystemLog).Success(enum.Rise_Alarm_tactics,
  342. enum.LogType_Update,
  343. enum.OptEventType_Bus,
  344. enum.OptEventLevel_Hight,
  345. fmt.Sprintf("更新升温告警信息成功!"),
  346. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  347. )
  348. return num, nil
  349. }
  350. // 升温告警设置-删除升温告警信息
  351. func (t *AlarmTactics) DelRiseAlarmTactics(fkId int64) (bool, error) {
  352. db := orm.NewOrm()
  353. db.Begin()
  354. var sqlCommandText = "DELETE from t_base_rise_alarm where id = ?"
  355. _, err := db.Raw(sqlCommandText, fkId).Exec()
  356. if err != nil {
  357. db.Rollback()
  358. logger.Logger.Error(err)
  359. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, fkId))
  360. return false, err
  361. }
  362. sqlCommandText = "DELETE from t_base_alarm_mplist where alarm_type=2 and fk_id=?"
  363. _, err = db.Raw(sqlCommandText, fkId).Exec()
  364. if err != nil {
  365. db.Rollback()
  366. logger.Logger.Error(err)
  367. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, fkId))
  368. return false, err
  369. }
  370. err = db.Commit()
  371. if err != nil {
  372. new(bo.SystemLog).Fail(enum.Rise_Alarm_tactics,
  373. enum.LogType_Delete,
  374. enum.OptEventType_Bus,
  375. enum.OptEventLevel_Hight,
  376. fmt.Sprintf("删除升温告警信息失败:%s", err.Error()),
  377. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  378. )
  379. }
  380. key := "riselist"
  381. riselist.Delete(key)
  382. new(bo.SystemLog).Success(enum.Rise_Alarm_tactics,
  383. enum.LogType_Delete,
  384. enum.OptEventType_Bus,
  385. enum.OptEventLevel_Hight,
  386. fmt.Sprintf("删除升温告警信息成功!"),
  387. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  388. )
  389. return true, nil
  390. }
  391. // 温度不平衡告警设置-获取列表数据
  392. func (t *AlarmTactics) GetUnbalanceList() []orm.Params {
  393. key := "unbalancelist"
  394. if info, ok := unbalancelist.Load(key); ok {
  395. return info.([]orm.Params)
  396. }
  397. db := orm.NewOrm()
  398. var sqlCommandText = "select id,strategy_name,alarm_level,operation_symbol,threshold from t_base_unbalance_alarm"
  399. lst := []orm.Params{}
  400. _, err := db.Raw(sqlCommandText).Values(&lst)
  401. if err != nil {
  402. logger.Logger.Error(err)
  403. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.", sqlCommandText))
  404. return nil
  405. }
  406. unbalancelist.Store(key, lst)
  407. return lst
  408. }
  409. // 温度不平衡告警设置-保存温度不平衡告警设置
  410. func (t *AlarmTactics) SaveUnbalanceAlarmTactics(info vo.AlarmTacticsUnbalanceInfo) (int64, error) {
  411. db := orm.NewOrm()
  412. var sqlCommandText = "insert into t_base_unbalance_alarm (strategy_name,alarm_level,operation_symbol,threshold) values (?,?,?,?)"
  413. var paramValues = []interface{}{info.Strategy_name, info.Alarm_level, info.Operation_symbol, info.Threshold}
  414. res, err := db.Raw(sqlCommandText, paramValues).Exec()
  415. id, _ := res.LastInsertId()
  416. if err != nil {
  417. logger.Logger.Error(err)
  418. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, paramValues))
  419. return 0, err
  420. }
  421. key := "unbalancelist"
  422. unbalancelist.Delete(key)
  423. new(bo.SystemLog).Success(enum.Unbalance_Alarm_tactics,
  424. enum.LogType_Insert,
  425. enum.OptEventType_Bus,
  426. enum.OptEventLevel_Hight,
  427. fmt.Sprintf("保存温度不平衡告警信息成功!"),
  428. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  429. )
  430. return id, nil
  431. }
  432. // 温度不平衡告警设置-更新温度不平衡告警设置
  433. func (t *AlarmTactics) UpdateUnbalanceAlarmTactics(info vo.AlarmTacticsUnbalanceInfo) (int64, error) {
  434. obj := models.T_base_unbalance_alarm{}
  435. if info.Id == 0 {
  436. return 0, errors.New("记录id不能为空!")
  437. }
  438. obj.Id = info.Id
  439. obj.Strategy_name = info.Strategy_name
  440. obj.Alarm_level = info.Alarm_level
  441. obj.Operation_symbol = info.Operation_symbol
  442. obj.Threshold = info.Threshold
  443. db := orm.NewOrm()
  444. num, err := db.Update(&obj)
  445. if err != nil {
  446. logger.Logger.Error(err)
  447. logger.Logger.Println(fmt.Sprintf("Update Error:%s", err.Error()))
  448. return 0, err
  449. }
  450. key := "unbalancelist"
  451. unbalancelist.Delete(key)
  452. new(bo.SystemLog).Success(enum.Unbalance_Alarm_tactics,
  453. enum.LogType_Update,
  454. enum.OptEventType_Bus,
  455. enum.OptEventLevel_Hight,
  456. fmt.Sprintf("更新温度不平衡告警信息成功!"),
  457. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  458. )
  459. return num, nil
  460. }
  461. // 温度不平衡告警设置-删除温度不平衡告警设置
  462. func (t *AlarmTactics) DelUnbalanceAlarmTactics(fkId int64) (bool, error) {
  463. db := orm.NewOrm()
  464. var sqlCommandText = "DELETE from t_base_unbalance_alarm where id = ?"
  465. _, err := db.Raw(sqlCommandText, fkId).Exec()
  466. if err != nil {
  467. logger.Logger.Error(err)
  468. logger.Logger.Println(fmt.Sprintf("Error SQL:%s.\nParam is:%s", sqlCommandText, fkId))
  469. return false, err
  470. }
  471. key := "unbalancelist"
  472. unbalancelist.Delete(key)
  473. new(bo.SystemLog).Success(enum.Unbalance_Alarm_tactics,
  474. enum.LogType_Delete,
  475. enum.OptEventType_Bus,
  476. enum.OptEventLevel_Hight,
  477. fmt.Sprintf("删除温度不平衡告警信息成功!"),
  478. map[string]interface{}{"name": t.UserInfo.Usrname, "ip": t.UserInfo.Ip},
  479. )
  480. return true, nil
  481. }
  482. // 根据测点属性名返回该测点对应的绝对值规则
  483. func (t *AlarmTactics) GetAttrAbs(attrName string) []orm.Params {
  484. abs, ok := abslist.Load("abslist")
  485. if !ok {
  486. abs = t.GetAbsList()
  487. }
  488. lst := []orm.Params{}
  489. absAlarmList := abs.([]orm.Params)
  490. for _, item := range absAlarmList {
  491. mplst := item["mplist"].([]orm.Params)
  492. for _, row := range mplst {
  493. a := fmt.Sprint(row["attrname"])
  494. if a == attrName {
  495. lst = append(lst, item)
  496. continue
  497. }
  498. }
  499. }
  500. return lst
  501. }
  502. // 根据测点返回该测点的升温规则
  503. func (t *AlarmTactics) GetAttrRise(attrName string) []orm.Params {
  504. rise, ok := riselist.Load("riselist")
  505. if !ok {
  506. rise = t.GetRiseList()
  507. }
  508. lst := []orm.Params{}
  509. riseAlarmList := rise.([]orm.Params)
  510. for _, item := range riseAlarmList {
  511. mplst := item["mplist"].([]orm.Params)
  512. for _, row := range mplst {
  513. a := fmt.Sprint(row["attrname"])
  514. if a == attrName {
  515. lst = append(lst, item)
  516. continue
  517. }
  518. }
  519. }
  520. return lst
  521. }
  522. // 读取独立配置的绝对值告警规则
  523. func (t *AlarmTactics) GetAloneAttrAbs(deviceid int64, mpid int64) []orm.Params {
  524. db := orm.NewOrm()
  525. var sql = "SELECT t.deviceid,t.mpid,t.alarm_id,t.attrname,t.mpname,t.upcycle,t.threshold,t.alarm_type,a.strategy_name,a.operation_symbol,a.alarm_level FROM t_base_alone_alarm t,t_base_absolute_alarm a WHERE a.id = t.alarm_id and t.alarm_type=1 and deviceid=? and mpid=?"
  526. lst := []orm.Params{}
  527. _, err := db.Raw(sql, deviceid, mpid).Values(&lst)
  528. if err != nil {
  529. logger.Logger.Error(err)
  530. logger.Logger.Println(fmt.Sprintf("Error is:%s.", err.Error()))
  531. return nil
  532. }
  533. return lst
  534. }
  535. // 读取独立配置的升温告警规则
  536. func (t *AlarmTactics) GetAloneAttrRise(deviceid int64, mpid int64) []orm.Params {
  537. db := orm.NewOrm()
  538. var sql = "SELECT t.deviceid,t.mpid,t.alarm_id,t.attrname,t.mpname,t.upcycle,t.threshold,t.alarm_type,a.strategy_name,a.upcycle,a.alarm_level FROM t_base_alone_alarm t,t_base_rise_alarm a WHERE a.id = t.alarm_id and t.alarm_type=2 and deviceid=? and mpid=?"
  539. lst := []orm.Params{}
  540. _, err := db.Raw(sql, deviceid, mpid).Values(&lst)
  541. if err != nil {
  542. logger.Logger.Error(err)
  543. logger.Logger.Println(fmt.Sprintf("Error is:%s.", err.Error()))
  544. return nil
  545. }
  546. return lst
  547. }
  548. //// 读取独立配置的温度不平衡告警规则
  549. //func (t *AlarmTactics) GetAloneAttrUnbalance(deviceid int64, mpid int64) []orm.Params {
  550. // db := orm.NewOrm()
  551. // var sql = "SELECT t.deviceid,t.mpid,t.alarm_id,t.attrname,t.mpname,t.upcycle,t.threshold,t.alarm_type,a.strategy_name,a.operation_symbol,a.alarm_level FROM t_base_alone_alarm t,t_base_unbalance_alarm a WHERE a.id = t.alarm_id and t.alarm_type=3 and deviceid=? and mpid=?"
  552. // lst := []orm.Params{}
  553. // _, err := db.Raw(sql, deviceid, mpid).Values(&lst)
  554. // if err != nil {
  555. // logger.Logger.Error(err)
  556. // logger.Logger.Println(fmt.Sprintf("Error is:%s.", err.Error()))
  557. // return nil
  558. // }
  559. // return lst
  560. //}