Browse Source

节点用料为一对多

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

+ 1 - 0
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java

@@ -3,6 +3,7 @@ package com.ruoyi;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
+import org.springframework.scheduling.annotation.EnableAsync;
 
 /**
  * 启动程序

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -242,7 +242,7 @@ xss:
 # 全局线程池相关配置
 thread-pool:
   # 是否开启线程池
-  enabled: false
+  enabled: true
   # 队列最大长度
   queueCapacity: 128
   # 线程池维护线程所允许的空闲时间

+ 2 - 2
ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java

@@ -59,9 +59,9 @@ public class LoginHelper {
         // 例如: 后台用户30分钟过期 app用户1天过期
         UserType userType = UserType.getUserType(loginUser.getUserType());
         if (userType == UserType.SYS_USER) {
-            model.setTimeout(86400).setActiveTimeout(1800);
+            model.setTimeout(86400).setActiveTimeout(86400);
         } else if (userType == UserType.APP_USER) {
-            model.setTimeout(86400).setActiveTimeout(1800);
+            model.setTimeout(86400).setActiveTimeout(86400);
         }
         StpUtil.login(loginUser.getLoginId(), model.setExtra(USER_KEY, loginUser.getUserId()));
         StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DynamicNameAspect.java

@@ -68,7 +68,7 @@ public class DynamicNameAspect {
             log.info(tableName.toString());
             //防止注入若想查询大于当前日期之后的表默认返回当前日期
             if (StringUtils.hasText(tableName.toString())&&new Date().after(tableName)) {
-              String date=  new SimpleDateFormat("yyyy_MM").format(tableName);
+                String date=  new SimpleDateFormat("yyyy_MM").format(tableName);
                 //将年月存入线程
                 MonthTableNameHandler.setData(date);
             }else {

+ 4 - 3
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/domain/bo/ZEngineeringInfoBo.java

@@ -130,11 +130,12 @@ public class ZEngineeringInfoBo extends BaseEntity {
     @NotNull(message = "照片不能为空", groups = { AddGroup.class, EditGroup.class })
     private List<String> zEngiineeringPhotoBoList;
 
-    public ZEngineeringMaterialBo getzEngineeringMaterialBo() {
+
+    public List<ZEngineeringMaterialBo> getzEngineeringMaterialBo() {
         return zEngineeringMaterialBo;
     }
 
-    public void setzEngineeringMaterialBo(ZEngineeringMaterialBo zEngineeringMaterialBo) {
+    public void setzEngineeringMaterialBo(List<ZEngineeringMaterialBo> zEngineeringMaterialBo) {
         this.zEngineeringMaterialBo = zEngineeringMaterialBo;
     }
 
@@ -142,7 +143,7 @@ public class ZEngineeringInfoBo extends BaseEntity {
      * 工程用料
      */
 
