Jelajahi Sumber

内页台账需求

chenr 3 bulan lalu
induk
melakukan
227682e4f7
19 mengubah file dengan 393 tambahan dan 16 penghapusan
  1. 14 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/EKeyDto.java
  2. 9 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/NeiYeLedgerDto1.java
  3. 21 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/NeiYeLedgerVO1.java
  4. 16 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java
  5. 5 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreePrivateClient.java
  6. 197 1
      blade-service/blade-business/src/main/java/org/springblade/business/controller/NeiYeController.java
  7. 4 3
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java
  8. 7 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java
  9. 32 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java
  10. 8 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreePrivateClientImpl.java
  11. 7 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  12. 19 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  13. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  14. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  15. 3 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  16. 22 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  17. 11 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  18. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  19. 11 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/RandomNumberHolder.java

+ 14 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/EKeyDto.java

@@ -0,0 +1,14 @@
+package org.springblade.business.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class EKeyDto {
+    private String  eKey;
+    private String  initTableName;
+    private Long    pKeyId;
+}

+ 9 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/NeiYeLedgerDto1.java

@@ -0,0 +1,9 @@
+package org.springblade.business.dto;
+
+import lombok.Data;
+
+@Data
+public class NeiYeLedgerDto1 {
+    private Long pkeyId;
+    private Integer type;
+}

+ 21 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/NeiYeLedgerVO1.java

@@ -0,0 +1,21 @@
+package org.springblade.business.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class NeiYeLedgerVO1 {
+
+      private String className;   //单位工程
+      private String partName;   //分部工程
+      private String subPartName; //子分部工程
+      private String unitName;   //单元工程
+      private Integer unitCount;  //单元工程个数
+      private Integer passCount;  //合格数量
+      private Integer goodCount;  //优良个数
+      private String  goodRate;   //优良率
+
+}

+ 16 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.feign;
 
+import org.springblade.business.dto.EKeyDto;
 import org.springblade.manager.entity.ContractRelationJlyz;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.vo.AppWbsTreeContractVO;
