liuyc 3 yıl önce
ebeveyn
işleme
aa3e5d8b65

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -97,4 +97,5 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
     void updateBatchByIds(@Param("wbsTreeList") WbsTree wbsTreeList,@Param("id") Long id);
 
     void updateBatchByIds2(@Param("wbsTreeList") WbsTreePrivate wbsTreeList,@Param("id")  Long id);
+
 }

+ 7 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -412,7 +412,7 @@
         c.dept_category AS "deptCategory",
         c.parent_id,
         c.tenant_id AS "tenantId",
---         IFNULL(c.full_name, c.dept_name) AS "title",
+        -- IFNULL(c.full_name, c.dept_name) AS "title",
         case
         when c.full_name is null then c.dept_name
         when c.full_name = '' then c.dept_name
@@ -608,11 +608,12 @@
 
     <select id="selectQueryCurrentNodeByAncestors" resultMap="ResultMap">
         select * from m_wbs_tree_contract where is_deleted = 0 and contract_id = #{contractId} and `type` = '1' and (
-            parent_id = '0' or parent_id = (select id from m_wbs_tree_contract where parent_id = '0' and contract_id = #{contractId}) or (
-                <foreach collection="ids" item="id" index="index" separator="or">
-                    ancestors like concat('%',#{id},'%')
-                </foreach>
-            )
+        parent_id = '0' or parent_id = (select id from m_wbs_tree_contract where parent_id = '0' and contract_id =
+        #{contractId}) or (
+        <foreach collection="ids" item="id" index="index" separator="or">
+            ancestors like concat('%',#{id},'%')
+        </foreach>
+        )
         ) group by id order by parent_id,`sort`
     </select>
 

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -86,4 +86,5 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
 
     void updateBatchByIds2(@Param("wbsTreeList") WbsTreePrivate wbsTreeList,@Param("projectId") String projectId,@Param("wbsId") String wbsId);
 
+
 }

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -9,6 +9,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO3;
@@ -18,12 +19,14 @@ import org.springblade.manager.mapper.ContractInfoMapper;
 import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Optional;
@@ -269,7 +272,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         for (WbsTree wbsTreeList : wbsTreeListAll) {
             //修改项目wbs节点信息、元素表基础信息
             baseMapper.updateBatchByIds(wbsTreeList, projectId);
-
             for (ContractInfo contractInfo : contractInfos) {
                 //修改合同段wbs节点信息、元素表基础信息
                 wbsTreeContractMapper.updateBatchByIds(wbsTreeList, contractInfo.getId());

+ 23 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -31,6 +31,7 @@ import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.vo.*;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
@@ -706,8 +707,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 //获取公有wbs树所有的元素表
                 if (allNodeList != null) {
                     List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                    .eq(WbsTree::getWbsId, pawDTO.getWbsId())
-                                    .eq(WbsTree::getStatus, 1)
+                            .eq(WbsTree::getWbsId, pawDTO.getWbsId())
+                            .eq(WbsTree::getStatus, 1)
                     );
                     wbsTreeListAll.addAll(wbsTreeList);
                 }
@@ -736,12 +737,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
 
                 //同步公有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
-                wbsTreePrivateService.updateBatchByIds(wbsTreeListAll,pawDTO.getProjectId());
+                //wbsTreePrivateService.updateBatchByIds(wbsTreeListAll,pawDTO.getProjectId());
+                updateWbsInfoPrivateAsync(wbsTreeListAll, pawDTO.getProjectId());
 
                 if (diffRent1.size() == 0) {
                     //当wbsTreeIds == "" 时 1.在第一次新增未选择wbs树时  2.同步新增的元素表时
                     return true;
-                    //throw new ServiceException("未检测到当前引用的wbs树下有新增的元素表信息");
 
                 } else {
                     if (collect2.size() > collect4.size()) {
@@ -812,7 +813,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                                 }
                             }
                         });
-
                         return true;
                     }
                 }
@@ -825,9 +825,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                 //获取私有引用项目的wbs树的全部元素表+节点信息
                 List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                                .eq(WbsTreePrivate::getStatus, 1)
+                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .eq(WbsTreePrivate::getStatus, 1)
                 );
 
                 //私有引用项目的表单信息
@@ -854,11 +854,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
 
                 //同步私有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
-                wbsTreePrivateService.updateBatchByIds2(wbsTreePrivates, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
+                //wbsTreePrivateService.updateBatchByIds2(wbsTreePrivates, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
+                updateWbsInfoContractAsync(wbsTreePrivates, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
 
                 if (diffRent1.size() == 0) {
                     return true;
-                    //throw new ServiceException("未检测到当前引用的wbs树下有新增的元素表信息");
 
                 } else {
                     if (collect2.size() > collect4.size()) {
@@ -941,7 +941,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                                 }
                             }
                         });
-
                         return true;
                     }
                 }
@@ -1085,6 +1084,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
     }
 
+    @Async
+    public boolean updateWbsInfoPrivateAsync(List<WbsTree> wbsTreeListAll, String projectId) {
+        wbsTreePrivateService.updateBatchByIds(wbsTreeListAll, projectId);
+        return true;
+    }
+
+    @Async
+    public boolean updateWbsInfoContractAsync(List<WbsTreePrivate> wbsTreePrivates, String projectId, String primaryKeyId) {
+        wbsTreePrivateService.updateBatchByIds2(wbsTreePrivates, projectId, primaryKeyId);
+        return true;
+    }
+
+
     private WbsTreePrivate getWbsTreePrivate1(WbsTree wbsTree, WbsTreeContractDTO pawDTO) {
         WbsTreePrivate wbsTreePrivate = new WbsTreePrivate();
         //数据初始化