diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/biz/RankingBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/biz/RankingBiz.java index d17a782..95865c8 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/biz/RankingBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/biz/RankingBiz.java @@ -270,16 +270,38 @@ public class RankingBiz { } }); computeScore(rankingList,currentTask,competition,baseRatio); - if(competition.getTeamMaxCount() == null){ - computeRanking(rankingList,currentTask,1,now); - }else{ - computeRanking(rankingList,currentTask,competition.getTeamMaxCount(),now); - } - +// if(competition.getTeamMaxCount() == null){ +// computeRanking(rankingList,currentTask,1,now); +// }else{ +// computeRanking(rankingList,currentTask,competition.getTeamMaxCount(),now); +// } + computeRanking(rankingList,currentTask,competition.getTeamMaxCount(),now); + computeMemberRank(currentTask.getCompetitionId(),currentTask.getStageId(),competition.getTeamMaxCount()); competition.setUpdateRankDate(now); competitionDao.save(competition); } + public void computeMemberRank(Long compId,Integer stageId,Integer memberCount){ + List memberList = memberDao.findAllByCompetitionIdAndStageId(compId,stageId); + CompetitionTask task = taskDao.getByCompetitionIdAndStageId(compId,stageId); + if(memberList == null || task == null || memberList.size() == 0 ){ + return ; + } + memberList.forEach(member->{ + Double combineScore = computeCombineScore(task,member.getExamScore(),member.getFinanceScore()); + member.setCombineScore(combineScore); + memberDao.updateComineScore(combineScore,member.getId()); + }); + memberList.sort(Comparator.comparing(CompetitionMember::getCombineScore).reversed()); + for(int i = 0;i rankingList, CompetitionTask currentTask,Competition competition,Double baseRatio){ Double maxPnlRaito = rankingList.stream().mapToDouble(rank->{ return rank.getPnlRatio() == null?0d:rank.getPnlRatio(); }).max().orElse(0D); @@ -302,7 +324,7 @@ public class RankingBiz { } } } - memberDao.updateRankingMemberData(ranking.getReportId(),financeScore,combineScore,baseRatio,ranking.getAvailable(), + memberDao.updateRankingMemberData(ranking.getReportId(),maxPnlRaito,financeScore,combineScore,baseRatio,ranking.getAvailable(), ranking.getNav(),ranking.getCloseCount(),ranking.getOpenCount(),ranking.getCumCommission(),ranking.getPnlRatio(), ranking.getCalmarRatio(),ranking.getSharpRatio(),ranking.getPnlRatioAnnual(),ranking.getProfitLoss(),ranking.getMaxDrawdown(), ranking.getMarketValue(),ranking.getUserNo(),ranking.getCompId(),ranking.getStageId()); @@ -412,12 +434,12 @@ public class RankingBiz { }); }); - rankingList.sort(Comparator.comparing(Ranking::getFinanceScore).reversed()); + rankingList.sort(Comparator.comparing(Ranking::getCombineScore).reversed()); for(int i = 0;i tcrMap = sortMapByValues(teamCombineRank); @@ -433,7 +455,7 @@ public class RankingBiz { // // } rankingDao.saveAll(rankingList); - memberDao.updateTeamRank(task.getStageId(),task.getCompetitionId(),memberCount); +// memberDao.updateTeamRank(task.getStageId(),task.getCompetitionId(),memberCount); memberDao.updateTeamRank2(now); } @@ -458,10 +480,13 @@ public class RankingBiz { * @param financeScore * @return */ - private double computeCombineScore(CompetitionTask task,Double examScore,double financeScore){ + private double computeCombineScore(CompetitionTask task,Double examScore,Double financeScore){ if(examScore == null){ examScore =0d; } + if( financeScore == null ){ + financeScore = 0d; + } Long power = task.getExamPower(); if(power == null){ power = 0L; @@ -479,7 +504,17 @@ public class RankingBiz { * @return */ private double computeFinaceScore(CompetitionTask task,double userRatio,double baseRatio,double maxUserRatio){ - double score = task.getFinanceBasePower() + ((userRatio - baseRatio) /(maxUserRatio -baseRatio))* task.getFinanceProfitPower(); +// double score = task.getFinanceBasePower() + ((userRatio - baseRatio) /(maxUserRatio -baseRatio))* task.getFinanceProfitPower(); +// double score = task.getFinanceProfitPower() + ((userRatio - baseRatio) /(maxUserRatio -baseRatio))* task.getFinanceBasePower(); + double score = 0d; + if(maxUserRatio>=0) { + score = task.getFinanceProfitPower() + (userRatio /maxUserRatio)* task.getFinanceBasePower(); + } else { + if(userRatio == 0 ) { + return task.getFinanceProfitPower(); + } + score = task.getFinanceProfitPower() + (maxUserRatio/userRatio)* task.getFinanceBasePower(); + } return score; } } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java index af651f8..2fc6d35 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java @@ -113,14 +113,19 @@ public interface CompetitionMemberDao extends JpaRepository