hongchuangyanfa 2 жил өмнө
parent
commit
0ceb7727c0
18 өөрчлөгдсөн 610 нэмэгдсэн , 13 устгасан
  1. 18 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExcelTab.java
  2. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTree.java
  3. 84 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExceTabTreVO.java
  4. 59 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExcelTabWbsTypeVO.java
  5. 65 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsExclTabParmVO.java
  6. 6 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsNodeTableVO.java
  7. 10 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java
  8. 198 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  9. 18 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.java
  10. 79 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml
  11. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  12. 30 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java
  13. 28 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  14. 2 2
      blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java
  15. 2 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java
  16. 4 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml
  17. 1 1
      blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java
  18. 4 2
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java

+ 18 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExcelTab.java

@@ -18,6 +18,8 @@ package org.springblade.manager.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -38,34 +40,49 @@ public class ExcelTab extends BaseEntity {
 	/**
 	* 父级菜单
 	*/
+
+	@ApiModelProperty(value = "父级菜单id")
 		private Long parentId;
 	/**
 	* 文件类型
 	*/
+	    @ApiModelProperty(value = "文件类型 1 表示祖节点  2 表示为节点信息 3 表示清表")
 		private Integer fileType;
 	/**
-	* 名称
+	 * 表类型
+	 */
+	@ApiModelProperty(value = "表类型")
+	private Integer tabType;
+
+	/**
+	* 节点名称
 	*/
+	@ApiModelProperty(value = "节点名称")
 		private String name;
 	/**
 	* 祖级
 	*/
+	@ApiModelProperty(value = "祖级")
 		private String alias;
 	/**
 	* 文件地址
 	*/
+	@ApiModelProperty(value = "文件地址")
 		private String fileUrl;
 	/**
 	* 表数量
 	*/
+	@ApiModelProperty(value = "表数量")
 		private Integer tabCout;
 	/**
 	* 附件拓展名
 	*/
+	@ApiModelProperty(value = "附件名")
 		private String extension;
 	/**
 	* 附件大小
 	*/
+	@ApiModelProperty(value = "附件大小")
 		private Long attachSize;
 
 

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTree.java

@@ -161,6 +161,6 @@ public class WbsTree extends BaseEntity {
 	/**
 	 *是否关联清表 '0''1'
 	 */
-	@ApiModelProperty(value = "是否关联清表 '0'否 '1'是")
+	@ApiModelProperty(value = "是否关联清表 '1'否 '2'是")
 	private Integer isLinkTable;
 }

+ 84 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExceTabTreVO.java

@@ -0,0 +1,84 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.manager.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+import org.springblade.manager.entity.ExcelTab;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 视图实体类
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ExceTabTreVO对象", description = "ExceTabTreVO对象")
+public class ExceTabTreVO extends ExcelTab implements INode<ExceTabTreVO> {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键ID
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	private Long id;
+
+	/**
+	 * 父节点ID
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	private Long parentId;
+
+	/**
+	 * 子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private List<ExceTabTreVO> children;
+
+	/**
+	 * 是否有子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private Boolean hasChildren;
+
+	@Override
+	public List<ExceTabTreVO> getChildren() {
+		if (this.children == null) {
+			this.children = new ArrayList<>();
+		}
+		return this.children;
+	}
+
+	/**
+	 * 上级机构
+	 */
+	private String parentName;
+
+	/**
+	 * 机构类型名称
+	 */
+	private String deptCategoryName;
+
+}

+ 59 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExcelTabWbsTypeVO.java

@@ -0,0 +1,59 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.manager.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.manager.entity.ExcelTab;
+
+/**
+ * 清表基础数据表视图实体类
+ *
+ * @author BladeX
+ * @since 2022-05-18
+ */
+@Data
+public class ExcelTabWbsTypeVO {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * wbs名称
+	 */
+	@ApiModelProperty(value = "id")
+	private Long id;
+	/**
+	 * wbs名称
+	 */
+	@ApiModelProperty(value = "wbs名称")
+	private String wbsName;
+
+	/**
+	 * wbs类型
+	 */
+	@ApiModelProperty(value = "wbs类型")
+	private Integer wbsType;
+
+
+	/**
+	 * tabInfo(多个以','拼接)
+	 */
+	@ApiModelProperty(value = "tabInfo(多个以','拼接)")
+	private String linkIds;
+
+
+}

+ 65 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsExclTabParmVO.java

@@ -0,0 +1,65 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.manager.vo;
+
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.List;
+
+/**
+ * 视图实体类
+ *
+ * @author Chill
+ */
+@Data
+@ApiModel(value = "WbsExclTabParmVO对象", description = "WbsExclTabParmVO对象")
+public class WbsExclTabParmVO  {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 父节点ID
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty(value = "node父节点Id")
+	private Long parentId;
+
+	/**
+	 * 节点名称
+	 */
+	@ApiModelProperty(value = "节点名称")
+	private String nodeName;
+
+	/**
+	 * 清表类型
+	 */
+	@ApiModelProperty(value = "清表类型")
+	private Integer tabType;
+
+	/**
+	 * 关联信息
+	 */
+	@ApiModelProperty(value = "关联信息")
+	private List<ExcelTabWbsTypeVO> linkDataInfo;
+
+
+
+}

+ 6 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsNodeTableVO.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -45,6 +46,10 @@ public class WbsNodeTableVO implements Serializable {
 	 */
 	private String tableOwner;
 
-
+	/**
+	 *是否关联清表 '1''2'
+	 */
+	@ApiModelProperty(value = "是否关联清表 '1'否 '2'是")
+	private Integer isLinkTable;
 
 }

+ 10 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java

@@ -105,6 +105,15 @@ public class Menu implements Serializable {
 	@ApiModelProperty(value = "操作按钮类型")
 	private Integer action;
 
+
+	/**
+	 * 是否有外层
+	 */
+	@ApiModelProperty(value = "是否有外层")
+	private Integer isLayout;
+
+
+
 	/**
 	 * 是否打开新页面
 	 */
@@ -117,6 +126,7 @@ public class Menu implements Serializable {
 	@ApiModelProperty(value = "备注")
 	private String remark;
 
+
 	/**
 	 * 是否已删除
 	 */

+ 198 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -16,25 +16,40 @@
  */
 package org.springblade.manager.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import com.spire.xls.Workbook;
+import com.spire.xls.Worksheet;
+import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import lombok.SneakyThrows;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+
+import org.springblade.core.oss.AliossTemplate;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.service.IWbsTreeService;
+import org.springblade.manager.vo.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.entity.ExcelTab;
-import org.springblade.manager.vo.ExcelTabVO;
 import org.springblade.manager.wrapper.ExcelTabWrapper;
 import org.springblade.manager.service.IExcelTabService;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+import java.util.List;
 
 /**
  * 清表基础数据表 控制器
@@ -50,6 +65,15 @@ public class ExcelTabController extends BladeController {
 
 	private final IExcelTabService excelTabService;
 
+	private final IWbsTreeService wbsTreeService;
+
+	private AliossTemplate aliossTemplate;
+
+	/**
+	 * 对象存储构建类
+	 */
+
+
 	/**
 	 * 详情
 	 */
@@ -125,5 +149,174 @@ public class ExcelTabController extends BladeController {
 		return R.status(excelTabService.deleteLogic(Func.toLongList(ids)));
 	}
 
-	
+
+	/**
+	 * 清表模版树
+	 */
+	@GetMapping("/tab-lazytree")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "清表清表树形结构", notes = "清表清表树形结构")
+	public R<List<ExceTabTreVO>> tabLazyTree(Long modeId, BladeUser bladeUser) {
+		List<ExceTabTreVO> tree = excelTabService.tabLazyTree( bladeUser.getTenantId(), modeId);
+		return R.data(tree);
+	}
+
+	/**
+	 * 上传文件
+	 *
+	 * @param file 文件
+	 * @return ObjectStat
+	 */
+	@SneakyThrows
+	@PostMapping("/put-file-attach")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "清表上传", notes = "清表上传")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "file", value = "文件源", required = true),
+			@ApiImplicitParam(name = "nodeId", value = "节点id", required = true)
+	})
+	public R putFileAttach(@RequestParam MultipartFile file,Long nodeId) {
+//		ExcelTab detail = excelTabService.getById(nodeId);
+//		BladeFile bladeFile = aliossTemplate.putFile(file.getOriginalFilename(),file.getInputStream());
+//		detail.setExtension(bladeFile.getOriginalName());
+//		detail.setName(bladeFile.getLink());
+//		detail.setFileType(3); // 表示为清表信息  1 表示祖节点  2 表示为节点信息 3 表示清表
+//		excelTabService.saveOrUpdate(detail);
+
+		String thmlUrl = "/Users/hongchuangyanfa/Desktop/ToHtml.html";
+		// 解析excel
+		Workbook wb = new Workbook();
+		wb.loadFromMHtml(file.getInputStream());
+
+		//获取工作表
+		Worksheet sheet = wb.getWorksheets().get(0);
+		//sheet.saveToHtml("/Users/hongchuangyanfa/JAVA_Project/ToHtml.html");
+		sheet.saveToHtml(thmlUrl);
+
+		//解析数据
+		Thread.sleep(1000);
+		String htmlString =  readfile(thmlUrl);
+
+		String htmlString2=  getBody(htmlString);
+
+		Document doc = Jsoup.parse(htmlString2);
+
+		Elements trs = doc.select("tr");
+
+		for(int i = 0 ;i < trs.size() ;i++){
+			Element tr = trs.get(i);
+			Elements tds = tr.select("td");
+			for(Element data:tds){
+				System.out.print("COLSPAN:" +data.attr("COLSPAN")+" ROWSPAN:"+data.attr("ROWSPAN")+" "+data.text());
+			}
+			System.out.println();
+		}
+
+		// 保存结构
+
+
+
+
+		return R.success("上传成功");
+	}
+
+
+
+	/**
+	 * 清表编辑 wbs 下拉框选择
+	 */
+	@GetMapping("/getWbsTypeList")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "清表编辑 wbs 下拉框选择", notes = "传入excelTab")
+	public R getWbsTypeList() {
+		List<ExcelTabWbsTypeVO> wbsTypeList= excelTabService.getWbsTypeList();
+		return R.data(wbsTypeList);
+	}
+
+	/**
+	 * 清表编辑 - 下拉框 树节点
+	 */
+	@GetMapping("/lazy-tree")
+	@ApiOperationSupport(order = 11)
+	@ApiOperation(value = "懒加载节点树形结构", notes = "传入wbsId,parentId,请求头token")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "wbsId", value = "wbsId", required = true),
+			@ApiImplicitParam(name = "parentId", value = "父级id", required = true),
+			@ApiImplicitParam(name = "wbsType", value = "type", required = true)
+	})
+	public R<List<WbsTreeVO>> getLazyTreeById(String wbsId, Long parentId, BladeUser bladeUser, Integer wbsType) {
+		if(wbsType==1){
+			List<WbsTreeVO> tree = excelTabService.lazyTree(wbsId, Func.toStrWithEmpty(null, bladeUser.getTenantId()), parentId);
+			if (tree != null && tree.size() > 0) {
+				return R.data(tree);
+			}
+		}
+
+		return R.fail(200, "未查询到信息");
+	}
+
+	/**
+	 * 查询当前节点下所有表单(根据节点ID查询当前表单)
+	 */
+	@GetMapping("/selectByNodeTable")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "查询当前节点下所有表单", notes = "传入父节点id")
+	public R<List<WbsNodeTableVO>> selectByNodeTable(@ApiParam(value = "树节点Id", required = true) @RequestParam String id,
+										 @ApiParam(value = "wbsType", required = true) @RequestParam Integer wbsType) {
+		if(wbsType==1){
+			List<WbsNodeTableVO> rs = wbsTreeService.selectByNodeTable(id);
+			if (!("").equals(rs) && rs.size() > 0) {
+				return R.data(rs);
+			}
+		}
+		return R.fail(200, "未查询到数据");
+	}
+
+
+	/**
+	 * 清表编辑 - 下拉框 树节点
+	 */
+	@PostMapping("/sava-dataInfo")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "编辑-保存", notes = "编辑-保存")
+	public R<List<WbsTreeVO>> savaDataInfo(@Valid @RequestBody WbsExclTabParmVO wbsExclTabParmVO, BladeUser bladeUser) {
+		// 保存节点信息
+
+		ExcelTab excelTab = new ExcelTab();
+		excelTab.setName(wbsExclTabParmVO.getNodeName());
+		excelTab.setFileType(2);
+		excelTab.setParentId(wbsExclTabParmVO.getParentId());
+		excelTab.setTabType(wbsExclTabParmVO.getTabType());
+		excelTab.setIsDeleted(0);
+		excelTabService.saveOrUpdate(excelTab);
+		return R.success("添加成功!");
+	}
+
+	public static String readfile(String filePath){
+		File file = new File(filePath);
+		InputStream input = null;
+		try {
+			input = new FileInputStream(file);
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}
+		StringBuffer buffer = new StringBuffer();
+		byte[] bytes = new byte[1024];
+		try {
+			for(int n ; (n = input.read(bytes))!=-1 ; ){
+				buffer.append(new String(bytes,0,n,"UTF-8"));
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return buffer.toString();
+	}
+
+	public static String getBody(String val) {
+		String start = "<body>";
+		String end = "</body>";
+		int s = val.indexOf(start) + start.length();
+		int e = val.indexOf(end);
+		return val.substring(s, e);
+	}
 }

+ 18 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.java

@@ -16,10 +16,15 @@
  */
 package org.springblade.manager.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.entity.ExcelTab;
+import org.springblade.manager.vo.ExceTabTreVO;
 import org.springblade.manager.vo.ExcelTabVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.manager.vo.ExcelTabWbsTypeVO;
+import org.springblade.manager.vo.WbsTreeVO;
+
 import java.util.List;
 
 /**
@@ -39,4 +44,17 @@ public interface ExcelTabMapper extends BaseMapper<ExcelTab> {
 	 */
 	List<ExcelTabVO> selectExcelTabPage(IPage page, ExcelTabVO excelTab);
 
+	/**
+	 * 懒加载获取树形节点
+	 *
+	 * @param tenantId
+	 * @return
+	 */
+	List<ExceTabTreVO> tabLazyTree(String tenantId, Long modeId);
+
+	List<ExcelTabWbsTypeVO> getWbsTypeList();
+
+	List<WbsTreeVO> lazyTree(@Param("wbsId") String wbsId,
+							 @Param("tenantId") String tenantId,
+							 @Param("parentId") Long parentId);
 }

