Browse Source

同步-复制节点和全局公式 使用事务管理事务

LHB 2 tháng trước cách đây
mục cha
commit
777b6e87a0

+ 23 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousEViSaServiceImpl.java

@@ -2,10 +2,7 @@ package org.springblade.manager.service.impl;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.manager.entity.TextdictInfo;
-import org.springblade.manager.entity.WbsTreeContract;
-import org.springblade.manager.entity.WbsTreePrivate;
-import org.springblade.manager.entity.WbsTreeSynchronousRecord;
+import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.TextdictInfoMapper;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
@@ -35,6 +32,10 @@ public class WbsSynchronousEViSaServiceImpl {
     @Autowired
     private WbsTreeSynchronousRecordMapper synchronousRecordMapper;
 
+    //公式
+    @Autowired
+    private ElementFormulaMappingServiceImpl elementFormulaMappingService;
+
     @Transactional(rollbackFor = Exception.class)
     public void updateTextDictInfo(Long projectId, List<Long> editPrivateIds, List<TextdictInfo> addData) {
         //删除 需要新增的节点的电签和默认值
@@ -93,4 +94,22 @@ public class WbsSynchronousEViSaServiceImpl {
             wbsTreeContractMapper.updateById(treeContract);
         }
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void saveFormula(WbsTreeSynchronousRecord wbsTreeSynchronousRecord, List<WbsTreePrivate> list){
+        Map<Long, List<WbsTreePrivate>> collect = list.stream().collect(Collectors.groupingBy(WbsTreePrivate::getParentId));
+        Set<Long> ids = collect.keySet();
+        List<ElementFormulaMapping> elementFormulaMappings = elementFormulaMappingService.list(Wrappers.<ElementFormulaMapping>lambdaQuery()
+                .eq(ElementFormulaMapping::getProjectId, wbsTreeSynchronousRecord.getTemplateId())
+                .in(ElementFormulaMapping::getNodeId, ids));
+        elementFormulaMappings.forEach(f -> f.setProjectId(wbsTreeSynchronousRecord.getProjectId()));
+
+        //删除当前节点的公式
+        elementFormulaMappingService.remove(Wrappers.<ElementFormulaMapping>lambdaQuery()
+                .eq(ElementFormulaMapping::getProjectId, wbsTreeSynchronousRecord.getProjectId())
+                .in(ElementFormulaMapping::getNodeId, ids));
+        //复制新增模板节点的公式
+        elementFormulaMappingService.saveBatch(elementFormulaMappings);
+
+    }
 }

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

@@ -75,9 +75,6 @@ public class WbsSynchronousServiceImpl {
     //同步信息
     @Autowired
     private WbsTreeSynchronousRecordMapper synchronousRecordMapper;
-    //公式
-    @Autowired
-    private ElementFormulaMappingServiceImpl elementFormulaMappingService;
 
     @Async("taskExecutor1")
     public void syncExecute(WbsTreeSynchronousRecord wbsTreeSynchronousRecord) {
@@ -483,7 +480,7 @@ public class WbsSynchronousServiceImpl {
                             //公式配置
                         case 5:
                             editData.addAll(addPrivateNodes);
-                            saveFormula(wbsTreeSynchronousRecord,editData);
+                            wbsSynchronousEViSaService.saveFormula(wbsTreeSynchronousRecord,editData);
                             //排序
                         case 7:
                             //元素配置
@@ -1296,22 +1293,6 @@ public class WbsSynchronousServiceImpl {
     }
 
 
-    private void saveFormula(WbsTreeSynchronousRecord wbsTreeSynchronousRecord, List<WbsTreePrivate> list){
-        Map<Long, List<WbsTreePrivate>> collect = list.stream().collect(Collectors.groupingBy(WbsTreePrivate::getParentId));
-        Set<Long> ids = collect.keySet();
-        List<ElementFormulaMapping> elementFormulaMappings = elementFormulaMappingService.list(Wrappers.<ElementFormulaMapping>lambdaQuery()
-                .eq(ElementFormulaMapping::getProjectId, wbsTreeSynchronousRecord.getTemplateId())
-                .in(ElementFormulaMapping::getNodeId, ids));
-        elementFormulaMappings.forEach(f -> f.setProjectId(wbsTreeSynchronousRecord.getProjectId()));
-
 
-        //删除当前节点的公式
-        elementFormulaMappingService.remove(Wrappers.<ElementFormulaMapping>lambdaQuery()
-                .eq(ElementFormulaMapping::getProjectId, wbsTreeSynchronousRecord.getProjectId())
-                .in(ElementFormulaMapping::getNodeId, ids));
-        //复制新增模板节点的公式
-        elementFormulaMappingService.saveBatch(elementFormulaMappings);
-
-    }
 
 }