| 
					
				 | 
			
			
				@@ -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, 
			 |