Quellcode durchsuchen

Merge remote-tracking branch 'origin/master' into master

yangyj vor 2 Jahren
Ursprung
Commit
cbee43d586
60 geänderte Dateien mit 1121 neuen und 569 gelöschten Zeilen
  1. 0 1
      blade-ops/blade-flow/blade-flow.iml
  2. 0 1
      blade-ops/blade-ops.iml
  3. 3 3
      blade-ops/blade-xxljob-admin/blade-xxljob-admin.iml
  4. 3 3
      blade-ops/blade-xxljob/blade-xxljob.iml
  5. 0 6
      blade-service-api/blade-business-api/blade-business-api.iml
  6. 6 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/TrialSelfInspectionRecordDTO.java
  7. 11 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ArchiveFile.java
  8. 23 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java
  9. 9 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskClient.java
  10. 3 3
      blade-service-api/blade-e-visa-api/blade-e-visa-api.iml
  11. 0 6
      blade-service-api/blade-manager-api/blade-manager-api.iml
  12. 16 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO4.java
  13. 82 8
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java
  14. 0 5
      blade-service/blade-business/blade-business.iml
  15. 5 4
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java
  16. 51 70
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  17. 25 23
      blade-service/blade-business/src/main/java/org/springblade/business/controller/NeiYeController.java
  18. 8 3
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  19. 0 29
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TestDemoController.java
  20. 14 6
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java
  21. 35 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java
  22. 6 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskClientImpl.java
  23. 14 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java
  24. 118 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  25. 6 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.java
  26. 7 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  27. 3 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskMapper.java
  28. 14 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskMapper.xml
  29. 0 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TrialSelfInspectionRecordMapper.java
  30. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TrialSelfInspectionRecordMapper.xml
  31. 17 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IArchiveFileService.java
  32. 3 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IInformationQueryService.java
  33. 8 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java
  34. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITrialSelfInspectionRecordService.java
  35. 74 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java
  36. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java
  37. 14 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  38. 1 2
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialContainerClassificationServiceImpl.java
  39. 12 10
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDetectionDataServiceImpl.java
  40. 4 2
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDeviceOverhaulServiceImpl.java
  41. 4 2
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDeviceUseServiceImpl.java
  42. 6 6
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialMaterialMobilizationServiceImpl.java
  43. 15 13
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSampleInfoServiceImpl.java
  44. 138 46
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java
  45. 3 3
      blade-service/blade-e-visa/blade-e-visa.iml
  46. 0 5
      blade-service/blade-manager/blade-manager.iml
  47. 44 22
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  48. 0 10
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  49. 9 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java
  50. 34 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  51. 7 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java
  52. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  53. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.java
  54. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TableFileMapper.java
  55. 1 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java
  56. 19 19
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  57. 32 14
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  58. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TableFileServiceImpl.java
  59. 70 20
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  60. 130 191
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

+ 0 - 1
blade-ops/blade-flow/blade-flow.iml

@@ -6,7 +6,6 @@
         <setting name="validation-enabled" value="true" />
         <datasource-mapping>
           <factory-entry name="Entities" />
-          <factory-entry name="blade-flow" />
         </datasource-mapping>
         <naming-strategy-map />
       </configuration>

+ 0 - 1
blade-ops/blade-ops.iml

@@ -8,7 +8,6 @@
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="aspose-cells-20.4-c" level="project" />
     <orderEntry type="library" name="Maven: org.springblade:blade-starter-metrics:2.9.1.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.6.3" level="project" />
     <orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.12" level="project" />

+ 3 - 3
blade-ops/blade-xxljob-admin/blade-xxljob-admin.iml

@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
       </configuration>
     </facet>
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />

+ 3 - 3
blade-ops/blade-xxljob/blade-xxljob.iml

@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
       </configuration>
     </facet>
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />

+ 0 - 6
blade-service-api/blade-business-api/blade-business-api.iml

@@ -7,10 +7,6 @@
     <facet type="web" name="Web">
       <configuration>
         <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
       </configuration>
     </facet>
   </component>
@@ -19,8 +15,6 @@
     <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />

+ 6 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/TrialSelfInspectionRecordDTO.java