@@ -22,6 +23,9 @@ public interface WbsTreeContractClient {
      */
     String API_PREFIX = "/api/manager/WbsTreeContract";
 
+    @GetMapping(API_PREFIX + "/getTables")
+    List<WbsTreeContract> getTables(@RequestParam String contractId, @RequestParam Long id, @RequestParam String wbsId) ;
+
     @GetMapping(API_PREFIX + "/queryContractTreeNodeByPKeyId")
     WbsTreeContract queryContractTreeNodeByPKeyId(@RequestParam Long toCopyNodePKeyId);
 
@@ -186,4 +190,16 @@ public interface WbsTreeContractClient {
 
     @PostMapping(API_PREFIX + "/selectContractJLForm")
     List<WbsTreeContractTreeVOS> selectContractJLForm(@RequestBody List<Long> removeList);
+
+    @GetMapping(API_PREFIX + "/getById")
+    WbsTreeContract getById(@RequestParam Long pkeyId);
+
+    @GetMapping(API_PREFIX + "/getAncestors")
+    List<WbsTreeContract> getAncestors(@RequestParam String ancestors);
+
+    @GetMapping(API_PREFIX +"/get-node-typ6")
+    List<WbsTreeContract> getNodeTyp6(@RequestParam Long pKeyId);
+
+    @GetMapping(API_PREFIX + "/get-ekey")
+    EKeyDto getEKey(@RequestParam String contractId, @RequestParam Long pKeyId, @RequestParam String wbsId);
 }

+ 5 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreePrivateClient.java

@@ -82,7 +82,11 @@ public interface WbsTreePrivateClient {
     R<WbsTreePrivate> getProjectOpinionNode(@RequestParam Long projectId);
 
 
-    @GetMapping("/search-node-tables")
+    @GetMapping(API_PREFIX +"/search-node-tables")
      R<List<WbsTreePrivateVO4>> searchNodeAllTable(@RequestParam String primaryKeyId,@RequestParam String type,@RequestParam String tableType, @RequestParam String contractId,@RequestParam String projectId,@RequestParam Integer isAdd,@RequestParam Long id) ;
 
+    @GetMapping(API_PREFIX +"/get-node-class")
+    WbsTreePrivate getNodeClass(@RequestParam Long isTypePrivatePid);
+
+
 }

+ 197 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/NeiYeController.java

@@ -1,34 +1,50 @@
 package org.springblade.business.controller;
 
 import cn.hutool.core.date.DateUtil;
+import com.aspose.cells.Workbook;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
 import org.apache.commons.lang.StringUtils;
+import org.springblade.business.dto.EKeyDto;
+import org.springblade.business.dto.NeiYeLedgerDto1;
 import org.springblade.business.entity.ConstructionLedger;
 import org.springblade.business.entity.Task;
 import org.springblade.business.feign.TaskClient;
 import org.springblade.business.service.IConstructionLedgerService;
 import org.springblade.business.service.IInformationQueryService;
 import org.springblade.business.vo.NeiYeLedgerVO;
+import org.springblade.business.vo.NeiYeLedgerVO1;
 import org.springblade.business.vo.NeiYeQueryVO;
 import org.springblade.business.vo.QueryProcessDataVO;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
+import org.springblade.manager.feign.WbsTreePrivateClient;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.web.bind.annotation.*;
 import org.springblade.core.mp.support.Query;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -40,6 +56,8 @@ public class NeiYeController {
 
     private final WbsTreeContractClient wbsTreeContractClient;
 
+    private final WbsTreePrivateClient wbsTreePrivatClient;
+
     private final IConstructionLedgerService constructionLedgerService;
 
     private final IInformationQueryService informationQueryService;
@@ -93,7 +111,7 @@ public class NeiYeController {
                 if (node.getParentId() == 0) {
                     queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo("", contractType, contractId);
                 } else {
-                    queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(node.getId().toString(), contractType, contractId);
+                    queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(node.getPKeyId().toString(), contractType, contractId);
                 }
             } else {
                 //填报节点
@@ -276,6 +294,184 @@ public class NeiYeController {
         return R.data(300, null, "未查询到数据");
     }
 
+
+    @PostMapping("/queryCurrentNodeNeiYeLedger1")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "获取内业台账列表(水利)")
+    public R<List<NeiYeLedgerVO1>>queryCurrentNodeNeiYeLedger1(@RequestBody NeiYeLedgerDto1 dto){
+        Integer type=dto.getType();
+        //初始数据  type=1最后返回vo1,type=2就复制在修改组装成一个集合
+        NeiYeLedgerVO1 vo1 = new NeiYeLedgerVO1();
+        List<NeiYeLedgerVO1>voList = new ArrayList<>();
+        //查出当前节点的信息contract
+        WbsTreeContract wbsTreeContract = wbsTreeContractClient.getById(dto.getPkeyId());
+        if(wbsTreeContract!=null){
+            String ancestors = wbsTreeContract.getAncestors();
+            //将父级节点全部查出来
+           List<WbsTreeContract> ancetorsList=wbsTreeContractClient.getAncestors(ancestors);
+           if(ancetorsList.size()>0){
+               for (WbsTreeContract contract : ancetorsList) {
+                   if(new Integer("1").equals(contract.getNodeType())&&contract.getParentId()!=0L){
+                       //类型属于1则为单位工程
+                       vo1.setClassName(contract.getNodeName());
+                   }else if(new Integer("2").equals(contract.getNodeType())){
+                       //类型属于2则为分部工程
+                       vo1.setPartName(contract.getNodeName());
+                   }else if(new Integer("3").equals(contract.getNodeType())){
+                       //类型属于3则为子分部工程
+                       vo1.setSubPartName(contract.getNodeName());
+                   }
+               }
+           }
+           if(wbsTreeContract.getNodeType()==1){
+               vo1.setClassName(wbsTreeContract.getNodeName());
+           } else if (wbsTreeContract.getNodeType()==2) {
+               vo1.setPartName(wbsTreeContract.getNodeName());
+           }else if(wbsTreeContract.getNodeType()==3){
+               vo1.setPartName(wbsTreeContract.getNodeName());
+           }
+            //如果选择的节点正好是工序则直接将单元查出来
+            if(wbsTreeContract.getNodeType()==6){
+                Integer unitNameNum=0;
+                if(wbsTreeContract!=null&&wbsTreeContract.getUnitName()!=null){
+                    unitNameNum=wbsTreeContract.getUnitName();
+                }
+               if(unitNameNum!=null&&unitNameNum!=0){
+                   String sql="select unit_name from m_classifcation where id="+unitNameNum;
+                   String unitName = jdbcTemplate.queryForObject(sql, new SingleColumnRowMapper<>(String.class));
+                   vo1.setUnitName(unitName);
+                   vo1.setUnitCount(1);
+               }else {
+                   return R.data(300,null,"该节点暂未设置单元工程名称");
+               }
+               //查询合格,优良,优良率
+                //查出当前节点下的单元工程施工质量验收评定表 后面需要改一下pid
+                List<WbsTreeContract> tables = wbsTreeContractClient.getTables(wbsTreeContract.getContractId(),wbsTreeContract.getPKeyId(),wbsTreeContract.getWbsId());
+                if(tables.size()>0){
+                    //评定节点
+                    WbsTreeContract nodeClass = tables.get(0);
+                    String elementSql = "SELECT * from m_wbs_form_element where f_id="+"(SELECT id from m_table_info Where tab_en_name=" + "'" + nodeClass.getInitTableName() + "')"+" and dynamic_dict=600";
+                    List<WbsFormElement> elements = jdbcTemplate.query(elementSql, new BeanPropertyRowMapper<>(WbsFormElement.class));
+                    String querySql = "select "+elements.get(0).getEKey()+" from " + nodeClass.getInitTableName() + " where p_key_id=" + nodeClass.getPKeyId();
+                    List<String> infos = jdbcTemplate.query(querySql, new SingleColumnRowMapper<>(String.class));
+                    String info="";
+                    if(!infos.isEmpty()){
+                        info = infos.get(0);
+                    }
+                    if(info!=null){
+                        if(info.indexOf("优良")>=0){
+                            vo1.setGoodCount(1);
+                            vo1.setPassCount(0);
+                            vo1.setGoodRate("100%");
+                        }else {
+                            vo1.setGoodCount(0);
+                            vo1.setPassCount(1);
+                            vo1.setGoodRate("0%");
+                        }
+                    }
+
+                }
+                voList.add(vo1);
+                return R.data(voList);
+            }
+            //如果点的不是工序,则需要先查出当前节点下的所有工序节点
+            List<WbsTreeContract> list = wbsTreeContractClient.getNodeTyp6(wbsTreeContract.getPKeyId());
+            if(list.size()>0){
+                Integer unitCount=0;
+                Integer passCount=0;
+                Integer goodCount=0;
+                for (WbsTreeContract contract : list) {
+                    NeiYeLedgerVO1 vo2 = new NeiYeLedgerVO1();
+                    BeanUtil.copyProperties(vo1,vo2);
+                    Integer unitNameNum=0;
+                    if(contract.getUnitName()!=null){
+                        unitNameNum=contract.getUnitName();
+                    }
+                    if(unitNameNum!=null&&unitNameNum!=0){
+                        String sql1="select unit_name from m_classifcation where id="+unitNameNum;
+                        String unitName = jdbcTemplate.queryForObject(sql1, new SingleColumnRowMapper<>(String.class));
+                        if (type==2){
+                            vo2.setUnitName(unitName);
+                            vo2.setUnitCount(1);
+                        }else {
+                            unitCount++;
+                        }
+
+                    }else {
+                        continue;
+                    }
+                    //查询合格,优良,优良率
+                    //查出当前节点下的单元工程施工质量验收评定表
+                    EKeyDto eKey = wbsTreeContractClient.getEKey(contract.getContractId(), contract.getPKeyId(), contract.getWbsId());
+    //                List<WbsTreeContract> tables = wbsTreeContractClient.getTables(contract.getContractId(),contract.getPKeyId(),contract.getWbsId());
+                    if(eKey!=null){
+                        //评定节点
+//                        WbsTreeContract nodeClass = tables.get(0);
+//                        String elementSql = "SELECT e_key from m_wbs_form_element where f_id="+"(SELECT id from m_table_info Where tab_en_name=" + "'" + nodeClass.getInitTableName() + "')"+" and dynamic_dict=600";
+//                        List<String> elements = jdbcTemplate.query(elementSql, new SingleColumnRowMapper<>(String.class));
+                        String querySql = "select "+eKey.getEKey()+" from " + eKey.getInitTableName() + " where p_key_id=" + eKey.getPKeyId();
+                        List<String> infos = jdbcTemplate.query(querySql, new SingleColumnRowMapper<>(String.class));
+                        String info="";
+                        if(!infos.isEmpty()){
+                            info = infos.get(0);
+                        }
+                        if(info!=null){
+                            if(info.indexOf("优良")>=0){
+                                if(type==2){
+                                    vo2.setGoodCount(1);
+                                    vo2.setPassCount(0);
+                                    vo2.setGoodRate("100%");
+                                }else {
+                                    goodCount++;
+                                }
+                            }else {
+                                if(type==2){
+                                    vo2.setGoodCount(0);
+                                    vo2.setPassCount(1);
+                                    vo2.setGoodRate("0%");
+                                }else {
+                                    passCount++;
+                                }
+                            }
+                        }
+                    }
+                    if(type==2){
+                        voList.add(vo2);
+                    }
+                }
+                if(type==2){
+                    return R.data(voList);
+                }
+                else if(type==1){
+                    vo1.setUnitCount(unitCount);
+                    vo1.setGoodCount(goodCount);
+                    vo1.setPassCount(passCount);
+                    vo1.setGoodRate(calculatePercentage(goodCount,unitCount));
+                    voList.add(vo1);
+                    return R.data(voList);
+                }
+            }
+        }
+        return R.data(300,null,"未查询到数据");
+    }
+
+    @SneakyThrows
+    @GetMapping("/downloadNeiYe")
+    @ApiOperationSupport(order = 13)
+    @ApiOperation(value = "客户端-下载元素表对应的excel模板")
+    public void downloadNeiYe(@RequestBody List<NeiYeLedgerVO1> list){
+
+    }
+    public static String calculatePercentage(Integer numerator, Integer denominator) {
+        if (denominator == null || denominator == 0) {
+            return "0%";
+        }
+        double percentage = (numerator.doubleValue() / denominator) * 100;
+        return String.format("%.0f%%", percentage); // 不带小数
+        // 或者 String.format("%.1f%%", percentage); // 带一位小数
+        // 或者 String.format("%.2f%%", percentage); // 带两位小数
+    }
+
     /**
      * 递归获取父节点信息
      *

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

@@ -1284,7 +1284,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
 
     public void submitTrialData(TrialSelfInspectionRecord obj, TrialSelfInspectionRecordDTO dto) {
         String pdfURL = excelTabClient.saveTabData(dto, dto.getIsBatchSave(), dto.getType(), dto.getTableType(), dto.getId(), obj.getTableIds());
-        if (StringUtils.isNotEmpty(pdfURL) && !pdfURL.equals("500")) {
+        if (StringUtils.isNotEmpty(pdfURL) && !pdfURL.startsWith("500")) {
             String file_path = FileUtils.getSysLocalFileUrl();
             Long snowId = SnowFlakeUtil.getId();
             String listPdf = file_path + "/pdf/" + snowId + ".pdf";
@@ -1321,8 +1321,9 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             if (ObjectUtil.isNotEmpty(updateSql)) {
                 jdbcTemplate.execute(updateSql);
             }
-        } else if (pdfURL.equals("500")) {
-            throw new ServiceException("试验填报保存操作失败");
+        } else if (pdfURL!=null&&pdfURL.startsWith("500")) {
+            pdfURL=pdfURL.substring(3);
+            throw new ServiceException(pdfURL);
         }
     }
 

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

@@ -36,6 +36,7 @@ import org.springblade.manager.service.IExcelTabService;
 import org.springblade.manager.service.IProjectInfoService;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.utils.FileUtils;
+import org.springblade.manager.utils.RandomNumberHolder;
 import org.springblade.manager.vo.TrialSelfDataRecordVO1;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -88,6 +89,8 @@ public class ExcelTabClientImpl implements ExcelTabClient {
 
         List<TableInfo> tableInfoList = this.excelTabService.getTableInfoListTrial(dataArray, tabIds);
         try {
+            //试验特殊处理
+            RandomNumberHolder.setTrialSelfInspectionRecordGroupId(dto.getId());
             //------公式填充------
             this.excelTabService.formulaFillData(tableInfoList, Long.parseLong(nodeId), ExecuteType.TESTING);
 
@@ -100,11 +103,13 @@ public class ExcelTabClientImpl implements ExcelTabClient {
             this.excelTabService.saveOrUpdateInfoTrial(tableInfoList, id);
         } catch (RuntimeException e){
             e.printStackTrace();
-            throw new RuntimeException("字段过长,操作失败");
+            pdfUrl=e.getMessage();
+            return pdfUrl;
         }
         catch (Exception e) {
             e.printStackTrace();
-            throw new RuntimeException("试验填报数据保存异常,操作失败");
+            pdfUrl=e.getMessage();
+            return pdfUrl;
         }
         try {
             if (isBatchSave == 0) {

+ 32 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.mixsmart.utils.StringUtils;
 import lombok.AllArgsConstructor;
+import org.springblade.business.dto.EKeyDto;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
@@ -46,6 +47,11 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
 
     private final JdbcTemplate jdbcTemplate;
 
+    @Override
+    public List<WbsTreeContract> getTables(String contractId, Long id, String wbsId) {
+        return wbsTreeContractMapper.getTables(contractId, id, wbsId);
+    }
+
     @Override
     public WbsTreeContract queryContractTreeNodeByPKeyId(Long toCopyNodePKeyId) {
         return this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, toCopyNodePKeyId));
@@ -459,5 +465,31 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
         return vos;
     }
 
+    @Override
+    public WbsTreeContract getById(Long pkeyId) {
+        WbsTreeContract wbsTreeContract = wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkeyId));
+        return wbsTreeContract;
+    }
+
+    @Override
+    public List<WbsTreeContract> getAncestors(String ancestors) {
+        List<WbsTreeContract> list=new ArrayList<>();
+        if(StringUtils.isNotEmpty(ancestors)){
+            String[] split = ancestors.split(",");
+            list=wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>lambdaQuery().in(WbsTreeContract::getPKeyId,Arrays.asList(split)));
+        }
+        return list;
+    }
+
+    @Override
+    public List<WbsTreeContract> getNodeTyp6(Long pKeyId) {
+        return wbsTreeContractService.getNodeTyp6(pKeyId);
+    }
+
+    @Override
+    public EKeyDto getEKey(String contractId, Long pKeyId, String wbsId) {
+        return wbsTreeContractService.getEKey(contractId,pKeyId,wbsId);
+    }
+
 
 }

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreePrivateClientImpl.java

@@ -27,6 +27,7 @@ import org.springblade.manager.vo.WbsTreePrivateVO;
 import org.springblade.manager.vo.WbsTreePrivateVO4;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.*;
@@ -320,6 +321,13 @@ public class WbsTreePrivateClientImpl implements WbsTreePrivateClient {
         return R.data(wbsTreePrivateVO4s);
     }
 
+    @Override
+    public WbsTreePrivate getNodeClass(Long isTypePrivatePid) {
+        return   wbsTreePrivateService.getById(isTypePrivatePid);
+    }
+
+
+
     private void foreachSetChildList(List<WbsTreeContractTreeVOS> vosResult, List<WbsTreePrivateVO> voList) {
         voList.forEach(wbsTreePrivateVO -> {
             WbsTreeContractTreeVOS vos = new WbsTreeContractTreeVOS();

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

@@ -1,6 +1,7 @@
 package org.springblade.manager.mapper;
 
 import org.apache.ibatis.annotations.Param;
+import org.springblade.business.dto.EKeyDto;
 import org.springblade.business.entity.InformationQuery;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.injector.EasyBaseMapper;
@@ -127,4 +128,10 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
      * @param allNodes
      */
     void updateBatchAncestorsByPKeyId(@Param("allNodes") List<WbsTreeContract> allNodes);
+
+    List<WbsTreeContract> getTables(@Param("contractId") String contractId, @Param("id") Long id, @Param("wbsId") String wbsId);
+
+    List<WbsTreeContract> getNodeTyp6(@Param("pKeyId") Long pkeyId);
+
+    EKeyDto getEKey(@Param("contractId") String contractId, @Param("pKeyId") Long pKeyId, @Param("wbsId") String wbsId);
 }

+ 19 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -909,4 +909,23 @@
             </foreach>
             ) and pdf_url is not null and pdf_url != '' and (table_owner = 4 or table_owner = 5 or table_owner = 6) and is_deleted = 0
     </select>
