Bladeren bron

修复若干已知BUG

liling 1 jaar geleden
bovenliggende
commit
aaf1bbfb4d

+ 10 - 0
service/controllers/busAdminController.go

@@ -467,6 +467,16 @@ func (c *BusAdminController) GetCheckAreaByVolID() {
 		c.ServeJSON()
 		return
 	}
+	if lst == nil || len(lst) == 0 {
+		//新分析
+		err = obj.Reset()
+		if err != nil {
+			c.Data["json"] = c.ResultError(err.Error())
+			c.ServeJSON()
+			return
+		}
+		lst, _ = obj.GetAreaListByVol(id, volid, lsid)
+	}
 	c.Data["json"] = c.ResultOK(lst, 0)
 	c.ServeJSON()
 }

+ 1 - 1
service/models/bo/BasecArea.go

@@ -81,7 +81,7 @@ func (c *BasicArea) SearchArea(pageIndex, pageSize int) ([]orm.Params, int, erro
 	if c.Model.Id == 0 {
 		sqlCommandText = "select a.id,pid,area_name,area_code,area_type,area_kind area_kind_code," +
 			" jd,wd,live_num,area_level,is_leaf,area_sort,cr,ct,b.name type_name,apmac,b2.name voltage_name from t_data_area a " +
-			" left join global_const_code b on a.area_type=b.code " +
+			" left join global_const_code b on a.area_type=b.code and b.parentcode='pstype' " +
 			" left join global_const_code b2 on a.area_level=b2.id and b2.parentcode='voltage_level' "
 	} else {
 		sqlCommandText = "select a.id,pid,area_name,area_code,area_type,area_kind,jd,wd,live_num,area_level,is_leaf,area_sort,cr,ct ,b2.name voltage_name from t_data_area a left join global_const_code b2 on a.area_level=b2.id and b2.parentcode='voltage_level' "

+ 2 - 2
service/models/bo/checktools_area.go

@@ -369,11 +369,11 @@ func (c *CheckAreaMgr) ParseModelArea() {
 		//获取模型内中装备关系定义
 		//主变间隔分析:需要查站内该电压等级下的高中低压侧装置或者高低压装置组成一个间隔,以主变保护装置(PT)为起始
 		if areaCode == "T" {
-			go c.pT(modelid, iedtypes, iedMap, HasAreaJ)
+			c.pT(modelid, iedtypes, iedMap, HasAreaJ)
 		}
 		//线路保护间隔分析:以线路保护测控装置(PL)为开始分析
 		if areaCode == "L" {
-			go c.pL(modelid, volcode, iedtypes, iedMap)
+			c.pL(modelid, volcode, iedtypes, iedMap)
 		}
 	}
 }

+ 21 - 0
service/models/bo/task.go

@@ -171,7 +171,11 @@ func (c *TaskMgr) Save() (id int, err error) {
 	dblog.Eventtype = enum.OptEventType_Bus
 	dblog.Eventlevel = enum.OptEventLevel_Hight
 	db := orm.NewOrm()
+	oldid, _ := c.ExistName(c.Model.Name)
 	if c.Model.Id == 0 {
+		if oldid != "" {
+			return 0, errors.New("任务名称(" + c.Model.Name + ")已存在")
+		}
 		c.Model.StartTime = "1970-01-01 00:00:00"
 		c.Model.EndTime = "1970-01-01 00:00:00"
 		c.Model.State = 0
@@ -180,6 +184,9 @@ func (c *TaskMgr) Save() (id int, err error) {
 		id64, err = db.Insert(&c.Model)
 		id = int(id64)
 	} else {
+		if oldid != "" && oldid != tools.IsEmpty(c.Model.Id) {
+			return 0, errors.New("任务名称(" + c.Model.Name + ")已存在")
+		}
 		id = c.Model.Id
 		oldinfo, _ := c.One()
 		if oldinfo.State == 1 {
@@ -218,6 +225,20 @@ func (c *TaskMgr) One() (T_data_task, error) {
 	return tmp, err
 }
 
+func (c *TaskMgr) ExistName(name string) (string, error) {
+	o := orm.NewOrm()
+	rowset := []orm.Params{}
+	_, err := o.Raw("select id from t_data_task where name=?", name).Values(&rowset)
+	if err != nil {
+		logger.Logger.Error(err)
+		return "", err
+	}
+	if len(rowset) > 0 {
+		return tools.IsEmpty(rowset[0]["id"]), nil
+	}
+	return "", nil
+}
+
 //根据model中指定的id删除检测任务
 func (c *TaskMgr) Delete() (err error) {
 	dblog := new(SystemLog)

+ 4 - 6
service/monitor/dataMonitor.go

@@ -905,7 +905,7 @@ func (t *DataMonitor) tempScdClear() {
 	t1 := time.Now().Unix()
 	clearT := t1 - int64(1*60*60) //1小时之前
 	clearDate := time.Unix(clearT, 0).Format("2006-01-02 15:04:05")
-	sql := "select * from t_sys_attachment where check_flag=0 and file_suffix='scd' and scd_id>0 and created_time<?"
+	sql := "select * from t_scd_scl where id not in(select scd_id from t_data_task) and created_time<?"
 	rowset := []orm.Params{}
 	_, err := db.Raw(sql, clearDate).Values(&rowset)
 	if err != nil {
@@ -916,12 +916,10 @@ func (t *DataMonitor) tempScdClear() {
 		}
 		uinfo := map[string]interface{}{}
 		uinfo["name"] = "临时SCD清理任务"
-		attach := new(bo.AttachmentMgr)
-		attach.SetUserInfo(uinfo)
 		for _, row := range rowset {
-			id, _ := strconv.Atoi(tools.IsEmpty(row["id"]))
-			attach.Model = bo.T_sys_attachment{Id: int32(id)}
-			attach.Delete(true)
+			scd := new(bo.ScdMgr)
+			scd.SetUserInfo(uinfo)
+			scd.DeleteScd(tools.IsEmpty(row["id"]), true)
 		}
 	}
 }