@@ -14,6 +14,12 @@ public class TrialSelfInspectionRecordDTO extends TrialSelfInspectionRecord {
     @ApiModelProperty("样品信息ids")
     private String sampleIds;
 
+    @ApiModelProperty("原材料检测报告ids(试验记录id)")
+    private String rawMaterialIds;
+
+    @ApiModelProperty("项目id")
+    private String projectId;
+
     @ApiModelProperty(value = "表类型 1=记录表 2=报告单 ,字符串拼接")
     private String tableType;
 

+ 11 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ArchiveFile.java

@@ -228,4 +228,15 @@ public class ArchiveFile extends BaseEntity {
 	 */
 	@ApiModelProperty("排序")
 	private Integer sort;
+	/**
+	 * 分盒名称
+	 */
+	@ApiModelProperty("分盒名称")
+	private String boxName;
+
+	/**
+	 * 分盒编号
+	 */
+	@ApiModelProperty("分盒编号")
+	private Integer boxNumber;
 }

+ 23 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -1,5 +1,6 @@
 package org.springblade.business.feign;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.business.vo.ArchiveFileVO;
@@ -7,6 +8,10 @@ import org.springblade.common.constant.BusinessConstant;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -23,4 +28,22 @@ public interface ArchiveFileClient {
 
     @PostMapping(API_PREFIX + "/selectArchiveFilePage")
     JSONObject selectArchiveFilePage(@RequestBody ArchiveFileVO archiveFile);
+
+    @PostMapping(API_PREFIX + "/selectArchiveFilePageByBoxName")
+    JSONObject selectArchiveFilePageByBoxName(@RequestBody ArchiveFileVO archiveFile);
+
+    @PostMapping(API_PREFIX + "/updateArchiveFileSort")
+    void updateArchiveFileSort(@RequestBody ArchiveFileVO vo);
+
+    @PostMapping(API_PREFIX + "/updateArchiveFileByBoxName")
+    boolean updateArchiveFileByBoxName(@RequestBody Map<String,Object> jsons);
+
+    @PostMapping(API_PREFIX + "/isBoxName")
+    String isBoxName(@RequestParam String boxName);
+
+    @PostMapping(API_PREFIX + "/selectBoxNameAndBoxNumber")
+    JSONArray selectBoxNameAndBoxNumber(@RequestParam String nodeId);
+
+    @PostMapping(API_PREFIX + "/updateArchiveFileByNodeId")
+    boolean updateArchiveFileByNodeId(@RequestParam String ids,@RequestParam String nodeId);
 }

+ 9 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskClient.java

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
+import java.util.Map;
 
 @FeignClient(value = BusinessConstant.APPLICATION_WEATHER_NAME)
 public interface TaskClient {
@@ -30,6 +31,14 @@ public interface TaskClient {
     String QUERY_APPROVAL_USER_TASK_ID = API_PREFIX + "/query-approval-user-by-task-id";
     String QUERY_BUSINESS_TABLE_E_VISA_CONFIG = API_PREFIX + "/query-business-table-e-visa-config";
     String QUERY_TASK_CONTRACT_ID = API_PREFIX + "/query-task-contract-id";
+    String QUERY_TASK_ALL_BATCH = API_PREFIX + "/query-contract-all-batch";
+
+
+    /**
+     * 获取当前合同段所有上报的资料批次信息
+     */
+    @GetMapping(QUERY_TASK_ALL_BATCH)
+    Map<String,String> queryContractAllBatch(@RequestParam String contract);
 
     /**
      * 获取当前任务所在的合同段

+ 3 - 3
blade-service-api/blade-e-visa-api/blade-e-visa-api.iml

@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
       </configuration>
     </facet>
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />

+ 0 - 6
blade-service-api/blade-manager-api/blade-manager-api.iml

@@ -7,10 +7,6 @@
     <facet type="web" name="Web">
       <configuration>
         <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
       </configuration>
     </facet>
   </component>
@@ -19,8 +15,6 @@
     <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />

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

@@ -0,0 +1,16 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.manager.entity.WbsTreePrivate;
+
+import java.util.Map;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WbsTreePrivateVO4 extends WbsTreePrivate{
+    private static final long serialVersionUID = 1L;
+
+    private Map<String, Object> bussDataInfoTrial;
+
+}

+ 82 - 8
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -4,10 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
 import org.springblade.business.entity.ArchiveFile;
@@ -17,6 +14,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.ArchiveTree;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.feign.ArchiveTreeContractClient;
@@ -24,7 +22,9 @@ import org.springblade.resource.feign.IOSSClient;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 
@@ -40,7 +40,7 @@ import java.util.stream.Collectors;
 @Api(value = "工程文件接口", tags = "工程文件接口")
 public class ArchiveFileController extends BladeController {
 
-	private final ArchiveFileClient archiveFileClient;
+    private final ArchiveFileClient archiveFileClient;
     private final IOSSClient iossClient;
     private final ArchiveTreeContractClient archiveTreeContractClient;
     /**
@@ -66,15 +66,19 @@ public class ArchiveFileController extends BladeController {
      * 批量新增
      */
     @PostMapping("/batchSave")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 2)
     @ApiOperation(value = "批量新增")
     public R<Boolean> batchSave(@RequestBody ArchiveFileVO vo){
         try {
+            int l =(int) System.currentTimeMillis();
             List<ArchiveFileVO> saveList = vo.getList();
             if(saveList != null && saveList.size() > 0){
+                int i = 1;
                 for(ArchiveFileVO saveVo : saveList){
+                    saveVo.setSort(l+i);
                     saveVo.setStatus(new Integer("0").equals(saveVo.getIsApproval()) ? 2 : 0);
                     saveVo.setIsCertification(new Integer("0").equals(saveVo.getIsNeedCertification()) ? 1 : 0);
+                    i++;
                 }
             }
             this.archiveFileClient.saveArchiveFile(vo);
@@ -88,9 +92,9 @@ public class ArchiveFileController extends BladeController {
      * 分页
      */
     @PostMapping("/page")
-    @ApiOperationSupport(order = 4)
+    @ApiOperationSupport(order = 3)
     @ApiOperation(value = "分页")
-    public R<Object> page(ArchiveFileVO queryVo){
+    public R<Object> page( ArchiveFileVO queryVo){
         if(queryVo.getNodeIds().isEmpty() || queryVo.getNodeIds().equals("")){
             return  R.data(null);
         }
@@ -103,4 +107,74 @@ public class ArchiveFileController extends BladeController {
 
         return R.data(this.archiveFileClient.selectArchiveFilePage(queryVo));
     }
+    /**
+     * 排序
+     */
+    @PostMapping("/batchUpdateSort")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "排序")
+    public R<Boolean> batchUpdateSort(@RequestBody ArchiveFileVO vo){
+        try {
+            this.archiveFileClient.updateArchiveFileSort(vo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.data(false);
+        }
+        return R.data(true);
+    }
+    /**
+     * 未分盒的显示
+     */
+    @PostMapping("/pageByBoxName")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "未分盒的显示")
+    public R<Object> pageByBoxName(ArchiveFileVO queryVo){
+        if(queryVo == null || queryVo.getNodeIds() == null || queryVo.getNodeIds().equals("")){
+            return  R.data(null);
+        }
+        List<String> ids = new ArrayList<>();
+        ids.add(queryVo.getNodeIds());
+        queryVo.setNodeIdArray(ids);
+        return R.data(this.archiveFileClient.selectArchiveFilePageByBoxName(queryVo));
+    }
+    /**
+     * 分盒盒号验证
+     */
+    @PostMapping("/getIsBoxName")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "分盒盒号验证", notes = "传入boxName")
+    public R<String> getIsBoxName(@RequestParam String boxName) {
+        return R.data(this.archiveFileClient.isBoxName(boxName));
+    }
+    /**
+     * 设置分盒
+     */
+    @PostMapping("/allocation")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "设置分盒", notes = "传入ids")
+    public R allocation(@RequestBody Map<String,Object> jsons) {
+        return R.status(this.archiveFileClient.updateArchiveFileByBoxName(jsons));
+    }
+
+    /**
+     * 已有盒号和案卷名称
+     */
+    @PostMapping("/getBoxNameAndBoxNumber")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "未分盒的显示")
+    public R<Object> getBoxNameAndBoxNumber(@ApiParam(value = "树节点", required = true) @RequestParam String nodeId){
+        if(nodeId.isEmpty() || nodeId.equals("")){
+            return  R.data(null);
+        }
+        return R.data(this.archiveFileClient.selectBoxNameAndBoxNumber(nodeId));
+    }
+    /**
+     * 迁移文件
+     */
+    @PostMapping("/migrateFile")
+    @ApiOperationSupport(order = 9)
+    @ApiOperation(value = "迁移文件", notes = "传入ids")
+    public R migrateFile(@RequestParam String ids,@RequestParam String nodeId) {
+        return R.status(this.archiveFileClient.updateArchiveFileByNodeId(ids,nodeId));
+    }
 }

+ 0 - 5
blade-service/blade-business/blade-business.iml

@@ -7,10 +7,6 @@
     <facet type="web" name="Web">
       <configuration>
         <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
       </configuration>
     </facet>
   </component>
@@ -20,7 +16,6 @@
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />

+ 5 - 4
blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java

@@ -164,7 +164,7 @@ public class ImageClassificationFileController extends BladeController {
                     List<String> removeList = new ArrayList<>();
 
                     //压缩到小于指定文件大小100kb
-                    //double targetSize = 100 * 1024;
+                    double targetSize = 200 * 1024;
 
                     for (ImageClassificationFile file : fileResult) {
                         //获取图片文件流
@@ -206,11 +206,12 @@ public class ImageClassificationFileController extends BladeController {
                                             byte[] bytes = CommonUtil.InputStreamToBytes(CommonUtil.getOSSInputStream(urls.get(i)));
 
                                             //压缩文件大小
-                                            /*while (bytes.length > targetSize) {
+                                            while (bytes.length > targetSize) {
                                                 float reduceMultiple = 0.5f;
                                                 bytes = FileUtils.resizeImage(bytes, reduceMultiple);
-                                            }*/
-                                            byte[] bytesNew = FileUtils.resizeImage(bytes, 0f);
+                                            }
+                                            //byte[] bytesNew = FileUtils.resizeImage(bytes, 0f);
+                                            byte[] bytesNew = bytes;
 
                                             //创建图片
                                             drawing.createPicture(anchor, workbook.addPicture(bytesNew, Workbook.PICTURE_TYPE_JPEG));

+ 51 - 70
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -793,7 +793,8 @@ public class InformationWriteQueryController extends BladeController {
         //记录状态
         String status = "1";
         //查询填报状态,type=2试验
-        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, id).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 2));
+        InformationQuery businessData = this.informationQueryService.getBaseMapper().selectList(Wrappers.<InformationQuery>lambdaQuery()
+                .eq(InformationQuery::getWbsId, id).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 2)).stream().findAny().orElse(null);
         if (businessData != null) {
             switch (businessData.getStatus()) {
                 case 0:
@@ -1240,7 +1241,6 @@ public class InformationWriteQueryController extends BladeController {
     @ApiOperationSupport(order = 16)
     @ApiOperation(value = "自定义排序")
     public R<Boolean> diySort(@RequestBody DiySortVO vo) {
-        //对整棵树进行排序(资料查询需要同步显示排序)采用自增
         List<String> sortLists = vo.getSortList();
         return R.status(wbsTreeContractClient.diySort(sortLists));
     }
@@ -1248,10 +1248,10 @@ public class InformationWriteQueryController extends BladeController {
     /**
      * 复制节点
      */
-    @PostMapping("/copyContractTreeNode11")
+    @PostMapping("/copyContractTreeNode")
     @ApiOperationSupport(order = 15)
-    @ApiOperation(value = "复制节点")
-    public R<Boolean> copyContractTreeNode11(@RequestBody CopyContractTreeNodeVO vo) {
+    @ApiOperation(value = "复制节点(新)")
+    public R<Boolean> copyContractTreeNode(@RequestBody CopyContractTreeNodeVO vo) {
         //首先查询需要复制的节点及其下级所有子节点的信息
         WbsTreeContract needCopyNode = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(vo.getNeedCopyPrimaryKeyId());
         // 获取当前节点的所有子节点
@@ -1259,18 +1259,18 @@ public class InformationWriteQueryController extends BladeController {
         // 插入数据库
         // informationQueryService.copeNodeData(needCopyNode.getId()+"",vocational);
         // 修改
-        //
-        //
         //新增施工台账
-        System.out.println("1="+DateUtil.formatDateTime(DateUtil.now()));
         List<WbsTreeContract>   saveList = new ArrayList<>();
         List<ConstructionLedger> saveLedger = new ArrayList<>();
-        System.out.println("2="+DateUtil.formatDateTime(DateUtil.now()));
+        // 获取附件
         List<WbsTreeContract> nodeChildAll = informationQueryService.getNodeChildAllByNodeId(needCopyNode.getId() + "", needCopyNode.getContractId(),vo.getNeedCopyPrimaryKeyId());
-        System.out.println("3="+DateUtil.formatDateTime(DateUtil.now()));
+       // 获取实体表列对象
+        List<QueryProcessDataVO> nodeTabCols = informationQueryService.getNodeChildTabColsAllByNodeId(needCopyNode.getId() + "", needCopyNode.getContractId());
+        // 转化为map
+        Map<String, String> nodeTabColsMap = nodeTabCols.stream().collect(Collectors.toMap(QueryProcessDataVO::getQueryType, QueryProcessDataVO::getAncestors, (key1, key2) -> key2));
+
         if (StringUtils.isNotEmpty(vo.getNeedCopyPrimaryKeyId())) {
             WbsTreeContract parent = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(vo.getParentPrimaryKeyId());
-
             //重塑关键信息
             Map<Long, Long> oldToNewIdMap = new HashMap<>();
             //节点信息
@@ -1285,7 +1285,6 @@ public class InformationWriteQueryController extends BladeController {
             nodeChildAll.forEach(node -> {
                 WbsTreeContract newData = new WbsTreeContract();
                 BeanUtils.copyProperties(node, newData);
-
                 //重塑关键信息
                 //重塑primaryKeyId
                 newData.setPKeyId(SnowFlakeUtil.getId());
@@ -1300,7 +1299,6 @@ public class InformationWriteQueryController extends BladeController {
                 if (new Integer("1").equals(node.getType())) {
                     //如果是节点类型才重塑ID
                     newData.setId(oldToNewIdMap.containsKey(node.getId()) ? oldToNewIdMap.get(node.getId()) : SnowFlakeUtil.getId());
-
                     //划分编号
                     newData.setPartitionCode(StringUtils.isNotEmpty(vo.getPartitionCode()) ? vo.getPartitionCode() : null);
                 }
@@ -1325,34 +1323,19 @@ public class InformationWriteQueryController extends BladeController {
                 //初始化PDF路径
                 newData.setPdfUrl(null);
                 newData.setCreateUser(AuthUtil.getUserId());
-
-                //获取当前所有复制的节点的最大sort
-              //  String sql = "select sort from m_wbs_tree_contract where contract_id = '" + node.getContractId() + "' and (id = '" + node.getId() + "' or old_id = '" + node.getId() + "')";
-             //   List<WbsTreeContract> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
-            //    List<Integer> collect = query.stream().filter(f -> ObjectUtils.isNotEmpty(f.getSort())).collect(Collectors.toList()).stream().map(WbsTreeContract::getSort).collect(Collectors.toList());
-                Integer max = 1;
-             //   if (collect.size() > 0) {
-            //        max = collect.stream().reduce(collect.get(0), Integer::max);
-             //   } else {
-              //      max = 1;
-             //   }
-                //设置sort
-                newData.setSort(max);
                 //重塑父节点关联关系
                 this.restoreParent(newData, oldToNewIdMap);
-
                 //保存到集合中
                 saveList.add(newData);
-
                 if (new Integer("6").equals(node.getNodeType())) {
                     //生成施工日志
                     this.createLedger(newData, saveLedger, nodeMap, null);
                 }
             });
-            System.out.println("7="+DateUtil.formatDateTime(DateUtil.now()));
         }
-
-        return this.saveOrCopyNodeTree(saveList, saveLedger, 32, needCopyNode);
+         R<Boolean> booleanR = this.saveOrCopyNodeTree(saveList, saveLedger, 32, needCopyNode);
+         jdbcTemplate.batchUpdate();
+        return booleanR;
     }
 
 
@@ -1360,10 +1343,10 @@ public class InformationWriteQueryController extends BladeController {
     /**
      * 复制节点
      */
-    @PostMapping("/copyContractTreeNode")
+    @PostMapping("/copyContractTreeNode12313212")
     @ApiOperationSupport(order = 15)
     @ApiOperation(value = "复制节点")
-    public R<Boolean> copyContractTreeNode(@RequestBody CopyContractTreeNodeVO vo) {
+    public R<Boolean> copyContractTreeNode123131231(@RequestBody CopyContractTreeNodeVO vo) {
         //首先查询需要复制的节点及其下级所有子节点的信息
         WbsTreeContract needCopyNode = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(vo.getNeedCopyPrimaryKeyId());
         //获取当前合同段所有节点
@@ -1387,6 +1370,9 @@ public class InformationWriteQueryController extends BladeController {
                 }
             });
         }
+        //复制结构信息
+      //   R<Boolean> booleanR = this.saveOrCopyNodeTree(saveList, saveLedger, 32, needCopyNode);
+        // 复制表数据
 
         System.out.println("1="+DateUtil.formatDateTime(DateUtil.now()));
         List<WbsTreeContract> parentList = new ArrayList<>(), childList = new ArrayList<>(), allList = new ArrayList<>(), saveList = new ArrayList<>();
@@ -1463,7 +1449,7 @@ public class InformationWriteQueryController extends BladeController {
                     newData.setCreateUser(AuthUtil.getUserId());
 
                     //获取当前所有复制的节点的最大sort
-                    String sql = "select sort from m_wbs_tree_contract where contract_id = '" + node.getContractId() + "' and (id = '" + node.getId() + "' or old_id = '" + node.getId() + "')";
+                    /*String sql = "select sort from m_wbs_tree_contract where contract_id = '" + node.getContractId() + "' and (id = '" + node.getId() + "' or old_id = '" + node.getId() + "')";
                     List<WbsTreeContract> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
                     List<Integer> collect = query.stream().filter(f -> ObjectUtils.isNotEmpty(f.getSort())).collect(Collectors.toList()).stream().map(WbsTreeContract::getSort).collect(Collectors.toList());
                     Integer max = 1;
@@ -1473,7 +1459,8 @@ public class InformationWriteQueryController extends BladeController {
                         max = 1;
                     }
                     //设置sort
-                    newData.setSort(max);
+                    newData.setSort(max);*/
+                    newData.setSort(ObjectUtils.isNotEmpty(node.getSort()) ? node.getSort() : 0);
 
                     //重塑父节点关联关系
                     this.restoreParent(newData, oldToNewIdMap);
@@ -1544,7 +1531,7 @@ public class InformationWriteQueryController extends BladeController {
                         newData.setPdfUrl(null);
 
                         //获取当前所有复制的节点的最大sort
-                        String sql = "select sort from m_wbs_tree_contract where contract_id = '" + node.getContractId() + "' and (id = '" + node.getId() + "' or old_id = '" + node.getId() + "')";
+                        /*String sql = "select sort from m_wbs_tree_contract where contract_id = '" + node.getContractId() + "' and (id = '" + node.getId() + "' or old_id = '" + node.getId() + "')";
                         List<WbsTreeContract> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
                         List<Integer> collect = query.stream().filter(f -> ObjectUtils.isNotEmpty(f.getSort())).collect(Collectors.toList()).stream().map(WbsTreeContract::getSort).collect(Collectors.toList());
                         Integer max = 1;
@@ -1554,7 +1541,8 @@ public class InformationWriteQueryController extends BladeController {
                             max = 1;
                         }
                         //设置sort
-                        newData.setSort(max);
+                        newData.setSort(max);*/
+                        newData.setSort(ObjectUtils.isNotEmpty(node.getSort()) ? node.getSort() : 0);
 
                         //重塑父节点关联关系
                         this.restoreParent(newData, oldToNewIdMap);
@@ -1993,7 +1981,7 @@ public class InformationWriteQueryController extends BladeController {
                 }
 
                 //获取当前所有复制的节点的最大sort
-                String sql = "select sort from m_wbs_tree_contract where contract_id = '" + treeContract.getContractId() + "' and (id = '" + half.getId() + "' or old_id = '" + half.getId() + "')";
+                /*String sql = "select sort from m_wbs_tree_contract where contract_id = '" + treeContract.getContractId() + "' and (id = '" + half.getId() + "' or old_id = '" + half.getId() + "')";
                 List<WbsTreeContract> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
                 List<Integer> collect = query.stream().filter(f -> ObjectUtils.isNotEmpty(f.getSort())).collect(Collectors.toList()).stream().map(WbsTreeContract::getSort).collect(Collectors.toList());
                 Integer max = 1;
@@ -2003,7 +1991,9 @@ public class InformationWriteQueryController extends BladeController {
                     max = 1;
                 }
                 //设置sort
-                newData.setSort(max);
+                newData.setSort(max);*/
+                newData.setSort(ObjectUtils.isNotEmpty(half.getSort()) ? half.getSort() : 0);
+
                 //设置节点名称
                 for (AddContractTreeNodeVO.Node addVO : selectList) {
                     if (half.getPKeyId().toString().equals(addVO.getPrimaryKeyId())) {
@@ -2077,9 +2067,9 @@ public class InformationWriteQueryController extends BladeController {
                 this.constructionLedgerService.saveBatch(saveLedger, 1000);
                 str.append("-[");
                 for (ConstructionLedger ledger : saveLedger) {
-                    str.append(ledger.getSite()+",");
+                    str.append(ledger.getSite() + ",");
                 }
-                str.deleteCharAt(str.length()-1);
+                str.deleteCharAt(str.length() - 1);
                 str.append("]");
             }
 
@@ -2299,40 +2289,31 @@ public class InformationWriteQueryController extends BladeController {
         if (!new Integer("6").equals(node.getNodeType()) && !Arrays.asList("1,2,3,4".split(",")).contains(node.getMajorDataType().toString())) {
             //不是工序,则查询当前节点下的所有填报节点
             if (node.getParentId() == 0) {
-                String contractId = node.getContractId();
-                List<WbsTreeContract> treeS = wbsTreeContractClient.getContractWbsTreeByParentId(node.getId().toString(), contractId);
-                for (WbsTreeContract tree : treeS) {
-                    List<QueryProcessDataVO> Result = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(tree.getId().toString(), contract.getContractType(), StringUtils.isNotEmpty(vo.getContractIdRelation()) ? vo.getContractIdRelation() : vo.getContractId().toString());
-                    if (Result != null && Result.size() > 0) {
-                        queryDataResult.addAll(Result);
-                        Result.clear();
-                    }
-                }
+                queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo("", contract.getContractType(), StringUtils.isNotEmpty(vo.getContractIdRelation()) ? vo.getContractIdRelation() : vo.getContractId().toString());
             } else {
-                List<QueryProcessDataVO> Result = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(node.getId().toString(), contract.getContractType(), StringUtils.isNotEmpty(vo.getContractIdRelation()) ? vo.getContractIdRelation() : vo.getContractId().toString());
-                if (Result != null && Result.size() > 0) {
-                    queryDataResult.addAll(Result);
-                    Result.clear();
-                }
+                queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(node.getId().toString(), contract.getContractType(), StringUtils.isNotEmpty(vo.getContractIdRelation()) ? vo.getContractIdRelation() : vo.getContractId().toString());
+
             }
             //如果是首件列表请求,则删掉没有标记为首件的数据
             if (queryDataResult != null && queryDataResult.size() > 0) {
                 if (StringUtils.isNotEmpty(vo.getIsFirst())) {
-                    List<String> treeIds = queryDataResult.stream().map(QueryProcessDataVO::getPrimaryKeyId).distinct().collect(Collectors.toList());
-                    //通过合同段主键在首件关联表中查询出所有数据
-                    List<TreeContractFirst> firstList = treeContractFirstService.list(new LambdaQueryWrapper<TreeContractFirst>().in(TreeContractFirst::getWbsNodeId, treeIds));
-                    List<String> list = firstList.stream().map(fl -> (fl.getWbsNodeId() + "")).collect(Collectors.toList());
-                    queryDataResult = queryDataResult.stream().filter(qdr -> list.contains(qdr.getPrimaryKeyId())).collect(Collectors.toList());
-//                    for (QueryProcessDataVO queryProcessDataVO : queryDataResult) {
-//                        TreeContractFirst first = treeContractFirstService.getOne(new LambdaQueryWrapper<TreeContractFirst>()
-//                                .eq(TreeContractFirst::getWbsNodeId, queryProcessDataVO.getPrimaryKeyId()));
-//                        if (first != null){
-//                            queryProcessDataVO.setFirstId(first.getId()+"");
-//                        }
-//                    }
-//                    queryDataResult.removeIf(data -> StringUtils.isEmpty(data.getFirstId()));
+                    if (StringUtils.isNotEmpty(vo.getFirstTitle())){
+                        if (node.getParentId()==0) {
+                            List<TreeContractFirst> firstList = treeContractFirstService.list(new LambdaQueryWrapper<TreeContractFirst>().in(TreeContractFirst::getContractId, node.getContractId()));
+                            List<String> list = firstList.stream().map(fl -> (fl.getWbsNodeId() + "")).collect(Collectors.toList());
+                            submitNodeKeyIds.addAll(list);
+                        }
+                    }else {
+                        //节点主键集合
+                        List<String> treeIds = queryDataResult.stream().map(QueryProcessDataVO::getPrimaryKeyId).distinct().collect(Collectors.toList());
+                        //通过合同段主键在首件关联表中查询出所有数据
+                        List<TreeContractFirst> firstList = treeContractFirstService.list(new LambdaQueryWrapper<TreeContractFirst>().in(TreeContractFirst::getWbsNodeId, treeIds));
+                        List<String> list = firstList.stream().map(fl -> (fl.getWbsNodeId() + "")).collect(Collectors.toList());
+                        queryDataResult = queryDataResult.stream().filter(qdr -> list.contains(qdr.getPrimaryKeyId())).collect(Collectors.toList());
+                        submitNodeKeyIds.addAll(queryDataResult.stream().map(QueryProcessDataVO::getPrimaryKeyId).distinct().collect(Collectors.toList()));
+                    }
                 }
-                submitNodeKeyIds.addAll(queryDataResult.stream().map(QueryProcessDataVO::getPrimaryKeyId).distinct().collect(Collectors.toList()));
+
             }
         }
         //设置进集合中
@@ -2459,7 +2440,7 @@ public class InformationWriteQueryController extends BladeController {
             if (contractIds.size() > 0) {
 
                 //监理复制加载树问题
-                if (StringUtils.isEmpty(classifyType)){
+                if (StringUtils.isEmpty(classifyType)) {
                     classifyType = "2";
                 }
 

+ 25 - 23
blade-service/blade-business/src/main/java/org/springblade/business/controller/NeiYeController.java

@@ -83,15 +83,7 @@ public class NeiYeController {
                     && !node.getNodeName().contains("开工报告")&& !node.getNodeName().contains("质量检验评定表")){
                 //非填报节点
                 if (node.getParentId() == 0){
-                    String contractI = node.getContractId();
-                    List<WbsTreeContract> treeS = wbsTreeContractClient.getContractWbsTreeByParentId(node.getId().toString(),contractI);
-                    for (WbsTreeContract tree : treeS) {
-                        List<QueryProcessDataVO> dataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(tree.getId().toString(), contract.getContractType(), contractId);
-                        if (dataResult != null && dataResult.size() > 0) {
-                            queryDataResult.addAll(dataResult);
-                            dataResult.clear();
-                        }
-                    }
+                        queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo("", contract.getContractType(), contractId);
                 }else {
                     queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(node.getId().toString(), contract.getContractType(), contractId);
                 }
@@ -163,21 +155,32 @@ public class NeiYeController {
                     return R.data(300, null, "未查询到数据");
                 }
                 //上报批次  ,保存节点的时候没有上传批次,只能去流程查
-                for (QueryProcessDataVO vo : queryDataResult) {
-                    if (vo.getInformationQueryId() != null && vo.getStatus() != 0){
-                        List<Task> tasks = taskClient.queryTaskListByFormDataId(vo.getInformationQueryId());
-                        Task task = new Task();
-                        if (tasks == null || tasks.size() <= 0){
-                            task.setBatch(0);
-                        }else {
-                            tasks = tasks.stream().sorted(Comparator.comparing(e -> e.getCreateTime())).collect(Collectors.toList());
-                            task = tasks.get(tasks.size() - 1);
-                        }
-                        vo.setReportNumber(task.getBatch()+"");
+                Map<String, String> tasks = taskClient.queryContractAllBatch(queryVO.getContractId());
+                Set<String> keySet = tasks.keySet();
+                queryDataResult.stream().forEach(qdr->{
+                    if (keySet.contains(qdr.getInformationQueryId())){
+                        qdr.setReportNumber(tasks.get(qdr.getInformationQueryId()));
                     }else {
-                        vo.setReportNumber("0");
+                        qdr.setReportNumber("0");
                     }
-                }
+                });
+//                for (QueryProcessDataVO vo : queryDataResult) {
+//                    if (vo.getInformationQueryId() != null && vo.getStatus() != 0){
+//                        List<Task> tasks = taskClient.queryTaskListByFormDataId(vo.getInformationQueryId());
+//                        Task task = new Task();
+//                        if (tasks == null || tasks.size() <= 0){
+//                            task.setBatch(0);
+//                        }else {
+//                            tasks = tasks.stream().sorted(Comparator.comparing(e -> e.getCreateTime())).collect(Collectors.toList());
+//                            task = tasks.get(tasks.size() - 1);
+//                        }
+//                        vo.setReportNumber(task.getBatch()+"");
+//                    }else {
+//                        vo.setReportNumber("0");
+//                    }
+//                }
+                List<String> collect = queryDataResult.stream().map(qdr -> qdr.getInformationQueryId()).collect(Collectors.toList());
+                System.out.println("\u001B[31m" + collect.contains("1584389365004500992") + "\u001B[0m");
                 String reportNumber = queryVO.getReportNumber();
                 if (!"".equals(reportNumber) && !"null".equals(reportNumber) && reportNumber != null) {
                     queryDataResult = queryDataResult.stream()
@@ -195,7 +198,6 @@ public class NeiYeController {
                 List<ConstructionLedger> ledgers = this.constructionLedgerService.list(Wrappers.<ConstructionLedger>lambdaQuery().in(ConstructionLedger::getWbsId, primaryKeyIds));
 
                 for (QueryProcessDataVO vo : groupQueryList) {
-
                     //处理父节点信息
                     Map<String, String> map = new HashMap<>();
                     this.foreachGetParent(map, idToNodeMap, vo.getParentId(), contractId);

+ 8 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -286,7 +286,7 @@ public class TaskController extends BladeController {
 				taskApprovalVOS.add(approvalVO);
 			}
 
-			//修改试验填报状态
+			//修改试验填报状态,关联工程部位信息pdf
 			this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatus(taskApprovalVOS);
 
 			//审批
@@ -344,8 +344,13 @@ public class TaskController extends BladeController {
 			@ApiImplicitParam(name = "projectId", value = "项目ID", required = true),
 			@ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
 	})
-	public R<List<String>> queryBatchListTwo(String projectId, String contractId){
-		return R.data(this.taskService.queryBatchListTwo(projectId, contractId));
+	public R<List<String>> queryBatchListTwo(String projectId, String contractId,String type){
+		//如果type有值就是内页台账,不需要去查询首件批次
+		if (StringUtils.isBlank(type)) {
+			return R.data(this.taskService.queryBatchListTwo(projectId, contractId));
+		}else {
+			return R.data(this.taskService.queryBatchListThree(projectId, contractId));
+		}
 	}
 
 

+ 0 - 29
blade-service/blade-business/src/main/java/org/springblade/business/controller/TestDemoController.java

@@ -1,29 +0,0 @@
-package org.springblade.business.controller;
-
-import lombok.AllArgsConstructor;
-import org.springblade.business.socket.WebSocket;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.io.IOException;
-
-@RestController
-@AllArgsConstructor
-@RequestMapping("/task")
-public class TestDemoController extends BladeController {
-
-    private WebSocket webSocket;
-
-    @PostMapping("/sentMessage")
-    public void sentMessage(String userId,String message){
-        try {
-            webSocket.sendMessageByUserId(userId,message);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-
-}

+ 14 - 6
blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java

@@ -124,7 +124,7 @@ public class TrialDetectionController extends BladeController {
     @PostMapping("/self/submit")
     @ApiOperationSupport(order = 11)
     @ApiOperation(value = "自检记录新增或修改", notes = "传入TrialSelfInspectionRecordDTO")
-    public R<Object> selfSubmit(@Valid @RequestBody TrialSelfInspectionRecordDTO dto) {
+    public R<Object> selfSubmit(@Valid @RequestBody TrialSelfInspectionRecordDTO dto) throws FileNotFoundException {
         return R.data(iTrialSelfInspectionRecordService.selfSubmit(dto));
     }
 
@@ -170,8 +170,10 @@ public class TrialDetectionController extends BladeController {
         String sql = "select * from u_trial_self_data_record where record_id = " + id + " and tab_id = " + pKeyId;
         List<TrialSelfDataRecord> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TrialSelfDataRecord.class));
         TrialSelfDataRecord obj = query.stream().findAny().orElse(null);
-        assert obj != null;
-        return R.data(obj.getPdfUrl());
+        if (obj != null){
+            return R.data(obj.getPdfUrl());
+        }
+        return R.data("");
     }
 
     @GetMapping("/get-buss-pdfs")
@@ -213,7 +215,9 @@ public class TrialDetectionController extends BladeController {
     @ApiOperationSupport(order = 21)
     @ApiOperation(value = "关联原材检测报告保存或修改", notes = "传入RawMaterialSubmitRelationDTO")
     public R<Object> rawMaterialSubmitRelation(@RequestBody RawMaterialSubmitRelationDTO dto) throws FileNotFoundException {
-        return R.status(iTrialSelfInspectionRecordService.rawMaterialSubmitRelation(dto));
+        //TODO 已剥离,融合到自检记录保存中
+        //return R.status(iTrialSelfInspectionRecordService.rawMaterialSubmitRelation(dto));
+        return R.status(true);
     }
 
     @PostMapping("/self/print-pdf")
@@ -268,14 +272,18 @@ public class TrialDetectionController extends BladeController {
     @ApiOperationSupport(order = 26)
     @ApiOperation(value = "自检记录关联工程部位信息保存", notes = "传入SelfProjectPositionSubmitDTO")
     public R<Object> recordProjectPosition(@Valid @RequestBody SelfProjectPositionSubmitDTO dto) throws FileNotFoundException {
-        return R.status(iTrialSelfInspectionRecordService.recordProjectPosition(dto));
+        //TODO 已剥离,融合到批量审批中
+        //return R.status(iTrialSelfInspectionRecordService.recordProjectPosition(dto));
+        return R.status(true);
     }
 
     @PostMapping("/self/record-sample/submit")
     @ApiOperationSupport(order = 27)
     @ApiOperation(value = "自检记录关联取样信息保存", notes = "传入RecordSampleSubmitDTO")
     public R<Object> recordSampleSubmit(@Valid @RequestBody RecordSampleSubmitDTO dto) {
-        return R.status(iTrialSelfInspectionRecordService.recordSampleSubmit(dto));
+        //TODO 已剥离,融合到自检记录保存中
+        //return R.status(iTrialSelfInspectionRecordService.recordSampleSubmit(dto));
+        return R.status(true);
     }
 
 }

+ 35 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -1,5 +1,6 @@
 package org.springblade.business.feignClient;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
@@ -8,6 +9,9 @@ import org.springblade.business.service.IArchiveFileService;
 import org.springblade.business.vo.ArchiveFileVO;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+import java.util.Map;
+
 
 @RestController
 @AllArgsConstructor
@@ -26,4 +30,35 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
         IPage<ArchiveFileVO> archiveFileVOIPage = this.iArchiveFileService.selectArchiveFilePage(archiveFile);
         return JSONObject.parseObject(JSONObject.toJSONString(archiveFileVOIPage));
     }
+    @Override
+    public JSONObject selectArchiveFilePageByBoxName(ArchiveFileVO archiveFile) {
+        IPage<ArchiveFileVO> archiveFileVOIPage = this.iArchiveFileService.selectArchiveFilePageByBoxName(archiveFile);
+        return JSONObject.parseObject(JSONObject.toJSONString(archiveFileVOIPage));
+    }
+    @Override
+    public void updateArchiveFileSort(ArchiveFileVO vo) {
+        this.iArchiveFileService.updateArchiveFileSort(vo.getList());
+    }
+
+    @Override
+    public boolean updateArchiveFileByBoxName(Map<String,Object> jsons) {
+        return  this.iArchiveFileService.updateArchiveFileByBoxName(jsons);
+    }
+
+    @Override
+    public String isBoxName(String boxName) {
+        return this.iArchiveFileService.isBoxName(boxName);
+    }
+
+    @Override
+    public JSONArray selectBoxNameAndBoxNumber(String nodeId) {
+        List<Object> mapList = this.iArchiveFileService.selectBoxNameAndBoxNumber(nodeId);
+
+        return JSONArray.parseArray(JSONArray.toJSONString(mapList));
+    }
+
+    @Override
+    public boolean updateArchiveFileByNodeId(String ids, String nodeId) {
+        return this.iArchiveFileService.updateArchiveFileByNodeId(ids,nodeId);
+    }
 }

+ 6 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskClientImpl.java

@@ -16,6 +16,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.manager.feign.EVisaConfigClient;
 import org.springframework.web.bind.annotation.RestController;
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @AllArgsConstructor
@@ -29,6 +30,11 @@ public class TaskClientImpl implements TaskClient {
 
     private final ITaskParallelService taskParallelService;
 
+    @Override
+    public Map<String,String> queryContractAllBatch(String contract) {
+        return taskService.queryContractAllBatch(contract);
+    }
+
     @Override
     public String queryTaskContractId(String taskId) {
         //找到任务

+ 14 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -22,6 +22,7 @@ import org.springblade.business.vo.ArchiveFileVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
+import java.util.Map;
 
 /**
  *  Mapper 接口
@@ -33,6 +34,7 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 
 	Integer selectArchiveFileCount(@Param("vo") ArchiveFileVO vo);
 
+	Integer selectArchiveFilePageByBoxNameCount(@Param("vo") ArchiveFileVO vo);
 	/**
 	 * 自定义分页
 	 */
@@ -48,4 +50,16 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 	 */
 	List<ArchiveFile> getDeleteDataByIds(@Param("ids")List<String> ids);
 
+	Boolean updateArchiveFileByBoxName(@Param("ids") List<Long> ids,@Param("boxName") String boxName,@Param("boxNumber") Integer boxNumber);
+	Boolean updateArchiveFileByBoxNameOne(@Param("boxName") String boxName,@Param("boxNumber") Integer boxNumber);
+	Integer isBoxName(@Param("boxName") String boxName);
+
+	/**
+	 * 自定义分页
+	 */
+	List<ArchiveFile> selectArchiveFilePageByBoxName(@Param("current") Integer current, @Param("size") Integer size, @Param("vo") ArchiveFileVO vo);
+
+	List<Object> selectBoxNameAndBoxNumber(String nodeId);
+
+	Integer updateArchiveFileByNodeId(List<Long> ids, String nodeId);
 }

+ 118 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -46,6 +46,9 @@
         <result column="ftime" property="ftime"/>
         <result column="utime" property="utime"/>
         <result column="del_time" property="delTime"/>
+        <result column="sort" property="sort"/>
+        <result column="box_name" property="boxName"/>
+        <result column="box_number" property="boxNumber"/>
     </resultMap>
     <update id="recoveryByIds">
         update u_archive_file set is_deleted = 0 where
@@ -117,7 +120,92 @@
                 cite_change_number like concat('%',#{vo.queryValue},'%')
             )
         </if>
-        order by create_time DESC
+        order by sort,create_time DESC
+    </select>
+
+    <select id="selectArchiveFilePageByBoxNameCount" resultType="java.lang.Integer">
+        select count(id) from u_archive_file where is_deleted = 0
+        <if test="vo.isApprovalValue != null and vo.isApprovalValue != ''">
+            and status = #{vo.isApprovalValue}
+        </if>
+        <if test="vo.isCertificationValue != null and vo.isCertificationValue != ''">
+            and is_certification = #{vo.isCertificationValue}
+        </if>
+        <if test="vo.projectId != null and vo.projectId != ''">
+            and project_id = #{vo.projectId}
+        </if>
+        <if test="vo.contractId != null and vo.contractId != ''">
+            and contract_id = #{vo.contractId}
+        </if>
+        <if test="vo.nodeIds != null and vo.nodeIds != ''">
+            and node_id in
+            <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
+                #{nodeId}
+            </foreach>
+        </if>
+
+        <choose>
+            <when test="vo.boxName != null and vo.boxName != ''">
+                and  (box_name = #{vo.boxName} or box_name is null or box_name = '')
+            </when>
+            <otherwise>
+                and (box_name is null or box_name = '')
+            </otherwise>
+        </choose>
+
+        <if test="vo.queryValue != null and vo.queryValue != ''">
+            and (
+            file_name like concat('%',#{vo.queryValue},'%') or
+            file_number like concat('%',#{vo.queryValue},'%') or
+            duty_user like concat('%',#{vo.queryValue},'%') or
+            sheet_source like concat('%',#{vo.queryValue},'%') or
+            drawing_no like concat('%',#{vo.queryValue},'%') or
+            cite_change_number like concat('%',#{vo.queryValue},'%')
+            )
+        </if>
+        order by box_number,sort,create_time DESC
+    </select>
+    <select id="selectArchiveFilePageByBoxName" resultMap="archiveFileResultMap">
+        select * from u_archive_file where is_deleted = 0
+        <if test="vo.isApprovalValue != null and vo.isApprovalValue != ''">
+            and status = #{vo.isApprovalValue}
+        </if>
+        <if test="vo.isCertificationValue != null and vo.isCertificationValue != ''">
+            and is_certification = #{vo.isCertificationValue}
+        </if>
+        <if test="vo.projectId != null and vo.projectId != ''">
+            and project_id = #{vo.projectId}
+        </if>
+        <if test="vo.contractId != null and vo.contractId != ''">
+            and contract_id = #{vo.contractId}
+        </if>
+        <if test="vo.nodeIds != null and vo.nodeIds != ''">
+            and node_id in
+            <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
+                #{nodeId}
+            </foreach>
+        </if>
+
+        <choose>
+            <when test="vo.boxName != null and vo.boxName != ''">
+                and (box_name = #{vo.boxName} or box_name is null or box_name = '')
+            </when>
+            <otherwise>
+                and (box_name is null or box_name = '')
+            </otherwise>
+        </choose>
+
+        <if test="vo.queryValue != null and vo.queryValue != ''">
+            and (
+            file_name like concat('%',#{vo.queryValue},'%') or
+            file_number like concat('%',#{vo.queryValue},'%') or
+            duty_user like concat('%',#{vo.queryValue},'%') or
+            sheet_source like concat('%',#{vo.queryValue},'%') or
+            drawing_no like concat('%',#{vo.queryValue},'%') or
+            cite_change_number like concat('%',#{vo.queryValue},'%')
+            )
+        </if>
+        order by box_number,sort,create_time DESC
     </select>
     <select id="getDeleteDataByIds" resultType="org.springblade.business.entity.ArchiveFile">
         select * from u_archive_file where id in
@@ -126,4 +214,33 @@
         </foreach>
     </select>
 
+    <select id="isBoxName" resultType="java.lang.Integer">
+        select count(id) from u_archive_file where is_deleted = 0 and box_name =  #{boxName}
+    </select>
+
+    <update id="updateArchiveFileByBoxName" >
+        update u_archive_file set box_name = #{boxName},box_number = #{boxNumber} where
+        id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    <update id="updateArchiveFileByBoxNameOne" >
+        update u_archive_file set box_name = null,box_number = null where
+        box_name =  #{boxName} and box_number = #{boxNumber}
+    </update>
+
+    <select id="selectBoxNameAndBoxNumber" resultType="java.util.Map">
+        select box_name as boxName,box_number as boxNumber,group_concat(DISTINCT id ORDER BY id ASC SEPARATOR ',') as ids
+         from u_archive_file where node_id = #{nodeId} and box_number is not null
+         group by box_name order by box_number asc
+    </select>
+
+    <update id="updateArchiveFileByNodeId" >
+        update u_archive_file set node_id = #{nodeId} where
+        id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 </mapper>

+ 6 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.java

@@ -21,6 +21,8 @@ import org.springblade.business.vo.InformationQueryVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
+import java.util.Map;
+
 import org.apache.ibatis.annotations.Param;
 import org.springblade.business.vo.QueryProcessDataVO;
 import org.springblade.manager.entity.WbsTreeContract;
@@ -104,6 +106,9 @@ public interface InformationQueryMapper extends BaseMapper<InformationQuery> {
 	// 节点复制数据
 	boolean copeNodeData(String nodeId, String vocationalId);
 
-
+	// 获取当前节点的子节点及自己
 	List<WbsTreeContract> getNodeChildAllByNodeId(String nodeId,String contractId,String pKeyId);
+
+	// 获取当前节点下,所有表单的字段数据
+	List<QueryProcessDataVO> getNodeChildTabColsAllByNodeId(String nodeId, String contractId);
 }

+ 7 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -608,4 +608,11 @@
             or wtc.p_key_id=#{pKeyId}
 
     </select>
+
+    <!--获取当前节点下,所有表单的字段数据-->
+    <select id="getNodeChildTabColsAllByNodeId" resultMap="queryProcessDataMap">
+        SELECT table_name as queryType,GROUP_CONCAT(COLUMN_name) as ancestors from information_schema.COLUMNS where table_name
+            in(SELECT init_table_name from m_wbs_tree_contract a WHERE a.ancestors like concat('%',#{nodeId},'%') and contract_id=#{contractId} and type=2 and is_deleted=0)
+        GROUP BY table_name
+    </select>
 </mapper>

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskMapper.java

@@ -36,4 +36,7 @@ public interface TaskMapper extends BaseMapper<Task> {
 
     List<String> queryBatchListTwo(@Param("projectId") String projectId, @Param("contractId") String contractId);
 
+    List<String> queryBatchListThree(@Param("projectId") String projectId, @Param("contractId") String contractId);
+
+    List<Task> queryContractAllBatch(String contract);
 }

+ 14 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskMapper.xml

@@ -51,11 +51,24 @@
         group by batch
     </select>
     <select id="queryBatchListTwo" resultType="java.lang.String">
-        select DISTINCT batch from u_task where is_deleted = 0 and status in (1,2) and project_id = #{projectId}
+        select DISTINCT batch from u_task where is_deleted = 0 and status in (1,2) and project_id = #{projectId} and approval_type = 1
         <if test="contractId != null and contractId != ''">
             and contract_id = #{contractId}
         </if>
         order by batch
     </select>
+    <select id="queryBatchListThree" resultType="java.lang.String">
+        select DISTINCT u.batch from u_task u LEFT JOIN u_information_query iq on u.form_data_id=iq.id
+        where  u.is_deleted = 0 and iq.type = 1 and u.status in (1, 2) and u.project_id = #{projectId} and u.approval_type = 1
+        <if test="contractId != null and contractId != ''">
+            and u.contract_id = #{contractId}
+        </if>
+        order by u.batch;
+    </select>
+    <select id="queryContractAllBatch" resultMap="taskResultMap">
+        select form_data_id,batch  from u_task
+        where is_deleted = 0 and status in (1, 2) and contract_id =  #{contractId}
+        GROUP BY form_data_id ;
+    </select>
 
 </mapper>

+ 0 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TrialSelfInspectionRecordMapper.java

@@ -40,5 +40,4 @@ public interface TrialSelfInspectionRecordMapper extends BaseMapper<TrialSelfIns
     List<String> selectSelectedStatusList(Long nodeId, String type);
 
     List<WbsTreeContract> selectWbsTreeContractListByPKeyIds(@Param("idList") List<String> ids);
-
 }

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TrialSelfInspectionRecordMapper.xml

@@ -64,7 +64,7 @@
     </delete>
 
     <select id="selectAll" resultType="org.springblade.business.entity.TrialSelfInspectionRecord">
-        select record_no,report_no from u_trial_self_inspection_record where node_id = #{nodeId} and contract_id = #{contractId}
+        select record_no,report_no from u_trial_self_inspection_record where node_id = #{nodeId} and contract_id = #{contractId} and is_deleted = 0
     </select>
 
     <select id="selectSelfSampleRecord" resultType="java.lang.String">

+ 17 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IArchiveFileService.java

@@ -16,12 +16,15 @@
  */
 package org.springblade.business.service;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.vo.ArchiveFileVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  *  服务类
@@ -36,6 +39,10 @@ public interface IArchiveFileService extends BaseService<ArchiveFile> {
 	 */
 	IPage<ArchiveFileVO> selectArchiveFilePage(ArchiveFileVO archiveFile);
 
+	/**
+	 * 自定义分页并且分盒
+	 */
+	IPage<ArchiveFileVO> selectArchiveFilePageByBoxName(ArchiveFileVO archiveFile);
 	/**
 	 * 恢复删除
 	 */
@@ -48,4 +55,14 @@ public interface IArchiveFileService extends BaseService<ArchiveFile> {
 
 
 	void saveArchiveFile(List<ArchiveFileVO> list);
+
+	void updateArchiveFileSort(List<ArchiveFileVO> list);
+
+	boolean updateArchiveFileByBoxName(Map<String,Object> jsons);
+
+	String isBoxName(String boxName);
+
+	List<Object> selectBoxNameAndBoxNumber(String nodeId);
+
+	boolean updateArchiveFileByNodeId(String ids, String nodeId);
 }

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IInformationQueryService.java

@@ -118,4 +118,7 @@ public interface IInformationQueryService extends BaseService<InformationQuery>
 
 	// 获取当前节点下所有子节点
 	List<WbsTreeContract> getNodeChildAllByNodeId(String nodeId,String contractId,String pKeyId);
+
+	// 获取当前节点所有的表的字段信息
+	List<QueryProcessDataVO> getNodeChildTabColsAllByNodeId(String nodeId,String contractId);
 }

+ 8 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java

@@ -71,5 +71,13 @@ public interface ITaskService extends BaseService<Task> {
      * 获取当前合同段有哪些上报批次
      */
     List<String> queryBatchListTwo(String projectId, String contractId);
+    /**
+     * 获取当前合同段有哪些上报批次,内页台账用
+     */
+    List<String> queryBatchListThree(String projectId, String contractId);
 
+    /**
+     *  获取当前合同段所有上报资料的上报批次
+     */
+    Map<String,String> queryContractAllBatch(String contract);
 }

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/ITrialSelfInspectionRecordService.java

@@ -15,7 +15,7 @@ public interface ITrialSelfInspectionRecordService extends BaseService<TrialSelf
 
     IPage<TrialSelfInspectionRecordVO> selfPage(IPage<TrialSelfInspectionRecord> page, TrialSelfInspectionRecordPageDTO dto);
 
-    String selfSubmit(TrialSelfInspectionRecordDTO dto) ;
+    String selfSubmit(TrialSelfInspectionRecordDTO dto) throws FileNotFoundException;
 
     List<TrialSampleInfoVO> selfSampleList(String id);
 
@@ -34,7 +34,7 @@ public interface ITrialSelfInspectionRecordService extends BaseService<TrialSelf
     String selfPrintNullPdf(String ids) throws Exception;
 
     @Async
-    void updateTrialSelfInspectionRecordStatus(List<TaskApprovalVO> obj);
+    void updateTrialSelfInspectionRecordStatus(List<TaskApprovalVO> obj) throws FileNotFoundException;
 
     String addBussFile(MultipartFile file, Long pkeyId, String nodeId, String contractId, String projectId, String classify, String id, String tableType) throws Exception;
 

+ 74 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -11,6 +11,7 @@ import org.springblade.business.service.IArchiveFileService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.stereotype.Service;
@@ -18,6 +19,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 /**
  *  服务实现类
@@ -93,4 +95,76 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 		this.saveBatch(JSONArray.parseArray(JSONObject.toJSONString(list), ArchiveFile.class));
 	}
 
+	@Override
+	public void updateArchiveFileSort(List<ArchiveFileVO> list) {
+
+		this.updateBatchById(JSONArray.parseArray(JSONObject.toJSONString(list), ArchiveFile.class));
+	}
+
+	@Override
+	public boolean updateArchiveFileByBoxName(Map<String,Object> jsons) {
+		List<Object> list = (List< Object>) jsons.get("list");
+		for(int i = 0 ;i<list.size();i++){
+			Map<String,Object> map = (Map<String, Object>) list.get(i);
+			String ids = (String) map.get("ids");
+			String boxName = (String) map.get("boxName");
+			Integer boxNumber = (Integer) map.get("boxNumber");
+			if(ids == null || boxName == null || boxNumber == null){
+				continue;
+			}
+			baseMapper.updateArchiveFileByBoxNameOne(boxName,boxNumber);
+			baseMapper.updateArchiveFileByBoxName(Func.toLongList(ids),boxName,boxNumber);
+		}
+		return true;
+	}
+
+	@Override
+	public String isBoxName(String boxName) {
+		Integer integer = this.baseMapper.isBoxName(boxName);
+		if(integer > 0){
+			return boxName;
+		}
+		return "";
+	}
+
+	@Override
+	public List<Object> selectBoxNameAndBoxNumber(String nodeId) {
+		return this.baseMapper.selectBoxNameAndBoxNumber(nodeId);
+	}
+
+	@Override
+	public boolean updateArchiveFileByNodeId(String ids, String nodeId) {
+		try {
+			baseMapper.updateArchiveFileByNodeId(Func.toLongList(ids),nodeId);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			return false;
+		}
+		return true;
+	}
+
+	@Override
+	public IPage<ArchiveFileVO> selectArchiveFilePageByBoxName(ArchiveFileVO vo) {
+		Query query = new Query();
+		query.setCurrent(vo.getCurrent());
+		query.setSize(vo.getSize());
+		//设置分页
+		IPage<ArchiveFileVO> iPage = Condition.getPage(query);
+
+		//汇总
+		Integer total = this.baseMapper.selectArchiveFilePageByBoxNameCount(vo);
+		if(total == null){
+			total = 0;
+		}
+		//分页
+		int current = (vo.getCurrent() - 1) * vo.getSize();
+
+		List<ArchiveFile> pageList = this.baseMapper.selectArchiveFilePageByBoxName(current, vo.getSize(), vo);
+		//设置分页信息
+		iPage.setTotal(total);
+		List<ArchiveFileVO> pageVoList = JSONArray.parseArray(JSONObject.toJSONString(pageList), ArchiveFileVO.class);
+
+		return iPage.setRecords(pageVoList);
+	}
 }

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -630,4 +630,9 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
     public List<WbsTreeContract> getNodeChildAllByNodeId(String nodeId,String contractId,String pKeyId) {
         return baseMapper.getNodeChildAllByNodeId(nodeId,contractId,pKeyId);
     }
+
+    @Override
+    public List<QueryProcessDataVO> getNodeChildTabColsAllByNodeId(String nodeId, String contractId) {
+        return baseMapper.getNodeChildTabColsAllByNodeId(nodeId,contractId);
+    }
 }

+ 14 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -350,6 +350,20 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         return baseMapper.queryBatchListTwo(projectId, contractId);
     }
 
+    @Override
+    public List<String> queryBatchListThree(String projectId, String contractId) {
+        return baseMapper.queryBatchListThree(projectId, contractId);
+    }
+
+    @Override
+    public Map<String, String> queryContractAllBatch(String contract) {
+        Map<String,String> map = new HashMap<>();
+        baseMapper.queryContractAllBatch(contract).stream().forEach(task->{
+            map.put(task.getFormDataId(),task.getBatch()+"");
+        });
+        return map;
+    }
+
     @Override
     public List<Task> queryBatchList(String projectId, String contract) {
         return this.baseMapper.queryBatchList(projectId, contract);

+ 1 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialContainerClassificationServiceImpl.java

@@ -361,8 +361,7 @@ public class TrialContainerClassificationServiceImpl
             }
         } else {
             Map.Entry<Long, String> map = beanMap.entrySet().stream().filter(f -> f.getKey().equals(id)).findAny().orElse(null);
-            assert map != null;
-            if (!map.getValue().equals(bean.getFieldValue())) {
+            if (map != null && !map.getValue().equals(bean.getFieldValue())) {
                 String obj = values.stream().filter(f -> f.equals(bean.getFieldValue())).findAny().orElse(null);
                 if (obj != null) {
                     return "编号已存在,请重新输入";

+ 12 - 10
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDetectionDataServiceImpl.java

@@ -88,22 +88,24 @@ public class TrialDetectionDataServiceImpl extends BaseServiceImpl<TrialDetectio
             List<TrialDetectionData> insertData = new ArrayList<>();
             for (TrialDetectionData trialDetectionDatum : trialDetectionData) {
                 TrialDetectionData obj = BeanUtil.copyProperties(trialDetectionDatum, TrialDetectionData.class);
-                assert obj != null;
-                obj.setId(SnowFlakeUtil.getId());
-                obj.setEntrustNo(String.valueOf(SnowFlakeUtil.getId()));
-                obj.setReportNo(String.valueOf(SnowFlakeUtil.getId()));
-                insertData.add(obj);
+                if (obj != null) {
+                    obj.setId(SnowFlakeUtil.getId());
+                    obj.setEntrustNo(String.valueOf(SnowFlakeUtil.getId()));
+                    obj.setReportNo(String.valueOf(SnowFlakeUtil.getId()));
+                    insertData.add(obj);
+                }
             }
             this.saveBatch(insertData);
 
         } else {
             //单条复制编辑新增保存
             TrialDetectionData obj = BeanUtil.copyProperties(dto, TrialDetectionData.class);
-            assert obj != null;
-            obj.setId(SnowFlakeUtil.getId());
-            obj.setEntrustNo(String.valueOf(SnowFlakeUtil.getId()));
-            obj.setReportNo(String.valueOf(SnowFlakeUtil.getId()));
-            this.save(obj);
+            if (obj != null){
+                obj.setId(SnowFlakeUtil.getId());
+                obj.setEntrustNo(String.valueOf(SnowFlakeUtil.getId()));
+                obj.setReportNo(String.valueOf(SnowFlakeUtil.getId()));
+                this.save(obj);
+            }
         }
         return true;
     }

+ 4 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDeviceOverhaulServiceImpl.java

@@ -70,8 +70,10 @@ public class TrialDeviceOverhaulServiceImpl extends BaseServiceImpl<TrialDeviceO
             dto.setFactoryNumber(trialDeviceInfo.getFactoryNumber());
         }
         TrialDeviceOverhaul trialDeviceOverhaul = BeanUtil.copyProperties(dto, TrialDeviceOverhaul.class);
-        assert trialDeviceOverhaul != null;
-        return this.saveOrUpdate(trialDeviceOverhaul);
+        if (trialDeviceOverhaul != null){
+            return this.saveOrUpdate(trialDeviceOverhaul);
+        }
+        return false;
     }
 
     @Override

+ 4 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDeviceUseServiceImpl.java

@@ -72,8 +72,10 @@ public class TrialDeviceUseServiceImpl extends BaseServiceImpl<TrialDeviceUseMap
             dto.setFactoryNumber(trialDeviceInfo.getFactoryNumber());
         }
         TrialDeviceUse trialDeviceUse = BeanUtil.copyProperties(dto, TrialDeviceUse.class);
-        assert trialDeviceUse != null;
-        return this.saveOrUpdate(trialDeviceUse);
+        if (trialDeviceUse != null){
+            return this.saveOrUpdate(trialDeviceUse);
+        }
+        return false;
     }
 
     @Override

+ 6 - 6
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialMaterialMobilizationServiceImpl.java

@@ -67,8 +67,7 @@ public class TrialMaterialMobilizationServiceImpl extends BaseServiceImpl<TrialM
             return trialMaterialMobilization1 != null;
         } else {
             TrialMaterialMobilization trialMaterialMobilization = list.stream().filter(f -> f.getId().equals(Long.parseLong(id))).findAny().orElse(null);
-            assert trialMaterialMobilization != null;
-            if (!trialMaterialMobilization.getMaterialNumber().equals(number)) {
+            if (trialMaterialMobilization != null && !trialMaterialMobilization.getMaterialNumber().equals(number)) {
                 TrialMaterialMobilization trialMaterialMobilization1 = list.stream().filter(f -> f.getMaterialNumber().equals(number)).findAny().orElse(null);
                 return trialMaterialMobilization1 != null;
             }
@@ -148,10 +147,11 @@ public class TrialMaterialMobilizationServiceImpl extends BaseServiceImpl<TrialM
         }
         data.forEach(excel -> {
             TrialMaterialMobilization trialMaterialMobilization = BeanUtil.copyProperties(excel, TrialMaterialMobilization.class);
-            assert trialMaterialMobilization != null;
-            trialMaterialMobilization.setUserId(SecureUtil.getUserId());
-            trialMaterialMobilization.setContractId(contractId);
-            list.add(trialMaterialMobilization);
+            if (trialMaterialMobilization != null){
+                trialMaterialMobilization.setUserId(SecureUtil.getUserId());
+                trialMaterialMobilization.setContractId(contractId);
+                list.add(trialMaterialMobilization);
+            }
         });
         if (isCovered) {
             this.saveOrUpdateBatch(list);

+ 15 - 13
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSampleInfoServiceImpl.java

@@ -66,8 +66,7 @@ public class TrialSampleInfoServiceImpl extends BaseServiceImpl<TrialSampleInfoM
             return trialSampleInfo != null;
         } else {
             TrialSampleInfo trialSampleInfo = list.stream().filter(f -> f.getId().equals(Long.parseLong(id))).findAny().orElse(null);
-            assert trialSampleInfo != null;
-            if (!trialSampleInfo.getSpecificationNumber().equals(specificationNumber)) {
+            if (trialSampleInfo != null && !trialSampleInfo.getSpecificationNumber().equals(specificationNumber)) {
                 TrialSampleInfo trialSampleInfo1 = list.stream().filter(f -> f.getSpecificationNumber().equals(specificationNumber)).findAny().orElse(null);
                 return trialSampleInfo1 != null;
             }
@@ -90,9 +89,10 @@ public class TrialSampleInfoServiceImpl extends BaseServiceImpl<TrialSampleInfoM
             for (User user : users) {
                 if (trialSampleInfo.getUserId().equals(user.getId())) {
                     TrialSampleInfoVO3 trialSampleInfoVO3 = BeanUtil.copyProperties(trialSampleInfo, TrialSampleInfoVO3.class);
-                    assert trialSampleInfoVO3 != null;
-                    trialSampleInfoVO3.setUserName(ObjectUtil.isNotEmpty(user.getName()) ? user.getName() : user.getRealName());
-                    list.add(trialSampleInfoVO3);
+                    if (trialSampleInfoVO3 != null) {
+                        trialSampleInfoVO3.setUserName(ObjectUtil.isNotEmpty(user.getName()) ? user.getName() : user.getRealName());
+                        list.add(trialSampleInfoVO3);
+                    }
                 }
             }
         }
@@ -240,11 +240,12 @@ public class TrialSampleInfoServiceImpl extends BaseServiceImpl<TrialSampleInfoM
         }
         data.forEach(excel -> {
             TrialSampleInfo trialSampleInfo = BeanUtil.copyProperties(excel, TrialSampleInfo.class);
-            assert trialSampleInfo != null;
-            trialSampleInfo.setUserId(SecureUtil.getUserId());
-            trialSampleInfo.setContractId(contractId);
-            trialSampleInfo.setNodeId(nodeId);
-            list.add(trialSampleInfo);
+            if (trialSampleInfo != null) {
+                trialSampleInfo.setUserId(SecureUtil.getUserId());
+                trialSampleInfo.setContractId(contractId);
+                trialSampleInfo.setNodeId(nodeId);
+                list.add(trialSampleInfo);
+            }
         });
         if (isCovered) {
             this.saveOrUpdateBatch(list);
@@ -281,9 +282,10 @@ public class TrialSampleInfoServiceImpl extends BaseServiceImpl<TrialSampleInfoM
                 for (User user : userList) {
                     if (trialSampleInfo.getUserId().equals(user.getId())) {
                         TrialSampleInfoVO trialSampleInfoVO = BeanUtil.copyProperties(trialSampleInfo, TrialSampleInfoVO.class);
-                        assert trialSampleInfoVO != null;
-                        trialSampleInfoVO.setUserName(user.getName());
-                        pdfData.add(trialSampleInfoVO);
+                        if (trialSampleInfoVO != null){
+                            trialSampleInfoVO.setUserName(user.getName());
+                            pdfData.add(trialSampleInfoVO);
+                        }
                     }
                 }
             }

+ 138 - 46
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.spire.xls.*;
@@ -45,6 +46,7 @@ import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -205,18 +207,19 @@ public class TrialSelfInspectionRecordServiceImpl
         List<TrialSelfInspectionRecord> trialSelfInspectionRecords = baseMapper.selectBatchIds(ids);
         for (TrialSelfInspectionRecord trialSelfInspectionRecord : trialSelfInspectionRecords) {
             TrialSelfInspectionRecordDTO dto = BeanUtil.copyProperties(trialSelfInspectionRecord, TrialSelfInspectionRecordDTO.class);
-            assert dto != null;
-            dto.setId(SnowFlakeUtil.getId());
-            if (StringUtils.isNotEmpty(dto.getRecordNo())) {
-                dto.setTableType("1");
-            } else if (StringUtils.isNotEmpty(dto.getReportNo())) {
-                dto.setTableType("2");
-            } else if (StringUtils.isNotEmpty(dto.getReportNo()) && StringUtils.isNotEmpty(dto.getRecordNo())) {
-                dto.setTableType("1,2");
+            if (dto != null) {
+                dto.setId(SnowFlakeUtil.getId());
+                if (StringUtils.isNotEmpty(dto.getRecordNo())) {
+                    dto.setTableType("1");
+                } else if (StringUtils.isNotEmpty(dto.getReportNo())) {
+                    dto.setTableType("2");
+                } else if (StringUtils.isNotEmpty(dto.getReportNo()) && StringUtils.isNotEmpty(dto.getRecordNo())) {
+                    dto.setTableType("1,2");
+                }
+                //重构编号
+                this.buildNumber(dto);
+                this.save(dto);
             }
-            //重构编号
-            this.buildNumber(dto);
-            this.save(dto);
         }
         return true;
     }
@@ -281,6 +284,7 @@ public class TrialSelfInspectionRecordServiceImpl
     }
 
     @Override
+    @Async
     public boolean rawMaterialSubmitRelation(RawMaterialSubmitRelationDTO dto) throws FileNotFoundException {
         if (ObjectUtil.isEmpty(dto.getId())) {
             throw new ServiceException("请先保存填报数据后,再关联原材检测报告信息");
@@ -302,8 +306,7 @@ public class TrialSelfInspectionRecordServiceImpl
                 //获取原始pdfUrl
                 String sql = "select * from u_trial_raw_material_self_record where self_record_id =" + dto.getId();
                 TrialRawMaterialSelfRecord recordOld = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TrialRawMaterialSelfRecord.class)).stream().findAny().orElse(null);
-                if (recordOld != null) {
-                    assert oldObj != null;
+                if (recordOld != null && oldObj != null) {
                     oldObj.setPdfUrl(recordOld.getOldPdfUrl());
                 }
 
@@ -339,9 +342,10 @@ public class TrialSelfInspectionRecordServiceImpl
                     jdbcTemplate.execute(sql1);
                     //新增当前记录关系信息
                     for (String s : idsList) {
-                        assert oldObj != null;
-                        String sql2 = "insert into u_trial_raw_material_self_record(id,self_record_id,raw_material_record_id,old_pdf_url) values(" + SnowFlakeUtil.getId() + "," + dto.getId() + "," + s + ",'" + oldObj.getPdfUrl() + "')";
-                        jdbcTemplate.execute(sql2);
+                        if (oldObj != null) {
+                            String sql2 = "insert into u_trial_raw_material_self_record(id,self_record_id,raw_material_record_id,old_pdf_url) values(" + SnowFlakeUtil.getId() + "," + dto.getId() + "," + s + ",'" + oldObj.getPdfUrl() + "')";
+                            jdbcTemplate.execute(sql2);
+                        }
                     }
 
                     if (ObjectUtil.isNotEmpty(bladeFile)) {
@@ -454,19 +458,71 @@ public class TrialSelfInspectionRecordServiceImpl
     }
 
     @Override
-    public void updateTrialSelfInspectionRecordStatus(List<TaskApprovalVO> obj){
+    @Async
+    public void updateTrialSelfInspectionRecordStatus(List<TaskApprovalVO> obj) throws FileNotFoundException {
         for (TaskApprovalVO taskApprovalVO : obj) {
             if (ObjectUtil.isNotEmpty(taskApprovalVO.getParallelProcessInstanceId())) {
                 String sql = "select process_instance_id from u_task_parallel where parallel_process_instance_id = '" + taskApprovalVO.getParallelProcessInstanceId() + "'";
                 TaskParallel taskParallel = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TaskParallel.class)).stream().findAny().orElse(null);
-                assert taskParallel != null;
-                if (ObjectUtil.isNotEmpty(taskParallel.getProcessInstanceId())) {
+                if (taskParallel != null && ObjectUtil.isNotEmpty(taskParallel.getProcessInstanceId())) {
                     String trialSelfInspectionRecordId = baseMapper.selectTaskByTaskId(taskParallel.getProcessInstanceId());
                     if (StringUtils.isNotEmpty(trialSelfInspectionRecordId)) {
                         this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate()
                                 .set(TrialSelfInspectionRecord::getTaskStatus, "OK".equals(taskApprovalVO.getFlag()) ? "已审批" : "已废除")
                                 .eq(TrialSelfInspectionRecord::getId, trialSelfInspectionRecordId)
                         );
+
+                        //TODO ------审批通过且合格的自检记录信息,关联到施工质检节点上------
+                        TrialSelfInspectionRecord record = baseMapper.selectById(trialSelfInspectionRecordId);
+                        if (("已审批").equals(record.getTaskStatus()) && (new Integer(1)).equals(record.getDetectionResult()) && (new Integer(1)).equals(record.getDetectionCategory())) {
+                            //删除关联信息
+                            baseMapper.delSelfQuality(record.getId());
+
+                            List<String> ids = Func.toStrList(record.getProjectPosition());
+                            //新增关联信息
+                            for (String id : ids) {
+                                baseMapper.saveSelfQuality(SnowFlakeUtil.getId(), record.getId(), id);
+                            }
+
+                            //把当前试验的PDF合并关联到质检树节点下
+                            List<String> contractNodePKeyIds = baseMapper.selectQualityNodeId(String.valueOf(record.getId())); //获取合同段质检树的节点PkeyId
+                            for (String pKeyId : contractNodePKeyIds) {
+                                WbsTreeContract wbsTreeContract = wbsTreeContractClient.getContractNodeByPrimaryKeyId(pKeyId);
+                                if (wbsTreeContract != null) {
+                                    List<String> pdfUrlList = new ArrayList<>();
+                                    String classify;
+                                    if (wbsTreeContract.getTableOwner().contains("1") || wbsTreeContract.getTableOwner().contains("2") || wbsTreeContract.getTableOwner().contains("3")) {
+                                        classify = "1";
+                                    } else {
+                                        classify = "2";
+                                    }
+                                    String pdfUrlNodeAll = baseMapper.selectInformationQuery(pKeyId, wbsTreeContract.getContractId(), classify);
+
+                                    if (StringUtils.isEmpty(pdfUrlNodeAll) || StringUtils.isEmpty(record.getPdfUrl())) {
+                                        continue;
+                                    }
+
+                                    //质检节点合并pdfUrl
+                                    pdfUrlList.add(pdfUrlNodeAll);
+                                    //试验pdfUrl
+                                    pdfUrlList.add(record.getPdfUrl());
+
+                                    //合并PDF
+                                    String filePath = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+                                    String listPdf = filePath + "/pdf/" + pKeyId + ".pdf";
+                                    File tabPDF = ResourceUtil.getFile(listPdf);
+                                    if (tabPDF.exists()) {
+                                        tabPDF.delete();
+                                    }
+                                    FileUtils.mergePdfPublicMethods(pdfUrlList, listPdf);
+                                    BladeFile bladeFile = this.newIOSSClient.uploadFile(pKeyId + ".pdf", listPdf);
+                                    if (bladeFile != null) {
+                                        //修改质检树合并后的pdfURL
+                                        baseMapper.updateInformationQuery(pKeyId, wbsTreeContract.getContractId(), classify, bladeFile.getLink());
+                                    }
+                                }
+                            }
+                        }
                     }
                 }
             }
@@ -607,24 +663,24 @@ public class TrialSelfInspectionRecordServiceImpl
     }
 
     @Override
-    public String selfSubmit(TrialSelfInspectionRecordDTO dto) {
+    public String selfSubmit(TrialSelfInspectionRecordDTO dto) throws FileNotFoundException {
         if (ObjectUtil.isEmpty(dto.getId()) && StringUtils.isNotEmpty(dto.getTableType())) {
             //构建记录表编号、报告单编号
             this.buildNumber(dto);
 
             //任务流程状态初始化未上报
             dto.setTaskStatus("未上报");
+        }
 
-            //初始化tabIds
-            JSONArray dataArray = dto.getDataInfo().getJSONArray("orderList");
-            List<String> tableIds = new ArrayList<>();
-            for (int i = 0; i < dataArray.size(); i++) {
-                String pkeyId = dataArray.getJSONObject(i).getString("pkeyId");
-                tableIds.add(pkeyId);
-            }
-            String join = org.apache.commons.lang.StringUtils.join(tableIds, ",");
-            dto.setTableIds(join);
+        //初始化tabIds
+        JSONArray dataArray = dto.getDataInfo().getJSONArray("orderList");
+        List<String> tableIds = new ArrayList<>();
+        for (int i = 0; i < dataArray.size(); i++) {
+            String pkeyId = dataArray.getJSONObject(i).getString("pkeyId");
+            tableIds.add(pkeyId);
         }
+        String join = org.apache.commons.lang.StringUtils.join(tableIds, ",");
+        dto.setTableIds(join);
 
         this.saveOrUpdate(dto);
 
@@ -632,7 +688,7 @@ public class TrialSelfInspectionRecordServiceImpl
             //获取当前最新的试验记录信息
             TrialSelfInspectionRecord obj = baseMapper.selectById(dto.getId());
 
-            //如果新增时不是两种类型表都填报过,那么有一项编号为Null,所以编辑时生成记录表编号或报告单编号
+            //编辑时生成记录表编号或报告单编号,如果新增时不是两种类型表都填报过,那么有一项编号为Null
             if (StringUtils.isEmpty(obj.getRecordNo()) && dto.getTableType().contains("1")) {
                 this.buildNumber(dto);
                 this.saveOrUpdate(dto);
@@ -641,27 +697,63 @@ public class TrialSelfInspectionRecordServiceImpl
                 this.saveOrUpdate(dto);
             }
 
+            //TODO ------保存实体表数据、试验记录信息、生成pdf------
             try {
-                //保存实体表数据、试验记录信息、生成pdf
                 String pdfURL = excelTabClient.saveTabData(dto.getIsBatchSave(), dto.getDataInfo(), dto.getType(), dto.getTableType(), dto.getId(), obj.getTableIds());
                 if (StringUtils.isNotEmpty(pdfURL)) {
                     //修改合并pdf
-                    this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate()
-                            .set(TrialSelfInspectionRecord::getPdfUrl, pdfURL)
-                            .eq(TrialSelfInspectionRecord::getId, dto.getId()));
+                    this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate().set(TrialSelfInspectionRecord::getPdfUrl, pdfURL).eq(TrialSelfInspectionRecord::getId, dto.getId()));
                 }
             } catch (Exception e) {
-                throw new ServiceException("保存实体表数据生成pdf时发生异常 " + e.getMessage());
+                throw new ServiceException("保存实体表数据生成pdf时发生异常" + e.getMessage());
+            }
+
+            //TODO ------关联工程及用途关系新增或删除------
+            if (StringUtils.isEmpty(obj.getProjectPosition())) {
+                String delSql = "delete from u_trial_self_quality_project where self_id = " + obj.getId();
+                jdbcTemplate.execute(delSql);
+            } else {
+                String delSql = "delete from u_trial_self_quality_project where self_id = " + obj.getId();
+                jdbcTemplate.execute(delSql);
+
+                //保留新增
+                List<Long> recordIds = Func.toLongList(obj.getProjectPosition());
+                for (Long recordNodeId : recordIds) {
+                    String insertSql = "insert into u_trial_self_quality_project(id,self_id,quality_node_id) values (" + SnowFlakeUtil.getId() + "," + obj.getId() + "," + recordNodeId + ")";
+                    jdbcTemplate.execute(insertSql);
+                }
+            }
+
+            //TODO ------关联原材料检测报告------
+            RawMaterialSubmitRelationDTO relationDTO = new RawMaterialSubmitRelationDTO();
+            relationDTO.setId(obj.getId().toString());
+            relationDTO.setIds(dto.getRawMaterialIds());
+            relationDTO.setNodeId(dto.getNodeId().toString());
+            relationDTO.setContractId(dto.getContractId().toString());
+            relationDTO.setProjectId(dto.getProjectId());
+            relationDTO.setType(dto.getType());
+            if (StringUtils.isNotEmpty(relationDTO.getIds())) {
+                this.rawMaterialSubmitRelation(relationDTO);
+            }
+
+            //TODO ------关联取样信息------
+            RecordSampleSubmitDTO recordSampleSubmitDTO = new RecordSampleSubmitDTO();
+            recordSampleSubmitDTO.setId(obj.getId());
+            recordSampleSubmitDTO.setSampleIds(dto.getSampleIds());
+            if (StringUtils.isNotEmpty(relationDTO.getIds())) {
+                this.recordSampleSubmit(recordSampleSubmitDTO);
             }
 
-            //新增设备使用记录信息
+            //TODO ------新增设备使用记录信息------
             this.trialDeviceUseService.addDeviceUseInfo(dto);
         }
 
+        //返回当前记录id
         return dto.getId().toString();
     }
 
     @Override
+    @Async
     public boolean recordSampleSubmit(RecordSampleSubmitDTO dto) {
         if (ObjectUtil.isEmpty(dto.getId())) {
             throw new ServiceException("请先保存填报数据后,再关联取样信息");
@@ -789,14 +881,15 @@ public class TrialSelfInspectionRecordServiceImpl
 
     private void buildNumber(TrialSelfInspectionRecordDTO dto) {
         StringSPUtils spUtils = new StringSPUtils();
-        List<TrialSelfInspectionRecord> trialSelfInspectionRecords = baseMapper.selectAll(dto.getNodeId(), dto.getContractId());
+        List<TrialSelfInspectionRecord> result = baseMapper.selectAll(dto.getNodeId(), dto.getContractId());
+        List<TrialSelfInspectionRecord> trialSelfInspectionRecords = result.stream().filter(Objects::nonNull).collect(Collectors.toList());
 
         //两种类型同时生成
         if (dto.getTableType().contains("1,2") || dto.getTableType().contains("2,1")) {
             String maxRecordNo = "";
             if (StringUtils.isEmpty(dto.getRecordNo())) {
                 //获取记录表最大编号
-                List<String> recordNos = trialSelfInspectionRecords.stream().map(TrialSelfInspectionRecord::getRecordNo).collect(Collectors.toList());
+                List<String> recordNos = trialSelfInspectionRecords.stream().filter(f -> ObjectUtils.isNotEmpty(f.getRecordNo())).map(TrialSelfInspectionRecord::getRecordNo).collect(Collectors.toList());
                 if (recordNos.size() == 0 || ObjectUtil.isEmpty(recordNos)) {
                     maxRecordNo = "0001";
                 } else {
@@ -817,7 +910,7 @@ public class TrialSelfInspectionRecordServiceImpl
             String maxReportNo = "";
             if (StringUtils.isEmpty(dto.getReportNo())) {
                 //获取报告单最大编号
-                List<String> reportNos = trialSelfInspectionRecords.stream().map(TrialSelfInspectionRecord::getReportNo).collect(Collectors.toList());
+                List<String> reportNos = trialSelfInspectionRecords.stream().filter(f -> ObjectUtils.isNotEmpty(f.getReportNo())).map(TrialSelfInspectionRecord::getReportNo).collect(Collectors.toList());
                 if (reportNos.size() == 0 || ObjectUtil.isEmpty(reportNos)) {
                     maxReportNo = "0001";
                 } else {
@@ -868,7 +961,7 @@ public class TrialSelfInspectionRecordServiceImpl
         if (("1").equals(dto.getTableType())) {
             if (StringUtils.isEmpty(dto.getRecordNo())) {
                 //获取记录表最大编号
-                List<String> recordNos = trialSelfInspectionRecords.stream().map(TrialSelfInspectionRecord::getRecordNo).collect(Collectors.toList());
+                List<String> recordNos = trialSelfInspectionRecords.stream().filter(f -> ObjectUtils.isNotEmpty(f.getRecordNo())).map(TrialSelfInspectionRecord::getRecordNo).collect(Collectors.toList());
                 String maxRecordNo;
                 if (recordNos.size() == 0 || ObjectUtil.isEmpty(recordNos)) {
                     maxRecordNo = "0001";
@@ -908,7 +1001,7 @@ public class TrialSelfInspectionRecordServiceImpl
         if (("2").equals(dto.getTableType())) {
             if (StringUtils.isEmpty(dto.getReportNo())) {
                 //获取报告单最大编号
-                List<String> reportNos = trialSelfInspectionRecords.stream().map(TrialSelfInspectionRecord::getReportNo).collect(Collectors.toList());
+                List<String> reportNos = trialSelfInspectionRecords.stream().filter(f -> ObjectUtils.isNotEmpty(f.getReportNo())).map(TrialSelfInspectionRecord::getReportNo).collect(Collectors.toList());
                 String maxReportNo;
                 if (reportNos.size() == 0 || ObjectUtil.isEmpty(reportNos)) {
                     maxReportNo = "0001";
@@ -1019,15 +1112,14 @@ public class TrialSelfInspectionRecordServiceImpl
         }
 
         //获取当前节点的合并的pdfURL
-        InformationQuery informationQuery = informationQueryService.getBaseMapper().selectOne(Wrappers.<InformationQuery>lambdaQuery()
+        InformationQuery informationQuery = informationQueryService.getBaseMapper().selectList(Wrappers.<InformationQuery>lambdaQuery()
                 .eq(InformationQuery::getWbsId, dto.getNodeId())
                 .eq(InformationQuery::getProjectId, dto.getProjectId())
                 .eq(InformationQuery::getContractId, dto.getContractId())
-                .eq(InformationQuery::getType, 1) //质检
-        );
+                .eq(InformationQuery::getType, 1)).stream().findAny().orElse(null);
 
         if (StringUtils.isNotEmpty(dto.getIds())) {
-            if (ObjectUtil.isNotEmpty(informationQuery) && StringUtils.isNotEmpty(informationQuery.getPdfUrl())) {
+            if (informationQuery != null && StringUtils.isNotEmpty(informationQuery.getPdfUrl())) {
 
                 List<String> pdfList = new ArrayList<>();
 
@@ -1086,7 +1178,7 @@ public class TrialSelfInspectionRecordServiceImpl
                     }
                 }
             } else {
-                throw new ServiceException("当前节点还未上报,获取pdf信息失败,请先上报后再进行关联");
+                throw new ServiceException("当前质检节点还未保存生成pdf,请先保存后再进行试验文件关联");
             }
 
         } else {

+ 3 - 3
blade-service/blade-e-visa/blade-e-visa.iml

@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
       </configuration>
     </facet>
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />

+ 0 - 5
blade-service/blade-manager/blade-manager.iml

@@ -7,10 +7,6 @@
     <facet type="web" name="Web">
       <configuration>
         <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
       </configuration>
     </facet>
   </component>
@@ -20,7 +16,6 @@
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />

+ 44 - 22
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -445,7 +445,7 @@ public class ExcelTabController extends BladeController {
 
 
     /**
-     * 关联清表-保存1
+     * 关联清表-保存
      */
     @GetMapping("/save-linkTab")
     @ApiOperationSupport(order = 14)
@@ -455,7 +455,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "tabId", value = "表Id", required = true),
     })
     public R<List<ExceTabTreVO>> saveLinkeTab(Long exceTabId, Long tabId) throws IOException {
-        String file_path =ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         //String file_path = "C:\\Users\\泓创开发\\Desktop";
 
         // 关联 私有项目 wbs 数据信息
@@ -492,11 +492,11 @@ public class ExcelTabController extends BladeController {
         //解析
         Element table = doc.select("table").first();
         Elements trs = table.select("tr");
-        if (aPrivate.getInitTableId() == null){
+        if (aPrivate.getInitTableId() == null) {
             org.springblade.manager.entity.TableInfo tableInfo = tableInfoService.getOne(new LambdaQueryWrapper<org.springblade.manager.entity.TableInfo>()
                     .eq(org.springblade.manager.entity.TableInfo::getTabEnName, aPrivate.getInitTableName()));
-            aPrivate.setInitTableId(tableInfo.getId()+"");
-            updateWrapper.set("init_table_id", tableInfo.getId()+"");
+            aPrivate.setInitTableId(tableInfo.getId() + "");
+            updateWrapper.set("init_table_id", tableInfo.getId() + "");
         }
 
         List<WbsFormElement> elementList = wbsFormElementService.selectElementListByFid(aPrivate.getInitTableId() + "");
@@ -1144,7 +1144,7 @@ public class ExcelTabController extends BladeController {
                                     }
                                 } else {
                                     Element bforData = tds.get(j - 1);
-                                    if (!bforData.text().isEmpty() || bforData.html().indexOf("hc-form-checkbox-group")>=0) {
+                                    if (!bforData.text().isEmpty() || bforData.html().indexOf("hc-form-checkbox-group") >= 0) {
                                         if (rowspan >= 1) {
                                             data.empty().append("<el-input @keyup.shift.up='keyupShiftUp' @keyup.shift.down='keyupShiftDown' @keyup.shift.left='keyupShiftLeft' @keyup.shift.right='keyupShiftRight' type='textarea' @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;'   :rows=" + rowspan * 2 + " placeholder=''> </el-input>");
                                         } else {
@@ -1408,13 +1408,13 @@ public class ExcelTabController extends BladeController {
         String tabName = wbsTreeContract.getInitTableName();
         // 字段查询 并去掉公式字段
 
-        String colkeys = "SELECT GROUP_CONCAT(e_key) as colkeys from m_table_info a ,m_wbs_form_element b WHERE a.tab_en_name = '"+tabName+"' and a.id=b.f_id ";
+        String colkeys = "SELECT GROUP_CONCAT(e_key) as colkeys from m_table_info a ,m_wbs_form_element b WHERE a.tab_en_name = '" + tabName + "' and a.id=b.f_id ";
         Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(colkeys);
         colkeys = stringObjectMap.get("colkeys") + "";
 
         // 复制表数据
 
-        String querySql = "insert into "+tabName+" (id,p_key_id,"+colkeys+") select '"+newPkId+"','"+newPkId+"'," + colkeys + " from " + tabName + " where p_key_id=" + pkeyId;
+        String querySql = "insert into " + tabName + " (id,p_key_id," + colkeys + ") select '" + newPkId + "','" + newPkId + "'," + colkeys + " from " + tabName + " where p_key_id=" + pkeyId;
         jdbcTemplate.execute(querySql);
 
         wbsTreeContractService.save(wbsTreeContract);
@@ -1518,7 +1518,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "contractId", value = "合同段Id", required = true)
     })
     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 + "' ";
+        String sql = "select pdf_url, e_visa_pdf_url,pdf_trial_url from u_information_query  where classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "' ";
 
         List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
         if (maps != null && maps.size() >= 1) {
@@ -1528,12 +1528,17 @@ public class ExcelTabController extends BladeController {
                 //优先使用电签的PDF
                 pdfUrl = stringObjectMap.get("e_visa_pdf_url");
             }
-            if(StringUtils.isEmpty(pdfUrl+"")){
-                return R.fail(300,"无数据");
-            }else{
-                return R.data(pdfUrl);
+
+            if (stringObjectMap.get("pdf_trial_url") != null) {
+                //优先使用试验合并的PDF
+                pdfUrl = stringObjectMap.get("pdf_trial_url");
             }
 
+            if (StringUtils.isEmpty(pdfUrl + "")) {
+                return R.fail(300, "无数据");
+            } else {
+                return R.data(pdfUrl);
+            }
         } else {
             return R.fail("无历史数据预览,请保存数据");
         }
@@ -1649,7 +1654,7 @@ public class ExcelTabController extends BladeController {
     })
     public R<String> getTheLogPdInfo(String theLogId, String nodePrimaryKeyId, String recordTime, String contractId) throws Exception {
         //获取配置的路径
-        String file_path =ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
 
         //获取对应的日志
         JSONObject theLogJson;
@@ -1801,7 +1806,7 @@ public class ExcelTabController extends BladeController {
                                 String key = e.getColKey();
                                 String[] keys = key.split("__");
                                 String[] trtd = keys[1].split("_");
-                                if ( trs.size() > (Integer.parseInt(trtd[0]))) {
+                                if (trs.size() > (Integer.parseInt(trtd[0]))) {
                                     Element trData = trs.get(Integer.parseInt(trtd[0]));
                                     Elements tdDatas = trData.select("td");
                                     if (tdDatas.size() > Integer.parseInt(trtd[1])) {
@@ -1820,7 +1825,8 @@ public class ExcelTabController extends BladeController {
                                         cellRange.getCellStyle().getFont().setColor(Color.white);
                                     }
 
-                            }});
+                                }
+                            });
                         }
                     }
                 }
@@ -1980,10 +1986,10 @@ public class ExcelTabController extends BladeController {
                     resultMapList.add(reData);
                 }
             }
-        }else {
+        } else {
             WbsTreePrivate node = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodePrimaryKeyId));
             WbsTreePrivate tableNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery()
-                    .eq(WbsTreePrivate::getParentId, node.getId()).eq(WbsTreePrivate::getProjectId,node.getProjectId()));
+                    .eq(WbsTreePrivate::getParentId, node.getId()).eq(WbsTreePrivate::getProjectId, node.getProjectId()));
             Map<String, Object> reData = new HashMap<>();
             // 获取默认值
             QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
@@ -1999,7 +2005,6 @@ public class ExcelTabController extends BladeController {
         }
 
 
-
         return R.data(resultMapList);
     }
 
@@ -2739,12 +2744,27 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "id", value = "记录id-当做groupId", required = true)
     })
     public R<List<Map<String, Object>>> getBussDataInfoTrial(Long id, Long pkeyId) {
-        List<Map<String, Object>> bussDataInfoTrial = excelTabService.getBussDataInfoTrial(id, pkeyId );
+        List<Map<String, Object>> bussDataInfoTrial = excelTabService.getBussDataInfoTrial(id, pkeyId);
         return R.data(bussDataInfoTrial);
     }
 
+    @GetMapping("/get-buss-dataInfo-list-trial")
+    @ApiOperationSupport(order = 34)
+    @ApiOperation(value = "获取试验用户保存数据-施工关联试验数据", notes = "获取试验用户保存数据-施工关联试验数据")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "pkeyId", value = "表id", required = true),
+            @ApiImplicitParam(name = "id", value = "记录id-当做groupId", required = true)
+    })
+    public R<Map<String, Object>> getBussDataInfoListTrial(Long id, Long pkeyId) {
+        List<Map<String, Object>> bussDataInfoTrial = excelTabService.getBussDataInfoTrial(id, pkeyId);
+        Map<String, Object> map = bussDataInfoTrial.get(0);
+        map.remove("group_id");
+        return R.data(map);
+    }
+
     /**
      * 在线excel 修改回调
+     *
      * @throws IOException
      */
     @PostMapping(value = "/callbackSave")
@@ -2800,11 +2820,13 @@ public class ExcelTabController extends BladeController {
                     }
                 }
             }
-            redata.add(tdList) ;
+            if (tdList != null && tdList.size() >= 1) {
+                redata.add(tdList);
+            }
         }
 
         String[][] res = new String[redata.size()][]; // 存放转换结果的 二维数组
-        for(int i=0; i<res.length; i++){ // 转换方法
+        for (int i = 0; i < res.length; i++) { // 转换方法
             res[i] = redata.get(i).toArray(new String[redata.get(i).size()]);
         }
         return R.data(res);

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

@@ -240,14 +240,4 @@ public class ProjectInfoController extends BladeController {
         return R.data(result);
     }
 
-    /**
-     * 同步节点树基本信息到项目下的合同段
-     */
-    @PostMapping("/sync-node-info")
-    @ApiOperationSupport(order = 14)
-    @ApiOperation(value = "同步节点树基本信息到项目下的合同段", notes = "传入节点pKeyId")
-    public R<Object> syncNodeInfo(@RequestParam Long pKeyId) {
-        return R.status(wbsTreeService.syncNodeInfo(pKeyId));
-    }
-
 }

+ 9 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java

@@ -257,7 +257,7 @@ public class TextdictInfoController extends BladeController {
 
         String vmode = "formData." + keyname;
         if (textdictInfo.getTextId().equals("input")) { // 文本框
-            element.empty().append("<el-input type='text' @keyup.shift.up='keyupShiftUp' @keyup.shift.down='keyupShiftDown' @keyup.shift.left='keyupShiftLeft' @keyup.shift.right='keyupShiftRight' v-model=" + vmode + " placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%' > </el-input>");
+            element.empty().append("<el-input type='text'  @keyup.shift.up='keyupShiftUp' @keyup.shift.down='keyupShiftDown' @keyup.shift.left='keyupShiftLeft' @keyup.shift.right='keyupShiftRight' v-model=" + vmode + " placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%' > </el-input>");
         } else if (textdictInfo.getTextId().equals("textarea")) { // 文本域
             int rowspan = element.attr("ROWSPAN").equals("") ? 0 : Integer.parseInt(element.attr("ROWSPAN"));
             element.empty().append("<el-input :rows=" + rowspan * 2 + "  @keyup.shift.up='keyupShiftUp' @keyup.shift.down='keyupShiftDown' @keyup.shift.left='keyupShiftLeft' @keyup.shift.right='keyupShiftRight'  type='textarea' placeholder=" + placeholder + " v-model=" + vmode + "    keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'  > </el-input>");
@@ -294,22 +294,22 @@ public class TextdictInfoController extends BladeController {
                 element.empty().append(checkbox);
             }
         } else if (textdictInfo.getTextId().equals("date")) { // 日期--年月日时分秒
-            element.empty().append("<el-date-picker popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetime' format='YYYY年MM月DD日 HH:mm:ss' value-format='YYYY年MM月DD日 hh:mm:ss' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-date-picker>");
+            element.empty().append("<el-date-picker id='"+keyname+"' popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetime' format='YYYY年MM月DD日 HH:mm:ss' value-format='YYYY年MM月DD日 hh:mm:ss' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-date-picker>");
         } else if (textdictInfo.getTextId().equals("dateYMD")) { // 日期--年月日
-            element.empty().append("<el-date-picker popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='date' format='YYYY年MM月DD日' value-format='YYYY年MM月DD日' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-date-picker>");
+            element.empty().append("<el-date-picker id='"+keyname+"' popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='date' format='YYYY年MM月DD日' value-format='YYYY年MM月DD日' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-date-picker>");
         } else if (textdictInfo.getTextId().equals("dateHMS")) { // 日期--时分秒
-            element.empty().append("<el-time-picker popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='date' format='HH:mm:ss' value-format='HH:mm:ss' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-time-picker>");
+            element.empty().append("<el-time-picker id='"+keyname+"' popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='date' format='HH:mm:ss' value-format='HH:mm:ss' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-time-picker>");
         } else if (textdictInfo.getTextId().equals("dateSM")) { // 日期--时分
-            element.empty().append("<el-time-picker popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='date' format='HH:mm' value-format='HH:mm' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-time-picker>");
+            element.empty().append("<el-time-picker id='"+keyname+"' popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='date' format='HH:mm' value-format='HH:mm' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-time-picker>");
         } else if (textdictInfo.getTextId().equals("dateMDHM")) { // 日期--月日时分
-            element.empty().append("<el-date-picker popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetime' format='MM月DD日 HH:mm' value-format='MM月DD日 HH:mm' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-time-picker>");
+            element.empty().append("<el-date-picker id='"+keyname+"' popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetime' format='MM月DD日 HH:mm' value-format='MM月DD日 HH:mm' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-time-picker>");
         } else if (textdictInfo.getTextId().equals("dateDHM")) { // 日期--日时分
-            element.empty().append("<el-date-picker popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetime' format='DD日 HH:mm' value-format='DD日 HH:mm' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-time-picker>");
+            element.empty().append("<el-date-picker id='"+keyname+"' popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetime' format='DD日 HH:mm' value-format='DD日 HH:mm' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-time-picker>");
         } else if (textdictInfo.getTextId().equals("daterange")) { // 时间段
-            element.empty().append("<el-date-picker popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetimerange' placeholder=" + placeholder + "  start-placeholder='开始日期'  end-placeholder='结束日期' format='YYYY年MM月DD日' trIndex=" + trindex + " keyname=" + keyname + " weighing=" + weighing + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + ">");
+            element.empty().append("<el-date-picker id='"+keyname+"' popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetimerange' placeholder=" + placeholder + "  start-placeholder='开始日期'  end-placeholder='结束日期' format='YYYY年MM月DD日' trIndex=" + trindex + " keyname=" + keyname + " weighing=" + weighing + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + ">");
             element.children().get(0).attr("@change", "datePickerChange($event,'" + keyname + "')");
         } else if (textdictInfo.getTextId().equals("daterangeYMD")) { // 时间段 /
-            element.empty().append("<el-date-picker popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetimerange' range-separator='/' placeholder=" + placeholder + "  start-placeholder='开始日期'  end-placeholder='结束日期' format='YYYY年MM月DD日' trIndex=" + trindex + " keyname=" + keyname + " weighing=" + weighing + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + ">");
+            element.empty().append("<el-date-picker id='"+keyname+"' popper-class='hc-table-form-date-picker hc-form-id-"+keyname+"' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' v-model=" + vmode + " type='datetimerange' range-separator='/' placeholder=" + placeholder + "  start-placeholder='开始日期'  end-placeholder='结束日期' format='YYYY年MM月DD日' trIndex=" + trindex + " keyname=" + keyname + " weighing=" + weighing + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + ">");
             element.children().get(0).attr("@change", "datePickerChange($event,'" + keyname + "')");
 
         } else if (textdictInfo.getTextId().equals("img")) {

+ 34 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -1,7 +1,9 @@
 package org.springblade.manager.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.mixsmart.utils.StringUtils;
@@ -17,16 +19,15 @@ 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.BeanUtil;
 import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.manager.bean.TableInfo;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO3;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
-import org.springblade.manager.service.IProjectInfoService;
-import org.springblade.manager.service.IWbsFormElementService;
-import org.springblade.manager.service.IWbsTreePrivateService;
-import org.springblade.manager.service.IWbsTreeService;
+import org.springblade.manager.service.*;
 import org.springblade.manager.vo.*;
 import org.springblade.manager.wrapper.WbsTreePrivateWrapper;
 import org.springframework.beans.BeanUtils;
@@ -52,6 +53,7 @@ public class WbsTreePrivateController extends BladeController {
     private final IWbsTreeService wbsTreeService;
     private final IProjectInfoService projectInfoService;
     private final IWbsFormElementService wbsFormElementService;
+    private final IExcelTabService iExcelTabService;
 
     /**
      * 保存项目日志划分
@@ -317,13 +319,13 @@ public class WbsTreePrivateController extends BladeController {
         List<WbsNodeTableVO> rs = wbsTreePrivateService.selectByNodeTable(parentId, wbsId, projectId);
         if (rs.size() > 0) {
             for (WbsNodeTableVO r : rs) {
-                if (StringUtil.isBlank(r.getHtmlUrl())){
+                if (StringUtil.isBlank(r.getHtmlUrl())) {
                     r.setIsLinkTable(1);
                 }
                 if (StringUtil.isBlank(r.getInitTableId())) {
                     WbsTree wbsTree = wbsTreeService.getById(r.getId());
                     if (wbsTree != null) {
-                        r.setInitTableId(wbsTree.getInitTableId().toString());
+                        r.setInitTableId(com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotEmpty(wbsTree.getInitTableId()) ? wbsTree.getInitTableId().toString() : "");
                         r.setElementTotal(Math.toIntExact(wbsFormElementService.count(
                                 new LambdaQueryWrapper<WbsFormElement>().eq(WbsFormElement::getFId, r.getInitTableId()))));
                     }
@@ -495,6 +497,16 @@ public class WbsTreePrivateController extends BladeController {
         return R.status(wbsTreePrivateService.syncProjectEVisa(projectId));
     }
 
+    /**
+     * 同步节点树基本信息到项目下的合同段-包括同步表结构
+     */
+    @PostMapping("/sync-node-info")
+    @ApiOperationSupport(order = 14)
+    @ApiOperation(value = "同步节点树基本信息到项目下的合同段-包括同步表结构", notes = "传入节点pKeyId")
+    public R<Object> syncNodeInfo(@RequestParam Long pKeyId) {
+        return R.status(wbsTreeService.syncNodeInfo(pKeyId));
+    }
+
     /**
      * 同步项目下节点的元素表
      */
@@ -595,8 +607,21 @@ public class WbsTreePrivateController extends BladeController {
     @GetMapping("/search-node-tables")
     @ApiOperationSupport(order = 22)
     @ApiOperation(value = "试验-根据所属方查询当前节点表信息", notes = "传入节点primaryKeyId;所属方type=1施工,=2监理 ;表单类型tableType=1记录表、=2报告单; 合同段id;项目id;isAdd=是否新增;记录id")
-    public R<List<WbsTreePrivate>> searchNodeAllTable(String primaryKeyId, String type, String tableType, String contractId, String projectId, Integer isAdd, Long id) {
-        return R.data(wbsTreePrivateService.searchNodeAllTable(primaryKeyId, type, tableType, contractId, projectId, isAdd, id));
+    public R<List<WbsTreePrivateVO4>> searchNodeAllTable(String primaryKeyId, String type, String tableType, String contractId, String projectId, Integer isAdd, Long id) {
+        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateService.searchNodeAllTable(primaryKeyId, type, tableType, contractId, projectId, isAdd, id);
+        List<WbsTreePrivateVO4> list = new ArrayList<>();
+        //数据包装
+        for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
+            WbsTreePrivateVO4 wbsTreePrivateVO4 = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivateVO4.class);
+            List<Map<String, Object>> bussDataInfoTrial = iExcelTabService.getBussDataInfoTrial(id, wbsTreePrivate.getPKeyId());
+            if (wbsTreePrivateVO4 != null && bussDataInfoTrial.size() > 0) {
+                wbsTreePrivateVO4.setBussDataInfoTrial(bussDataInfoTrial.get(0));
+            }
+            list.add(wbsTreePrivateVO4);
+        }
+        return R.data(list);
+
+        //return R.data(wbsTreePrivateService.searchNodeAllTable(primaryKeyId, type, tableType, contractId, projectId, isAdd, id));
     }
 
     /**
@@ -614,6 +639,7 @@ public class WbsTreePrivateController extends BladeController {
 
     /**
      * 解決项目电签信息重复问题接口
+     *
      * @param pid 当前项目id
      * @return
      */

+ 7 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java

@@ -51,21 +51,23 @@ public class ExcelTabClientImpl implements ExcelTabClient {
         String nodeId = table.getString("nodeId");
         String projectId = table.getString("projectId");
         String contractId = table.getString("contractId");
+
         List<TableInfo> tableInfoList = this.excelTabService.getTableInfoList(dataArray);
 
         String pdfUrl = "";
 
-        //保存数据到数据库-试验,当前记录id作为groupId
+        //TODO ------入库-试验填报数据,当前记录id作为groupId------
         this.excelTabService.saveOrUpdateInfoTrial(tableInfoList, id);
+
+        //TODO ------公式填充------
         try {
-            //公式填充
             this.excelTabService.formulaFillData(tableInfoList, Long.parseLong(nodeId));
         } catch (Exception e) {
             e.printStackTrace();
         }
 
         if (isBatchSave == 0) {
-            //单表PDF保存
+            //TODO ------单表PDF保存------
             TableInfo tableInfo = tableInfoList.stream().findAny().orElse(null);
             assert tableInfo != null;
             if (tabIds.contains(tableInfo.getPkeyId())) {
@@ -113,7 +115,7 @@ public class ExcelTabClientImpl implements ExcelTabClient {
             }
 
         } else if (isBatchSave == 1) {
-            //多表PDF保存
+            //TODO ------多表PDF保存------
             pdfUrl = excelTabService.getBussPDFSTrial(nodeId,
                     tableType, //tableType=表类型 1=记录表 2=报告单
                     String.valueOf(type), //type=所属方 1=施工质检 2=监理抽检
@@ -123,7 +125,7 @@ public class ExcelTabClientImpl implements ExcelTabClient {
                     tabIds //新增的表的pKeyIds
             );
 
-            //修改原材料检测报告原始pdfUrl
+            //TODO ------修改原材料检测报告原始pdfUrl------
             String sql = "select id from u_trial_raw_material_self_record where self_record_id =" + id;
             TrialRawMaterialSelfRecord record = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TrialRawMaterialSelfRecord.class)).stream().findAny().orElse(null);
             if (ObjectUtil.isNotEmpty(record)) {

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

@@ -288,6 +288,7 @@
         d.is_deleted = 0
         AND d.status = 1
         AND d.type = 1
+        AND wbs_type = 1
         <if test="wbsId!=null and wbsId!=''">
             and wbs_id = #{wbsId}
         </if>

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

@@ -71,4 +71,7 @@ public interface ExcelTabMapper extends BaseMapper<ExcelTab> {
 	@Select("select trial_project_name from u_trial_self_inspection_record where id = #{id}")
     String selectTrialRecordOne(@Param("id") Long id);
 
+	@Select("select self_id from u_trial_self_quality_project where quality_node_id = #{nodeId}")
+	List<String> queryTrialRecordId(String nodeId);
+
 }

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

@@ -40,7 +40,7 @@ public interface TableFileMapper extends BaseMapper<TableFile> {
 	 */
 	List<TableFileVO> selectTableFilePage(IPage page, TableFileVO tableFile);
 
-	List<TableFileVO> selectTableFileList(Long pKid);
+	List<TableFileVO> selectTableFileList(String pKid);
 
 	void delDataById(String id, Long recordId);
 

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

@@ -136,7 +136,6 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
      */
     String getBussPDFSTrial(String nodeId, String tableType, String classify, String contractId, String projectId, Long id, String tabIds) throws Exception;
 
-
     /**
      * 保存 首件数据
      */
@@ -152,5 +151,5 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
     /**
      * 在线excel 保存回调
      */
-    ExcelEditCallback callbackSave(ExcelEditCallback callback) ;
+    ExcelEditCallback callbackSave(ExcelEditCallback callback);
 }

+ 19 - 19
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -135,24 +135,24 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     @Override
     public List<WbsTreeContractTreeAllVO> tree3(String contractId, Integer type) {
         List<WbsTreeContractTreeAllVO> wbsTreeContractVOS = baseMapper.tree5(Long.parseLong(contractId));
-        if (ObjectUtils.isNotEmpty(type) && type == 1) {
-            //获取所有已填报信息
-            Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
-            Set<String> keySet = allTable.keySet();
-            for (String key : keySet) {
-                for (WbsTreeContractTreeAllVO vo : wbsTreeContractVOS) {
-                    if (key.equals(vo.getId() + "")) {
-                        vo.setSubmitCounts(allTable.get(key));
-                        vo.setColorStatus(2);
-                    }
+//        if (ObjectUtils.isNotEmpty(type) && type == 1) {
+        //获取所有已填报信息
+        Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
+        Set<String> keySet = allTable.keySet();
+        for (String key : keySet) {
+            for (WbsTreeContractTreeAllVO vo : wbsTreeContractVOS) {
+                if (key.equals(vo.getId() + "")) {
+                    vo.setSubmitCounts(allTable.get(key));
+                    vo.setColorStatus(2);
                 }
             }
-            wbsTreeContractVOS.stream().forEach(wtc -> {
-                if (wtc.getSubmitCounts() == null) {
-                    wtc.setSubmitCounts(0L);
-                }
-            });
         }
+        wbsTreeContractVOS.stream().forEach(wtc -> {
+            if (wtc.getSubmitCounts() == null) {
+                wtc.setSubmitCounts(0L);
+            }
+        });
+//        }
         return buildWbsTreeByStreamByTreeAll(wbsTreeContractVOS);
     }
 
@@ -485,10 +485,10 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     @Override
     public Map<String, Object> trialRelationTree(String wbsId, String projectId, String contractId, String selfId) {
         //合同段树
-        List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId), null, null, null);
+        List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(null, Long.parseLong(projectId), Long.parseLong(contractId), null, null, null);
         List<WbsTreeContractVO> wbsTreeContractVOList = buildWbsTreeByStream(wbsTreeContractVOS);
         //是否勾选-试验关联工程部位信息
-        List<String> listResult = new ArrayList<>();
+        /*List<String> listResult = new ArrayList<>();
         if (StringUtils.isNotEmpty(selfId)) {
             List<String> list = baseMapper.queryList(selfId);
             if (list.size() > 0) {
@@ -500,10 +500,10 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
                     }
                 }
             }
-        }
+        }*/
         Map<String, Object> maps = new HashMap<>();
         maps.put("treeContractAll", wbsTreeContractVOList);
-        maps.put("isSelectedStatus", listResult.stream().distinct().collect(Collectors.toList()));
+        //maps.put("isSelectedStatus", listResult.stream().distinct().collect(Collectors.toList()));
         return maps;
     }
 

+ 32 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -42,6 +42,7 @@ import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.springblade.business.entity.InformationQuery;
+import org.springblade.business.entity.TrialSelfInspectionRecord;
 import org.springblade.business.feign.ContractLogClient;
 import org.springblade.business.feign.InformationQueryClient;
 import org.springblade.business.feign.OperationLogClient;
@@ -945,7 +946,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 for (Element element : bhtitle) {
                     int trindex = Integer.parseInt(element.attr("trindex"));
                     if (trindex <= 10) {
-                        reData.put(element.attr("keyName"), node.getPartitionCode()==null?"":node.getPartitionCode());
+                        reData.put(element.attr("keyName"), node.getPartitionCode() == null ? "" : node.getPartitionCode());
                     }
                 }
             }
@@ -1053,7 +1054,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     @Override
     public R getBussPdfInfo(Long pkeyId) throws Exception {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-       // String file_path = "/Users/hongchuangyanfa/Desktop/";
+        //String file_path = "/Users/hongchuangyanfa/Desktop/";
 
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
@@ -1114,13 +1115,12 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 newStyle.cloneStyleFrom(cell.getCellStyle());
 
 
-
                 short fontHeightInPoints = redFont.getFontHeightInPoints();
-                if (fontHeightInPoints >= 14 && StringUtils.isEmpty(cell.getStringCellValue()) && fisRow<=8) {
+                if (fontHeightInPoints >= 14 && StringUtils.isEmpty(cell.getStringCellValue()) && fisRow <= 8) {
 
-                    String title=projectInfo.getProjectName();
-                    if(title.length()>=30){
-                        sheet.getRow(fisRow).setHeight((short)900);
+                    String title = projectInfo.getProjectName();
+                    if (title.length() >= 30) {
+                        sheet.getRow(fisRow).setHeight((short) 900);
                         newStyle.setWrapText(true);
                     }
                     redFont.setBold(true);
@@ -1147,7 +1147,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         if (val.indexOf("__") >= 0) {
                             String[] DataVal = val.split("__");
                             String[] xy = DataVal[1].split("_");
-                            if (Integer.parseInt(xy[0])<trs.size()) {
+                            if (Integer.parseInt(xy[0]) < trs.size()) {
                                 Element ytzData = trs.get(Integer.parseInt(xy[0]));
                                 if (ytzData != null) {
                                     Elements tdsx = ytzData.select("td");
@@ -1258,11 +1258,11 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         String key = e.getColKey();
                         String[] keys = key.split("__");
                         String[] trtd = keys[1].split("_");
-                        if (Integer.parseInt(trtd[0])<trs.size()) {
+                        if (Integer.parseInt(trtd[0]) < trs.size()) {
                             Element ytzData = trs.get(Integer.parseInt(trtd[0]));
                             if (ytzData != null) {
                                 Elements tdsx = ytzData.select("td");
-                                if (Integer.parseInt(trtd[1])<tdsx.size()) {
+                                if (Integer.parseInt(trtd[1]) < tdsx.size()) {
                                     Element data = ytzData.select("td").get(Integer.parseInt(trtd[1]));
                                     int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
                                     if (x1 == 0) {
@@ -1381,6 +1381,24 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         if (tabpdf2.exists()) {
             tabpdf2.delete();
         }
+
+        //TODO ------ 试验pdf关联部位工程及信息 liuYC 2023-03-13 ------
+        //获取试验记录id
+        List<String> recordIds = baseMapper.queryTrialRecordId(nodeId).stream().distinct().collect(Collectors.toList());
+        if (recordIds.size() > 0) {
+            String recordInfoSql = "select detection_category,detection_result,task_status,pdf_url from u_trial_self_inspection_record where id in(" + StringUtils.join(recordIds, ",") + ")";
+            List<TrialSelfInspectionRecord> query = jdbcTemplate.query(recordInfoSql, new BeanPropertyRowMapper<>(TrialSelfInspectionRecord.class));
+            if (query.size() > 0) {
+                //只获取已审批合格自检记录,追加试验pdf到质检后面
+                List<String> pdfUrlsTrail = query.stream().filter(f -> ("已审批").equals(f.getTaskStatus())
+                        && (new Integer(1).equals(f.getDetectionResult()))
+                        && (new Integer(1).equals(f.getDetectionCategory()))).map(TrialSelfInspectionRecord::getPdfUrl).collect(Collectors.toList());
+                if (pdfUrlsTrail.size() > 0) {
+                    data.addAll(pdfUrlsTrail);
+                }
+            }
+        }
+
         FileUtils.mergePdfPublicMethods(data, listPdf);
         BladeFile bladeFile = this.newIOSSClient.uploadFile(nodeId + ".pdf", listPdf);
 
@@ -1388,13 +1406,13 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, nodeId));
 
         // 获取顺序
-        int sort =0;
-        if(ObjectUtil.isNotEmpty(wbsTreeContract)){
-            if(wbsTreeContract.getSort()!=null){
+        int sort = 0;
+        if (ObjectUtil.isNotEmpty(wbsTreeContract)) {
+            if (wbsTreeContract.getSort() != null) {
                 sort = wbsTreeContract.getSort();
             }
         }
-        String sql = "update u_information_query set pdf_url ='" + bladeFile.getLink() + "' ,sort = "+ sort +" where classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "' ";
+        String sql = "update u_information_query set pdf_url ='" + bladeFile.getLink() + "' ,sort = " + sort + " where classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "' ";
         jdbcTemplate.execute(sql);
     }
 

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

@@ -42,7 +42,7 @@ public class TableFileServiceImpl extends ServiceImpl<TableFileMapper, TableFile
 
     @Override
     public List<TableFileVO> selectTableFileList(Long pKid) {
-        return baseMapper.selectTableFileList(pKid);
+        return baseMapper.selectTableFileList(pKid+"");
     }
 
     @Override

+ 70 - 20
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -457,10 +457,44 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         List<WbsTreePrivate> listPrivate = new ArrayList<>();
         List<WbsTreeContract> listContract = new ArrayList<>();
         //获取当前项目下所有合同段信息
-        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().select(ContractInfo::getId).eq(ContractInfo::getPId, projectId));
+        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().select(ContractInfo::getId, ContractInfo::getContractType).eq(ContractInfo::getPId, projectId));
+        List<Long> contractInfosIds = contractInfos.stream().filter(f -> 1 == f.getContractType()).map(ContractInfo::getId).collect(Collectors.toList());
+
+        Map<Long, WbsTreePrivate> maps = wbsTreePrivatesAllNow.stream().collect(Collectors.toMap(WbsTreePrivate::getId, Function.identity()));
 
         for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
-            for (WbsTreePrivate treePrivateNow : wbsTreePrivatesAllNow) {
+            WbsTreePrivate treePrivateNow = maps.get(wbsTreePrivate.getId());
+            if (treePrivateNow != null) {
+                if (!wbsTreePrivate.getNodeName().equals(treePrivateNow.getNodeName())
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getNodeType()) && !wbsTreePrivate.getNodeType().equals(treePrivateNow.getNodeType()))
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getMajorDataType()) && !wbsTreePrivate.getMajorDataType().equals(treePrivateNow.getMajorDataType()))
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getTableType()) && !wbsTreePrivate.getTableType().equals(treePrivateNow.getTableType()))
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getTableOwner()) && !wbsTreePrivate.getTableOwner().equals(treePrivateNow.getTableOwner()))
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getImportMatchingInfo()) && !wbsTreePrivate.getImportMatchingInfo().equals(treePrivateNow.getImportMatchingInfo()))
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds()) && !wbsTreePrivate.getMixRatioTestIds().equals(treePrivateNow.getMixRatioTestIds()))
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableId()) && !wbsTreePrivate.getInitTableId().equals(treePrivateNow.getInitTableId()))
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableName()) && !wbsTreePrivate.getInitTableName().equals(treePrivateNow.getInitTableName())
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getHtmlUrl()) && !wbsTreePrivate.getHtmlUrl().equals(treePrivateNow.getHtmlUrl())))) {
+                    //修改项目wbs信息
+                    WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
+                    if (wbsPrivate != null) {
+                        wbsPrivate.setWbsId(wbsId);
+                        wbsPrivate.setProjectId(projectId);
+                        listPrivate.add(wbsPrivate);
+                    }
+                    for (Long id : contractInfosIds) {
+                        //修改合同段wbs信息
+                        WbsTreeContract wbsContract = BeanUtil.copyProperties(wbsTreePrivate, WbsTreeContract.class);
+                        if (wbsContract != null) {
+                            wbsContract.setContractId(id.toString());
+                            wbsContract.setProjectId(projectId);
+                            listContract.add(wbsContract);
+                        }
+                    }
+                }
+            }
+
+           /*for (WbsTreePrivate treePrivateNow : wbsTreePrivatesAllNow) {
                 //判断相同节点基础信息、元素表类型、元素表所属方 是否发生改变
                 if (wbsTreePrivate.getId().equals(treePrivateNow.getId()) &&
                         (!wbsTreePrivate.getNodeName().equals(treePrivateNow.getNodeName())
@@ -490,7 +524,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         }
                     }
                 }
-            }
+            }*/
         }
 
         //修改到项目
@@ -500,9 +534,11 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
         //修改到合同段
         if (listContract.size() > 0) {
-            //获取合同段下的复制、新增节点
-            List<WbsTreeContract> wbsTreeContractsCopyOrAddAll = new ArrayList<>();
-            for (ContractInfo contractInfo : contractInfos) {
+            //获取当前项目下所有合同段下的复制、新增节点
+            String sql = "select id,old_id,project_id,contract_id from m_wbs_tree_contract where project_id = " + projectId + " and contract_id in(" + org.apache.commons.lang.StringUtils.join(contractInfosIds, ",") + ") and wbs_type = " + wbsType + " and type = 1 and status = 1 and is_deleted = 0 and old_id is not null";
+            List<WbsTreeContract> wbsTreeContractsCopyOrAddAll = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            Map<String, List<WbsTreeContract>> copyAddNodes = wbsTreeContractsCopyOrAddAll.stream().collect(Collectors.groupingBy(WbsTreeContract::getOldId));
+            /*for (ContractInfo contractInfo : contractInfos) {
                 List<WbsTreeContract> wbsTreeContractsCopyOrAdd = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
                         .select(WbsTreeContract::getId, WbsTreeContract::getOldId, WbsTreeContract::getProjectId, WbsTreeContract::getContractId)
                         .eq(WbsTreeContract::getProjectId, projectId)
@@ -512,13 +548,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         .isNotNull(WbsTreeContract::getOldId)
                 );
                 wbsTreeContractsCopyOrAddAll.addAll(wbsTreeContractsCopyOrAdd);
-            }
+            }*/
 
             List<WbsTreeContract> listContractAdd = new ArrayList<>();
-
             for (WbsTreeContract obj1 : listContract) {
-                for (WbsTreeContract obj2 : wbsTreeContractsCopyOrAddAll) {
-                    if (obj1.getId().toString().equals(obj2.getOldId()) && obj1.getProjectId().equals(obj2.getProjectId()) && obj1.getContractId().equals(obj2.getContractId())) {
+                List<WbsTreeContract> copyAddNodesNow = copyAddNodes.get(obj1.getId().toString());
+                if (copyAddNodesNow.size() > 0) {
+                    WbsTreeContract obj2 = copyAddNodesNow.stream().filter(f -> f.getContractId().equals(obj1.getContractId()) && f.getProjectId().equals(obj1.getProjectId())).findAny().orElse(null);
+                    if (obj2 != null) {
                         obj2.setNodeName(obj1.getNodeName());
                         obj2.setNodeType(obj1.getNodeType());
                         obj2.setMajorDataType(obj1.getMajorDataType());
@@ -528,6 +565,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         listContractAdd.add(obj2);
                     }
                 }
+                /*for (WbsTreeContract obj2 : wbsTreeContractsCopyOrAddAll) {
+                    if (obj1.getId().toString().equals(obj2.getOldId()) && obj1.getProjectId().equals(obj2.getProjectId()) && obj1.getContractId().equals(obj2.getContractId())) {
+                        obj2.setNodeName(obj1.getNodeName());
+                        obj2.setNodeType(obj1.getNodeType());
+                        obj2.setMajorDataType(obj1.getMajorDataType());
+                        obj2.setTableType(obj1.getTableType());
+                        obj2.setTableOwner(obj1.getTableOwner());
+                        obj2.setHtmlUrl(obj1.getHtmlUrl());
+                        listContractAdd.add(obj2);
+                    }
+                }*/
             }
 
             listContractAdd.addAll(listContract);
@@ -1102,7 +1150,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
                             dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
                             dataPrivate.setFullName(dataPrivate.getNodeName());
-                            dataPrivate.setInitTableId(tree.getInitTableId().toString());
+                            dataPrivate.setInitTableId(ObjectUtils.isNotEmpty(tree.getInitTableId()) ? tree.getInitTableId().toString() : null);
                             //新增
                             insertDataPrivateList.add(dataPrivate);
 
@@ -1226,7 +1274,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             dataPrivate.setWbsId(wbsTreePrivate.getWbsId());
                             dataPrivate.setWbsType(tree.getWbsType());
                             dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
-                            dataPrivate.setInitTableId(tree.getInitTableId());
+                            dataPrivate.setInitTableId(ObjectUtils.isNotEmpty(tree.getInitTableId()) ? tree.getInitTableId() : null);
 
                             insertDataPrivateList.add(dataPrivate);
 
@@ -1357,10 +1405,11 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 for (WbsTreePrivate wbsTreePrivate : collect1) {
                     if (wbsTreePrivate.getType() == 2) {
                         WbsTreePrivate obj = nowNodeTreeAll.get(wbsTreePrivate.getParentId());
-                        assert obj != null;
-                        List<TextdictInfo> textDictInfos = collect3.get(String.valueOf(wbsTreePrivate.getPKeyId()));
-                        if (textDictInfos != null && textDictInfos.size() > 0) {
-                            textDictInfoData.put(wbsTreePrivate.getId(), textDictInfos);
+                        if (obj != null) {
+                            List<TextdictInfo> textDictInfos = collect3.get(String.valueOf(wbsTreePrivate.getPKeyId()));
+                            if (textDictInfos != null && textDictInfos.size() > 0) {
+                                textDictInfoData.put(wbsTreePrivate.getId(), textDictInfos);
+                            }
                         }
                     }
 
@@ -1385,10 +1434,11 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     if (textDictInfos != null) {
                         for (TextdictInfo textdictInfo : textDictInfos) {
                             TextdictInfo obj = BeanUtil.copyProperties(textdictInfo, TextdictInfo.class);
-                            assert obj != null;
-                            obj.setId(SnowFlakeUtil.getId());
-                            obj.setTabId(tree.getPKeyId().toString()); //重新赋值绑定到对应的表上
-                            insertData.add(obj);
+                            if (obj != null) {
+                                obj.setId(SnowFlakeUtil.getId());
+                                obj.setTabId(tree.getPKeyId().toString()); //重新赋值绑定到对应的表上
+                                insertData.add(obj);
+                            }
                         }
                     }
                 });

+ 130 - 191
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -205,89 +205,90 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
             List<Map<String, String>> result2 = WbsExcelBatchUtil.deepCopy(result);
             List<Map<String, String>> maps = WbsExcelBatchUtil.removeRepeatMapByKey(result, "表名");
-            assert maps != null;
-            List<WbsTreeBatchImportDTO> list = new ArrayList<>();
-
-            //初始化
-            wbsTree.setTenantId(wbsTree.getTenantId());
-            wbsTree.setNodeType(1);
-            wbsTree.setWbsId(wbsTree.getWbsId());
-            wbsTree.setParentId(wbsTree.getId());
-            String ancestors = wbsTree.getAncestors() + StringPool.COMMA + wbsTree.getId();
-            wbsTree.setAncestors(ancestors);
-            wbsTree.setType(2);
-            wbsTree.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-            wbsTree.setStatus(1);
-
-            maps.forEach(map -> {
-                String tabName = map.get("表名");
-                wbsTree.setNodeName(tabName);
-                wbsTree.setTableType(WbsElementUtil.getTableType(map.get("表类型")));
-                Long id = SnowFlakeUtil.getId();
-                String initTableName = "m_" + DateUtil.time() + "_" + id;
-                wbsTree.setInitTableName(initTableName);
-                wbsTree.setId(id);
-                if (StringUtils.isEmpty(wbsTree.getFillRate())) {
-                    wbsTree.setFillRate("80%");
-                }
-                //新增表单
-                boolean b = submit3(wbsTree);
+            if (maps != null) {
+                List<WbsTreeBatchImportDTO> list = new ArrayList<>();
+                //初始化
+                wbsTree.setTenantId(wbsTree.getTenantId());
+                wbsTree.setNodeType(1);
+                wbsTree.setWbsId(wbsTree.getWbsId());
+                wbsTree.setParentId(wbsTree.getId());
+                String ancestors = wbsTree.getAncestors() + StringPool.COMMA + wbsTree.getId();
+                wbsTree.setAncestors(ancestors);
+                wbsTree.setType(2);
+                wbsTree.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+                wbsTree.setStatus(1);
+
+                maps.forEach(map -> {
+                    String tabName = map.get("表名");
+                    wbsTree.setNodeName(tabName);
+                    wbsTree.setTableType(WbsElementUtil.getTableType(map.get("表类型")));
+                    Long id = SnowFlakeUtil.getId();
+                    String initTableName = "m_" + DateUtil.time() + "_" + id;
+                    wbsTree.setInitTableName(initTableName);
+                    wbsTree.setId(id);
+                    if (StringUtils.isEmpty(wbsTree.getFillRate())) {
+                        wbsTree.setFillRate("80%");
+                    }
+                    //新增表单
+                    boolean b = submit3(wbsTree);
 
-                if (b) {
-                    //新增实体表
-                    initTable(initTableName);
+                    if (b) {
+                        //新增实体表
+                        initTable(initTableName);
 
-                    WbsTreeBatchImportDTO wbsTreeBatchImportDTO = new WbsTreeBatchImportDTO();
-                    wbsTreeBatchImportDTO.setId(id);
-                    wbsTreeBatchImportDTO.setTableName(tabName);
-                    wbsTreeBatchImportDTO.setInitTableName(initTableName);
-                    list.add(wbsTreeBatchImportDTO);
+                        WbsTreeBatchImportDTO wbsTreeBatchImportDTO = new WbsTreeBatchImportDTO();
+                        wbsTreeBatchImportDTO.setId(id);
+                        wbsTreeBatchImportDTO.setTableName(tabName);
+                        wbsTreeBatchImportDTO.setInitTableName(initTableName);
+                        list.add(wbsTreeBatchImportDTO);
 
-                }
-            });
-
-            //新增元素
-            list.forEach(i -> {
-                Long elementTableId = i.getId();
-                String tableName = i.getTableName();
-                String initTableName = i.getInitTableName();
-                final int[] keyNumb = {0};
-
-                result2.forEach(map -> {
-                    if (tableName.equals(map.get("表名"))) {
-                        keyNumb[0]++;
-                        WbsFormElement wbsFormElement = new WbsFormElement();
-                        wbsFormElement.setEName(map.get("字段名"));
-                        String key = "key_" + keyNumb[0];
-                        wbsFormElement.setEKey(key);
-                        wbsFormElement.setFId(String.valueOf(elementTableId));
-                        wbsFormElement.setELength(WbsElementUtil.getElementLength(map.get("数据类型")));
-                        wbsFormElement.setEType(WbsElementUtil.getElementType(map.get("数据类型")));
-                        wbsFormElement.setEInspectionMethod(map.get("计算公式、方法或数值"));
-                        wbsFormElement.setEAllowDeviation(map.get("允许偏差范围"));
-                        wbsFormElement.setRemark(map.get("备注"));
-
-                        wbsFormElementService.save(wbsFormElement);
-
-                        baseMapper.alterTableFiled(initTableName, wbsFormElement.getEKey(), "varchar", WbsFormElementServiceImpl.DEFAULT_ELEMENT_LENGTH_VARCHAR);
                     }
-
                 });
-            });
-            return true;
 
+                //新增元素
+                list.forEach(i -> {
+                    Long elementTableId = i.getId();
+                    String tableName = i.getTableName();
+                    String initTableName = i.getInitTableName();
+                    final int[] keyNumb = {0};
+
+                    result2.forEach(map -> {
+                        if (tableName.equals(map.get("表名"))) {
+                            keyNumb[0]++;
+                            WbsFormElement wbsFormElement = new WbsFormElement();
+                            wbsFormElement.setEName(map.get("字段名"));
+                            String key = "key_" + keyNumb[0];
+                            wbsFormElement.setEKey(key);
+                            wbsFormElement.setFId(String.valueOf(elementTableId));
+                            wbsFormElement.setELength(WbsElementUtil.getElementLength(map.get("数据类型")));
+                            wbsFormElement.setEType(WbsElementUtil.getElementType(map.get("数据类型")));
+                            wbsFormElement.setEInspectionMethod(map.get("计算公式、方法或数值"));
+                            wbsFormElement.setEAllowDeviation(map.get("允许偏差范围"));
+                            wbsFormElement.setRemark(map.get("备注"));
+
+                            wbsFormElementService.save(wbsFormElement);
+
+                            baseMapper.alterTableFiled(initTableName, wbsFormElement.getEKey(), "varchar", WbsFormElementServiceImpl.DEFAULT_ELEMENT_LENGTH_VARCHAR);
+                        }
+
+                    });
+                });
+                return true;
+            }
         } catch (
                 IOException | ClassNotFoundException e) {
             throw new ServiceException("操作失败,请上传正确模板内容");
         } finally {
-            assert canonicalPath != null;
-            File file2 = new File(canonicalPath);
-            if (file2.isFile() && file2.exists()) {
-                if (file2.delete()) {
-                    System.gc();
+            if (canonicalPath != null){
+                File file2 = new File(canonicalPath);
+                if (file2.isFile() && file2.exists()) {
+                    if (file2.delete()) {
+                        System.gc();
+                    }
                 }
             }
         }
+        return false;
     }
 
     @Override
@@ -326,73 +327,74 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         //获取当前项目引用
         String sql = "select reference_wbs_template_id,reference_wbs_template_type,reference_wbs_template_id_trial,reference_wbs_template_type_trial from m_project_info where id = " + wbsTreePrivate.getProjectId();
         ProjectInfo projectInfo = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ProjectInfo.class)).stream().findAny().orElse(null);
-        assert projectInfo != null;
-        if (("1").equals(wbsTreePrivate.getWbsType())) {
-            //质检公有
-            if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))) {
-                //获取公有树
-                List<WbsTree> wbsTreeListAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTree::getType, 1).eq(WbsTree::getStatus, 1));
-                //获取项目私节点、元素表
-                List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getStatus, 1));
-                //同步修改
-                this.updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
-
-                //质检私有
-            } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("private").equals(projectInfo.getReferenceWbsTemplateType())) {
-                //获取私有引用根节点
-                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId)
-                        .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
-                //获取私有引用项目树
-                List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
-                        .eq(WbsTreePrivate::getStatus, 1)
-                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivateRecord.getProjectId()))
-                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivateRecord.getWbsId())).or().isNull(WbsTreePrivate::getWbsId))
-                );
-                //获取当前项目私有树、元素表
-                List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
-                        .eq(WbsTreePrivate::getStatus, 1)
-                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
-                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).or().isNull(WbsTreePrivate::getWbsId))
-                );
-                //同步修改
-                this.updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateId().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
-            }
+        if (projectInfo != null) {
+            if (("1").equals(wbsTreePrivate.getWbsType())) {
+                //质检公有
+                if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))) {
+                    //获取公有树
+                    List<WbsTree> wbsTreeListAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTree::getType, 1).eq(WbsTree::getStatus, 1));
+                    //获取项目私节点、元素表
+                    List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getStatus, 1));
+                    //同步修改
+                    this.updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+
+                    //质检私有
+                } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("private").equals(projectInfo.getReferenceWbsTemplateType())) {
+                    //获取私有引用根节点
+                    WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                            .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId)
+                            .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
+                    //获取私有引用项目树
+                    List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                            .eq(WbsTreePrivate::getStatus, 1)
+                            .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivateRecord.getProjectId()))
+                            .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivateRecord.getWbsId())).or().isNull(WbsTreePrivate::getWbsId))
+                    );
+                    //获取当前项目私有树、元素表
+                    List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                            .eq(WbsTreePrivate::getStatus, 1)
+                            .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
+                            .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).or().isNull(WbsTreePrivate::getWbsId))
+                    );
+                    //同步修改
+                    this.updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateId().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+                }
 
