فهرست منبع

修改间隔重新解析功能

liling 2 ماه پیش
والد
کامیت
346033b086

+ 55 - 35
service/models/bo/checktools_area.go

@@ -92,29 +92,7 @@ func (c *CheckAreaMgr) Init(scdid int64) {
 			otherIedNameList[vv] = true
 		}
 	}
-	//先清除ied与间隔关联关系
-	clearSql := "delete from t_data_check_area_ied where area_id in(select id from t_data_check_area where  scd_id=?)"
-	_, err := db.Raw(clearSql, c.ScdId).Exec()
-	if err != nil {
-		logger.Logger.Error(err, fmt.Sprintf("SQL:%s 参数:%+v", clearSql, []interface{}{c.ScdId}))
-	}
-	clearSql = "delete from t_data_check_area where scd_id=?"
-	_, err = db.Raw(clearSql, c.ScdId).Exec()
-	if err != nil {
-		logger.Logger.Error(err, fmt.Sprintf("SQL:%s 参数:%+v", clearSql, []interface{}{c.ScdId}))
-	}
-	//获取当前scd信息中获取到对应的电压等级id
-	/*
-		scdMgr := new(ScdMgr)
-		scdinfo, _ := scdMgr.One(fmt.Sprintf("%d", c.ScdId))
-		stationid := tools.IsEmpty(scdinfo["station_id"])
-		volid := 0
-		if stationid != "" {
-			basearea := new(BasicArea)
-			stationonof, _ := basearea.One(stationid)
-			volid = stationonof.AreaLevel
-		}
-	*/
+
 	tmplist, _ := new(SysCheckModelMgr).GetModelsByVolid(2)
 	scdModels, _, _ := new(TaskMgr).GetModelsByScdID(c.ScdId)
 	ms := map[string]interface{}{}
