Administrator 2 years ago
parent
commit
387b5b460b
47 changed files with 1109 additions and 90 deletions
  1. 36 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
  2. 14 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ImageClassificationFileVO.java
  3. 4 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/TaskQueryVO.java
  4. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormElementDTO2.java
  5. 34 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/TableInfoDTO.java
  6. 116 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/AppUser.java
  7. 60 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/TableInfo.java
  8. 7 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTree.java
  9. 1 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java
  10. 60 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/AppOwnDataVO.java
  11. 16 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/AppWbsTreeContractVO.java
  12. 34 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TableInfoVO.java
  13. 85 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsContractNodeVo.java
  14. 5 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java
  15. 6 0
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java
  16. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java
  17. 11 4
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  18. 8 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.xml
  19. 11 12
      blade-service/blade-manager/pom.xml
  20. 20 13
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  21. 16 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ManagerHomePageController.java
  22. 127 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TableInfoController.java
  23. 18 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java
  24. 17 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java
  25. 18 13
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  26. 42 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TableInfoMapper.java
  27. 27 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TableInfoMapper.xml
  28. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml
  29. 3 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  30. 67 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  31. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java
  32. 7 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  33. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  34. 10 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  35. 41 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/ITableInfoService.java
  36. 3 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  37. 6 6
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  38. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  39. 55 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  40. 2 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  41. 41 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TableInfoServiceImpl.java
  42. 29 17
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java
  43. 8 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  44. 13 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  45. 14 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  46. 5 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml
  47. 1 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

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

@@ -213,6 +213,42 @@ public class OssEndpoint {
 		return R.data(newBladeFile);
 	}
 
+	/**
+	 * 上传文件(兼容工程文件需求)
+	 */
+	@SneakyThrows
+	@PostMapping("/upload-file2")
+	public R<String> uploadFile2(@RequestParam MultipartFile file){
+		//上传原文件
+		BladeFile bladeFile = ossBuilder.template().putFile(file.getOriginalFilename(), file.getInputStream());
+
+		//处理PDF文件
+		NewBladeFile newBladeFile = new NewBladeFile();
+		if(Objects.requireNonNull(file.getOriginalFilename()).contains("xlsx")){
+			newBladeFile = this.commonFileClient.excelToPdf(file);
+
+		} else if(file.getOriginalFilename().contains("xls")){
+			newBladeFile = this.commonFileClient.excelToPdf(file);
+
+		} else if(file.getOriginalFilename().contains("docx")){
+			newBladeFile = this.commonFileClient.wordToPdf(file);
+
+		} else if(file.getOriginalFilename().contains("png") || file.getOriginalFilename().contains("jpg")){
+			newBladeFile = this.commonFileClient.pngOrJpgToPdf(file);
+
+		} else if(file.getOriginalFilename().contains("pdf")){
+			//获取PDF文件
+			PDDocument document = PDDocument.load(file.getInputStream());
+			//获取文件页数
+			newBladeFile.setPage(document.getPages().getCount());
+			//pdf的路径就是文件上传的路径
+			newBladeFile.setPdfUrl(bladeFile.getLink());
+		}
+
+		BeanUtils.copyProperties(bladeFile, newBladeFile);
+		return R.data(newBladeFile.getPdfUrl());
+	}
+
 	/**
 	 * 上传文件
 	 *

+ 14 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ImageClassificationFileVO.java

@@ -16,11 +16,13 @@
  */
 package org.springblade.business.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import org.springblade.business.entity.ImageClassificationFile;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -65,4 +67,16 @@ public class ImageClassificationFileVO extends ImageClassificationFile {
 	@ApiModelProperty("拍摄时间,字符串")
 	private String shootingTimeStr;
 
+	/**
+	 * 搜索-开始时间(app)
+	 */
+	@ApiModelProperty("搜索-开始时间")
+	private String staDate;
+
+	/**
+	 * 搜索-结束时间(app)
+	 */
+	@ApiModelProperty("搜索-开始结束")
+	private String endDate;
+
 }

+ 4 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/TaskQueryVO.java

@@ -36,4 +36,8 @@ public class TaskQueryVO {
     @ApiModelProperty("项目ID")
     private String projectId;
 
+    // 手机app 排序 状态
+    @ApiModelProperty("时间排序类型 1时间倒序 2 时间顺序")
+    private Integer ordType;
+
 }

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormElementDTO2.java

@@ -88,7 +88,7 @@ public class FormElementDTO2 extends WbsTree {
     /**
      * 提交状态 1=关联 2=新增
      */
-    @ApiModelProperty(value = "提交状态 1=关联同步元素 2=新增")
+    @ApiModelProperty(value = "提交状态 1=关联同步元素 2=新增 3=新增不关联节点")
     private Integer submitStatus;
 
 

+ 34 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/TableInfoDTO.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.TableInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 实体主表信息数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-11-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class TableInfoDTO extends TableInfo {
+	private static final long serialVersionUID = 1L;
+
+}

+ 116 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/AppUser.java

@@ -0,0 +1,116 @@
+/*
+ *      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.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+import java.util.Date;
+
+/**
+ * 实体类
+ *
+ * @author Chill
+ */
+@Data
+@TableName("blade_user")
+@EqualsAndHashCode(callSuper = true)
+public class AppUser extends TenantEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户编号
+     */
+    private String code;
+    /**
+     * 用户平台
+     */
+    private Integer userType;
+    /**
+     * 账号
+     */
+    private String account;
+    /**
+     * 密码
+     */
+    private String password;
+    /**
+     * 明文密码
+     */
+    private String plaintextPassword;
+    /**
+     * 昵称
+     */
+    private String name;
+    /**
+     * 真名
+     */
+    private String realName;
+    /**
+     * 身份证号
+     */
+    private String idNumber;
+    /**
+     * 头像
+     */
+    private String avatar;
+    /**
+     * 邮箱
+     */
+    private String email;
+    /**
+     * 手机
+     */
+    private String phone;
+    /**
+     * 生日
+     */
+    private Date birthday;
+    /**
+     * 性别
+     */
+    private Integer sex;
+    /**
+     * 角色id
+     */
+    private String roleId;
+    /**
+     * 部门id
+     */
+    private String deptId;
+    /**
+     * 岗位id
+     */
+    private String postId;
+
+    /**
+     * 单位名称
+     */
+    @ApiModelProperty(value = "单位名称")
+    private String companyName;
+
+    /**
+     * 职位
+     */
+    @ApiModelProperty(value = "职位")
+    private String position;
+
+}

+ 60 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/TableInfo.java

@@ -0,0 +1,60 @@
+/*
+ *      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.TableName;
+import java.io.Serializable;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 实体主表信息实体类
+ *
+ * @author BladeX
+ * @since 2022-11-30
+ */
+@Data
+@TableName("m_table_info")
+@EqualsAndHashCode(callSuper = true)
+public class TableInfo extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	* 表单英文名
+	*/
+		private String tabEnName;
+	/**
+	* 表单中文名称
+	*/
+		private String tabChName;
+	/**
+	* 表单类型
+	*/
+		private Integer tabType;
+	/**
+	* 表单所属方
+	*/
+		private String tableOwner;
+	/**
+	* 填报率百分比
+	*/
+		private String fillRate;
+
+
+}

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

