ソースを参照

取消公式执行
1、优化公式是否执行判断逻辑

LHB 5 日 前
コミット
8b1c8207c3

+ 15 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -12,11 +12,13 @@ import com.mixsmart.utils.StringUtils;
 import lombok.Data;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springblade.common.utils.BaseUtils;
+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.bean.TableInfo;
 import org.springblade.manager.dto.*;
 import org.springblade.manager.entity.Formula;
+import org.springblade.manager.entity.WbsTreeContractExtend;
 import org.springblade.manager.enums.ExecuteType;
 import org.springblade.manager.formula.FormulaLog;
 import org.springblade.manager.formula.ITableElementConverter;
@@ -44,6 +46,7 @@ public class TableElementConverter implements ITableElementConverter {
     public static String JOIN_REG = "__\\d+_\\d+,?";
     public static Pattern RP = Pattern.compile("(?<=E\\[)[^]]+(?=])");
 
+    private WbsTreeContractExtend contractExtend;
     private List<TableInfo> tableInfoList;
     private Long contractId;
     private Long projectId;
@@ -296,9 +299,19 @@ public class TableElementConverter implements ITableElementConverter {
                     /*备份原始数据,用于更新比较*/
                     fd.init();
                     formDataMap.put(fd.getCode(), fd);
+
                     if (fd.getFormula() != null) {
-                        /*只有需要执行公式的才放这里*/
-                        formDataList.add(fd);
+                        if (contractExtend != null && StringUtils.isNotEmpty(contractExtend.getFormulaConfig())) {
+                            List<String> list = Arrays.asList(contractExtend.getFormulaConfig().split(","));
+                            if(CollectionUtil.isEmpty(list) || !list.contains(fd.getCode())){
+                                /*只有需要执行公式的才放这里*/
+                                formDataList.add(fd);
+                            }
+                        }else{
+                            /*只有需要执行公式的才放这里*/
+                            formDataList.add(fd);
+                        }
+
                     }
                 });
             }

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -564,12 +564,19 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         contractId = Func.toLong(tableInfoList.get(0).getContractId());
                     }
                     if (currentNode != null) {
+                        WbsTreeContractExtend byId = null;
+                        if (type.equals(ExecuteType.INSPECTION)) {
+                            byId = wbsTreeContractExtendService.getById(nodeId);
+                        } else if (type.equals(ExecuteType.TESTING) ) {
+                            byId = wbsTreeContractExtendService.getById(tableInfoList.get(0).getTestGroupId());
+                        }
                         TableElementConverter tec = new TableElementConverter(tableInfoList, keyMappers, formulas, coordinateMap, currentNode, tableAll);
                         tec.setLog(log);
                         tec.setExecuteType(type);
                         tec.setContractId(contractId);
                         tec.setProjectId(projectId);
                         tec.setIsRemoveForSubTab(isRemoveForSubTab);
+                        tec.setContractExtend(byId);
                         if (tec.isPresent()) {
                             tec.before();
                             this.formulaService.execute(tec);

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

@@ -1350,9 +1350,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             checkTable = op.get().getInitTableName();
         }
         for (FormData fd : tec.formDataList) {
-            if(fd.getCode().equals("_20240528110420_1795289980302524416:key_8")){
-                System.out.println("111");
-            }
             if (fd.verify()) {
                 if(fd.getAddPages()!=0){
                     System.out.println("");
@@ -5239,16 +5236,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     /*表id,项目id,节点Id*/
     public List<KeyMapper> listForContract(List<Long> ids, String projectId, String nodeId, String testGroupId) {
         List<Map<String, Object>> listMap = listMap(ids, ExecuteType.INSPECTION);
-        //质检这个参数为0,表示过滤公式,为1,表示html渲染表格
-        if(!"1".equals(testGroupId)){
-            //根据节点id查询 合同段扩展表
-            WbsTreeContractExtend byId = wbsTreeContractExtendService.getById(nodeId);
-            if (byId != null && StringUtils.isNotEmpty(byId.getFormulaConfig())) {
-                List<String> list = Arrays.asList(byId.getFormulaConfig().split(","));
-                listMap = listMap.stream().filter(m -> !list.contains(m.get("tableName").toString() + ":" + m.get("field").toString())).collect(Collectors.toList());
-            }
-        }
-
         WbsTreePrivate wtp = wtpId(Long.parseLong(nodeId));
         if (Func.isNotEmpty(listMap)) {
             /*当前节点的某个元素存在多种作用域的公式,作用域范围越小优先级越高*/
@@ -5336,14 +5323,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     private List<KeyMapper> listForPrivate(List<Long> ids, String projectId, String nodeId, String testGroupId) {
         /**/
         List<Map<String, Object>> listMap = listMap(ids, ExecuteType.TESTING);
-        if(StringUtil.isNotBlank(testGroupId)){
-            //根据节点id查询 合同段扩展表
-            WbsTreeContractExtend byId = wbsTreeContractExtendService.getById(testGroupId);
-            if (byId != null && StringUtils.isNotEmpty(byId.getFormulaConfig())) {
-                List<String> list = Arrays.asList(byId.getFormulaConfig().split(","));
-                listMap = listMap.stream().filter(m -> !list.contains(m.get("tableName").toString() + ":" + m.get("field").toString())).collect(Collectors.toList());
-            }
-        }
         List<KeyMapper> list = listMap.stream().map(m -> BeanUtil.toBean(m, KeyMapper.class)).collect(Collectors.toList());
         if (Func.isNotEmpty(listMap)) {
             WbsTreePrivate wtp = this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodeId));