|
@@ -403,31 +403,6 @@ func (c *CheckAreaMgr) CheckAreaIedRelation() error {
|
|
|
return errors.New(fmt.Sprintf("间隔%s未发现任何装置", tools.IsEmpty(row["area_name"])))
|
|
|
}
|
|
|
area_ieds[area_id] = s1
|
|
|
- /*
|
|
|
- curIeds := map[string]string{}
|
|
|
- for _, row1 := range s1 {
|
|
|
- iedname := strings.Trim(tools.IsEmpty(row1["ied_name"]), " ")
|
|
|
- iedParts := scdParseMgr.ParseIedName(iedname)
|
|
|
- iedtype := iedParts[0] + iedParts[1] + iedParts[2]
|
|
|
- curIeds[iedtype] = iedname
|
|
|
- }
|
|
|
- for k, _ := range hasIeds {
|
|
|
- iedname := curIeds[k]
|
|
|
- if iedname == "" {
|
|
|
- parse_result := fmt.Sprintf("间隔%s缺失类型为%s的装置", area_name, k)
|
|
|
- r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
- //检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r)
|
|
|
- } else {
|
|
|
- //判断装置是否存在
|
|
|
- if scdNode.GetIed(scdXmlObj, "", iedname) == nil {
|
|
|
- parse_result := fmt.Sprintf("间隔%s内装置%s未定义", area_name, iedname)
|
|
|
- r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
- //检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r)
|
|
|
- }
|
|
|
- }
|
|
|
- }*/
|
|
|
}
|
|
|
//装置关联关系分析
|
|
|
//先分析母联间隔,如果没有选择母联间隔时,主变间隔中不包含母联终端装置
|
|
@@ -638,7 +613,7 @@ func (c *CheckAreaMgr) CheckIedFcda() error {
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失虚端子%s", area_name, iedname, fcda_name)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -646,7 +621,7 @@ func (c *CheckAreaMgr) CheckIedFcda() error {
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失功能%s", area_name, iedname, tools.IsEmpty(row3["func_name"]))
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -757,6 +732,10 @@ func (c *CheckAreaMgr) pT(modelid int, iedtypes string, ieds map[string]orm.Para
|
|
|
volMap["middle"] = volRows[1]["vol"].(string) //中压电压等级
|
|
|
volMap["low"] = volRows[len(volRows)-1]["vol"].(string) //低压电压等级
|
|
|
}
|
|
|
+ //判断是否将各电压等级的保护装置合并还是分开的间隔
|
|
|
+ //如果存在高中低压的保护装置,则说明是分开的主变间隔
|
|
|
+ //isMarge := true // 默认为合并的主变间隔
|
|
|
+
|
|
|
for _, row := range ieds {
|
|
|
if tools.IsEmpty(row["ied_type"]) != "P" || tools.IsEmpty(row["p_type"]) != "T" {
|
|
|
continue
|
|
@@ -1129,7 +1108,7 @@ func (c *CheckAreaMgr) cJ(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失", area_name, findIedName)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
dealFromIed[findIedName] = 1
|
|
|
}
|
|
@@ -1145,7 +1124,7 @@ func (c *CheckAreaMgr) cJ(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s缺失类型为%s的装置", area_name, toiedtype)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
continue
|
|
|
}
|
|
|
toIedname := ""
|
|
@@ -1175,7 +1154,7 @@ func (c *CheckAreaMgr) cJ(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失与装置%s的%s信号关联", area_name, findIedName, toIedname, reftype)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1183,7 +1162,7 @@ func (c *CheckAreaMgr) cJ(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失关联装置%s", area_name, findIedName, toIedname)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1222,7 +1201,7 @@ func (c *CheckAreaMgr) cL(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失", area_name, findIedName)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
dealFromIed[findIedName] = 1
|
|
|
}
|
|
@@ -1238,7 +1217,7 @@ func (c *CheckAreaMgr) cL(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s缺失类型为%s的装置", area_name, toiedtype)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
continue
|
|
|
}
|
|
|
toIedname := ""
|
|
@@ -1268,7 +1247,7 @@ func (c *CheckAreaMgr) cL(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失与装置%s的%s信号关联", area_name, findIedName, toIedname, reftype)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1276,7 +1255,7 @@ func (c *CheckAreaMgr) cL(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失关联装置%s", area_name, findIedName, toIedname)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1317,7 +1296,7 @@ func (c *CheckAreaMgr) cT(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失", area_name, findIedName)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
dealFromIed[findIedName] = 1
|
|
|
}
|
|
@@ -1331,10 +1310,10 @@ func (c *CheckAreaMgr) cT(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
}
|
|
|
if len(tmpToAreaIeds) == 0 {
|
|
|
logger.Logger.Debug(fmt.Sprintf("缺失类型关联装置 :%+v", row))
|
|
|
- parse_result := fmt.Sprintf("间隔%s缺失类型为%s的装置", area_name, toiedtype)
|
|
|
+ parse_result := fmt.Sprintf("间隔%s缺失类型为%s的%s信号装置", area_name, toiedtype, reftype)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
continue
|
|
|
}
|
|
|
toIedname := ""
|
|
@@ -1378,7 +1357,7 @@ func (c *CheckAreaMgr) cT(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失与装置%s的%s信号关联", area_name, findIedName, toIedname, reftype)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
}
|
|
|
if hasSameVolIed {
|
|
@@ -1390,12 +1369,12 @@ func (c *CheckAreaMgr) cT(scdXmlObj *node_attr.SCL, scdNodeMgr *ScdNode, scdNode
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失同电压等级的关联类型%s装置", area_name, findIedName, toiedtype)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
} else if !hasToIed {
|
|
|
parse_result := fmt.Sprintf("间隔%s的装置%s缺失关联装置%s", area_name, findIedName, toIedname)
|
|
|
r := map[string]interface{}{"scdid": c.ScdId, "lineno": 0, "ruleid": area_ruleid, "nodeid": 0, "parse_result": parse_result}
|
|
|
//检查未通过
|
|
|
- scdNodeRule.AppendPaseResult(r, masterIed)
|
|
|
+ scdNodeRule.AppendFcdaCheckResult(r)
|
|
|
}
|
|
|
}
|
|
|
}
|