-        } else if (("2").equals(wbsTreePrivate.getWbsType())) {
-            //试验公有
-            if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
+            } else if (("2").equals(wbsTreePrivate.getWbsType())) {
+                //试验公有
+                if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
 
-                List<WbsTree> wbsTreeListAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTree::getType, 1).eq(WbsTree::getStatus, 1));
+                    List<WbsTree> wbsTreeListAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTree::getType, 1).eq(WbsTree::getStatus, 1));
 
-                List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getStatus, 1));
+                    List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getStatus, 1));
 
-                this.updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+                    this.updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
 
-                //试验私有
-            } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
+                    //试验私有
+                } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
 
-                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId)
-                        .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()));
+                    WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                            .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId)
+                            .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()));
 
-                List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
-                        .eq(WbsTreePrivate::getStatus, 1)
-                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
-                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivateRecord.getWbsId())).or().isNull(WbsTreePrivate::getWbsId))
-                );
+                    List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                            .eq(WbsTreePrivate::getStatus, 1)
+                            .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
+                            .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivateRecord.getWbsId())).or().isNull(WbsTreePrivate::getWbsId))
+                    );
 
-                List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
-                        .eq(WbsTreePrivate::getStatus, 1)
-                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
-                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateIdTrial()).or().isNull(WbsTreePrivate::getWbsId))
-                );
+                    List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                            .eq(WbsTreePrivate::getStatus, 1)
+                            .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
+                            .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateIdTrial()).or().isNull(WbsTreePrivate::getWbsId))
+                    );
 
