ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
@@ -3,15 +3,15 @@ import com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TFaultMessage; import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; import java.util.List; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -111,4 +111,6 @@ */ @PostMapping("/t-charging-gun/getChargingGunByFullNumber") R<TChargingGun> getChargingGunByFullNumber(@RequestParam("fullNumber") String fullNumber); } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/LargeScreenGunVo.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.chargingPile.api.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "大屏对外开放区车位使用情况Vo") public class LargeScreenGunVo { @ApiModelProperty(value = "超级快充") private Integer superFast=0; @ApiModelProperty(value = "快充") private Integer fast=0; @ApiModelProperty(value = "快充") private Integer v2g=0; @ApiModelProperty(value = "超级快充 使用") private Integer useSuperFast=0; @ApiModelProperty(value = "快充") private Integer useFast=0; @ApiModelProperty(value = "快充") private Integer useV2g=0; } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -9,10 +9,7 @@ import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.query.TChargingGunQuery; import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.chargingPile.api.vo.GunStatusStatisticsVO; import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.chargingPile.api.vo.TChargingGunVO; import com.ruoyi.chargingPile.api.vo.*; import com.ruoyi.chargingPile.config.FileUploadConfig; import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TChargingGunService; @@ -42,6 +39,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * <p> @@ -348,5 +346,42 @@ TChargingGun chargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0).eq(TChargingGun::getFullNumber, fullNumber)); return R.ok(chargingGun); } /** * 根据枪唯一码查询信息 * @return */ @ApiOperation(tags = {"大屏-对外开放区车位使用情况"},value = "对外开放区车位使用情况") @GetMapping("/getLargeScreenGun") public R<LargeScreenGunVo> getLargeScreenGun(){ LargeScreenGunVo largeScreenGunVo = new LargeScreenGunVo(); List<TChargingGun> tChargingGuns = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0).in(TChargingGun::getSiteId,25,26).in(TChargingGun::getChargeMode, 1,2,4)); if(tChargingGuns.isEmpty()){ return R.ok(largeScreenGunVo); } List<TChargingGun> supperFast = tChargingGuns.stream().filter(e -> e.getChargeMode() == 1).collect(Collectors.toList()); largeScreenGunVo.setSuperFast(supperFast.size()); int supperFastSize = supperFast.stream().filter(e -> e.getStatus() != 2).collect(Collectors.toList()).size(); largeScreenGunVo.setUseSuperFast(supperFastSize); List<TChargingGun> fast = tChargingGuns.stream().filter(e -> e.getChargeMode() == 2).collect(Collectors.toList()); largeScreenGunVo.setFast(fast.size()); int fastSize = fast.stream().filter(e -> e.getStatus() != 2).collect(Collectors.toList()).size(); largeScreenGunVo.setUseFast(fastSize); List<TChargingGun> v2g = tChargingGuns.stream().filter(e -> e.getChargeMode() == 4).collect(Collectors.toList()); largeScreenGunVo.setV2g(v2g.size()); int v2gSize = v2g.stream().filter(e -> e.getStatus() != 2).collect(Collectors.toList()).size(); largeScreenGunVo.setUseV2g(v2gSize); return R.ok(largeScreenGunVo); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/controller/LargeScreenController.java
New file @@ -0,0 +1,67 @@ package com.ruoyi.jianguan.controller; import cn.hutool.core.date.DateUtil; import com.ruoyi.chargingPile.api.vo.LargeScreenGunVo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.jianguan.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.jianguan.vo.LargeChargingPowerVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.SneakyThrows; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Api(tags = "大屏") @RestController @RequestMapping("/large-screen") public class LargeScreenController { private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; public LargeScreenController(UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService) { this.uploadRealTimeMonitoringDataService = uploadRealTimeMonitoringDataService; } @SneakyThrows @ApiOperation(tags = {"大屏-停车场充电功率曲线图"},value = "停车场充电功率曲线图") @GetMapping("/getChargingPower") public R<List<LargeChargingPowerVo>> getChargingPower(){ String sevenDayAgo = LocalDate.now().minusDays(7) + " 00:00:00"; String oneDayAgo = LocalDate.now().minusDays(1) + " 23:59:59"; Date oneDayAgoTime = format.parse(oneDayAgo); Date sevenDayAgoTime = format.parse(sevenDayAgo); ArrayList<LargeChargingPowerVo> largeChargingPowerVos = new ArrayList<>(); List<UploadRealTimeMonitoringData> rangeTimeData = uploadRealTimeMonitoringDataService.getRangeTimeData(oneDayAgoTime, sevenDayAgoTime); for (int count = 7; count > 0; count--) { LargeChargingPowerVo largeChargingPowerVo = new LargeChargingPowerVo(); String time = LocalDate.now().minusDays(count).toString(); List<UploadRealTimeMonitoringData> list = rangeTimeData.stream().filter(e -> e.getCreateTime().contains(time)).collect(Collectors.toList()); if(!list.isEmpty()){ BigDecimal powerAverage = list.stream().map(UploadRealTimeMonitoringData::getPower).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(list.size()), 0, RoundingMode.HALF_UP); largeChargingPowerVo.setPower(powerAverage); } largeChargingPowerVo.setTime(time); largeChargingPowerVos.add(largeChargingPowerVo); } return R.ok(largeChargingPowerVos); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/vo/LargeChargingPowerVo.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.jianguan.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel("大屏 停车场充电功率曲线Vo") public class LargeChargingPowerVo { @ApiModelProperty("时间") private String time; @ApiModelProperty("平均功率") private BigDecimal power=BigDecimal.ONE; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -3,14 +3,11 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.model.Site; @@ -20,37 +17,27 @@ import com.ruoyi.common.core.utils.WebUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.dto.SettlementConfirmAdd; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.SettlementListQuery; import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.ChargingOrderListVO; import com.ruoyi.order.api.vo.SettlementTotalVO; import com.ruoyi.order.api.vo.TOrderInvoiceVO; import com.ruoyi.order.export.OrderInvoiceExport; import com.ruoyi.order.export.TChargingOrderExport; import com.ruoyi.order.vo.ChargingOrderListInfoVO; import com.ruoyi.order.api.vo.ChargingOrderTimeVO; import com.ruoyi.order.service.*; import com.ruoyi.order.api.vo.SettlementTotalVO; import com.ruoyi.order.export.TChargingOrderExport; import com.ruoyi.order.service.AccountingStrategyOrderService; import com.ruoyi.order.service.TChargingOrderAccountingStrategyService; import com.ruoyi.order.service.TChargingOrderService; import com.ruoyi.order.service.TSettlementConfirmService; import com.ruoyi.order.vo.ChargingOrderListInfoVO; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.poi.ss.usermodel.Workbook; import org.omg.CORBA.PRIVATE_MEMBER; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -60,12 +47,10 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;