+    <select id="getTables" resultType="org.springblade.manager.entity.WbsTreeContract">
+        Select p_key_id, init_table_name from m_wbs_tree_contract where contract_id=#{contractId} and p_id=#{id} and wbs_id=#{wbsId} and is_deleted = 0
+        and node_name like '%单元工程施工质量验收评定表'
+    </select>
+
+    <select id="getNodeTyp6" resultType="org.springblade.manager.entity.WbsTreeContract">
+        select p_key_id,wbs_id,contract_id,unit_name from m_wbs_tree_contract where unit_name is not null and FIND_IN_SET(#{pKeyId},ancestors_p_id)>0 and node_type=6 and is_deleted=0
+    </select>
+    <select id="getEKey" resultType="org.springblade.business.dto.EKeyDto">
+        SELECT fe.e_key ,wtc.init_table_name,wtc.p_key_id
+        FROM m_wbs_tree_contract wtc
+                 JOIN m_table_info ti ON wtc.init_table_name = ti.tab_en_name
+                 JOIN m_wbs_form_element fe ON ti.id = fe.f_id AND fe.dynamic_dict = 600
+        WHERE wtc.contract_id = #{contractId}
+          AND wtc.p_id = #{pKeyId}
+          AND wtc.wbs_id = #{wbsId}
+          AND wtc.is_deleted = 0;
+    </select>
+
 </mapper>

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

@@ -143,4 +143,5 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
      * @param allNodes
      */
     void updateBatchAncestorsByPKeyId(@Param("allNodes") List<WbsTreePrivate> allNodes);
+
 }

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.service;
 
