소스 검색

全部提交

chenr 5 달 전
부모
커밋
91777e08fa
47개의 변경된 파일670개의 추가작업 그리고 33개의 파일을 삭제
  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. 6 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TrialSampleInfo.java
  4. 19 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/EntrustInfoServiceClient.java
  5. 3 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/EntrustInfoVO.java
  6. 17 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto1.java
  7. 13 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto2.java
  8. 13 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ContractInfoDto3.java
  9. 16 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FileNameRuleDto.java
  10. 19 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ParameterElementDTO1.java
  11. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractInfo.java
  12. 7 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsParam.java
  13. 4 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClient.java
  14. 6 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClientFallBack.java
  15. 21 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/NameRuleVo.java
  16. 13 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/NameRuleVo1.java
  17. 9 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ParameterElementVO2.java
  18. 11 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ParameterElementVo1.java
  19. 9 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ProjectInfoVO1.java
  20. 5 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ProjectInfoVO3.java
  21. 10 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TitleRangeVo.java
  22. 8 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsParamVo2.java
  23. 1 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO.java
  24. 62 6
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  25. 27 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  26. 20 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/EntrustInfoServiceClientImpl.java
  27. 11 9
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/EntrustInfoMapper.xml
  28. 3 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java
  29. 15 10
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/EntrustInfoServiceImpl.java
  30. 114 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  31. 3 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java
  32. 50 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  33. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  34. 12 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsParamController.java
  35. 22 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java
  36. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/injector/EasyBaseMapper.java
  37. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.java
  38. 13 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.xml
  39. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java
  40. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  41. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java
  42. 2 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsParamService.java
  43. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  44. 10 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  45. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java
  46. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  47. 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 类型
+    }
+}

+ 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;
+}

+ 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;
 
+
 }

+ 62 - 6
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;
+
 /**
  * 资料填报及查询控制器
  *
@@ -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);
 }

+ 15 - 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);
 
@@ -171,8 +176,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) {

+ 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);
+    }
+
 }
 
 

+ 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());
                     }