@@ -174,4 +174,11 @@ public class WbsTree extends BaseEntity {
     @ApiModelProperty(value = "实体表id")
     private Long initTableId;
 
+    /**
+     * 表Id
+     */
+    @ApiModelProperty(value = "表Id")
+    private Long initTableId;
+
+
 }

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

@@ -251,4 +251,5 @@ public class WbsTreeContract extends BaseEntity {
      */
   //  private String mixRatioTestIds;
 
+
 }

+ 60 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/AppOwnDataVO.java

@@ -0,0 +1,60 @@
+/*
+ *      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 io.swagger.annotations.ApiModelProperty;
+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
+@ApiModel(value = "AppOwnDataVO对象", description = "app我的数据-对象")
+public class AppOwnDataVO {
+
+	/**
+	 * 填报数量
+	 */
+	@ApiModelProperty("填报数量")
+	private double fillNum;
+
+	/**
+	 * 已审批数量
+	 */
+	@ApiModelProperty("已审批数量")
+	private double appdNum;
+
+	/**
+	 * 反馈问题
+	 */
+	@ApiModelProperty("反馈问题")
+	private double fbNum;
+
+
+}

+ 16 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/AppWbsTreeContractVO.java

@@ -0,0 +1,16 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.AppUser;
+
+import java.util.List;
+
+@Data
+public class AppWbsTreeContractVO extends WbsTreeContract {
+    private static final long serialVersionUID = 1L;
+
+    // 填报用户信息
+    private List<AppUser> appUserList;
+
+}

+ 34 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TableInfoVO.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.TableInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 实体主表信息视图实体类
+ *
+ * @author BladeX
+ * @since 2022-11-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class TableInfoVO extends TableInfo {
+	private static final long serialVersionUID = 1L;
+
+}

+ 85 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsContractNodeVo.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.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 org.springblade.manager.entity.WbsTreeContract;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 视图实体类
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "WbsContractNodeVo对象", description = "WbsContractNodeVo对象")
+public class WbsContractNodeVo extends WbsTreeContract implements INode<WbsContractNodeVo> {
+	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<WbsContractNodeVo> children;
+
+	/**
+	 * 是否有子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private Boolean hasChildren;
+
+	@Override
+	public List<WbsContractNodeVo> getChildren() {
+		if (this.children == null) {
+			this.children = new ArrayList<>();
+		}
+		return this.children;
+	}
+
+	/**
+	 * 上级机构
+	 */
+	private String parentName;
+
+	/**
+	 * 机构类型名称
+	 */
+	private String deptCategoryName;
+
+}

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