+import org.springblade.business.dto.EKeyDto;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.dto.RangeInfo;
@@ -84,4 +85,7 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     R importTree(MultipartFile file, Long pkeyId) throws IOException;
 
+    List<WbsTreeContract> getNodeTyp6(Long pKeyId);
+
+    EKeyDto getEKey(String contractId, Long pKeyId, String wbsId);
 }

+ 3 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -65,6 +65,7 @@ import org.springblade.manager.mapper.ExcelTabMapper;
 import org.springblade.manager.service.*;
 import org.springblade.manager.utils.FileUtils;
 import org.springblade.manager.utils.PdfAddimgUtil;
+import org.springblade.manager.utils.RandomNumberHolder;
 import org.springblade.manager.vo.*;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
@@ -442,6 +443,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         } else {
                             tec.getLog().put(FormulaLog.OTHER, "没有执行任何公式");
                         }
+                        RandomNumberHolder.clearTrialSelfInspectionRecordGroupId();
                         stopWatch.stop();
                         long totalTime = stopWatch.getTotalTimeMillis();
                         log.put(FormulaLog.PF, "公式执行消耗时间:" + (double) totalTime / 1000 + "秒");
@@ -3549,8 +3551,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 } catch (Exception e) {
                     //回滚
                     transactionManager1.rollback(transactionStatus);
-
-                    throw new RuntimeException("字段过长,新增失败");
+                    throw new RuntimeException("500"+e.getCause().getMessage()+"  字段过长,新增失败");
                 }
             }
         }

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

