From 49f98d682437c5d91fa07a72bdc3cb45c0600f82 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 19 六月 2025 09:57:19 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TScreenContentController.java |  189 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 189 insertions(+), 0 deletions(-)

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..3e6d890
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TScreenContentController.java
@@ -0,0 +1,189 @@
+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.domain.TSystemConfiguration;
+import com.ruoyi.other.api.dto.NoticeQueryDto;
+import com.ruoyi.other.service.TNoticeService;
+import com.ruoyi.other.service.TScreenContentService;
+import com.ruoyi.other.service.TSystemConfigurationService;
+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.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Arrays;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+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;
+    @Resource
+    private TSystemConfigurationService systemConfigurationService;
+
+    /**
+     * 顶部-累计电量
+     */
+    @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() {
+        //需调用接口 获取光伏发电量
+        List<Integer> siteIds= Arrays.asList(25,26);
+        PhotovoltaicAndConsumptionVO vo = new PhotovoltaicAndConsumptionVO();
+        List<TScreenContent> list = screenContentService.list(new LambdaQueryWrapper<TScreenContent>().in(TScreenContent::getSiteId, siteIds));
+        if(list==null|| list.isEmpty()){
+            return AjaxResult.success(vo);
+        }
+        vo.setGreenElectricityToday(list.get(0).getGreenElectricityToday());
+        list.remove(0);
+        list.forEach(x->{
+            vo.setGreenElectricityToday(vo.getGreenElectricityToday().add(x.getGreenElectricityToday()));
+        });
+
+        TSystemConfiguration sysConfig = systemConfigurationService.getOne(new LambdaQueryWrapper<TSystemConfiguration>()
+                .eq(TSystemConfiguration::getType,4));
+        BigDecimal refreshValueOne = new BigDecimal(sysConfig.getContent());
+        vo.setTodayGenerateElectricity(refreshValueOne);
+        vo.setGreenElectricityToday(refreshValueOne.multiply(new BigDecimal("0.94")).setScale(2, RoundingMode.HALF_UP));
+
+
+        return AjaxResult.success(vo);
+    }
+
+
+    /**
+     * 累计减排数据
+     */
+    @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();
+        //今日放能   10:00-11:59 每1分钟随机增值0.5-1,放满90停止;用第一次放能值为基数(85)开始累加,17:00-21:59 每1分钟随机增值0.5-1,放满90停止。
+        vo.setTodayDischarge(energyRefreshService.getTodayDischarge());
+        //今日储能  00:00-次日7:59 每1分钟随机增长0.5-1,储满115停止,12:00-16:59 每1分钟随机增长0.5-1,增加到115减第一次放能剩余值(如放能值为85,则放能剩余值为90-85)结束;
+        vo.setTodayStorage(energyRefreshService.getTodayStorage());
+        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().getTime()<(x.getStatisticalDeadline().getTime())) {
+                tScreenContent.setStatisticalDeadline(x.getStatisticalDeadline());
+            }
+        });
+        return AjaxResult.success(tScreenContent);
+    }
+
+    @ApiOperation(tags = {"车位数据传输"},value = "充电桩数据大屏")
+    @PostMapping(value = "/carportData")
+    public AjaxResult<?> carportData(Integer parkingPlace,Integer remainPlace) {
+        screenContentService.carportData(parkingPlace,remainPlace);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation(tags = {"获取车位数据传输"},value = "充电桩数据大屏")
+    @GetMapping(value = "/getCarportData")
+    public AjaxResult<?> getCarportData() {
+        HashMap<String,Object> map = screenContentService.getCarportData();
+        return AjaxResult.success(map);
+    }
+
+
+    /**
+     * 数据回显 站点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();
+    }
+}

--
Gitblit v1.7.1