Browse Source

公式相关

yangyj 2 years ago
parent
commit
72a7ade602

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -72,6 +72,7 @@ public class FormData {
     private Integer update=0;
     private Integer update=0;
     /**是否完成执行*/
     /**是否完成执行*/
     private Boolean finished=false;
     private Boolean finished=false;
+    /**元素和单元格的映射信息*/
     public  List<Coords> coordsList= new ArrayList<>();
     public  List<Coords> coordsList= new ArrayList<>();
     public static final String CODE_REG="[^:]+:[^:]+";
     public static final String CODE_REG="[^:]+:[^:]+";
 
 

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/bean/TableInfo.java

@@ -12,12 +12,15 @@ import java.util.List;
  */
  */
 @Data
 @Data
 public class TableInfo {
 public class TableInfo {
+    /**表单数据*/
     private LinkedHashMap<String,String> dataMap;
     private LinkedHashMap<String,String> dataMap;
     private String pkeyId;
     private String pkeyId;
     private String contractId;
     private String contractId;
     private String classify;
     private String classify;
     private String projectId;
     private String projectId;
     private String groupId="0";
     private String groupId="0";
+    /**待更新状态*/
+    private boolean toBeUpdated;
 
 
     // =============================== 首件相关 start ===============================
     // =============================== 首件相关 start ===============================
     /**
     /**

+ 4 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -1,11 +1,6 @@
 package org.springblade.manager.controller;
 package org.springblade.manager.controller;
 
 
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.extra.tokenizer.Result;
-import cn.hutool.extra.tokenizer.TokenizerEngine;
-import cn.hutool.extra.tokenizer.TokenizerUtil;
-import cn.hutool.extra.tokenizer.Word;
-import cn.hutool.extra.tokenizer.engine.hanlp.HanLPEngine;
+
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -26,21 +21,19 @@ import org.springblade.manager.excel.WbsFormElementBatchExcel;
 import org.springblade.manager.excel.WbsTreeExcel;
 import org.springblade.manager.excel.WbsTreeExcel;
 import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.service.IFormulaService;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.vo.*;
 import org.springblade.manager.vo.*;
 import org.springblade.system.cache.DictCache;
 import org.springblade.system.cache.DictCache;
 import org.springblade.system.enums.DictEnum;
 import org.springblade.system.enums.DictEnum;
-import org.springframework.transaction.annotation.Transactional;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
-import org.springblade.manager.wrapper.WbsTreeWrapper;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
-
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import javax.validation.Valid;
-
 import java.io.IOException;
 import java.io.IOException;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -211,6 +204,7 @@ public class WbsTreeController extends BladeController {
                 return R.data(wbsFormElements);
                 return R.data(wbsFormElements);
             }
             }
         }
         }
+
         return R.data(wbsFormElements, "未查询到元素");
         return R.data(wbsFormElements, "未查询到元素");
     }
     }
 
 

+ 28 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -68,7 +68,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     public static final Pattern AP=Pattern.compile("(E|WP)\\[([^]]+)]");
     public static final Pattern AP=Pattern.compile("(E|WP)\\[([^]]+)]");
 
 
     public static final String IF_REG= "(?<=T\\(com.mixsmart.utils.CustomFunction\\).ifelse\\()[^,]+(?=,)";
     public static final String IF_REG= "(?<=T\\(com.mixsmart.utils.CustomFunction\\).ifelse\\()[^,]+(?=,)";
-    public static final  Pattern IF = Pattern.compile(IF_REG);
+    public static final Pattern IF = Pattern.compile(IF_REG);
 
 
     public static final String ELE_CODE_REG= "(?<=E\\[)[^]]+(?=\\])";
     public static final String ELE_CODE_REG= "(?<=E\\[)[^]]+(?=\\])";
     public static final Pattern P = Pattern.compile(ELE_CODE_REG);
     public static final Pattern P = Pattern.compile(ELE_CODE_REG);
@@ -94,7 +94,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         this.tec=tec;
         this.tec=tec;
         /*初始化变量>>依赖排序>>预处理>>特殊公式>>通用公式执行>>数据格式化*/
         /*初始化变量>>依赖排序>>预处理>>特殊公式>>通用公式执行>>数据格式化*/
         this.init().sort().pre().special().calculate().format();
         this.init().sort().pre().special().calculate().format();
-       // WbsTreeContract one=  this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,tec.getNodeId()));
     }
     }
 
 
     @Override
     @Override
@@ -440,7 +439,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         int min =0;
         int min =0;
         List<Object> result = new ArrayList<>();
         List<Object> result = new ArrayList<>();
         try {
         try {
-                /*并发执行*/
                 List<Object>  r= local.stream().map(e-> Expression.parse(e.getFormula()).calculate(e.getCurrentMap())).collect(Collectors.toList());
                 List<Object>  r= local.stream().map(e-> Expression.parse(e.getFormula()).calculate(e.getCurrentMap())).collect(Collectors.toList());
                 if(CollectionUtil.isNotEmpty(r)&&r.stream().anyMatch(StringUtils::isNotEmpty)){
                 if(CollectionUtil.isNotEmpty(r)&&r.stream().anyMatch(StringUtils::isNotEmpty)){
                     result.addAll(r);
                     result.addAll(r);
@@ -582,6 +580,33 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }
         }
     }
     }
 
 
+
+
+    public void batch(){
+        List<Map<String,Object>> list = this.jdbcTemplate.queryForList("select id,formula from m_formula where (formula like '%reasonable%' or formula like '%proportion%' or formula like '%goodSize%')");
+        if(ListUtils.isNotEmpty(list)){
+            Pattern p = Pattern.compile("^FC\\.(\\w+)\\(([^()]+)\\)");
+            for (Map<String,Object>map:list){
+                Long ident = (Long) map.get("id");
+                String formula = (String) map.get("formula");
+                Matcher m= p.matcher(formula);
+                if(m.find()){
+                    String change=m.group(2);
+                    String fn=m.group(1);
+                    List<String> args=Arrays.stream(change.split(",")).collect(Collectors.toList());
+                    if(args.size()<18){
+                        args.addAll(Collections.nCopies(18-args.size(),"''"));
+                        System.out.println("原:"+formula);
+                        String newformula=("FC."+fn+"("+String.join(",",args)+")");
+                        System.out.println("改:"+newformula);
+                        this.update(Wrappers.<Formula>lambdaUpdate().set(Formula::getFormula,newformula).eq(Formula::getId,ident));
+                        // this.jdbcTemplate.update("update m_formula set formula ='"+newformula+"' where id="+ident);
+                    }
+                }
+            }
+        }
+    }
+
 }
 }