@@ -53,6 +53,7 @@ import org.springblade.manager.service.*;
 import org.springblade.manager.utils.AmountToChineseConverter;
 import org.springblade.manager.utils.FileUtils;
 import org.springblade.manager.utils.PeriodContractUtil;
+import org.springblade.manager.utils.RandomNumberHolder;
 import org.springblade.manager.vo.*;
 import org.springblade.meter.entity.*;
 import org.springblade.meter.feign.*;
@@ -1180,15 +1181,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             checkTable = op.get().getInitTableName();
         }
         for (FormData fd : tec.formDataList) {
-            if(fd.getCode().equals("m_20240124150022_1750050896693166080:key_42")){
-                System.out.println(111);
-            }
             if (fd.verify()) {
+                if(fd.getCode().equals("m_20240313110033_1767747549965320192:key_34")){
+                    System.out.println("111");
+                }
                 Formula formula = fd.getFormula();
                 System.out.println(formula.getId() + ":" + fd.getEName());
-                if (fd.getId() == 1575046319821553669L) {
-                    System.out.println("");
-                }
                 String f = formula.getFormula();
                 if (Func.isNotBlank(f)) {
                     try {
@@ -1203,7 +1201,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                             relyList.forEach(rely -> {
                                 FormData formData = tec.getFormDataMap().get(rely);
                                 /*TODO,这里的判断还需要优化,比如加减法公式,即使某个依赖元素不存在内容却可以视为0,也算是合法的执行条件*/
-                                if (formData != null && !formData.empty() || "m_20231027094746_1717719707244560384:key_11".equals(fd.getCode())) {
+                                if (formData != null && !formData.empty() || "m_20231027094746_1717719707244560384:key_11".equals(fd.getCode())||fd.getCode().equals("m_20240313110817_1767749493136031744:key_32")||fd.getCode().equals("m_20240313110033_1767747549965320192:key_34")) {
                                     ele.add(formData);
                                 }
                             });
@@ -1263,6 +1261,23 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                         }
                                     }
                                 }
+                                //专门用来做试验的处理 水泥报告单的检测依据
+                                if(fd.getCode().equals("m_20240313110817_1767749493136031744:key_32")||fd.getCode().equals("m_20240313110033_1767747549965320192:key_34")){
+                                    Long groupId = RandomNumberHolder.getTrialSelfInspectionRecordGroupId();
+                                    if(fd.getFormula().getRely()!=null){
+                                        String rely = fd.getFormula().getRely();
+                                        String[] strings = rely.split(":");
+                                        String tabName=strings[0];
+                                        List<NodeTable> collect = tec.getTableAll().stream().filter(e -> e.getInitTableName().equals(tabName)).collect(Collectors.toList());
+                                        if(collect.size()>0){
+                                            String sql="select "+strings[1]+" from "+strings[0]+ " where p_key_id="+collect.get(0).getPKeyId()+" and group_id="+groupId;
+                                            data = jdbcTemplate.queryForObject(sql, new SingleColumnRowMapper<>(String.class));
+                                            if(data!=null){
+                                                data=((String) data).substring(0,((String) data).indexOf("_^_"));
+                                            }
+                                        }
+                                    }
+                                }
                                 write(tec, fd, data);
                             }
                             /*错位计算偏移量重置*/

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -27,6 +27,7 @@ import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springblade.business.dto.EKeyDto;
 import org.springblade.business.dto.ImportTreeDto;
 import org.springblade.business.entity.ConstructionLedger;
 import org.springblade.business.entity.InformationQuery;
@@ -2669,6 +2670,16 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return R.success("新增了"+insertList.size()+"个节点"+","+String.join(",",updateList)+"节点编号已被修改");
     }
 