-    private  ZEngineeringMaterialBo zEngineeringMaterialBo;
+    private  List<ZEngineeringMaterialBo> zEngineeringMaterialBo;
 
     public ZEngineeringReviewBo getzEngineeringReviewBo() {
         return zEngineeringReviewBo;

+ 2 - 2
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/IZEngineeringMaterialService.java

@@ -2,7 +2,6 @@ package com.ruoyi.zdsz.service;
 
 import com.ruoyi.zdsz.domain.ZEngineeringMaterial;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringInfoBo;
-import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
 import com.ruoyi.zdsz.domain.vo.ZEngineeringMaterialVo;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringMaterialBo;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -26,7 +25,7 @@ public interface IZEngineeringMaterialService {
     /**
      * 查询工程用料
      */
-    ZEngineeringMaterialBo query(ZEngineeringInfoBo bo);
+    List<ZEngineeringMaterialBo> query(ZEngineeringInfoBo bo);
 
     /**
      * 查询工程用料列表
@@ -59,6 +58,7 @@ public interface IZEngineeringMaterialService {
      */
 
     Boolean update(ZEngineeringMaterialBo bo);
+    Boolean updateList(ZEngineeringInfoBo bo);
     Boolean delete(ZEngineeringInfoBo bo);
 
     /**

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

@@ -7,7 +7,6 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.domain.PageQuery;
 
 import java.util.Collection;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -61,6 +60,9 @@ public interface IZEngineeringNodeService {
     ZEngineeringNode insert(ZEngineeringNodeBo bo);
 
 
+
+
+
     /**
      * 修改工程节点
      */
@@ -78,4 +80,5 @@ public interface IZEngineeringNodeService {
      * 校验并批量删除工程节点信息
      */
     Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+    String ZEngineeringReview(ZEngineeringNodeBo bo);
 }

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

@@ -2,6 +2,7 @@ package com.ruoyi.zdsz.service;
 
 import com.ruoyi.zdsz.domain.ZEngineeringReview;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
+import com.ruoyi.zdsz.domain.vo.ZEngineeringNodeVo;
 import com.ruoyi.zdsz.domain.vo.ZEngineeringReviewVo;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringReviewBo;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -43,6 +44,14 @@ public interface IZEngineeringReviewService {
     Boolean insert(ZEngineeringReviewBo bo);
 
     /**
+     * 批量审核
+     * @param bo
+     * @return
+     */
+    Boolean insertBacth(List<ZEngineeringReviewBo> bo);
+
+
+    /**
      * 修改工程审核
      */
     Boolean updateByBo(ZEngineeringReviewBo bo);
@@ -51,4 +60,5 @@ public interface IZEngineeringReviewService {
      * 校验并批量删除工程审核信息
      */
     Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
 }

+ 12 - 6
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringInfoServiceImpl.java

@@ -70,7 +70,7 @@ public class ZEngineeringInfoServiceImpl implements IZEngineeringInfoService {
         zEngineeringInfoBo1.setHeadPhone(sysUser.getPhonenumber());
         zEngineeringInfoBo1.setConstructPhone(sysUser.getPhonenumber());
         List<String> photoList=izEngiineeringPhotoService.queryList(zEngineeringInfoBo1.getId());
-        ZEngineeringMaterialBo zEngineeringMaterialBo=izEngineeringMaterialService.query(zEngineeringInfoBo1);
+        List<ZEngineeringMaterialBo> zEngineeringMaterialBo=izEngineeringMaterialService.query(zEngineeringInfoBo1);
         zEngineeringInfoBo1.setzEngiineeringPhotoBoList(photoList);
         zEngineeringInfoBo1.setzEngineeringMaterialBo(zEngineeringMaterialBo);
         ZEngineeringReviewBo zEngineeringReviewbo=izEngineeringReviewService.query(bo);
@@ -79,7 +79,7 @@ public class ZEngineeringInfoServiceImpl implements IZEngineeringInfoService {
     }
 
     /**
-     * 查询工程详情列表
+     *
      */
     @Override
     public TableDataInfo<ZEngineeringInfoVo> queryPageList(ZEngineeringInfoBo bo, PageQuery pageQuery) {
@@ -145,9 +145,12 @@ public class ZEngineeringInfoServiceImpl implements IZEngineeringInfoService {
         if (flag) {
             bo.setId(add.getId());
         }
-        bo.getzEngineeringMaterialBo().setDetailsId(add.getId());
-        bo.getzEngineeringMaterialBo().setCreateTime(bo.getCreateTime());
-        izEngineeringMaterialService.insert( bo.getzEngineeringMaterialBo());
+        bo.getzEngineeringMaterialBo().stream().forEach(item->{
+            item.setDetailsId(add.getId());
+            item.setCreateTime(bo.getCreateTime());
+            izEngineeringMaterialService.insert(item);
+        });
+
         List <ZEngiineeringPhoto> photoList=new ArrayList();
             bo.getzEngiineeringPhotoBoList().stream().forEach(item->{
             ZEngiineeringPhoto zEngiineeringPhoto=new ZEngiineeringPhoto();
@@ -184,7 +187,10 @@ public class ZEngineeringInfoServiceImpl implements IZEngineeringInfoService {
             photoList.add(zEngiineeringPhoto);
         });
         izEngiineeringPhotoService.updateBatch(photoList);
-        izEngineeringMaterialService.update(bo.getzEngineeringMaterialBo());
+
+            izEngineeringMaterialService.updateList(bo);
+
+
         return baseMapper.updateById(update) > 0;
     }
 

+ 58 - 5
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringMaterialServiceImpl.java

@@ -9,7 +9,6 @@ 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.bo.ZEngineeringInfoBo;
-import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringMaterialBo;
@@ -19,9 +18,11 @@ import com.ruoyi.zdsz.mapper.ZEngineeringMaterialMapper;
 import com.ruoyi.zdsz.service.IZEngineeringMaterialService;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
+import java.util.stream.Collectors;
 
 /**
  * 工程用料Service业务层处理
@@ -45,12 +46,18 @@ public class ZEngineeringMaterialServiceImpl implements IZEngineeringMaterialSer
 
     @Override
     @DynamicName(spel = "#bo.createTime")
-    public ZEngineeringMaterialBo query(ZEngineeringInfoBo bo) {
+    public List<ZEngineeringMaterialBo> query(ZEngineeringInfoBo bo) {
         LambdaQueryWrapper<ZEngineeringMaterial> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getId()), ZEngineeringMaterial::getDetailsId, bo.getId());
-        ZEngineeringMaterial zEngineeringMaterialVo= baseMapper.selectOne(lqw);
-        ZEngineeringMaterialBo zEngineeringMaterialBo = BeanUtil.toBean(zEngineeringMaterialVo, ZEngineeringMaterialBo.class);
-        return zEngineeringMaterialBo;
+        List<ZEngineeringMaterial> zEngineeringMaterialVo= baseMapper.selectList(lqw);
+
+        List <ZEngineeringMaterialBo> zEngineeringMaterialBoList=new ArrayList<>();
+        zEngineeringMaterialVo.stream().forEach(item->{
+            ZEngineeringMaterialBo zEngineeringMaterialBo = BeanUtil.toBean(item, ZEngineeringMaterialBo.class);
+            zEngineeringMaterialBoList.add(zEngineeringMaterialBo);
+        });
+
+        return zEngineeringMaterialBoList;
     }
 
     /**
@@ -129,6 +136,52 @@ public class ZEngineeringMaterialServiceImpl implements IZEngineeringMaterialSer
         validEntityBeforeSave(update);
         return baseMapper.updateById(update) > 0;
     }
+    @Override
+    @DynamicName(spel = "#Infobo.createTime")
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateList(ZEngineeringInfoBo Infobo) {
+        List<ZEngineeringMaterialBo> bo=Infobo.getzEngineeringMaterialBo();
+        LambdaQueryWrapper<ZEngineeringMaterial> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(Infobo.getId()), ZEngineeringMaterial::getDetailsId, Infobo.getId());
+        List boList=new ArrayList();
+        List selectList=new ArrayList();
+       List<ZEngineeringMaterial> zEngineeringMaterialVoList= baseMapper.selectList(lqw);
+        zEngineeringMaterialVoList.stream().forEach(item->{
+            selectList.add(item.getId());
+        });
+        bo.stream().forEach(item->{
+            boList.add(item.getId());
+            ZEngineeringMaterial update = BeanUtil.toBean(item, ZEngineeringMaterial.class);
+            validEntityBeforeSave(update);
+            boolean flag= baseMapper.updateById(update) > 0;
+        });
+        ZEngineeringMaterial update = BeanUtil.toBean(bo, ZEngineeringMaterial.class);
+        validEntityBeforeSave(update);
+        boolean flag= baseMapper.updateById(update) > 0;
+        List inlist = (List) boList.stream().filter(i->!selectList.contains(i)).collect(Collectors.toList());
+        List dllist= (List) selectList.stream().filter(i->!boList.contains(i)).collect(Collectors.toList());
+       if (dllist.size()!=0)
+       {
+           baseMapper.deleteBatchIds(dllist);
+       }
+       if (inlist.size()!=0)
+       {
+           List<ZEngineeringMaterial> zEngineeringMaterialList=new ArrayList<>();
+           bo.stream().forEach(item->{
+               inlist.stream().forEach(i->{
+                   if (item.getId()==i)
+                   {
+                       ZEngineeringMaterial update2 = BeanUtil.toBean(item, ZEngineeringMaterial.class);
+                       update2.setDetailsId(Infobo.getId());
+                       zEngineeringMaterialList.add(update2);
+                   }
+               });
+           });
+
+           baseMapper.insertBatch(zEngineeringMaterialList);
+       }
+        return flag ;
+    }
 
     @Override
     @DynamicName(spel = "#bo.createTime")

+ 129 - 9
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringNodeServiceImpl.java

@@ -1,20 +1,25 @@
 package com.ruoyi.zdsz.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ruoyi.common.annotation.DynamicName;
+import com.ruoyi.common.helper.LoginHelper;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.domain.PageQuery;
 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.ZEngineeringInfo;
+import com.ruoyi.framework.handler.MonthTableNameHandler;
+import com.ruoyi.zdsz.domain.ZEngineeringReview;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringInfoBo;
+import com.ruoyi.zdsz.domain.bo.ZEngineeringReviewBo;
 import com.ruoyi.zdsz.service.IZEngineeringInfoService;
+import com.ruoyi.zdsz.service.IZEngineeringMaterialService;
+import com.ruoyi.zdsz.service.IZEngineeringReviewService;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
 import com.ruoyi.zdsz.domain.vo.ZEngineeringNodeVo;
@@ -24,8 +29,14 @@ import com.ruoyi.zdsz.service.IZEngineeringNodeService;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
+import static cn.hutool.core.date.DateUtil.format;
+
 /**
  * 工程节点Service业务层处理
  *
@@ -34,11 +45,17 @@ import java.util.*;
  */
 @RequiredArgsConstructor
 @Service
+
 public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
 
     private final ZEngineeringNodeMapper baseMapper;
     @Resource
     private IZEngineeringInfoService izEngineeringInfoService;
+    @Resource
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+    @Resource
+    private IZEngineeringReviewService izEngineeringReviewService;
+
     /**
      * 查询工程节点
      */
@@ -50,10 +67,21 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
     @Override
     @DynamicName(spel = "#bo.createTime")
     public ZEngineeringNodeBo query(ZEngineeringNodeBo bo) {
-        ZEngineeringNode zEngineeringNodeVo=baseMapper.selectById(bo.getId());
-        ZEngineeringNodeBo zEngineeringNodeBo= BeanUtil.toBean(zEngineeringNodeVo, ZEngineeringNodeBo.class);
-       ZEngineeringInfoBo zEngineeringInfoBo= izEngineeringInfoService.query(zEngineeringNodeBo);
-       zEngineeringNodeBo.setzEngineeringInfoBo(zEngineeringInfoBo);
+        LambdaQueryWrapper<ZEngineeringNode> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getCivliId()), ZEngineeringNode::getCivliId, bo.getCivliId());
+//        lqw.eq(StringUtils.isNotBlank(bo.getType()), ZEngineeringNode::getType, bo.getType());
+        lqw.eq(ZEngineeringNode::getCreateBy, LoginHelper.getLoginUser().getUsername());
+        ZEngineeringNode zEngineeringNode=baseMapper.selectOne(lqw);
+//        ZEngineeringNode zEngineeringNodeVo=baseMapper.selectById(bo.getId());
+
+        if (zEngineeringNode==null)
+        {
+             return  null;
+        }
+        ZEngineeringNodeBo zEngineeringNodeBo= BeanUtil.toBean(zEngineeringNode, ZEngineeringNodeBo.class);
+        ZEngineeringInfoBo zEngineeringInfoBo= izEngineeringInfoService.query(zEngineeringNodeBo);
+        zEngineeringNodeBo.setzEngineeringInfoBo(zEngineeringInfoBo);
+        ZEngineeringReview(zEngineeringNodeBo);
         return zEngineeringNodeBo;
     }
 
@@ -72,6 +100,7 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
         return zEngineeringNodeBoList;
     }
 
+
     /**
      * 查询工程节点列表
      */
@@ -86,6 +115,7 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
      * 查询工程节点列表
      */
     @Override
+//    @DynamicName(spel = "#bo.createTime")
     public List<ZEngineeringNodeVo> queryList(ZEngineeringNodeBo bo) {
         LambdaQueryWrapper<ZEngineeringNode> lqw = buildQueryWrapper(bo);
         return baseMapper.selectVoList(lqw);
@@ -98,12 +128,67 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
         lqw.eq(StringUtils.isNotBlank(bo.getType()), ZEngineeringNode::getType, bo.getType());
         return lqw;
     }
+    @Override
+    @Async
+    public String ZEngineeringReview(ZEngineeringNodeBo bo) {
+        String userId=LoginHelper.getLoginUser().getUserId().toString();
+        SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");
+        Date date = new Date(System.currentTimeMillis());
+        formatter.format(date);
+        List<String>dateList= getMonthBetweenDates("2023-12","2024-01");
+        dateList.stream().forEach(item->{
+            Runnable runnable=new Runnable() {
+                @Override
+                public void run( ) {
+                    try {
+                        getZEngineeringNodeList(item,userId);
+                        Thread.sleep(30000);
+                    } catch (InterruptedException e) {
+                        throw new RuntimeException(e);
+                    }
+
+                }
+            };
+            threadPoolTaskExecutor.execute(runnable);
+        });
+        return null;
+    }
+    public  List getZEngineeringNodeList(String date,String UserId)
+    {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
+        List<ZEngineeringNodeVo> list= new ArrayList<>();
+        try {
+            Date startdate = format.parse(date);
+            ZEngineeringNodeBo zEngineeringNodeBo=new ZEngineeringNodeBo();
+            zEngineeringNodeBo.setCreateTime(startdate);
+            SimpleDateFormat format2 = new SimpleDateFormat("yyyy_MM");
+            MonthTableNameHandler.setData(format2.format(startdate));
+            list  =queryList(zEngineeringNodeBo);
+            List zEngineeringReviewList=new ArrayList<>();
+            list.stream().forEach(item->{
+                ZEngineeringReviewBo zEngineeringReview =new ZEngineeringReviewBo();
+                zEngineeringReview.setReviewTime( new Date());
+                zEngineeringReview.setReviewContent("批量审核");
+                zEngineeringReview.setReviewStatus("1");
+                zEngineeringReview.setReviewUser(UserId);
+                zEngineeringReview.setEngInfoId(item.getId());
+                zEngineeringReviewList.add(zEngineeringReview);
+
+            });
+            izEngineeringReviewService.insertBacth(zEngineeringReviewList);
+            MonthTableNameHandler.removeData();
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+
+        return list;
+
+    }
 
     /**
      * 新增工程节点
      */
     @Override
-
     public Boolean insertByBo(ZEngineeringNodeBo bo) {
         ZEngineeringNode add = BeanUtil.toBean(bo, ZEngineeringNode.class);
         validEntityBeforeSave(add);
@@ -133,6 +218,9 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
         izEngineeringInfoService.insert(bo.getzEngineeringInfoBo());
         return add;
     }
+
+
+
     /**
      * 修改工程节点
      */
@@ -182,4 +270,36 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+
+    /**
+     * 获取某个时间段内所有月份
+     * @param minDate
+     * @param maxDate
+     * @return
+     * @throws ParseException
+     */
+    public  List<String> getMonthBetweenDates(String minDate, String maxDate){
+        ArrayList<String> result = new ArrayList<String>();
+        Calendar min = Calendar.getInstance();
+        Calendar max = Calendar.getInstance();
+        min.setTime(parse(minDate,"yyyy-MM"));
+        min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
+        max.setTime(parse(maxDate,"yyyy-MM"));
+        max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
+        Calendar curr = min;
+        while (curr.before(max)) {
+            result.add(format(curr.getTime(),"yyyy-MM"));
+            curr.add(Calendar.MONTH, 1);
+        }
+        return result;
+    }
+    public  Date parse(String date, String pattern) {
+        try {
+            return new SimpleDateFormat(pattern).parse(date);
+        } catch (Exception e) {
+        }
+        return null;
+    }
+
 }

+ 34 - 4
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringReviewServiceImpl.java

@@ -10,8 +10,13 @@ import com.ruoyi.common.core.domain.PageQuery;
 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.framework.handler.MonthTableNameHandler;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
+import com.ruoyi.zdsz.domain.vo.ZEngineeringNodeVo;
+import com.ruoyi.zdsz.service.IZEngineeringNodeService;
 import lombok.RequiredArgsConstructor;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringReviewBo;
 import com.ruoyi.zdsz.domain.vo.ZEngineeringReviewVo;
@@ -20,10 +25,12 @@ import com.ruoyi.zdsz.mapper.ZEngineeringReviewMapper;
 import com.ruoyi.zdsz.service.IZEngineeringReviewService;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+import static cn.hutool.core.date.DateUtil.format;
 
 /**
  * 工程审核Service业务层处理
@@ -37,6 +44,7 @@ public class ZEngineeringReviewServiceImpl implements IZEngineeringReviewService
 
     private final ZEngineeringReviewMapper baseMapper;
 
+
     /**
      * 查询工程审核
      */
@@ -121,6 +129,27 @@ public class ZEngineeringReviewServiceImpl implements IZEngineeringReviewService
         return flag;
     }
 
+    @Override
+    public Boolean insertBacth(List<ZEngineeringReviewBo> bo) {
+        bo.stream().forEach(item->{
+            LambdaQueryWrapper<ZEngineeringReview> lqw = Wrappers.lambdaQuery();
+            lqw.eq(StringUtils.isNotBlank(item.getEngInfoId()), ZEngineeringReview::getEngInfoId, item.getEngInfoId());
+                if (!baseMapper.exists(lqw))
+                {
+                    ZEngineeringReview add = BeanUtil.toBean(item, ZEngineeringReview.class);
+                    validEntityBeforeSave(add);
+                     baseMapper.insert(add);
+                }
+
+
+        });
+
+
+
+        return null;
+    }
+
+
     /**
      * 修改工程审核
      */
@@ -148,4 +177,5 @@ public class ZEngineeringReviewServiceImpl implements IZEngineeringReviewService
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
 }