update 幸运值计算bug修改

This commit is contained in:
yyb 2025-05-19 16:56:02 +08:00
parent 88ea456424
commit 86bb162b16
3 changed files with 22 additions and 23 deletions

View File

@ -28,7 +28,6 @@ public class DetailedBlockDataV2Strategy implements PoolBlockDataStrategy {
.filter(e -> (e.getDate().before(end)) || e.getDate().equals(end))
.filter(e -> (e.getDate().after(start) || e.getDate().equals(start)))
.collect(Collectors.toList());
if (collect.isEmpty()){
return BlockTimeAndNumberDto.builder().dateLength(BigDecimal.ZERO).height(0).build();
}
@ -37,7 +36,7 @@ public class DetailedBlockDataV2Strategy implements PoolBlockDataStrategy {
}
return BlockTimeAndNumberDto.builder()
.dateLength(BigDecimal.valueOf(collect.size()))
.height(collect.get(collect.size() - 1).getHeight()- collect.get(0).getHeight()).build();
.height(collect.get(0).getHeight()-collect.get(collect.size() - 1).getHeight()).build();
}
}

View File

@ -404,8 +404,8 @@ public class DataTask {
}
//@Scheduled(cron = "30 2,5 0 * * ?")
@Scheduled(cron = "0 0/2 * * * ?")
@Scheduled(cron = "30 2,5 0 * * ?")
//@Scheduled(cron = "0 0/2 * * * ?")
public void NEXALuckyDataToDB(){
log.info("nexa幸运值---定时任务开始");
LuckDto dto = new LuckDto();
@ -428,10 +428,10 @@ public class DataTask {
BigDecimal throreticalBlocks = getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start3d, end, blockData);
//3天矿池实际报块数
int actualBlocks = poolMapper.selectPoolBlock(3);
log.info("nexa 3天实际报块数{},理论报块数{}",actualBlocks,throreticalBlocks);
log.info("nexa 3天实际报块数{},理论报块数{},全网实际报块数{}",actualBlocks,throreticalBlocks,blockData.getHeight());
//3天幸运值
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//7天幸运值
useAggregated = blockPerDays.size() >= 7;
@ -441,7 +441,7 @@ public class DataTask {
actualBlocks = poolMapper.selectPoolBlock(7);
log.info("nexa 7天实际报块数{},理论报块数{}",actualBlocks,throreticalBlocks);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//30天幸运值
@ -452,7 +452,7 @@ public class DataTask {
actualBlocks = poolMapper.selectPoolBlock(30);
log.info("nexa 30天实际报块数{},理论报块数{}",actualBlocks,throreticalBlocks);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//90天幸运值
@ -463,7 +463,7 @@ public class DataTask {
actualBlocks = poolMapper.selectPoolBlock(90);
log.info("nexa 90天实际报块数{},理论报块数{}",actualBlocks,throreticalBlocks);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
redisService.deleteObject("NEXALuck");
@ -493,7 +493,7 @@ public class DataTask {
}
return avgPowerForPool.getValue().multiply(BigDecimal.valueOf(hRate)).divide(avgPowerForNet.getValue(),8, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(blockData.getHeight())).setScale(8, RoundingMode.HALF_UP);
.multiply(BigDecimal.valueOf(blockData.getHeight())).setScale(4, RoundingMode.HALF_UP);
}
@ -871,7 +871,7 @@ public class DataTask {
int actualBlocks = poolMapper.selectPoolBlock(3);
//3天幸运值
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//7天幸运值
useAggregated = blockPerDays.size() >= 7;
@ -880,7 +880,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start7d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(7);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//30天幸运值
useAggregated = blockPerDays.size() >= 30;
@ -889,7 +889,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start30d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(30);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//90天幸运值
@ -898,7 +898,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start90d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(90);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
@ -1285,7 +1285,7 @@ public class DataTask {
int actualBlocks = poolMapper.selectPoolBlock(3);
//3天幸运值
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//7天幸运值
useAggregated = blockPerDays.size() >= 7;
@ -1294,7 +1294,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start7d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(7);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//30天幸运值
useAggregated = blockPerDays.size() >= 30;
@ -1303,7 +1303,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.MONA.gethRate(),start30d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(30);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//90天幸运值
@ -1313,7 +1313,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start90d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(90);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
redisService.deleteObject("MONALuck");
redisService.setCacheObject("MONALuck",dto);
@ -3414,7 +3414,7 @@ public class DataTask {
int actualBlocks = poolMapper.selectPoolBlock(3);
//3天幸运值
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//7天幸运值
useAggregated = blockPerDays.size() >= 7;
@ -3423,7 +3423,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start7d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(7);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//30天幸运值
useAggregated = blockPerDays.size() >= 30;
@ -3432,7 +3432,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start30d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(30);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
//90天幸运值
@ -3442,7 +3442,7 @@ public class DataTask {
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start90d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(90);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,2, RoundingMode.HALF_UP).doubleValue());
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,4, RoundingMode.HALF_UP).doubleValue());
}
redisService.deleteObject("RXDLuck");
redisService.setCacheObject("RXDLuck",dto);

View File

@ -889,7 +889,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT `date`,height FROM ${tableName} WHERE `date` >= DATE_SUB(CURDATE(),INTERVAL 90 DAY) ORDER BY `date` DESC
</select>
<select id="selectPoolBlock" resultType="java.lang.Integer">
SELECT count(*) FROM nexa_blkreportprofitv2 WHERE `date` >= DATE_SUB(CURDATE(),INTERVAL #{reduce} DAY)
SELECT count(*) FROM nexa_blkreportprofitv2 WHERE `date` >= DATE_SUB(CURDATE(),INTERVAL #{reduce}-1 DAY)
</select>
<select id="getAvgPowerForPool" resultType="com.m2pool.pool.dto.DateBigDecimalDto">
select avg(mhs) `value` from ${coin}_pool_30m