hongchuangyanfa 3 lat temu
rodzic
commit
cfd96a0b2e
17 zmienionych plików z 571 dodań i 45 usunięć
  1. 50 0
      blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/IOSSClient.java
  2. 2 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
  3. 64 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/OssClient.java
  4. 34 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ExctabCellDTO.java
  5. 2 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExcelTab.java
  6. 85 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExctabCell.java
  7. 1 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsInfo.java
  8. 34 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExctabCellVO.java
  9. 8 2
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsExclTabParmVO.java
  10. 53 38
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  11. 127 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExctabCellController.java
  12. 0 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  13. 2 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml
  14. 42 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExctabCellMapper.java
  15. 22 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExctabCellMapper.xml
  16. 42 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExctabCellService.java
  17. 3 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml

+ 50 - 0
blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/IOSSClient.java

@@ -0,0 +1,50 @@
+/*
+ *      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.resource.feign;
+
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.sms.model.SmsResponse;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * ISmsClient
+ *
+ * @author Chill
+ */
+@FeignClient(
+	value = AppConstant.APPLICATION_RESOURCE_NAME
+)
+
+public interface IOSSClient {
+	String API_PREFIX = "/client";
+	String SEND_MESSAGE = API_PREFIX + "/addFileInfo";
+
+
+	/**
+	 * 通用短信发送
+	 * @return R
+	 */
+	@PostMapping(value = SEND_MESSAGE ,consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+	R addFileInfo(@RequestPart MultipartFile file);
+
+}

+ 2 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java

@@ -16,9 +16,11 @@
  */
 package org.springblade.resource.endpoint;
 
+import com.aliyun.oss.OSSClient;
 import io.swagger.annotations.Api;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
+import org.springblade.core.oss.AliossTemplate;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.oss.model.OssFile;
 import org.springblade.core.secure.annotation.PreAuth;

+ 64 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/OssClient.java

@@ -0,0 +1,64 @@
+/*
+ *      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.resource.feign;
+
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
+import org.springblade.core.oss.AliossTemplate;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.sms.model.SmsCode;
+import org.springblade.core.sms.model.SmsData;
+import org.springblade.core.sms.model.SmsResponse;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.jackson.JsonUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.resource.builder.oss.OssBuilder;
+import org.springblade.resource.builder.sms.SmsBuilder;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+import static org.springblade.resource.utils.SmsUtil.*;
+
+/**
+ * 短信远程调用服务
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+public class OssClient implements IOSSClient {
+
+	/**
+	 * 对象存储构建类
+	 */
+	private final OssBuilder ossBuilder;
+
+
+	@SneakyThrows
+	@Override
+	public R addFileInfo(MultipartFile file) {
+		BladeFile bladeFile = ossBuilder.template().putFile(file.getOriginalFilename(), file.getInputStream());
+		/*BladeFile bladeFile1 = aliossTemplate.putFile(file.getOriginalFilename(), file.getInputStream());
+		System.out.println(aliossTemplate.getUploadToken());*/
+		return R.data(bladeFile);
+	}
+}

+ 34 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ExctabCellDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      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.dto;
+
+import org.springblade.manager.entity.ExctabCell;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Excel 结构信息表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-05-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ExctabCellDTO extends ExctabCell {
+	private static final long serialVersionUID = 1L;
+
+}

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

@@ -52,7 +52,8 @@ public class ExcelTab extends BaseEntity {
 	 * 表类型
 	 */
 	@ApiModelProperty(value = "表类型")
-	private Integer tabType;
+
+	private Long tabType;
 
 	/**
 	* 节点名称

+ 85 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExctabCell.java

@@ -0,0 +1,85 @@
+/*
+ *      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.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+
+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 org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Excel 结构信息表实体类
+ *
+ * @author BladeX
+ * @since 2022-05-26
+ */
+@Data
+@TableName("m_exctab_cell")
+@ApiModel(value = "ExctabCell对象", description = "ExctabCell对象")
+public class ExctabCell implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 主键
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty(value = "主键")
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	private Long id;
+
+	/**
+	* 清表Id
+	*/
+		private Long exctabId;
+	/**
+	* tr下标
+	*/
+		private Integer trIndex;
+	/**
+	* td下标
+	*/
+		private Integer tdIndex;
+	/**
+	* 合并行格数
+	*/
+		private Integer colIndex;
+	/**
+	* 合并列格数
+	*/
+		private Integer rowIndex;
+	/**
+	* 文本信息
+	*/
+		private String textInfo;
+
+	/**
+	 * 是否已删除
+	 */
+	@TableLogic
+	@ApiModelProperty(value = "是否已删除")
+	private Integer isDeleted;
+
+}

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

