Selaa lähdekoodia

Merge branch 'master' of http://39.108.216.210:3000/zhuwei/bladex

huangtf 5 kuukautta sitten
vanhempi
commit
1bd5e76ab7
52 muutettua tiedostoa jossa 754 lisäystä ja 59 poistoa
  1. 23 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/ImportTreeDto.java
  2. 38 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/ReSigningEntrustDto.java
  3. 3 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/EntrustInfo.java
  4. 6 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TrialSampleInfo.java
  5. 19 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/EntrustInfoServiceClient.java
  6. 3 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/EntrustInfoVO.java
  7. 17 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto1.java
  8. 13 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto2.java
  9. 13 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto3.java
  10. 16 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FileNameRuleDto.java
  11. 17 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/NameRuleDto.java
  12. 19 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ParameterElementDTO1.java
  13. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractInfo.java
  14. 7 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsParam.java
  15. 4 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClient.java
  16. 6 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClientFallBack.java
  17. 21 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/NameRuleVo.java
  18. 13 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/NameRuleVo1.java
  19. 9 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ParameterElementVO2.java
  20. 11 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ParameterElementVo1.java
  21. 9 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ProjectInfoVO1.java
  22. 5 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ProjectInfoVO3.java
  23. 10 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TitleRangeVo.java
  24. 8 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsParamVo2.java
  25. 1 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO.java
  26. 72 16
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  27. 27 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  28. 20 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/EntrustInfoServiceClientImpl.java
  29. 11 9
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/EntrustInfoMapper.xml
  30. 3 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java
  31. 16 10
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/EntrustInfoServiceImpl.java
  32. 114 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  33. 3 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java
  34. 50 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  35. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  36. 12 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsParamController.java
  37. 22 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java
  38. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/injector/EasyBaseMapper.java
  39. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.java
  40. 13 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.xml
  41. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java
  42. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  43. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java
  44. 2 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsParamService.java
  45. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  46. 10 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  47. 29 16
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  48. 22 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  49. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java
  50. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  51. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  52. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

+ 23 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/ImportTreeDto.java

@@ -0,0 +1,23 @@
+package org.springblade.business.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ImportTreeDto {
+    private String unitName;//单位工程名称
+    private String unitCode; // 单位工程编号
+    private String subUnitName; // 子单位工程名称
+    private String subUnitCode; // 子单位工程编号
+    private String divisionName; // 分部工程名称
+    private String divisionCode; // 分部工程编号
+    private String subDivisionName; // 子分部工程名称
+    private String subDivisionCode; // 子分部工程编号
+    private String itemName; // 分项工程名称
+    private String itemCode; // 分项工程编号
+    private String subItemName;  // 子分项工程名称
+    private String subItemCode;// 子分项工程编号
+}

+ 38 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/ReSigningEntrustDto.java

@@ -0,0 +1,38 @@
+package org.springblade.business.dto;
+
+import lombok.Data;
+
+@Data
+public class ReSigningEntrustDto {
+    /**
+     * 委托id
+     */
+    private String entrustId;
+    /**
+     * 任务id
+     */
+    private String taskId;
+    /**
+     * 合同id
+     */
+    private String contractId;
+    /**
+     * 节点id
+     */
+    private String nodeId;
+
+    /**
+     * 委托状态 只有 2已上报待审批 和 3待试验 可以重签
+     */
+    private Integer status;
+
+    /**
+     *是否重新生成pdf 1是2否
+     */
+    private Integer type;
+
+    public Long getTaskIdLong() {
+        // 返回 Long 类型的 taskId
+        return this.getTaskId()!=null?Long.valueOf(getTaskId()):null; // 假设 getTaskId() 返回 String 类型
+    }
+}

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/EntrustInfo.java

@@ -147,4 +147,7 @@ public class EntrustInfo extends BaseEntity {
 	@ApiModelProperty(value = "委托单类型 1=客户 2=rfId")
 	private Integer entrustType;
 
+    @ApiModelProperty(value = "节点id")
+    private String nodeId;
+
 }

+ 6 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TrialSampleInfo.java

@@ -143,5 +143,11 @@ public class TrialSampleInfo extends BaseEntity {
     @ApiModelProperty(value = "FRID编号")
     private String rfId;
 
+    /**
+     * 设计强度
+     */
+    @ApiModelProperty(value = "设计强度")
+    private String designStrength;
+
 
 }

+ 19 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/EntrustInfoServiceClient.java

@@ -0,0 +1,19 @@
+package org.springblade.business.feign;
+
+import com.alibaba.fastjson.JSONObject;
+import org.springblade.common.constant.BusinessConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(value =
+    BusinessConstant.APPLICATION_WEATHER_NAME
+)
+public interface EntrustInfoServiceClient {
+
+    String API_PREFIX = "/entrustinfo";
+
+    @PostMapping(API_PREFIX+"/saventrustData")
+    R saventrustData(@RequestBody JSONObject dataInfo);
+}

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/EntrustInfoVO.java

@@ -50,4 +50,7 @@ public class EntrustInfoVO extends EntrustInfo {
 	@ApiModelProperty("测试单Id")
 	private String testId;
 
+    @ApiModelProperty("任务Id")
+    private String taskId;
+
 }

+ 17 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto1.java

@@ -0,0 +1,17 @@
+package org.springblade.manager.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ContractInfoDto1 {
+    private Long projectId;
+    private String projectName;
+    private List<ContractInfoDto2> contractList=new ArrayList<ContractInfoDto2>();
+}

+ 13 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto2.java

@@ -0,0 +1,13 @@
+package org.springblade.manager.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ContractInfoDto2 {
+    private Long contractId;
+    private String contractName;
+}

+ 13 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto3.java

@@ -0,0 +1,13 @@
+package org.springblade.manager.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ContractInfoDto3 {
+    private Long projectId;
+    private String contractId;
+}

+ 16 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FileNameRuleDto.java

@@ -0,0 +1,16 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 文件题名规则
+ */
+@Data
+public class FileNameRuleDto {
+    //文件题名范围
+    private List<String> nodeIds;
+    //文件题名规则
+    private List<String> rules;
+}

+ 17 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/NameRuleDto.java

@@ -0,0 +1,17 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+/**
+ * 文件题名规则
+ * @author chenr
+ * @create 2022-01-05 16:09
+ */
+@Data
+public class NameRuleDto {
+    private Long nameId;
+    private String nameRule;
+    private String nodeId;
+    private Long projectId;
+    private Integer type;
+
+}

+ 19 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ParameterElementDTO1.java

@@ -0,0 +1,19 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class ParameterElementDTO1 {
+    private Long id;
+    private Long parameterId;
+    private String elementName;
+    /**
+     * 是否全局参数 1是2否
+     */
+    private Integer type;
+    private List<ContractInfoDto3> projectList=new ArrayList<>();
+}

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractInfo.java

