Prechádzať zdrojové kódy

系统级WBS批量挂表

cr 4 dní pred
rodič
commit
6ee0dd0a0e

+ 37 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExcelTabVO2.java

@@ -0,0 +1,37 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+@Data
+public class ExcelTabVO2 {
+    /**
+     * 清表id
+     */
+    private Long excelTabId;
+    /**
+     * 清表名称
+     */
+    private String excelTabName;
+    /**
+     * 元素表名称
+     */
+    private String elementTableName;
+    /**
+     * 表单类型
+     */
+    private Integer tableType;
+
+    /**
+     * 所属方
+     */
+    private Integer tableOwner;
+
+    /**
+     * 是否创建 0 可以创建  1已存在元素表,2未创建元素表,3未上传清表
+     */
+    private Integer isCreate;
+
+    private String initTableName;
+
+    private Long initTabId;
+}

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -5344,4 +5344,11 @@ public class ExcelTabController extends BladeController {
         }
         System.out.println("检查完毕");
     }
+
+    @GetMapping("/getWbsTreeExcelTab")
+    @ApiOperation("获取批量挂表时的Excel表")
+    public R <ExcelTabVO2> getWbsTreeExcelTab(@RequestParam Long id,@RequestParam Long nodeId){
+        return R.data(excelTabService.getWbsTreeExcelTab(id,nodeId));
+    }
+
 }

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -587,6 +587,13 @@ public class WbsTreeController extends BladeController {
         return R.status(wbsTreeService.copyNode(vo.getLeftIds(),vo.getRightIds()));
     }
 
+
+    @PostMapping("/saveBatchWbsTree")
+    @ApiOperation("批量保存系统wbs表单")
+    public R saveBatchWbsTree(@RequestBody List<ExcelTabVO2> list,Long nodeId,Long wbsId){
+        return wbsTreeService.saveBatchWbsTree(list,nodeId,wbsId);
+    }
+
 }
 
 

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

@@ -104,4 +104,6 @@ public interface WbsTreeMapper extends EasyBaseMapper<WbsTree> {
                                        @Param("wbsType")Integer wbsType);
 
     List<WbsTree> selectAllChildNode(@Param("leftIds") List<Long> leftIds);
+
+    Integer getMaxSort(@Param("nodeId") Long nodeId);
 }

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

@@ -588,5 +588,17 @@
             )
         </if>
     </select>
+    <select id="getMaxSort" resultType="java.lang.Integer">
+        SELECT
+            CASE
+                WHEN COUNT(*) = 0 THEN 0
+                WHEN COUNT(CASE WHEN sort IS NOT NULL THEN 1 END) = 0 THEN 0
+                ELSE MAX(sort)
+                END AS maxSort
+        FROM m_wbs_tree
+        WHERE type = 2
+          AND is_deleted = 0
+          AND parent_id = #{nodeId}
+    </select>
 
 </mapper>

+ 3 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java

@@ -31,10 +31,7 @@ import org.springblade.manager.entity.ExcelTab;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.enums.ExecuteType;
-import org.springblade.manager.vo.ExceTabTreVO;
-import org.springblade.manager.vo.ExcelTabVO;
-import org.springblade.manager.vo.ExcelTabWbsTypeVO;
-import org.springblade.manager.vo.WbsTreeVO;
+import org.springblade.manager.vo.*;
 
 import java.io.FileNotFoundException;
 import java.sql.SQLException;
@@ -230,4 +227,6 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
     void setAutomatic(Long pkeyId, String string, Document doc);
 
     StringBuilder buildMTableInsertSql(String tabName, Map<String, String> dataMap2, Object id, Object groupId, Object pKeyId);
+
+    ExcelTabVO2 getWbsTreeExcelTab(Long id,Long nodeId);
 }

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

@@ -83,4 +83,6 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
     Object getQueryValueByNodeType(WbsTreePrivateQueryVO vo);
 
     boolean copyNode(List<Long> leftIds, List<Long> rightIds);
+
+    R saveBatchWbsTree(List<ExcelTabVO2> list,Long nodeId,Long wbsId);
 }

+ 42 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -134,6 +134,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     private final TableInfoServiceImpl tableInfoService;
     private final INodeBaseInfoService nodeBaseInfoService;
     private final TrialSelfInspectionRecordClient trialSelfInspectionRecordClient;