@@ -41,6 +41,7 @@ public class WbsInfo extends BaseEntity {
 	/**
 	* wsb属性
 	*/
+
 		private Integer wbsType;
 
 

+ 34 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExctabCellVO.java

@@ -0,0 +1,34 @@
+/*
+ *      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 org.springblade.manager.entity.ExctabCell;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Excel 结构信息表视图实体类
+ *
+ * @author BladeX
+ * @since 2022-05-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ExctabCellVO extends ExctabCell {
+	private static final long serialVersionUID = 1L;
+
+}

+ 8 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsExclTabParmVO.java

@@ -35,6 +35,13 @@ public class WbsExclTabParmVO  {
 
 	private static final long serialVersionUID = 1L;
 
+	/**
+	 * 当前节点di
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty(value = "node父节点Id")
+	private Long id;
+
 	/**
 	 * 父节点ID
 	 */
@@ -52,7 +59,7 @@ public class WbsExclTabParmVO  {
 	 * 清表类型
 	 */
 	@ApiModelProperty(value = "清表类型")
-	private Integer tabType;
+	private Long tabType;
 
 	/**
 	 * 关联信息
@@ -61,5 +68,4 @@ public class WbsExclTabParmVO  {
 	private List<ExcelTabWbsTypeVO> linkDataInfo;
 
 
-
 }

+ 53 - 38
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -16,39 +16,33 @@
  */
 package org.springblade.manager.controller;
 
-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.IExctabCellService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.manager.vo.*;
+import org.springblade.manager.wrapper.ExcelTabWrapper;
+import org.springblade.resource.feign.IOSSClient;
 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.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.ArrayList;
 import java.util.List;
 
 /**
@@ -63,15 +57,14 @@ import java.util.List;
 @Api(value = "清表基础数据表", tags = "清表基础数据表接口")
 public class ExcelTabController extends BladeController {
 
+	// excel 基本信息表
 	private final IExcelTabService excelTabService;
-
+	// wes 基本信息表
 	private final IWbsTreeService wbsTreeService;
+	// excel 解析结构
+	private final IExctabCellService exctabCellService;
 
-	private AliossTemplate aliossTemplate;
-
-	/**
-	 * 对象存储构建类
-	 */
+	private final IOSSClient iossClient;
 
 
 	/**
@@ -175,26 +168,33 @@ public class ExcelTabController extends BladeController {
 			@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);
+	public R putFileAttach(@RequestParam("file") MultipartFile file, Long nodeId) {
+
+		ExcelTab detail = excelTabService.getById(nodeId);
+		// 删除excel文件
+		//R bladeFile = iossClient.addFileInfo(file);
+
+		R bladeFile = iossClient.addFileInfo(file);
+
+		System.out.println(bladeFile);
+
+		/*detail.setExtension(bladeFile.getOriginalName());
+		detail.setFileUrl(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());
+		wb.loadFromMHtml(file.getInputStream());
 
 		//获取工作表
 		Worksheet sheet = wb.getWorksheets().get(0);
-		//sheet.saveToHtml("/Users/hongchuangyanfa/JAVA_Project/ToHtml.html");
 		sheet.saveToHtml(thmlUrl);
 
 		//解析数据
-		Thread.sleep(1000);
+		Thread.sleep(200);
 		String htmlString =  readfile(thmlUrl);
 
 		String htmlString2=  getBody(htmlString);
@@ -202,21 +202,31 @@ public class ExcelTabController extends BladeController {
 		Document doc = Jsoup.parse(htmlString2);
 
 		Elements trs = doc.select("tr");
+		List<ExctabCell> cellList = new ArrayList<>();
 
 		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());
+			for( int j = 0 ; j < tds.size();j++ ){
+				ExctabCell cell = new ExctabCell();
+				Element data = tds.get(j);
+				int colspan = Integer.parseInt(data.attr("COLSPAN").equals("")?"0":data.attr("COLSPAN"));
+				int rowspan  = Integer.parseInt(data.attr("ROWSPAN").equals("")?"0":data.attr("ROWSPAN"));
+				String textInfo = data.text();
+				cell.setExctabId(nodeId);
+				cell.setTrIndex(i);
+				cell.setTdIndex(j);
+				cell.setColIndex(colspan);
+				cell.setRowIndex(rowspan);
+				cell.setTextInfo(textInfo);
+				cellList.add(cell);
+				System.out.print("COLSPAN:" +colspan+" ROWSPAN:"+rowspan+" "+textInfo);
 			}
 			System.out.println();
 		}
 
 		// 保存结构
-
-
-
-
+		exctabCellService.saveOrUpdateBatch(cellList);*/
 		return R.success("上传成功");
 	}
 
@@ -281,13 +291,18 @@ public class ExcelTabController extends BladeController {
 	@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);
+		if(wbsExclTabParmVO.getId()!=null){// 修改
+			excelTab = excelTabService.getById(wbsExclTabParmVO.getId());
+			excelTab.setName(wbsExclTabParmVO.getNodeName());
+			excelTab.setTabType(wbsExclTabParmVO.getTabType());
+		}else{ // 新增
+			excelTab.setParentId(wbsExclTabParmVO.getParentId());
+			excelTab.setTabType(wbsExclTabParmVO.getTabType());
+			excelTab.setName(wbsExclTabParmVO.getNodeName());
+			excelTab.setIsDeleted(0);
+			excelTab.setFileType(2);
+		}
 		excelTabService.saveOrUpdate(excelTab);
 		return R.success("添加成功!");
 	}