@@ -169,6 +147,7 @@ func (c *CheckAreaMgr) Del(area_id int) error {
 	db := orm.NewOrm()
 	_, err := db.Raw("delete from t_data_check_area where scd_id=? and id=?", c.ScdId, area_id).Exec()
 	_, err = db.Raw("delete from t_data_check_area_ied where scd_id=? and area_id=?", c.ScdId, area_id).Exec()
+	_, err = db.Raw("delete from t_data_doi_mapping where area_id=?", area_id).Exec()
 	sqllog := fmt.Sprintf("删除间隔%d", area_id)
 	if err != nil {
 		logger.Logger.Error(err)
@@ -471,10 +450,10 @@ func (c *CheckAreaMgr) One(id string) (interface{}, error) {
 
 //重置scd的间隔信息
 func (c *CheckAreaMgr) Reset() error {
-	dbo := orm.NewOrm()
-	dbo.Raw("delete from t_data_check_area where scd_id=?", c.ScdId).Exec()
-	dbo.Raw("delete from t_data_check_area_ied where scd_id=?", c.ScdId).Exec()
-	c.ParseModelArea()
+	//dbo := orm.NewOrm()
+	//dbo.Raw("delete from t_data_check_area where scd_id=?", c.ScdId).Exec()
+	//dbo.Raw("delete from t_data_check_area_ied where scd_id=?", c.ScdId).Exec()
+	c.ParseModelArea(false)
 
 	logdesc := fmt.Sprintf("重置SCD[%d]检测模型间隔成功", c.ScdId)
 	new(SystemLog).Success(enum.AuditType_check_task, enum.LogType_bind, enum.OptEventType_Bus, enum.OptEventLevel_Mid, logdesc, c.GetUserInfo())
@@ -1627,7 +1606,7 @@ func (c *CheckAreaMgr) getIedExtRefsByFormIedname(scdXmlObj *node_attr.SCL, scdN
 }
 
 //解析模型间隔。根据模型定义解析出间隔中的装置
-func (c *CheckAreaMgr) ParseModelArea() {
+func (c *CheckAreaMgr) ParseModelArea(isInit ...bool) {
 	c.Init(c.ScdId)
 	key := fmt.Sprintf("%d-checkinfo", c.ScdId)
 	areaCheckInfo.Delete(key)
@@ -1668,11 +1647,19 @@ func (c *CheckAreaMgr) ParseModelArea() {
 				}
 				iedtypes = strings.Join(tmp, ",")
 			}
+			tmpTypes := strings.Split(iedtypes, ",")
+			masterType := ""
+			for _, k := range tmpTypes {
+				if k[0:1] == "P" && k != "PM" {
+					masterType = k
+					break
+				}
+			}
+			if masterType == "" {
+				continue
+			}
 			volcode := strings.ReplaceAll(tools.IsEmpty(row["vol_code"]), "v_level_", "")
-			c.pJ(modelid, volcode, iedtypes, iedMap, "PE")
-			c.pJ(modelid, volcode, iedtypes, iedMap, "PJ")
-			c.pJ(modelid, volcode, iedtypes, iedMap, "PK")
-			c.pJ(modelid, volcode, iedtypes, iedMap, "PF")
+			c.pJ(modelid, volcode, iedtypes, iedMap, masterType)
 		}
 	}
 	for _, row := range c.CheckModelList {
@@ -1844,12 +1831,21 @@ func (c *CheckAreaMgr) pT(modelid int, vol, iedtypes string, ieds map[string]orm
 			}
 		}
 		areadesc = strings.ReplaceAll(areadesc, "装置", "")
+		if iednameParts[7] != "" && !strings.HasSuffix(areadesc, iednameParts[7]) {
+			areadesc = areadesc + iednameParts[7]
+		}
+		areaInfo := []orm.Params{}
+		db.Raw("select * from t_data_check_area where scd_id=? and area_type='T' and area_name=?", c.ScdId, areadesc).Values(&areaInfo)
+		if len(areaInfo) > 0 {
+			//间隔已存在,不再进行处理
+			continue
+		}
 		//添加间隔数据
 		dbdata := T_data_check_area{
 			ModelId:  modelid,
 			ScdId:    c.ScdId,
 			AreaType: "T",
-			AreaName: areadesc + iednameParts[7],
+			AreaName: areadesc,
 		}
 		newid, err := db.Insert(&dbdata)
 		if err != nil {
@@ -2012,12 +2008,21 @@ func (c *CheckAreaMgr) pL(modelid int, vol, iedtypes string, ieds map[string]orm
 			}
 		}
 		areadesc = strings.ReplaceAll(areadesc, "装置", "")
+		if iednameParts[7] != "" && !strings.HasSuffix(areadesc, iednameParts[7]) {
+			areadesc = areadesc + iednameParts[7]
+		}
+		areaInfo := []orm.Params{}
+		db.Raw("select * from t_data_check_area where scd_id=? and area_type='L' and area_name=?", c.ScdId, areadesc).Values(&areaInfo)
+		if len(areaInfo) > 0 {
+			//间隔已存在,不再进行处理
+			continue
+		}
 		//添加间隔数据
 		dbdata := T_data_check_area{
 			ModelId:  modelid,
 			ScdId:    c.ScdId,
 			AreaType: "L",
-			AreaName: areadesc + iednameParts[7],
+			AreaName: areadesc,
 		}
 		newid, err := db.Insert(&dbdata)
 		if err != nil {
@@ -2130,12 +2135,21 @@ func (c *CheckAreaMgr) pJ(modelid int, vol, iedtypes string, ieds map[string]orm
 			}
 		}
 		areadesc = strings.ReplaceAll(areadesc, "装置", "")
+		if iednameParts[7] != "" && !strings.HasSuffix(areadesc, iednameParts[7]) {
+			areadesc = areadesc + iednameParts[7]
+		}
+		areaInfo := []orm.Params{}
+		db.Raw("select * from t_data_check_area where scd_id=? and area_type='J' and area_name=?", c.ScdId, areadesc).Values(&areaInfo)
+		if len(areaInfo) > 0 {
+			//间隔已存在,不再进行处理
+			continue
+		}
 		//添加间隔数据
 		dbdata := T_data_check_area{
 			ModelId:  modelid,
 			ScdId:    c.ScdId,
 			AreaType: "J",
-			AreaName: areadesc + iednameParts[7],
+			AreaName: areadesc,
 		}
 		newid, err := db.Insert(&dbdata)
 		if err != nil {
@@ -2253,6 +2267,12 @@ func (c *CheckAreaMgr) pM(modelid int, vol, iedtypes string, ieds map[string]orm
 			}
 		}
 		areadesc = strings.ReplaceAll(areadesc, "装置", "")
+		areaInfo := []orm.Params{}
+		db.Raw("select * from t_data_check_area where scd_id=? and area_type='M' and area_name=?", c.ScdId, areadesc).Values(&areaInfo)
+		if len(areaInfo) > 0 {
+			//间隔已存在,不再进行处理
+			continue
+		}
 		//添加间隔数据
 		dbdata := T_data_check_area{
 			ModelId:  modelid,

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
service/static/css/469.26248c29.css


+ 1 - 1
service/static/index.html

@@ -1,2 +1,2 @@
-<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"><link rel="icon" href="/favicon.ico"><title>scd_tools_ui</title><script src="/static/conf.js"></script><script defer="defer" src="/js/chunk-vendors.7ae469b3.js"></script><script defer="defer" src="/js/app.544afd24.js"></script><link href="/css/chunk-vendors.8b8b508f.css" rel="stylesheet"><link href="/css/app.692c1df2.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but scd_tools_ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html><script>// alert(window.innerWidth)
+<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"><link rel="icon" href="/favicon.ico"><title>scd_tools_ui</title><script src="/static/conf.js"></script><script defer="defer" src="/js/chunk-vendors.7ae469b3.js"></script><script defer="defer" src="/js/app.27e519cb.js"></script><link href="/css/chunk-vendors.8b8b508f.css" rel="stylesheet"><link href="/css/app.692c1df2.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but scd_tools_ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html><script>// alert(window.innerWidth)
   document.documentElement.style.fontSize = "12px"</script>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
service/static/js/469.ee93fe58.js.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
service/static/js/490.97b0ef1e.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
service/static/js/490.97b0ef1e.js.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
service/static/js/app.27e519cb.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
service/static/js/app.27e519cb.js.map


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است