20250808优化-充放电逻辑修改

This commit is contained in:
2025-08-28 14:15:19 +08:00
parent 1a1558f8cd
commit 26bbe6deee
10 changed files with 199 additions and 57 deletions

View File

@ -170,4 +170,9 @@ public class Constants
*/ */
public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
"org.springframework", "org.apache", "com.xzzn.common.utils.file", "com.xzzn.common.config", "com.xzzn.generator" }; "org.springframework", "org.apache", "com.xzzn.common.utils.file", "com.xzzn.common.config", "com.xzzn.generator" };
/**
* 昨日充放电最晚数据有效期
*/
public static final Integer DATE_VALID_TIME = 1;
} }

View File

@ -8,6 +8,7 @@ import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
@ -29,6 +30,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
public static String YYYYMMDD = "yyyyMMdd";
private static String[] parsePatterns = { private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
@ -206,4 +209,39 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault()); ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
return Date.from(zonedDateTime.toInstant()); return Date.from(zonedDateTime.toInstant());
} }
/**
* 获取昨天的日期格式为yyyy-MM-dd
* @return 昨天的日期字符串
*/
public static String getYesterdayDate() {
// 获取今天的日期
LocalDate today = LocalDate.now();
// 减去一天得到昨天
LocalDate yesterday = today.minusDays(1);
// 定义日期格式化器
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(YYYYMMDD);
// 格式化并返回
return yesterday.format(formatter);
}
/**
* 校验传入日期是否今天
* @param dataDate
* @return
*/
public static boolean checkIsToday(String dataDate) {
boolean flag = false;
Calendar calendar = Calendar.getInstance();
int todayMonth = calendar.get(Calendar.MONTH) + 1;
int todayDay = calendar.get(Calendar.DAY_OF_MONTH);
if (StringUtils.isNotEmpty(dataDate)){
String[] pcsDateArray = dataDate.split("-");
if (todayMonth == Integer.parseInt(pcsDateArray[1]) &&
todayDay == Integer.parseInt(pcsDateArray[2])) {
flag = true;
}
}
return flag;
}
} }

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.xzzn.ems.domain.EmsAmmeterData; import com.xzzn.ems.domain.EmsAmmeterData;
import com.xzzn.ems.domain.vo.AmmeterStatisListVo; import com.xzzn.ems.domain.vo.AmmeterStatisListVo;
import com.xzzn.ems.domain.vo.StatisAmmeterDateRequest; import com.xzzn.ems.domain.vo.StatisAmmeterDateRequest;
import org.apache.ibatis.annotations.Param;
/** /**
* 总数据Mapper接口 * 总数据Mapper接口
@ -67,4 +68,7 @@ public interface EmsAmmeterDataMapper
* @return * @return
*/ */
public List<AmmeterStatisListVo> getLoadDataByHour(StatisAmmeterDateRequest requestVo); public List<AmmeterStatisListVo> getLoadDataByHour(StatisAmmeterDateRequest requestVo);
// 获取昨天最晚数据
public EmsAmmeterData getYestLatestDate(@Param("siteId")String siteId, @Param("deviceId")String deviceId, @Param("yestData")String yestData);
} }

View File