@@ -175,6 +175,9 @@ public class ContractInfo extends BaseEntity {
     @ApiModelProperty(value = "项目里程")
     private BigDecimal projectMileage;
 
+    @ApiModelProperty(value = "模板引用 1.模版节点 2.底层节点")
+    private Integer templateType;
+
     public BigDecimal getProjectMileage() {
         if (projectMileage == null){
             return null;

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

@@ -22,6 +22,7 @@ public class WbsParam extends BaseEntity {
     private Integer type;
     private Integer sort;
 
+
     /**
      * WBS树节点Id
      */
@@ -31,5 +32,11 @@ public class WbsParam extends BaseEntity {
      * 项目id,同步节点参数使用
      */
     private Long projectId;
+    /**
+     * 文件题名ID
+     */
+    private Long nameId;
+
+    private Integer nameType;
 
 }

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClient.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.feign;
 
 import com.alibaba.fastjson.JSONObject;
+import org.springblade.business.dto.ReSigningEntrustDto;
 import org.springblade.business.dto.TrialSelfInspectionRecordDTO;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.entity.ExcelTab;
@@ -65,4 +66,7 @@ public interface ExcelTabClient {
     @GetMapping(  API_PREFIX + "/get-the-log-pdfInfo")
     R<String> getTheContractLogBusinessData(@RequestParam String pkeyId, @RequestParam String nodePrimaryKeyId
             ,@RequestParam String recordTime,@RequestParam String contractId, @RequestParam Long createUser) throws Exception;
+
+    @PostMapping(API_PREFIX + "/saveReEntrustTabData")
+    R saveReEntrustTabData(@RequestBody ReSigningEntrustDto dto, @RequestParam String header);
 }

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClientFallBack.java

@@ -3,6 +3,7 @@ package org.springblade.manager.feign;
 import com.alibaba.fastjson.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springblade.business.dto.ReSigningEntrustDto;
 import org.springblade.business.dto.TrialSelfInspectionRecordDTO;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.entity.ExcelTab;
@@ -62,4 +63,9 @@ public class ExcelTabClientFallBack implements ExcelTabClient {
         return null;
     }
 
+    @Override
+    public R saveReEntrustTabData(ReSigningEntrustDto dto, String header) {
+        return null;
+    }
+
 }

+ 21 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/NameRuleVo.java

@@ -0,0 +1,21 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class NameRuleVo {
+    //文件题名ID
+    private Long nameId;
+    //文件题名规则
+    private String nameRule;
+    //文件题名规则对应的c0-c6
+    private String nameVaule;
+    // 1全部节点 2部分节点
+    private Integer type;
+    //文件题名范围
+    private List<NameRuleVo1> list=new ArrayList<>();
+
+}

+ 13 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/NameRuleVo1.java

@@ -0,0 +1,13 @@
+package org.springblade.manager.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class NameRuleVo1 {
+    private Long nodeId;
+    private String nodeName;
+}

+ 9 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ParameterElementVO2.java

@@ -0,0 +1,9 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+@Data
+public class ParameterElementVO2 {
+    private String elementName;
+    private String paramName;
+}

+ 11 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ParameterElementVo1.java

@@ -0,0 +1,11 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+@Data
+public class ParameterElementVo1 {
+    private Long id;
+    private String elementName;
+    private Long parameterId;
+    private String parameterName;
+}

+ 9 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ProjectInfoVO1.java

@@ -0,0 +1,9 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+@Data
+public class ProjectInfoVO1 {
+    private Long projectId;
+    private String projectName;
+}

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ProjectInfoVO3.java

@@ -0,0 +1,5 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+

+ 10 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TitleRangeVo.java

@@ -0,0 +1,10 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+@Data
+public class TitleRangeVo {
+    private Long id;
+    private String nodeName;
+    private Integer status;
+}

+ 8 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsParamVo2.java

@@ -0,0 +1,8 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+import org.springblade.manager.entity.WbsParam;
+@Data
+public class WbsParamVo2 extends WbsParam {
+   private String nodeName;
+}

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO.java

@@ -68,4 +68,5 @@ public class WbsTreePrivateVO extends WbsTreePrivate implements INode<WbsTreePri
      */
     private Integer checkStatus = 0;
 
+
 }

+ 72 - 16
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -15,10 +15,16 @@ import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import org.apache.commons.codec.Charsets;
 import org.apache.commons.lang.StringUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.business.dto.CustomAddContractNodeDTO;
+import org.springblade.business.dto.ImportTreeDto;
 import org.springblade.business.entity.*;
 import org.springblade.business.feign.MessageWarningClient;
 import org.springblade.business.feign.OperationLogClient;
@@ -69,10 +75,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.io.BufferedOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.net.URLEncoder;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -80,6 +83,9 @@ import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import static com.aspose.cells.PropertyType.STRING;
+import static java.sql.Types.NUMERIC;
+
 /**
  * 资料填报及查询控制器
  *
@@ -1079,9 +1085,9 @@ public R<String> batchDownloadFileToZip(String ids, HttpServletResponse response
                  /*   result.forEach(query -> urls.add(
                             StringUtils.isNotEmpty(query.getNodePdfUrl()) ? query.getNodePdfUrl() + "@@@" + query.getName() + "-" + query.getId() : query.getPdfUrl() + "@@@" + query.getName() + "-" + query.getId()));
                    */
-                for (InformationQuery query : result) {
+                for (int i=0;i<result.size();i++) {
                     String url_link = "";
-                    List<TaskApprovalVO.ApprovalFile> files = jdbcTemplate.query("select name as fileName,domain_url as fileUrl from m_table_file where is_deleted = 0 and type in(10,11,12)and tab_id = ?", new BeanPropertyRowMapper<>(TaskApprovalVO.ApprovalFile.class), query.getWbsId());
+                    List<TaskApprovalVO.ApprovalFile> files = jdbcTemplate.query("select name as fileName,domain_url as fileUrl from m_table_file where is_deleted = 0 and type in(10,11,12)and tab_id = ?", new BeanPropertyRowMapper<>(TaskApprovalVO.ApprovalFile.class), result.get(i).getWbsId());
                     List<String> url = new ArrayList();
                     if (ObjectUtil.isNotEmpty(files)) {
                         for (TaskApprovalVO.ApprovalFile da : files) {
@@ -1089,24 +1095,24 @@ public R<String> batchDownloadFileToZip(String ids, HttpServletResponse response
                         }
                     }
 
-                    if (query != null && Func.isNull(query.getEVisaPdfUrl())) {
-                        url.add(query.getEVisaPdfUrl());
+                    if (result.get(i) != null && result.get(i).getEVisaPdfUrl()!=null) {
+                        url.add(result.get(i).getEVisaPdfUrl());
                     } else {
-                        url.add(query.getPdfUrl());
+                        url.add(result.get(i).getPdfUrl());
                     }
 
-                    if (urls != null && urls.size() > 1) {
-                        String localUrl = FileUtils.getSysLocalFileUrl() + "\\" + query.getId() + ".pdf";
+                    if (url != null && url.size() > 1) {
+                        String localUrl = FileUtils.getSysLocalFileUrl() + "\\" + result.get(i).getId() + ".pdf";
                         FileUtils.mergePdfPublicMethods(url, localUrl);
-                        BladeFile bladeFile = newIOSSClient.uploadFile(query.getId() + ".pdf", localUrl);
+                        BladeFile bladeFile = newIOSSClient.uploadFile(result.get(i).getId() + ".pdf", localUrl);
                         if (bladeFile != null && ObjectUtils.isNotEmpty(bladeFile.getLink())) {
                             url.add(bladeFile.getLink());
                         }
 
-                    } else if (urls != null && urls.size() == 1) {
+                    } else if (url != null && url.size() == 1) {
                         url_link = url.get(0);
                     }
-                    url.add(url_link + "@@@" + query.getName() + "-" + query.getId());
+                    urls.add(url_link + "@@@" + result.get(i).getName() + "-" + result.get(i).getId());
                 }
 
                 //删除空数据
@@ -4151,8 +4157,58 @@ public R<Object> customAddContractNode(@RequestBody CustomAddContractNodeDTO dto
 }
 
     @PostMapping("/importTree")
-    public R importTree(@RequestParam("file") MultipartFile file, Long pekyId){
+    @ApiOperationSupport(order = 31)
+    @ApiOperation(value = "导入工程划分树", notes = "传入MultipartFile")
+    public R importTree(@RequestParam("file") MultipartFile file, @RequestParam Long pkeyId) throws IOException {
+        InputStream inputStream = file.getInputStream();
+        Workbook workbook = new XSSFWorkbook(inputStream);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<ImportTreeDto>list=new ArrayList<>();
+        for (int i = 2; i <= sheet.getLastRowNum(); i++){
+            Row row = sheet.getRow(i);
+            if (row == null) continue;
+            // 获取每一列的值
+            String unitName = getCellValue(row.getCell(0)); // A列:单位工程名称
+            String unitCode = getCellValue(row.getCell(1)); // B列:单位工程编号
+            String subUnitName = getCellValue(row.getCell(2)); // C列:子单位工程名称
+            String subUnitCode = getCellValue(row.getCell(3)); // D列:子单位工程编号
+            String divisionName = getCellValue(row.getCell(4)); // E列:分部工程名称
+            String divisionCode = getCellValue(row.getCell(5)); // F列:分部工程编号
+            String subDivisionName = getCellValue(row.getCell(6)); // G列:子分部工程名称
+            String subDivisionCode = getCellValue(row.getCell(7)); // H列:子分部工程编号
+            String itemName = getCellValue(row.getCell(8)); // I列:分项工程名称
+            String itemCode = getCellValue(row.getCell(9)); // J列:分项工程编号
+            String subItemName = getCellValue(row.getCell(10)); // K列:子分项工程名称
+            String subItemCode = getCellValue(row.getCell(11));// L列:子分项工程编号
+
+            ImportTreeDto dto=new ImportTreeDto(unitName,unitCode,subUnitName,subUnitCode,divisionName,divisionCode, subDivisionName,subDivisionCode,itemName,itemCode,subItemName,subItemCode);
+            list.add(dto);
+        }
+        String sql="select * from m_wbs_tree_private where p_key_id="+pkeyId;
+        WbsTreePrivate wbsTreePrivate = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+
+        //先查出这个节点下所有的树
 
-    return R.success("操作成功");
+        return R.success("操作成功");
+    }
+
+    /**
+     * 获取单元格的值
+     *
+     * @param cell 单元格
+     * @return 单元格的值(字符串)
+     */
+    private static String getCellValue(Cell cell) {
+        if (cell == null) {
+            return "";
+        }
+        switch (cell.getCellType()) {
+            case 1:
+                return cell.getStringCellValue();
+            case 0:
+                return String.valueOf((int) cell.getNumericCellValue());
+            default:
+                return "";
+        }
     }
 }

+ 27 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -1975,6 +1975,33 @@ public class TaskController extends BladeController {
         return R.success("任务已经成功提交重签,请耐心等待!");
     }
 
+    @PostMapping("/reSigningEntrust")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "委托单管理-一键重签", notes = "传入taskIds、下拉框的contractId、projectId")
+    public R<Object>reSigningEntrust(@RequestBody List<ReSigningEntrustDto> dtos, HttpServletRequest request){
+        for (ReSigningEntrustDto dto : dtos) {
+            if(dto.getStatus()!=null&&dto.getStatus()!=1){
+                String sql="SELECT t.id FROM u_task t WHERE t.form_data_id=(Select id from u_information_query WHERE wbs_id="+dto.getEntrustId()+")";
+                dto.setTaskId(jdbcTemplate.queryForObject(sql, String.class));
+            }
+        }
+        boolean hasNullTaskId = dtos.stream()
+            .anyMatch(dto -> dto.getTaskId() == null);
+        if (hasNullTaskId) {
+            return R.fail("有委托单暂未上报");
+        }
+        boolean b = dtos.stream().allMatch(dto -> dto.getStatus() != null && dto.getStatus() >= 2 && dto.getStatus() <= 3);
+        if(!b){
+            return R.fail("只有“已上报-待审批”和“待试验”可以重签");
+        }
+        String header = request.getHeader("Blade-Auth");
+        taskService.reSigningEntrust(dtos,header,request);
+        return R.success("任务已经成功提交重签,请耐心等待!");
+    }
+
+
+
+
     /**
      * 试验系统-试验检测(自检)-一键重签
      */

+ 20 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/EntrustInfoServiceClientImpl.java

@@ -0,0 +1,20 @@
+package org.springblade.business.feignClient;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import org.springblade.business.feign.EntrustInfoServiceClient;
+import org.springblade.business.service.IEntrustInfoService;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@AllArgsConstructor
+public class EntrustInfoServiceClientImpl implements EntrustInfoServiceClient {
+
+    private final IEntrustInfoService entrustInfoService;
+
+    @Override
+    public R saventrustData(JSONObject dataInfo) {
+        return entrustInfoService.saventrustData(dataInfo);
+    }
+}

+ 11 - 9
blade-service/blade-business/src/main/java/org/springblade/business/mapper/EntrustInfoMapper.xml

@@ -55,11 +55,12 @@
 
     <select id="selectEntrustInfoPage" resultMap="entrustInfoResultVoMap">
         SELECT a.*,b.node_id as nodeId,b.material_name as materialName ,
-          (SELECT max(c.id) from u_trial_self_inspection_record c where c.entrust_id = a.id) as testId
+          (SELECT max(c.id) from u_trial_self_inspection_record c where c.entrust_id = a.id) as testId,
+          (SELECT max(t.id) from u_task t where t.trial_self_inspection_record_id= testId and is_deleted=0) as taskId
                from u_entrust_info a LEFT JOIN u_trial_sample_info b on a.sample_id=b.id
-        where a.is_deleted = 0 and b.is_deleted=0 and entrust_type!=2
+        where a.is_deleted = 0 AND (b.is_deleted = 0 OR b.is_deleted IS NULL)  and entrust_type!=2
         <if test="param2.nodeId != null">
-            and b.node_id = #{param2.nodeId}
+            and a.node_id = #{param2.nodeId}
         </if>
         <if test="param2.contractId != null">
             and a.contract_id = #{param2.contractId}
@@ -170,6 +171,12 @@
         and (status = 2
         or id  in (select entrust_id from u_trial_self_inspection_record where is_deleted=0))
     </select>
+    <select id="getRfiList" resultType="org.springblade.business.entity.EntrustInfo">
+        SELECT b.id,a.* from u_trial_sample_info a ,u_entrust_info b where a.id=b.sample_id and b.entrust_type=2 and a.is_deleted=0 and sample_status=#{state} and  b.is_deleted=0 and a.rf_id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
 
 
     <delete id="delEntrustInfo" >
@@ -181,11 +188,6 @@
         and id not in(SELECT entrust_id from u_trial_self_inspection_record where is_deleted=0)
     </delete>
 
-    <select id="getRfiList" resultType="org.springblade.business.entity.TrialSampleInfo">
-        SELECT b.id,a.* from u_trial_sample_info a ,u_entrust_info b where a.id=b.sample_id and b.entrust_type=2 and a.is_deleted=0 and sample_status=#{state} and  b.is_deleted=0 and a.rf_id in
-        <foreach collection="ids" item="id" open="(" separator="," close=")">
-            #{id}
-        </foreach>
-    </select>
+
 
 </mapper>

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.business.service;
 
+import org.springblade.business.dto.ReSigningEntrustDto;
 import org.springblade.business.dto.TrialResignDto;
 import org.springblade.business.entity.Task;
 import org.springblade.business.entity.TaskParallel;
@@ -126,4 +127,6 @@ public interface ITaskService extends BaseService<Task> {
      */
     @Async
     void reSigningTrial(TrialResignDto dto, HttpServletRequest request);
+
+    void reSigningEntrust(List<ReSigningEntrustDto> dtos, String header, HttpServletRequest request);
 }

+ 16 - 10
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/EntrustInfoServiceImpl.java

@@ -43,6 +43,7 @@ import org.springblade.manager.feign.ExcelTabClient;
 import org.springblade.manager.feign.WbsTreePrivateClient;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -117,12 +118,16 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
 		}
 		String sampleId = "";
 		String contractId = "";
-		// 创建 委托单信息
-		if(!dataInfo.containsKey("sampleId")){
-			return R.fail("取样信息为sampleId不存在");
-		}else{
-			sampleId = dataInfo.getString("sampleId");
-		}
+        String sqlNodeName="select node_name from m_wbs_tree_private where p_key_id="+dataInfo.getString("nodeId");
+        String nodeName = jdbcTemplate.queryForObject(sqlNodeName, new SingleColumnRowMapper<>(String.class));
+        if(!nodeName.equals("回弹法检测混凝土抗压强度")&&!nodeName.equals("路基压实度")&&!nodeName.equals("地基承载力")&&!nodeName.equals("路基路面弯沉")){
+            // 创建 委托单信息
+            if(!dataInfo.containsKey("sampleId")){
+                return R.fail("取样信息为sampleId不存在");
+            }else{
+                sampleId = dataInfo.getString("sampleId");
+            }
+        }
 		if(!dataInfo.containsKey("contractId")){
 			return R.fail("取样信息为contractId不存在");
 		}else{
@@ -138,8 +143,8 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
 			//委托单未上报不进入样品流转 状态设置为0
 			entrustInfo.setSampleStatus("0");
 		}
-		WbsTreePrivate wbsTreePrivate = wbsTreePrivateClient.getNodeByPrimaryKeyId(nodeErTreeId);
-
+		//WbsTreePrivate wbsTreePrivate = wbsTreePrivateClient.getNodeByPrimaryKeyId(nodeErTreeId);
+        WbsTreePrivate wbsTreePrivate=jdbcTemplate.query("select * from m_wbs_tree_private where p_key_id="+nodeErTreeId+" and status=1",new BeanPropertyRowMapper<>(WbsTreePrivate.class)).get(0);
 		String sql ="select * from m_wbs_form_element where is_deleted = 0 and dynamic_dict in(500,501,502)  and f_id="+wbsTreePrivate.getInitTableId();
 		List<Map<String, Object>> wbsFormElements = jdbcTemplate.queryForList(sql);
 
@@ -164,6 +169,7 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
 				}
 			}
 		}
+        entrustInfo.setNodeId(dataInfo.get("nodeId").toString());
 		entrustInfo.setEntrustName(wbsTreePrivate.getNodeName());
         if(dataInfo.containsKey("id")){
             entrustInfo.setId(Long.parseLong(dataInfo.get("id").toString()));
@@ -171,8 +177,8 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
         this.saveOrUpdate(entrustInfo);
 		dataInfo.put("groupId",entrustInfo.getId());
 		dataInfo.put("pkeyId", dataInfo.getString("nodeErTreeId"));
-		excelTabClient.saveEntrustTabData(dataInfo);
-		return R.success("操作成功");
+        String pdfUrl = excelTabClient.saveEntrustTabData(dataInfo);
+        return R.data(200,pdfUrl,"操作成功");
 	}
 
 	/**

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

@@ -12,6 +12,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.archive.entity.ArchiveProjectConfig;
 import org.springblade.archive.feign.ArchiveAutoClient;
+import org.springblade.business.dto.ReSigningEntrustDto;
 import org.springblade.business.dto.TrialResignDto;
 import org.springblade.business.dto.TrialSelfInspectionRecordDTO;
 import org.springblade.business.entity.*;
@@ -1189,6 +1190,109 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
     }
 
+    @Override
+    public void reSigningEntrust(List<ReSigningEntrustDto> dtos, String header, HttpServletRequest request) {
+        String taskIds = dtos.stream().map(d -> d.getTaskId()).collect(Collectors.joining(","));
+        Map<String, ReSigningEntrustDto> map = dtos.stream()
+            .filter(dto -> dto.getTaskId() != null) // 确保taskId不为空
+            .collect(Collectors.toMap(ReSigningEntrustDto::getTaskId, dto -> dto));
+        Map<Long, ReSigningEntrustDto> longMap = map.values().stream()
+            .collect(Collectors.toMap(ReSigningEntrustDto::getTaskIdLong, dto -> dto));
+        //查询任务信息
+        List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
+        if (taskList.size() > 0) {
+            //获取任务详情信息Map
+            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
+            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
+            if (processInstanceIds.size() > 0) {
+                String resultIds = processInstanceIds.stream()
+                    .map(id -> "'" + id + "'")
+                    .collect(Collectors.joining(","));
+                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
+            }
+            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
+            try {
+                for (int i = 0; i < taskList.size(); i++) {
+                    ReSigningEntrustDto dto = longMap.get(taskList.get(i).getId());
+                    R result = new R();
+                    jdbcTemplate.execute("DELETE from u_task_batch where json_data like '%"+taskList.get(i).getId()+"%'");
+                    boolean b = false;
+                    if(dto.getType() == 1){
+                        b = informationQueryService.update(new LambdaUpdateWrapper<InformationQuery>()
+                            .eq(InformationQuery::getId, taskList.get(i).getFormDataId())
+                            .set(InformationQuery::getEVisaPdfUrl, null)
+                            .set(InformationQuery::getPdfUrl, null));
+                        String update="update u_entrust_info set entrust_e_pdf=null,entrust_pdf=null where id="+dto.getEntrustId();
+                        jdbcTemplate.update(update);
+                    }else {
+                        b = informationQueryService.update(new LambdaUpdateWrapper<InformationQuery>()
+                            .eq(InformationQuery::getId, taskList.get(i).getFormDataId())
+                            .set(InformationQuery::getEVisaPdfUrl, null));
+                        String update="update u_entrust_info set entrust_e_pdf=null where id="+dto.getEntrustId();
+                        jdbcTemplate.update(update);
+                    }
+
+
+                    if (dto.getType() == 1) {
+                        //重新保存
+                        long startTime_1 = System.currentTimeMillis();
+                        result=excelTabClient.saveReEntrustTabData(dto,header);
+                        long endTime_1 = System.currentTimeMillis();
+                        long executionTime_1 = endTime_1 - startTime_1;
+                        log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
+                    }else{
+                        if (!b){
+                            throw new ServiceException("清空电签PDF失败");
+                        }
+                        result.setData("成功");
+                    }
+                    //重新电签
+                    if (result != null && "操作成功".equals(result.getMsg())) {
+                        List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
+                        List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(taskList.get(i).getProcessInstanceId());
+                        for (TaskParallel taskParallel : taskParallelList) {
+                            //待审批的不进行重签, 存在待审批,但是电签状态是失败的
+                            if ((new Integer(2)).equals(taskParallel.getStatus()) || Func.isNotEmpty(taskParallel.getEVisaStatus()) || Func.isNotEmpty(taskParallel.getEVisaContent()) ) {
+                                TaskApprovalVO approvalVO = new TaskApprovalVO();
+                                approvalVO.setTaskId(taskList.get(i).getId().toString());
+                                approvalVO.setFlag("OK");
+                                approvalVO.setComment("重新发起电签");
+                                approvalVO.setApprovalType(8);
+                                approvalVO.setFormDataId(taskList.get(i).getFormDataId());
+                                approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
+                                approvalVO.setYsNickName(taskParallel.getTaskUserName());
+                                approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
+                                taskApprovalVOS.add(approvalVO);
+                            }
+                        }
+                        long startTime_2 = System.currentTimeMillis();
+                        if(taskApprovalVOS!=null && taskApprovalVOS.size()>=1){
+                            this.batchCompleteApprovalTask(taskApprovalVOS);
+                        }
+                        if(result.getData()!=null){
+                            String update="update u_entrust_info set entrust_pdf= '"+result.getData()+"' where id="+dto.getEntrustId();
+                            jdbcTemplate.update(update);
+                        }
+                        long endTime_2 = System.currentTimeMillis();
+                        long executionTime_2 = endTime_2 - startTime_2;
+                        log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
+                    } else {
+                        //修改重签状态为保存PDF失败
+                        this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate()
+                            .set(TaskParallel::getEVisaContent, "重新保存PDF失败")
+                            .eq(TaskParallel::getProcessInstanceId, taskList.get(i).getProcessInstanceId()));
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
+            }
+
+        }else {
+            throw new ServiceException("未获取到任务信息,操作失败!");
+        }
+    }
+
     private R saveTrialSelfNodePdf(TrialResignDto dto,String trialId) {
         //试验记录id
         String trialIds = dto.getTrialIds();
@@ -1767,6 +1871,16 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     if (type == 1) {
                         //重新保存
                         long startTime_1 = System.currentTimeMillis();
+                        //质检资料
+                        if(task.getApprovalType()==1){
+                            result = this.saveNodePdf(typeMap.get(task.getFormDataId()), queryMap.get(task.getFormDataId()), contractId, projectId, header);
+                        }
+                        //日志资料
+                        if(task.getApprovalType()==3){
+                            ContractLog contractLog = jdbcTemplate.queryForObject("select * from u_contract_log where id =" + task.getFormDataId(), new BeanPropertyRowMapper<>(ContractLog.class));
+                            result = excelTabClient.getTheContractLogBusinessData(contractLog.getTableId().toString(), contractLog.getWbsNodeId().toString(), contractLog.getRecordTime(), contractId,contractLog.getCreateUser());
+                        }
+
 
                         result = this.saveNodePdf(typeMap.get(task.getFormDataId()), queryMap.get(task.getFormDataId()), contractId, projectId, header);
 

+ 3 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -328,7 +328,9 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             if(ObjectUtil.isNotEmpty(entrustPdfUrl)){
                 List<String> pdfList = new ArrayList<>();
                 //试验原始pdf
-                pdfList.add(pdfUrl.toString());
+                if(pdfUrl!=null){
+                    pdfList.add(pdfUrl.toString());
+                }
                 //委托单pdf
                 pdfList.add(entrustPdfUrl);
                 String file_path = FileUtils.getSysLocalFileUrl();

+ 50 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -557,7 +557,7 @@ public class ExcelTabController extends BladeController {
         //File file_in = ResourceUtil.getFile("C:\\Users\\泓创开发\\Desktop\\fsdownload\\1717821792510279680.html");
         File file_in = ResourceUtil.getFile(excelTab.getHtmlUrl());
         String filecode = SnowFlakeUtil.getId() + "";
-        String thmlUrl = file_path + "/privateUrl/" + filecode + ".html";
+        String thmlUrl = file_path + "/privateUrlCopy/" + aPrivate.getProjectId()+"/"+filecode + ".html";
         File file_out = ResourceUtil.getFile(thmlUrl);
         FileUtil.copy(file_in, file_out);
         updateWrapper.set("html_url", thmlUrl);
@@ -2051,7 +2051,7 @@ public class ExcelTabController extends BladeController {
         informationQueryClient.delAsyncWbsTree(contractId);
         executionTime.info("缓存删除耗时");
         executionTime.brief();
-        return R.data("操作成功");
+        return R.data(result.getMsg());
     }
 
     /*并发加载表单数据*/
@@ -4304,7 +4304,7 @@ public class ExcelTabController extends BladeController {
                     /*只需加载第一张即可,生效会自动补全*/
                     for (AppWbsTreeContractVO tab : tableAll) {
                         //  AppWbsTreeContractVO tab = tableAll.get(0);
-                        Map<String, Object> jo = excelTabService.getBussDataInfo(tab.getPKeyId(), 0);
+                        Map<String, Object> jo = excelTabService.getBussDataInfo(tab.getPKeyId(), 0,true);
                         String s = new Gson().toJson(jo);
                         //字符串转jsonobject
                         JSONObject obj = JSON.parseObject(s);
@@ -4391,7 +4391,8 @@ public class ExcelTabController extends BladeController {
     })
     public R<List<Map<String, Object>>> getBussDataInfoTrialentrust(Long id, Long pkeyId, Long contractId, Long sampleId, String formData) {
         JSONObject jsonObject = JSONObject.parseObject(formData);
-        List<Map<String, Object>> bussDataInfoTrial = excelTabService.getBussDataInfoTrialentrust(id, pkeyId, contractId, sampleId, jsonObject);
+        Boolean isrmove=true;
+        List<Map<String, Object>> bussDataInfoTrial = excelTabService.getBussDataInfoTrialentrust(id, pkeyId, contractId, sampleId, jsonObject,isrmove);
         return R.data(bussDataInfoTrial);
     }
 
@@ -4580,4 +4581,49 @@ public class ExcelTabController extends BladeController {
         }
         System.out.println("检查完毕");
     }
+    @GetMapping("/checkParamElement")
+    @ApiOperationSupport(order = 30)
+    @ApiOperation(value = "检查参数元素", notes = "检查参数元素")
+    public R<List<ParameterElementVO2>> checkParamElement(@RequestParam Long pkeyId) throws Exception {
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
+        Thread.sleep(200);
+        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(pkeyId);
+        if (wbsTreePrivate == null) {
+            return R.fail("该数据下无此节点!");
+        }
+        if (wbsTreePrivate.getHtmlUrl() == null) {
+            return R.fail("请上传清表!");
+        }
+        String fileUrl = wbsTreePrivate.getHtmlUrl();
+        File file1 = ResourceUtil.getFile(fileUrl);
+        InputStream fileInputStream;
+        if (file1.exists()) {
+            fileInputStream = new FileInputStream(file1);
+        } else {
+            String path = sys_file_net_url + fileUrl.replaceAll("//", "/").replaceAll(file_path, "");
+            fileInputStream = CommonUtil.getOSSInputStream(path);
+        }
+        String htmlString = IoUtil.readToString(fileInputStream);
+        Document doc = Jsoup.parse(htmlString);
+        //解析
+        Element table = doc.select("table").first();
+        Elements placeholders = table.getElementsByAttribute("placeholder");
+        Set<String>placeholderValues=new HashSet<>();
+        for (Element element : placeholders) {
+            String value = element.attr("placeholder");
+            if(value.isEmpty()) {
+                placeholderValues.add(value);
+            }
+        }
+        String inClause = placeholderValues.stream()
+            .map(element -> "'" + element + "'")
+            .collect(Collectors.joining(","));
+        String sql = "SELECT a.element_name, b.param_name " +
+            "FROM m_parameter_element a " +
+            "LEFT JOIN m_parameter b ON a.parameter_id = b.id " +
+            "WHERE a.element_name IN (" + inClause + ")";
+        List<ParameterElementVO2> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ParameterElementVO2.class));
+        return R.data(query);
+    }
 }

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