+ 127 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExctabCellController.java

@@ -0,0 +1,127 @@
+/*
+ *      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.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+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.ExctabCell;
+import org.springblade.manager.vo.ExctabCellVO;
+import org.springblade.manager.service.IExctabCellService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * Excel 结构信息表 控制器
+ *
+ * @author BladeX
+ * @since 2022-05-26
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/exctabcell")
+@Api(value = "Excel 结构信息表", tags = "Excel 结构信息表接口")
+public class ExctabCellController extends BladeController {
+
+	private final IExctabCellService exctabCellService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入exctabCell")
+	public R<ExctabCell> detail(ExctabCell exctabCell) {
+		ExctabCell detail = exctabCellService.getOne(Condition.getQueryWrapper(exctabCell));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 Excel 结构信息表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入exctabCell")
+	public R<IPage<ExctabCell>> list(ExctabCell exctabCell, Query query) {
+		IPage<ExctabCell> pages = exctabCellService.page(Condition.getPage(query), Condition.getQueryWrapper(exctabCell));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 Excel 结构信息表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入exctabCell")
+	public R<IPage<ExctabCellVO>> page(ExctabCellVO exctabCell, Query query) {
+		IPage<ExctabCellVO> pages = exctabCellService.selectExctabCellPage(Condition.getPage(query), exctabCell);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 Excel 结构信息表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入exctabCell")
+	public R save(@Valid @RequestBody ExctabCell exctabCell) {
+		return R.status(exctabCellService.save(exctabCell));
+	}
+
+	/**
+	 * 修改 Excel 结构信息表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入exctabCell")
+	public R update(@Valid @RequestBody ExctabCell exctabCell) {
+		return R.status(exctabCellService.updateById(exctabCell));
+	}
+
+	/**
+	 * 新增或修改 Excel 结构信息表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入exctabCell")
+	public R submit(@Valid @RequestBody ExctabCell exctabCell) {
+		return R.status(exctabCellService.saveOrUpdate(exctabCell));
+	}
+
+	
+	/**
+	 * 删除 Excel 结构信息表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(exctabCellService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 0 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java

@@ -25,13 +25,10 @@ import javax.validation.Valid;
 
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.dto.ProjectInfoDTO;
-import org.springblade.manager.entity.WbsTreePrivate;
-import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.manager.vo.*;

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml

@@ -20,6 +20,7 @@
         <result column="tab_cout" property="tabCout"/>
         <result column="extension" property="extension"/>
         <result column="attach_size" property="attachSize"/>
+        <result column="tab_type" property="tabType"/>
     </resultMap>
 
     <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.ExceTabTreVO">
@@ -85,7 +86,7 @@
         dept.id,
         dept.is_link_table,
         dept.parent_id,
-        dept.dept_name,
+        dept.dept_name as deptName,
         (
         SELECT
         CASE WHEN count(1) > 0 THEN 1 ELSE 0 END

+ 42 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExctabCellMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      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.mapper;
+
+import org.springblade.manager.entity.ExctabCell;
+import org.springblade.manager.vo.ExctabCellVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * Excel 结构信息表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-05-26
+ */
+public interface ExctabCellMapper extends BaseMapper<ExctabCell> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param exctabCell
+	 * @return
+	 */
+	List<ExctabCellVO> selectExctabCellPage(IPage page, ExctabCellVO exctabCell);
+
+}

+ 22 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExctabCellMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.manager.mapper.ExctabCellMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="exctabCellResultMap" type="org.springblade.manager.entity.ExctabCell">
+        <result column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="exctab_id" property="exctabId"/>
+        <result column="tr_index" property="trIndex"/>
+        <result column="td_index" property="tdIndex"/>
+        <result column="col_index" property="colIndex"/>
+        <result column="row_index" property="rowIndex"/>
+        <result column="text_info" property="textInfo"/>
+    </resultMap>
+
+
+    <select id="selectExctabCellPage" resultMap="exctabCellResultMap">
+        select * from m_exctab_cell where is_deleted = 0
+    </select>
+
+</mapper>

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

@@ -0,0 +1,42 @@
+/*
+ *      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.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.manager.entity.ExctabCell;
+import org.springblade.manager.vo.ExctabCellVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * Excel 结构信息表 服务类
+ *
+ * @author BladeX
+ * @since 2022-05-26
+ */
+public interface IExctabCellService extends IService<ExctabCell> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param exctabCell
+	 * @return
+	 */
+	IPage<ExctabCellVO> selectExctabCellPage(IPage<ExctabCellVO> page, ExctabCellVO exctabCell);
+
+}

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

@@ -17,6 +17,9 @@
         <result column="is_open" property="isOpen"/>
         <result column="remark" property="remark"/>
         <result column="is_deleted" property="isDeleted"/>
+        <result column="sys_id" property="sysId"/>
+        <result column="text_info" property="textInfo"/>
+        <result column="is_layout" property="isLayout"/>
     </resultMap>
 
     <resultMap id="menuVOResultMap" type="org.springblade.system.vo.MenuVO">