2022-10-19 01:37:11 +11:00

259 lines
15 KiB
Go

package getPsList
import (
"GoSungrow/iSolarCloud/api"
"GoSungrow/iSolarCloud/api/apiReflect"
"GoSungrow/iSolarCloud/api/valueTypes"
"github.com/MickMake/GoUnify/Only"
"fmt"
)
const Url = "/v1/powerStationService/getPsList"
const Disabled = false
type RequestData struct {
}
func (rd RequestData) IsValid() error {
return apiReflect.VerifyOptionsRequired(rd)
}
func (rd RequestData) Help() string {
ret := fmt.Sprintf("")
return ret
}
type ResultData struct {
PageList []struct {
AlarmCount valueTypes.Integer `json:"alarm_count" PointId:"alarm_count" PointUpdateFreq:"UpdateFreqBoot"`
AlarmDevCount valueTypes.Integer `json:"alarm_dev_count" PointId:"alarm_dev_count" PointUpdateFreq:"UpdateFreqBoot"`
AreaID interface{} `json:"area_id" PointId:"area_id"`
AreaType interface{} `json:"area_type" PointId:"area_type"`
ArrearsStatus valueTypes.Integer `json:"arrears_status" PointId:"arrears_status"`
BuildDate valueTypes.DateTime `json:"build_date" PointId:"build_date" PointUpdateFreq:"UpdateFreqBoot"`
BuildStatus valueTypes.Integer `json:"build_status" PointId:"build_status" PointUpdateFreq:"UpdateFreqBoot"`
Co2Reduce valueTypes.UnitValue `json:"co2_reduce" PointId:"co2_reduce"`
Co2ReduceTotal valueTypes.UnitValue `json:"co2_reduce_total" PointId:"co2_reduce_total" PointUpdateFreq:"UpdateFreqTotal"`
CurrPower valueTypes.UnitValue `json:"curr_power" PointId:"curr_power"`
DailyIrradiation valueTypes.UnitValue `json:"daily_irradiation" PointId:"daily_irradiation" PointUpdateFreq:"UpdateFreqDaily"`
DailyIrradiationVirgin valueTypes.Float `json:"daily_irradiation_virgin" PointIgnore:"true"`
DesignCapacity valueTypes.Float `json:"design_capacity" PointId:"design_capacity" PointUnitFrom:"design_capacity_unit"`
DesignCapacityUnit valueTypes.String `json:"design_capacity_unit" PointId:"design_capacity_unit"`
DesignCapacityVirgin valueTypes.Float `json:"design_capacity_virgin" PointIgnore:"true"`
EquivalentHour valueTypes.UnitValue `json:"equivalent_hour" PointId:"equivalent_hour" PointUpdateFreq:"UpdateFreqDaily"`
EsDischargeEnergy valueTypes.UnitValue `json:"es_disenergy" PointId:"p83089" PointName:"ES Discharge Energy" PointUpdateFreq:"UpdateFreq5Mins"`
EsEnergy valueTypes.UnitValue `json:"es_energy" PointId:"p83120" PointName:"ES Energy" PointUpdateFreq:"UpdateFreq5Mins"`
EsPower valueTypes.UnitValue `json:"es_power" PointId:"p83081" PointName:"ES Power" PointUpdateFreq:"UpdateFreq5Mins"`
EsTotalDischargeEnergy valueTypes.UnitValue `json:"es_total_disenergy" PointId:"p83095" PointName:"ES Total Discharge Energy" PointUpdateFreq:"UpdateFreqTotal"`
EsTotalEnergy valueTypes.UnitValue `json:"es_total_energy" PointId:"p83127" PointName:"ES Total Energy" PointUpdateFreq:"UpdateFreqTotal"`
ExpectInstallDate valueTypes.DateTime `json:"expect_install_date" PointId:"expect_install_date"`
FaultAlarmOfflineDevCount valueTypes.Integer `json:"fault_alarm_offline_dev_count" PointId:"fault_alarm_offline_dev_count"`
FaultCount valueTypes.Integer `json:"fault_count" PointId:"fault_count"`
FaultDevCount valueTypes.Integer `json:"fault_dev_count" PointId:"fault_dev_count"`
GcjLatitude valueTypes.Float `json:"gcj_latitude" PointId:"gcj_latitude"`
GcjLongitude valueTypes.Float `json:"gcj_longitude" PointId:"gcj_longitude"`
GprsLatitude valueTypes.Float `json:"gprs_latitude" PointId:"gprs_latitude"`
GprsLongitude valueTypes.Float `json:"gprs_longitude" PointId:"gprs_longitude"`
Images []struct {
FileID valueTypes.Integer `json:"file_id"`
ID valueTypes.Integer `json:"id"`
PicLanguage valueTypes.Integer `json:"pic_language"`
PicType valueTypes.Integer `json:"pic_type"`
PictureName valueTypes.String `json:"picture_name"`
PictureURL valueTypes.String `json:"picture_url"`
PsID valueTypes.Integer `json:"ps_id"`
PsUnitUUID interface{} `json:"ps_unit_uuid"`
} `json:"images" PointName:"Images"`
InstallDate valueTypes.DateTime `json:"install_date" PointId:"install_date"`
InstalledPowerMap valueTypes.UnitValue `json:"installed_power_map" PointId:"installed_power_map"`
InstalledPowerVirgin valueTypes.Float `json:"installed_power_virgin" PointIgnore:"true"`
InstallerAlarmCount valueTypes.Integer `json:"installer_alarm_count" PointId:"installer_alarm_count"`
InstallerFaultCount valueTypes.Integer `json:"installer_fault_count" PointId:"installer_fault_count"`
InstallerPsFaultStatus valueTypes.Integer `json:"installer_ps_fault_status" PointId:"installer_ps_fault_status"`
IsBankPs valueTypes.Bool `json:"is_bank_ps" PointId:"is_bank_ps"`
IsTuv valueTypes.Bool `json:"is_tuv" PointId:"is_tuv"`
JoinYearInitElec valueTypes.Float `json:"join_year_init_elec" PointId:"join_year_init_elec"`
Latitude valueTypes.Float `json:"latitude" PointId:"latitude"`
Location valueTypes.String `json:"location" PointId:"location"`
Longitude valueTypes.Float `json:"longitude" PointId:"longitude"`
MapLatitude valueTypes.Float `json:"map_latitude" PointId:"map_latitude"`
MapLongitude valueTypes.Float `json:"map_longitude" PointId:"map_longitude"`
MlpeFlag valueTypes.Integer `json:"mlpe_flag" PointId:"mlpe_flag"`
Nmi valueTypes.String `json:"nmi" PointId:"nmi"`
OfflineDevCount valueTypes.Integer `json:"offline_dev_count" PointId:"offline_dev_count"`
OperateYear interface{} `json:"operate_year" PointId:"operate_year"`
OperationBusName valueTypes.String `json:"operation_bus_name" PointId:"operation_bus_name"`
OwnerAlarmCount valueTypes.Integer `json:"owner_alarm_count" PointId:"owner_alarm_count"`
OwnerFaultCount valueTypes.Integer `json:"owner_fault_count" PointId:"owner_fault_count"`
OwnerPsFaultStatus valueTypes.Integer `json:"owner_ps_fault_status" PointId:"owner_ps_fault_status"`
P83022y valueTypes.String `json:"p83022y" PointId:"p83022" PointUpdateFreq:"UpdateFreq5Mins"`
P83046 valueTypes.Float `json:"p83046" PointId:"p83046" PointUpdateFreq:"UpdateFreq5Mins"`
P83048 valueTypes.Float `json:"p83048" PointId:"p83048" PointUpdateFreq:"UpdateFreq5Mins"`
P83049 valueTypes.Float `json:"p83049" PointId:"p83049" PointUpdateFreq:"UpdateFreq5Mins"`
P83050 valueTypes.Float `json:"p83050" PointId:"p83050" PointUpdateFreq:"UpdateFreq5Mins"`
P83051 valueTypes.Float `json:"p83051" PointId:"p83051" PointUpdateFreq:"UpdateFreq5Mins"`
P83054 valueTypes.Float `json:"p83054" PointId:"p83054" PointUpdateFreq:"UpdateFreq5Mins"`
P83055 valueTypes.Float `json:"p83055" PointId:"p83055" PointUpdateFreq:"UpdateFreq5Mins"`
P83067 valueTypes.Float `json:"p83067" PointId:"p83067" PointUpdateFreq:"UpdateFreq5Mins"`
P83070 valueTypes.Float `json:"p83070" PointId:"p83070" PointUpdateFreq:"UpdateFreq5Mins"`
P83076 valueTypes.Float `json:"p83076" PointId:"_p83076" PointName:"Pv Power" PointIgnore:"true"` // Dupe of PvPower
P83077 valueTypes.Float `json:"p83077" PointId:"_p83077" PointName:"Pv Energy" PointIgnore:"true"` // Dupe of PvEnergy
P83081 valueTypes.Float `json:"p83081" PointId:"_p83081" PointName:"Es Power" PointIgnore:"true"` // Dupe of EsPower
P83089 valueTypes.Float `json:"p83089" PointId:"_p83089" PointName:"Es Discharge Energy" PointIgnore:"true"` // Dupe of EsDischargeEnergy
P83095 valueTypes.Float `json:"p83095" PointId:"_p83095" PointName:"Es Total Discharge Energy" PointIgnore:"true"` // Dupe of EsTotalDischargeEnergy
P83118 valueTypes.Float `json:"p83118" PointId:"_p83118" PointName:"Use Energy" PointIgnore:"true"` // Dupe of UseEnergy
P83120 valueTypes.Float `json:"p83120" PointId:"_p83120" PointName:"Es Energy" PointIgnore:"true"` // Dupe of EsEnergy
P83127 valueTypes.Float `json:"p83127" PointId:"_p83127" PointName:"Es Total Energy" PointIgnore:"true"` // Dupe of EsTotalEnergy
ParamCo2 valueTypes.Float `json:"param_co2" PointId:"param_co2"`
ParamCoal valueTypes.Float `json:"param_coal" PointId:"param_coal"`
ParamIncome valueTypes.Float `json:"param_income" PointId:"param_income"`
ParamMeter valueTypes.Float `json:"param_meter" PointId:"param_meter"`
ParamNox valueTypes.Float `json:"param_nox" PointId:"param_nox"`
ParamPowder valueTypes.Float `json:"param_powder" PointId:"param_powder"`
ParamSo2 valueTypes.Float `json:"param_so2" PointId:"param_so2"`
ParamTree valueTypes.Float `json:"param_tree" PointId:"param_tree"`
ParamWater valueTypes.Float `json:"param_water" PointId:"param_water"`
PrScale string `json:"pr_scale" PointId:"pr_scale"`
Producer interface{} `json:"producer" PointId:"producer"`
PsCountryID valueTypes.Integer `json:"ps_country_id" PointId:"ps_country_id"`
PsFaultStatus valueTypes.Integer `json:"ps_fault_status" PointId:"ps_fault_status"`
PsHealthStatus valueTypes.Integer `json:"ps_health_status" PointId:"ps_health_status"`
PsHolder valueTypes.String `json:"ps_holder" PointId:"ps_holder"`
PsId valueTypes.Integer `json:"ps_id" PointId:"ps_id"`
PsIsNotInit valueTypes.Bool `json:"ps_is_not_init" PointId:"ps_is_not_init"`
PsName valueTypes.String `json:"ps_name" PointId:"ps_name"`
PsShortName valueTypes.String `json:"ps_short_name" PointId:"ps_short_name"`
PsStatus valueTypes.Integer `json:"ps_status" PointId:"ps_status"`
PsTimezone valueTypes.String `json:"ps_timezone" PointId:"ps_timezone"`
PsType valueTypes.Integer `json:"ps_type" PointId:"ps_type"`
PvEnergy valueTypes.UnitValue `json:"pv_energy" PointId:"p83077" PointName:"Pv Energy" PointUpdateFreq:"UpdateFreq5Mins"`
PvPower valueTypes.UnitValue `json:"pv_power" PointId:"p83076" PointName:"Pv Power" PointUpdateFreq:"UpdateFreq5Mins"`
Radiation valueTypes.UnitValue `json:"radiation" PointId:"radiation"`
RadiationVirgin valueTypes.Float `json:"radiation_virgin" PointIgnore:"true"`
RecordCreateTime valueTypes.DateTime `json:"recore_create_time" PointId:"record_create_time"`
SafeStartDate valueTypes.DateTime `json:"safe_start_date" PointId:"safe_start_date"`
ShareType valueTypes.Integer `json:"share_type" PointId:"share_type"`
ShippingAddress valueTypes.String `json:"shipping_address" PointId:"shipping_address"`
ShippingZipCode valueTypes.String `json:"shipping_zip_code" PointId:"shipping_zip_code"`
TodayEnergy valueTypes.UnitValue `json:"today_energy" PointId:"today_energy" PointUpdateFreq:"UpdateFreqDaily"`
TodayIncome valueTypes.UnitValue `json:"today_income" PointId:"today_income" PointUpdateFreq:"UpdateFreqDaily"`
TotalCapacity valueTypes.UnitValue `json:"total_capcity" PointId:"total_capacity" PointUpdateFreq:"UpdateFreqTotal"`
TotalEnergy valueTypes.UnitValue `json:"total_energy" PointId:"total_energy" PointUpdateFreq:"UpdateFreqTotal"`
TotalIncome valueTypes.UnitValue `json:"total_income" PointId:"total_income" PointUpdateFreq:"UpdateFreqTotal"`
TotalInitCo2Accelerate valueTypes.Float `json:"total_init_co2_accelerate" PointId:"total_init_co2_accelerate" PointUpdateFreq:"UpdateFreqTotal"`
TotalInitElec valueTypes.Float `json:"total_init_elec" PointId:"total_init_elec" PointUpdateFreq:"UpdateFreqTotal"`
TotalInitProfit valueTypes.Float `json:"total_init_profit" PointId:"total_init_profit" PointUpdateFreq:"UpdateFreqTotal"`
UseEnergy valueTypes.UnitValue `json:"use_energy" PointId:"p83118" PointName:"Use Energy" PointUpdateFreq:"UpdateFreq5Mins"`
ValidFlag valueTypes.Bool `json:"valid_flag" PointId:"valid_flag"`
WgsLatitude valueTypes.Float `json:"wgs_latitude" PointId:"wgs_latitude"`
WgsLongitude valueTypes.Float `json:"wgs_longitude" PointId:"wgs_longitude"`
ZipCode valueTypes.String `json:"zip_code" PointId:"zip_code"`
} `json:"pageList" PointNameFromChild:"PsId"`
RowCount valueTypes.Integer `json:"rowCount" PointIgnore:"true"`
}
func (e *ResultData) IsValid() error {
var err error
// switch {
// case e.Dummy == "":
// break
// default:
// err = errors.New(fmt.Sprintf("unknown error '%s'", e.Dummy))
// }
return err
}
func (e *EndPoint) GetData() api.DataMap {
entries := api.NewDataMap()
for range Only.Once {
pkg := apiReflect.GetName("", *e)
dt := valueTypes.NewDateTime(valueTypes.Now)
entries.StructToPoints(e.Response.ResultData, pkg, "", dt)
}
return entries
}
type Device struct {
PsFaultStatus valueTypes.Integer
PsHealthStatus valueTypes.Integer
PsHolder valueTypes.String
PsID valueTypes.Integer
PsName valueTypes.String
PsShortName valueTypes.String
PsStatus valueTypes.Integer
PsType valueTypes.Integer
}
type Devices []Device
func (e *ResultData) GetPsDevices() Devices {
var ret Devices
for _, d := range e.PageList {
ret = append(ret, Device{
PsFaultStatus: d.PsFaultStatus,
PsHealthStatus: d.PsHealthStatus,
PsHolder: d.PsHolder,
PsID: d.PsId,
PsName: d.PsName,
PsShortName: d.PsShortName,
PsStatus: d.PsStatus,
PsType: d.PsType,
})
}
return ret
}
func (e *ResultData) GetPsIds() []valueTypes.Integer {
var ret []valueTypes.Integer
for range Only.Once {
i := len(e.PageList)
if i == 0 {
break
}
for _, p := range e.PageList {
if p.PsId.Value() != 0 {
ret = append(ret, p.PsId)
}
}
}
return ret
}
func (e *ResultData) GetPsName() []string {
var ret []string
for range Only.Once {
i := len(e.PageList)
if i == 0 {
break
}
for _, p := range e.PageList {
if p.PsId.Value() != 0 {
ret = append(ret, p.PsName.Value())
}
}
}
return ret
}
func (e *ResultData) GetPsSerial() []string {
var ret []string
for range Only.Once {
i := len(e.PageList)
if i == 0 {
break
}
for _, p := range e.PageList {
if p.PsId.Value() != 0 {
ret = append(ret, p.PsShortName.Value())
}
}
}
return ret
}
func (e *EndPoint) GetPsIds() []valueTypes.Integer {
return e.Response.ResultData.GetPsIds()
}