package dto import ( "fwh-toolbox-server/domain" "go.mongodb.org/mongo-driver/bson/primitive" "go.uber.org/zap" ) type SiteInfoRequest struct { Search string `json:"search"` Filter *domain.SiteInfoFilter `json:"filter"` PageSize uint `json:"pageSize"` PageNum uint `json:"pageNum"` } type SiteInfoDTO struct { Sn string `json:"sn"` // aGate SN Name *string `json:"name,omitempty"` DistributorId *int `json:"distributorId,omitempty"` // 经销商ID DistributorName *string `json:"distributorName,omitempty"` // 经销商名称 InstallerId *int `json:"installerId,omitempty"` // 安装商ID InstallerAccountId *int `json:"installerAccountId,omitempty"` // 安装商账号ID InstallerAccount *string `json:"installerAccount,omitempty"` // 安装商账号 InstallerName *string `json:"installerName,omitempty"` // 安装商名称 MaintId *int `json:"maintId,omitempty"` // 维护商ID MaintName *string `json:"maintName,omitempty"` // 维护商名称 Account *string `json:"account,omitempty"` // 绑定的用户账号 AccountName *string `json:"accountName,omitempty"` // 绑定账号名 Longitude string `json:"longitude"` // 经度 Latitude string `json:"latitude"` // 纬度 Address *string `json:"address,omitempty"` InstallTime *string `json:"installTime,omitempty"` // 安装时间 ActiveStatus int `json:"activeStatus"` // 激活状态 0-未激活 1-激活 ActiveTime string `json:"activeTime"` // 激活时间(北京时间) LocalActiveTime string `json:"localActiveTime"` // 激活时间(站点当地时间) Status int `json:"status"` // 网络状态 0-离线 1-在线 OnLineTime *string `json:"onLineTime,omitempty"` // 最后上线时间 YYYY-MM-DD HH:mm:SS OffLineTime *string `json:"offLineTime,omitempty"` // 最后离线时间 YYYY-MM-DD HH:mm:SS // model * ??? 未知字段 (TODO:后续处理) DeviceIp *string `json:"deviceIp,omitempty"` // 设备联网IP Subnet *string `json:"subnet,omitempty"` // 子掩码 Mac *string `json:"mac,omitempty"` // MAC地址 GatewayIp *string `json:"gatewayIp,omitempty"` // 网关IP Signal *string `json:"signal,omitempty"` // 信号强度 ICCID string `json:"iccId"` IMEI string `json:"imei"` FirmUpgradeTime *string `json:"firmUpgradeTime,omitempty"` // 固件最后更新时间 YYYY-MM-DD HH:mm:SS TurnoverTime *string `json:"turnoverTime,omitempty"` // 周转时间??? YYYY-MM-DD HH:mm:SS CreateTime *string `json:"createTime,omitempty"` // 设备首次登录时间 YYYY-MM-DD HH:mm:SS // 忽略部分功率字段powerSun、powerGen、powerUti、powerFhp、powerLoad BatterySoc *float32 `json:"batterySoc,omitempty"` // 系统电池SOC RunStatus int `json:"runStatus"` // 设备运行状态 0-待机 1-充电 2-放电 3-故障 EmsModel *int `json:"emsModel,omitempty"` // EMS调度运行模式(策略) 参考调度ID ElectricityType int `json:"electricityType"` // 电网类型 0-离网运行 1-并网运行 // workMode * ??? 未知字段 (TODO:后续处理) FhpSn string `json:"fhpSn"` // aPower SN 多设备用,分割 TimeZone float32 `json:"timeZone"` // 时区数值 Version string `json:"version"` // 设备固件版本 SlVersion string `json:"slVersion"` // EMS-DSP版本 SlVersionJson string `json:"slVersionJson"` // EMS-DSP版本详细信息JSON MeterVersion *string `json:"meterVersion,omitempty"` // 电表版本 MbVersion *string `json:"mbVersion,omitempty"` // MODBUS版本 AwsVersion *string `json:"awsVersion,omitempty"` // AWS版本 AppVersion *string `json:"appVersion,omitempty"` // APP版本(与APP通讯的模块软件) ElecnetStatus int `json:"elecnetStatus"` // 电网状态 0-离网 1-并网 SlaverStat int `json:"slaverStat"` // EMS-DSP状态 Dst *int `json:"dst,omitempty"` // 夏令时 0-否 1-是 ZoneInfo string `json:"zoneInfo"` // 时区信息 America/Los_Angeles PostCode string `json:"postCode"` // 邮编 DeviceTime *string `json:"deviceTime,omitempty"` // 设备时间 YYYY-MM-DD HH:mm:SS ProtocolVer string `json:"protocolVer"` // 协议版本 SysHdVersion int `json:"sysHdVersion"` // aGate硬件版本 RealSysHdVersion *string `json:"realSysHdVersion,omitempty"` // aGate系统版本名称 WifiSignal string `json:"wifiSignal"` // WIFI信号 ConnType int `json:"connType"` // 网络连接类型 0-未连接 1-eth0 2-eth1 3-WIFI 4-4G UserName *string `json:"userName,omitempty"` ContactNumber *string `json:"contactNumber,omitempty"` // 联系方式(手机号) // 忽略部分未知字段totalData、usedData、resourceList FinancierName *string `json:"financierName,omitempty"` // 大客户名称 FinancierContractNumber *string `json:"financierContractNumber,omitempty"` // 大客户联系方式(手机号) CountryId *int `json:"countryId,omitempty"` // 国家ID ProvinceId *int `json:"provinceId,omitempty"` // 州/省ID FinancierId *int `json:"financierId,omitempty"` // 大客户ID FirstName *string `json:"firstName,omitempty"` // 用户名 LastName *string `json:"lastName,omitempty"` // 用户姓 // region * ??? 未知字段 (TODO:后续处理) Remark *string `json:"remark,omitempty"` // 备注信息 GenEn int `json:"genEn"` // 发电机是否使能 0-不使能 1-使能 UserId *int `json:"userId,omitempty"` // 用户ID Country string `json:"country"` // 国家 Province string `json:"province"` // 州/省 City string `json:"city"` // 城市 AddressSecondLast *string `json:"addressSecondLast,omitempty"` DeviceAddress *string `json:"deviceAddress,omitempty"` // 设备地址 // whetherEncrypt * ??? 未知字段 (TODO:后续处理) EmsDeviceVer *int `json:"emsDeviceVer,omitempty"` // EMS版本 Site *string `json:"site,omitempty"` // 站点ID名 // 忽略部分字段newHomeFlag、sleepStatus、isJoinJA12 SiteId *uint `json:"siteId,omitempty"` // 站点ID号 JobCode *string `json:"jobCode,omitempty"` // Job Code (Sunrun相关) // 非原始数据 ExtTags []SiteTagDTO `json:"extTags,omitempty"` // (扩展)设备标签 } type SiteTagDTO struct { Id string `json:"id,omitempty"` // 标签ID Name string `json:"name"` // 标签名 Count uint `json:"count"` // 标签关联设备数量 Color string `json:"color"` // 标签颜色 Description string `json:"description"` // 标签描述 } // Code generated. SiteInfoDomain -> SiteInfoDTO func SiteInfoDomainToSiteInfoDTO(src *domain.SiteInfoDomain, tagMap *map[string]*SiteTagDTO) *SiteInfoDTO { if src == nil { return nil } tagList := []SiteTagDTO{} if src.ExtTags != nil && tagMap != nil { for _, tagId := range *src.ExtTags { tagInfo := (*tagMap)[tagId] if tagInfo != nil { tagList = append(tagList, *tagInfo) } } } return &SiteInfoDTO{ Sn: src.Sn, Name: src.Name, DistributorId: src.DistributorId, DistributorName: src.DistributorName, InstallerId: src.InstallerId, InstallerAccountId: src.InstallerAccountId, InstallerAccount: src.InstallerAccount, InstallerName: src.InstallerName, MaintId: src.MaintId, MaintName: src.MaintName, Account: src.Account, AccountName: src.AccountName, Longitude: src.Longitude, Latitude: src.Latitude, Address: src.Address, InstallTime: src.InstallTime, ActiveStatus: src.ActiveStatus, ActiveTime: src.ActiveTime, Status: src.Status, OnLineTime: src.OnLineTime, OffLineTime: src.OffLineTime, DeviceIp: src.DeviceIp, Subnet: src.Subnet, Mac: src.Mac, GatewayIp: src.GatewayIp, Signal: src.Signal, ICCID: src.ICCID, IMEI: src.IMEI, FirmUpgradeTime: src.FirmUpgradeTime, TurnoverTime: src.TurnoverTime, CreateTime: src.CreateTime, BatterySoc: src.BatterySoc, RunStatus: src.RunStatus, EmsModel: src.EmsModel, ElectricityType: src.ElectricityType, FhpSn: src.FhpSn, TimeZone: src.TimeZone, Version: src.Version, SlVersion: src.SlVersion, SlVersionJson: src.SlVersionJson, MeterVersion: src.MeterVersion, MbVersion: src.MbVersion, AwsVersion: src.AwsVersion, AppVersion: src.AppVersion, ElecnetStatus: src.ElecnetStatus, SlaverStat: src.SlaverStat, Dst: src.Dst, ZoneInfo: src.ZoneInfo, PostCode: src.PostCode, DeviceTime: src.DeviceTime, ProtocolVer: src.ProtocolVer, SysHdVersion: src.SysHdVersion, RealSysHdVersion: src.RealSysHdVersion, WifiSignal: src.WifiSignal, ConnType: src.ConnType, UserName: src.UserName, ContactNumber: src.ContactNumber, FinancierName: src.FinancierName, FinancierContractNumber: src.FinancierContractNumber, CountryId: src.CountryId, ProvinceId: src.ProvinceId, FinancierId: src.FinancierId, FirstName: src.FirstName, LastName: src.LastName, Remark: src.Remark, GenEn: src.GenEn, UserId: src.UserId, Country: src.Country, Province: src.Province, City: src.City, AddressSecondLast: src.AddressSecondLast, DeviceAddress: src.DeviceAddress, EmsDeviceVer: src.EmsDeviceVer, Site: src.Site, SiteId: src.SiteId, // 非原始数据 ExtTags: tagList, } } // Code generated. []SiteInfoDomain -> []SiteInfoDTO func SiteInfoDomainListToSiteInfoDTOList(src []domain.SiteInfoDomain, tagMap *map[string]*SiteTagDTO) []SiteInfoDTO { if src == nil { return nil } infoList := []SiteInfoDTO{} for _, info := range src { tagList := []SiteTagDTO{} if info.ExtTags != nil && tagMap != nil { for _, tagId := range *info.ExtTags { tagInfo := (*tagMap)[tagId] if tagInfo != nil { tagList = append(tagList, *tagInfo) } } } infoList = append(infoList, SiteInfoDTO{ Sn: info.Sn, Name: info.Name, DistributorId: info.DistributorId, DistributorName: info.DistributorName, InstallerId: info.InstallerId, InstallerAccountId: info.InstallerAccountId, InstallerAccount: info.InstallerAccount, InstallerName: info.InstallerName, MaintId: info.MaintId, MaintName: info.MaintName, Account: info.Account, AccountName: info.AccountName, Longitude: info.Longitude, Latitude: info.Latitude, Address: info.Address, InstallTime: info.InstallTime, ActiveStatus: info.ActiveStatus, ActiveTime: info.ActiveTime, Status: info.Status, OnLineTime: info.OnLineTime, OffLineTime: info.OffLineTime, DeviceIp: info.DeviceIp, Subnet: info.Subnet, Mac: info.Mac, GatewayIp: info.GatewayIp, Signal: info.Signal, ICCID: info.ICCID, IMEI: info.IMEI, FirmUpgradeTime: info.FirmUpgradeTime, TurnoverTime: info.TurnoverTime, CreateTime: info.CreateTime, BatterySoc: info.BatterySoc, RunStatus: info.RunStatus, EmsModel: info.EmsModel, ElectricityType: info.ElectricityType, FhpSn: info.FhpSn, TimeZone: info.TimeZone, Version: info.Version, SlVersion: info.SlVersion, SlVersionJson: info.SlVersionJson, MeterVersion: info.MeterVersion, MbVersion: info.MbVersion, AwsVersion: info.AwsVersion, AppVersion: info.AppVersion, ElecnetStatus: info.ElecnetStatus, SlaverStat: info.SlaverStat, Dst: info.Dst, ZoneInfo: info.ZoneInfo, PostCode: info.PostCode, DeviceTime: info.DeviceTime, ProtocolVer: info.ProtocolVer, SysHdVersion: info.SysHdVersion, RealSysHdVersion: info.RealSysHdVersion, WifiSignal: info.WifiSignal, ConnType: info.ConnType, UserName: info.UserName, ContactNumber: info.ContactNumber, FinancierName: info.FinancierName, FinancierContractNumber: info.FinancierContractNumber, CountryId: info.CountryId, ProvinceId: info.ProvinceId, FinancierId: info.FinancierId, FirstName: info.FirstName, LastName: info.LastName, Remark: info.Remark, GenEn: info.GenEn, UserId: info.UserId, Country: info.Country, Province: info.Province, City: info.City, AddressSecondLast: info.AddressSecondLast, DeviceAddress: info.DeviceAddress, EmsDeviceVer: info.EmsDeviceVer, Site: info.Site, SiteId: info.SiteId, // 非原始数据 ExtTags: tagList, }) } return infoList } // Code generated. SiteTagDomain -> SiteTagDTO func SiteTagDomainToSiteTagDTO(src *domain.SiteTagDomain) *SiteTagDTO { if src == nil { return nil } return &SiteTagDTO{ Id: src.Id.Hex(), Name: src.Name, Count: src.Count, Color: src.Color, Description: src.Description, } } // Code generated. SiteTagDTO -> SiteTagDomain func SiteSiteTagDTOToTagDomain(src *SiteTagDTO) *domain.SiteTagDomain { if src == nil { return nil } id, err := primitive.ObjectIDFromHex(src.Id) if err != nil { id = primitive.NilObjectID zap.L().Warn("SiteSiteTagDTOToTagDomain illegal ID", zap.String("err", err.Error()), zap.String("id", src.Id)) } return &domain.SiteTagDomain{ Id: id, Name: src.Name, Count: src.Count, Color: src.Color, Description: src.Description, } }