浏览代码

试验相关

liuyc 2 年之前
父节点
当前提交
247c2bb656
共有 15 个文件被更改,包括 382 次插入190 次删除
  1. 0 4
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreePrivateClient.java
  2. 42 4
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO4.java
  3. 21 3
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java
  4. 0 4
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITrialSelfInspectionRecordService.java
  5. 3 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDeviceUseServiceImpl.java
  6. 161 114
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java
  7. 6 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  8. 11 12
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java
  9. 4 18
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreePrivateClientImpl.java
  10. 2 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  11. 24 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  12. 4 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java
  13. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  14. 102 13
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  15. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

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

@@ -1,6 +1,5 @@
 package org.springblade.manager.feign;
 
-import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
 import org.springblade.manager.vo.WbsTreePrivateVO;
@@ -39,9 +38,6 @@ public interface WbsTreePrivateClient {
     @PostMapping(API_PREFIX + "/queryWbsTreePrivateByProjectIdAndId")
     List<WbsTreeContractTreeVOS> queryWbsTreePrivateByProjectIdAndId(@RequestParam String projectId, @RequestParam Long id);
 
-    @PostMapping(API_PREFIX + "/showBussTab")
-    boolean showBussTab(@RequestParam Long pkeyId, @RequestParam Integer status);
-
     @PostMapping(API_PREFIX + "/copyBussTab")
     boolean copyBussTab(@RequestParam Long pKeyId);
 

+ 42 - 4
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO4.java

@@ -1,16 +1,54 @@
 package org.springblade.manager.vo;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.manager.entity.WbsTreePrivate;
 
+import java.io.Serializable;
 import java.util.Map;
 
 @Data
-@EqualsAndHashCode(callSuper = true)
-public class WbsTreePrivateVO4 extends WbsTreePrivate{
+public class WbsTreePrivateVO4 implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private Map<String, Object> bussDataInfoTrial;
 
+    @JsonProperty(value = "pKeyId")
+    private Long pKeyId;
+
+    private String projectId;
+
+    private String wbsId;
+
+    private String wbsType;
+
+    private String nodeName;
+
+    private Integer nodeType;
+
+    private Integer type;
+
+    private Integer tableType;
+
+    private String tableOwner;
+
+    private String initTableName;
+
+    private String initTableId;
+
+    private Long excelId;
+
+    private String htmlUrl;
+
+    private String fillRate;
+
+    private Integer isTabPdf;
+
+    private String pdfUrl;
+
+    private Integer isBussShow;
+
+    private Integer tabFileType;
+
+    private Integer isLinkTable;
+
 }

+ 21 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java

@@ -28,6 +28,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ResourceUtil;
 import org.springblade.manager.entity.TrialSelfDataRecord;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.feign.WbsTreePrivateClient;
 import org.springblade.manager.vo.TableFileVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
@@ -44,6 +45,8 @@ import java.io.FileNotFoundException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 
 @RestController
@@ -178,9 +181,24 @@ public class TrialDetectionController extends BladeController {
 
     @GetMapping("/self/show-buss-tab")
     @ApiOperationSupport(order = 14)
-    @ApiOperation(value = "自检隐藏表单", notes = "传入节点pKeyId,状态status(1显示 2隐藏)")
-    public R<Object> showBussTab(@RequestParam Long pKeyId, @RequestParam Integer status) {
-        return R.status(wbsTreePrivateClient.showBussTab(pKeyId, status));
+    @ApiOperation(value = "自检隐藏表单", notes = "传入试验记录id,传入节点pKeyId,状态status(1显示 2隐藏)")
+    public R<Object> showBussTab(@RequestParam Long id, @RequestParam Long pKeyId, @RequestParam Integer status) {
+        if (ObjectUtils.isNotEmpty(id)) {
+            //编辑,修改试验记录与按钮关系信息
+            jdbcTemplate.execute("update u_trial_self_data_record set is_buss_show = " + status + " where record_id = " + id + " and tab_id = " + pKeyId);
+
+            //获取当前试验记录信息中表的按钮状态
+            String sql = "select tab_id,is_buss_show,is_tab_pdf,is_tab_file_type from u_trial_self_data_record where record_id = " + id + " and tab_id = " + pKeyId;
+            List<TrialSelfDataRecord> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TrialSelfDataRecord.class));
+            if (query.size() == 0) {
+                //如果编辑时,该表单没有在新增时就关联按钮记录信息,那么就修改该表单在项目wbs节点按钮状态
+                jdbcTemplate.execute("update m_wbs_tree_private set is_buss_show = " + status + " where p_key_id = " + pKeyId);
+            }
+        } else {
+            //新增,修改项目wbs节点按钮状态(通用)
+            jdbcTemplate.execute("update m_wbs_tree_private set is_buss_show = " + status + " where p_key_id = " + pKeyId);
+        }
+        return R.status(true);
     }
 
     @GetMapping("/self/copy-buss-tab")

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

@@ -27,8 +27,6 @@ public interface ITrialSelfInspectionRecordService extends BaseService<TrialSelf
 
     List<TrialSelfInspectionRecordVO2> getRawMaterialInfo(String nodeId, String contractId, String id);
 
-    boolean rawMaterialSubmitRelation(RawMaterialSubmitRelationDTO dto, TrialSelfInspectionRecord obj) throws FileNotFoundException;
-
     String selfPrintPdf(String ids) throws FileNotFoundException;
 
     String selfPrintNullPdf(String ids) throws Exception;
@@ -42,6 +40,4 @@ public interface ITrialSelfInspectionRecordService extends BaseService<TrialSelf
 
     boolean fileSubmit(TrialFileSubmitDTO dto) throws FileNotFoundException;
 
-    boolean recordSampleSubmit(RecordSampleSubmitDTO dto);
-
 }

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

