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