浏览代码

修改BUG

liuyc 3 年之前
父节点
当前提交
e71bde2dd9

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

@@ -143,5 +143,6 @@ public interface WbsTreeMapper extends BaseMapper<WbsTree> {
 
     void deleteBatch2(@Param("ids") ArrayList<Long> ids, @Param("wbsId") String wbsId, @Param("projectId") String projectId);
 
+    void updateByParentId(Long parentId, Long id);
 
 }

+ 19 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -187,9 +187,19 @@
     <update id="alterTableFiled">
         ALTER TABLE ${initTableName} ADD COLUMN ${eKey} ${eType}(${eLength})
     </update>
+    <update id="updateByParentId">
+        UPDATE m_wbs_tree
+        SET is_link_table = 1
+        WHERE parent_id = #{parentId}
+        AND id != #{id}
+        AND type = 2
+        AND status = 1
+        AND is_deleted = 0
+    </update>
 
     <select id="selectWbsTreePage" resultMap="wbsTreeResultMap">
-        select * from m_wbs_tree where is_deleted = 0
+        select id, wbs_id, tenant_id, parent_id, dept_category , type, dept_name, full_name, table_type, sort , ancestors, remark, unique_code, partition_code, is_expernode , is_concrete, table_owner, major_data_type, init_table_name, project_node_id , is_link_table, is_exist_form, create_user, create_dept, create_time , update_user, update_time, status, is_deleted
+        from m_wbs_tree where is_deleted = 0
     </select>
 
     <select id="tree" resultMap="treeNodeResultMap">
@@ -256,7 +266,8 @@
             wt.is_link_table,
             wt.init_table_name as "initTableName",
             wt.parent_id AS "parentId",
-            wt.wbs_id AS "wbsId"
+            wt.wbs_id AS "wbsId",
+            (SELECT count(1) FROM m_wbs_form_element WHERE f_id = wt.id) AS "elementTotal"
         FROM
             m_wbs_tree AS wt
         WHERE
@@ -279,7 +290,7 @@
             wt.init_table_name as "initTableName",
             wt.parent_id AS "parentId",
             wt.wbs_id AS "wbsId",
-            (SELECT count(*) FROM m_wbs_form_element AS wfe WHERE wfe.f_id=wt.id and wfe.is_deleted = 0) AS elementTotal
+            (SELECT count(1) FROM m_wbs_form_element AS wfe WHERE wfe.f_id=wt.id and wfe.is_deleted = 0) AS elementTotal
         FROM
             m_wbs_tree_private AS wt
         WHERE
@@ -291,7 +302,7 @@
     </select>
 
     <select id="selectByElementsTotal" resultType="java.lang.String">
-        SELECT f_id,count(*) as elementTotal FROM m_wbs_form_element where f_id in #{ids} and is_deleted=0 GROUP BY f_id
+        SELECT f_id,count(1) as elementTotal FROM m_wbs_form_element where f_id in #{ids} and is_deleted=0 GROUP BY f_id
     </select>
 
 
@@ -306,12 +317,12 @@
             is_deleted = 0 and f_id = #{id}
     </select>
     <select id="selectRepeatByProjectId" resultType="java.lang.Integer">
-        SELECT COUNT(*) FROM m_wbs_tree_private WHERE project_id = #{projectId} AND status = 1 AND is_deleted = 0
+        SELECT COUNT(1) FROM m_wbs_tree_private WHERE project_id = #{projectId} AND status = 1 AND is_deleted = 0
     </select>
 
     <select id="findAllNodeTableList" resultType="org.springblade.manager.entity.WbsTree">
         SELECT
-            *
+            id, wbs_id, tenant_id, parent_id, dept_category , type, dept_name, full_name, table_type, sort , ancestors, remark, unique_code, partition_code, is_expernode , is_concrete, table_owner, major_data_type, init_table_name, project_node_id , is_link_table, is_exist_form, create_user, create_dept, create_time , update_user, update_time, status, is_deleted
         FROM
             m_wbs_tree
         WHERE
@@ -344,7 +355,8 @@
     </select>
 
     <select id="selectByWbsId" resultType="org.springblade.manager.entity.WbsTree">