+ 79 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml

@@ -22,9 +22,88 @@
         <result column="attach_size" property="attachSize"/>
     </resultMap>
 
+    <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.ExceTabTreVO">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="name" property="name"/>
+        <result column="has_children" property="hasChildren"/>
+    </resultMap>
+
+
+    <resultMap id="wbsResultMap" type="org.springblade.manager.vo.ExcelTabWbsTypeVO">
+        <id column="id" property="id"/>
+        <id column="wbsName" property="wbsName"/>
+        <result column="wbsType" property="wbsType"/>
+    </resultMap>
+
+    <resultMap id="treeNodeResultMap2" type="org.springblade.manager.vo.WbsTreeVO">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="deptName" property="deptName"/>
+        <result column="has_children" property="hasChildren"/>
+        <result column="type" property="type"/>
+    </resultMap>
+
 
     <select id="selectExcelTabPage" resultMap="excelTabResultMap">
         select * from m_excel_tab where is_deleted = 0
     </select>
 
+    <select id="tabLazyTree" resultMap="treeNodeResultMap" >
+        SELECT
+        dept.id,
+        dept.parent_id,
+        dept.name,
+        dept.file_type,
+        (
+        SELECT
+        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+        FROM
+        m_excel_tab
+        WHERE
+        parent_id = dept.id and is_deleted = 0
+        ) AS "has_children"
+        FROM
+        m_excel_tab dept
+        WHERE
+        dept.parent_id = #{param2} AND dept.is_deleted = 0
+        <if test="param1!=null and param1!=''">
+            and dept.tenant_id = #{param1}
+        </if>
+        ORDER BY dept.create_time
+    </select>
+
+
+    <select id="getWbsTypeList" resultMap="wbsResultMap">
+        SELECT id,wbs_name as wbsName,1 as wbsType from m_wbs_info where is_deleted=0
+    </select>
+
+    <select id="lazyTree" resultMap="treeNodeResultMap2">
+        SELECT
+        dept.type,
+        dept.table_type,
+        dept.id,
+        dept.is_link_table,
+        dept.parent_id,
+        dept.dept_name,
+        (
+        SELECT
+        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+        FROM
+        m_wbs_tree
+        WHERE
+        parent_id = dept.id and is_deleted = 0 AND type = 1
+        ) AS "has_children"
+        FROM
+        m_wbs_tree dept
+        WHERE
+        dept.parent_id = #{parentId} AND dept.is_deleted = 0
+        <if test="tenantId!=null and tenantId!=''">
+            and dept.tenant_id = #{tenantId}
+        </if>
+        AND dept.wbs_id = #{wbsId}
+        AND dept.type = 1
+        AND status = 1
+        ORDER BY dept.sort
+    </select>
 </mapper>

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

