yangyj 2 жил өмнө
parent
commit
ef3f321df7

+ 9 - 0
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/MinusNode.java

@@ -36,6 +36,15 @@ public class MinusNode extends OperatorResultNode {
         return SubtractUtil.calculate((Number) leftValue, (Number) rightValue);
     }
 
+
+
+/*    public static void main(String[] args) {
+        Map<String,Object> map = new HashMap<>();
+        map.put("A","1*2");
+        map.put("B","1*2");
+        System.out.println(Expression.parse("A*B").calculate(map).toString());
+    }*/
+
 //	public Object calculateOld(Map<String, Object> variables) {
 //		Object leftValue = leftOperand.calculate(variables);
 //		if(leftValue instanceof String && StringUtils.isNumber(leftValue)) {

+ 10 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/MutliNode.java

@@ -1,5 +1,6 @@
 package com.jfireel.expression.node.impl;
 
+import com.jfireel.expression.Expression;
 import com.jfireel.expression.token.Operator;
 import com.jfireel.expression.util.number.MultiplyUtil;
 import com.mixsmart.utils.CustomFunction;
@@ -7,6 +8,7 @@ import com.mixsmart.utils.StringUtils;
 
 import java.math.BigDecimal;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -22,7 +24,7 @@ public class MutliNode extends OperatorResultNode {
         Object rightValue = rightOperand.calculate(variables);
         String reg = "[0-9.-]+(\\*[0-9.-]+)+";
         if (StringUtils.handleNull(leftValue).matches(reg) && StringUtils.handleNull(rightValue).matches(reg)) {
-            return CustomFunction.dXd(rightValue, leftValue);
+            return CustomFunction.dXd(rightValue, leftValue,1,1);
         } else if (StringUtils.handleNull(leftValue).matches(reg)) {
             int n = StringUtils.handleNull(leftValue).trim().split("[*]").length;
             String rightValueStr = Collections.nCopies(n, rightValue).stream().map(StringUtils::handleNull).collect(Collectors.joining("*"));
@@ -47,4 +49,11 @@ public class MutliNode extends OperatorResultNode {
         return MultiplyUtil.calculate((Number) leftValue, (Number) rightValue);
     }
 
+/*    public static void main(String[] args) {
+        Map<String,Object> map = new HashMap<>();
+        map.put("A","1*2");
+        map.put("B","1*2");
+        System.out.println(Expression.parse("A*B").calculate(map).toString());
+    }*/
+
 }

+ 5 - 5
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -2582,11 +2582,11 @@ public class CustomFunction {
         return dXd(design, data, xN, scale, mode);
     }
 
-//    public static void main(String[] args) {
-//        String a="100*100";
-//        List<Object>list  = new ArrayList<>(Arrays.asList("101*102","201*198"));
-//        list.forEach(d-> System.out.println(dXd(a,d)));
-//    }
+    public static void main(String[] args) {
+        String a="100/200";
+        List<Object>list  = new ArrayList<>(Arrays.asList(101,102,201,198));
+        list.forEach(d-> System.out.println(dXd(a,d)));
+    }
 
     /**
      * @return java.lang.Object

+ 3 - 3
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -562,9 +562,9 @@ public class FormulaUtils {
     public static Map<String, String> getElementCell(String uri,String key) {
         try {
             InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(uri);
-            String filter=" el-input[keyname],el-date-picker[keyname]";
+            String filter=" [keyname]";
             if(Func.isNotBlank(key)){
-                filter="el-input[keyname^="+key+"__],el-date-picker[keyname^="+key+"__]";
+                filter="[keyname^="+key+"__]";
             }
             Document document=Jsoup.parse(IoUtil.readToString(inputStreamByUrl));
             Map<String,String> result= document
@@ -591,7 +591,7 @@ public class FormulaUtils {
     }
 
 /*    public static void main(String[] args) {
-        Map<String,String> map=getElementCell("/www/wwwroot/Users/hongchuangyanfa/Desktop//privateUrl/1578963584895942656.html","key_20");
+        Map<String,String> map=getElementCell("/www/wwwroot/Users/hongchuangyanfa/Desktop/privateUrl/1688447882195107840.html","key_31");
         System.out.println(map);
     }*/
     /**

+ 18 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/FormulaClientImpl.java

@@ -1,13 +1,17 @@
 package org.springblade.manager.feign;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.mixsmart.utils.FormulaUtils;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.entity.Formula;
+import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.service.IExcelTabService;
 import org.springblade.manager.service.IFormulaService;
+import org.springblade.manager.service.IWbsTreeContractService;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -25,6 +29,7 @@ public class FormulaClientImpl implements FormulaClient {
     private final IFormulaService service;
     private final JdbcTemplate jdbcTemplate;
     private final IExcelTabService excelTabService;
+    private final IWbsTreeContractService  wbsTreeContractService;
 
     @Override
     public void formulaExecute() {
@@ -33,21 +38,20 @@ public class FormulaClientImpl implements FormulaClient {
     @Override
     public String dPoint(Long pkId, String key) {
         StringBuilder sb = new StringBuilder();
-        try {
-            Map<String, String> keysMap = this.excelTabService.getTablbCols(String.valueOf(pkId), null);
-            Long id = this.jdbcTemplate.queryForObject("select d.formula_id from m_wbs_tree_contract a join m_table_info b on a.init_table_name=b.tab_en_name join m_wbs_form_element c on c.f_id=b.id join m_element_formula_mapping d on c.id=d.element_id where a.p_key_id=" + pkId + " and c.e_key='" + key + "'  ORDER BY d.scope desc limit 1", Long.class);
-            if (Func.isNotEmpty(id)) {
-                Formula formula = this.service.getById(id);
-                if (Func.isNotEmpty(formula)) {
-                    formula.getRelyList().forEach(e -> {
-                        String heard = e.split(StringPool.COLON)[1];
-                        sb.append(heard).append("__").append(keysMap.get(heard)).append(StringPool.COMMA);
-                    });
-                }
+        WbsTreeContract wtc= this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkId));
+        if(wtc==null){
+          return  "表id有误";
+        }
+        Map<String, String> keysMap = FormulaUtils.getElementCell(wtc.getHtmlUrl());
+        Long id = this.jdbcTemplate.queryForObject("select d.formula_id from m_wbs_tree_contract a join m_table_info b on a.init_table_name=b.tab_en_name join m_wbs_form_element c on c.f_id=b.id join m_element_formula_mapping d on c.id=d.element_id where a.p_key_id=" + pkId + " and c.e_key='" + key + "'  ORDER BY d.scope desc limit 1", Long.class);
+        if (Func.isNotEmpty(id)) {
+            Formula formula = this.service.getById(id);
+            if (Func.isNotEmpty(formula)) {
+                formula.getRelyList().forEach(e -> {
+                    String heard = e.split(StringPool.COLON)[1];
+                    sb.append(heard).append("__").append(keysMap.get(heard)).append(StringPool.COMMA);
+                });
             }
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-            sb.append("无法获取定位信息");
         }
         return sb.toString();
     }

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

@@ -1071,7 +1071,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                 targetItem.setDesigns(designList.getValues().stream().map(ElementData::getValue).flatMap(e -> CustomFunction.obj2ListNe(e).stream()).filter(StringUtils::isNumber).map(StringUtils::obj2Double).collect(Collectors.toList()));
                             }
                             AtomicInteger index = new AtomicInteger();
-                            if (targetItem.getDesigns()!=null) {
+                            if (targetItem.getDesigns()!=null&&targetItem.getDesigns().size()>0) {
                                 int len = targetItem.getDesigns().size();
                                 targetItem.setData(new ArrayList<>(list.stream().map(StringUtils::obj2Double).collect(Collectors.groupingBy(k -> index.getAndIncrement() / len, LinkedHashMap::new, Collectors.toList())).values()));
                             } else {