|
@@ -31,6 +31,7 @@ import java.util.stream.Collectors;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.Assert;
|
|
|
|
|
@@ -53,13 +54,14 @@ public class TicketBoxTask {
|
|
|
@Autowired
|
|
|
private ITicketBoxService ticketBoxService;
|
|
|
|
|
|
- private final int PAGE_SIZE = 1000;
|
|
|
+ @Value("${export.page-size}")
|
|
|
+ private int pageSize;
|
|
|
|
|
|
/**
|
|
|
* 检查票组中奖分布任务
|
|
|
*/
|
|
|
public void checkPrize(String boxId) {
|
|
|
- LogUtil.info(logger, "...票组奖品分布检测任务开始...");
|
|
|
+ LogUtil.info(logger, "...票组奖品分布检测任务开始..." + boxId);
|
|
|
|
|
|
TicketBox ticketBox = ticketBoxService.getById(boxId);
|
|
|
List<TicketAwards> ticketAwardsList = ticketAwardsService.list(new LambdaQueryWrapper<TicketAwards>().eq(TicketAwards::getBoxId, boxId));
|
|
@@ -77,13 +79,13 @@ public class TicketBoxTask {
|
|
|
LogUtil.info(logger, "票组票数为0,boxId:{0}", boxId);
|
|
|
}
|
|
|
|
|
|
- if(totalSize > PAGE_SIZE) {
|
|
|
- int totalPage = totalSize%PAGE_SIZE == 0 ? totalSize/PAGE_SIZE : totalSize/PAGE_SIZE+1;
|
|
|
+ if(totalSize > pageSize) {
|
|
|
+ int totalPage = totalSize%pageSize == 0 ? totalSize/pageSize : totalSize/pageSize+1;
|
|
|
for (int i = 0; i < totalPage; i++) {
|
|
|
LambdaQueryWrapper<Ticket> pageQueryWrapper = new LambdaQueryWrapper<Ticket>();
|
|
|
pageQueryWrapper.select(Ticket::getSerialNo, Ticket::getDrawNum, Ticket::getCipherLuckyNum, Ticket::getPkgId);
|
|
|
pageQueryWrapper.eq(Ticket::getBoxId, boxId);
|
|
|
- pageQueryWrapper.last("limit "+ (i*PAGE_SIZE) +", " + PAGE_SIZE);
|
|
|
+ pageQueryWrapper.last("limit "+ (i*pageSize) +", " + pageSize);
|
|
|
List<Ticket> list = ticketService.list(pageQueryWrapper);
|
|
|
if(null != list && list.size() > 0 ) {
|
|
|
listAll.addAll(list);
|
|
@@ -140,8 +142,8 @@ public class TicketBoxTask {
|
|
|
BigDecimal hitRate = new BigDecimal(awardsMap.get(subKey) * 100).divide(new BigDecimal(sumAwardsNum), 4, RoundingMode.DOWN);
|
|
|
// 误差率
|
|
|
BigDecimal misRate = ticketAwardsMap.get(subKey).getHitRate().subtract(hitRate).divide(hitRate, 2, RoundingMode.HALF_UP);
|
|
|
- if (misRate.abs().compareTo(new BigDecimal(0.01)) > 0) {
|
|
|
- LogUtil.error(logger, "中奖率与整个票组的中奖率误差大于0.01,pkgId:{0},票包奖项:{1},数量:{2},票包中奖率:{3},票组中奖率:{4}",
|
|
|
+ if (misRate.abs().compareTo(new BigDecimal(1)) > 0) {
|
|
|
+ LogUtil.error(logger, "中奖率与整个票组的中奖率误差大于1,pkgId:{0},票包奖项:{1},数量:{2},票包中奖率:{3},票组中奖率:{4}",
|
|
|
new Object[]{key, subKey, awardsMap.get(subKey), hitRate, ticketAwardsMap.get(subKey).getHitRate()});
|
|
|
}
|
|
|
}
|