+    @Override
+    public List<WbsTreeContract> getNodeTyp6(Long pKeyId) {
+        return baseMapper.getNodeTyp6(pKeyId);
+    }
+
+    @Override
+    public EKeyDto getEKey(String contractId, Long pKeyId, String wbsId) {
+        return baseMapper.getEKey(contractId,pKeyId,wbsId);
+    }
+
     /**
      * 展开所有合并单元格并将值填充到每个单元格
      * @param sheet Excel工作表

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

@@ -3189,6 +3189,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return vo;
     }
 
+
+
     public List<WbsTreePrivate> findAllContract(WbsTreePrivate wbsTreePrivate) {
         QueryWrapper<WbsTreePrivate> wbsTreeContractQueryWrapper = new QueryWrapper<>();
         wbsTreeContractQueryWrapper.select("p_key_id", "id", "p_id", "wbs_id", "project_id", "parent_id", "ancestors");

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/RandomNumberHolder.java

@@ -9,6 +9,7 @@ public class RandomNumberHolder {
         private static final ThreadLocal<HashMap<Long,String>> randomNumberThreadLocal = new ThreadLocal<>();
         private static final ThreadLocal<Integer> randomTemplateTypeThreadLocal = new ThreadLocal<>();
         private static final ThreadLocal<List<WbsTreeContract>> randomWbsTreeContractThreadLocal = new ThreadLocal<>();
+    private static final ThreadLocal<Long> randomTrialSelfInspectionRecordGroupId = new ThreadLocal<>();
 
     public static void setRandomNumber(HashMap<Long,String> map) {
         randomNumberThreadLocal.set(map);
@@ -46,5 +47,15 @@ public class RandomNumberHolder {
     public static void RandomWbsTreeContractclear() {
         randomWbsTreeContractThreadLocal.remove();
     }
+
+    public static void setTrialSelfInspectionRecordGroupId(Long id) {
+        randomTrialSelfInspectionRecordGroupId.set(id);
+    }
+    public static Long getTrialSelfInspectionRecordGroupId() {
+      return   randomTrialSelfInspectionRecordGroupId.get();
+    }
+    public static void clearTrialSelfInspectionRecordGroupId() {
+        randomTrialSelfInspectionRecordGroupId.remove();
+    }
 }