@@ -152,6 +152,11 @@ public class Menu implements Serializable {
 	@ApiModelProperty(value = "提示视频路径")
 	private String videoUrl;
 
+	/**
+	 * 文档信息
+	 */
+	@ApiModelProperty(value = "文档信息")
+	private String excelUrl;
 
 
 

+ 6 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java

@@ -101,6 +101,12 @@ public class User extends TenantEntity {
      */
     private String postId;
 
+    /**
+     * 电签证书编码
+     */
+    private String accCode;
+
+
     /**
      * 单位名称
      */

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java

@@ -511,6 +511,8 @@ public class ImageClassificationFileController extends BladeController {
             @ApiImplicitParam(name = "queryStr", value = "输入框查询"),
             @ApiImplicitParam(name = "queryDate", value = "时间查询"),
             @ApiImplicitParam(name = "wbsIdsStr", value = "节点查询"),
+            @ApiImplicitParam(name = "staDate", value = "开始时间"),
+            @ApiImplicitParam(name = "endDate", value = "结束时间")
     })
     public R<IPage<ImageClassificationFileVO>> page(ImageClassificationFileVO fileVO, Query query) {
         IPage<ImageClassificationFileVO> page = this.imageClassificationFileService.selectImageClassificationFilePage(Condition.getPage(query), fileVO);

+ 11 - 4
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -209,7 +209,7 @@ public class TaskController extends BladeController {
 
 				//最终结果集合
 				List<TaskVO> finalResult = new ArrayList<>();
-				result.forEach(flow -> {
+				for(BladeFlow  flow : result) {
 					//获取实体
 					Task task = masterTaskMap.get(flow.getProcessInstanceId());
 					//类型转换
@@ -221,12 +221,19 @@ public class TaskController extends BladeController {
 					vo.setTaskStatus(new Integer("1").equals(task.getStatus()) ? "待审批" : new Integer("2").equals(task.getStatus()) ? "已审批" : "已废除", task.getStatus());
 					//查询分支流程信息
 					List<TaskParallel> linkList = this.taskParallelService.list(Wrappers.<TaskParallel>lambdaQuery().eq(TaskParallel::getProcessInstanceId, task.getProcessInstanceId()));
-					if(linkList != null && !linkList.isEmpty()){
+					if (linkList != null && !linkList.isEmpty()) {
 						this.integrationMethod(vo, linkList);
 					}
-
 					finalResult.add(vo);
-				});
+				}
+
+				// 手机app 需要排序接口
+				if(queryVO.getOrdType()!=null && queryVO.getOrdType()==1){ // 降序
+					finalResult.sort(Comparator.comparing(TaskVO::getCreateTime).reversed());
+				}
+				if(queryVO.getOrdType()!=null && queryVO.getOrdType()==2){ // 升序
+					finalResult.sort(Comparator.comparing(TaskVO::getCreateTime));
+				}
 
 				//最终分页数据
 				return this.getIPageR(query, flowIPage, finalResult);

+ 8 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.xml

@@ -89,6 +89,14 @@
                 and wbs_id in
                 <foreach collection="param.wbsIds" item="webId" open="(" separator="," close=")">#{webId}</foreach>
             </if>
+
+            <if test="param.staDate != null and param.staDate != ''">
+                <![CDATA[ and  shooting_time >= DATE_FORMAT(#{param.staDate}, '%Y-%m-%d %H:%i:%S') ]]>
+             </if>
+            <if test="param.endDate != null and param.endDate != ''">
+                <![CDATA[ and  shooting_time <= DATE_FORMAT(#{param.endDate}, '%Y-%m-%d %H:%i:%S') ]]>
+            </if>
+
             order by shooting_time desc
         ) as files
         where

+ 11 - 12
blade-service/blade-manager/pom.xml

@@ -169,18 +169,17 @@
                 </configuration>
             </plugin>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                    <encoding>${project.build.sourceEncoding}</encoding>
-                    <compilerArguments>
-                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jar
-                        </bootclasspath>
-                    </compilerArguments>
-                </configuration>
-            </plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <configuration>
+                <source>${java.version}</source>
+                <target>${java.version}</target>
+                <encoding>${project.build.sourceEncoding}</encoding>
+                <compilerArguments>
+                    <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jar</bootclasspath>
+                </compilerArguments>
+            </configuration>
+        </plugin>
         </plugins>
     </build>
 </project>

+ 20 - 13
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1276,9 +1276,7 @@ public class ExcelTabController extends BladeController {
         wbsTreeContract.setTabFileType(1);//没有上传附件
         wbsTreeContract.setPdfUrl("");
 
-
         String tabName = wbsTreeContract.getInitTableName();
-
         // 字段查询 并去掉公式字段
 
         String colkeys = "SELECT GROUP_CONCAT(e_key) as colkeys from m_wbs_tree a ,m_wbs_form_element b WHERE a.init_table_name = '" + tabName + "' and a.id=b.f_id and b.id not in(SELECT element_id from m_formula c where c.is_deleted=0) ";
@@ -1417,14 +1415,19 @@ public class ExcelTabController extends BladeController {
     })
     public R getpdfs(String nodeId, String classify, String contractId, String projectId) {
         String sql = "select pdf_url, e_visa_pdf_url from u_information_query  where classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "' ";
-        Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql);
-        Object pdfUrl = stringObjectMap.get("pdf_url");
-        if (stringObjectMap.get("e_visa_pdf_url") != null) {
-            //优先使用电签的PDF
-            pdfUrl = stringObjectMap.get("e_visa_pdf_url");
-        }
 
-        return R.data(pdfUrl);
+        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
+        if(maps!=null && maps.size()>=1){
+            Map<String, Object> stringObjectMap = maps.get(0);
+            Object pdfUrl = stringObjectMap.get("pdf_url");
+            if (stringObjectMap.get("e_visa_pdf_url") != null) {
+                //优先使用电签的PDF
+                pdfUrl = stringObjectMap.get("e_visa_pdf_url");
+            }
+            return R.data(pdfUrl);
+        }else{
+            return R.fail("无历史数据预览,请保存数据");
+        }
     }
 
     /**
@@ -1460,13 +1463,15 @@ public class ExcelTabController extends BladeController {
         List<TableInfo> tableInfoList = this.excelTabService.getTableInfoList(dataArray);
         try {
             this.excelTabService.formulaFillData(tableInfoList, Long.parseLong(nodeid));
+            // 保存数据到数据库
         } catch (Exception e) {
             e.printStackTrace();
         }
 
-        // 保存数据到数据库
-        this.excelTabService.saveOrUpdateInfo(tableInfoList);
-
+        R info = this.excelTabService.saveOrUpdateInfo(tableInfoList);
+        if(!info.isSuccess()){
+            return info;
+        }
         //单个 pdf加载
         for (TableInfo tableInfo : tableInfoList) {
             excelTabService.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
@@ -1719,6 +1724,7 @@ public class ExcelTabController extends BladeController {
         return R.data(null);
     }
 
+
     /**
      * 获取当前用户当前日期的填报记录
      */
@@ -1735,6 +1741,7 @@ public class ExcelTabController extends BladeController {
         //获取对应的记录
         JSONObject theLogJson;
         if (StringUtils.isNotEmpty(theLogId)) {
+            //
             theLogJson = this.contractLogClient.queryContractLogById(theLogId);
         } else {
             theLogJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, recordTime, contractId);
@@ -1762,7 +1769,7 @@ public class ExcelTabController extends BladeController {
                     Map<String, Object> reData = new HashMap<>();
 
                     String id = mysqlData.get("id")+"" ;
-                    String querySqlx = "SELECT tree_primary_key_id as primaryKeyId,title as path from u_contract_log_wbs where  business_id ='"+id+"'";
+                    String querySqlx = "SELECT tree_primary_key_id as primaryKeyId,title as path from u_contract_log_wbs where  business_id ='"+id+"' and is_deleted=0";
                     List<Map<String, Object>> businessDat = this.jdbcTemplate.queryForList(querySqlx);
                     if(businessDat!=null){
                         reData.put("linkTabIds",businessDat);

+ 16 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ManagerHomePageController.java

@@ -13,6 +13,7 @@ import org.springblade.business.vo.BusinessUserOpinionVO;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.manager.service.ISignPfxFileService;
+import org.springblade.manager.vo.AppOwnDataVO;
 import org.springblade.manager.vo.ManagerHomePageVO;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.tool.api.R;
@@ -350,4 +351,19 @@ public class ManagerHomePageController extends BladeController {
         return R.data(resultVO);
     }
 
+
+    /**
+     * app 我的数据统计
+     */
+    @PostMapping("/appqueryowndata")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "证书统计")
+    public R<AppOwnDataVO> appQueryOwnData(){
+        AppOwnDataVO appOwnDataVO = new AppOwnDataVO();
+        appOwnDataVO.setAppdNum(10);
+        appOwnDataVO.setFillNum(23);
+        appOwnDataVO.setFbNum(0);
+        return R.data(appOwnDataVO);
+    }
+
 }

+ 127 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TableInfoController.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.TableInfo;
+import org.springblade.manager.vo.TableInfoVO;
+import org.springblade.manager.service.ITableInfoService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 实体主表信息 控制器
+ *
+ * @author BladeX
+ * @since 2022-11-30
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/tableinfo")
+@Api(value = "实体主表信息", tags = "实体主表信息接口")
+public class TableInfoController extends BladeController {
+
+	private final ITableInfoService tableInfoService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入tableInfo")
+	public R<TableInfo> detail(TableInfo tableInfo) {
+		TableInfo detail = tableInfoService.getOne(Condition.getQueryWrapper(tableInfo));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 实体主表信息
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入tableInfo")
+	public R<IPage<TableInfo>> list(TableInfo tableInfo, Query query) {
+		IPage<TableInfo> pages = tableInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(tableInfo));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 实体主表信息
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入tableInfo")
+	public R<IPage<TableInfoVO>> page(TableInfoVO tableInfo, Query query) {
+		IPage<TableInfoVO> pages = tableInfoService.selectTableInfoPage(Condition.getPage(query), tableInfo);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 实体主表信息
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入tableInfo")
+	public R save(@Valid @RequestBody TableInfo tableInfo) {
+		return R.status(tableInfoService.save(tableInfo));
+	}
+
+	/**
+	 * 修改 实体主表信息
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入tableInfo")
+	public R update(@Valid @RequestBody TableInfo tableInfo) {
+		return R.status(tableInfoService.updateById(tableInfo));
+	}
+
+	/**
+	 * 新增或修改 实体主表信息
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入tableInfo")
+	public R submit(@Valid @RequestBody TableInfo tableInfo) {
+		return R.status(tableInfoService.saveOrUpdate(tableInfo));
+	}
+
+	
+	/**
+	 * 删除 实体主表信息
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(tableInfoService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 18 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -10,6 +10,8 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsTreeContractDTO2;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.service.IWbsTreeContractService;
+import org.springblade.manager.vo.AppWbsTreeContractVO;
+import org.springblade.manager.vo.WbsContractNodeVo;
 import org.springblade.manager.vo.WbsTreeContractVO4;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -30,7 +32,7 @@ public class WbsTreeContractController extends BladeController {
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "查询当前节点下所有元素表信息", notes = "传入节点primaryKeyId、type、合同段id、项目id")
     public R searchNodeAllTable(String primaryKeyId, String type, String contractId, String projectId) {
-        List<WbsTreeContract> list = iWbsTreeContractService.searchNodeAllTable(primaryKeyId, type, contractId, projectId);
+        List<AppWbsTreeContractVO> list = iWbsTreeContractService.searchNodeAllTable(primaryKeyId, type, contractId, projectId);
         if (list.size() > 0) {
             return R.data(list);
         }
@@ -84,4 +86,19 @@ public class WbsTreeContractController extends BladeController {
         return R.status(iWbsTreeContractService.concealedWorksNode(pKeyId, type));
     }
 
+
+    @GetMapping("/app-search-concealed-nodes")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "获取隐藏节点树", notes = "获取隐藏节点树")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "primaryKeyId", value = "当前节点id", required = true),
+            @ApiImplicitParam(name = "contractId", value = "合同段Id", required = true)})
+    public R appSearchConcealedNodes(long primaryKeyId, long contractId) {
+        List<WbsContractNodeVo> list = iWbsTreeContractService.appSearchConcealedNodes(primaryKeyId, contractId);
+        if (list.size() > 0) {
+            return R.data(list);
+        }
+        return R.fail(200, "未查询到数据");
+    }
+
 }

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

@@ -350,6 +350,23 @@ public class WbsTreeController extends BladeController {
     }
 
 
+    /**
+     * 根据表单id查询所有元素
+     */
+    @GetMapping("/get-private-table-elements")
+    @ApiOperationSupport(order = 20)
+    @ApiOperation(value = "根据表单id查询所有元素", notes = "传入表单id")
+    @ApiImplicitParam(name = "id", value = "表单id", required = true)
+    public R<List<WbsFormElementVO>> selectPrivateFormElements(@RequestParam("id") String id) {
+        List<WbsFormElementVO> wbsFormElements = null;
+        if (StringUtils.isNotEmpty(id)) {
+            wbsFormElements = wbsTreeService.selectPrivateFormElements(id);
+            if (wbsFormElements.size() > 0) {
+                return R.data(wbsFormElements);
+            }
+        }
+        return R.data(wbsFormElements, "未查询到元素");
+    }
 
 }
 

+ 18 - 13
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -16,6 +16,7 @@ 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.support.Kv;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO3;
 import org.springblade.manager.entity.ProjectInfo;
@@ -34,6 +35,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -480,6 +482,10 @@ public class WbsTreePrivateController extends BladeController {
         return R.status(wbsTreePrivateService.syncNodeTable(primaryKeyId));
     }
 
+
+
+
+
     /**
      * wbs私有树懒加载获取项目私有节点树形结构--(表单类型划分树)
      */
@@ -493,7 +499,7 @@ public class WbsTreePrivateController extends BladeController {
     })
     public R<IPage<TreeNodeVOByTabType>> tabTypeLazyTree(Long parentId, String projectId, BladeUser bladeUser, String titleName, Query query) {
 
-        IPage<TreeNodeVOByTabType> page = wbsTreePrivateService.tabTypeLazyTree(Condition.getPage(query), parentId, projectId, titleName);
+        IPage<TreeNodeVOByTabType> page= wbsTreePrivateService.tabTypeLazyTree(Condition.getPage(query),parentId, projectId,titleName);
         return R.data(page);
     }
 
@@ -505,8 +511,8 @@ public class WbsTreePrivateController extends BladeController {
             @ApiImplicitParam(name = "primaryKeyIds", value = "表的注解ids(多个以,隔开)", required = true),
             @ApiImplicitParam(name = "contractId", value = "合同段Id", required = true),
     })
-    public R addWbsTreeContractInfo(String nodeId, String primaryKeyIds, long contractId) {
-        return wbsTreePrivateService.addWbsTreeContractInfo(nodeId, primaryKeyIds, contractId);
+    public R addWbsTreeContractInfo(String nodeId,String primaryKeyIds,long contractId){
+        return wbsTreePrivateService.addWbsTreeContractInfo(nodeId,primaryKeyIds,contractId);
     }
 
     /**
@@ -519,8 +525,8 @@ public class WbsTreePrivateController extends BladeController {
             @ApiImplicitParam(name = "parentId", value = "父级id", required = true),
             @ApiImplicitParam(name = "titleName", value = "搜索关键字", required = true)
     })
-    public R<IPage<TreeNodeVOByTabType>> tabTypeLazyTreeAll(Long parentId, BladeUser bladeUser, String titleName, Query query) {
-        IPage<TreeNodeVOByTabType> page = wbsTreePrivateService.tabTypeLazyTreeAll(Condition.getPage(query), parentId, titleName);
+    public R<IPage<TreeNodeVOByTabType>> tabTypeLazyTreeAll(Long parentId,BladeUser bladeUser, String titleName, Query query) {
+        IPage<TreeNodeVOByTabType> page= wbsTreePrivateService.tabTypeLazyTreeAll(Condition.getPage(query),parentId,titleName);
         return R.data(page);
     }
 
@@ -531,8 +537,8 @@ public class WbsTreePrivateController extends BladeController {
             @ApiImplicitParam(name = "primaryKeyIds", value = "表的注解ids(多个以,隔开)", required = true),
             @ApiImplicitParam(name = "projectId", value = "合同段Id", required = true),
     })
-    public R addProjectTabInfo(String primaryKeyIds, String projectId) {
-        return wbsTreePrivateService.addWbsTreeProjectInfo(primaryKeyIds, projectId);
+    public R addProjectTabInfo(String primaryKeyIds,String projectId){
+        return wbsTreePrivateService.addWbsTreeProjectInfo(primaryKeyIds,projectId);
     }
 
     @PostMapping("/del-aprojecttab-info")
@@ -542,19 +548,18 @@ public class WbsTreePrivateController extends BladeController {
             @ApiImplicitParam(name = "primaryKeyIds", value = "表的注解ids(多个以,隔开)", required = true),
             @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
     })
-    public R delTabProjectById(String primaryKeyIds, String projectId) {
-        return wbsTreePrivateService.delTabProjectById(primaryKeyIds, projectId);
+    public R delTabProjectById(String primaryKeyIds,String projectId){
+        return wbsTreePrivateService.delTabProjectById(primaryKeyIds,projectId);
     }
 
     @PostMapping("/del-tab-info-all")
     @ApiOperationSupport(order = 21)
     @ApiOperation(value = "后管-删除元素表", notes = "primaryKeyIds")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "primaryKeyIds", value = "表的注解ids(多个以,隔开)", required = true)
+            @ApiImplicitParam(name = "pKeyId", value = "表的注解ids(多个以,隔开)", required = true)
     })
-    public R delTabInfoAll(String primaryKeyIds) {
-
-        return R.success("成功");
+    public R delTabInfoAll(String pKeyId){
+        return wbsTreePrivateService.delTableById(pKeyId);
     }
 
     @GetMapping("/search-node-tables")

+ 42 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TableInfoMapper.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.TableInfo;
+import org.springblade.manager.vo.TableInfoVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 实体主表信息 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-11-30
+ */
+public interface TableInfoMapper extends BaseMapper<TableInfo> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param tableInfo
+	 * @return
+	 */
+	List<TableInfoVO> selectTableInfoPage(IPage page, TableInfoVO tableInfo);
+
+}

+ 27 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TableInfoMapper.xml

@@ -0,0 +1,27 @@
+<?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.TableInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="tableInfoResultMap" type="org.springblade.manager.entity.TableInfo">
+        <result column="id" property="id"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="tab_en_name" property="tabEnName"/>
+        <result column="tab_ch_name" property="tabChName"/>
+        <result column="tab_type" property="tabType"/>
+        <result column="table_owner" property="tableOwner"/>
+        <result column="fill_rate" property="fillRate"/>
+    </resultMap>
+
+
+    <select id="selectTableInfoPage" resultMap="tableInfoResultMap">
+        select * from m_table_info where is_deleted = 0
+    </select>
+
+</mapper>

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

@@ -73,7 +73,7 @@
     <delete id="deleteElement">
         DELETE
         FROM m_wbs_form_element
-        WHERE id = #{wbsFormElement.id}
+        WHERE (id = #{wbsFormElement.id} or is_deleted=1)
     </delete>
 
     <delete id="deleteWbsTabById">

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

@@ -52,11 +52,13 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
 
     List<WbsTreeContract> searchParentAllNode(long primaryKeyId, Long contractId);
 
+    List<WbsContractNodeVo> appSearchConcealedNodes(long primaryKeyId, Long contractId);
+
     List<WbsTreeContract> updateAllNodeTabById(@Param("aPrivate") WbsTreePrivate aPrivate);
 
     List<WbsTableOwnerRole> selectWbsTableOwnerRoleList(String roleId);
 
-    List<WbsTreeContract> selectWbsTreeContractList(List<String> tableOwnerNumbers, String projectId, String wbsId, String contractId, Long parentId, String contractIdRelation, List<String> tableOwnerList);
+    List<AppWbsTreeContractVO> selectWbsTreeContractList(List<String> tableOwnerNumbers, String projectId, String wbsId, String contractId, Long parentId, String contractIdRelation, List<String> tableOwnerList);
 
     SaveUserInfoByProject selectRoleInfo(Long userId, String contractId, String projectId);
 

+ 67 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -51,6 +51,62 @@
         <result column="is_concealed_works_node" property="isConcealedWorksNode"/>
     </resultMap>
 
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="appResultMap" type="org.springblade.manager.vo.AppWbsTreeContractVO">
+        <result column="id" property="id"/>
+        <result column="p_key_id" property="pKeyId"/>
+        <result column="wbs_id" property="wbsId"/>
+        <result column="project_id" property="projectId"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="contract_type" property="contractType"/>
+        <result column="contract_id_relation" property="contractIdRelation"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="status" property="status"/>
+        <result column="create_time" property="createTime"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="type" property="type"/>
+        <result column="table_type" property="tableType"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="ancestors" property="ancestors"/>
+        <result column="node_type" property="nodeType"/>
+        <result column="node_name" property="nodeName"/>
+        <result column="full_name" property="fullName"/>
+        <result column="sort" property="sort"/>
+        <result column="remark" property="remark"/>
+        <result column="unique_code" property="uniqueCode"/>
+        <result column="partition_code" property="partitionCode"/>
+        <result column="is_concrete" property="isConcrete"/>
+        <result column="is_expernode" property="isExpernode"/>
+        <result column="table_owner" property="tableOwner"/>
+        <result column="major_data_type" property="majorDataType"/>
+        <result column="init_table_name" property="initTableName"/>
+        <result column="is_link_table" property="isLinkTable"/>
+        <result column="wbs_type" property="wbsType"/>
+        <result column="excel_id" property="excelId"/>
+        <result column="old_id" property="oldId"/>
+        <result column="html_url" property="htmlUrl"/>
+        <result column="pdf_url" property="pdfUrl"/>
+        <result column="is_buss_show" property="isBussShow"/>
+        <result column="tab_file_type" property="tabFileType"/>
+        <result column="is_cope_tab" property="isCopeTab"/>
+        <result column="is_tab_pdf" property="isTabPdf"/>
+        <result column="is_type_private_pid" property="isTypePrivatePid"/>
+        <result column="is_import_identification_node" property="isImportIdentificationNode"/>
+        <result column="import_matching_info" property="importMatchingInfo"/>
+        <result column="is_concealed_works_node" property="isConcealedWorksNode"/>
+        <collection property="appUserList" javaType="java.util.List" ofType="org.springblade.manager.entity.AppUser"
+                    select="getuserInfoByaccount"
+                    column="{sonId=p_key_id}">
+        </collection>
+    </resultMap>
+
+
+
     <resultMap id="resultMap2" type="org.springblade.manager.vo.WbsTreeContractVO">
         <result column="id" property="id"/>
         <result column="wbs_id" property="wbsId"/>
@@ -314,6 +370,13 @@
         ORDER BY c.sort
     </select>
 
+    <select id="appSearchConcealedNodes" resultType="org.springblade.manager.vo.WbsContractNodeVo">
+        SELECT t.*,(SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_contract WHERE parent_id = t.id and is_deleted = 0) AS "has_children"
+        FROM m_wbs_tree_contract t,
+             (SELECT getParentList(#{contractId}) AS keyxs)b
+        WHERE  FIND_IN_SET(t.id,b.keyxs) and contract_id=#{contractId} and is_deleted=0
+    </select>
+
     <select id="searchParentAllNode" resultType="org.springblade.manager.entity.WbsTreeContract">
         SELECT DISTINCT T2.id, if(length(trim(T2.full_name)) > 0, T2.full_name, T2.node_name) as node_name, T2.parent_id, T2.p_key_id
         FROM (
@@ -347,7 +410,7 @@
         where role_id = #{roleId}
     </select>
 
-    <select id="selectWbsTreeContractList" resultType="org.springblade.manager.entity.WbsTreeContract">
+    <select id="selectWbsTreeContractList" resultMap="appResultMap">
         SELECT * FROM
         m_wbs_tree_contract
         WHERE project_id = #{projectId}
@@ -571,4 +634,7 @@
     </select>
 
 
+    <select id="getuserInfoByaccount" resultType="org.springblade.manager.entity.AppUser">
+        SELECT b.* from u_operation_log a,blade_user b where a.operation_account=b.account and a.operation_type=1 and  a.business_id=#{sonId}
+    </select>
 </mapper>

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

@@ -33,6 +33,8 @@ public interface WbsTreeMapper extends EasyBaseMapper<WbsTree> {
 
     List<WbsFormElementVO> selectFormElements(@Param("id") String id);
 
+    List<WbsFormElementVO> selectPrivateFormElements(@Param("id") String id);
+
     Integer insertForm(WbsTree wbsTree);
 
     Integer addFormElement(WbsFormElement wbsFormElement);

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

@@ -33,6 +33,7 @@
         <result column="is_link_table" property="isLinkTable"/>
         <result column="is_exist_form" property="isExistForm"/>
         <result column="import_matching_info" property="importMatchingInfo"/>
+        <result column="init_table_id" property="initTableId"/>
     </resultMap>
 
     <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.TreeNodeVO">
@@ -381,6 +382,12 @@
         from m_wbs_form_element a inner join m_wbs_tree b on a.f_id=b.init_table_id
         where b.id=#{id} and a.is_deleted=0
     </select>
+
+    <select id="selectPrivateFormElements" resultMap="wbsFormElementMap">
+        select  * from m_wbs_form_element a
+        where a.f_id=#{id} and a.is_deleted=0
+    </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>

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

@@ -87,4 +87,7 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
 
     List<WbsTreePrivate> selectWbsTreeContractList(List<String> tableOwnerNumbers,String tableType, String projectId, String wbsId, Long parentId, List<String> tableOwnerList);
 
+
+    //删除表单信息
+    void delTableById(String pKeyId);
 }

+ 10 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -581,7 +581,7 @@
 
     <!-- 项目级 表单类型分类 wbs树 -->
     <select id="tabTypeLazyTreeAll" resultMap="treeNodeResultMapTabType">
-        SELECT p_key_id as id,p_key_id as primaryKeyId,title,parent_id,fill_rate as fillRate,
+        SELECT p_key_id as id,p_key_id as primaryKeyId,title,parent_id,fill_rate as fillRate,0 as excelIds,initTableId,
         (SELECT dict_value from blade_dict where code='table_type' and dict_key not in(-1,0) and dict_key=table_type )
         as tabType,
         (SELECT count(1) FROM m_wbs_form_element WHERE f_id = initTableId and is_deleted=0) AS "elementTotal",
@@ -597,22 +597,19 @@
         SELECT dict_key as p_key_id ,dict_value as node_name,'12345678910' as parent_id from blade_dict where
         code='table_type' and dict_key not in(-1,0)
         union all
-        SELECT id as p_key_id,node_name,table_type as parent_id from m_wbs_tree_private WHERE is_deleted=0 and type=2
-        and table_type is not NULL GROUP BY node_name
+        SELECT id as p_key_id,tab_ch_name as node_name,tab_type as parent_id from m_table_info WHERE is_deleted=0
         ) b
         WHERE
         b.parent_id = a.p_key_id
         ) AS "has_children"
         from (
         SELECT '12345678910' as p_key_id , '表单类型' as title, 0 as parent_id,0 as table_type,0 as fill_rate,0 as
-        table_owner,0 as initTableId,0 as exceIds
+        table_owner,0 as initTableId
         union all
         SELECT dict_key as p_key_id ,dict_value as title,'12345678910' as parent_id,0 as table_type,0 as fill_rate,0 as
-        table_owner,0 as initTableId,0 as exceIds from blade_dict where code='table_type' and dict_key not in(-1,0)
+        table_owner,0 as initTableId from blade_dict where code='table_type' and dict_key not in(-1,0)
         union all
-        SELECT id as p_key_id,node_name as title,table_type as parent_id,table_type,fill_rate,table_owner,init_table_id
-        as initTableId,GROUP_CONCAT(excel_id) as excelIds from m_wbs_tree_private WHERE is_deleted=0 and type=2 and
-        init_table_id is not null and table_type is not NULL GROUP BY node_name
+        SELECT id as p_key_id,tab_ch_name as title,tab_type as parent_id,tab_type as table_type,fill_rate,table_owner,id as initTableId  from m_table_info WHERE is_deleted=0
         ) a where 1=1
         <if test="parentId != null and parentId != ''">
             and a.parent_id = #{parentId}
@@ -646,7 +643,11 @@
     </select>
 
     <delete id="delTabProjectById">
-        delete m_wbs_tree_private WHERE p_key_id = #{pKeyId} and project_id=#{projectId}AND type = 10
+        delete from m_wbs_tree_private WHERE p_key_id = #{pKeyId} and project_id=#{projectId}AND type = 10
+    </delete>
+
+    <delete id="delTableById">
+        delete from m_table_info WHERE id = #{pKeyId}
     </delete>
 
 </mapper>

+ 41 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/ITableInfoService.java

@@ -0,0 +1,41 @@
+/*
+ *      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 org.springblade.manager.entity.TableInfo;
+import org.springblade.manager.vo.TableInfoVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 实体主表信息 服务类
+ *
+ * @author BladeX
+ * @since 2022-11-30
+ */
+public interface ITableInfoService extends BaseService<TableInfo> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param tableInfo
+	 * @return
+	 */
+	IPage<TableInfoVO> selectTableInfoPage(IPage<TableInfoVO> page, TableInfoVO tableInfo);
+
+}

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -34,7 +34,7 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     List<WbsTreeContractTreeVO3> lazyTreeThree(String contractIdRelation, Long parentId, String contractId);
 
-    List<WbsTreeContract> searchNodeAllTable(String primaryKeyId, String tableOwner, String contractId, String projectId);
+    List<AppWbsTreeContractVO> searchNodeAllTable(String primaryKeyId, String tableOwner, String contractId, String projectId);
 
     List<WbsTreeContract> searchParentAllNode(long primaryKeyId, Long contractId);
 
@@ -48,4 +48,6 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     List<WbsTreeContract> selectContractTreeAll(Long contractId);
 
+    // 查询隐蔽工程节点
+    List<WbsContractNodeVo> appSearchConcealedNodes(long primaryKeyId, Long contractId);
 }

+ 6 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java

@@ -28,7 +28,7 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
     IPage<TreeNodeVOByTabType> tabTypeLazyTree(IPage<TreeNodeVOByTabType> page, Long parentId, String projectId, String titleName);
 
     // 元素
-    IPage<TreeNodeVOByTabType> tabTypeLazyTreeAll(IPage<TreeNodeVOByTabType> page, Long parentId, String titleName);
+    IPage<TreeNodeVOByTabType> tabTypeLazyTreeAll(IPage<TreeNodeVOByTabType> page, Long parentId,String titleName);
 
     List<WbsTreePrivateDTO2> findWbsTreePrivateSameLevel(String projectId, String parentId, String wbsId);
 
@@ -56,13 +56,13 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
 
     boolean syncNodeTable(String primaryKeyId);
 
-    R addWbsTreeContractInfo(String nodeId, String primaryKeyIds, long contractId);
+    R addWbsTreeContractInfo(String nodeId, String primaryKeyIds,long contractId);
 
     // 向项目添加元素
-    R addWbsTreeProjectInfo(String primaryKeyIds, String projectId);
+    R addWbsTreeProjectInfo (String primaryKeyIds,String projectId);
 
-    R delTabProjectById(String primaryKeyIds, String projectId);
-
-    List<WbsTreePrivate> searchNodeAllTable(String primaryKeyId, String classify, String tableType, String contractId, String projectId);
+    R delTabProjectById(String primaryKeyIds,String projectId);
 
+    // 元素删除
+    R delTableById(String primaryKeyIds);
 }

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

@@ -33,6 +33,8 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
     boolean removeTableById(String id);
 
     List<WbsFormElementVO> selectFormElements(String id);
+    // 项目级
+    List<WbsFormElementVO> selectPrivateFormElements(String id);
 
     boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException;
 

+ 55 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.manager.service.impl;
 
 import cn.hutool.core.date.StopWatch;
 import cn.hutool.log.StaticLog;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -33,12 +34,10 @@ import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.springblade.business.feign.ContractLogClient;
 import org.springblade.business.feign.InformationQueryClient;
-import org.springblade.business.feign.TrialSelfInspectionRecordClient;
 import org.springblade.business.vo.SaveContractLogVO;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
-import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -59,15 +58,19 @@ import org.springblade.manager.vo.WbsTreeVO;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.DataSourceUtils;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.imageio.ImageIO;
+import javax.sql.DataSource;
 import java.awt.*;
 import java.awt.image.BufferedImage;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.*;
 import java.util.List;
@@ -110,6 +113,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
     private final IProjectInfoService projectInfoService;
 
+    // 用户操作日志信息
+    private final OperationLogClient operationLogClient;
+
     private final TrialSelfInspectionRecordClient inspectionRecordClient;
 
 
@@ -341,7 +347,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 });
                 stopWatch.start("公式处理");
                 List<Formula> formulas = this.formulaService.getFormulaList(keyMappers);
-                WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, nodeId));
+                WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,nodeId));
                 TableElementConverter tec = new TableElementConverter(tableInfoList, keyMappers, formulas, coordinateMap, wtc);
                 if (tec.isPresent()) {
                     tec.before();
@@ -589,10 +595,19 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
                 //huangjn 保存成功后调用生成资料查询列表数据
                 this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId() + "", "首件使用字段", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfoList.get(0).getClassify()), 2, "false", "源文件(首件字段)", "pdf文件(首件字段)", "首件上传总结报告名称", new ArrayList<>());
+
+                JSONObject json = new JSONObject();
+                json.put("operationObjIds", Func.toStrList(pkids));
+                json.put("operationObjName", wbsTreeContractByP.getNodeName()+"节点数据操作");
+
+                //保存操作记录
+                this.operationLogClient.saveUserOperationLog(1, "资料填报", "工序填报页面", json);
+
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
+        return R.success("添加成功");
     }
 
     @Override
@@ -916,6 +931,41 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         return R.data(bladeFile2.getLink());
     }
 
