Răsfoiți Sursa

同步功能-合同段不允许新增表单

LHB 2 luni în urmă
părinte
comite
f57c7b8389

+ 18 - 20
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java

@@ -376,7 +376,7 @@ public class WbsSynchronousServiceImpl {
                         if (ObjectUtils.equals(templateNode.getTreePId(), editPrivateNode.getTreePId())) {
                             if (templateNode.getType() == 1) {
                                 editPrivateNode.setNodeName(templateNode.getNodeName());
-                                editData.add(editPrivateNode);
+                                editPrivateNodes.add(editPrivateNode);
                             } else {
                                 //清表
                                 if (collect.contains(2)) {
@@ -439,9 +439,6 @@ public class WbsSynchronousServiceImpl {
                         }
                     }
                 }
-                if (CollectionUtil.isEmpty(editPrivateNodes)) {
-//                    throw new ServiceException("未找到需要更新的表单,请检查选择的表单是否正确");
-                }
 
                 //转List做排序
                 List<Integer> arrayList = new ArrayList<>(collect);
@@ -451,10 +448,6 @@ public class WbsSynchronousServiceImpl {
                         //添加表单
                         case 1:
                             insertPrivateForm(wbsTreeSynchronousRecord, wbsTreePrivates, addPrivateNodes);
-                            //如果同时选择新增表单和其他的同步类型  在操作其他类型的时候需要添加新的表单
-//                            if (CollectionUtil.isNotEmpty(addPrivateNodes)) {
-//                                editPrivateNodes.addAll(addPrivateNodes.stream().filter(f -> f.getType() == 2).collect(Collectors.toList()));
-//                            }
                             break;
                         //清表
                         case 2:
@@ -625,12 +618,12 @@ public class WbsSynchronousServiceImpl {
                         List<Long> typePrivateIds = wbsTreeContracts.stream().map(WbsTreeContract::getIsTypePrivatePid).collect(Collectors.toList());
 
                         //需要新增的表单
-                        List<WbsTreePrivate> addPrivateNodes = wbsTreePrivates.stream().filter(f -> !typePrivateIds.contains(f.getPKeyId())).collect(Collectors.toList());
+                        List<WbsTreePrivate> addPrivateNodes = wbsTreePrivates.stream().filter(f -> f.getType() == 2 && !typePrivateIds.contains(f.getPKeyId())).collect(Collectors.toList());
 
                         //如果没有选中 则默认同步所有
                         if (CollectionUtil.isNotEmpty(formList)) {
                             //二次筛选  只保留任务选中的表单   但可能新增的数据包含新节点
-                            addPrivateNodes = addPrivateNodes.stream().filter(f -> f.getType() == 1 || formList.contains(f.getPKeyId())).collect(Collectors.toList());
+                            addPrivateNodes = addPrivateNodes.stream().filter(f -> formList.contains(f.getPKeyId())).collect(Collectors.toList());
                         }
 
                         //筛选出需要更新的节点  同时做数据隔离
@@ -643,7 +636,7 @@ public class WbsSynchronousServiceImpl {
                                 if (ObjectUtils.equals(templateNode.getPKeyId(), editContractNode.getIsTypePrivatePid())) {
                                     if (templateNode.getType() == 1) {
                                         editContractNode.setNodeName(templateNode.getNodeName());
-                                        editData.add(editContractNode);
+                                        editContractNodes.add(editContractNode);
                                     } else {
                                         //同步范围 当前节点是否允许修改
                                         Boolean isSync = false;
@@ -656,15 +649,20 @@ public class WbsSynchronousServiceImpl {
                                                     if (submit == null && contractRanges.contains(WbsSyncTypeEnum.NOT_FILLED_IN.code)) {
                                                         //未审批 101
                                                         isSync = true;
-                                                    } else if (submit == 0 && contractRanges.contains(WbsSyncTypeEnum.ALREADY_FILLED_IN_NOT_REPORTED.code)) {
-                                                        //已填报-未上报 102
-                                                        isSync = true;
-                                                    } else if (submit == 1 && contractRanges.contains(WbsSyncTypeEnum.PENDING_APPROVAL.code)) {
-                                                        //待审批 104
-                                                        isSync = true;
-                                                    } else if (submit == 2 && contractRanges.contains(WbsSyncTypeEnum.APPROVED.code)) {
-                                                        //已审批 105
-                                                        isSync = true;
+                                                    } else {
+                                                        if(submit == null){
+                                                            throw new ServiceException(wbsTreeContract.getNodeName() + "--下表单未查到填报信息");
+                                                        }
+                                                        if (submit == 0 && contractRanges.contains(WbsSyncTypeEnum.ALREADY_FILLED_IN_NOT_REPORTED.code)) {
+                                                            //已填报-未上报 102
+                                                            isSync = true;
+                                                        } else if (submit == 1 && contractRanges.contains(WbsSyncTypeEnum.PENDING_APPROVAL.code)) {
+                                                            //待审批 104
+                                                            isSync = true;
+                                                        } else if (submit == 2 && contractRanges.contains(WbsSyncTypeEnum.APPROVED.code)) {
+                                                            //已审批 105
+                                                            isSync = true;
+                                                        }
                                                     }
                                                     break;
                                                 //试验

+ 55 - 19
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeSynchronousRecordServiceImpl.java

@@ -1,9 +1,11 @@
 package org.springblade.manager.service.impl;
 
 import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.redisson.api.RedissonClient;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.BladeUser;
@@ -92,17 +94,16 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
         ProjectInfo tempProject = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery()
                 .eq(ProjectInfo::getId, mWbsTreeSynchronousRecord.getTemplateId()));
         //当前项目绑定的是公有模板还是私有项目
-        if(mWbsTreeSynchronousRecord.getRange() == 1 && tempProject == null && (
-                mWbsTreeSynchronousRecord.getType().contains("2")||
-                mWbsTreeSynchronousRecord.getType().contains("3")||
-                mWbsTreeSynchronousRecord.getType().contains("4")||
-                mWbsTreeSynchronousRecord.getType().contains("5")||
-                mWbsTreeSynchronousRecord.getType().contains("6"))){
+        if (mWbsTreeSynchronousRecord.getRange() == 1 && tempProject == null && (
+                mWbsTreeSynchronousRecord.getType().contains("2") ||
+                        mWbsTreeSynchronousRecord.getType().contains("3") ||
+                        mWbsTreeSynchronousRecord.getType().contains("4") ||
+                        mWbsTreeSynchronousRecord.getType().contains("5") ||
+                        mWbsTreeSynchronousRecord.getType().contains("6"))) {
             throw new ServiceException("模板为公共模板,无法选择");
         }
 
 
-
         //获取项目名称
         ProjectInfo projectInfo = projectInfoMapper.selectById(mWbsTreeSynchronousRecord.getProjectId());
         if (projectInfo == null) {
@@ -213,21 +214,56 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
         if (isPublic) {
             //公共项目
             WbsInfo wbsInfo = wbsInfoMapper.selectById(wbsTreePrivate.getWbsId());
-            WbsTreeSynchronousRecordVo wbsTreeSynchronousRecordVo = new WbsTreeSynchronousRecordVo();
-            wbsTreeSynchronousRecordVo.setId(Long.valueOf(nodeId));
-            wbsTreeSynchronousRecordVo.setName(wbsInfo.getWbsName());
-            wbsTreeSynchronousRecordVo.setType(1);
-            list.add(wbsTreeSynchronousRecordVo);
+
+            LambdaQueryWrapper<ProjectInfo> wrapper = Wrappers.<ProjectInfo>lambdaQuery();
+            wrapper.eq(ProjectInfo::getIsDeleted, 0);
+            //查询所有公共项目下的项目
+            if ("1".equals(wbsTreePrivate.getWbsType())) {
+                //质检
+                wrapper.eq(ProjectInfo::getReferenceWbsTemplateId, wbsInfo.getId());
+            } else if ("2".equals(wbsTreePrivate.getWbsType())) {
+                //试验
+                wrapper.eq(ProjectInfo::getReferenceWbsTemplateIdTrial, wbsInfo.getId());
+            } else if ("3".equals(wbsTreePrivate.getWbsType())) {
+                //计量
+                wrapper.eq(ProjectInfo::getReferenceWbsTemplateIdMeter, wbsInfo.getId());
+            } else if ("4".equals(wbsTreePrivate.getWbsType())) {
+                //日志
+                wrapper.eq(ProjectInfo::getReferenceLogWbsTemplateId, wbsInfo.getId());
+            } else if ("5".equals(wbsTreePrivate.getWbsType())) {
+                //征拆
+                wrapper.eq(ProjectInfo::getReferenceWbsTemplateIdLar, wbsInfo.getId());
+            }
+            List<ProjectInfo> projectInfos = projectInfoMapper.selectList(wrapper);
+            for (ProjectInfo info : projectInfos) {
+                WbsTreeSynchronousRecordVo wbsTreeSynchronousRecordVo = new WbsTreeSynchronousRecordVo();
+                wbsTreeSynchronousRecordVo.setId(info.getId());
+                wbsTreeSynchronousRecordVo.setName(info.getProjectName());
+                wbsTreeSynchronousRecordVo.setType(2);
+                wbsTreeSynchronousRecordVo.setWbsId(String.valueOf(wbsInfo.getId()));
+                list.add(wbsTreeSynchronousRecordVo);
+
+            }
             return list;
         } else {
             WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectById(wbsTreePrivate.getWbsId());
-            ProjectInfo projectInfo1 = projectInfoMapper.selectById(wbsTreePrivate1.getProjectId());
-            WbsTreeSynchronousRecordVo wbsTreeSynchronousRecordVo = new WbsTreeSynchronousRecordVo();
-            wbsTreeSynchronousRecordVo.setId(projectInfo1.getId());
-            wbsTreeSynchronousRecordVo.setName(projectInfo1.getProjectName());
-            wbsTreeSynchronousRecordVo.setType(2);
-            wbsTreeSynchronousRecordVo.setWbsId(wbsTreePrivate1.getWbsId());
-            list.add(wbsTreeSynchronousRecordVo);
+
+            //查询私有下的项目
+            List<WbsTreePrivate> list1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                    .select(WbsTreePrivate::getProjectId)
+                    .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                    .isNotNull(WbsTreePrivate::getProjectId)
+                    .eq(WbsTreePrivate::getParentId, 0));
+            for (WbsTreePrivate treePrivate : list1) {
+                ProjectInfo projectInfo2 = projectInfoMapper.selectById(treePrivate.getProjectId());
+                WbsTreeSynchronousRecordVo wbsTreeSynchronousRecordVo = new WbsTreeSynchronousRecordVo();
+                wbsTreeSynchronousRecordVo.setId(projectInfo2.getId());
+                wbsTreeSynchronousRecordVo.setName(projectInfo2.getProjectName());
+                wbsTreeSynchronousRecordVo.setType(2);
+                wbsTreeSynchronousRecordVo.setWbsId(wbsTreePrivate.getWbsId());
+                list.add(wbsTreeSynchronousRecordVo);
+            }
+
             return getTempProject(nodeId, wbsTreePrivate1, list);
         }
     }