Selaa lähdekoodia

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

LHB 3 viikkoa sitten
vanhempi
commit
7144b9418b

+ 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

@@ -547,12 +547,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);

+ 6 - 18
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -1141,6 +1141,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 tec.getKeyMappers().stream().filter(e -> wop.contains(e.getTableName()) && tec.formDataMap.containsKey(e.getCode())).forEach(k -> {
                     /*包含的单元格超过三个就算实测项目部分实测值元素只有一个单元格,拼接写入全部数据*/
                     /*k.getEName().contains("实测值")&&k.getEName().contains("偏差值")*/
+                    if(k.getCode().equals("m_20220928161618_1575036663975903232:key_15")){
+                        System.out.println();
+                    }
                     FormData ft = tec.formDataMap.get(k.getCode());
                     if (ft.getCoordsList().size() > 5 || (k.getEName().contains("实测值") && !k.getEName().contains("设计值") && !k.getEName().contains("合格率"))) {
                         tec.checkItems.add(ft);
@@ -1348,6 +1351,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             checkTable = op.get().getInitTableName();
         }
         for (FormData fd : tec.formDataList) {
+            if(fd.getCode().equals("m_20220826103001_1562990720141230080:key_9")){
+                System.out.println("111");
+            }
             if (fd.verify()) {
                 if(fd.getAddPages()!=0){
                     System.out.println("");
@@ -5202,16 +5208,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)) {
             /*当前节点的某个元素存在多种作用域的公式,作用域范围越小优先级越高*/
@@ -5299,14 +5295,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));