package com.ruoyi.order.controller; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.dto.SixChargingDto; import com.ruoyi.order.service.TChargingOrderService; import com.ruoyi.order.vo.LargeChargingPowerVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; @Api(tags = "大屏") @RestController @RequestMapping("/large-screen") public class LargeScreenController { @Resource private TChargingOrderService chargingOrderService; @ApiOperation(tags = {"大屏-累计指标"}, value = "累计充电指标") @GetMapping("/summary") public R> summary(@RequestParam("siteIds") List siteIds) { return R.ok(chargingOrderService.getLargeScreenSummary(normalizeSiteIds(siteIds))); } @ApiOperation(tags = {"大屏-收入趋势"}, value = "最近七日充电收入") @GetMapping("/incomeTrend") public R> incomeTrend(@RequestParam("siteIds") List siteIds) { return R.ok(chargingOrderService.getLargeScreenIncomeTrend( normalizeSiteIds(siteIds), LocalDate.now().minusDays(6))); } @ApiOperation(tags = {"大屏-停车场充电功率曲线图"},value = "停车场充电功率曲线图") @GetMapping("/getChargingPower") public R> getChargingPower( @RequestParam(value = "siteIds", required = false) List siteIds){ LocalDate today = LocalDate.now(); LocalDateTime startTime = today.minusDays(6).atStartOfDay(); LocalDateTime endTime = today.plusDays(1).atStartOfDay(); List powerData = chargingOrderService.getLargeScreenChargingPower( siteIds == null ? null : normalizeSiteIds(siteIds), startTime, endTime); Map powerByDate = powerData.stream() .collect(Collectors.toMap(LargeChargingPowerVo::getTime, Function.identity(), (left, right) -> left)); ArrayList largeChargingPowerVos = new ArrayList<>(); for (int count = 6; count >= 0; count--) { String time = today.minusDays(count).toString(); LargeChargingPowerVo largeChargingPowerVo = powerByDate.getOrDefault(time, new LargeChargingPowerVo()); largeChargingPowerVo.setTime(time); largeChargingPowerVos.add(largeChargingPowerVo); } return R.ok(largeChargingPowerVos); } private List normalizeSiteIds(List siteIds) { return siteIds == null || siteIds.isEmpty() ? Collections.singletonList(-1) : siteIds; } }