|
@@ -70,7 +70,6 @@ func GetFaultRecordSiteDevices(envStr, gatewaySn string) (*dto.FaultRecordSiteDe
|
|
|
Env: string(env),
|
|
Env: string(env),
|
|
|
GatewaySn: site.Id,
|
|
GatewaySn: site.Id,
|
|
|
Online: site.Status == 1,
|
|
Online: site.Status == 1,
|
|
|
- Devices: []dto.FaultRecordDevice{{Type: proto.DeviceTypeAGate, Sn: site.Id}},
|
|
|
|
|
}
|
|
}
|
|
|
if site.Name != nil {
|
|
if site.Name != nil {
|
|
|
out.SiteName = *site.Name
|
|
out.SiteName = *site.Name
|
|
@@ -78,14 +77,75 @@ func GetFaultRecordSiteDevices(envStr, gatewaySn string) (*dto.FaultRecordSiteDe
|
|
|
if site.OnLineTime != nil {
|
|
if site.OnLineTime != nil {
|
|
|
out.OnlineTime = *site.OnLineTime
|
|
out.OnlineTime = *site.OnLineTime
|
|
|
}
|
|
}
|
|
|
- for _, sn := range strings.Split(site.FhpSn, ",") {
|
|
|
|
|
- if sn = strings.TrimSpace(sn); sn != "" {
|
|
|
|
|
- out.Devices = append(out.Devices, dto.FaultRecordDevice{Type: proto.DeviceTypePE, Sn: sn}) // aPower SN 即 pe SN
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // aPower 及 PE 硬件版本来自 getDeviceInfo;aHub 来自 selectGatewayPower
|
|
|
|
|
+ var devInfo *domain.FwhDeviceInfo
|
|
|
|
|
+ var power *domain.FwhGatewayPower
|
|
|
|
|
+ var devErr, powerErr error
|
|
|
|
|
+ if env == fwh_mqtt.EnvTest {
|
|
|
|
|
+ devInfo, devErr = fwh_test.QueryDeviceInfo(site.Id)
|
|
|
|
|
+ power, powerErr = fwh_test.QueryGatewayPower(site.Id)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ devInfo, devErr = fwh_pro.QueryDeviceInfo(site.Id)
|
|
|
|
|
+ power, powerErr = fwh_pro.QueryGatewayPower(site.Id)
|
|
|
|
|
+ }
|
|
|
|
|
+ if devErr != nil {
|
|
|
|
|
+ out.Warnings = append(out.Warnings, "获取 aPower 硬件版本失败,无法判断 aPower-MPPT:"+devErr.Error())
|
|
|
|
|
+ devInfo = &domain.FwhDeviceInfo{FhpSn: site.FhpSn} // 退回站点信息中的 aPower 列表
|
|
|
}
|
|
}
|
|
|
|
|
+ if powerErr != nil {
|
|
|
|
|
+ out.Warnings = append(out.Warnings, "获取 aHub 列表失败:"+powerErr.Error())
|
|
|
|
|
+ }
|
|
|
|
|
+ out.Devices = BuildFaultRecordDevices(site.Id, devInfo, power)
|
|
|
return out, nil
|
|
return out, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// BuildFaultRecordDevices 生成可操作的设备列表:aGate/MCA、各 aPower-PE、支持 MPPT 的 aPower-MPPT、各 aHub。
|
|
|
|
|
+// peHwVerList、apowerList 与 fhpSn 中的 aPower 顺序一一对应;PE 硬件版本为 21、24 的 aPower 带 MPPT。
|
|
|
|
|
+func BuildFaultRecordDevices(gatewaySn string, devInfo *domain.FwhDeviceInfo, power *domain.FwhGatewayPower) []dto.FaultRecordDevice {
|
|
|
|
|
+ newDevice := func(kind, sn string) dto.FaultRecordDevice {
|
|
|
|
|
+ d := dto.FaultRecordDevice{Kind: kind, Type: proto.DeviceKindProtocolType[kind], Sn: sn}
|
|
|
|
|
+ d.Supported = d.Type != ""
|
|
|
|
|
+ if !d.Supported {
|
|
|
|
|
+ d.Note = "该设备类型暂不支持"
|
|
|
|
|
+ }
|
|
|
|
|
+ return d
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ devices := []dto.FaultRecordDevice{newDevice(proto.DeviceKindAGate, gatewaySn)}
|
|
|
|
|
+ if devInfo != nil {
|
|
|
|
|
+ i := 0
|
|
|
|
|
+ for _, sn := range strings.Split(devInfo.FhpSn, ",") {
|
|
|
|
|
+ if sn = strings.TrimSpace(sn); sn == "" {
|
|
|
|
|
+ continue
|
|
|
|
|
+ }
|
|
|
|
|
+ pe := newDevice(proto.DeviceKindAPowerPE, sn)
|
|
|
|
|
+ if i < len(devInfo.ApowerList) && devInfo.ApowerList[i].Id == sn {
|
|
|
|
|
+ pe.Model = devInfo.ApowerList[i].ModelName
|
|
|
|
|
+ }
|
|
|
|
|
+ if i < len(devInfo.PeHwVerList) {
|
|
|
|
|
+ ver := devInfo.PeHwVerList[i]
|
|
|
|
|
+ pe.HwVer = &ver
|
|
|
|
|
+ }
|
|
|
|
|
+ devices = append(devices, pe)
|
|
|
|
|
+ if pe.HwVer != nil && proto.SupportsMPPT(*pe.HwVer) {
|
|
|
|
|
+ mppt := newDevice(proto.DeviceKindAPowerMPPT, sn)
|
|
|
|
|
+ mppt.Model, mppt.HwVer = pe.Model, pe.HwVer
|
|
|
|
|
+ devices = append(devices, mppt)
|
|
|
|
|
+ }
|
|
|
|
|
+ i++
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if power != nil {
|
|
|
|
|
+ for _, a := range power.Apbox20List {
|
|
|
|
|
+ if sn := strings.TrimSpace(a.Apbox20Sn); sn != "" {
|
|
|
|
|
+ devices = append(devices, newDevice(proto.DeviceKindAHub, sn))
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return devices
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
/************** 创建/取消 **************/
|
|
/************** 创建/取消 **************/
|
|
|
|
|
|
|
|
// CreateFaultRecordOperation 校验并创建操作,提交异步执行
|
|
// CreateFaultRecordOperation 校验并创建操作,提交异步执行
|