@ -6,6 +6,7 @@ import com.alibaba.fastjson2.TypeReference;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.xzzn.common.constant.Constants;
import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.constant.RedisKeyConstants;
import com.xzzn.common.core.redis.RedisCache; import com.xzzn.common.core.redis.RedisCache;
import com.xzzn.common.enums.*; import com.xzzn.common.enums.*;
@ -27,6 +28,7 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -70,6 +72,8 @@ public class DDSDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
private EmsBatteryGroupMapper emsBatteryGroupMapper; private EmsBatteryGroupMapper emsBatteryGroupMapper;
@Autowired @Autowired
private EmsBatteryDataMinutesMapper emsBatteryDataMinutesMapper; private EmsBatteryDataMinutesMapper emsBatteryDataMinutesMapper;
@Autowired
private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
public DDSDataProcessServiceImpl(ObjectMapper objectMapper) { public DDSDataProcessServiceImpl(ObjectMapper objectMapper) {
super(objectMapper); super(objectMapper);
@ -894,7 +898,57 @@ public class DDSDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
emsAmmeterDataMapper.insertEmsAmmeterData(dataMete); emsAmmeterDataMapper.insertEmsAmmeterData(dataMete);
redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataMete); redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataMete);
// 处理每日充放电数据
dealDDSDailyChargeDate(obj,deviceId);
} }
private void dealDDSDailyChargeDate(Map<String, Object> obj, String deviceId) {
log.info("start dealDDSDailyChargeDate");
// 初始化今日充放电
BigDecimal dailyDisChargeDate = new BigDecimal(0);
BigDecimal dailyChargeDate = new BigDecimal(0);
BigDecimal nowTotalDisChargeDate = StringUtils.getBigDecimal(obj.get("DQZXZYGDN"));
BigDecimal nowTotalChargeDate = StringUtils.getBigDecimal(obj.get("DQFXZYGDN"));
// 初始化当日数据
EmsDailyChargeData emsDailyChargeData = new EmsDailyChargeData();
emsDailyChargeData.setSiteId(SITE_ID);
emsDailyChargeData.setDeviceId(deviceId);
emsDailyChargeData.setDateTime(DateUtils.getNowDate());
emsDailyChargeData.setTotalChargeData(nowTotalChargeDate);
emsDailyChargeData.setTotalDischargeData(nowTotalDisChargeDate);
emsDailyChargeData.setCreateBy("system");
emsDailyChargeData.setCreateTime(DateUtils.getNowDate());
emsDailyChargeData.setUpdateBy("system");
emsDailyChargeData.setUpdateTime(DateUtils.getNowDate());
// 获取redis存放昨日最晚数据
String yestData = DateUtils.getYesterdayDate();
String yestDateRedisKey = RedisKeyConstants.AMMETER + SITE_ID + "_" + deviceId + "_" + yestData;
EmsAmmeterData yestDate = redisCache.getCacheObject(yestDateRedisKey);
if (yestDate == null) {
// redis没有这查电表总数据表
yestDate = emsAmmeterDataMapper.getYestLatestDate(SITE_ID,deviceId,yestData);
}
if (yestDate != null) {
// 今日总数据-昨日总数据=今日充放电
BigDecimal yestTotalDisChargeDate = yestDate.getCurrentForwardActiveTotal();
BigDecimal yestTotalChargeDate = yestDate.getCurrentReverseActiveTotal();
dailyChargeDate = nowTotalChargeDate.subtract(yestTotalChargeDate);
dailyDisChargeDate = nowTotalDisChargeDate.subtract(yestTotalDisChargeDate);
emsDailyChargeData.setChargeData(dailyChargeDate);
emsDailyChargeData.setDischargeData(dailyDisChargeDate);
// 最新数据存redis
redisCache.setCacheObject(yestDateRedisKey, yestDate , Constants.DATE_VALID_TIME, TimeUnit.DAYS);
}
// 插入或更新每日充放电数据表
emsDailyChargeDataMapper.insertOrUpdateData(emsDailyChargeData);
log.info("end dealDDSDailyChargeDate");
}
// 数据分组处理 // 数据分组处理
private static Map<String, Map<String, Object>> processData(Map<String, Object> rawData) { private static Map<String, Map<String, Object>> processData(Map<String, Object> rawData) {
Map<String, Map<String, Object>> records = new HashMap<>(); Map<String, Map<String, Object>> records = new HashMap<>();

View File

@ -41,6 +41,8 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
private EmsBatteryDailyLatestMapper emsBatteryDailyLatestMapper; private EmsBatteryDailyLatestMapper emsBatteryDailyLatestMapper;
@Autowired @Autowired
private EmsBatteryDataDayMapper emsBatteryDataDayMapper; private EmsBatteryDataDayMapper emsBatteryDataDayMapper;
@Autowired
private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
// 电量指标 // 电量指标
@Override @Override
@ -53,7 +55,8 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
Date endDate = requestVo.getEndDate(); Date endDate = requestVo.getEndDate();
// 总充总放 // 总充总放
Map<String, BigDecimal> totalMap = emsPcsDataMapper.getPcsTotalChargeData(requestVo.getSiteId()); String nowData = DateUtils.getDate();
Map<String, BigDecimal> totalMap = emsDailyChargeDataMapper.getAllSiteChargeData(nowData,requestVo.getSiteId());
BigDecimal totalDischarge = totalMap.get("totalDischargedCap") != null ? totalMap.get("totalDischargedCap") : BigDecimal.ZERO; BigDecimal totalDischarge = totalMap.get("totalDischargedCap") != null ? totalMap.get("totalDischargedCap") : BigDecimal.ZERO;
BigDecimal totalCharge = totalMap.get("totalChargedCap") != null ? totalMap.get("totalChargedCap") : BigDecimal.ZERO; BigDecimal totalCharge = totalMap.get("totalChargedCap") != null ? totalMap.get("totalChargedCap") : BigDecimal.ZERO;
BigDecimal efficiency = new BigDecimal(0); BigDecimal efficiency = new BigDecimal(0);

View File

@ -7,6 +7,7 @@ import com.alibaba.fastjson2.TypeReference;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.xzzn.common.constant.Constants;
import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.constant.RedisKeyConstants;
import com.xzzn.common.core.redis.RedisCache; import com.xzzn.common.core.redis.RedisCache;
import com.xzzn.common.enums.*; import com.xzzn.common.enums.*;
@ -22,10 +23,12 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
@Service @Service
public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor implements IFXXDataProcessService { public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor implements IFXXDataProcessService {
@ -59,6 +62,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
private EmsBatteryDailyLatestServiceImpl emsBatteryDailyLatestServiceImpl; private EmsBatteryDailyLatestServiceImpl emsBatteryDailyLatestServiceImpl;
@Autowired @Autowired
private EmsBatteryDataMinutesMapper emsBatteryDataMinutesMapper; private EmsBatteryDataMinutesMapper emsBatteryDataMinutesMapper;
@Autowired
private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
// 构造方法(调用父类构造) // 构造方法(调用父类构造)
public FXXDataProcessServiceImpl(ObjectMapper objectMapper) { public FXXDataProcessServiceImpl(ObjectMapper objectMapper) {
@ -81,7 +86,7 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
return; return;
} }
if (deviceId.contains("BMSD")) { /*if (deviceId.contains("BMSD")) {
batteryStackDataProcess(deviceId, jsonData); batteryStackDataProcess(deviceId, jsonData);
} else if (deviceId.contains("BMSC")) { } else if (deviceId.contains("BMSC")) {
@ -92,11 +97,11 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
} else if (deviceId.contains("PCS")) { } else if (deviceId.contains("PCS")) {
pcsDataProcess(deviceId, jsonData); pcsDataProcess(deviceId, jsonData);
pcsBranchDataProcess(deviceId, jsonData); pcsBranchDataProcess(deviceId, jsonData);
} else if (deviceId.contains("LOAD")) { } else*/ if (deviceId.contains("LOAD")) {
loadDataProcess(deviceId, jsonData); loadDataProcess(deviceId, jsonData);
} else if (deviceId.contains("METE")) { } /*else if (deviceId.contains("METE")) {
meteDataProcess(deviceId, jsonData); meteDataProcess(deviceId, jsonData);
} }*/
} }
} }
@ -560,6 +565,53 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
emsAmmeterDataMapper.insertEmsAmmeterData(dataLoad); emsAmmeterDataMapper.insertEmsAmmeterData(dataLoad);
redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad); redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad);
// 处理每日充放电数据
dealFXXDailyChargeDate(obj,deviceId);
}
private void dealFXXDailyChargeDate(Map<String, Object> obj, String deviceId) {
log.info("start dealFXXDailyChargeDate");
// 初始化今日充放电
BigDecimal dailyChargeDate = new BigDecimal(0);
BigDecimal dailyDisChargeDate = new BigDecimal(0);
BigDecimal nowTotalDisChargeDate = StringUtils.getBigDecimal(obj.get("DQZXYGZDN"));
BigDecimal nowTotalChargeDate = StringUtils.getBigDecimal(obj.get("DQFXYGZDN"));
// 初始化当日数据
EmsDailyChargeData emsDailyChargeData = new EmsDailyChargeData();
emsDailyChargeData.setSiteId(SITE_ID);
emsDailyChargeData.setDeviceId(deviceId);
emsDailyChargeData.setDateTime(DateUtils.getNowDate());
emsDailyChargeData.setTotalChargeData(nowTotalChargeDate);
emsDailyChargeData.setTotalDischargeData(nowTotalDisChargeDate);
emsDailyChargeData.setCreateBy("system");
emsDailyChargeData.setCreateTime(DateUtils.getNowDate());
emsDailyChargeData.setUpdateBy("system");
emsDailyChargeData.setUpdateTime(DateUtils.getNowDate());
// 获取redis存放昨日最晚数据
String yestData = DateUtils.getYesterdayDate();
String yestDateRedisKey = RedisKeyConstants.AMMETER + SITE_ID + "_" + deviceId + "_" + yestData;
EmsAmmeterData yestDate = redisCache.getCacheObject(yestDateRedisKey);
if (yestDate == null) {
// redis没有这查电表总数据表
yestDate = emsAmmeterDataMapper.getYestLatestDate(SITE_ID,deviceId,yestData);
}
if (yestDate != null) {
// 今日总数据-昨日总数据=今日充放电
BigDecimal yestTotalDisChargeDate = yestDate.getCurrentForwardActiveTotal();
BigDecimal yestTotalChargeDate = yestDate.getCurrentReverseActiveTotal();
dailyChargeDate = nowTotalChargeDate.subtract(yestTotalChargeDate);
dailyDisChargeDate = nowTotalDisChargeDate.subtract(yestTotalDisChargeDate);
emsDailyChargeData.setChargeData(dailyChargeDate);
emsDailyChargeData.setDischargeData(dailyDisChargeDate);
// 存下redis-有效期1天
redisCache.setCacheObject(yestDateRedisKey, yestDate , Constants.DATE_VALID_TIME, TimeUnit.DAYS);
}
// 插入或更新每日充放电数据表
emsDailyChargeDataMapper.insertOrUpdateData(emsDailyChargeData);
log.info("end dealFXXDailyChargeDate");
} }
private void meteDataProcess(String deviceId, String dataJson) { private void meteDataProcess(String deviceId, String dataJson) {

View File

@ -5,6 +5,7 @@ import com.xzzn.common.utils.StringUtils;
import com.xzzn.ems.domain.EmsSiteSetting; import com.xzzn.ems.domain.EmsSiteSetting;
import com.xzzn.ems.domain.vo.*; import com.xzzn.ems.domain.vo.*;
import com.xzzn.ems.mapper.EmsAlarmRecordsMapper; import com.xzzn.ems.mapper.EmsAlarmRecordsMapper;
import com.xzzn.ems.mapper.EmsDailyChargeDataMapper;
import com.xzzn.ems.mapper.EmsPcsDataMapper; import com.xzzn.ems.mapper.EmsPcsDataMapper;
import com.xzzn.ems.mapper.EmsSiteSettingMapper; import com.xzzn.ems.mapper.EmsSiteSettingMapper;
import com.xzzn.ems.service.IEmsSiteService; import com.xzzn.ems.service.IEmsSiteService;
@ -34,16 +35,19 @@ public class HomePageServiceImpl implements IHomePageService
private EmsSiteSettingMapper emsSiteMapper; private EmsSiteSettingMapper emsSiteMapper;
@Autowired @Autowired
private EmsAlarmRecordsMapper alarmRecordsMapper; private EmsAlarmRecordsMapper alarmRecordsMapper;
@Autowired
private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
@Override @Override
public SiteTotalInfoVo getSiteTotalInfo() { public SiteTotalInfoVo getSiteTotalInfo() {
SiteTotalInfoVo siteTotalInfoVo = new SiteTotalInfoVo(); SiteTotalInfoVo siteTotalInfoVo = new SiteTotalInfoVo();
siteTotalInfoVo = emsSiteService.getSiteTotalInfo(); siteTotalInfoVo = emsSiteService.getSiteTotalInfo();
// 获取总充+总放 // 获取总充+总放
Map<String,BigDecimal> pcsMap = emsPcsDataMapper.getPcsTotalChargeData(null); String nowData = DateUtils.getDate();
if(pcsMap != null){ Map<String,BigDecimal> data = emsDailyChargeDataMapper.getAllSiteChargeData(nowData,null);
siteTotalInfoVo.setTotalChargedCap(pcsMap.get("totalChargedCap")); if(data != null){
siteTotalInfoVo.setTotalDischargedCap(pcsMap.get("totalDischargedCap")); siteTotalInfoVo.setTotalChargedCap(data.get("totalChargedCap"));
siteTotalInfoVo.setTotalDischargedCap(data.get("totalDischargedCap"));
} }
return siteTotalInfoVo; return siteTotalInfoVo;
} }
@ -69,31 +73,32 @@ public class HomePageServiceImpl implements IHomePageService
singleSiteBaseInfo.setRunningTime(emsSite.getRunningTime() == null ? null : singleSiteBaseInfo.setRunningTime(emsSite.getRunningTime() == null ? null :
DateUtils.parseDateToStr("yyyy-MM-dd",emsSite.getRunningTime()));//投运时间 DateUtils.parseDateToStr("yyyy-MM-dd",emsSite.getRunningTime()));//投运时间
// 获取单站点的总充+总放 // 获取单站点的总充+总放
Map<String,BigDecimal> pcsMap = emsPcsDataMapper.getPcsTotalChargeData(siteId); String nowData = DateUtils.getDate();
if (pcsMap != null) { Map<String,BigDecimal> data = emsDailyChargeDataMapper.getAllSiteChargeData(nowData,siteId);
singleSiteBaseInfo.setTotalChargedCap(pcsMap.get("totalChargedCap")); if (data != null) {
singleSiteBaseInfo.setTotalDisChargedCap(pcsMap.get("totalDischargedCap")); singleSiteBaseInfo.setTotalChargedCap(data.get("totalChargedCap"));
singleSiteBaseInfo.setTotalDisChargedCap(data.get("totalDischargedCap"));
} }
// 七天放电数据统计 默认从今天往前7天 // 七天放电数据统计 默认从今天往前7天
LocalDate sevenDaysAgo = LocalDate.now().minusDays(LIMIT_TIME); LocalDate sevenDaysAgo = LocalDate.now().minusDays(LIMIT_TIME);
Date startDate = DateUtils.toDate(sevenDaysAgo); Date startDate = DateUtils.toDate(sevenDaysAgo);
Date endDate = new Date(); Date endDate = new Date();
List<SiteMonitorDataVo> siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId,startDate,endDate); List<SiteMonitorDataVo> siteMonitorDataVoList = emsDailyChargeDataMapper.getSingleSiteChargeData(siteId,startDate,endDate);
singleSiteBaseInfo.setSevenDayDisChargeStats(siteMonitorDataVoList); singleSiteBaseInfo.setSevenDayDisChargeStats(siteMonitorDataVoList);
// 充放电基本数据处理 // 充放电基本数据处理
dealSitePCSDate(singleSiteBaseInfo,siteMonitorDataVoList); dealSiteChargeDate(singleSiteBaseInfo,siteMonitorDataVoList);
} }
} }
return singleSiteBaseInfo; return singleSiteBaseInfo;
} }
private void dealSitePCSDate(SingleSiteBaseInfo singleSiteBaseInfo, List<SiteMonitorDataVo> siteMonitorDataVoList) { private void dealSiteChargeDate(SingleSiteBaseInfo singleSiteBaseInfo, List<SiteMonitorDataVo> siteMonitorDataVoList) {
if (siteMonitorDataVoList != null && !siteMonitorDataVoList.isEmpty()) { if (siteMonitorDataVoList != null && !siteMonitorDataVoList.isEmpty()) {
for (SiteMonitorDataVo sitePcsData : siteMonitorDataVoList) { for (SiteMonitorDataVo sitePcsData : siteMonitorDataVoList) {
// 获取当天的充电量+放电量 // 获取当天的充电量+放电量
String pcsDate = sitePcsData.getAmmeterDate(); String dayDate = sitePcsData.getAmmeterDate();
boolean isToday= checkIsToday(pcsDate); boolean isToday= DateUtils.checkIsToday(dayDate);
if(isToday){ if(isToday){
singleSiteBaseInfo.setDayChargedCap(sitePcsData.getChargedCap()); singleSiteBaseInfo.setDayChargedCap(sitePcsData.getChargedCap());
singleSiteBaseInfo.setDayDisChargedCap(sitePcsData.getDisChargedCap()); singleSiteBaseInfo.setDayDisChargedCap(sitePcsData.getDisChargedCap());
@ -102,21 +107,6 @@ public class HomePageServiceImpl implements IHomePageService
} }
} }
private boolean checkIsToday(String pcsDate) {
boolean flag = false;
Calendar calendar = Calendar.getInstance();
int todayMonth = calendar.get(Calendar.MONTH) + 1;
int todayDay = calendar.get(Calendar.DAY_OF_MONTH);
if (StringUtils.isNotEmpty(pcsDate)){
String[] pcsDateArray = pcsDate.split("-");
if (todayMonth == Integer.parseInt(pcsDateArray[0]) &&
todayDay == Integer.parseInt(pcsDateArray[1])) {
flag = true;
}
}
return flag;
}
/** /**
* 首页看板-数据概览 * 首页看板-数据概览
*/ */
@ -179,7 +169,7 @@ public class HomePageServiceImpl implements IHomePageService
Date startDate = requestVo.getStartDate(); Date startDate = requestVo.getStartDate();
Date endDate = requestVo.getEndDate(); Date endDate = requestVo.getEndDate();
// 七天放电数据统计 // 七天放电数据统计
List<SiteMonitorDataVo> siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId,startDate,endDate); List<SiteMonitorDataVo> siteMonitorDataVoList = emsDailyChargeDataMapper.getSingleSiteChargeData(siteId,startDate,endDate);
return siteMonitorDataVoList; return siteMonitorDataVoList;
} }

View File

@ -61,6 +61,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
private EmsStrategyRunningMapper emsStrategyRunningMapper; private EmsStrategyRunningMapper emsStrategyRunningMapper;
@Autowired @Autowired
private EmsStrategyTempMapper emsStrategyTempMapper; private EmsStrategyTempMapper emsStrategyTempMapper;
@Autowired
private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
@Override @Override
public SiteMonitorHomeVo getSiteMonitorDataVo(String siteId) { public SiteMonitorHomeVo getSiteMonitorDataVo(String siteId) {
@ -68,11 +70,12 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
if (!StringUtils.isEmpty(siteId)) { if (!StringUtils.isEmpty(siteId)) {
// 获取单站点的总充+总放+电网实时功率 // 获取单站点的总充+总放+电网实时功率
Map<String,BigDecimal> pcsMap = emsPcsDataMapper.getPcsTotalChargeData(siteId); String nowData = DateUtils.getDate();
if (pcsMap != null) { Map<String,BigDecimal> dataMap = emsDailyChargeDataMapper.getAllSiteChargeData(nowData,siteId);
siteMonitorHomeVo.setTotalChargedCap(pcsMap.get("totalChargedCap")); if (dataMap != null) {
siteMonitorHomeVo.setTotalDischargedCap(pcsMap.get("totalDischargedCap")); siteMonitorHomeVo.setTotalChargedCap(dataMap.get("totalChargedCap"));
siteMonitorHomeVo.setGridNrtPower(pcsMap.get("gridNrtPower")); siteMonitorHomeVo.setTotalDischargedCap(dataMap.get("totalDischargedCap"));
siteMonitorHomeVo.setGridNrtPower(dataMap.get("gridNrtPower"));
} }
// 实时告警数据 名称+状态+告警内容 // 实时告警数据 名称+状态+告警内容
List<SiteMonitorHomeAlarmVo> siteMonitorHomeAlarmVo = emsAlarmRecordsMapper.getAlarmRecordsBySiteId(siteId); List<SiteMonitorHomeAlarmVo> siteMonitorHomeAlarmVo = emsAlarmRecordsMapper.getAlarmRecordsBySiteId(siteId);
@ -91,12 +94,12 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
LocalDate sevenDaysAgo = LocalDate.now().minusDays(6); LocalDate sevenDaysAgo = LocalDate.now().minusDays(6);
Date startDate = DateUtils.toDate(sevenDaysAgo); Date startDate = DateUtils.toDate(sevenDaysAgo);
Date endDate = new Date(); Date endDate = new Date();
List<SiteMonitorDataVo> siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId,startDate,endDate); List<SiteMonitorDataVo> siteMonitorDataVoList = emsDailyChargeDataMapper.getSingleSiteChargeData(siteId,startDate,endDate);
if (!CollectionUtils.isEmpty(siteMonitorDataVoList)) { if (!CollectionUtils.isEmpty(siteMonitorDataVoList)) {
for (SiteMonitorDataVo sitePcsData : siteMonitorDataVoList) { for (SiteMonitorDataVo sitePcsData : siteMonitorDataVoList) {
// 获取当天的充电量+放电量 // 获取当天的充电量+放电量
String pcsDate = sitePcsData.getAmmeterDate(); String pcsDate = sitePcsData.getAmmeterDate();
boolean isToday= checkIsToday(pcsDate); boolean isToday= DateUtils.checkIsToday(pcsDate);
if(isToday){ if(isToday){
siteMonitorHomeVo.setDayChargedCap(sitePcsData.getChargedCap()); siteMonitorHomeVo.setDayChargedCap(sitePcsData.getChargedCap());
siteMonitorHomeVo.setDayDisChargedCap(sitePcsData.getDisChargedCap()); siteMonitorHomeVo.setDayDisChargedCap(sitePcsData.getDisChargedCap());
@ -112,21 +115,6 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
return siteMonitorHomeVo; return siteMonitorHomeVo;
} }
private boolean checkIsToday(String pcsDate) {
boolean flag = false;
Calendar calendar = Calendar.getInstance();
int todayMonth = calendar.get(Calendar.MONTH) + 1;
int todayDay = calendar.get(Calendar.DAY_OF_MONTH);
if (StringUtils.isNotEmpty(pcsDate)){
String[] pcsDateArray = pcsDate.split("-");
if (todayMonth == Integer.parseInt(pcsDateArray[0]) &&
todayDay == Integer.parseInt(pcsDateArray[1])) {
flag = true;
}
}
return flag;
}
// 获取单站监控实时运行头部数据 // 获取单站监控实时运行头部数据
@Override @Override
public SiteMonitorRunningHeadInfoVo getSiteRunningHeadInfo(String siteId) { public SiteMonitorRunningHeadInfoVo getSiteRunningHeadInfo(String siteId) {

View File

@ -883,4 +883,12 @@
and t.data_update_time = latest.max_update_time and t.data_update_time = latest.max_update_time
order by dataTime order by dataTime
</select> </select>
<select id="getYestLatestDate" resultMap="EmsAmmeterDataResult">
<include refid="selectEmsAmmeterDataVo"/>
where site_id = #{siteId}
and device_id = #{deviceId}
and DATE(data_update_time) = #{yestData}
order by data_update_time desc limit 1
</select>
</mapper> </mapper>

View File

@ -343,7 +343,7 @@
avg(t.avg_cell_temp) as batteryTemp, avg(t.avg_cell_temp) as batteryTemp,
DATE_FORMAT(t.create_time, '%Y-%m-%d %H:%i:00') AS createDate DATE_FORMAT(t.create_time, '%Y-%m-%d %H:%i:00') AS createDate
from ems_battery_cluster t from ems_battery_cluster t
where t.site_id = '021_FXX_01' where t.site_id = #{siteId}
AND t.create_time &gt;= Date(#{startDate}) AND t.create_time &gt;= Date(#{startDate})
AND t.create_time &lt;= #{endDate} AND t.create_time &lt;= #{endDate}
GROUP BY t.site_id,DATE_FORMAT(t.create_time, '%Y-%m-%d %H:%i:00') GROUP BY t.site_id,DATE_FORMAT(t.create_time, '%Y-%m-%d %H:%i:00')