Sfoglia il codice sorgente

Merge branch 'lihb' of http://219.151.181.73:3000/zhuwei/bladex into test-merge

LHB 2 mesi fa
parent
commit
0953d23d4c

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

@@ -146,4 +146,7 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
     void updateSortNotIsUseSort(@Param("type") int type,
                                 @Param("projectId") Long projectId,
                                 @Param("pKeyId") Long pKeyId);
+
+    void updateSortByPId(@Param("pId") Long pId,
+                         @Param("sort") Integer sort);
 }

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

@@ -816,6 +816,13 @@
             a.project_id = #{projectId}
           AND a.is_deleted = 0
     </update>
+    <update id="updateSortByPId">
+        update
+            m_wbs_tree_contract
+        set
+            sort = sort +1
+        where p_id = #{pId} and sort >= #{sort}
+    </update>
 
     <select id="selectQueryValueLikeNodeName" resultMap="ResultMap">
         select *

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

@@ -144,4 +144,6 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
      */
     void updateBatchAncestorsByPKeyId(@Param("allNodes") List<WbsTreePrivate> allNodes);
 
+    void updateSortByPId(@Param("pId") Long pId,
+                         @Param("sort") Integer sort);
 }

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

@@ -929,6 +929,11 @@
             where p_key_id = #{item.pKeyId}
         </foreach>
     </update>
+    <update id="updateSortByPId">
+        update m_wbs_tree_private
+        set sort = #{sort}
+        where p_id = #{pId} and sort >= #{sort}
+    </update>
 
     <select id="linkNodeTreeBynodeId" resultType="java.lang.Long" >
         select p_key_id from m_wbs_tree_private where `type` = 1 and is_deleted = 0

+ 99 - 42
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java

