Browse Source

批量审核

wangtong 1 năm trước cách đây
mục cha
commit
46d772bac9

+ 16 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zdsz/ZEngineeringCivilController.java

@@ -5,8 +5,11 @@ import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
 import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
+import com.ruoyi.zdsz.domain.bo.ZEngineeringReviewBo;
+import com.ruoyi.zdsz.service.IZEngineeringReviewService;
 import lombok.RequiredArgsConstructor;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.*;
 
@@ -41,6 +44,8 @@ import com.ruoyi.common.core.page.TableDataInfo;
 public class ZEngineeringCivilController extends BaseController {
 
     private final IZEngineeringCivilService iZEngineeringCivilService;
+    @Resource
+    private IZEngineeringReviewService izEngineeringReviewService;
 
     /**
      * 查询民用工程列表
@@ -155,5 +160,16 @@ public class ZEngineeringCivilController extends BaseController {
         return R.ok(iZEngineeringCivilService.batchReview(bo,zEngineeringNodeBo));
     }
 
+    /**
+     * 批量审核
+     * @param bo
+     * @return
+     */
+    @Log(title = "民用工程", businessType = BusinessType.OTHER)
+    @GetMapping("/Review")
+    public R Review( ZEngineeringReviewBo zEngineeringReviewBo) {
+        return R.ok(izEngineeringReviewService.insert(zEngineeringReviewBo));
+    }
+
 
 }

+ 23 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/GetBeanUtil.java

@@ -0,0 +1,23 @@
+package com.ruoyi.common.utils;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class GetBeanUtil implements ApplicationContextAware {
+    private static ApplicationContext applicationContext;
+
+    public void setApplicationContext(ApplicationContext context) {
+        GetBeanUtil.applicationContext = context;
+    }
+
+    public static Object getBean(String name) {
+        return applicationContext.getBean(name);
+    }
+
+    public static ApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+}
+

+ 1 - 1
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/IZEngineeringNodeService.java

@@ -86,5 +86,5 @@ public interface IZEngineeringNodeService {
      * @param zEngineeringCivilList
      * @return
      */
-     int batchReview(List<ZEngineeringCivil> zEngineeringCivilList,ZEngineeringNodeBo zEngineeringNodeBo);
+     int batchReview(List<ZEngineeringCivil> zEngineeringCivilList,ZEngineeringNodeBo zEngineeringNodeBo,String userId);
 }

+ 7 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/IZEngineeringReviewService.java

