123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- package service
- import (
- "fmt"
- "github.com/astaxie/beego/orm"
- "rtzh_elec_temperature/logger"
- "rtzh_elec_temperature/rtelec_app_public_lib/models"
- "rtzh_elec_temperature/rtelec_app_public_lib/models/vo"
- "rtzh_elec_temperature/tools"
- "strconv"
- )
- type AlarmDeviceService struct {
- BaseService
- }
- // 根据设备id获取设备和设备的测点配置的策略
- func (t *AlarmDeviceService) GetDeviceTactics(deviceid int64) ([]orm.Params, error) {
- db := orm.NewOrm()
- deviceList := []orm.Params{}
- qs := db.QueryTable("T_base_device_alarm")
- _, err := qs.Filter("deviceid", deviceid).Values(&deviceList)
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Err is :%s", err))
- return nil, err
- }
- var sqlCommandText = "select dev_alarm_id,tactics_id,tactics_name from t_base_device_alarm_tactics where dev_alarm_id=?"
- for _, row := range deviceList {
- tacticsList := []orm.Params{}
- _, err := db.Raw(sqlCommandText, row["Id"]).Values(&tacticsList)
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Err is :%s", err))
- return nil, err
- }
- row["tacticsList"] = tacticsList
- }
- return deviceList, nil
- }
- // 根据设备id删除这个设备的告警配置和下面的明细
- func (t *AlarmDeviceService) DelDeviceTactics(deviceid int64) (bool, error) {
- db := orm.NewOrm()
- lst := []orm.Params{}
- // 先查询这个设备下的所有策略id
- qs := db.QueryTable("t_base_device_alarm")
- _, err := qs.Filter("deviceid", deviceid).Values(&lst)
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Query tactics SQL err:%s.", err))
- return false, err
- }
- deviceAlarmId := ""
- params := []interface{}{}
- for i, row := range lst {
- if i == len(lst)-1 {
- deviceAlarmId += "?"
- } else {
- deviceAlarmId += "?,"
- }
- params = append(params, row["Id"])
- }
- var sqlCommandText = "delete from t_base_device_alarm_tactics where dev_alarm_id in (" + deviceAlarmId + ")"
- _, err = db.Raw(sqlCommandText, params).Exec()
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("delete tactics SQL err:%s.\nParams is :%s", err, params))
- return false, err
- }
- sqlCommandText = "delete from t_base_device_alarm where deviceid=?"
- _, err = db.Raw(sqlCommandText, deviceid).Exec()
- if err == nil {
- return true, nil
- } else {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Delete deviceAlarm err:%s.", err))
- return false, err
- }
- return true, nil
- }
- // 保存设备id对应的告警配置策略.参数有id的时候为更新,没有id的时候为新增
- func (t *AlarmDeviceService) SaveDeviceTactics(tactics *vo.DeviceAlarmTactics) (int64, error) {
- db := orm.NewOrm()
- obj := models.T_base_device_alarm{}
- if tools.IsEmpty(tactics.Id) != "" || tools.IsEmpty(tactics.Id) != "0" {
- obj.Id = tactics.Id
- }
- obj.Deviceid = tactics.Deviceid
- obj.Attrname = tactics.Attrname
- obj.Mpid = tactics.Mpid
- obj.Mpname = tactics.Mpname
- obj.Client_id = tactics.Client_id
- id, err := db.InsertOrUpdate(&obj)
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Save device tactics error:%s", err))
- return 0, err
- }
- details := tactics.TacticsList
- err = t.BatchSaveTactics(id, details)
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Batch save tactics error:%s", err))
- return 0, err
- }
- return id, nil
- }
- // 批量保存设备的策略
- func (t *AlarmDeviceService) BatchSaveTactics(alarmId int64, tacticsList []map[string]interface{}) error {
- db := orm.NewOrm()
- var sqlCommandText = "delete from t_base_device_alarm_tactics where dev_alarm_id=?"
- _, err := db.Raw(sqlCommandText, alarmId).Exec()
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Batch delete tactics SQL:%s.\nParam is:%s", sqlCommandText, alarmId))
- return err
- }
- sqlCommandText = "insert into t_base_device_alarm_tactics (dev_alarm_id,tactics_id,tactics_name) values"
- var parms = []interface{}{}
- if len(tacticsList) > 0 {
- for index, row := range tacticsList {
- if index == len(tacticsList)-1 {
- sqlCommandText += "(?,?,?)"
- } else {
- sqlCommandText += "(?,?,?),"
- }
- parms = append(parms, alarmId, row["tactics_id"], row["tactics_name"])
- }
- _, err := db.Raw(sqlCommandText, parms).Exec()
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Batch save tactics SQL:%s.\nParam is:%s", sqlCommandText, parms))
- return err
- }
- }
- return nil
- }
- // 复制一个设备的策略到另外一个设备
- func (t *AlarmDeviceService) CopyDeviceTactics(oldDeviceId int64, otherDeviceId int64) (bool, error) {
- oldlst, err := t.GetDeviceTactics(oldDeviceId)
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Err is :%s", err))
- return false, err
- }
- objVO := t.Orm2VO(oldlst)
- for _, row := range objVO {
- row.Deviceid = otherDeviceId
- _, err := t.SaveDeviceTactics(&row)
- if err != nil {
- logger.Logger.Error(err)
- logger.Logger.Println(fmt.Sprintf("Err is :%s", err))
- return false, err
- }
- }
- return true, nil
- }
- // orm.params转化为VO
- func (t *AlarmDeviceService) Orm2VO(lst []orm.Params) []vo.DeviceAlarmTactics {
- voList := []vo.DeviceAlarmTactics{}
- for _, row := range lst {
- t := vo.DeviceAlarmTactics{}
- d, _ := strconv.ParseInt(fmt.Sprint(row["Deviceid"]), 10, 64)
- t.Deviceid = d
- c, _ := strconv.ParseInt(fmt.Sprint(row["Client_id"]), 10, 64)
- t.Client_id = c
- m, _ := strconv.ParseInt(fmt.Sprint(row["Mpid"]), 10, 64)
- t.Mpid = m
- t.Mpname = fmt.Sprint(row["Mpname"])
- t.Attrname = fmt.Sprint(row["Attrname"])
- tacticsAttr := row["tacticsList"].([]orm.Params)
- tacticsList := []map[string]interface{}{}
- for _, row := range tacticsAttr {
- obj := map[string]interface{}{}
- obj["dev_alarm_id"] = row["dev_alarm_id"]
- obj["tactics_id"] = row["tactics_id"]
- obj["tactics_name"] = row["tactics_name"]
- tacticsList = append(tacticsList, obj)
- }
- t.TacticsList = tacticsList
- voList = append(voList, t)
- }
- return voList
- }
- // 单独修改设备告警配置阈值
- func (t *AlarmDeviceService) UpdateAloneDeviceTactics() {
- }
|