fwh_powerFlow.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package fwh_pro
  2. import (
  3. "fmt"
  4. "fwh-toolbox-server/domain"
  5. "fwh-toolbox-server/dto"
  6. "net/url"
  7. "time"
  8. )
  9. // 查询站点功率流信息
  10. func querySitePowerFlow(sn string, day time.Time) (*domain.FwhResponseA[dto.SitePowerFlow], error) {
  11. // 构造 query 参数
  12. params := url.Values{}
  13. params.Add("gatewayId", sn)
  14. params.Add("dayTime", day.Format(time.DateOnly)) // 会自动 URL 编码
  15. response, err := FwhHttpGetUnmarshalA[dto.SitePowerFlow](getFullEnergyUrl("/api-energy/power/getFhpPowerByDayOld"), params)
  16. if err != nil {
  17. return nil, err
  18. }
  19. return response, nil
  20. }
  21. // 从fwh_pro获取站点功率流
  22. //
  23. // 限制条件:day 仅取其字面「年月日」(内部 day.Format(time.DateOnly)),时分秒与时区被丢弃。
  24. // 调用方需保证 day 的字面日期就是目标日期;若传入的时间因时区换算会跨天(如本地 00:00 换算到
  25. // UTC 落到前一天),会查错日期。DataDownload 传本地时区当天 00:00,字面日期正确。
  26. // 本函数不做按天分片,无 QueryMqttLogListOnTimeRange 那类 Truncate 死循环风险。
  27. func QuerySitePowerFlow(site string, day time.Time) (*domain.FwhResponseA[dto.SitePowerFlow], error) {
  28. sitePowerFlowRes, err := querySitePowerFlow(site, day)
  29. if err != nil {
  30. return nil, err
  31. }
  32. if sitePowerFlowRes.Code != 200 {
  33. return nil, fmt.Errorf("[queryMqttLogListOnePage] 查询失败 code: %d, message: %s", sitePowerFlowRes.Code, sitePowerFlowRes.Msg)
  34. }
  35. return sitePowerFlowRes, nil
  36. }