@@ -168,6 +168,7 @@
             wt.table_type AS tableType,
             wt.`status` AS isCreateTable ,
             wt.table_owner as tableOwner,
+            wt.is_link_table,
             (SELECT count(*) FROM m_wbs_form_element AS wfe WHERE wfe.f_id=wt.id and wfe.is_deleted = 0) AS elementTotal
         FROM
             m_wbs_tree AS wt

+ 30 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java

@@ -17,9 +17,14 @@
 package org.springblade.manager.service;
 
 import org.springblade.manager.entity.ExcelTab;
+import org.springblade.manager.vo.ExceTabTreVO;
 import org.springblade.manager.vo.ExcelTabVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.manager.vo.ExcelTabWbsTypeVO;
+import org.springblade.manager.vo.WbsTreeVO;
+
+import java.util.List;
 
 /**
  * 清表基础数据表 服务类
@@ -38,4 +43,29 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
 	 */
 	IPage<ExcelTabVO> selectExcelTabPage(IPage<ExcelTabVO> page, ExcelTabVO excelTab);
 
+
+
+	/**
+	 * 懒加载树形结构
+	 *
+	 * @param tenantId
+	 * @param modeId
+	 * @return
+	 */
+	List<ExceTabTreVO> tabLazyTree(String tenantId, Long modeId);
+
+
+	/**
+	 * 获取wbs类型
+	 */
+	List<ExcelTabWbsTypeVO> getWbsTypeList();
+
+	/**
+	 * 懒加载树形结构
+	 *
+	 * @param tenantId
+	 * @param parentId
+	 * @return
+	 */
+	List<WbsTreeVO> lazyTree(String wbsId, String tenantId, Long parentId);
 }

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

