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