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<Map<String, Object>> summary(@RequestParam("siteIds") List<Integer> siteIds) {
|
return R.ok(chargingOrderService.getLargeScreenSummary(normalizeSiteIds(siteIds)));
|
}
|
|
@ApiOperation(tags = {"大屏-收入趋势"}, value = "最近七日充电收入")
|
@GetMapping("/incomeTrend")
|
public R<List<SixChargingDto>> incomeTrend(@RequestParam("siteIds") List<Integer> siteIds) {
|
return R.ok(chargingOrderService.getLargeScreenIncomeTrend(
|
normalizeSiteIds(siteIds), LocalDate.now().minusDays(6)));
|
}
|
|
@ApiOperation(tags = {"大屏-停车场充电功率曲线图"},value = "停车场充电功率曲线图")
|
@GetMapping("/getChargingPower")
|
public R<List<LargeChargingPowerVo>> getChargingPower(
|
@RequestParam(value = "siteIds", required = false) List<Integer> siteIds){
|
LocalDate today = LocalDate.now();
|
LocalDateTime startTime = today.minusDays(6).atStartOfDay();
|
LocalDateTime endTime = today.plusDays(1).atStartOfDay();
|
List<LargeChargingPowerVo> powerData = chargingOrderService.getLargeScreenChargingPower(
|
siteIds == null ? null : normalizeSiteIds(siteIds), startTime, endTime);
|
Map<String, LargeChargingPowerVo> powerByDate = powerData.stream()
|
.collect(Collectors.toMap(LargeChargingPowerVo::getTime, Function.identity(), (left, right) -> left));
|
ArrayList<LargeChargingPowerVo> 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<Integer> normalizeSiteIds(List<Integer> siteIds) {
|
return siteIds == null || siteIds.isEmpty() ? Collections.singletonList(-1) : siteIds;
|
}
|
|
}
|