Forráskód Böngészése

fix:预警管理bug

zqbao 4 hónapja
szülő
commit
3ed375adf2

+ 1 - 1
models/edb_monitor/edb_monitor.go

@@ -22,7 +22,7 @@ type EdbMonitorInfo struct {
 	MonitorData          float64   `description:"预警值"`
 	MonitorLevel         string    `description:"预警等级"`
 	State                int       `description:"预警状态: 0-已关闭;1-未触发;2-已触发"`
-	EdbTriggerDate       string    `description:"触发日期"`
+	EdbTriggerDate       time.Time `description:"触发日期"`
 	MonitorTriggerTime   time.Time `description:"预警触发时间"`
 	CreateUserId         int       `description:"创建人id"`
 	CreateTime           time.Time `description:"创建时间"`

+ 52 - 8
models/edb_monitor/edb_monitor_classify.go

@@ -20,12 +20,50 @@ type EdbMonitorClassify struct {
 
 func (e *EdbMonitorClassify) Insert() (id int64, err error) {
 	o := orm.NewOrmUsingDB("data")
-	id, err = o.Insert(e)
+
+	var edbMonitorIds []int
+	if e.ParentId != 0 {
+		sql := `SELECT edb_monitor_id FROM edb_monitor_info WHERE edb_monitor_classify_id = ?`
+		_, err = o.Raw(sql, e.ParentId).QueryRows(&edbMonitorIds)
+		if err != nil {
+			return
+		}
+	}
+	tx, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+	}()
+
+	id, err = tx.Insert(e)
+	if len(edbMonitorIds) > 0 {
+		sql := `UPDATE edb_monitor_info SET edb_monitor_classify_id = ? WHERE edb_monitor_id IN (` + utils.GetOrmInReplace(len(edbMonitorIds)) + `)`
+		_, err = tx.Raw(sql, id, edbMonitorIds).Exec()
+		if err != nil {
+			return
+		}
+	}
 	return
 }
 
 func (e *EdbMonitorClassify) Update(cols []string, classifyId []int) (err error) {
-	tx, err := orm.NewOrmUsingDB("data").Begin()
+	o := orm.NewOrmUsingDB("data")
+	var edbMonitorIds []int
+	if e.ParentId != 0 {
+		sql := `SELECT edb_monitor_id FROM edb_monitor_info WHERE edb_monitor_classify_id = ?`
+		_, err = o.Raw(sql, e.ParentId).QueryRows(&edbMonitorIds)
+		if err != nil {
+			return
+		}
+	}
+
+	tx, err := o.Begin()
 	if err != nil {
 		return
 	}
@@ -40,13 +78,19 @@ func (e *EdbMonitorClassify) Update(cols []string, classifyId []int) (err error)
 	if err != nil {
 		return
 	}
-	if len(classifyId) == 0 {
-		return
+	if len(classifyId) > 0 {
+		sql := `UPDATE edb_monitor_classify SET root_id = ? WHERE classify_id IN (` + utils.GetOrmInReplace(len(classifyId)) + `)`
+		_, err = tx.Raw(sql, e.RootId, classifyId).Exec()
+		if err != nil {
+			return
+		}
 	}
-	sql := `UPDATE edb_monitor_classify SET root_id = ? WHERE classify_id IN (` + utils.GetOrmInReplace(len(classifyId)) + `)`
-	_, err = tx.Raw(sql, e.RootId, classifyId).Exec()
-	if err != nil {
-		return
+	if len(edbMonitorIds) > 0 {
+		sql := `UPDATE edb_monitor_info SET edb_monitor_classify_id = ? WHERE edb_monitor_id IN (` + utils.GetOrmInReplace(len(edbMonitorIds)) + `)`
+		_, err = tx.Raw(sql, e.ClassifyId, edbMonitorIds).Exec()
+		if err != nil {
+			return
+		}
 	}
 	return
 }

+ 1 - 1
models/edb_monitor/response/edb_monitor.go

@@ -4,7 +4,7 @@ import "github.com/rdlucklib/rdluck_tools/paging"
 
 type EdbMonitorInfoItem struct {
 	EdbMonitorId           int     `orm:"column(edb_monitor_id);pk"`
-	EdbMonitorClassifyId   int     `description:"预警分类id" json:"-"`
+	EdbMonitorClassifyId   int     `description:"预警分类id"`
 	EdbMonitorClassifyName string  `description:"预警分类名称"`
 	EdbMonitorName         string  `description:"预警名称"`
 	EdbInfoId              int     `description:"指标id"`

+ 14 - 3
services/edb_monitor/edb_monitor.go

@@ -269,7 +269,8 @@ func ModifyEdbMonitorState(edbMonitorInfo *edbmonitor.EdbMonitorInfo, edbCode st
 		edbMonitorInfo.State = triggerState
 		updateCols = append(updateCols, "state")
 	} else {
-		edbMonitorInfo.EdbTriggerDate = latestTwoData[0].DataTime
+		tmpTime, _ := time.Parse(utils.FormatDate, latestTwoData[0].DataTime)
+		edbMonitorInfo.EdbTriggerDate = tmpTime
 		edbMonitorInfo.MonitorTriggerTime = time.Now()
 		updateCols = append(updateCols, []string{"edb_trigger_date", "monitor_trigger_time"}...)
 	}
@@ -337,6 +338,11 @@ func CloseEdbMonitorInfo(req request.EdbMonitorInfoCloseReq, adminId int) (msg s
 		err = fmt.Errorf("无权限操作")
 		return
 	}
+	if edbMonitor.State == EDB_MONITOR_STATE_CLOSE {
+		msg = "预警已关闭"
+		err = fmt.Errorf("预警已关闭")
+		return
+	}
 	edbMonitor.State = EDB_MONITOR_STATE_CLOSE
 	edbMonitor.ModifyTime = time.Now()
 	er = edbMonitor.Update([]string{"state", "modify_time"})
@@ -364,6 +370,11 @@ func RestartEdbMonitorInfo(req request.EdbMonitorInfoRestartReq, adminId int) (m
 		err = fmt.Errorf("无权限操作")
 		return
 	}
+	if edbMonitor.State != EDB_MONITOR_STATE_CLOSE {
+		msg = "预警未关闭,无需重启"
+		err = fmt.Errorf("预警未关闭,无需重启")
+		return
+	}
 	err = ModifyEdbMonitorState(edbMonitor, edbMonitor.EdbCode, edbMonitor.Source, edbMonitor.SubSource)
 	if err != nil {
 		msg = "重启失败"
@@ -374,7 +385,7 @@ func RestartEdbMonitorInfo(req request.EdbMonitorInfoRestartReq, adminId int) (m
 }
 
 func toEdbMonitorInfoItems(edbmonitor []*edbmonitor.EdbMonitorInfo, userMap map[int]string, classifyPathMap map[int]string) []*response.EdbMonitorInfoItem {
-	res := make([]*response.EdbMonitorInfoItem, len(edbmonitor))
+	res := make([]*response.EdbMonitorInfoItem, 0, len(edbmonitor))
 	for _, v := range edbmonitor {
 		tmp := new(response.EdbMonitorInfoItem)
 		tmp.EdbMonitorId = v.EdbMonitorId
@@ -392,7 +403,7 @@ func toEdbMonitorInfoItems(edbmonitor []*edbmonitor.EdbMonitorInfo, userMap map[
 		tmp.MonitorData = v.MonitorData
 		tmp.MonitorLevel = v.MonitorLevel
 		tmp.State = v.State
-		tmp.EdbTriggerDate = v.EdbTriggerDate
+		tmp.EdbTriggerDate = utils.TimeTransferString(utils.FormatDate, v.EdbTriggerDate)
 		tmp.MonitorTriggerTime = utils.TimeTransferString(utils.FormatDateTime, v.MonitorTriggerTime)
 		tmp.CreateUserId = v.CreateUserId
 		tmp.CreateUserName = userMap[v.CreateUserId]

+ 6 - 1
services/edb_monitor/edb_monitor_classify.go

@@ -318,7 +318,12 @@ func MoveEdbMonitorClassify(req request.MoveEdbMonitorClassifyReq) (msg string,
 	}
 
 	if len(updateCol) > 0 {
-		classifyInfo.RootId = parentRootId
+		if parentRootId != 0 {
+			classifyInfo.RootId = parentRootId
+		} else {
+			classifyInfo.RootId = req.ParentClassifyId
+		}
+		updateCol = append(updateCol, "root_id")
 		err = classifyInfo.Update(updateCol, classifyIds)
 		if err != nil {
 			msg = "移动失败"