From a432ff3c95923f9929236de9f7a9224e8517bb70 Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期五, 23 五月 2025 20:55:43 +0800
Subject: [PATCH] 大屏
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 65 ++++
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TScreenContentMapper.java | 25 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 5
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 13
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/PhotovoltaicPowerGenerationVO.java | 15 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/StatisticsOfBatteryVO.java | 19 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TScreenContentService.java | 27 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java | 166 +++++++++++
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TScreenContent.java | 97 ++++++
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenStorageConfigVO.java | 28 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 8
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 6
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TScreenContentMapper.xml | 25 +
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java | 8
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 25 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java | 73 ++++
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 22 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/EmissionReductionVO.java | 27 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 1
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java | 7
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/EnergyStorageDischargeVO.java | 18 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/PhotovoltaicAndConsumptionVO.java | 18 +
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java | 6
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenTopVO.java | 24 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TScreenContentController.java | 142 +++++++++
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountByDate.java | 12
26 files changed, 882 insertions(+), 0 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
index 8bce10c..7da496b 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
@@ -12,6 +12,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -84,6 +85,11 @@
public R<TChargingGun> getChargingGunByFullNumber(String fullNumber) {
return R.fail("根据枪唯一码查询信息失败:" + throwable.getMessage());
}
+ @Override
+ public R<List<Integer>> getGunIdsBySiteIdsAndChargeModels(List<Integer> siteIds, List<Integer> chargeModels){
+ return R.fail("根据站点ids和充电模式集合查询充电枪集合失败:" + throwable.getMessage());
+ }
+
};
}
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
index 79ee4b4..fdb0b87 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
@@ -111,4 +111,10 @@
*/
@PostMapping("/t-charging-gun/getChargingGunByFullNumber")
R<TChargingGun> getChargingGunByFullNumber(@RequestParam("fullNumber") String fullNumber);
+
+ /**
+ * 大屏 根据站点ids和充电模式集合查询充电枪集合
+ */
+ @GetMapping("/t-charging-gun/getGunIdsBySiteIdsAndChargeModels")
+ R<List<Integer>> getGunIdsBySiteIdsAndChargeModels(@RequestParam("siteIds") List<Integer> siteIds ,@RequestParam("chargeModels") List<Integer> chargeModels);
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
index 6d50bbe..cd782a1 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -16,8 +16,11 @@
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -211,6 +214,10 @@
public R tripartitePlatformStopCharge(String startChargeSeq) {
return R.fail("三方平台请求停止充电失败:" + throwable.getMessage());
}
+ @Override
+ public R<BigDecimal> getSumDegreeBySiteIds(@RequestParam("siteIds") List<Integer> SiteIds){
+ return R.fail("获取站点集合中总的充电量失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
index fc03e1f..5570939 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -20,6 +20,7 @@
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -307,4 +308,11 @@
*/
@PostMapping("/t-charging-order/tripartitePlatformStopCharge")
R tripartitePlatformStopCharge(@RequestParam("startChargeSeq") String startChargeSeq);
+
+ /**
+ * 充电桩大屏 获取站点集合中总的充电量
+ */
+ @GetMapping("/t-charging-order/getSumDegreeBySiteIds")
+ R<BigDecimal> getSumDegreeBySiteIds(@RequestParam("siteIds") List<Integer> SiteIds);
+
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TScreenContent.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TScreenContent.java
new file mode 100644
index 0000000..debe154
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TScreenContent.java
@@ -0,0 +1,97 @@
+package com.ruoyi.other.api.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.web.domain.BasePojo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@Data
+@TableName("t_screen_content")
+@ApiModel("大屏设置对象")
+public class TScreenContent {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ @ApiModelProperty("主键ID")
+ private Integer id;
+
+ @TableField("site_id")
+ @ApiModelProperty("站点id")
+ private Integer siteId;
+
+ @TableField("green_electricity_today")
+ @ApiModelProperty("今日绿电消纳值")
+ private BigDecimal greenElectricityToday;
+
+ @TableField("car_discharge")
+ @ApiModelProperty("累计汽车放电量")
+ private BigDecimal carDischarge;
+
+ @TableField("green_electricity")
+ @ApiModelProperty("累计绿电消纳电量")
+ private BigDecimal greenElectricity;
+
+ @TableField("title")
+ @ApiModelProperty("标题")
+ private String title;
+
+ @TableField("title_one")
+ @ApiModelProperty("标题1")
+ private String titleOne;
+
+ @TableField("value_one")
+ @ApiModelProperty("值1")
+ private BigDecimal valueOne;
+
+ @TableField("unit_one")
+ @ApiModelProperty("计量单位1")
+ private String unitOne;
+
+ @TableField("title_two")
+ @ApiModelProperty("标题2")
+ private String titleTwo;
+
+ @TableField("value_two")
+ @ApiModelProperty("值2")
+ private BigDecimal valueTwo;
+
+ @TableField("unit_two")
+ @ApiModelProperty("计量单位2")
+ private String unitTwo;
+
+ @TableField("title_three")
+ @ApiModelProperty("标题3")
+ private String titleThree;
+
+ @TableField("value_three")
+ @ApiModelProperty("值3")
+ private BigDecimal valueThree;
+
+ @TableField("unit_three")
+ @ApiModelProperty("计量单位3")
+ private String unitThree;
+
+ @TableField("statistical_deadline")
+ @ApiModelProperty("截止统计日期")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private LocalDateTime statisticalDeadline;
+
+ @TableField("create_time")
+ @ApiModelProperty("创建时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @TableField("update_time")
+ @ApiModelProperty("更新时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index 4ac3c29..fb71dd3 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -42,6 +42,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
/**
* <p>
@@ -348,5 +349,17 @@
TChargingGun chargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0).eq(TChargingGun::getFullNumber, fullNumber));
return R.ok(chargingGun);
}
+
+ /**
+ * 大屏 根据站点ids和充电模式集合查询充电枪集合 没有过滤del_flag
+ */
+ @GetMapping("/getGunIdsBySiteIdsAndChargeModels")
+ public R<List<Integer>> getGunIdsBySiteIdsAndChargeModels(@RequestParam("siteIds") List<Integer> siteIds ,@RequestParam("chargeModels") List<Integer> chargeModels){
+ List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>()
+ .select(TChargingGun::getId).in(TChargingGun::getSiteId, siteIds)
+ .in(TChargingGun::getChargeMode, chargeModels));
+ return R.ok(list.stream().map(TChargingGun::getId).collect(Collectors.toList()));
+ }
+
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
index f50bbf3..6db46cb 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -26,6 +26,7 @@
import com.ruoyi.order.api.vo.TOrderInvoiceVO;
import com.ruoyi.order.export.*;
import com.ruoyi.order.service.*;
+import com.ruoyi.order.vo.StatisticsOfBatteryVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index 2838c76..90f2041 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1,5 +1,6 @@
package com.ruoyi.order.controller;
import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import java.math.BigDecimal;
@@ -58,6 +59,7 @@
import com.ruoyi.order.service.*;
import com.ruoyi.order.util.PreviousSixMonths;
import com.ruoyi.order.vo.EndOfChargePageInfo;
+import com.ruoyi.order.vo.StatisticsOfBatteryVO;
import com.ruoyi.order.vo.WatchChargingOrderVo;
import com.ruoyi.other.api.feignClient.RoleSiteClient;
import com.ruoyi.other.api.feignClient.UserSiteClient;
@@ -2359,4 +2361,24 @@
public R addChargingOrderSummaryData(){
return chargingOrderService.addChargingOrderSummaryData();
}
+
+ /**
+ * 充电桩数据大屏 新能源汽车电池安全检测次数统计
+ */
+ @ResponseBody
+ @GetMapping(value = "/getStatisticsOfBattery")
+ @ApiOperation(value = "新能源汽车电池安全检测次数统计", tags = {"充电桩数据大屏"})
+ public R<StatisticsOfBatteryVO> getStatisticsOfBattery(){
+
+ return chargingOrderService.getStatisticsOfBattery();
+ }
+
+ /**
+ * 充电桩数据大屏 获取站点集合中总的充电量
+ */
+ @GetMapping("/getSumDegreeBySiteIds")
+ public R<BigDecimal> getSumDegreeBySiteIds(@RequestParam("siteIds") List<Integer> SiteIds){
+ return R.ok(chargingOrderService.getSumDegreeBySiteIds(SiteIds));
+ }
+
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
index 397efcf..f4a307a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -11,6 +11,7 @@
import com.ruoyi.order.api.vo.ChargingOrderListVO;
import com.ruoyi.order.api.vo.ChargingOrderVO;
import com.ruoyi.order.dto.*;
+import com.ruoyi.order.vo.OrderCountByDate;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -142,4 +143,8 @@
Long countNoTag();
Long countCar(@Param("brands") List<String> brands);
+
+ List<OrderCountByDate> countOrdersByDate(@Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime,@Param("gunIds")List<Integer> gunIds);
+
+ BigDecimal getSumDegreeBySiteIds(@Param("siteIds") List<Integer> siteIds);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 3e72100..771d12c 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -15,6 +15,7 @@
import com.ruoyi.order.dto.*;
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
import com.ruoyi.order.vo.EndOfChargePageInfo;
+import com.ruoyi.order.vo.StatisticsOfBatteryVO;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@@ -322,4 +323,11 @@
R addChargingOrderSummaryData();
+
+ /**
+ * 大屏-新能源汽车电池安全检测次数统计
+ */
+ R<StatisticsOfBatteryVO> getStatisticsOfBattery();
+
+ BigDecimal getSumDegreeBySiteIds(List<Integer> siteIds);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index 896a517..4fd1554 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -17,6 +17,7 @@
import com.ruoyi.common.core.dto.ChargingOrderGroup;
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.domain.BasePojo;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
@@ -51,6 +52,8 @@
import com.ruoyi.order.service.TOrderEvaluateService;
import com.ruoyi.order.service.*;
import com.ruoyi.order.vo.EndOfChargePageInfo;
+import com.ruoyi.order.vo.OrderCountByDate;
+import com.ruoyi.order.vo.StatisticsOfBatteryVO;
import com.ruoyi.other.api.domain.*;
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
import com.ruoyi.other.api.domain.TVip;
@@ -4064,4 +4067,66 @@
}
return R.ok();
}
+
+ /**
+ * 大屏-新能源汽车电池安全检测次数统计
+ */
+ @Override
+ public R<StatisticsOfBatteryVO> getStatisticsOfBattery() {
+ StatisticsOfBatteryVO vo = new StatisticsOfBatteryVO();
+ //1.计算累计次数
+ //查询该俩站点的快充和超充的充电枪id集合 site_id 25 26 charge_model 1 2
+ R<List<Integer>> r = chargingGunClient.getGunIdsBySiteIdsAndChargeModels(Arrays.asList(25,26),Arrays.asList(1,2));
+ if (r.getCode()!=200){
+ return R.ok(vo);
+ }
+ List<Integer> gunIds=r.getData();
+ //统计
+ Long total= 0L;
+ if(gunIds!=null && !gunIds.isEmpty()) {
+ total = this.baseMapper.selectCount(new LambdaQueryWrapper<TChargingOrder>()
+ .eq(TChargingOrder::getDelFlag, 0)//未删除
+ .in(TChargingOrder::getStatus, Arrays.asList(3, 5))//充电中、已结束
+ .in(TChargingOrder::getChargingGunId, gunIds));//符合条件的充电枪
+ }
+ vo.setTotal(total.intValue());
+ //2.折线图
+ /* // 计算日期范围:前七天(不含今日)直接查找数据量太大,内存报错
+ LocalDate today = LocalDate.now();
+ LocalDateTime startDate = today.minusDays(7).atStartOfDay();
+ LocalDateTime endDate = today.minusDays(1).atTime(LocalTime.MAX);
+ // 查询数据库
+ List<OrderCountByDate> orderCounts = this.baseMapper.countOrdersByDate(startDate, endDate, gunIds);*/
+ // 转换结果
+ List<LocalDate> dates = new ArrayList<>();
+ List<Integer> counts = new ArrayList<>();
+ LocalDate today = LocalDate.now();
+ // 直接查找数据量太大,内存报错,分每天查找
+ for (int i = 7; i >= 1; i--) {//升序
+ LocalDate day = today.minusDays(i);
+ LocalDateTime startOfDay = day.atStartOfDay();
+ LocalDateTime endOfDay = day.atTime(LocalTime.MAX);
+ //统计
+ Long count=0L;
+ if(gunIds!=null && !gunIds.isEmpty()){
+ count = this.baseMapper.selectCount(new LambdaQueryWrapper<TChargingOrder>()
+ .eq(TChargingOrder::getDelFlag,0)//未删除
+ .in(TChargingOrder::getStatus,Arrays.asList(3,5))//充电中、已结束
+ .in(TChargingOrder::getChargingGunId,gunIds)//符合条件的充电枪 站点 超充快充
+ .between(BasePojo::getCreateTime,startOfDay,endOfDay));//每天
+ }
+ dates.add(day);
+ counts.add(count.intValue());
+ }
+ vo.setDates(dates);
+ vo.setCounts(counts);
+ return R.ok(vo);
+ }
+
+ @Override
+ public BigDecimal getSumDegreeBySiteIds(List<Integer> siteIds) {
+
+ return this.baseMapper.getSumDegreeBySiteIds(siteIds);
+
+ }
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountByDate.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountByDate.java
new file mode 100644
index 0000000..ac8d817
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountByDate.java
@@ -0,0 +1,12 @@
+package com.ruoyi.order.vo;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class OrderCountByDate {
+
+ private LocalDate date;
+ private Long count;
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/StatisticsOfBatteryVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/StatisticsOfBatteryVO.java
new file mode 100644
index 0000000..54f6719
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/StatisticsOfBatteryVO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class StatisticsOfBatteryVO {
+ @ApiModelProperty("累计检测")
+ private Integer total;
+ @ApiModelProperty("日期")
+ private List<LocalDate> dates;
+ @ApiModelProperty("次数")
+ private List<Integer> counts;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index c8284c3..1ab40bb 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -1748,4 +1748,29 @@
and t1.del_flag = 0
)
</select>
+ <select id="countOrdersByDate" resultType="com.ruoyi.order.vo.OrderCountByDate">
+ SELECT DATE_FORMAT(create_time, '%m/%d') AS `date`, COUNT(*) AS `count`
+ FROM t_charging_order
+ WHERE
+ del_flag = 0
+ and
+ status in (3,5)
+
+ and charging_gun_id in
+ <foreach item="item" index="index" collection="gunIds" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ and create_time BETWEEN #{startTime} AND #{endTime}
+ GROUP BY DATE(create_time, '%m/%d')
+ ORDER BY DATE(create_time, '%m/%d') ASC
+ </select>
+
+ <select id="getSumDegreeBySiteIds" resultType="java.math.BigDecimal">
+ select sum(charging_capacity) from t_charging_order where del_flag=0
+ and site_id in
+ <foreach item="item" index="index" collection="siteIds" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+
+ </select>
</mapper>
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TScreenContentController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TScreenContentController.java
new file mode 100644
index 0000000..bd3274f
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TScreenContentController.java
@@ -0,0 +1,142 @@
+package com.ruoyi.other.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.other.api.domain.TNotice;
+import com.ruoyi.other.api.domain.TScreenContent;
+import com.ruoyi.other.api.dto.NoticeQueryDto;
+import com.ruoyi.other.service.TNoticeService;
+import com.ruoyi.other.service.TScreenContentService;
+import com.ruoyi.other.util.EnergyRefreshService;
+import com.ruoyi.other.vo.*;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author huliguo
+ * @since 2025/5/23
+ */
+@RestController
+@RequestMapping("/t_screen_content")
+public class TScreenContentController {
+
+ @Resource
+ private TScreenContentService screenContentService;
+ @Resource
+ private EnergyRefreshService energyRefreshService;
+
+ /**
+ * 顶部-累计电量
+ */
+ @ApiOperation(tags = {"顶部-累计电量"},value = "充电桩数据大屏")
+ @GetMapping(value = "/top")
+ public AjaxResult<ScreenTopVO> top(@RequestParam("siteIds") List<Integer> siteIds) {
+ return AjaxResult.success(screenContentService.top(siteIds));
+ }
+
+ /**
+ * 光伏发电和消纳 这里的绿电是调后台大屏内容管理的
+ */
+ @ApiOperation(tags = {"光伏发电和消纳"},value = "充电桩数据大屏")
+ @GetMapping(value = "/photovoltaicAndConsumption")
+ public AjaxResult<PhotovoltaicAndConsumptionVO> photovoltaicAndConsumption() {
+ //需调用接口 获取光伏发电量
+
+ return AjaxResult.success(new PhotovoltaicAndConsumptionVO());
+ }
+
+
+ /**
+ * 累计减排数据
+ */
+ @ApiOperation(tags = {"减排数据"},value = "充电桩数据大屏")
+ @GetMapping(value = "/emissionReduction")
+ public AjaxResult<EmissionReductionVO> emissionReduction (@RequestParam("siteIds") List<Integer> siteIds) {
+ return AjaxResult.success( screenContentService.emissionReduction(siteIds));
+ }
+ /**
+ * 光伏发电实时情况
+ */
+ @ApiOperation(tags = {"光伏发电实时情况"},value = "充电桩数据大屏")
+ @GetMapping(value = "/photovoltaicPowerGeneration")
+ public AjaxResult<PhotovoltaicPowerGenerationVO> photovoltaicPowerGeneration (@RequestParam("siteIds") List<Integer> siteIds) {
+ return AjaxResult.success( screenContentService.photovoltaicPowerGeneration(siteIds));
+ }
+
+ /**
+ * 储能放电情况
+ */
+ @ApiOperation(tags = {"储能放电情况"},value = "充电桩数据大屏")
+ @GetMapping(value = "/energyStorageDischarge")
+ public AjaxResult<EnergyStorageDischargeVO> energyStorageDischarge() {
+ //需调用接口 获取光伏发电量
+ EnergyStorageDischargeVO vo = new EnergyStorageDischargeVO();
+ vo.setTodayDischarge(energyRefreshService.getCurrentValue());
+ return AjaxResult.success(vo);
+ }
+
+
+
+ /**
+ * 停车场共享情况及相关数据
+ */
+ @ApiOperation(tags = {"停车场共享情况及相关数据"},value = "充电桩数据大屏")
+ @GetMapping(value = "/screen")
+ public AjaxResult<TScreenContent> screen(@RequestParam("siteIds") List<Integer> siteIds) {
+ List<TScreenContent> list = screenContentService.list(new LambdaQueryWrapper<TScreenContent>().in(TScreenContent::getSiteId, siteIds));
+ TScreenContent tScreenContent = new TScreenContent();
+ if(list==null|| list.isEmpty()){
+ return AjaxResult.success(tScreenContent);
+ }
+ BeanUtils.copyProperties( list.get(0),tScreenContent);
+ list.remove(0);
+ list.forEach(x->{
+ tScreenContent.setCarDischarge(tScreenContent.getCarDischarge().add(x.getCarDischarge()));
+ tScreenContent.setGreenElectricity(tScreenContent.getGreenElectricity().add(x.getGreenElectricity()));
+ tScreenContent.setGreenElectricityToday(tScreenContent.getGreenElectricityToday().add(x.getGreenElectricityToday()));
+ tScreenContent.setValueOne(tScreenContent.getValueOne().add(x.getValueOne()));
+ tScreenContent.setValueTwo(tScreenContent.getValueTwo().add(x.getValueTwo()));
+ tScreenContent.setValueThree(tScreenContent.getValueThree().add(x.getValueThree()));
+ if(tScreenContent.getStatisticalDeadline().isBefore(x.getStatisticalDeadline())) tScreenContent.setStatisticalDeadline(x.getStatisticalDeadline());
+ });
+ return AjaxResult.success(tScreenContent);
+ }
+
+ /**
+ * 数据回显 站点id
+ */
+ //todo 鉴权
+ @RequiresPermissions(value = {"/publicAnnouncementManagement"}, logical = Logical.OR)
+ @ApiOperation(tags = {"后台-大屏内容设置-基础信息"},value = "查询")
+ @GetMapping(value = "/{siteId}")
+ public AjaxResult<TScreenContent> detail(@PathVariable("siteId") Integer siteId) {
+ TScreenContent one = screenContentService.getOne(new LambdaQueryWrapper<TScreenContent>().eq(TScreenContent::getSiteId, siteId));
+ return AjaxResult.success(one);
+ }
+
+ /**
+ * 新增修改
+ */
+ //todo 鉴权
+ @RequiresPermissions(value = {"",""}, logical = Logical.OR)
+ @ApiOperation(tags = {"后台-大屏内容设置-基础信息"},value = "新增修改")
+ @PostMapping(value = "/saveOrUpdate")
+ @Log(title = "【大屏管理】新增修改内容", businessType = BusinessType.INSERT)
+ public AjaxResult saveOrUpdate(@RequestBody TScreenContent screenContent) {
+ screenContentService.saveOrUpdate(screenContent);
+ return AjaxResult.success();
+ }
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TScreenContentMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TScreenContentMapper.java
new file mode 100644
index 0000000..18fb859
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TScreenContentMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.other.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.other.api.domain.TNotice;
+import com.ruoyi.other.api.domain.TScreenContent;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author huliguo
+ * @since 2025/5/23
+ */
+@Mapper
+public interface TScreenContentMapper extends BaseMapper<TScreenContent> {
+
+ BigDecimal getCarDisCharge(List<Integer> siteIds);
+
+ BigDecimal getGreenElectricity(List<Integer> siteIds);
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TScreenContentService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TScreenContentService.java
new file mode 100644
index 0000000..c1ce779
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TScreenContentService.java
@@ -0,0 +1,27 @@
+package com.ruoyi.other.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.other.api.domain.TNotice;
+import com.ruoyi.other.api.domain.TScreenContent;
+import com.ruoyi.other.vo.EmissionReductionVO;
+import com.ruoyi.other.vo.PhotovoltaicPowerGenerationVO;
+import com.ruoyi.other.vo.ScreenTopVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author huliguo
+ * @since 2025/5/23
+ */
+public interface TScreenContentService extends IService<TScreenContent> {
+
+ EmissionReductionVO emissionReduction(List<Integer> siteIds);
+
+ PhotovoltaicPowerGenerationVO photovoltaicPowerGeneration(List<Integer> siteIds);
+
+ ScreenTopVO top(List<Integer> siteIds);
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
new file mode 100644
index 0000000..52dc72a
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
@@ -0,0 +1,166 @@
+package com.ruoyi.other.service.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.BasePojo;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.other.api.domain.TScreenContent;
+import com.ruoyi.other.api.domain.TSystemConfiguration;
+import com.ruoyi.other.mapper.TScreenContentMapper;
+import com.ruoyi.other.mapper.TSystemConfigurationMapper;
+import com.ruoyi.other.service.TScreenContentService;
+import com.ruoyi.other.service.TSystemConfigurationService;
+import com.ruoyi.other.vo.EmissionReductionVO;
+import com.ruoyi.other.vo.PhotovoltaicPowerGenerationVO;
+import com.ruoyi.other.vo.ScreenStorageConfigVO;
+import com.ruoyi.other.vo.ScreenTopVO;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.json.Json;
+import javax.json.JsonObject;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author huliguo
+ * @since 2025/5/23
+ */
+@Service
+public class TScreenContentServiceImpl extends ServiceImpl<TScreenContentMapper, TScreenContent> implements TScreenContentService {
+
+ @Resource
+ private ChargingOrderClient chargingOrderClient;
+ @Resource
+ private TSystemConfigurationMapper systemConfigurationMapper;
+
+ @Override
+ public EmissionReductionVO emissionReduction(List<Integer> siteIds) {
+ //需调用接口 计算光伏减排
+ EmissionReductionVO vo = new EmissionReductionVO();
+ //获取总电量 计算电量
+ BigDecimal charge=new BigDecimal("0.00");
+ if (siteIds!=null && !siteIds.isEmpty()){
+ R<BigDecimal> r = chargingOrderClient.getSumDegreeBySiteIds(siteIds);
+ if (r.getCode()==200){
+ charge=r.getData();
+ }
+ }
+ //计算电量占比率
+ if (charge.compareTo(BigDecimal.ZERO) != 0) {
+ // 定义乘数和除数
+ BigDecimal multiplier = new BigDecimal("0.1404"); // 0.1404
+ BigDecimal divisor = new BigDecimal("1000"); // 1000
+ // 计算:charge × 0.1404 ÷ 1000
+ charge = charge
+ .multiply(multiplier) // 乘以 0.1404
+ .divide(divisor, 2, RoundingMode.HALF_UP); // 除以 1000,保留6位小数,四舍五入
+ }
+ vo.setCharge(charge);
+ return vo;
+ }
+
+ @Override
+ public PhotovoltaicPowerGenerationVO photovoltaicPowerGeneration(List<Integer> siteIds) {
+ //需调用接口
+
+ //假数据
+ PhotovoltaicPowerGenerationVO vo = new PhotovoltaicPowerGenerationVO();
+ List<LocalDate> dates = new ArrayList<>();
+ List<Integer> values = new ArrayList<>();
+ LocalDate today = LocalDate.now();
+ // 生成每天数据
+ for (int i = 7; i >= 1; i--) {//升序
+ LocalDate day = today.minusDays(i);
+ //统计
+ dates.add(day);
+ int value = new Random().nextInt(151) + 100; // 100-250
+ values.add(value);
+ }
+ vo.setDates(dates);
+ vo.setValues(values);
+ return vo;
+ }
+
+ @Override
+ public ScreenTopVO top(List<Integer> siteIds) {
+ ScreenTopVO vo = new ScreenTopVO();
+
+ BigDecimal charge=new BigDecimal("0.00");
+ BigDecimal carCharge=new BigDecimal("0.00");
+ BigDecimal greenElectricity=new BigDecimal("0.00");
+ if (siteIds!=null && !siteIds.isEmpty()){
+ //获取充电量
+ R<BigDecimal> r = chargingOrderClient.getSumDegreeBySiteIds(siteIds);
+ if (r.getCode()==200){
+ charge=r.getData();
+ }
+ //汽车放电量
+ carCharge = this.baseMapper.getCarDisCharge(siteIds);
+
+ //累计绿电消纳电量
+ greenElectricity = this.baseMapper.getGreenElectricity(siteIds);
+ }
+ vo.setCarCharge(charge);
+ vo.setCarDisCharge(carCharge);
+ vo.setGreenElectricity(greenElectricity);
+
+ //获取系统建设日期和累计储能放电量
+ TSystemConfiguration sysConfig = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>()
+ .eq(TSystemConfiguration::getType,3));
+ //解析
+ ScreenStorageConfigVO configVO = JSON.parseObject(sysConfig.getContent(), ScreenStorageConfigVO.class);
+ //计算储能充电量
+ LocalDate systemCreateTime = configVO.getSystemCreateTime();
+ LocalDate today = LocalDate.now();
+ int days = (int) ChronoUnit.DAYS.between(systemCreateTime, today) +1;//包括今天
+
+ BigDecimal dailyRate = new BigDecimal("100");
+ BigDecimal totalCharge = dailyRate.multiply(BigDecimal.valueOf(days))
+ .divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP);
+ vo.setStorageCharge(totalCharge);
+ //获取储能放电量
+
+ // 判断是否等于今天
+ if (configVO.getLastUpdated().equals(today)) {
+ vo.setStorageDisCharge(configVO.getStorageDisCharge());
+ return vo;
+ }
+ //判断离今天还有几天
+ int count = (int) ChronoUnit.DAYS.between(configVO.getLastUpdated(), today) +1;//包括今天
+ BigDecimal storageDisCharge = configVO.getStorageDisCharge();
+ // 每天生成一个随机值(不超过100)并累加
+ for (int i = 0; i < count; i++) {
+ int dailyCharge = ThreadLocalRandom.current().nextInt(0, 101); // 0-100的随机数
+ storageDisCharge = storageDisCharge.add(new BigDecimal(dailyCharge));
+ }
+
+ // 更新回对象
+ configVO.setStorageDisCharge(storageDisCharge);
+ configVO.setLastUpdated(today);
+ String json = JSON.toJSONString(configVO);
+ sysConfig.setContent(json);
+
+ systemConfigurationMapper.updateById(sysConfig);
+ vo.setStorageDisCharge(storageDisCharge);
+ return vo;
+ }
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java
new file mode 100644
index 0000000..9a90ec5
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java
@@ -0,0 +1,73 @@
+package com.ruoyi.other.util;
+
+import lombok.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalTime;
+import java.util.Random;
+
+@Service
+public class EnergyRefreshService {
+ private final Random random = new Random();
+ private BigDecimal currentValue;
+
+
+ private final BigDecimal targetLow = new BigDecimal("85");
+
+ private final BigDecimal targetHigh = new BigDecimal("87");
+
+
+ private final int maxIncrement = 10;
+
+ private boolean isRunning = true; // 控制任务是否继续执行
+
+ public EnergyRefreshService() {
+ this.currentValue = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+ }
+
+ // 定时任务方法
+ @Scheduled(cron = "${0 */15 * * * ?}")//15分钟执行一次
+ public synchronized void refreshValue() {
+ // 检查是否已停止或达到目标范围
+ if (!isRunning || isWithinTargetRange(currentValue)) {
+ isRunning = false;
+ return;
+ }
+
+ // 检查当前时间是否在允许的时间段内
+ LocalTime now = LocalTime.now();
+ boolean isInMorning = now.isAfter(LocalTime.of(10, 0)) && now.isBefore(LocalTime.of(12, 0));
+ boolean isInAfternoon = now.isAfter(LocalTime.of(15, 0)) && now.isBefore(LocalTime.of(21, 0));
+
+ if (!isInMorning && !isInAfternoon) {
+ return;
+ }
+
+ // 生成随机增量并更新值
+ int increment = random.nextInt(maxIncrement + 1);
+ currentValue = currentValue.add(BigDecimal.valueOf(increment))
+ .setScale(2, RoundingMode.HALF_UP);
+
+ System.out.printf("定时刷新:当前时间 %s,当前值:%.2f%n", now, currentValue);
+ }
+
+ private boolean isWithinTargetRange(BigDecimal value) {
+ return value.compareTo(targetLow) >= 0 && value.compareTo(targetHigh) <= 0;
+ }
+
+ // 提供获取当前值的方法
+ public BigDecimal getCurrentValue() {
+ return currentValue;
+ }
+
+ // 重置任务
+ public void reset() {
+ this.currentValue = BigDecimal.ZERO;
+ this.isRunning = true;
+ }
+
+
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/EmissionReductionVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/EmissionReductionVO.java
new file mode 100644
index 0000000..adb7c77
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/EmissionReductionVO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.other.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class EmissionReductionVO {
+ @ApiModelProperty("累计光伏发电二氧化碳减排量(吨)")
+ private BigDecimal photovoltaic = new BigDecimal("63.00");
+ @ApiModelProperty("累计光伏发电二氧化碳减排量(占比率)")
+ private BigDecimal photovoltaicRate = new BigDecimal("48.8");
+
+ @ApiModelProperty("累计储能二氧化碳减排量(吨)")
+ private BigDecimal energyStorage = new BigDecimal("20.00");
+ @ApiModelProperty("累计储能二氧化碳减排量(占比率)")
+ private BigDecimal energyStorageRate = new BigDecimal("48.8");
+
+ @ApiModelProperty("累计充电二氧化碳减排量(吨)")
+ private BigDecimal charge;
+ @ApiModelProperty("累计充电二氧化碳减排量(占比率)")
+ private BigDecimal chargeRate = new BigDecimal("4.8");
+
+ @ApiModelProperty("总计二氧化碳减排量(吨)")
+ private BigDecimal total = new BigDecimal("48000");
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/EnergyStorageDischargeVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/EnergyStorageDischargeVO.java
new file mode 100644
index 0000000..d8086c5
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/EnergyStorageDischargeVO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.other.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class EnergyStorageDischargeVO {
+ @ApiModelProperty("储能配置")
+ private Integer config=100;
+ @ApiModelProperty("今日储能")
+ private Integer todayStorage=100;
+ @ApiModelProperty("今日放能")
+ private BigDecimal todayDischarge;
+
+
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/PhotovoltaicAndConsumptionVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/PhotovoltaicAndConsumptionVO.java
new file mode 100644
index 0000000..cb2148a
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/PhotovoltaicAndConsumptionVO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.other.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class PhotovoltaicAndConsumptionVO {
+ @ApiModelProperty("光伏面积")
+ private Integer area = 3593;
+ @ApiModelProperty("装机容量")
+ private BigDecimal capacity = new BigDecimal("759.52");
+ @ApiModelProperty("今日已发电")
+ private BigDecimal todayGenerateElectricity=new BigDecimal("71.29");
+
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/PhotovoltaicPowerGenerationVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/PhotovoltaicPowerGenerationVO.java
new file mode 100644
index 0000000..578eac3
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/PhotovoltaicPowerGenerationVO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.other.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+public class PhotovoltaicPowerGenerationVO {
+ @ApiModelProperty("日期")
+ private List<LocalDate> dates;
+ @ApiModelProperty("数据")
+ private List<Integer> values;
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenStorageConfigVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenStorageConfigVO.java
new file mode 100644
index 0000000..efee467
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenStorageConfigVO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.other.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class ScreenStorageConfigVO {
+ /**
+ * 系统建设日期
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private LocalDate systemCreateTime;
+
+ /**
+ * 储能放电量 随机增长,每日不超过100度
+ */
+ private BigDecimal storageDisCharge;
+
+ /**
+ * 最后一次更改时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private LocalDate lastUpdated;
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenTopVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenTopVO.java
new file mode 100644
index 0000000..fd9d887
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenTopVO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.other.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ScreenTopVO {
+ @ApiModelProperty("汽车充电量")
+ private BigDecimal carCharge;
+ @ApiModelProperty("汽车放电量")
+ private BigDecimal carDisCharge;
+ @ApiModelProperty("光伏发电量")
+ private BigDecimal photovoltaic=new BigDecimal("0.00");
+ @ApiModelProperty("光伏用电量")
+ private BigDecimal greenElectricity;
+ @ApiModelProperty("储能充电量")
+ private BigDecimal storageCharge;
+ @ApiModelProperty("储能放电量")
+ private BigDecimal storageDisCharge;
+
+
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TScreenContentMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TScreenContentMapper.xml
new file mode 100644
index 0000000..fed5aea
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TScreenContentMapper.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.other.mapper.TScreenContentMapper">
+
+ <select id="getCarDisCharge" resultType="java.math.BigDecimal">
+ select
+ sum(car_discharge)
+ FROM t_screen_content
+ WHERE
+ site_id in
+ <foreach item="item" index="index" collection="siteIds" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ </select>
+ <select id="getGreenElectricity" resultType="java.math.BigDecimal">
+ select
+ sum(green_electricity)
+ FROM t_screen_content
+ WHERE
+ site_id in
+ <foreach item="item" index="index" collection="siteIds" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ </select>
+</mapper>
--
Gitblit v1.7.1