-        SELECT * FROM m_wbs_tree
+        SELECT id, wbs_id, tenant_id, parent_id, dept_category , type, dept_name, full_name, table_type, sort , ancestors, remark, unique_code, partition_code, is_expernode , is_concrete, table_owner, major_data_type, init_table_name, project_node_id , is_link_table, is_exist_form, create_user, create_dept, create_time , update_user, update_time, status, is_deleted
+        FROM m_wbs_tree
         WHERE wbs_id = #{id}
         AND status = 1
         AND is_deleted = 0

+ 18 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -378,19 +378,35 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
             List<WbsFormElement> newList = formElementDTO.getElementList().stream().filter(a ->
                     !wbsFormElements.stream().map(WbsFormElement::getEName).collect(Collectors.toList()).contains(a.getEName())
             ).collect(Collectors.toList());
+            final int[] keyNumber1 = {1};
             //新增
             newList.stream().forEach(wbsFormElementInfo -> {
-                String key = "key_" + (keyNumber + 1);
+                String key = "key_" + (keyNumber + keyNumber1[0]);
                 //新增元素到当前表中
                 wbsFormElementInfo.setEKey(key);
                 wbsFormElementInfo.setFId(String.valueOf(formElementDTO.getId()));
+                wbsFormElementInfo.setStatus(1);
                 baseMapper.insert(wbsFormElementInfo);
                 //追加实体表字段
                 wbsTreeMapper.alterTableFiled(formElementDTO.getInitTableName(), key,
                         getInitTableFiledType(wbsFormElementInfo.getEType()),
                         Integer.valueOf(setDefaultElementLength(wbsFormElementInfo.getEType())));
+                keyNumber1[0]++;
             });
         }
+        WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
+                .eq(WbsTree::getId, formElementDTO.getId()
+                ));
+        //取消旧关联
+        List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                .eq(WbsTree::getParentId, wbsTree.getParentId()
+                ));
+        if (wbsTreeList.size() > 1) { //存在2张表以上时取消关联旧表
+            wbsTreeMapper.updateByParentId(wbsTree.getParentId(), formElementDTO.getId());
+        }
+        //新关联
+        wbsTree.setIsLinkTable(2);
+        wbsTreeMapper.updateById(wbsTree);
         return true;
     }
 
@@ -496,6 +512,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
         dept.setDeptCategory(1);
         dept.setStatus(1);
+        dept.setIsLinkTable(2);
         return wbsTreeMapper.insert(dept) > 0;
 
     }