@@ -16,6 +16,7 @@ import org.springblade.manager.dto.ProjectInfoDTO;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.service.*;
 import org.springblade.manager.vo.*;
+import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
@@ -24,6 +25,7 @@ import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.wrapper.ProjectInfoWrapper;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 

+ 12 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsParamController.java

@@ -20,6 +20,7 @@ import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
+import org.springblade.manager.dto.FileNameRuleDto;
 import org.springblade.manager.dto.FormulaBean;
 import org.springblade.manager.dto.WbsParamBean;
 import org.springblade.manager.entity.*;
@@ -591,6 +592,17 @@ public class WbsParamController {
     }
 
 
+    /**
+     * 保存全局文件题名规则
+     * @param
+     * @return
+     */
+    @PostMapping("/submitFileName")
+    public R submitFileName(@RequestBody List<FileNameRuleDto> fileNameRuleDto){
+        //根据题名规则计算出参数值
+        return R.success("操作成功");
+    }
+
 
 
 

+ 22 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java

@@ -14,10 +14,12 @@ import org.jsoup.nodes.Node;
 import org.jsoup.select.Elements;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springblade.business.dto.ReSigningEntrustDto;
 import org.springblade.business.dto.TrialSelfInspectionRecordDTO;
 import org.springblade.business.entity.ContractLog;
 import org.springblade.business.entity.InformationQuery;
 import org.springblade.business.feign.ContractLogClient;
