20250808优化-充放电逻辑修改
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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<>();
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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>
|
||||||
@ -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 >= Date(#{startDate})
|
AND t.create_time >= Date(#{startDate})
|
||||||
AND t.create_time <= #{endDate}
|
AND t.create_time <= #{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')
|
||||||
|
|||||||
Reference in New Issue
Block a user