+    private final IWbsTreeService wbsTreeService;
     // excel 解析结构
     private final IExctabCellService exctabCellService;
     private final WbsTreeContractOldHtmlService wbsTreeContractOldHtmlService;
@@ -1870,6 +1871,47 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         return sql;
     }
 
+    @Override
+    public ExcelTabVO2 getWbsTreeExcelTab(Long id,Long nodeId) {
+        ExcelTabVO2 vo2 = new ExcelTabVO2();
+        ExcelTab excelTab = this.getById(id);
+        if(excelTab==null){
+            throw new ServiceException("未找到该表单");
+        }
+        vo2.setExcelTabId(excelTab.getId());
+        vo2.setExcelTabName(excelTab.getName());
+        if(StringUtils.isNotEmpty(excelTab.getTabId())){
+            org.springblade.manager.entity.TableInfo tableInfo = tableInfoService.getById(excelTab.getTabId());
+            if(tableInfo!=null){
+                vo2.setElementTableName(tableInfo.getTabChName());
+                vo2.setTableType(tableInfo.getTabType());
+                vo2.setInitTableName(tableInfo.getTabEnName());
+                vo2.setInitTabId(tableInfo.getId());
+                //判断同级其他节点 是否存在相同元素表
+                List<WbsNodeTableVO> wbsNodeTableVOS = wbsTreeService.selectByNodeTable(id+"");
+                if(!wbsNodeTableVOS.isEmpty()){
+                    Set<String> initTabIds = wbsNodeTableVOS.stream().filter(w -> StringUtils.isNotEmpty(w.getInitTableId())).map(w -> w.getInitTableId()).collect(Collectors.toSet());
+                    if(!initTabIds.isEmpty()){
+                        if(initTabIds.contains(tableInfo.getId()+"")){
+                            vo2.setIsCreate(1);
+                        }
+                    }
+                }
+            }else {
+                vo2.setIsCreate(2);
+            }
+        }else {
+            vo2.setIsCreate(2);
+        }
+        if(StringUtils.isEmpty(excelTab.getFileUrl())){
+            vo2.setIsCreate(3);
+        }
+        if(vo2.getIsCreate()==null){
+            vo2.setIsCreate(0);
+        }
+        return vo2;
+    }
+
     // 获取用户
     @Override
     public Map<String, String> getTablbCols(String pkeyid, String colkey) throws FileNotFoundException {

+ 35 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -656,6 +656,41 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return true;
     }
 
+    @Override
+    public R saveBatchWbsTree(List<ExcelTabVO2> list,Long nodeId,Long wbsId) {
+        List<WbsTree>insertList=new ArrayList<>();
+        WbsTree parentNode = this.getById(nodeId);
+        String tenantId = AuthUtil.getTenantId();
+        if(parentNode==null){
+            return R.fail(201, "父节点不存在");
+        }
+        Integer maxSort=this.baseMapper.getMaxSort(nodeId);
+        for (ExcelTabVO2 vo2 : list) {
+            WbsTree wbsTree = new WbsTree();
+            wbsTree.setId(SnowFlakeUtil.getId());
+            wbsTree.setWbsId(wbsId+"");
+            wbsTree.setTenantId(tenantId);
+            wbsTree.setParentId(nodeId);
+            wbsTree.setAncestors(parentNode.getAncestors()+","+parentNode.getId());
+            wbsTree.setNodeType(1);
+            wbsTree.setNodeName(vo2.getElementTableName());
+            wbsTree.setFullName(vo2.getElementTableName());
+            wbsTree.setSort(++maxSort);
+            wbsTree.setType(2);
+            wbsTree.setTableType(vo2.getTableType());
+            wbsTree.setStatus(1);
+            wbsTree.setTableOwner(vo2.getTableOwner()+"");
+            wbsTree.setInitTableName(vo2.getInitTableName());
+            wbsTree.setIsLinkTable(2);
+            wbsTree.setInitTableId(vo2.getInitTabId());
+            insertList.add(wbsTree);
+        }
+        if(!insertList.isEmpty()){
+            this.saveBatch(insertList);
+        }
+        return R.success("保存成功");
+    }
+
     /**
      * 重新构建整个树的id、parentId和ancestors
      */