New file |
| | |
| | | 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(); |
| | | } |
| | | } |