@@ -44,6 +44,13 @@ public interface IZEngineeringReviewService {
     Boolean insert(ZEngineeringReviewBo bo);
 
     /**
+     * 批量插入
+     * @param bo
+     * @return
+     */
+    Boolean Bacthinsert(ZEngineeringReview bo);
+
+    /**
      * 批量审核
      * @param bo
      * @return

+ 26 - 8
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringCivilServiceImpl.java

@@ -8,19 +8,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.zdsz.domain.ZArea;
-import com.ruoyi.zdsz.domain.bo.ZAreaBo;
 import com.ruoyi.zdsz.domain.bo.ZBuildingBo;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
 import com.ruoyi.zdsz.domain.vo.*;
 import com.ruoyi.zdsz.mapper.ZAreaMapper;
 import com.ruoyi.zdsz.service.IZEngineeringNodeService;
-import com.ruoyi.zdsz.service.IZEngineeringReviewService;
 import com.ruoyi.zdsz.service.IZMaterialStatisticsService;
+import com.ruoyi.zdsz.task.RiewTask;
 import lombok.RequiredArgsConstructor;
-import lombok.Value;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringCivilBo;
 import com.ruoyi.zdsz.domain.ZEngineeringCivil;
@@ -337,15 +334,36 @@ public class ZEngineeringCivilServiceImpl implements IZEngineeringCivilService {
         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;
+        List <ZEngineeringCivil>  newList = new ArrayList() ;
         if (zEngineeringCivilList.size()>0)
         {
-            ScheduledThreadPoolExecutor threadPoolTaskExecutor=new ScheduledThreadPoolExecutor((zEngineeringCivilList.size()/50)+1);
-            CountDownLatch countDownLatch = new CountDownLatch((zEngineeringCivilList.size()/50)+1);
+            int runSize=zEngineeringCivilList.size()/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);
+                }
+
+                threadPoolTaskExecutor.execute(new RiewTask(newList,zEngineeringNodeBo));
+            }
+
+            threadPoolTaskExecutor.shutdown();
 
-            izEngineeringNodeService.batchReview(zEngineeringCivilList,zEngineeringNodeBo);
         }
 
         return 0;
     }
+
 }
+
+

+ 7 - 5
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringNodeServiceImpl.java

@@ -12,6 +12,7 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.handler.MonthTableNameHandler;
 import com.ruoyi.zdsz.domain.ZEngineeringCivil;
 import com.ruoyi.zdsz.domain.ZEngineeringNode;
+import com.ruoyi.zdsz.domain.ZEngineeringReview;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringInfoBo;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringReviewBo;
@@ -150,8 +151,9 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
     }
 
     @Override
-    public int batchReview(List<ZEngineeringCivil> zEngineeringCivilList,ZEngineeringNodeBo bo) {
-        zEngineeringCivilList.stream().forEach(item->{
+    @Async
+    public int batchReview(List<ZEngineeringCivil> zEngineeringCivilList,ZEngineeringNodeBo bo,String userId) {
+        zEngineeringCivilList.forEach(item->{
             SimpleDateFormat format = new SimpleDateFormat("yyyy_MM");
             LambdaQueryWrapper<ZEngineeringNode> lqw = Wrappers.lambdaQuery();
             lqw.eq(StringUtils.isNotBlank(item.getId()), ZEngineeringNode::getCivliId,item.getId());
@@ -159,14 +161,14 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
             format.format(item.getCreateTime());
             MonthTableNameHandler.setData(format.format(item.getCreateTime()));
            ZEngineeringNode zEngineeringNode=baseMapper.selectOne(lqw);
-            ZEngineeringReviewBo zEngineeringReview =new ZEngineeringReviewBo();
+            ZEngineeringReview zEngineeringReview =new ZEngineeringReview();
             zEngineeringReview.setReviewTime( new Date());
             zEngineeringReview.setReviewContent("批量审核");
             zEngineeringReview.setReviewStatus("1");
-            zEngineeringReview.setReviewUser(LoginHelper.getLoginUser().getUserId().toString());
+            zEngineeringReview.setReviewUser(userId);
             zEngineeringReview.setCreateTime(item.getCreateTime());
             zEngineeringReview.setEngInfoId(zEngineeringNode.getId());
-            izEngineeringReviewService.insert(zEngineeringReview);
+            izEngineeringReviewService.Bacthinsert(zEngineeringReview);
             MonthTableNameHandler.removeData();
         });
         return 0;

+ 17 - 1
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringReviewServiceImpl.java

@@ -123,7 +123,7 @@ public class ZEngineeringReviewServiceImpl implements IZEngineeringReviewService
         bo.setReviewUser(String.valueOf(LoginHelper.getLoginUser().getUserId()));
         ZEngineeringReview add = BeanUtil.toBean(bo, ZEngineeringReview.class);
         validEntityBeforeSave(add);
-        boolean flag = baseMapper.insert(add) > 0;
+        boolean flag = baseMapper.insert(add)> 0;
         if (flag) {
             bo.setId(add.getId());
         }
@@ -131,6 +131,22 @@ public class ZEngineeringReviewServiceImpl implements IZEngineeringReviewService
     }
 
     @Override
+    @DynamicName(spel = "#bo.createTime")
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean Bacthinsert(ZEngineeringReview bo) {
+        LambdaQueryWrapper<ZEngineeringReview> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getEngInfoId()), ZEngineeringReview::getEngInfoId, bo.getEngInfoId());
+           boolean flag =false;
+        if (!baseMapper.exists(lqw))
+            {
+                flag=  baseMapper.insert(bo)> 0;
+            }
+
+
+        return flag;
+    }
+
+    @Override
     public Boolean insertBacth(List<ZEngineeringReviewBo> bo) {
         bo.stream().forEach(item->{
             LambdaQueryWrapper<ZEngineeringReview> lqw = Wrappers.lambdaQuery();

+ 34 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/task/RiewTask.java

@@ -0,0 +1,34 @@
+package com.ruoyi.zdsz.task;
+
+import com.ruoyi.common.helper.LoginHelper;
+import com.ruoyi.common.utils.GetBeanUtil;
+import com.ruoyi.zdsz.domain.ZEngineeringCivil;
+import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
+import com.ruoyi.zdsz.service.IZEngineeringNodeService;
+import org.springframework.context.ApplicationContext;
+
+
+import javax.annotation.Resource;
+import java.beans.beancontext.BeanContext;
+import java.util.List;
+
+public class RiewTask  implements  Runnable{
+
+    private IZEngineeringNodeService izEngineeringNodeService;
+    private List<ZEngineeringCivil> zEngineeringCivilList;
+    private ZEngineeringNodeBo zEngineeringNodeBo;
+    private  String userId;
+
+    public  RiewTask(List<ZEngineeringCivil> zEngineeringCivilList, ZEngineeringNodeBo zEngineeringNodeBo)
+    {
+        this.zEngineeringCivilList=zEngineeringCivilList;
+        this.zEngineeringNodeBo=zEngineeringNodeBo;
+        this.izEngineeringNodeService= GetBeanUtil.getApplicationContext().getBean(IZEngineeringNodeService.class);
+        this.userId= LoginHelper.getLoginUser().getUserId().toString();
+    }
+    @Override
+    public void run() {
+        izEngineeringNodeService.batchReview(zEngineeringCivilList,zEngineeringNodeBo,userId);
+
+    }
+}