-                this.updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateIdTrial().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+                    this.updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateIdTrial().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+                }
             }
         }
         return true;
@@ -919,69 +921,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
     }
 
-    @Async
-    public boolean insertTextDictInfoAsync(List<WbsTreePrivate> wbsTreePrivateOldTables, List<WbsTreePrivate> wbsTreePrivateNewTables) {
-        //wbsTreePrivateOldTables=原始引用的元素表+独立表 wbsTreePrivateNewTables=现在项目树的元素表+独立表
-        Map<Long, List<TextdictInfo>> textDictInfoData = new HashMap<>();
-        if (wbsTreePrivateOldTables.size() > 0) {
-            //只同步了独立库的元素表电签信息,type=2以前的节点下同步形式,现在type=10为独立库
-            List<Long> pIdsDL = wbsTreePrivateOldTables.stream().filter(f -> f.getType().equals(10) || f.getType().equals(2)).collect(Collectors.toList()).stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
-            String ids = StringUtils.join(pIdsDL, ",");
-            String sql = "select `id`,`name`,`type`,tab_id,col_key,sig_role_id,is_deleted,sig_role_name,col_name,pyzbx,pyzby from m_textdict_info where tab_id in (" + ids + ") and is_deleted = 0";
-            List<TextdictInfo> textDictInfos = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TextdictInfo.class));
-
-            for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateOldTables) {
-                //私有引用-电签匹配数据、默认信息数据,根据元素表pKeyId,获取电签位置匹配信息、编辑默认信息
-                List<TextdictInfo> collect = textDictInfos.stream().filter(f -> f.getTabId().equals(String.valueOf(wbsTreePrivate.getPKeyId()))).collect(Collectors.toList());
-                if (collect.size() > 0) {
-                    textDictInfoData.put(wbsTreePrivate.getId(), collect);
-                }
-            }
-        }
-
-        if (textDictInfoData.size() > 0) {
-            //同步电签配置信息 构造电签位置配置信息、编辑默认信息数据
-            List<TextdictInfo> insertData = new ArrayList<>();
-            for (WbsTreePrivate wbsTreePrivateNewTable : wbsTreePrivateNewTables) {
-                textDictInfoData.forEach((k, v) -> {
-                    if (wbsTreePrivateNewTable.getId().equals(k)) {
-                        for (TextdictInfo textdictInfo : v) {
-                            TextdictInfo obj = BeanUtil.copyProperties(textdictInfo, TextdictInfo.class);
-                            assert obj != null;
-                            obj.setTabId(String.valueOf(wbsTreePrivateNewTable.getPKeyId()));
-                            obj.setId(SnowFlakeUtil.getId());
-                            insertData.add(obj);
-                        }
-                    }
-                });
-            }
-
-            //判断是否存在
-            List<Long> pIdsDLNew = wbsTreePrivateNewTables.stream().filter(f -> f.getType().equals(10) || f.getType().equals(2)).collect(Collectors.toList()).stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
-            String ids = StringUtils.join(pIdsDLNew, ",");
-            String sql = "select `id`,`name`,`type`,tab_id,col_key,sig_role_id,is_deleted,sig_role_name,col_name,pyzbx,pyzby from m_textdict_info where tab_id in (" + ids + ") and is_deleted = 0";
-            List<TextdictInfo> textDictInfosNew = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TextdictInfo.class));
-
-            Iterator<TextdictInfo> iterator = insertData.iterator();
-            while (iterator.hasNext()) {
-                TextdictInfo textDictInfo = iterator.next();
-                textDictInfosNew.stream().filter(f ->
-                        //判断每张表TabId的每个位置ColKey、类型Type唯一
-                        f.getColKey().equals(textDictInfo.getColKey())
-                                && f.getType().equals(textDictInfo.getType())
-                                && f.getTabId().equals(textDictInfo.getTabId())
-                ).findAny().ifPresent(textDict -> iterator.remove());
-            }
-
-            if (insertData.size() > 0) {
-                textDictInfoService.insertBatch(insertData, 1000);
-            }
-
-            return true;
-        }
-        return false;
-    }
-
     @Override
     public WbsTreeAllListVO findWbsTreeList(Integer type) {
         WbsTreeAllListVO wbsTreeAllListVO = new WbsTreeAllListVO();