|
@@ -1,7 +1,9 @@
|
|
package com.ruoyi.system.service.impl;
|
|
package com.ruoyi.system.service.impl;
|
|
|
|
|
|
import com.ruoyi.common.core.domain.BaseEntity;
|
|
import com.ruoyi.common.core.domain.BaseEntity;
|
|
|
|
+import com.ruoyi.common.utils.BranchThreadUtils;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
|
+import com.ruoyi.common.utils.spring.SpringUtils;
|
|
import com.ruoyi.system.domain.ProposalInfo;
|
|
import com.ruoyi.system.domain.ProposalInfo;
|
|
import com.ruoyi.system.domain.activity.ZxActivity;
|
|
import com.ruoyi.system.domain.activity.ZxActivity;
|
|
import com.ruoyi.system.domain.activity.ZxActivityUser;
|
|
import com.ruoyi.system.domain.activity.ZxActivityUser;
|
|
@@ -15,6 +17,7 @@ import com.ruoyi.system.domain.member.MemberInfo;
|
|
import com.ruoyi.system.domain.sqmy.SqmyInfo;
|
|
import com.ruoyi.system.domain.sqmy.SqmyInfo;
|
|
import com.ruoyi.system.mapper.*;
|
|
import com.ruoyi.system.mapper.*;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
@@ -31,7 +34,7 @@ import static com.ruoyi.common.constant.CommonConstants.*;
|
|
* @Describe:
|
|
* @Describe:
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
-public class TaskService {
|
|
|
|
|
|
+public class TaskService extends Thread{
|
|
@Autowired
|
|
@Autowired
|
|
private MemberInfoMapper memberInfoMapper;
|
|
private MemberInfoMapper memberInfoMapper;
|
|
@Autowired
|
|
@Autowired
|
|
@@ -59,6 +62,7 @@ public class TaskService {
|
|
@Autowired
|
|
@Autowired
|
|
private ZxInvestmentMapper zxInvestmentMapper;
|
|
private ZxInvestmentMapper zxInvestmentMapper;
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 更新所有委员分数,排名
|
|
* 更新所有委员分数,排名
|
|
*/
|
|
*/
|
|
@@ -410,32 +414,45 @@ public class TaskService {
|
|
memberAssessmentInf.setTotalScore(totalScore);
|
|
memberAssessmentInf.setTotalScore(totalScore);
|
|
memberAssessmentInfoListNew.add(memberAssessmentInf);
|
|
memberAssessmentInfoListNew.add(memberAssessmentInf);
|
|
}
|
|
}
|
|
- //计算排名
|
|
|
|
- int index = 0;
|
|
|
|
- //最近的一次分数
|
|
|
|
- Long lastScore = 0L;
|
|
|
|
List<MemberAssessmentInfo> collect = memberAssessmentInfoListNew.stream().sorted(Comparator.comparing(MemberAssessmentInfo::getTotalScore).reversed()).collect(Collectors.toList());
|
|
List<MemberAssessmentInfo> collect = memberAssessmentInfoListNew.stream().sorted(Comparator.comparing(MemberAssessmentInfo::getTotalScore).reversed()).collect(Collectors.toList());
|
|
- for (int i = 0; i < collect.size(); i++) {
|
|
|
|
- MemberAssessmentInfo memberAssessmentInfoNew = collect.get(i);
|
|
|
|
- Long totalScore = memberAssessmentInfoNew.getTotalScore();
|
|
|
|
- if (!lastScore.equals(totalScore)) {
|
|
|
|
- lastScore = totalScore;
|
|
|
|
- index++;
|
|
|
|
- }
|
|
|
|
- memberAssessmentInfoNew.setRank(String.valueOf(index));
|
|
|
|
- //判断是更新还是新增
|
|
|
|
- if (memberAssessmentInfoList != null && memberAssessmentInfoList.size() > 0) {
|
|
|
|
- //更新
|
|
|
|
- memberAssessmentInfoMapper.updateMemberAssessmentInfo(memberAssessmentInfoNew);
|
|
|
|
- } else {
|
|
|
|
- memberAssessmentInfoMapper.insertMemberAssessmentInfo(memberAssessmentInfoNew);
|
|
|
|
- }
|
|
|
|
- MemberInfo memberInfo = new MemberInfo();
|
|
|
|
- memberInfo.setUserId(memberAssessmentInfoNew.getUserId());
|
|
|
|
- memberInfo.setScore(memberAssessmentInfoNew.getTotalScore());
|
|
|
|
- memberInfo.setRanking(memberAssessmentInfoNew.getRank());
|
|
|
|
- //更新委员主表
|
|
|
|
- memberInfoMapper.updateMemberInfoByUserId(memberInfo);
|
|
|
|
|
|
+ //开启多线程处理
|
|
|
|
+ //获取线程池中的@bean
|
|
|
|
+ ThreadPoolTaskExecutor executor = SpringUtils.getBean("threadPoolTaskExecutor");
|
|
|
|
+ //定义每个线程处理多少用户
|
|
|
|
+ Integer count = 50;
|
|
|
|
+ //根据用户数确定需要多少个线程
|
|
|
|
+ List<List<MemberAssessmentInfo>> lists = BranchThreadUtils.splitList(collect, count);
|
|
|
|
+ for (List<MemberAssessmentInfo> list : lists) {
|
|
|
|
+ executor.execute(() -> {
|
|
|
|
+ System.out.println("线程"+Thread.currentThread().getId()+"启动");
|
|
|
|
+ //计算排名
|
|
|
|
+ int index = 0;
|
|
|
|
+ //最近的一次分数
|
|
|
|
+ Long lastScore = 0L;
|
|
|
|
+ //执行任务
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ MemberAssessmentInfo memberAssessmentInfoNew = list.get(i);
|
|
|
|
+ Long totalScore = memberAssessmentInfoNew.getTotalScore();
|
|
|
|
+ if (!lastScore.equals(totalScore)) {
|
|
|
|
+ lastScore = totalScore;
|
|
|
|
+ index++;
|
|
|
|
+ }
|
|
|
|
+ memberAssessmentInfoNew.setRank(String.valueOf(index));
|
|
|
|
+ //判断是更新还是新增
|
|
|
|
+ if (memberAssessmentInfoList != null && memberAssessmentInfoList.size() > 0) {
|
|
|
|
+ //更新
|
|
|
|
+ memberAssessmentInfoMapper.updateMemberAssessmentInfo(memberAssessmentInfoNew);
|
|
|
|
+ } else {
|
|
|
|
+ memberAssessmentInfoMapper.insertMemberAssessmentInfo(memberAssessmentInfoNew);
|
|
|
|
+ }
|
|
|
|
+ MemberInfo memberInfo = new MemberInfo();
|
|
|
|
+ memberInfo.setUserId(memberAssessmentInfoNew.getUserId());
|
|
|
|
+ memberInfo.setScore(memberAssessmentInfoNew.getTotalScore());
|
|
|
|
+ memberInfo.setRanking(memberAssessmentInfoNew.getRank());
|
|
|
|
+ //更新委员主表
|
|
|
|
+ memberInfoMapper.updateMemberInfoByUserId(memberInfo);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
System.out.println("定时任务结束");
|
|
System.out.println("定时任务结束");
|