@@ -16,14 +16,22 @@
  */
 package org.springblade.manager.service.impl;
 
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.entity.ExcelTab;
+import org.springblade.manager.vo.ExceTabTreVO;
 import org.springblade.manager.vo.ExcelTabVO;
 import org.springblade.manager.mapper.ExcelTabMapper;
 import org.springblade.manager.service.IExcelTabService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.manager.vo.ExcelTabWbsTypeVO;
+import org.springblade.manager.vo.WbsTreeVO;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 清表基础数据表 服务实现类
  *
@@ -38,4 +46,24 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 		return page.setRecords(baseMapper.selectExcelTabPage(page, excelTab));
 	}
 
+	@Override
+	public List<ExceTabTreVO> tabLazyTree(String tenantId, Long modeId) {
+		if (AuthUtil.isAdministrator()) {
+			tenantId = StringPool.EMPTY;
+		}
+		return ForestNodeMerger.merge(baseMapper.tabLazyTree(tenantId, modeId));
+	}
+
+	@Override
+	public List<ExcelTabWbsTypeVO> getWbsTypeList() {
+		return baseMapper.getWbsTypeList();
+	}
+
+	@Override
+	public List<WbsTreeVO> lazyTree(String wbsId, String tenantId, Long parentId) {
+		if (AuthUtil.isAdministrator()) {
+			tenantId = StringPool.EMPTY;
+		}
+		return ForestNodeMerger.merge(baseMapper.lazyTree(wbsId, tenantId, parentId));
+	}
 }

