瀏覽代碼

fix 修改定时多线程

Administrator 1 年之前
父節點
當前提交
7025b25fd8

+ 10 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/investment/ZxInvestmentController.java

@@ -85,6 +85,16 @@ public class ZxInvestmentController extends BaseController {
         return toAjax(zxInvestmentService.updateZxInvestment(zxInvestment));
     }
 
+    /**
+     * 审核/签约按钮政协委员招商引资
+     */
+    @PreAuthorize("@ss.hasPermi('zx:investment:examine')")
+    @Log(title = "政协委员招商引资", businessType = BusinessType.UPDATE)
+    @PostMapping("/examine")
+    public AjaxResult examine(@RequestBody ZxInvestment zxInvestment) {
+        return toAjax(zxInvestmentService.updateZxInvestment(zxInvestment));
+    }
+
     /**
      * 删除政协委员招商引资
      */

+ 2 - 21
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/Task.java

@@ -1,36 +1,17 @@
 package com.ruoyi.web.controller.task;
 
 
-import com.ruoyi.common.core.domain.BaseEntity;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.system.domain.ProposalInfo;
-import com.ruoyi.system.domain.activity.ZxActivity;
-import com.ruoyi.system.domain.activity.ZxActivityUser;
-import com.ruoyi.system.domain.assessment.ZxAssessment;
-import com.ruoyi.system.domain.bonus.ZxBonus;
-import com.ruoyi.system.domain.conference.ZxConference;
-import com.ruoyi.system.domain.conference.ZxConferenceUser;
-import com.ruoyi.system.domain.member.MemberAssessmentInfo;
-import com.ruoyi.system.domain.member.MemberInfo;
-import com.ruoyi.system.domain.sqmy.SqmyInfo;
-import com.ruoyi.system.mapper.*;
+
 import com.ruoyi.system.service.impl.TaskService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
-import java.time.LocalDate;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.ruoyi.common.constant.CommonConstants.*;
-
 @Component
-public class Task {
+public class Task{
     @Autowired
     private TaskService taskService;
 
-
     /***
      * 生成委员分数排名
      * */

+ 45 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/BranchThreadUtils.java

@@ -0,0 +1,45 @@
+package com.ruoyi.common.utils;
+/**
+ * @author tjf
+ * @Date: 2022/07/13/15:44
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author tjf
+ * @Date: 2022/07/13/15:44
+ */
+public class BranchThreadUtils {
+    /**
+     * 计算出需要多少个线程
+     *
+     * @param list
+     * @param pageSize
+     * @param <T>
+     * @return
+     */
+    public static <T> List<List<T>> splitList(List<T> list, int pageSize) {
+        int listSize = list.size();
+        int page = (listSize + (pageSize - 1)) / pageSize;
+        List<List<T>> listArray = new ArrayList<List<T>>();
+        for (int i = 0; i < page; i++) {
+            List<T> subList = new ArrayList<T>();
+            for (int j = 0; j < listSize; j++) {
+                //获取当前循环的下标是多少
+                int pageIndex = ((j + 1) + (pageSize - 1)) / pageSize;
+                //判断当前的下标是否是对应线程的取值内
+                if (pageIndex == (i + 1)) {
+                    subList.add(list.get(j));
+                }
+                //判断当前的下标是否是对应线程的最大取值
+                if ((j + 1) == ((i + 1) * pageSize)) {
+                    break;
+                }
+            }
+            listArray.add(subList);
+        }
+        return listArray;
+    }
+}

+ 10 - 9
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MemberInfoServiceImpl.java

@@ -228,25 +228,26 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
         if (zxActivities != null && zxActivities.size() > 0) {
             map.put("activityNum", zxActivities.size());
             Map<String, List<ZxActivity>> collectType = zxActivities.stream().collect(Collectors.groupingBy(ZxActivity::getActivityType));
-            List<ZxActivity> activityScdyList = collectType.get(TWO);
+            List<ZxActivity> activityScdyList = collectType.get(ONE);
             if (activityScdyList != null){
                 //活动视察调研
                 map.put("activityScdyNum", activityScdyList.size());
                 memberInfoVo.setActivityScdyList(activityScdyList);
             }
-            List<ZxActivity> activityLlzList = collectType.get(THR);
-            if (activityLlzList != null){
-                //活动联络组
-                map.put("activityLlzNum", activityLlzList.size());
-                memberInfoVo.setActivityLlzList(activityLlzList);
-            }
-            List<ZxActivity> activityJbList = collectType.get(THR);
+            List<ZxActivity> activityJbList = collectType.get(TWO);
             if (activityJbList != null){
                 //活动界别
                 map.put("activityJbNum", activityJbList.size());
                 memberInfoVo.setActivityJbList(activityJbList);
             }
-            List<ZxActivity> activityBssList = collectType.get(THR);
+            List<ZxActivity> activityLlzList = collectType.get(THR);
+            if (activityLlzList != null){
+                //政协委员工作室
+                map.put("activityLlzNum", activityLlzList.size());
+                memberInfoVo.setActivityLlzList(activityLlzList);
+            }
+
+            List<ZxActivity> activityBssList = collectType.get(FOR);
             if (activityBssList != null){
                 //活动为群众办实事
                 map.put("activityBssNum", activityBssList.size());

+ 43 - 26
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskService.java

@@ -1,7 +1,9 @@
 package com.ruoyi.system.service.impl;
 
 import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.common.utils.BranchThreadUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.system.domain.ProposalInfo;
 import com.ruoyi.system.domain.activity.ZxActivity;
 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.mapper.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
@@ -31,7 +34,7 @@ import static com.ruoyi.common.constant.CommonConstants.*;
  * @Describe:
  */
 @Service
-public class TaskService {
+public class TaskService extends Thread{
     @Autowired
     private MemberInfoMapper memberInfoMapper;
     @Autowired
@@ -59,6 +62,7 @@ public class TaskService {
     @Autowired
     private ZxInvestmentMapper zxInvestmentMapper;
 
+
     /**
      * 更新所有委员分数,排名
      */
@@ -410,32 +414,45 @@ public class TaskService {
                 memberAssessmentInf.setTotalScore(totalScore);
                 memberAssessmentInfoListNew.add(memberAssessmentInf);
             }
-            //计算排名
-            int index = 0;
-            //最近的一次分数
-            Long lastScore = 0L;
             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("定时任务结束");