浏览代码

公式相关:bug处理;元素扩散

yangyj 2 年之前
父节点
当前提交
38d268829b

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

@@ -1628,7 +1628,8 @@ public class CustomFunction {
 			}
 			if(ListUtils.isNotEmpty(datas)){
 				for(Object e:datas){
-					if(StringUtils.isNotEmpty(e)&&!CustomFunction.containsZH(e.toString())&&(e.toString().contains("、")||e.toString().contains(",")||e.toString().contains(" ")||e.toString().contains(","))){
+					boolean fi=StringUtils.isNotEmpty(e)&&!CustomFunction.containsZH(e.toString())&&(e.toString().contains("、")||e.toString().contains(",")||e.toString().contains(" ")||e.toString().contains(","));
+					if(fi){
 						String s=e.toString().trim();
 						if(s.contains(" ")){
 							s=s.replaceAll("\\s+","、");
@@ -2074,6 +2075,22 @@ public class CustomFunction {
 		}
 		return  result;
 	}
+
+	public static  List<Object>  diffusion( List<Object> data){
+		List<Object> result = new ArrayList<>();
+		if(data!=null){
+			Optional<Object> op = data.stream().filter(StringUtils::isNotEmpty).findFirst();
+			if(op.isPresent()){
+				Object copy= op.get();
+				return data.stream().map(e -> StringUtils.isEmpty(e) ? copy : e)
+						.collect(Collectors.toList());
+			}
+		}
+		return  result;
+	}
+
+
+
 	/**
 	 * @Description  截取list subList(list,1,5) 返回list的第1到第5个元素
 	 * @Param [o]
@@ -2084,7 +2101,7 @@ public class CustomFunction {
 	public static  Object subList(Object o,Object  start ,Object end){
 		List<Object> result = new ArrayList<>();
 		if(o instanceof  List){
-			 result = (List<Object>) o;
+			result = (List<Object>) o;
 			 int s=StringUtils.handleObj2Integer(start);
 			 int e=StringUtils.handleObj2Integer(end);
 			 s= Math.max(s, 1);

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/KeyMapper.java

@@ -20,6 +20,14 @@ public class KeyMapper {
     private  String tableName;
     /**元素中文名*/
     private  String eName;
+    /**
+     * 元素类型
+     */
+    private Integer eType;
+    /**
+     * 允许偏差值
+     */
+    private String eAllowDeviation;
     /**公式优先级*/
     private Integer scope;
     /**公式id*/

+ 3 - 22
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -98,20 +98,7 @@ public class TableElementConverter implements ITableElementConverter {
 
 
 
-//    public void relyParse(Formula f){
-//        if(Func.isNotBlank(f.getFormula())){
-//            List<String> l = new ArrayList<>();
-//            Matcher m = RP.matcher(f.getFormula());
-//            while (m.find()){
-//                l.add(m.group());
-//            }
-//            if(l.size()>0){
-//                f.setRely(String.join(",", l));
-//            }else{
-//                f.setRely("");
-//            }
-//        }
-//    }
+
 
     public Boolean isPresent(){
         return BaseUtils.isNotNull(this.keyMappers,this.formulas,this.nodeId,this.contractId);
@@ -135,16 +122,10 @@ public class TableElementConverter implements ITableElementConverter {
                 FormData fd=new FormData(codeAndId[0],new ArrayList<>(),formula,this.coordinateMap.getOrDefault(one.getTableName(),new HashMap<>()).get(one.getField()));
                 fd.setIsCurrentNodeElement(Boolean.TRUE);
                 fd.setEName(one.getEName());
+                fd.setEAllowDeviation(one.getEAllowDeviation());
+                fd.setEType(one.getEType());
                 /*初始化元素数据集*/
                 List<ElementData> eds =fd.getValues();
-//                String coords = this.coordinateMap.getOrDefault(fd.getTableName(),new HashMap<>()).get(fd.getKey());
-//                if(Func.isNotBlank(coords)) {
-//                    List<Coords> coordsList = Stream.of(coords).flatMap(s -> Arrays.stream(s.split(";"))).map(s -> {
-//                        String[] xy = s.split("_");
-//                        return new Coords(xy[1], xy[0]);
-//                    }).collect(Collectors.toList());
-//                    fd.setCoordsList(coordsList);
-//                }
                 for(int i=0;i<kms.size();i++){
                     /*每一页都有自己对立的Id*/
                     KeyMapper km=kms.get(i);

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

@@ -1145,7 +1145,7 @@ public  List<ElementData> setScale(Integer scale,List<ElementData> data){
     public List<KeyMapper> getKeyMapperList(List<Long> ids,String projectId,String nodeId) {
         /*表名,pkeyId,元素名,元素id 映射对象*/
         String pkIds=ids.stream().map(String::valueOf).collect(Collectors.joining(","));
-        List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList(" select a.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,c.e_name as eName,c.id  as fieldId   " +
+        List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList(" select a.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,c.e_name as eName,c.id  as fieldId ,c.e_type eType , e_allow_deviation as eAllowDeviation  " +
                 "from m_wbs_tree_contract a " +
                 "inner join m_table_info b on a.init_table_name=b.tab_en_name " +
                 "INNER JOIN m_wbs_form_element c on b.id=c.f_id " +