sitesInfoManageDTO.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. package dto
  2. import (
  3. "fwh-toolbox-server/domain"
  4. "go.mongodb.org/mongo-driver/bson/primitive"
  5. "go.uber.org/zap"
  6. )
  7. type SiteInfoRequest struct {
  8. Search string `json:"search"`
  9. Filter *domain.SiteInfoFilter `json:"filter"`
  10. PageSize uint `json:"pageSize"`
  11. PageNum uint `json:"pageNum"`
  12. }
  13. type SiteInfoDTO struct {
  14. Sn string `json:"sn"` // aGate SN
  15. Name *string `json:"name,omitempty"`
  16. DistributorId *int `json:"distributorId,omitempty"` // 经销商ID
  17. DistributorName *string `json:"distributorName,omitempty"` // 经销商名称
  18. InstallerId *int `json:"installerId,omitempty"` // 安装商ID
  19. InstallerAccountId *int `json:"installerAccountId,omitempty"` // 安装商账号ID
  20. InstallerAccount *string `json:"installerAccount,omitempty"` // 安装商账号
  21. InstallerName *string `json:"installerName,omitempty"` // 安装商名称
  22. MaintId *int `json:"maintId,omitempty"` // 维护商ID
  23. MaintName *string `json:"maintName,omitempty"` // 维护商名称
  24. Account *string `json:"account,omitempty"` // 绑定的用户账号
  25. AccountName *string `json:"accountName,omitempty"` // 绑定账号名
  26. Longitude string `json:"longitude"` // 经度
  27. Latitude string `json:"latitude"` // 纬度
  28. Address *string `json:"address,omitempty"`
  29. InstallTime *string `json:"installTime,omitempty"` // 安装时间
  30. ActiveStatus int `json:"activeStatus"` // 激活状态 0-未激活 1-激活
  31. ActiveTime string `json:"activeTime"` // 激活时间(北京时间)
  32. LocalActiveTime string `json:"localActiveTime"` // 激活时间(站点当地时间)
  33. Status int `json:"status"` // 网络状态 0-离线 1-在线
  34. OnLineTime *string `json:"onLineTime,omitempty"` // 最后上线时间 YYYY-MM-DD HH:mm:SS
  35. OffLineTime *string `json:"offLineTime,omitempty"` // 最后离线时间 YYYY-MM-DD HH:mm:SS
  36. // model * ??? 未知字段 (TODO:后续处理)
  37. DeviceIp *string `json:"deviceIp,omitempty"` // 设备联网IP
  38. Subnet *string `json:"subnet,omitempty"` // 子掩码
  39. Mac *string `json:"mac,omitempty"` // MAC地址
  40. GatewayIp *string `json:"gatewayIp,omitempty"` // 网关IP
  41. Signal *string `json:"signal,omitempty"` // 信号强度
  42. ICCID string `json:"iccId"`
  43. IMEI string `json:"imei"`
  44. FirmUpgradeTime *string `json:"firmUpgradeTime,omitempty"` // 固件最后更新时间 YYYY-MM-DD HH:mm:SS
  45. TurnoverTime *string `json:"turnoverTime,omitempty"` // 周转时间??? YYYY-MM-DD HH:mm:SS
  46. CreateTime *string `json:"createTime,omitempty"` // 设备首次登录时间 YYYY-MM-DD HH:mm:SS
  47. // 忽略部分功率字段powerSun、powerGen、powerUti、powerFhp、powerLoad
  48. BatterySoc *float32 `json:"batterySoc,omitempty"` // 系统电池SOC
  49. RunStatus int `json:"runStatus"` // 设备运行状态 0-待机 1-充电 2-放电 3-故障
  50. EmsModel *int `json:"emsModel,omitempty"` // EMS调度运行模式(策略) 参考调度ID
  51. ElectricityType int `json:"electricityType"` // 电网类型 0-离网运行 1-并网运行
  52. // workMode * ??? 未知字段 (TODO:后续处理)
  53. FhpSn string `json:"fhpSn"` // aPower SN 多设备用,分割
  54. TimeZone float32 `json:"timeZone"` // 时区数值
  55. Version string `json:"version"` // 设备固件版本
  56. SlVersion string `json:"slVersion"` // EMS-DSP版本
  57. SlVersionJson string `json:"slVersionJson"` // EMS-DSP版本详细信息JSON
  58. MeterVersion *string `json:"meterVersion,omitempty"` // 电表版本
  59. MbVersion *string `json:"mbVersion,omitempty"` // MODBUS版本
  60. AwsVersion *string `json:"awsVersion,omitempty"` // AWS版本
  61. AppVersion *string `json:"appVersion,omitempty"` // APP版本(与APP通讯的模块软件)
  62. ElecnetStatus int `json:"elecnetStatus"` // 电网状态 0-离网 1-并网
  63. SlaverStat int `json:"slaverStat"` // EMS-DSP状态
  64. Dst *int `json:"dst,omitempty"` // 夏令时 0-否 1-是
  65. ZoneInfo string `json:"zoneInfo"` // 时区信息 America/Los_Angeles
  66. PostCode string `json:"postCode"` // 邮编
  67. DeviceTime *string `json:"deviceTime,omitempty"` // 设备时间 YYYY-MM-DD HH:mm:SS
  68. ProtocolVer string `json:"protocolVer"` // 协议版本
  69. SysHdVersion int `json:"sysHdVersion"` // aGate硬件版本
  70. RealSysHdVersion *string `json:"realSysHdVersion,omitempty"` // aGate系统版本名称
  71. WifiSignal string `json:"wifiSignal"` // WIFI信号
  72. ConnType int `json:"connType"` // 网络连接类型 0-未连接 1-eth0 2-eth1 3-WIFI 4-4G
  73. UserName *string `json:"userName,omitempty"`
  74. ContactNumber *string `json:"contactNumber,omitempty"` // 联系方式(手机号)
  75. // 忽略部分未知字段totalData、usedData、resourceList
  76. FinancierName *string `json:"financierName,omitempty"` // 大客户名称
  77. FinancierContractNumber *string `json:"financierContractNumber,omitempty"` // 大客户联系方式(手机号)
  78. CountryId *int `json:"countryId,omitempty"` // 国家ID
  79. ProvinceId *int `json:"provinceId,omitempty"` // 州/省ID
  80. FinancierId *int `json:"financierId,omitempty"` // 大客户ID
  81. FirstName *string `json:"firstName,omitempty"` // 用户名
  82. LastName *string `json:"lastName,omitempty"` // 用户姓
  83. // region * ??? 未知字段 (TODO:后续处理)
  84. Remark *string `json:"remark,omitempty"` // 备注信息
  85. GenEn int `json:"genEn"` // 发电机是否使能 0-不使能 1-使能
  86. UserId *int `json:"userId,omitempty"` // 用户ID
  87. Country string `json:"country"` // 国家
  88. Province string `json:"province"` // 州/省
  89. City string `json:"city"` // 城市
  90. AddressSecondLast *string `json:"addressSecondLast,omitempty"`
  91. DeviceAddress *string `json:"deviceAddress,omitempty"` // 设备地址
  92. // whetherEncrypt * ??? 未知字段 (TODO:后续处理)
  93. EmsDeviceVer *int `json:"emsDeviceVer,omitempty"` // EMS版本
  94. Site *string `json:"site,omitempty"` // 站点ID名
  95. // 忽略部分字段newHomeFlag、sleepStatus、isJoinJA12
  96. SiteId *uint `json:"siteId,omitempty"` // 站点ID号
  97. JobCode *string `json:"jobCode,omitempty"` // Job Code (Sunrun相关)
  98. // 非原始数据
  99. ExtTags []SiteTagDTO `json:"extTags,omitempty"` // (扩展)设备标签
  100. }
  101. type SiteTagDTO struct {
  102. Id string `json:"id,omitempty"` // 标签ID
  103. Name string `json:"name"` // 标签名
  104. Count uint `json:"count"` // 标签关联设备数量
  105. Color string `json:"color"` // 标签颜色
  106. Description string `json:"description"` // 标签描述
  107. }
  108. // Code generated. SiteInfoDomain -> SiteInfoDTO
  109. func SiteInfoDomainToSiteInfoDTO(src *domain.SiteInfoDomain, tagMap *map[string]*SiteTagDTO) *SiteInfoDTO {
  110. if src == nil {
  111. return nil
  112. }
  113. tagList := []SiteTagDTO{}
  114. if src.ExtTags != nil && tagMap != nil {
  115. for _, tagId := range *src.ExtTags {
  116. tagInfo := (*tagMap)[tagId]
  117. if tagInfo != nil {
  118. tagList = append(tagList, *tagInfo)
  119. }
  120. }
  121. }
  122. return &SiteInfoDTO{
  123. Sn: src.Sn,
  124. Name: src.Name,
  125. DistributorId: src.DistributorId,
  126. DistributorName: src.DistributorName,
  127. InstallerId: src.InstallerId,
  128. InstallerAccountId: src.InstallerAccountId,
  129. InstallerAccount: src.InstallerAccount,
  130. InstallerName: src.InstallerName,
  131. MaintId: src.MaintId,
  132. MaintName: src.MaintName,
  133. Account: src.Account,
  134. AccountName: src.AccountName,
  135. Longitude: src.Longitude,
  136. Latitude: src.Latitude,
  137. Address: src.Address,
  138. InstallTime: src.InstallTime,
  139. ActiveStatus: src.ActiveStatus,
  140. ActiveTime: src.ActiveTime,
  141. Status: src.Status,
  142. OnLineTime: src.OnLineTime,
  143. OffLineTime: src.OffLineTime,
  144. DeviceIp: src.DeviceIp,
  145. Subnet: src.Subnet,
  146. Mac: src.Mac,
  147. GatewayIp: src.GatewayIp,
  148. Signal: src.Signal,
  149. ICCID: src.ICCID,
  150. IMEI: src.IMEI,
  151. FirmUpgradeTime: src.FirmUpgradeTime,
  152. TurnoverTime: src.TurnoverTime,
  153. CreateTime: src.CreateTime,
  154. BatterySoc: src.BatterySoc,
  155. RunStatus: src.RunStatus,
  156. EmsModel: src.EmsModel,
  157. ElectricityType: src.ElectricityType,
  158. FhpSn: src.FhpSn,
  159. TimeZone: src.TimeZone,
  160. Version: src.Version,
  161. SlVersion: src.SlVersion,
  162. SlVersionJson: src.SlVersionJson,
  163. MeterVersion: src.MeterVersion,
  164. MbVersion: src.MbVersion,
  165. AwsVersion: src.AwsVersion,
  166. AppVersion: src.AppVersion,
  167. ElecnetStatus: src.ElecnetStatus,
  168. SlaverStat: src.SlaverStat,
  169. Dst: src.Dst,
  170. ZoneInfo: src.ZoneInfo,
  171. PostCode: src.PostCode,
  172. DeviceTime: src.DeviceTime,
  173. ProtocolVer: src.ProtocolVer,
  174. SysHdVersion: src.SysHdVersion,
  175. RealSysHdVersion: src.RealSysHdVersion,
  176. WifiSignal: src.WifiSignal,
  177. ConnType: src.ConnType,
  178. UserName: src.UserName,
  179. ContactNumber: src.ContactNumber,
  180. FinancierName: src.FinancierName,
  181. FinancierContractNumber: src.FinancierContractNumber,
  182. CountryId: src.CountryId,
  183. ProvinceId: src.ProvinceId,
  184. FinancierId: src.FinancierId,
  185. FirstName: src.FirstName,
  186. LastName: src.LastName,
  187. Remark: src.Remark,
  188. GenEn: src.GenEn,
  189. UserId: src.UserId,
  190. Country: src.Country,
  191. Province: src.Province,
  192. City: src.City,
  193. AddressSecondLast: src.AddressSecondLast,
  194. DeviceAddress: src.DeviceAddress,
  195. EmsDeviceVer: src.EmsDeviceVer,
  196. Site: src.Site,
  197. SiteId: src.SiteId,
  198. // 非原始数据
  199. ExtTags: tagList,
  200. }
  201. }
  202. // Code generated. []SiteInfoDomain -> []SiteInfoDTO
  203. func SiteInfoDomainListToSiteInfoDTOList(src []domain.SiteInfoDomain, tagMap *map[string]*SiteTagDTO) []SiteInfoDTO {
  204. if src == nil {
  205. return nil
  206. }
  207. infoList := []SiteInfoDTO{}
  208. for _, info := range src {
  209. tagList := []SiteTagDTO{}
  210. if info.ExtTags != nil && tagMap != nil {
  211. for _, tagId := range *info.ExtTags {
  212. tagInfo := (*tagMap)[tagId]
  213. if tagInfo != nil {
  214. tagList = append(tagList, *tagInfo)
  215. }
  216. }
  217. }
  218. infoList = append(infoList, SiteInfoDTO{
  219. Sn: info.Sn,
  220. Name: info.Name,
  221. DistributorId: info.DistributorId,
  222. DistributorName: info.DistributorName,
  223. InstallerId: info.InstallerId,
  224. InstallerAccountId: info.InstallerAccountId,
  225. InstallerAccount: info.InstallerAccount,
  226. InstallerName: info.InstallerName,
  227. MaintId: info.MaintId,
  228. MaintName: info.MaintName,
  229. Account: info.Account,
  230. AccountName: info.AccountName,
  231. Longitude: info.Longitude,
  232. Latitude: info.Latitude,
  233. Address: info.Address,
  234. InstallTime: info.InstallTime,
  235. ActiveStatus: info.ActiveStatus,
  236. ActiveTime: info.ActiveTime,
  237. Status: info.Status,
  238. OnLineTime: info.OnLineTime,
  239. OffLineTime: info.OffLineTime,
  240. DeviceIp: info.DeviceIp,
  241. Subnet: info.Subnet,
  242. Mac: info.Mac,
  243. GatewayIp: info.GatewayIp,
  244. Signal: info.Signal,
  245. ICCID: info.ICCID,
  246. IMEI: info.IMEI,
  247. FirmUpgradeTime: info.FirmUpgradeTime,
  248. TurnoverTime: info.TurnoverTime,
  249. CreateTime: info.CreateTime,
  250. BatterySoc: info.BatterySoc,
  251. RunStatus: info.RunStatus,
  252. EmsModel: info.EmsModel,
  253. ElectricityType: info.ElectricityType,
  254. FhpSn: info.FhpSn,
  255. TimeZone: info.TimeZone,
  256. Version: info.Version,
  257. SlVersion: info.SlVersion,
  258. SlVersionJson: info.SlVersionJson,
  259. MeterVersion: info.MeterVersion,
  260. MbVersion: info.MbVersion,
  261. AwsVersion: info.AwsVersion,
  262. AppVersion: info.AppVersion,
  263. ElecnetStatus: info.ElecnetStatus,
  264. SlaverStat: info.SlaverStat,
  265. Dst: info.Dst,
  266. ZoneInfo: info.ZoneInfo,
  267. PostCode: info.PostCode,
  268. DeviceTime: info.DeviceTime,
  269. ProtocolVer: info.ProtocolVer,
  270. SysHdVersion: info.SysHdVersion,
  271. RealSysHdVersion: info.RealSysHdVersion,
  272. WifiSignal: info.WifiSignal,
  273. ConnType: info.ConnType,
  274. UserName: info.UserName,
  275. ContactNumber: info.ContactNumber,
  276. FinancierName: info.FinancierName,
  277. FinancierContractNumber: info.FinancierContractNumber,
  278. CountryId: info.CountryId,
  279. ProvinceId: info.ProvinceId,
  280. FinancierId: info.FinancierId,
  281. FirstName: info.FirstName,
  282. LastName: info.LastName,
  283. Remark: info.Remark,
  284. GenEn: info.GenEn,
  285. UserId: info.UserId,
  286. Country: info.Country,
  287. Province: info.Province,
  288. City: info.City,
  289. AddressSecondLast: info.AddressSecondLast,
  290. DeviceAddress: info.DeviceAddress,
  291. EmsDeviceVer: info.EmsDeviceVer,
  292. Site: info.Site,
  293. SiteId: info.SiteId,
  294. // 非原始数据
  295. ExtTags: tagList,
  296. })
  297. }
  298. return infoList
  299. }
  300. // Code generated. SiteTagDomain -> SiteTagDTO
  301. func SiteTagDomainToSiteTagDTO(src *domain.SiteTagDomain) *SiteTagDTO {
  302. if src == nil {
  303. return nil
  304. }
  305. return &SiteTagDTO{
  306. Id: src.Id.Hex(),
  307. Name: src.Name,
  308. Count: src.Count,
  309. Color: src.Color,
  310. Description: src.Description,
  311. }
  312. }
  313. // Code generated. SiteTagDTO -> SiteTagDomain
  314. func SiteSiteTagDTOToTagDomain(src *SiteTagDTO) *domain.SiteTagDomain {
  315. if src == nil {
  316. return nil
  317. }
  318. id, err := primitive.ObjectIDFromHex(src.Id)
  319. if err != nil {
  320. id = primitive.NilObjectID
  321. zap.L().Warn("SiteSiteTagDTOToTagDomain illegal ID", zap.String("err", err.Error()), zap.String("id", src.Id))
  322. }
  323. return &domain.SiteTagDomain{
  324. Id: id,
  325. Name: src.Name,
  326. Count: src.Count,
  327. Color: src.Color,
  328. Description: src.Description,
  329. }
  330. }