+ 20 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -98,22 +98,36 @@ public class WbsTreeContractServiceImpl
             if (idList1.size() > idList2.size()) {
                 WbsInfo wbsInfo = wbsInfoMapper.selectById(pawDTO.getWbsId());
                 Integer wbsType = wbsInfo.getWbsType();
-                List<List<WbsTreePrivate>> listWbsTreePrivate = new ArrayList<>();
-                List<WbsTreeContract> listWbsTreeContract = new ArrayList<>();
-                diffRent.stream().forEach(id -> {
+                //List<List<WbsTreePrivate>> listWbsTreePrivate = new ArrayList<>();
+                List<WbsTreeContract> wbsTreeContractList = new ArrayList<>();
+                //获取wbs私有树下节点+表
+                List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                        .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
+                        .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
+                );
+                //初始化
+                wbsTreePrivateList.stream().forEach(wbsTreePrivate -> {
+                    WbsTreeContract wbsTreeContract = getWbsTreePrivate(wbsTreePrivate, pawDTO, wbsType);
+                    wbsTreeContractList.add(wbsTreeContract);
+                });
+
+                /*diffRent.stream().forEach(id -> {
                     //获取wbs私有树下节点+表
                     List<WbsTreePrivate> wbsTreePrivate = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
                     listWbsTreePrivate.add(wbsTreePrivate);
                 });
+
                 listWbsTreePrivate.stream().forEach(wbsTreePrivates -> {
                     wbsTreePrivates.stream().forEach(wbsTreePrivate -> {
                         WbsTreeContract wbsTreeContract = getWbsTreePrivate(wbsTreePrivate, pawDTO, wbsType);
                         listWbsTreeContract.add(wbsTreeContract);
                     });
-                });
-                this.saveBatch(listWbsTreeContract, 10000);
+                });*/
+
+                this.saveBatch(wbsTreeContractList, 10000);
+
                 //初始化施工台账
-                listWbsTreeContract.stream().forEach(wbsTreeContract -> {
+                wbsTreeContractList.stream().forEach(wbsTreeContract -> {
                     if (wbsTreeContract.getDeptCategory() == 6) {
                         ConstructionLedger constructionLedger = new ConstructionLedger();
                         constructionLedger.setIsBeton(0);

+ 38 - 12
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -339,9 +339,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Override
-    public List<WbsNodeTableVO> selectByNodeTableByExcel(String id,String projectid) {
+    public List<WbsNodeTableVO> selectByNodeTableByExcel(String id, String projectid) {
         //查询节点下的所有表单
-        List<WbsNodeTableVO> wbsNodeTableVOS = wbsTreeMapper.selectByNodeTableByExcel(id,projectid);
+        List<WbsNodeTableVO> wbsNodeTableVOS = wbsTreeMapper.selectByNodeTableByExcel(id, projectid);
         return wbsNodeTableVOS;
     }
 
@@ -534,9 +534,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     @Transactional(rollbackFor = Exception.class)
     public String submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
-        /*if (StringUtils.isEmpty(wbsTreeIds)) {
-            throw new ServiceException("未选择需要分配的wbs树");
-        }*/
         String[] ids = wbsTreeIds.split(",");
         List<String> idList = Arrays.asList(ids);
         List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
@@ -551,6 +548,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     .eq(WbsTreePrivate::getType, 1)
             );
 
+//            wbsTreePrivates.stream().map(WbsTreePrivate::getId)
+
             wbsTreePrivates.stream().forEach(wbsTreePrivate -> {
                 idList2.add(String.valueOf(wbsTreePrivate.getId()));
             });
@@ -569,6 +568,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             deletedStatus = 1;
         }
 
+
         List<String> diffRent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
 
         //元素表同步
@@ -681,21 +681,45 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 List<WbsTreePrivate> insertData2 = new ArrayList<>();  //数据初始化节点-引用私有
                 if (pawDTO.getReferenceType().equals("public")) {
                     //公有
-                    List<List<WbsTree>> wbsTrees = new ArrayList<>();
+                    //查询所有公共节点+表单
+                    List<WbsTree> trees = baseMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, pawDTO.getWbsId()));
+                    //初始化
+                    trees.stream().forEach(tree -> {
+                        WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
+                        insertData.add(wbsTreePrivate2);
+                    });
+
+
+                    /*List<List<WbsTree>> wbsTrees = new ArrayList<>();
                     diffRent.stream().forEach(id -> {
-                        //查询所有公共节点 表单
+                        //查询所有公共节点+表单
                         List<WbsTree> trees = baseMapper.selectNodeAndTable(Long.valueOf(id));
                         wbsTrees.add(trees);
-                    });
-                    wbsTrees.stream().forEach(trees -> {
+                        number1[0]++;
+                    });*/
+                    /*wbsTrees.stream().forEach(trees -> {
                         trees.stream().forEach(tree -> {
                             WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
                             insertData.add(wbsTreePrivate2);
                         });
-                    });
+                    });*/
+
+
                 } else if (pawDTO.getReferenceType().equals("private")) {
                     //私有
-                    List<List<WbsTreePrivate>> wbsTreesPrivate = new ArrayList<>();
+                    //查询所有私有节点+表单
+                    List<WbsTreePrivate> wbsTreePrivatesList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                            .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
+                            .eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId())
+                    );
+                    //初始化
+                    wbsTreePrivatesList.stream().forEach(wbsTreePrivate -> {
+                        WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(wbsTreePrivate, pawDTO);
+                        insertData2.add(wbsTreePrivate2);
+                    });
+
+
+                    /*List<List<WbsTreePrivate>> wbsTreesPrivate = new ArrayList<>();
                     diffRent.stream().forEach(id -> {
                         //查询所有私有节点 表单
                         List<WbsTreePrivate> wbsTreePrivate = wbsTreePrivateMapper.selectNodeAndTable(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
@@ -706,7 +730,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(wbsTreePrivate, pawDTO);
                             insertData2.add(wbsTreePrivate2);
                         });
-                    });
+                    });*/
+
+
                 }
                 if (pawDTO.getReferenceType().equals("public")) {
                     wbsTreePrivateService.saveBatch(insertData, 10000);