新增光伏Mppt相关功能

This commit is contained in:
2025-11-28 10:04:04 +08:00
parent 6c23c4a9c4
commit 861155b2e5
46 changed files with 1722 additions and 512 deletions

View File

@ -318,163 +318,6 @@ public class Device001ApiController {
@PostMapping("getTodayPowerGeneration")
public DataResult<ElecPowerGeneration> getTodayPowerGeneration(@RequestBody TdBaseTimeQuery query) {
return getDayPowerGeneration(query);
//创建返回对象
// ElecPowerGeneration elecPowerGeneration = new ElecPowerGeneration();
// try {
// //拼接后缀表名
// String tableName = new StringBuilder().append(query.getGroupId())
// .append(DataCollectConstant.TABLE_LINK).append(query.getStationId())
// .append(DataCollectConstant.TABLE_LINK).append(query.getSrcId())
// .toString();
// Map<String, String> colNameMap = query.getColNameMap();
// String modelName = query.getModelName();
// query.setIsError(false);
// if (DeviceTypeConstant.DEVICE_SIMPLE.equals(modelName)) {
// log.info("DEVICE_SIMPLE======");
// if (colNameMap != null) {
// //查询充电量
// String charge = colNameMap.get(DataCollectConstant.Elec_Meter.TOTAL_CHARGE);
// if (charge != null) {
// log.info("charge != null");
// //开始充电量
// long start = System.currentTimeMillis();
// BigDecimal beginCharge = deviceSimpleMapper.queryOneByTime(tableName, charge, query.getBegin());
// long end = System.currentTimeMillis();
// log.info("used1:" + (end - start));
// if (beginCharge == null) {
// beginCharge = BigDecimal.ZERO;
// }
//// cacheObj(query,DeviceTypeConstant.DAILY_CHARGE_START,beginCharge);
// //结束充电量
// start = System.currentTimeMillis();
// BigDecimal endCharge = deviceSimpleMapper.queryOneByTime(tableName, charge, query.getEnd());
// end = System.currentTimeMillis();
// log.info("used2:" + (end - start));
// if (endCharge == null) {
// endCharge = BigDecimal.ZERO;
// }
// BigDecimal ele = endCharge.subtract(beginCharge);
// //处理异常值
// ele = handleSimpleEle(query, ele, tableName, charge, beginCharge, endCharge);
// elecPowerGeneration.setTodayChargePowerGeneration(ele);
// if (!query.getIsError()) {
// cacheObj(query, DeviceTypeConstant.DAILY_CHARGE_START, beginCharge);
// }
// // elecPowerGeneration.setTodayChargePowerGeneration(endCharge.subtract(beginCharge));
//// if(endCharge.compareTo(beginCharge)<0){
//// elecPowerGeneration.setTodayChargePowerGeneration(new BigDecimal(CommonConstant.ZERO));
//// }
// }
// //查询放电量
// String disCharge = colNameMap.get(DataCollectConstant.Elec_Meter.TOTAL_DISCHARGE);
// if (disCharge != null) {
// log.info("disCharge != null");
// //开始放电量
// long start = System.currentTimeMillis();
// BigDecimal beginDisCharge = deviceSimpleMapper.queryOneByTime(tableName, disCharge, query.getBegin());
// long end = System.currentTimeMillis();
// log.info("used1:" + (end - start));
// if (beginDisCharge == null) {
// beginDisCharge = BigDecimal.ZERO;
// }
//// cacheObj(query,DeviceTypeConstant.DAILY_DISCHARGE_START, beginDisCharge);
// //结束放电量
// start = System.currentTimeMillis();
// BigDecimal endDisCharge = deviceSimpleMapper.queryOneByTime(tableName, disCharge, query.getEnd());
// end = System.currentTimeMillis();
// log.info("used2:" + (end - start));
// if (endDisCharge == null) {
// endDisCharge = BigDecimal.ZERO;
// }
// //处理异常值
// BigDecimal ele = endDisCharge.subtract(beginDisCharge);
// ele = handleSimpleEle(query, ele, tableName, disCharge, beginDisCharge, endDisCharge);
// elecPowerGeneration.setTodayDisChargePowerGeneration(ele);
// if (!query.getIsError()) {
// cacheObj(query, DeviceTypeConstant.DAILY_DISCHARGE_START, beginDisCharge);
// }
//// elecPowerGeneration.setTodayDisChargePowerGeneration(endDisCharge.subtract(beginDisCharge));
//// if(endDisCharge.compareTo(beginDisCharge)<0){
//// elecPowerGeneration.setTodayDisChargePowerGeneration(new BigDecimal(CommonConstant.ZERO));
//// }
// }
// }
// } else {
// log.info("DEVICE_COMPLEX======");
// if (colNameMap != null) {
// //查询充电量
// String charge = colNameMap.get(DataCollectConstant.Elec_Meter.TOTAL_CHARGE);
// if (charge != null) {
// log.info("charge != null");
// //开始充电量
// long start = System.currentTimeMillis();
// BigDecimal beginCharge = deviceComplexMapper.queryOneByTime(tableName, charge, query.getBegin());
// long end = System.currentTimeMillis();
// log.info("used1:" + (end - start));
// if (beginCharge == null) {
// beginCharge = BigDecimal.ZERO;
// }
//// cacheObj(query,DeviceTypeConstant.DAILY_CHARGE_START, beginCharge);
// //结束充电量
// start = System.currentTimeMillis();
// BigDecimal endCharge = deviceComplexMapper.queryOneByTime(tableName, charge, query.getEnd());
// end = System.currentTimeMillis();
// log.info("used2:" + (end - start));
// if (endCharge == null) {
// endCharge = BigDecimal.ZERO;
// }
// BigDecimal ele = endCharge.subtract(beginCharge);
// //处理异常值
// ele = handleComplexEle(query, ele, tableName, charge, beginCharge, endCharge);
// elecPowerGeneration.setTodayChargePowerGeneration(ele);
// if (!query.getIsError()) {
// cacheObj(query, DeviceTypeConstant.DAILY_CHARGE_START, beginCharge);
// }
//// elecPowerGeneration.setTodayChargePowerGeneration(endCharge.subtract(beginCharge));
//// if(endCharge.compareTo(beginCharge)<0){
//// elecPowerGeneration.setTodayChargePowerGeneration(new BigDecimal(CommonConstant.ZERO));
//// }
// }
// //查询放电量
// String disCharge = colNameMap.get(DataCollectConstant.Elec_Meter.TOTAL_DISCHARGE);
// if (disCharge != null) {
// log.info("disCharge != null");
// //开始放电量
// long start = System.currentTimeMillis();
// BigDecimal beginDisCharge = deviceComplexMapper.queryOneByTime(tableName, disCharge, query.getBegin());
// long end = System.currentTimeMillis();
// log.info("used1:" + (end - start));
// if (beginDisCharge == null) {
// beginDisCharge = BigDecimal.ZERO;
// }
//// cacheObj(query,DeviceTypeConstant.DAILY_DISCHARGE_START, beginDisCharge);
// //结束放电量
// start = System.currentTimeMillis();
// BigDecimal endDisCharge = deviceComplexMapper.queryOneByTime(tableName, disCharge, query.getEnd());
// end = System.currentTimeMillis();
// log.info("used2:" + (end - start));
// if (endDisCharge == null) {
// endDisCharge = BigDecimal.ZERO;
// }
// //处理异常值
// BigDecimal ele = endDisCharge.subtract(beginDisCharge);
// ele = handleComplexEle(query, ele, tableName, disCharge, beginDisCharge, endDisCharge);
// elecPowerGeneration.setTodayDisChargePowerGeneration(ele);
// if (!query.getIsError()) {
// cacheObj(query, DeviceTypeConstant.DAILY_DISCHARGE_START, beginDisCharge);
// }
//// elecPowerGeneration.setTodayDisChargePowerGeneration(endDisCharge.subtract(beginDisCharge));
//// if(endDisCharge.compareTo(beginDisCharge)<0){
//// elecPowerGeneration.setTodayDisChargePowerGeneration(new BigDecimal(CommonConstant.ZERO));
//// }
// }
// }
// }
// } catch (Exception e) {
// log.error("查询电表当日发电量数据失败e ");
// log.error(e.getMessage());
// }
// return DataResult.success(elecPowerGeneration);
}
/**
@ -1598,6 +1441,46 @@ public class Device001ApiController {
return DataResult.success(list);
}
/**
* 冻结光伏-Mppt日发电量
* @param query
* @return
*/
@PostMapping("getToDayPVMpptCharge")
public DataResult<StationHomeRespVo> getToDayPVMpptCharge(@RequestBody TdBaseTimeQuery query){
//拼接后缀表名
Map<Integer, String> colNameMap = query.getMap();
String modelName = query.getModelName();
StationHomeRespVo stationHomeRespVo = new StationHomeRespVo();
if (colNameMap != null) {
//查询发电量
String charge = colNameMap.get(query.getSrcId());
if (charge != null) {
query.setBeginLong(query.getBegin().getTime());
query.setEndLong(query.getEnd().getTime());
query.setCol(charge);
String tableName = getTableName(query);
log.info("charge != null");
//计算昨日发电量
BigDecimal ele = getPvBigDecimal(query, tableName, modelName, charge, DeviceTypeConstant.PV_DAILY_CHARGE_START);
stationHomeRespVo.setDigital(ele);
// 缓存今日发电量起始值
query.setBeginLong(DateUtil.beginOfDay(DateUtil.date()).getTime());
query.setEndLong(DateUtil.endOfDay(DateUtil.date()).getTime());
List<StationHomeRespVo> stationHomeRespVos = null;
if (DeviceTypeConstant.DEVICE_SIMPLE.equals(modelName)) {
stationHomeRespVos = deviceSimpleMapper.selectAll(query, tableName);
} else if (DeviceTypeConstant.DEVICE_COMPLEX.equals(modelName)) {
stationHomeRespVos = deviceComplexMapper.selectAll(query, tableName);
}
if (stationHomeRespVos != null && stationHomeRespVos.size() > 0) {
BigDecimal startEle = stationHomeRespVos.get(0).getDigital();
cacheObj(query, DeviceTypeConstant.PV_DAILY_CHARGE_START, startEle);
}
}
}
return DataResult.success(stationHomeRespVo);
}
/**
* 光伏累计充
*/
@ -1780,6 +1663,31 @@ public class Device001ApiController {
return ele;
}
@NotNull
private BigDecimal getPvBigDecimal(TdBaseTimeQuery query, String tableName, String modelName, String col, String dayCol) {
long start = System.currentTimeMillis();
List<StationHomeRespVo> stationHomeRespVos = null;
if (DeviceTypeConstant.DEVICE_SIMPLE.equals(modelName)) {
stationHomeRespVos = deviceSimpleMapper.selectAll(query, tableName);
} else if (DeviceTypeConstant.DEVICE_COMPLEX.equals(modelName)) {
stationHomeRespVos = deviceComplexMapper.selectAll(query, tableName);
}
BigDecimal ele = BigDecimal.ZERO;
if (stationHomeRespVos != null && stationHomeRespVos.size() > 0) {
int len = stationHomeRespVos.size();
BigDecimal startEle = stationHomeRespVos.get(0).getDigital();
BigDecimal endEle = stationHomeRespVos.get(len - 1).getDigital();
ele = endEle.subtract(startEle);
//处理异常值
ele = handleEle(ele, startEle, endEle, stationHomeRespVos);
} else {
log.info("getDayPowerGeneration get stationHomeRespVos is empty,col:{},tableName:{},time:{}", col, tableName, new Date());
}
long end = System.currentTimeMillis();
log.info("getBigDecimal used1:" + (end - start));
return ele;
}
/**
* 异常值处理
*