PhotovoltaicAnalysisController.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.gyee.power.fitting.controller.gf;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.gyee.power.fitting.common.result.JsonResult;
  6. import com.gyee.power.fitting.common.result.ResultCode;
  7. import com.gyee.power.fitting.model.PhotovoltaicAnalysis;
  8. import com.gyee.power.fitting.model.ProBasicEquipment;
  9. import com.gyee.power.fitting.service.IPhotovoltaicAnalysisService;
  10. import com.gyee.power.fitting.service.ProBasicEquipmentService;
  11. import org.springframework.web.bind.annotation.GetMapping;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14. import org.springframework.web.bind.annotation.RestController;
  15. import javax.annotation.Resource;
  16. import java.util.Date;
  17. import java.util.List;
  18. import java.util.Map;
  19. import java.util.stream.Collectors;
  20. /**
  21. * <p>
  22. * 光伏分析 前端控制器
  23. * </p>
  24. *
  25. * @author gfhd
  26. * @since 2023-10-13
  27. */
  28. @RestController
  29. @RequestMapping("/photovoltaic")
  30. public class PhotovoltaicAnalysisController {
  31. @Resource
  32. private IPhotovoltaicAnalysisService photovoltaicAnalysisService;
  33. @Resource
  34. private ProBasicEquipmentService proBasicEquipmentService;
  35. @GetMapping("/analysis")
  36. public JSONObject photovoltaicAnalysis(
  37. @RequestParam("stationId") String stationId,
  38. @RequestParam("time") String time,
  39. @RequestParam("timeType") String timeType) {
  40. Date date, startDate, endDate;
  41. if ("year".equals(timeType)) {
  42. date = DateUtil.parse(time, "yyyy");
  43. startDate = DateUtil.beginOfYear(date);
  44. endDate = DateUtil.endOfYear(date);
  45. } else if ("month".equals(timeType)) {
  46. date = DateUtil.parse(time, "yyyy-MM");
  47. startDate = DateUtil.beginOfMonth(date);
  48. endDate = DateUtil.endOfMonth(date);
  49. } else {
  50. date = DateUtil.parse(time);
  51. startDate = DateUtil.beginOfDay(date);
  52. endDate = DateUtil.endOfDay(date);
  53. }
  54. QueryWrapper<PhotovoltaicAnalysis> wrapper = new QueryWrapper<>();
  55. wrapper.select("station_id,equipment_id,avg(scatter) scatter,(sum(average_theory_power)*100/sum(conversion_efficiency))" +
  56. " conversion_efficiency,sum(equivalent_generating_time) equivalent_generating_time," +
  57. "avg(device_availability) device_availability").between("data_date", startDate, endDate)
  58. .groupBy("station_id,equipment_id").orderByAsc("equipment_id");
  59. List<PhotovoltaicAnalysis> list = photovoltaicAnalysisService.list(wrapper);
  60. List<ProBasicEquipment> in = proBasicEquipmentService.getStationMap("IN").get(stationId);
  61. Map<String, String> collect = in.stream().collect(Collectors.toMap(ProBasicEquipment::getId, ProBasicEquipment::getAname));
  62. list = list.stream().peek(pa -> pa.setEquipmentId(collect.get(pa.getEquipmentId()))).collect(Collectors.toList());
  63. return JsonResult.successData(ResultCode.SUCCESS, list);
  64. }
  65. }