浏览代码

批量审核

wangtong 1 年之前
父节点
当前提交
5f3a3a91de

+ 31 - 17
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringCivilServiceImpl.java

@@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -333,32 +334,45 @@ public class ZEngineeringCivilServiceImpl implements IZEngineeringCivilService {
         lqw.eq(StringUtils.isNotBlank(bo.getEnginCycle()), ZEngineeringCivil::getEnginCycle, bo.getEnginCycle());
         lqw.eq(StringUtils.isNotBlank(bo.getEnginClassification()), ZEngineeringCivil::getEnginClassification, bo.getEnginClassification());
         lqw.eq(StringUtils.isNotBlank(bo.getEnginType()), ZEngineeringCivil::getEnginType, bo.getEnginType());
-        List<ZEngineeringCivil> zEngineeringCivilList=baseMapper.selectList(lqw);
-        int count=50;
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
+        lqw.like(StringUtils.isNotBlank(bo.getCreateTime().toString()), ZEngineeringCivil::getCreateTime, "%"+dateFormat.format(bo.getCreateTime())+"%");
+          Long sumcount=baseMapper.selectCount(lqw);
+//        List<ZEngineeringCivil> zEngineeringCivilList=baseMapper.selectList(lqw);
+        /**
+         * 线程执行插入量
+         */
+        int count=5000;
         List <ZEngineeringCivil>  newList = new ArrayList() ;
-        if (zEngineeringCivilList.size()>0)
+        if (sumcount>0)
         {
-            int runSize=zEngineeringCivilList.size()/count+1;
+            //线程数量(根据查询总数量进行分配线程数量)
+            int runSize= (int) (sumcount/count+1);
             ScheduledThreadPoolExecutor threadPoolTaskExecutor=new ScheduledThreadPoolExecutor(runSize);
             CountDownLatch countDownLatch = new CountDownLatch(runSize);
-
             for(int i=0;i<runSize;i++)
             {
-                if((i+1)==runSize){
-                    int startIndex = (i*count);;
-                    int endIndex = zEngineeringCivilList.size();
-                    newList =zEngineeringCivilList.subList(startIndex,endIndex);
-                }else{
-                    int startIndex = i*count;;
-                    int endIndex = (i+1)*count;
-                    newList =zEngineeringCivilList.subList(startIndex,endIndex);
-                }
+                Page page=new Page<>(i,count);
+                Page<ZEngineeringCivil> zEngineeringCivilPage=baseMapper.selectPage(page,lqw);
+//                if((i+1)==runSize){
+//                    int startIndex = (i*count);;
+//                    int endIndex = zEngineeringCivilList.size();
+//                    newList =zEngineeringCivilList.subList(startIndex,endIndex);
+//                }else{
+//                    int startIndex = i*count;;
+//                    int endIndex = (i+1)*count;
+//                    newList =zEngineeringCivilList.subList(startIndex,endIndex);
+//                }
 
-                threadPoolTaskExecutor.execute(new RiewTask(newList,zEngineeringNodeBo));
+                threadPoolTaskExecutor.execute(new RiewTask(zEngineeringCivilPage.getRecords(),zEngineeringNodeBo,countDownLatch));
             }
-
             threadPoolTaskExecutor.shutdown();
-
+//            try {
+//                countDownLatch.await();
+//                threadPoolTaskExecutor.shutdown();
+//            } catch (InterruptedException e) {
+//                throw new RuntimeException(e);
+//            }
+//
         }
 
         return 0;

+ 3 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringNodeServiceImpl.java

@@ -161,6 +161,8 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
             format.format(item.getCreateTime());
             MonthTableNameHandler.setData(format.format(item.getCreateTime()));
            ZEngineeringNode zEngineeringNode=baseMapper.selectOne(lqw);
+           if (null!=zEngineeringNode)
+           {
             ZEngineeringReview zEngineeringReview =new ZEngineeringReview();
             zEngineeringReview.setReviewTime( new Date());
             zEngineeringReview.setReviewContent("批量审核");
@@ -169,6 +171,7 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
             zEngineeringReview.setCreateTime(item.getCreateTime());
             zEngineeringReview.setEngInfoId(zEngineeringNode.getId());
             izEngineeringReviewService.Bacthinsert(zEngineeringReview);
+           }
             MonthTableNameHandler.removeData();
         });
         return 0;

+ 9 - 2
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/task/RiewTask.java

@@ -11,6 +11,7 @@ import org.springframework.context.ApplicationContext;
 import javax.annotation.Resource;
 import java.beans.beancontext.BeanContext;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
 
 public class RiewTask  implements  Runnable{
 
@@ -18,17 +19,23 @@ public class RiewTask  implements  Runnable{
     private List<ZEngineeringCivil> zEngineeringCivilList;
     private ZEngineeringNodeBo zEngineeringNodeBo;
     private  String userId;
+    private   CountDownLatch countDownLatch;
 
-    public  RiewTask(List<ZEngineeringCivil> zEngineeringCivilList, ZEngineeringNodeBo zEngineeringNodeBo)
+    public  RiewTask(List<ZEngineeringCivil> zEngineeringCivilList, ZEngineeringNodeBo zEngineeringNodeBo, CountDownLatch countDownLatch)
     {
         this.zEngineeringCivilList=zEngineeringCivilList;
         this.zEngineeringNodeBo=zEngineeringNodeBo;
         this.izEngineeringNodeService= GetBeanUtil.getApplicationContext().getBean(IZEngineeringNodeService.class);
         this.userId= LoginHelper.getLoginUser().getUserId().toString();
+        this.countDownLatch=countDownLatch;
     }
     @Override
     public void run() {
-        izEngineeringNodeService.batchReview(zEngineeringCivilList,zEngineeringNodeBo,userId);
+        if (zEngineeringCivilList.size()>0)
+        {
+            izEngineeringNodeService.batchReview(zEngineeringCivilList,zEngineeringNodeBo,userId);
+        }
+        countDownLatch.countDown();//发出线程任务完成的信号
 
     }
 }