+import org.springblade.business.feign.EntrustInfoServiceClient;
 import org.springblade.business.feign.InformationQueryClient;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -65,6 +67,7 @@ public class ExcelTabClientImpl implements ExcelTabClient {
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
     private final IProjectInfoService projectInfoService;
     private final IContractInfoService contractInfoService;
+    private final EntrustInfoServiceClient entrustInfoServiceClient;
     private static final Logger logger = LoggerFactory.getLogger(ExcelTabClientImpl.class);
 
     @Override
@@ -441,6 +444,25 @@ public class ExcelTabClientImpl implements ExcelTabClient {
         return R.data("成功");
     }
 
+    @Override
+    public R saveReEntrustTabData(ReSigningEntrustDto dto, String header) {
+        WbsTreePrivate wbsTreePrivate = jdbcTemplate.queryForObject("select * from m_wbs_tree_private where p_key_id=" + dto.getNodeId(), new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+        Boolean isRemove=false;
+        List<Map<String, Object>> list = excelTabService.getBussDataInfoTrialentrust(Long.parseLong(dto.getEntrustId()), wbsTreePrivate.getJlerTreeId(), Long.parseLong(dto.getContractId()), null, null,isRemove);
+        Map<String, Object> map = list.get(0);
+        if(!map.containsKey("contractId")){
+            map.put("contractId",dto.getContractId());
+        }
+        if(!map.containsKey("nodeErTreeId")){
+            map.put("nodeErTreeId",wbsTreePrivate.getJlerTreeId());
+        }
+        if(!map.containsKey("nodeId")){
+            map.put("nodeId",dto.getNodeId());
+        }
+        JSONObject jsonObject = new JSONObject(map);
+        return  entrustInfoServiceClient.saventrustData(jsonObject);
+    }
+
     private String getHtmlString(String pkeyId) throws Exception {
         WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
                 .select(WbsTreePrivate::getHtmlUrl)

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

@@ -1,6 +1,7 @@
 package org.springblade.manager.injector;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.manager.entity.WbsTreePrivate;
 
 import java.util.List;
 
@@ -13,4 +14,5 @@ public interface EasyBaseMapper<T> extends BaseMapper<T> {
      */
     Integer insertBatchSomeColumn(List<T> entityList);
 
+
 }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.java

@@ -1,9 +1,14 @@
 package org.springblade.manager.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.entity.WbsParam;
 import org.springblade.manager.injector.EasyBaseMapper;
+import org.springblade.manager.vo.WbsParamVo2;
+
+import java.util.List;
 
 public interface WbsParamMapper extends EasyBaseMapper<WbsParam> {
 
+    List<WbsParamVo2> selectNameRule(@Param("projectId") Long projectId);
 }
 

+ 13 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.xml

@@ -18,5 +18,18 @@
         <result column="type" property="type"/>
         <result column="project_id" property="projectId"/>
     </resultMap>
+    <select id="selectNameRule" resultType="org.springblade.manager.vo.WbsParamVo2">
+        SELECT
+            a.v,
+            a.node_id,
+            a.name_id,
+            a.name_type,
+            (SELECT node_name FROM m_wbs_tree_private WHERE id = a.node_id LIMIT 1) AS nodeName
+        FROM m_wbs_param a
+        WHERE a.project_id = #{projectId}
+          AND a.is_deleted = 0
+          AND a.type = 11
+          AND a.k = 'FILE_TITLE'
+    </select>
 
 </mapper>

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

@@ -6,6 +6,7 @@ import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.entity.TextdictInfo;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.injector.EasyBaseMapper;
 import org.springblade.manager.vo.*;
 
@@ -99,4 +100,5 @@ public interface WbsTreeMapper extends EasyBaseMapper<WbsTree> {
 
     int isThereAField(@Param("initTableName") String initTableName, @Param("keyId") String keyId);
 
+    List<WbsTreePrivate> getTitleRange(@Param("projectId")Long projectId);
 }

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

@@ -561,4 +561,9 @@
         select COUNT(*) from information_schema.columns WHERE table_name = #{initTableName} and column_name = #{keyId}
     </select>
 
+    <select id="getTitleRange" resultType="org.springblade.manager.entity.WbsTreePrivate">
+        SELECT id,node_name,status From m_wbs_tree_private where project_id = #{projectId} and node_type=1 and is_deleted=0
+        and parent_id=(select id from m_wbs_tree_private where project_id= #{projectId} and parent_id=0 and is_deleted=0)
+    </select>
+
 </mapper>

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

@@ -210,5 +210,5 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
      * @param contractId
      * @return
      */
-    List<Map<String, Object>> getBussDataInfoTrialentrust(Long id, Long pkeyId, Long contractId, Long sampleId, JSONObject jsonObject);
+    List<Map<String, Object>> getBussDataInfoTrialentrust(Long id, Long pkeyId, Long contractId, Long sampleId, JSONObject jsonObject,Boolean isremove);
 }

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

@@ -5,6 +5,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.manager.entity.Formula;
 import org.springblade.manager.entity.WbsParam;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.vo.WbsParamVo2;
 
 import javax.validation.constraints.NotNull;
 import java.util.List;
@@ -53,5 +54,5 @@ public interface IWbsParamService extends BaseService<WbsParam> {
      R<Object> treeCode(Long contractId,Long projectId);
 
 
-
+    List<WbsParamVo2> selectNameRule(Long projectId);
 }

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

@@ -9,6 +9,7 @@ import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.entity.TableInfo;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.vo.*;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -80,4 +81,5 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     Object getQueryValueByType(String queryValue, String wbsId, String projectId, String type);
 
+    List<WbsTreePrivate> getTitleRange(String projectId);
 }

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

@@ -794,6 +794,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     @Override
     @Transactional
     public boolean saveAndUpdateContract(ContractInfoVO contractInfo) {
+        //新增
         if (contractInfo.getId() == null) {
             List<ContractInfo> contractInfos = baseMapper.selectList(Wrappers.<ContractInfo>query().lambda()
                     .eq(ContractInfo::getContractName, contractInfo.getContractName())
@@ -830,6 +831,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
             return this.submitContractRelevantInfo(row, contractInfo);
 
         } else {
+            //修改
             List<ContractInfo> contractInfos = baseMapper.selectList(Wrappers.<ContractInfo>query().lambda()
                     .eq(ContractInfo::getContractName, contractInfo.getContractName())
                     .eq(ContractInfo::getPId, contractInfo.getPId())
@@ -840,6 +842,14 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
             }
 
             ContractInfo contractInfo1 = baseMapper.selectById(contractInfo.getId());
+            //如果模版引用发生改变,需要判断合同段中是否有节点
+            if(contractInfo1.getTemplateType()!=null&&contractInfo.getTemplateType()!=null&&contractInfo1.getTemplateType()!=contractInfo.getTemplateType()){
+                String sql="Selcet  COUNT(*) From m_wbs_tree_contract Where contract_id="+contractInfo.getId()+" and is_deleted=0";
+                Integer size = jdbcTemplate.queryForObject(sql, Integer.class);
+                if(size>0){
+                    throw new ServiceException("合同段中已存在节点,无法更改");
+                }
+            }
             try {
                 archiveTreeContractMapper.updateByNodeName(contractInfo1.getContractName(), contractInfo.getContractName(), contractInfo.getId());
             } catch (Exception e) {

+ 29 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1202,6 +1202,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
     @Override
     public R<Object> saveOrUpdateInfo(List<TableInfo> tableInfoList) {
+        String fileName1="";
         if (ListUtils.isNotEmpty(tableInfoList)) {
             //施工资料填报
             String pkids = "";
@@ -1278,10 +1279,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                         .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId()));
                 //处理文件提名
-                String fileName = this.wbsParamService.createFileTitle(wbsTreeContractByP);
+                fileName1= this.wbsParamService.createFileTitle(wbsTreeContractByP);
 
                 //huangjn 保存成功后调用生成资料查询列表数据
-                this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId() + "", "首件使用字段", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfoList.get(0).getClassify()), 2, "false", "源文件(首件字段)", "pdf文件(首件字段)", "首件上传总结报告名称", new ArrayList<>());
+                this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId() + "", "首件使用字段", "业务ID(主要将来给首件使用)", fileName1, Integer.parseInt(tableInfoList.get(0).getClassify()), 2, "false", "源文件(首件字段)", "pdf文件(首件字段)", "首件上传总结报告名称", new ArrayList<>());
 
                 JSONObject json = new JSONObject();
                 json.put("operationObjIds", Func.toStrList(pkids));
@@ -1302,7 +1303,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 return R.fail(reason(log.toString()));
             }
         }
-        return R.success("操作成功");
+        return R.success(fileName1);
     }
 
     public String reason(String log) {
@@ -1406,7 +1407,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         // 匹配关联
         try {
             InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(wbsTreeContract.getHtmlUrl());
-
             String htmlString = IoUtil.readToString(inputStreamByUrl);
             Document doc = Jsoup.parse(htmlString);
             document = doc;
@@ -2082,6 +2082,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             Elements trs = table.select("tr");
             if (ObjectUtil.isNotEmpty(DataInfo)) {
                 for (String val : DataInfo.keySet()) {
+                    if(val.equals("key_23__12_1")){
+                        System.out.println("");
+                    }
                     Elements datas = doc.getElementsByAttributeValue("keyname", val);
                     Element data = null;
                     if (datas.size() >= 1) {
@@ -4474,7 +4477,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
      * 试验 委托单获取填报信息  groupId和sampleId1必须传其中一个
      */
     @Override
-    public List<Map<String, Object>> getBussDataInfoTrialentrust(Long groupId, Long pkeyId, Long contractId,Long sampleId1,JSONObject jsonObject) {
+    public List<Map<String, Object>> getBussDataInfoTrialentrust(Long groupId, Long pkeyId, Long contractId,Long sampleId1,JSONObject jsonObject,Boolean isremove) {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
         List<Map<String, Object>> list = new ArrayList<>();
@@ -4525,8 +4528,13 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             reData.put("loadDataId", loadDataId);
             reData.put("sampleId", sampleId);
         }
-        String querySql1 = "select * from u_trial_sample_info where id=" + sampleId ;
-        TrialSampleInfo sampleInfo = jdbcTemplate.queryForObject(querySql1, new BeanPropertyRowMapper<>(TrialSampleInfo.class));
+        TrialSampleInfo sampleInfo=null;
+        try {
+            String querySql1 = "select * from u_trial_sample_info where id=" + sampleId ;
+            sampleInfo= jdbcTemplate.queryForObject(querySql1, new BeanPropertyRowMapper<>(TrialSampleInfo.class));
+        } catch (Exception e) {
+            sampleInfo=null;
+        }
         //用sampleId查询出关联的材料对象
         String querySql2 = "select * from u_trial_material_mobilization where id =(select mobilization_id from u_trial_sampling_record where sample_info_id = "+sampleId+") ";
         TrialMaterialMobilization trialMaterialMobilization = null;
@@ -4642,14 +4650,15 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }
             }
         }
-
-        // 移除Id 和 p_key_id
-        reData.remove("id");
-        reData.remove("p_key_id");
-        reData.remove("classify");
-        reData.remove("contractId");
-        reData.remove("pkeyId");
-        reData.remove("projectId");
+        if(isremove){
+            // 移除Id 和 p_key_id
+            reData.remove("id");
+            reData.remove("p_key_id");
+            reData.remove("classify");
+            reData.remove("contractId");
+            reData.remove("pkeyId");
+            reData.remove("projectId");
+        }
         chart(reData, wbsTreePrivate);
         if(ObjectUtil.isNotEmpty(jsonObject)){
             for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
@@ -4684,11 +4693,16 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         setFirstData(doc,"规格 型号",sampleInfo.getSpecificationModel(),reData);
         setFirstData(doc,"规格型号",sampleInfo.getSpecificationModel(),reData);
         setFirstData(doc,"材料规格",sampleInfo.getSpecificationModel(),reData);
+        setFirstData(doc,"规格(mm)",sampleInfo.getSpecificationModel(),reData);
         setFirstData(doc,"试样 数量",sampleInfo.getMaterialCount(),reData);
         setFirstData(doc,"试样数量",sampleInfo.getMaterialCount(),reData);
         setFirstData(doc,"代表数量",sampleInfo.getMaterialCount(),reData);
         setFirstData(doc,"拟用结构部 位",sampleInfo.getProposedPosition(),reData);
         setFirstData(doc,"拟用结构部位",sampleInfo.getProposedPosition(),reData);
+        setFirstData(doc,"工程部位、构件编号",sampleInfo.getProposedPosition(),reData);
+        setFirstData(doc,"工程部位、高程桩号",sampleInfo.getProposedPosition(),reData);
+        setFirstData(doc,"设计强度 等级",sampleInfo.getDesignStrength(),reData);
+        setFirstData(doc,"设计强度等级",sampleInfo.getDesignStrength(),reData);
         setFirstData(doc,"用途(使用在何工程部位)",sampleInfo.getProposedPosition(),reData);
         setFirstData(doc,"进场日期代表数量",format+"/"+representativeCount+calculationUnit,reData);
         setFirstData(doc,"材料进场日期",format,reData);
@@ -4754,7 +4768,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             }else {
                 //另一种方式找到后 获取id的值并赋值到map
                 Element textareaElement = select2.first();
-
                 if(textareaElement != null){//正常情况
                     String id = textareaElement.attr("id");
                     reData.put(id, value);

+ 22 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -1174,6 +1174,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             checkTable = op.get().getInitTableName();
         }
         for (FormData fd : tec.formDataList) {
+            if(fd.getCode().equals("m_20220929151226_1575382979125968896:key_17")){
+                System.out.println(111);
+            }
             if (fd.verify()) {
                 Formula formula = fd.getFormula();
                 System.out.println(formula.getId() + ":" + fd.getEName());
@@ -1235,6 +1238,25 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                 } catch (Exception ee) {
                                     ee.printStackTrace();
                                 }
+
+                                //临时处理这个公式,多出来的空数据会导致多出一张表格出来,所以当依赖元素超过表格的size,并且后面数据全为空,就截取掉后面的值
+                                if(ele.size()>0&&!ele.get(0).getCode().isEmpty()){
+                                    //依赖的  C8.144钻(挖)孔灌注桩、地下连续墙钢筋安装检验记录表的设计和实测
+                                    if(ele.get(0).getCode().equals("m_20230308150036_1633362063201927168:key_28")||ele.get(0).getCode().equals("m_20230308150036_1633362063201927168:key_24")){
+                                        if(data!=null){
+                                            Boolean flag=true;
+                                            List<Object> list = (List<Object>)data;
+                                            for(int i=fd.getValues().size();i<list.size();i++){
+                                                if(list.get(i)!=null&&!list.get(i).equals("")){
+                                                    flag=false;
+                                                }
+                                            }
+                                            if(flag){
+                                                data = list.subList(0,fd.getValues().size());
+                                            }
+                                        }
+                                    }
+                                }
                                 write(tec, fd, data);
                             }
                             /*错位计算偏移量重置*/

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -18,6 +18,7 @@ import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.WbsParamMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.*;
+import org.springblade.manager.vo.WbsParamVo2;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -449,6 +450,11 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
         return R.fail("执行失败");
     }
 
+    @Override
+    public List<WbsParamVo2> selectNameRule(Long projectId) {
+        return this.baseMapper.selectNameRule(projectId);
+    }
+
 }
 
 

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

@@ -2988,12 +2988,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 //取消关联
                      return baseMapper.cancelLinkNodeTreeInfoByJL(pkeyId) ;
             }else {
+                baseMapper.cancelLinkNodeTreeInfoByJL(pkeyId) ;
                 return baseMapper.linkNodeTreeInfoByJL(pkeyId, strList) ;
             }
         }else{
             if(strList.size()==0){
                 return baseMapper.cancelLinkNodeTreeInfoByYZ(pkeyId) ;
             }
+            baseMapper.cancelLinkNodeTreeInfoByYZ(pkeyId) ;
             return baseMapper.linkNodeTreeInfoByYZ(pkeyId, strList) ;
         }
     }

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

@@ -548,6 +548,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return null;
     }
 
+
+    @Override
+    public List<WbsTreePrivate> getTitleRange(String projectId) {
+        return   this.baseMapper.getTitleRange(Long.valueOf(projectId));
+    }
+
     /**
      * 公有排序
      */

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -3264,7 +3264,7 @@ public class TaskController extends BladeController {
                     Map<String, String> map = new HashMap<>();
                     String os = System.getProperty("os.name").toLowerCase();
                     if (os.contains("win")) {
-                        map = FileUtils.getHtmlAllKey("C:\\Users\\泓创研发01\\Desktop\\fsdownload\\1808346073870106624.html");
+                        map = FileUtils.getHtmlAllKey("E:\\finalshell\\temp\\edit\\1808342640173776896.html");
                     } else {
                         map = FileUtils.getHtmlAllKey(aPrivate.getHtmlUrl());
                     }