Selaa lähdekoodia

开发虚端子报表生成

liling 1 vuosi sitten
vanhempi
commit
853eb1eb38
1 muutettua tiedostoa jossa 89 lisäystä ja 0 poistoa
  1. 89 0
      service/models/bo/task_report.go

+ 89 - 0
service/models/bo/task_report.go

@@ -328,8 +328,97 @@ func (c *TaskReportMgr) ToWord(taskinfo T_data_task) (path string, err error) {
 		return "", err
 	}
 	c.setCaption(sheet_fcda, fmt.Sprintf("%s-端子校验结果", scdName), 6)
+	//汇总结果
+	scdFileName := ""
+	if sdcXmlObj.Header != nil {
+		scdFileName = sdcXmlObj.Header.Id
+	}
+	scdVerion := ""
+	scdMakeDt := "" //scd文件生成日期
+	scdCrc := ""    //scd全站crc
+	if sdcXmlObj.Header != nil {
+		if sdcXmlObj.Header.History != nil {
+			hitem := sdcXmlObj.Header.History.Hitem
+			if len(hitem) > 0 {
+				lastHitem := hitem[len(hitem)-1]
+				scdVerion = lastHitem.Version + "." + lastHitem.Revision
+				scdMakeDt = strings.ReplaceAll(lastHitem.When, "T", "")
+			}
+		}
+	}
+	if len(sdcXmlObj.Private) > 0 {
+		for _, r := range sdcXmlObj.Private {
+			if r.Type == "Substation virtual terminal conection CRC" {
+				scdCrc = r.InnerText
+				break
+			}
+		}
+	}
+	c.addCellValue(sheet_fcda, []string{"SCD文件名称", scdFileName, "SCD文件版本", scdVerion})
+	c.addCellValue(sheet_fcda, []string{"SCD文件生成时间", scdMakeDt, "全站虚连接CRC", scdCrc})
+	totalIed := len(sdcXmlObj.IED) //总ied数
+	checkIeds, _ := checkAreaRe.GetIedList(taskinfo.ScdId, 0)
+	checkIedMap := map[string]int{}
+	for _, r := range checkIeds {
+		checkIedMap[tools.IsEmpty(r["ied_name"])] = 1
+	}
+	c.addCellValue(sheet_fcda, []string{"总IED数目", fmt.Sprintf("%d", totalIed), "参与校核IED数目", fmt.Sprintf("%d", len(checkIeds))})
+	totalExtrefs := 0 //总虚连接数目
+	checkExtrefs := 0 //参与校核虚连接数目
+	for _, r := range sdcXmlObj.IED {
+		if r.AccessPoint == nil {
+			continue
+		}
+		for _, r1 := range r.AccessPoint {
+			if r1.Server == nil {
+				continue
+			}
+			for _, r2 := range r1.Server.LDevice {
+				if r2.LN0 != nil && r2.LN0.Inputs != nil {
+					totalExtrefs = totalExtrefs + len(r2.LN0.Inputs.ExtRef)
+					if checkIedMap[r.Name] == 1 {
+						checkExtrefs = checkExtrefs + len(r2.LN0.Inputs.ExtRef)
+					}
+				}
+				for _, r3 := range r2.LN {
+					if r3.Inputs != nil {
+						totalExtrefs = totalExtrefs + len(r3.Inputs.ExtRef)
+						if checkIedMap[r.Name] == 1 {
+							checkExtrefs = checkExtrefs + len(r3.Inputs.ExtRef)
+						}
+					}
+				}
+			}
+		}
+	}
+	errortype1 := 0 // 多余虚端子
+	errortype2 := 1 //错误虚端子
+	errortype3 := 2 //缺失端子
+	for _, row := range result {
+		switch tools.IsEmpty(row["error_type"]) {
+		case "1":
+			errortype1 = errortype1 + 1
+			break
+		case "2":
+			errortype2 = errortype2 + 1
+			break
+		case "3":
+			errortype3 = errortype3 + 1
+			break
+		}
+	}
+	c.addCellValue(sheet_fcda, []string{"总虚连接数目", fmt.Sprintf("%d", totalExtrefs), "参与校核虚连接数目", fmt.Sprintf("%d", checkExtrefs)})
+	c.addCellValue(sheet_fcda, []string{"未校核虚连接数目", fmt.Sprintf("%d", totalExtrefs-checkExtrefs), "正确虚连接数目", fmt.Sprintf("%d", checkExtrefs-errortype1-errortype2-errortype3)})
+	c.addCellValue(sheet_fcda, []string{"多余虚连接数目", fmt.Sprintf("%d", errortype1), "缺失虚连接数目", fmt.Sprintf("%d", errortype3)})
+	c.addCellValue(sheet_fcda, []string{"错误虚连接数目", fmt.Sprintf("%d", errortype2), "不规范虚连接数目", fmt.Sprintf("%d", 0)})
+	c.addCellValue(sheet_fcda, []string{"严重问题", fmt.Sprintf("%d", 0), "规范性问题", fmt.Sprintf("%d", 0)})
+	c.addCellValue(sheet_fcda, []string{"一般问题", fmt.Sprintf("%d", 0), "套别错误虚连接数目", fmt.Sprintf("%d", 0)})
+	c.addCellValue(sheet_fcda, []string{"跨间隔错误虚连接数目", fmt.Sprintf("%d", 0), "母差支路错误虚连接数目", fmt.Sprintf("%d", 0)})
+
+	checkIeds = nil
 	lastIedName := ""
 	cellNo := 1
+
 	for _, row := range result {
 		nowIedName := fmt.Sprintf("%s:%s", tools.IsEmpty(row["ied_name"]), tools.IsEmpty(row["ied_desc"]))
 		if lastIedName == "" || lastIedName != nowIedName {