@@ -512,8 +512,16 @@ public class WbsSynchronousServiceImpl {
         Integer nodeNumEnd = 0;
         for (Long pId : pIds) {
             nodeNumEnd++;
+            List<WbsTreePrivate> list = collect1.get(pId);
+            //排序调整
+            if(wbsTreeSynchronousRecord.getType().contains("7")) {
+                for (WbsTreePrivate wbsTreePrivate : list) {
+                    wbsTreePrivateMapper.updateSortByPId(pId, wbsTreePrivate.getSort());
+                }
+            }
+
             //更新最新节点
-            wbsSynchronousEViSaService.updatePrivate(wbsTreeSynchronousRecord.getCreateUserId(), collect1.get(pId));
+            wbsSynchronousEViSaService.updatePrivate(wbsTreeSynchronousRecord.getCreateUserId(), list);
 
             synchronousRecordMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
                     .set(WbsTreeSynchronousRecord::getNodeNumEnd, nodeNumEnd)
@@ -788,7 +796,15 @@ public class WbsSynchronousServiceImpl {
 
         for (Long pId : pIds) {
             nodeNumEnd++;
-            wbsSynchronousEViSaService.updateContract(wbsTreeSynchronousRecord.getCreateUserId(), collect1.get(pId));
+            List<WbsTreeContract> list = collect1.get(pId);
+            //排序调整
+            if(wbsTreeSynchronousRecord.getType().contains("7")) {
+                for (WbsTreeContract wbsTreeContract : list) {
+                    wbsTreePrivateMapper.updateSortByPId(pId, wbsTreeContract.getSort());
+                }
+            }
+
+            wbsSynchronousEViSaService.updateContract(wbsTreeSynchronousRecord.getCreateUserId(), list);
             synchronousRecordMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
                     .set(WbsTreeSynchronousRecord::getNodeNumEnd, nodeNumEnd)
                     .set(WbsTreeSynchronousRecord::getUpdateTime, DateTime.now())
@@ -839,6 +855,7 @@ public class WbsSynchronousServiceImpl {
                 WbsTreePrivate parent = addPrivateParentNodes.get(0);
 
                 addPrivateNode.setPId(parent.getPKeyId());
+                addPrivateNode.setAncestorsPId(parent.getAncestorsPId() + "," + addPrivateNode.getPId());
                 addPrivateNode.setWbsId(parent.getWbsId());
                 addPrivateNode.setWbsType(parent.getWbsType());
                 addPrivateNode.setIsAddConceal(0);
@@ -889,34 +906,52 @@ public class WbsSynchronousServiceImpl {
             }
 
             //查询出当前项目所有节点---------------------------------------------------------------------------------------------------
-            List<WbsTreePrivate> addList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                    .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getPId)
-                    .eq(WbsTreePrivate::getIsDeleted, 0)
-                    .eq(WbsTreePrivate::getProjectId, addData.get(0).getProjectId()));
-
-            addList.addAll(addData);
-            //组合祖级路径 根据当前选中节点为开始
-            Map<Long, WbsTreePrivate> collect = addList.stream().collect(Collectors.toMap(WbsTreePrivate::getPKeyId, Function.identity()));
-
-            addData.forEach(node -> {
-                String correctAncestors = createAncestorsPId(node, collect);
-                node.setAncestorsPId(correctAncestors);
-            });
+//            List<WbsTreePrivate> addList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+//                    .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getPId)
+//                    .eq(WbsTreePrivate::getIsDeleted, 0)
+//                    .eq(WbsTreePrivate::getProjectId, addData.get(0).getProjectId()));
+//
+//            addList.addAll(addData);
+//            //组合祖级路径 根据当前选中节点为开始
+//            Map<Long, WbsTreePrivate> collect = addList.stream().collect(Collectors.toMap(WbsTreePrivate::getPKeyId, Function.identity()));
+//
+//            addData.forEach(node -> {
+//                String correctAncestors = createAncestorsPId(node, collect);
+//                node.setAncestorsPId(correctAncestors);
+//            });
 
             //新增-----------------------------------------------------------------------------------------------------------------
-            List<List<WbsTreePrivate>> partition = Lists.partition(addData, 1000);
-            Integer count = 0;
-            for (List<WbsTreePrivate> data : partition) {
+            Map<Long, List<WbsTreePrivate>> collect = addData.stream().collect(Collectors.groupingBy(WbsTreePrivate::getPId));
+            Set<Long> longs = collect.keySet();
+
+            List<Long> pIds = new ArrayList<>(longs);
+            List<WbsTreePrivate> saveData = new ArrayList<>();
+            //按最小节点批量新增
+            List<List<Long>> partition = Lists.partition(pIds, 100);
+
+            for (List<Long> data : partition) {
+                for (Long datum : data) {
+                    List<WbsTreePrivate> list = collect.get(datum);
+                    //修改排序
+                    if(wbsTreeSynchronousRecord.getType().contains("7")){
+                        for (WbsTreePrivate wbsTreePrivate : list) {
+                            Integer sort = wbsTreePrivate.getSort();
+                            if(sort != null){
+                                wbsTreePrivateMapper.updateSortByPId(datum,wbsTreePrivate.getSort());
+                            }
+                        }
+                    }
+                    boolean b = saveData.addAll(list);
+                }
+
                 //单个批次一个事务,只会回滚当前批次数据
-                Integer i = wbsTreePrivateMapper.insertBatchSomeColumn(data);
+                Integer i = wbsTreePrivateMapper.insertBatchSomeColumn(saveData);
                 //如果失败  -- - - - - 继续执行   或者把当前节点的p_key_id 记录到某个地方 方便后续处理
                 if (i == 0) {
                     List<Long> collect1 = addData.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
                     //这里可以保存到数据库指定错误日志表
-                    throw new ServiceException("重置表单路径错误:" + StringUtil.join(collect1, ","));
+                    throw new ServiceException("添加失败:" + StringUtil.join(collect1, ","));
                 }
-
-                count += i;
             }
         }
     }
@@ -972,7 +1007,7 @@ public class WbsSynchronousServiceImpl {
                 //TODO
                 addContractNode.setPId(parent.getPKeyId());
                 //TODO
-                addContractNode.setContractId(parent.getContractId());
+                addContractNode.setAncestorsPId(parent.getAncestorsPId() + "," + addContractNode.getPId());
                 addContractNode.setContractId(String.valueOf(contractInfo.getId()));
                 //更新创建时间
                 addContractNode.setCreateTime(DateTime.now());
@@ -983,32 +1018,54 @@ public class WbsSynchronousServiceImpl {
 
 
         //查询出当前项目所有节点---------------------------------------------------------------------------------------------------
-        List<WbsTreeContract> addList = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
-                .select(WbsTreeContract::getPKeyId, WbsTreeContract::getPId)
-                .eq(WbsTreeContract::getIsDeleted, 0)
-                .eq(WbsTreeContract::getContractId, contractInfo.getId()));
-
-        addList.addAll(addData);
-
-
-        //组合祖级路径 根据当前选中节点为开始
-        Map<Long, WbsTreeContract> collect = addList.stream().collect(Collectors.toMap(WbsTreeContract::getPKeyId, Function.identity()));
-
-        addData.forEach(node -> {
-            //通过转换为WbsTreePrivate的方式 去获取祖级节点
-            String correctAncestors = createAncestorsPId(node, collect);
-            node.setAncestorsPId(correctAncestors);
-        });
+//        List<WbsTreeContract> addList = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+//                .select(WbsTreeContract::getPKeyId, WbsTreeContract::getPId)
+//                .eq(WbsTreeContract::getIsDeleted, 0)
+//                .eq(WbsTreeContract::getContractId, contractInfo.getId()));
+//
+//        addList.addAll(addData);
+//
+//
+//        //组合祖级路径 根据当前选中节点为开始
+//        Map<Long, WbsTreeContract> collect = addList.stream().collect(Collectors.toMap(WbsTreeContract::getPKeyId, Function.identity()));
+//
+//        addData.forEach(node -> {
+//            //通过转换为WbsTreePrivate的方式 去获取祖级节点
+//            String correctAncestors = createAncestorsPId(node, collect);
+//            node.setAncestorsPId(correctAncestors);
+//        });
 
         //新增-----------------------------------------------------------------------------------------------------------------
-        List<List<WbsTreeContract>> partition = Lists.partition(addData, 1000);
-        for (List<WbsTreeContract> data : partition) {
+        Map<Long, List<WbsTreeContract>> collect = addData.stream().collect(Collectors.groupingBy(WbsTreeContract::getPId));
+        Set<Long> longs = collect.keySet();
+
+        List<Long> pIds = new ArrayList<>(longs);
+        List<WbsTreeContract> saveData = new ArrayList<>();
+        //按最小节点批量新增
+        List<List<Long>> partition = Lists.partition(pIds, 100);
+        for (List<Long> data : partition) {
+            for (Long datum : data) {
+                List<WbsTreeContract> list = collect.get(datum);
+                //修改排序
+                if(wbsTreeSynchronousRecord.getType().contains("7")){
+                    for (WbsTreeContract wbsTreeContract : list) {
+                        Integer sort = wbsTreeContract.getSort();
+                        if(sort != null){
+                            wbsTreeContractMapper.updateSortByPId(datum,wbsTreeContract.getSort());
+                        }
+                    }
+                }
+                boolean b = saveData.addAll(list);
+            }
+
             //单个批次一个事务,只会回滚当前批次数据
-            Integer i = wbsTreeContractMapper.insertBatchSomeColumn(data);
+            Integer i = wbsTreeContractMapper.insertBatchSomeColumn(saveData);
             //如果失败  -- - - - - 继续执行   或者把当前节点的p_key_id 记录到某个地方 方便后续处理
             if (i == 0) {
                 List<Long> collect1 = addData.stream().map(WbsTreeContract::getPKeyId).collect(Collectors.toList());
                 //这里可以保存到数据库指定错误日志表
+                //这里可以保存到数据库指定错误日志表
+                throw new ServiceException("添加失败:" + StringUtil.join(collect1, ","));
             }
         }
     }