update 2miner 策略修改
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.m2pool.lease.strategy.hashrate.impl;
|
package com.m2pool.lease.strategy.hashrate.impl;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.m2pool.lease.dto.v2.PurchasedMachineListDto;
|
import com.m2pool.lease.dto.v2.PurchasedMachineListDto;
|
||||||
import com.m2pool.lease.dto.v2.RealHashrateInfoDto;
|
import com.m2pool.lease.dto.v2.RealHashrateInfoDto;
|
||||||
import com.m2pool.lease.mapper.LeaseOrderMiningMapper;
|
import com.m2pool.lease.mapper.LeaseOrderMiningMapper;
|
||||||
@@ -48,15 +49,50 @@ public class TwoMinersHashrateStrategy implements HashrateFetchStrategy {
|
|||||||
dto.setEndTime(queryEndTime);
|
dto.setEndTime(queryEndTime);
|
||||||
}
|
}
|
||||||
List<RealHashrateInfoDto> recently24HourHashrate = leaseOrderMiningMapper.getRecently24HourHashrate(list, POOL_NAME);
|
List<RealHashrateInfoDto> recently24HourHashrate = leaseOrderMiningMapper.getRecently24HourHashrate(list, POOL_NAME);
|
||||||
|
System.out.println("yyb-最近算力 = " + JSONUtil.toJsonPrettyStr(recently24HourHashrate));
|
||||||
|
|
||||||
//TODO 根据list中开始时间和结束时间 取recently24HourHashrate中(5分钟一个)值,如开始时间是2026-01-28 17:13:33
|
// 根据list中开始时间和结束时间 取recently24HourHashrate中(5分钟一个)值,如开始时间是2026-01-28 17:13:33
|
||||||
// 那么取第一个值就是 2026-01-28 17:45:00点的数据,
|
// 那么取第一个值就是 2026-01-28 17:15:00点的数据,
|
||||||
// 第二个就是2026-01-28 18:15:00
|
// 第二个就是2026-01-28 17:45:00
|
||||||
// 第三个就是2026-01-28 18:45:00 以此类推。
|
// 第三个就是2026-01-28 18:15:00 以此类推。
|
||||||
|
List<RealHashrateInfoDto> filteredHashrateList = new ArrayList<>();
|
||||||
|
|
||||||
return recently24HourHashrate;
|
for (PurchasedMachineListDto dto : list) {
|
||||||
|
LocalDateTime startTime = dto.getStartTime();
|
||||||
|
LocalDateTime endTime = dto.getEndTime();
|
||||||
|
|
||||||
|
// 将开始时间向上取整到最近的5分钟
|
||||||
|
LocalDateTime currentQueryTime = roundUpToNext5Minutes(startTime);
|
||||||
|
|
||||||
|
while (currentQueryTime.isBefore(endTime) || currentQueryTime.isEqual(endTime)) {
|
||||||
|
// 在recently24HourHashrate中查找匹配的记录
|
||||||
|
for (RealHashrateInfoDto hashrateDto : recently24HourHashrate) {
|
||||||
|
if (hashrateDto.getOrderItemId().equals(dto.getOrderItemId())
|
||||||
|
&& hashrateDto.getDatetime().isEqual(currentQueryTime)) {
|
||||||
|
filteredHashrateList.add(hashrateDto);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 移动到下一个30分钟间隔
|
||||||
|
currentQueryTime = currentQueryTime.plusMinutes(DATA_INTERVAL_MINUTES);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return filteredHashrateList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将时间向上取整到最近的5分钟
|
||||||
|
* 例如:2026-01-28 17:13:33 -> 2026-01-28 17:15:00
|
||||||
|
* 例如:2026-01-28 17:15:00 -> 2026-01-28 17:15:00
|
||||||
|
* 例如:2026-01-28 17:16:30 -> 2026-01-28 17:20:00
|
||||||
|
*/
|
||||||
|
private LocalDateTime roundUpToNext5Minutes(LocalDateTime dateTime) {
|
||||||
|
int minute = dateTime.getMinute();
|
||||||
|
int remainder = minute % 5;
|
||||||
|
if (remainder == 0) {
|
||||||
|
return dateTime;
|
||||||
|
}
|
||||||
|
return dateTime.plusMinutes(5 - remainder).withSecond(0).withNano(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user