+    @Override
+    public void getBussPdfs(String nodeId, String classify, String contractId, String projectId) throws Exception {
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        // 获取有权限的节点信息
+        List<AppWbsTreeContractVO> wbsTreeContractList = wbsTreeContractService.searchNodeAllTable(nodeId, classify, contractId, projectId);
+        List<String> data = new ArrayList<>();
+        if (wbsTreeContractList != null && wbsTreeContractList.size() >= 1) {
+            for (WbsTreeContract wbsInfo : wbsTreeContractList) {
+                // 隐藏的不生成pdf
+                if (wbsInfo.getIsBussShow() == null || wbsInfo.getIsBussShow() != 2) { //
+                    if (StringUtils.isNotEmpty(wbsInfo.getPdfUrl())) {
+                        data.add(wbsInfo.getPdfUrl());
+                    } else {
+                        R bussPdfInfo = this.getBussPdfInfo(wbsInfo.getPKeyId());
+                        if (bussPdfInfo.getCode() == 200) {
+                            data.add(bussPdfInfo.getData() + "");
+                        }
+                    }
+                }
+            }
+        }
+
+        String listPdf = file_path + "pdf/" + nodeId + ".pdf";
+        File tabpdf2 = ResourceUtil.getFile(listPdf);
+        if (tabpdf2.exists()) {
+            tabpdf2.delete();
+        }
+        FileUtils.mergePdfPublicMethods(data, listPdf);
+        BladeFile bladeFile = this.newIOSSClient.uploadFile(nodeId + ".pdf", listPdf);
+
+        // 合并pdf集合
+        String sql = "update u_information_query set pdf_url ='" + bladeFile.getLink() + "' where classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "' ";
+        jdbcTemplate.execute(sql);
+    }
+
     @Override
     public R getBussDataInfo(Long pkeyId) {
 

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -27,6 +27,7 @@ import org.springblade.manager.formula.impl.CompositeDataAccess;
 import org.springblade.manager.formula.impl.TableElementConverter;
 import org.springblade.manager.mapper.FormulaMapper;
 import org.springblade.manager.service.*;
+import org.springblade.manager.vo.AppWbsTreeContractVO;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
@@ -120,7 +121,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         /*节点参数*/
         this.env.constantMap.put(WP,getWpMap(id,primaryKeyId));
         /*表格名称*/
-        List<WbsTreeContract> tableList =wbsTreeContractService.searchNodeAllTable(primaryKeyId.toString(), "1", contractId.toString(),info.getPId());
+        List<AppWbsTreeContractVO> tableList =wbsTreeContractService.searchNodeAllTable(primaryKeyId.toString(), "1", contractId.toString(),info.getPId());
         this.env.constantMap.put(TABLE_LIST,tableList);
         /*通过判断元素名称来确定,加入汇总公式延后执行*/
         this.env.constantMap.put("tableNames",tableList.stream().map(WbsTreeContract::getFullName).collect(Collectors.toList()));

+ 41 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TableInfoServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      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.impl;
+
+import org.springblade.manager.entity.TableInfo;
+import org.springblade.manager.vo.TableInfoVO;
+import org.springblade.manager.mapper.TableInfoMapper;
+import org.springblade.manager.service.ITableInfoService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 实体主表信息 服务实现类
+ *
+ * @author BladeX
+ * @since 2022-11-30
+ */
+@Service
+public class TableInfoServiceImpl extends BaseServiceImpl<TableInfoMapper, TableInfo> implements ITableInfoService {
+
+	@Override
+	public IPage<TableInfoVO> selectTableInfoPage(IPage<TableInfoVO> page, TableInfoVO tableInfo) {
+		return page.setRecords(baseMapper.selectTableInfoPage(page, tableInfo));
+	}
+
+}

+ 29 - 17
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -16,11 +16,13 @@ import org.springblade.core.tool.utils.StringPool;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.dto.FormElementDTO2;
 import org.springblade.manager.dto.WbsFormElementDTO2;
+import org.springblade.manager.entity.TableInfo;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTabRelationExcelTab;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.excel.WbsFormElementBatchExcel;
 import org.springblade.manager.excel.WbsFormElementExcel;
+import org.springblade.manager.mapper.TableInfoMapper;
 import org.springblade.manager.mapper.WbsFormElementMapper;
 import org.springblade.manager.mapper.WbsTreeMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
@@ -44,6 +46,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     private final WbsFormElementMapper wbsFormElementMapper;
     private final WbsTreeMapper wbsTreeMapper;
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
+    private final TableInfoMapper tableInfoMapper;
 
     //元素字符串、数值、时间类型默认长度
     public static final Integer DEFAULT_ELEMENT_LENGTH_VARCHAR = 250;
@@ -122,6 +125,14 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     @Override
     public WbsFormElement saveAndSyn(WbsFormElement wbsFormElement, String tableName) {
         try {
+
+            //获取实体表主库信息
+            TableInfo tableInfo = tableInfoMapper.selectById(wbsFormElement.getFId());
+            if(tableInfo==null){
+                throw new ServiceException("没有找到主库信息,确认fid是否正确");
+            }else{
+                tableName = tableInfo.getTabEnName();
+            }
             //获取当前表单下所有元素
             List<WbsFormElement> wbsFormElements = baseMapper.selectList(Wrappers.<WbsFormElement>query().lambda().eq(WbsFormElement::getFId, wbsFormElement.getFId()));
             String substring = "";
@@ -275,17 +286,6 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     throw new ServiceException("请输入正确长度,该类型范围为0-50之间");
                 }
 
-                /*//当前字段类型
-                String filedTypeOld = baseMapper.selectFiledType(initTableName, eKey);
-
-                if (!eType.equals(filedTypeOld)) {
-                    //修改前判断,字段是否存在填报数据
-                    int row = baseMapper.assertFiledExist(initTableName, eKey);
-                    if (row > 0) {
-                        throw new ServiceException("选择修改的元素字段下存在填报数据,不允许修改字段类型");
-                    }
-                }*/
-
                 //设置默认长度
                 if (eLength <= 255 && eLength > 65) {
                     eLength = DEFAULT_ELEMENT_LENGTH_VARCHAR;
@@ -385,11 +385,11 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean submitExcelRelationWbsTreeAndElement(FormElementDTO2 formElementDTO) {
-        //新增元素表、实体表
-        if (formElementDTO.getSubmitStatus() == 2) {
-            this.saveFormElement(formElementDTO);
+         //新增元素表、实体表
 
-        } else if (formElementDTO.getSubmitStatus() == 1) {
+        if (formElementDTO.getSubmitStatus() == 2 || formElementDTO.getSubmitStatus() == 3) {
+            this.saveFormElement(formElementDTO);
+        }else if (formElementDTO.getSubmitStatus() == 1) {
             if (formElementDTO.getElementList().size() <= 0) {
                 throw new ServiceException("请添加至少一个元素信息");
             }
@@ -560,6 +560,13 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     public boolean saveFormElement(FormElementDTO2 formElementDTO) {
         //获取新增节点ids
         List<String> nodeIds = formElementDTO.getNodeIds();
+        // 无节点绑定wbs 树
+        if(nodeIds==null && formElementDTO.getSubmitStatus()==3){
+            nodeIds= new ArrayList<>();
+            nodeIds.add("-1234569");
+            formElementDTO.setInitTableId(SnowFlakeUtil.getId());
+        }
+
         if (nodeIds.size() <= 0) {
             throw new ServiceException("请至少选择一个节点进行新增操作");
         } else {
@@ -598,7 +605,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                             //当前元素表中元素对应实体表唯一key值、fId、元素默认长度
                             wbsFormElement.setEKey("key_" + i++);
                             wbsFormElement.setId(SnowFlakeUtil.getId());
-                            wbsFormElement.setFId(String.valueOf(formElementDTO.getId()));
+                            wbsFormElement.setFId(String.valueOf(formElementDTO.getInitTableId()));
                             wbsFormElement.setELength(Integer.valueOf(WbsElementUtil.setDefaultElementLength(wbsFormElement.getEType())));
                             wbsFormElement.setStatus(1);
                             wbsFormElement.setIsDeleted(0);
@@ -653,7 +660,12 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         if (StringUtils.isEmpty(dept.getFillRate())) {
             dept.setFillRate("80%");
         }
-        dept.setType(2);
+        if(dept.getSubmitStatus()==3){
+            dept.setType(10);
+        }else{
+            dept.setType(2);
+        }
+
         dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
         dept.setNodeType(1);
         dept.setStatus(1);

+ 8 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -293,7 +293,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     }
 
     @Override
-    public List<WbsTreeContract> searchNodeAllTable(String primaryKeyId, String tableOwner, String contractId, String projectId) {
+    public List<AppWbsTreeContractVO> searchNodeAllTable(String primaryKeyId, String tableOwner, String contractId, String projectId) {
         WbsTreeContract wbsTreeContract = baseMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, primaryKeyId));
         if (wbsTreeContract == null) {
@@ -337,6 +337,12 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return baseMapper.searchParentAllNode(primaryKeyId, contractId);
     }
 
+    // 隐蔽工程节点
+    @Override
+    public List<WbsContractNodeVo> appSearchConcealedNodes(long primaryKeyId, Long contractId) {
+        return ForestNodeMerger.merge(baseMapper.appSearchConcealedNodes(primaryKeyId, contractId));
+    }
+
     @Override
     public List<WbsTreeContract> updateAllNodeTabById(WbsTreePrivate aPrivate) {
         return baseMapper.updateAllNodeTabById(aPrivate);
@@ -776,4 +782,5 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return list;
     }
 
+
 }

+ 13 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1211,6 +1211,18 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return R.success("添加成功");
     }
 
+    @Override
+    public R delTableById(String primaryKeyIds) {
+        if (com.alibaba.cloud.commons.lang.StringUtils.isEmpty(primaryKeyIds)) {
+            return R.fail("primaryKeyIds不能为空");
+        }
+        List<String> longs = Func.toStrList(primaryKeyIds);
+        for (String id : longs) {
+            wbsTreePrivateMapper.delTableById(id);
+        }
+        return R.success("添加成功");
+    }
+
     @Override
     public R delTabProjectById(String primaryKeyIds, String projectId) {
         if (com.alibaba.cloud.commons.lang.StringUtils.isEmpty(projectId)) {
@@ -1264,6 +1276,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return baseMapper.selectWbsTreeContractList(tableOwnerNumbers, tableType, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getId(), tableOwnerList);
     }
 
+
     @Transactional(rollbackFor = Exception.class)
     public boolean insertBatch(Collection<WbsTreePrivate> entityList, int batchSize) {
         try {

+ 14 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -332,6 +332,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
 
+    @Override
+    public List<WbsFormElementVO> selectPrivateFormElements(String id) {
+        List<WbsFormElementVO> wbsFormElements = wbsTreeMapper.selectPrivateFormElements(id);
+        return wbsFormElements;
+    }
+
+
 
 
 
@@ -762,10 +769,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean saveFormElement(FormElementDTO formElementDTO) {
+        long newPkId = SnowFlakeUtil.getId();
         if (formElementDTO.getElementList().size() <= 0) {
             throw new ServiceException("操作失败,请先添加表单元素");
         }
-
         String filedName = "";
         String filedType = "";
         String filedLength = "";
@@ -785,6 +792,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
         String newTableName = "m_" + DateUtil.time() + "_" + SnowFlakeUtil.getId();
         formElementDTO.setInitTableName(newTableName);
+        // 新增时
+        if (formElementDTO.getId()==null || StringUtils.isEmpty(formElementDTO.getId()+"")) {
+            formElementDTO.setInitTableId(newPkId);
+        }
 
         //新增表
         boolean b1 = submit2(formElementDTO);
@@ -808,13 +819,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             }
 
             wbsFormElement.setEKey("key_" + i++);
-            wbsFormElement.setFId(String.valueOf(formElementDTO.getId()));
+            wbsFormElement.setFId(String.valueOf(newPkId));
         }
 
         //新增元素
         boolean b2 = wbsFormElementService.saveBatch(elementList, 1000);
 
-        List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(String.valueOf(formElementDTO.getId()));
+        List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(String.valueOf(formElementDTO.getInitTableId()));
 
         //新增实体表
         Boolean b3 = wbsFormElementService.initTable(list, newTableName);

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

@@ -20,6 +20,8 @@
         <result column="sys_id" property="sysId"/>
         <result column="text_info" property="textInfo"/>
         <result column="is_layout" property="isLayout"/>
+        <result column="video_url" property="videoUrl"/>
+        <result column="excel_url" property="excelUrl"/>
     </resultMap>
 
     <resultMap id="menuVOResultMap" type="org.springblade.system.vo.MenuVO">
@@ -38,6 +40,9 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="has_children" property="hasChildren"/>
         <result column="text_info" property="textInfo"/>
+        <result column="is_layout" property="isLayout"/>
+        <result column="video_url" property="videoUrl"/>
+        <result column="excel_url" property="excelUrl"/>
     </resultMap>
 
     <resultMap id="treeNodeResultMap" type="org.springblade.system.user.vo.TreeNodeVO">

+ 1 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

@@ -29,6 +29,7 @@
         <result column="post_id" property="postId"/>
         <result column="position" property="position"/>
         <result column="company_name" property="companyName"/>
+        <result column="acc_code" property="accCode"/>
     </resultMap>
     <update id="updateRoleIdById">
         UPDATE blade_user