@@ -38,6 +38,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
@@ -72,7 +73,7 @@ public class TrialDeviceUseServiceImpl extends BaseServiceImpl<TrialDeviceUseMap
             dto.setFactoryNumber(trialDeviceInfo.getFactoryNumber());
         }
         TrialDeviceUse trialDeviceUse = BeanUtil.copyProperties(dto, TrialDeviceUse.class);
-        if (trialDeviceUse != null){
+        if (trialDeviceUse != null) {
             return this.saveOrUpdate(trialDeviceUse);
         }
         return false;
@@ -309,6 +310,7 @@ public class TrialDeviceUseServiceImpl extends BaseServiceImpl<TrialDeviceUseMap
         return this.saveBatch(listData, 1000);
     }
 
+    @Async
     public void addDeviceUseInfo(TrialSelfInspectionRecordDTO dto) {
         if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotEmpty(dto.getDeviceUseIds())) {
             //获取进场记录

+ 161 - 114
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.spire.xls.*;
+import io.swagger.models.auth.In;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.time.DateUtils;
 import org.springblade.business.dto.*;
@@ -345,69 +346,6 @@ public class TrialSelfInspectionRecordServiceImpl
         return recordVO2s;
     }
 
-    @Override
-    @Async
-    public boolean rawMaterialSubmitRelation(RawMaterialSubmitRelationDTO dto, TrialSelfInspectionRecord obj) throws
-            FileNotFoundException {
-        if (ObjectUtil.isEmpty(dto.getId())) {
-            throw new ServiceException("请先保存填报数据后,再关联原材检测报告信息");
-        } else {
-            if (ObjectUtil.isNotEmpty(obj) && (("已审批").equals(obj.getTaskStatus()) || ("待审批").equals(obj.getTaskStatus()))) {
-                throw new ServiceException("当前填报数据已上报,无法进行关联操作");
-            }
-
-            //新增或编辑
-            if (StringUtils.isNotEmpty(dto.getIds())) {
-                //当前关联的原材料记录id
-                List<String> ids = Func.toStrList(dto.getIds());
-
-                //获取原材料的pdf
-                List<TrialSelfInspectionRecord> recordList = baseMapper.selectList(Wrappers.<TrialSelfInspectionRecord>lambdaQuery()
-                        .select(TrialSelfInspectionRecord::getPdfUrl, TrialSelfInspectionRecord::getId)
-                        .in(TrialSelfInspectionRecord::getId, ids).eq(TrialSelfInspectionRecord::getStatus, 1));
-                List<TrialSelfInspectionRecord> recordObjList = recordList.stream().filter(f -> !f.getId().equals(Long.parseLong(dto.getId()))).collect(Collectors.toList());
-                List<String> pdfUrlAll = new ArrayList<>();
-                if (recordObjList.size() > 0) {
-                    pdfUrlAll.addAll(recordObjList.stream().filter(f -> StringUtils.isNotEmpty(f.getPdfUrl())).map(TrialSelfInspectionRecord::getPdfUrl).collect(Collectors.toList()));
-                }
-
-                if (pdfUrlAll.size() > 0) {
-                    String filePath = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-                    String listPdf = filePath + "/pdf/" + dto.getNodeId() + ".pdf";
-                    File tabPDF = ResourceUtil.getFile(listPdf);
-                    if (tabPDF.exists()) {
-                        tabPDF.delete();
-                    }
-                    FileUtils.mergePdfPublicMethods(pdfUrlAll, listPdf);
-                    BladeFile bladeFile = this.newIOSSClient.uploadFile(dto.getNodeId() + ".pdf", listPdf);
-
-                    //删除记录关系
-                    String sql1 = "delete from u_trial_raw_material_self_record where self_record_id ='" + dto.getId() + "'";
-                    jdbcTemplate.execute(sql1);
-                    //新增记录关系
-                    for (String recordId : ids) {
-                        if (!recordId.equals(dto.getId())) {
-                            String sql2 = "insert into u_trial_raw_material_self_record(id,self_record_id,raw_material_record_id,old_pdf_url) values(" + SnowFlakeUtil.getId() + "," + dto.getId() + "," + recordId + ",'" + bladeFile.getLink() + "')";
-                            jdbcTemplate.execute(sql2);
-                        }
-                    }
-                    return true;
-                }
-
-            } else {
-                //删除全部
-                String sql = "select id from u_trial_raw_material_self_record where self_record_id =" + dto.getId();
-                List<TrialRawMaterialSelfRecord> recordList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TrialRawMaterialSelfRecord.class));
-                if (recordList.size() > 0) {
-                    String sql1 = "delete from u_trial_raw_material_self_record where self_record_id ='" + dto.getId() + "'";
-                    jdbcTemplate.execute(sql1);
-                }
-                return true;
-            }
-        }
-        return false;
-    }
-
     @Override
     public String selfPrintPdf(String ids) throws FileNotFoundException {
         List<TrialSelfInspectionRecord> recordList = baseMapper.selectList(Wrappers.<TrialSelfInspectionRecord>lambdaQuery().in(TrialSelfInspectionRecord::getId, Func.toLongList(ids)).eq(TrialSelfInspectionRecord::getStatus, 1));
@@ -672,77 +610,119 @@ public class TrialSelfInspectionRecordServiceImpl
 
     @Override
     public String selfSubmit(TrialSelfInspectionRecordDTO dto) throws FileNotFoundException {
+        //------初始编号信息------
+        this.initBuildNumber(dto);
+
+        //------初始当前填报的表------
+        this.initTrialTabIds(dto);
+
+        //------新增或编辑------
+        this.saveOrUpdate(dto);
+
+        if (ObjectUtil.isNotEmpty(dto.getId())) {
+            //------获取最新试验记录------
+            TrialSelfInspectionRecord obj = baseMapper.selectById(dto.getId());
+
+            //------编辑时生成为Null的记录表编号或报告单编号------
+            this.reBuildNumber(obj, dto);
+
+            //------保存实体表数据、试验记录信息、生成PDF------
+            this.submitTrialData(obj, dto);
+
+            //------关联原材料检测报告------
+            this.rawMaterialSubmitRelation(dto, obj);
+
+            //------关联取样信息------
+            this.recordSampleSubmit(dto, obj);
+
+            //------新增设备使用记录信息------
+            this.trialDeviceUseService.addDeviceUseInfo(dto);
+        }
+        return dto.getId().toString();
+    }
+
+    private void initBuildNumber(TrialSelfInspectionRecordDTO dto) {
         if (ObjectUtil.isEmpty(dto.getId()) && StringUtils.isNotEmpty(dto.getTableType())) {
             //构建记录表编号、报告单编号
             this.buildNumber(dto);
-
-            //任务流程状态初始化未上报
             dto.setTaskStatus("未上报");
         }
+    }
 
-        //初始化tabIds
+    private void initTrialTabIds(TrialSelfInspectionRecordDTO dto) {
         JSONArray dataArray = dto.getDataInfo().getJSONArray("orderList");
         List<String> tableIds = new ArrayList<>();
         for (int i = 0; i < dataArray.size(); i++) {
             String pkeyId = dataArray.getJSONObject(i).getString("pkeyId");
             tableIds.add(pkeyId);
         }
-        String join = org.apache.commons.lang.StringUtils.join(tableIds, ",");
+        List<String> ids = tableIds.stream().distinct().collect(Collectors.toList());
+        String join = org.apache.commons.lang.StringUtils.join(ids, ",");
         dto.setTableIds(join);
 
-        this.saveOrUpdate(dto);
-
-        if (ObjectUtil.isNotEmpty(dto.getId())) {
-            //获取当前最新的试验记录信息
-            TrialSelfInspectionRecord obj = baseMapper.selectById(dto.getId());
-
-            //编辑时生成记录表编号或报告单编号,如果新增时不是两种类型表都填报过,那么有一项编号为Null
-            if (StringUtils.isEmpty(obj.getRecordNo()) && dto.getTableType().contains("1")) {
-                this.buildNumber(dto);
-                this.saveOrUpdate(dto);
-            } else if (StringUtils.isEmpty(obj.getReportNo()) && dto.getTableType().contains("2")) {
-                this.buildNumber(dto);
-                this.saveOrUpdate(dto);
-            }
-
-            //------保存实体表数据、试验记录信息、生成pdf------
-            try {
-                String pdfURL = excelTabClient.saveTabData(dto.getIsBatchSave(), dto.getDataInfo(), dto.getType(), dto.getTableType(), dto.getId(), obj.getTableIds());
-                if (StringUtils.isNotEmpty(pdfURL)) {
-                    //修改合并pdf
-                    this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate().set(TrialSelfInspectionRecord::getPdfUrl, pdfURL).eq(TrialSelfInspectionRecord::getId, dto.getId()));
+        // TODO 如果前端处理了隐藏表入参的情况(即:隐藏表单pKeyId不传),那么接口就不处理
+        /*//获取按钮状态,是否为隐藏表单,移除隐藏表单(编辑时)
+        if (ObjectUtils.isNotEmpty(dto.getId())) {
+            List<TrialSelfDataRecord> tabStatus = jdbcTemplate.query("select is_buss_show,tab_id from u_trial_self_data_record where record_id = " + dto.getId(), new BeanPropertyRowMapper<>(TrialSelfDataRecord.class));
+            if (tabStatus.size() > 0) {
+                Map<Long, TrialSelfDataRecord> collect = tabStatus.stream().collect(Collectors.toMap(TrialSelfDataRecord::getTabId, Function.identity()));
+                List<Long> pKeyIds = Func.toLongList(dto.getTableIds());
+                List<Long> addPkeyIds = new ArrayList<>();
+                for (Long pId : pKeyIds) {
+                    TrialSelfDataRecord record = collect.get(pId);
+                    if (record != null) {
+                        //隐藏的不添加
+                        if (!new Integer(2).equals(record.getIsBussShow())) {
+                            addPkeyIds.add(pId);
+                        }
+                    } else {
+                        //未生成记录的添加进去
+                        addPkeyIds.add(pId);
+                    }
                 }
-            } catch (Exception e) {
-                throw new ServiceException("保存实体表数据生成pdf时发生异常" + e.getMessage());
+                //重新赋值
+                String joinNew = org.apache.commons.lang.StringUtils.join(addPkeyIds, ",");
+                dto.setTableIds(joinNew);
             }
+        } else {
+            //获取按钮状态,是否为隐藏表单,移除隐藏表单(新增时)
+            String tablePkeyIds = dto.getTableIds();
+            List<WbsTreePrivate> tableList = jdbcTemplate.query("select is_buss_show,p_key_id from m_wbs_tree_private where status = 1 and p_key_id in(" + tablePkeyIds + ")", new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+            List<Long> addPkeyIds = tableList.stream().filter(f -> ObjectUtils.isNotEmpty(f.getIsBussShow()) && !(new Integer(2).equals(f.getIsBussShow()))).map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
+
+            //重新赋值
+            String joinNew = org.apache.commons.lang.StringUtils.join(addPkeyIds, ",");
+            dto.setTableIds(joinNew);
+        }*/
+    }
 
-            //------关联原材料检测报告------
-            RawMaterialSubmitRelationDTO relationDTO = new RawMaterialSubmitRelationDTO();
-            relationDTO.setId(obj.getId().toString());
-            relationDTO.setIds(dto.getRawMaterialIds());
-            relationDTO.setNodeId(dto.getNodeId().toString());
-            relationDTO.setContractId(dto.getContractId().toString());
-            relationDTO.setProjectId(dto.getProjectId());
-            relationDTO.setType(dto.getType());
-            this.rawMaterialSubmitRelation(relationDTO, obj);
-
-            //------关联取样信息------
-            RecordSampleSubmitDTO recordSampleSubmitDTO = new RecordSampleSubmitDTO();
-            recordSampleSubmitDTO.setId(obj.getId());
-            recordSampleSubmitDTO.setSampleIds(dto.getSampleIds());
-            this.recordSampleSubmit(recordSampleSubmitDTO);
-
-            //------新增设备使用记录信息------
-            this.trialDeviceUseService.addDeviceUseInfo(dto);
+    private void reBuildNumber(TrialSelfInspectionRecord obj, TrialSelfInspectionRecordDTO dto) {
+        if (StringUtils.isEmpty(obj.getRecordNo()) && dto.getTableType().contains("1")) {
+            this.buildNumber(dto);
+            this.saveOrUpdate(dto);
+        } else if (StringUtils.isEmpty(obj.getReportNo()) && dto.getTableType().contains("2")) {
+            this.buildNumber(dto);
+            this.saveOrUpdate(dto);
         }
+    }
 
-        //返回当前记录id
-        return dto.getId().toString();
+    @Async
+    public void submitTrialData(TrialSelfInspectionRecord obj, TrialSelfInspectionRecordDTO dto) {
+        try {
+            String pdfURL = excelTabClient.saveTabData(dto.getIsBatchSave(), dto.getDataInfo(), dto.getType(), dto.getTableType(), dto.getId(), obj.getTableIds());
+            if (StringUtils.isNotEmpty(pdfURL)) {
+                this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate().set(TrialSelfInspectionRecord::getPdfUrl, pdfURL).eq(TrialSelfInspectionRecord::getId, dto.getId()));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
-    @Override
     @Async
-    public boolean recordSampleSubmit(RecordSampleSubmitDTO dto) {
+    public boolean recordSampleSubmit(TrialSelfInspectionRecordDTO dto1, TrialSelfInspectionRecord obj) {
+        RecordSampleSubmitDTO dto = new RecordSampleSubmitDTO();
+        dto.setId(obj.getId());
+        dto.setSampleIds(dto1.getSampleIds());
         if (ObjectUtil.isEmpty(dto.getId())) {
             throw new ServiceException("请先保存填报数据后,再关联取样信息");
         }
@@ -801,6 +781,74 @@ public class TrialSelfInspectionRecordServiceImpl
         return true;
     }
 
+    @Async
+    public boolean rawMaterialSubmitRelation(TrialSelfInspectionRecordDTO dto1, TrialSelfInspectionRecord obj) throws FileNotFoundException {
+        RawMaterialSubmitRelationDTO dto = new RawMaterialSubmitRelationDTO();
+        dto.setId(dto1.getId().toString());
+        dto.setIds(dto1.getRawMaterialIds());
+        dto.setNodeId(dto1.getNodeId().toString());
+        dto.setContractId(dto1.getContractId().toString());
+        dto.setProjectId(dto1.getProjectId());
+        dto.setType(dto1.getType());
+        if (ObjectUtil.isEmpty(dto.getId())) {
+            throw new ServiceException("请先保存填报数据后,再关联原材检测报告信息");
+        } else {
+            if (ObjectUtil.isNotEmpty(obj) && (("已审批").equals(obj.getTaskStatus()) || ("待审批").equals(obj.getTaskStatus()))) {
+                throw new ServiceException("当前填报数据已上报,无法进行关联操作");
+            }
+
+            //新增或编辑
+            if (StringUtils.isNotEmpty(dto.getIds())) {
+                //当前关联的原材料记录id
+                List<String> ids = Func.toStrList(dto.getIds());
+
+                //获取原材料的pdf
+                List<TrialSelfInspectionRecord> recordList = baseMapper.selectList(Wrappers.<TrialSelfInspectionRecord>lambdaQuery()
+                        .select(TrialSelfInspectionRecord::getPdfUrl, TrialSelfInspectionRecord::getId)
+                        .in(TrialSelfInspectionRecord::getId, ids).eq(TrialSelfInspectionRecord::getStatus, 1));
+                List<TrialSelfInspectionRecord> recordObjList = recordList.stream().filter(f -> !f.getId().equals(Long.parseLong(dto.getId()))).collect(Collectors.toList());
+                List<String> pdfUrlAll = new ArrayList<>();
+                if (recordObjList.size() > 0) {
+                    pdfUrlAll.addAll(recordObjList.stream().filter(f -> StringUtils.isNotEmpty(f.getPdfUrl())).map(TrialSelfInspectionRecord::getPdfUrl).collect(Collectors.toList()));
+                }
+
+                if (pdfUrlAll.size() > 0) {
+                    String filePath = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+                    String listPdf = filePath + "/pdf/" + dto.getNodeId() + ".pdf";
+                    File tabPDF = ResourceUtil.getFile(listPdf);
+                    if (tabPDF.exists()) {
+                        tabPDF.delete();
+                    }
+                    FileUtils.mergePdfPublicMethods(pdfUrlAll, listPdf);
+                    BladeFile bladeFile = this.newIOSSClient.uploadFile(dto.getNodeId() + ".pdf", listPdf);
+
+                    //删除记录关系
+                    String sql1 = "delete from u_trial_raw_material_self_record where self_record_id ='" + dto.getId() + "'";
+                    jdbcTemplate.execute(sql1);
+                    //新增记录关系
+                    for (String recordId : ids) {
+                        if (!recordId.equals(dto.getId())) {
+                            String sql2 = "insert into u_trial_raw_material_self_record(id,self_record_id,raw_material_record_id,old_pdf_url) values(" + SnowFlakeUtil.getId() + "," + dto.getId() + "," + recordId + ",'" + bladeFile.getLink() + "')";
+                            jdbcTemplate.execute(sql2);
+                        }
+                    }
+                    return true;
+                }
+
+            } else {
+                //删除全部
+                String sql = "select id from u_trial_raw_material_self_record where self_record_id =" + dto.getId();
+                List<TrialRawMaterialSelfRecord> recordList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TrialRawMaterialSelfRecord.class));
+                if (recordList.size() > 0) {
+                    String sql1 = "delete from u_trial_raw_material_self_record where self_record_id ='" + dto.getId() + "'";
+                    jdbcTemplate.execute(sql1);
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
     private void buildNumber(TrialSelfInspectionRecordDTO dto) {
         StringSPUtils spUtils = new StringSPUtils();
         List<TrialSelfInspectionRecord> result = baseMapper.selectAll(dto.getNodeId(), dto.getContractId());
@@ -960,8 +1008,7 @@ public class TrialSelfInspectionRecordServiceImpl
         }
     }
 
-    public IPage<TrialSelfInspectionRecordVO> trialDataPage
-            (IPage<TrialSelfInspectionRecord> page, TrialSelfInspectionRecordPageDTO dto) {
+    public IPage<TrialSelfInspectionRecordVO> trialDataPage(IPage<TrialSelfInspectionRecord> page, TrialSelfInspectionRecordPageDTO dto) {
         QueryWrapper<TrialSelfInspectionRecord> queryWrapper = Condition.getQueryWrapper(dto);
         if (org.apache.commons.lang.StringUtils.isNotEmpty(dto.getStartTime()) && org.apache.commons.lang.StringUtils.isNotEmpty(dto.getEndTime())) {
             String endTime = dto.getEndTime();

+ 6 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -615,19 +615,18 @@ public class WbsTreePrivateController extends BladeController {
     @ApiOperationSupport(order = 22)
     @ApiOperation(value = "试验-根据所属方查询当前节点表信息", notes = "传入节点primaryKeyId、所属方type=1施工/=2监理、表单类型tableType=1记录表/=2报告单、合同段id、项目id、isAdd=是否新增、试验记录id")
     public R<List<WbsTreePrivateVO4>> searchNodeAllTable(String primaryKeyId, String type, String tableType, String contractId, String projectId, Integer isAdd, Long id) {
-        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateService.searchNodeAllTable(primaryKeyId, type, tableType, contractId, projectId, isAdd, id);
-        List<WbsTreePrivateVO4> wbsTreePrivateVO4s = BeanUtil.copyProperties(wbsTreePrivates, WbsTreePrivateVO4.class);
+        List<WbsTreePrivateVO4> wbsTreePrivateVO4s = wbsTreePrivateService.searchNodeAllTable(primaryKeyId, type, tableType, contractId, projectId, isAdd, id);
         for (WbsTreePrivateVO4 treePrivate : wbsTreePrivateVO4s) {
-            //新增
+            //试验新增
             if ((new Integer(1).equals(isAdd)) && ObjectUtil.isEmpty(id)) {
                 //按钮状态
                 treePrivate.setPdfUrl(null);
-                treePrivate.setIsBussShow(1);
+                //treePrivate.setIsBussShow(1); //新增时通过项目wbs表的isBussShow字段单独控制
                 treePrivate.setIsTabPdf(1);
                 treePrivate.setTabFileType(1);
             }
 
-            //编辑
+            //试验编辑
             if (ObjectUtil.isNotEmpty(id)) {
                 //获取当前试验记录信息中表的按钮状态
                 String sql = "select tab_id,is_buss_show,is_tab_pdf,is_tab_file_type from u_trial_self_data_record where record_id = " + id;
@@ -636,12 +635,12 @@ public class WbsTreePrivateController extends BladeController {
                 //按钮状态
                 TrialSelfDataRecord record = map.get(treePrivate.getPKeyId());
                 if (record != null) {
-                    treePrivate.setIsBussShow(record.getIsBussShow());
+                    treePrivate.setIsBussShow(record.getIsBussShow()); //编辑时通过试验记录关联关系控制
                     treePrivate.setIsTabPdf(record.getIsTabPdf());
                     treePrivate.setTabFileType(record.getIsTabFileType());
                 } else {
                     treePrivate.setPdfUrl(null);
-                    treePrivate.setIsBussShow(1);
+                    //treePrivate.setIsBussShow(1); //没有记录的就根据项目wbs表的isBussShow字段单独控制
                     treePrivate.setIsTabPdf(1);
                     treePrivate.setTabFileType(1);
                 }

+ 11 - 12
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java

@@ -26,7 +26,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @RestController
@@ -46,22 +49,20 @@ public class ExcelTabClientImpl implements ExcelTabClient {
     @Override
     public String saveTabData(Integer isBatchSave, JSONObject dataInfo, Integer type, String tableType, Long id, String tabIds) throws Exception {
         //通用参数
+        String pdfUrl = "";
         JSONArray dataArray = dataInfo.getJSONArray("orderList");
         JSONObject table = dataArray.getJSONObject(0);
         String nodeId = table.getString("nodeId");
         String projectId = table.getString("projectId");
         String contractId = table.getString("contractId");
-        List<TableInfo> tableInfoList = this.excelTabService.getTableInfoList(dataArray);
-        String pdfUrl = "";
 
-        /**
-         * ------试验填报数据保存,当前记录id作为groupId------
-         */
+        //获取表模板,已处理隐藏表问题
+        List<TableInfo> tableInfoList = this.excelTabService.getTableInfoListTrial(dataArray,tabIds);
+
+        //------试验填报数据保存,当前记录id作为groupId------
         this.excelTabService.saveOrUpdateInfoTrial(tableInfoList, id);
 
-        /**
-         * ------公式填充------
-         */
+        //------公式填充------
         try {
             this.excelTabService.formulaFillData(tableInfoList, Long.parseLong(nodeId));
         } catch (Exception e) {
@@ -69,13 +70,11 @@ public class ExcelTabClientImpl implements ExcelTabClient {
         }
 
         if (isBatchSave == 0) {
-            /**
-             * ------单表PDF保存------
-             */
+            //------单表PDF保存------
             TableInfo tableInfo = tableInfoList.stream().findAny().orElse(null);
             assert tableInfo != null;
             if (tabIds.contains(tableInfo.getPkeyId())) {
-
+                //构造pdf
                 excelTabService.getBussPDFTrial(Long.valueOf(tableInfo.getPkeyId()), contractId, id);
 
                 //重新合并pdf

+ 4 - 18
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreePrivateClientImpl.java

@@ -7,17 +7,17 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.mixsmart.utils.StringUtils;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springblade.common.utils.SnowFlakeUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.TrialSelfDataRecord;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
 import org.springblade.manager.vo.WbsTreePrivateVO;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -64,20 +64,6 @@ public class WbsTreePrivateClientImpl implements WbsTreePrivateClient {
         return null;
     }
 
-    @Override
-    public boolean showBussTab(Long pkeyId, Integer status) {
-        WbsTreePrivate wbsTreePrivate = wbsTreePrivateService.getBaseMapper().selectOne(Wrappers.<WbsTreePrivate>query().lambda()
-                .eq(WbsTreePrivate::getPKeyId, pkeyId));
-        if (wbsTreePrivate == null) {
-            throw new ServiceException("未找到当前表单");
-        }
-        UpdateWrapper<WbsTreePrivate> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.in("p_key_id", pkeyId);
-        updateWrapper.set("is_buss_show", status);
-        wbsTreePrivateService.update(updateWrapper);
-        return true;
-    }
-
     @Override
     public boolean copyBussTab(Long pKeyId) {
         WbsTreePrivate wbsTreePrivate = wbsTreePrivateService.getBaseMapper().selectOne(Wrappers.<WbsTreePrivate>query().lambda()
@@ -174,7 +160,7 @@ public class WbsTreePrivateClientImpl implements WbsTreePrivateClient {
     }
 
     @Override
-    public List<WbsTreePrivate> queryChildByParent(WbsTreePrivate nodeObj , String queryTable, String classify) {
+    public List<WbsTreePrivate> queryChildByParent(WbsTreePrivate nodeObj, String queryTable, String classify) {
         if ("queryTable".equals(queryTable)) {
             LambdaQueryWrapper<WbsTreePrivate> wrapper = Wrappers.lambdaQuery();
             wrapper.eq(WbsTreePrivate::getParentId, nodeObj.getId()).eq(WbsTreePrivate::getProjectId, nodeObj.getProjectId()).eq(WbsTreePrivate::getType, "2");

+ 2 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -8,10 +8,7 @@ import org.springblade.manager.entity.TableInfo;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.injector.EasyBaseMapper;
-import org.springblade.manager.vo.TreeNodeVOByTabType;
-import org.springblade.manager.vo.WbsNodeTableVO;
-import org.springblade.manager.vo.WbsTreePrivateVO;
-import org.springblade.manager.vo.WbsTreeVO2;
+import org.springblade.manager.vo.*;
 
 import java.util.List;
 
@@ -86,7 +83,7 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
 
     void delTabProjectById(String pKeyId,String projectId);
 
-    List<WbsTreePrivate> selectWbsTreeContractList(List<String> roleAndTabOwners,String tableType, String projectId, String wbsId, Long parentId, List<String> tableOwnerList);
+    List<WbsTreePrivateVO4> selectWbsTreeContractList(List<String> roleAndTabOwners, String tableType, String projectId, String wbsId, Long parentId, List<String> tableOwnerList);
 
     //删除表单信息
     void delTableById(String pKeyId);

+ 24 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -685,8 +685,30 @@
 
     </select>
 
-    <select id="selectWbsTreeContractList" resultType="org.springblade.manager.entity.WbsTreePrivate">
-        SELECT * FROM
+    <select id="selectWbsTreeContractList" resultType="org.springblade.manager.vo.WbsTreePrivateVO4">
+        SELECT
+            p_key_id,
+            node_name,
+            node_type,
+            is_link_table,
+            is_tab_pdf,
+            is_buss_show,
+            tab_file_type,
+            wbs_id,
+            wbs_type,
+            html_url,
+            excel_id,
+            project_id,
+            type,
+            table_type,
+            table_owner,
+            init_table_name,
+            init_table_id,
+            fill_rate,
+            pdf_url,
+            sort,
+            create_time
+        FROM
         m_wbs_tree_private
         WHERE project_id = #{projectId}
         AND wbs_id = #{wbsId}

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

@@ -113,8 +113,11 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
     // 多个pdf 合并
     void getBussPdfs(String nodeId, String classify, String contractId, String projectId) throws Exception;
 
-
     // 试验
+    /**
+     * 表格数据封装 - 试验
+     */
+    List<TableInfo> getTableInfoListTrial(JSONArray dataArray, String tabIds);
 
     /**
      * 结果信息持久化 - 试验

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

@@ -71,7 +71,7 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
     // 元素关联
     R saveLinkeTableInfo(String tabId, String linkids, String type, String wbsId);
 
-    List<WbsTreePrivate> searchNodeAllTable(String primaryKeyId, String type, String tableType, String contractId, String projectId, Integer isAdd, Long id);
+    List<WbsTreePrivateVO4> searchNodeAllTable(String primaryKeyId, String type, String tableType, String contractId, String projectId, Integer isAdd, Long id);
 
     Object getExcelHtml(String primaryKeyId) throws IOException;
 

+ 102 - 13
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -720,7 +720,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         if (ListUtils.isNotEmpty(tableInfoList)) {
             //施工资料填报
             String pkids = "";
-            StringBuilder log =new StringBuilder("异常:");
+            StringBuilder log = new StringBuilder("异常:");
             try {
                 for (TableInfo tableInfo : tableInfoList) {
                     WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
@@ -798,23 +798,23 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 e.printStackTrace();
                 return R.fail("操作失败");
             }
-            if(log.length()>5){
+            if (log.length() > 5) {
                 return R.fail(reason(log.toString()));
             }
         }
         return R.success("操作成功");
     }
 
-    public String reason(String log){
+    public String reason(String log) {
         /*字段过短提示*/
         StringBuilder sb = new StringBuilder();
-        String[] part= log.split("@@");
-        for(String p:part){
-            Matcher m = RegexUtils.matcher("(m_\\d{14}_\\d{19})\\((.+)\\)VALUES\\(([^)]+)\\).+column'(key_\\d{0,2})'",p.replaceAll("[\\n\\s]*",""));
-            if(m.find()){
-                List<Map<String,Object>> result=this.jdbcTemplate.queryForList("select CONCAT(a.tab_ch_name,'&',b.e_name) tf from m_table_info a join m_wbs_form_element b on b.f_id=a.id where a.tab_en_name='"+m.group(1)+"' and  b.e_key='"+m.group(4)+"'");
-                if(result.size()>0){
-                   sb.append("【").append(result.get(0).values().stream().map(String::valueOf).collect(Collectors.joining(","))).append("】");
+        String[] part = log.split("@@");
+        for (String p : part) {
+            Matcher m = RegexUtils.matcher("(m_\\d{14}_\\d{19})\\((.+)\\)VALUES\\(([^)]+)\\).+column'(key_\\d{0,2})'", p.replaceAll("[\\n\\s]*", ""));
+            if (m.find()) {
+                List<Map<String, Object>> result = this.jdbcTemplate.queryForList("select CONCAT(a.tab_ch_name,'&',b.e_name) tf from m_table_info a join m_wbs_form_element b on b.f_id=a.id where a.tab_en_name='" + m.group(1) + "' and  b.e_key='" + m.group(4) + "'");
+                if (result.size() > 0) {
+                    sb.append("【").append(result.get(0).values().stream().map(String::valueOf).collect(Collectors.joining(","))).append("】");
                 }
             }
         }
@@ -1070,14 +1070,14 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         reData.remove("contractId");
         reData.remove("pkeyId");
         reData.remove("projectId");
-        reData.put("tabGroupId",wbsTreeContract.getTabGroupId());
+        reData.put("tabGroupId", wbsTreeContract.getTabGroupId());
         return R.data(reData);
     }
 
     @Override
     public R getBussPdfInfo(Long pkeyId) throws Exception {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-       // String file_path = "/Users/hongchuangyanfa/Desktop/";
+        // String file_path = "/Users/hongchuangyanfa/Desktop/";
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
 
@@ -1423,6 +1423,92 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         jdbcTemplate.execute(sql);
     }
 
+    @Override
+    public List<TableInfo> getTableInfoListTrial(JSONArray dataArray, String tabIds) {
+        if (dataArray != null && !dataArray.isEmpty()) {
+            List<TableInfo> result = new ArrayList<>();
+            for (int m = 0; m < dataArray.size(); m++) {
+                TableInfo tableInfo = new TableInfo();
+                JSONObject dataInfo2 = dataArray.getJSONObject(m);
+                tableInfo.setPkeyId(dataInfo2.getString("pkeyId"));
+
+                if (!tabIds.contains(tableInfo.getPkeyId())) {
+                    //隐藏表不做处理
+                    continue;
+                }
+
+                tableInfo.setContractId(dataInfo2.getString("contractId"));
+                tableInfo.setProjectId(dataInfo2.getString("projectId"));
+
+                //填报的类型,施工或监理
+                tableInfo.setClassify(dataInfo2.getString("classify"));
+                //设置首件信息
+                this.setFirstData(dataInfo2, tableInfo);
+                //设置日志信息
+                this.setTheLogData(dataInfo2, tableInfo);
+
+                dataInfo2.fluentRemove("contractId")
+                        .fluentRemove("pkeyId")
+                        .fluentRemove("p_key_id")
+                        .fluentRemove("projectId")
+                        .fluentRemove("classify")
+                        .fluentRemove("pickerKey")
+                        .fluentRemove("id")
+                        .fluentRemove("isFirst")
+                        .fluentRemove("firstNodeId")
+                        .fluentRemove("isTheLog")
+                        .fluentRemove("theLogId")
+                        .fluentRemove("linkTabIds")
+                        .fluentRemove("recordTime")
+                        .fluentRemove("businessId")
+                        .fluentRemove("sourceUrl")
+                        .fluentRemove("pdfUrl")
+                        .fluentRemove("firstFileName")
+                        .fluentRemove("");
+                //计算数据
+                LinkedHashMap<String, List<String>> dataMap = dataInfo2.keySet().stream().filter(e -> e.contains("__")).collect(Collectors.groupingBy(e -> e.split("__")[0], LinkedHashMap<String, List<String>>::new, Collectors.toList()));
+                LinkedHashMap<String, String> dataMap2 = new LinkedHashMap<>();
+                //字段组合
+                for (String k : dataMap.keySet()) {
+                    if (dataMap.get(k).size() > 1 && !dataMap.get(k).contains("000Z")) {
+                        String[] ziduan = dataMap.get(k).toArray(new String[]{});
+                        String temp = "";
+                        for (int i = 0; i < ziduan.length - 1; i++) {
+                            for (int j = 0; j < ziduan.length - i - 1; j++) {
+                                int tr = Integer.parseInt((ziduan[j].split("__")[1]).split("_")[0]);
+                                int td = Integer.parseInt(ziduan[j].split("__")[1].split("_")[1]);
+                                int tr_1 = Integer.parseInt(ziduan[j + 1].split("__")[1].split("_")[0]);
+                                int td_1 = Integer.parseInt(ziduan[j + 1].split("__")[1].split("_")[1]);
+                                if (tr > tr_1 && td == td_1) { //纵向排序
+                                    temp = ziduan[j];
+                                    ziduan[j] = ziduan[j + 1];
+                                    ziduan[j + 1] = temp;
+                                }
+                            }
+                        }
+                        StringBuilder lastStr = new StringBuilder(dataInfo2.getString(ziduan[0]) + "_^_" + ziduan[0].split("__")[1]);
+                        for (int i = 1; i < ziduan.length; i++) {
+                            String keyData = dataInfo2.getString(ziduan[i]);
+                            if (!keyData.equals("")) {
+                                lastStr.append("☆").append(dataInfo2.getString(ziduan[i])).append("_^_").append(ziduan[i].split("__")[1]);
+                            }
+
+                        }
+                        dataMap2.put(k, lastStr.toString());
+                    } else {
+                        String dataVal = dataInfo2.getString(dataMap.get(k).get(0));
+                        dataMap2.put(k, dataVal + "_^_" + dataMap.get(k).get(0).split("__")[1]);
+                    }
+                }
+                dataMap2.put("p_key_id", tableInfo.getPkeyId());
+                tableInfo.setDataMap(dataMap2);
+                result.add(tableInfo);
+            }
+            return result;
+        }
+        return null;
+    }
+
     /**
      * 试验 获取填报信息
      */
@@ -1956,12 +2042,14 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         //获取有权限的节点信息
         String sql = "select p_key_id,html_url,table_type from m_wbs_tree_private where is_deleted = 0 and p_key_id in (" + tabIds + ")";
         List<WbsTreePrivate> queryList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
-        //合并pdfUrlsList,报告单在前记录表在后
+
         List<String> dataPdfUrls = new ArrayList<>();
+
         //报告单
         List<WbsTreePrivate> reportTable = queryList.stream().filter(f -> f.getTableType() == 2).collect(Collectors.toList());
         //记录表
         List<WbsTreePrivate> recordTable = queryList.stream().filter(f -> f.getTableType() == 1).collect(Collectors.toList());
+
         if (queryList.size() > 0) {
             for (WbsTreePrivate report : reportTable) {
                 //没有excel表单的不生成pdf
@@ -1974,6 +2062,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }
             }
             for (WbsTreePrivate record : recordTable) {
+                //没有excel表单的不生成pdf
                 if (StringUtils.isNotEmpty(record.getHtmlUrl())) {
                     //生成记录表pdf
                     String bussPdfInfo = this.getBussPDFTrial(record.getPKeyId(), contractId, id);

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

@@ -1730,7 +1730,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
-    public List<WbsTreePrivate> searchNodeAllTable(String primaryKeyId, String tableOwner, String tableType, String contractId, String projectId, Integer isAdd, Long id) {
+    public List<WbsTreePrivateVO4> searchNodeAllTable(String primaryKeyId, String tableOwner, String tableType, String contractId, String projectId, Integer isAdd, Long id) {
         WbsTreePrivate wbsTreePrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
                 .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId, WbsTreePrivate::getId)
                 .eq(WbsTreePrivate::getPKeyId, primaryKeyId));