+ 2 - 2
blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java

@@ -178,8 +178,8 @@ public class MenuController extends BladeController {
 	@GetMapping("/routes")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "前端菜单数据", notes = "前端菜单数据")
-	public R<List<MenuVO>> routes(BladeUser user, Long topMenuId) {
-		List<MenuVO> list = menuService.routes((user == null) ? null : user.getRoleId(), topMenuId);
+	public R<List<MenuVO>> routes(BladeUser user, Long topMenuId,String sysType) {
+		List<MenuVO> list = menuService.routes((user == null) ? null : user.getRoleId(), topMenuId,sysType);
 		return R.data(list);
 	}
 

+ 2 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java

@@ -125,6 +125,8 @@ public interface MenuMapper extends BaseMapper<Menu> {
 	 */
 	List<Menu> allMenu();
 
+	List<Menu> allMenuBySysType(String sysType);
+
 	/**
 	 * 权限配置菜单
 	 *

+ 4 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml

@@ -113,6 +113,10 @@
         select * from blade_menu where is_deleted = 0 and category = 1
     </select>
 
+    <select id="allMenuBySysType" resultMap="menuResultMap">
+        select a.* from blade_menu a ,blade_client b  where a.is_deleted = 0 and a.category = 1 and a.sys_id=b.id and b.client_id=#{sysType}
+    </select>
+
     <select id="roleMenu" resultMap="menuResultMap">
         select * from blade_menu where is_deleted = 0 and id IN
         ( SELECT menu_id FROM blade_role_menu WHERE role_id IN

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java

@@ -58,7 +58,7 @@ public interface IMenuService extends IService<Menu> {
 	 * @param topMenuId
 	 * @return
 	 */
-	List<MenuVO> routes(String roleId, Long topMenuId);
+	List<MenuVO> routes(String roleId, Long topMenuId,String sysType);
 
 	/**
 	 * 按钮树形结构

+ 4 - 2
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java

@@ -84,11 +84,13 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
 
 
 	@Override
-	public List<MenuVO> routes(String roleId, Long topMenuId) {
+	public List<MenuVO> routes(String roleId, Long topMenuId,String sysType) {
 		if (StringUtil.isBlank(roleId)) {
 			return null;
 		}
-		List<Menu> allMenus = baseMapper.allMenu();
+
+		List<Menu> allMenus = baseMapper.allMenuBySysType(sysType);
+
 		List<Menu> roleMenus;
 		// 超级管理员并且不是顶部菜单请求则返回全部菜单
 		if (AuthUtil.isAdministrator() && Func.isEmpty(topMenuId)) {