浏览代码

公式相关:附表bug修改

yangyj 2 年之前
父节点
当前提交
57ed64c5fa

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

@@ -2762,16 +2762,6 @@ public class CustomFunction {
 		return "";
 	}
 
-	public static void main(String[] args) {
-		Map<String,Object> map =new HashMap<>();
-		map.put("A","13.3");
-		map.put("B","13.5");
-//		map.put("A","17*20");
-//		map.put("B","18*18");
-//		Expression.parse("(A-B)*10").calculate(map);
-		System.out.println(Expression.parse("(A-B)*10").calculate(map).toString());
-
-	}
 
 
 }

+ 11 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/SubTable.java

@@ -62,19 +62,25 @@ public class SubTable {
                    String key = entry.getKey();
                    String[] nameAndDesign=key.split("@");
                    List<String> values=entry.getValue();
+                   /*写人的行数*/
                    int count = (int)Math.ceil((double)values.size()/(double)ROW_SIZE);
-                   int count2=count/STEP[0];
-                   itemNameList.addAll(Collections.nCopies(count2,nameAndDesign[0]));
-                   designList.addAll(Collections.nCopies(count2,nameAndDesign[1]));
+//                   int count2=count/STEP[0];
+                   itemNameList.addAll(Collections.nCopies(count,nameAndDesign[0]));
+                   if(nameAndDesign.length>=2) {
+                       designList.addAll(Collections.nCopies(count, nameAndDesign[1]));
+                   }
                    dataList.addAll(values);
-                   if(count>values.size()){
-                       dataList.addAll(Collections.nCopies(count-values.size(),""));
+                   if(count*ROW_SIZE>values.size()){
+                       dataList.addAll(Collections.nCopies(count*ROW_SIZE-values.size(),""));
                    }
                }
                /*写入元素*/
                FormulaUtils.write(itemName,itemNameList,true);
                FormulaUtils.write(design,designList,true);
                FormulaUtils.write(data,dataList,true);
+               itemName.setUpdate(1);
+               design.setUpdate(1);
+               data.setUpdate(1);
            }
    }
 

+ 0 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -168,7 +168,6 @@ public class TableElementConverter implements ITableElementConverter {
                                  eds.add(new ElementData(Func.toInt(sa[2]),Func.toInt(sa[1]),val,Func.toInt(sa[3]),Func.toInt(sa[4])));
                             });
                             log.append(fd.getEName()).append(fd.getCode()).append("定位信息不存在;");
-                           // StaticLog.error("FORMULA_LOG@元素{}定位信息不存在,请检查配置",fd.getTableName()+StringPool.COLON+fd.getKey());
                         }
                     }
                 }

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

@@ -571,7 +571,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }
 
 /*###############################附表的处理##################################*/
-        if(true) {
+        if(true) {//临时开关,稳定后移除
             try {
                 /*检验单附表处理*/
                 List<FormData> inspectionList = new ArrayList<>();
@@ -610,17 +610,21 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         /*找不到附表表单数据,则从数据库加载*/
                         JSONArray dataArray = new JSONArray();
                         for (WbsTreeContract data : subTabList) {
+                            /*自动挂载附表情况下,装配TableInfo数据*/
                             R bussDataInfo = this.getBussDataInfo(data.getPKeyId(), 1);
-                            Object data1 = bussDataInfo.getData();
+                            Map<String, Object>  data1 = (Map<String, Object>) bussDataInfo.getData();
+                            data1.put("pkeyId",data.getPKeyId());
                             dataArray.add(data1);
                         }
                         List<TableInfo> subTableInfo = FormulaUtils.getTableInfoList(dataArray);
                         tec.getTableInfoList().addAll(subTableInfo);
+                        /*获取附表元素定位集*/
                         tec.getCoordinateMap().put(subTabList.get(0).getInitTableName(), CustomFunction.getElementCell(first.getHtmlUrl()));
-                        List<Map<String, Object>> elementMaps = this.jdbcTemplate.queryForList("select b.e_name name , CONCAT(a.tab_en_name,':',b.e_key) code , b.e_key ekey ,b.id fieldId,a.tab_en_name tableName from m_table_info a join m_wbs_form_element b on a.id = b.f_id where a.tab_en_name='" + first.getInitTableName() + "' and b.is_deleted=0 ");
+                        /*附表元素关键信息*/
+                        List<Map<String, Object>> elementMaps = this.jdbcTemplate.queryForList("select b.e_name ename , CONCAT(a.tab_en_name,':',b.e_key) code , b.e_key ekey ,b.id fieldId,a.tab_en_name tableName from m_table_info a join m_wbs_form_element b on a.id = b.f_id where a.tab_en_name='" + first.getInitTableName() + "' and b.is_deleted=0 ");
                         if (Func.isNotEmpty(elementMaps)) {
                             elementMaps.forEach(e->{
-                                /*生成附表元素*/
+                                /*装配元素*/
                                 String values=subTableInfo.stream().map(TableInfo::getDataMap).map(m->m.get(StringUtils.handleNull(e.get("ekey")))).filter(StringUtils::isNotEmpty).collect(Collectors.joining(";;"));
                                 FormData tmp=  createFormDataFast(StringUtils.handleNull(e.get("ename")),StringUtils.handleNull(e.get("code")),values);
                                 if(tmp!=null){
@@ -628,7 +632,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                     this.formDataList.add(tmp);
                                 }
                             });
-                            /*生成元素数据*/
+                            /*生成元素映射关系*/
                             subTabList.forEach(s->{
                                 elementMaps.forEach(e->{
                                     KeyMapper km = new KeyMapper();
@@ -642,20 +646,26 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
 
                         }
                     }
-                    List<FormData> subTableFds=this.formDataList.stream().filter(e->StringUtils.isEquals(first.getInitTableName(),e.getTableName())).collect(Collectors.toList());
+                    /*获取封装好的附表元素*/
+                    List<FormData> subTableFds=this.formDataMap.values().stream().filter(e->StringUtils.isEquals(first.getInitTableName(),e.getTableName())).collect(Collectors.toList());
+                    /*初始化附表对象*/
                     SubTable sta=new SubTable(subTableFds);
-                    /*检验单或者评定表存在超页数据*/
+
                     inspectionList.forEach(f -> {
+                        /*检验单或者评定表存的超页数据汇总到附表对象*/
                            List<ElementData> overList = f.getValues().stream().skip(f.getCoordsList().size()).collect(Collectors.toList());
+                           f.setValues(f.getValues().stream().limit(f.getCoordsList().size()).collect(Collectors.toList()));
+                           f.setAddPages(0);
                            String itemName=FormulaUtils.parseItemName(f.getEName());
                            String key=itemName.trim();
-                           Optional<FormData> designFdOp=  this.formDataMap.values().stream().filter(o->o.getTableName().equals(f.getTableName())&&StringUtils.isEquals(itemName,FormulaUtils.parseItemName(o.getEName()))).findAny();
+                           Optional<FormData> designFdOp=  this.formDataMap.values().stream().filter(o->o.getTableName().equals(f.getTableName())&&StringUtils.isEquals(itemName,FormulaUtils.parseItemName(o.getEName()))&&o.getEName().contains("设计值")).findAny();
                            if(designFdOp.isPresent()){
                                key+="@"+designFdOp.get().getValues().stream().map(ElementData::stringValue).filter(StringUtils::isNotEmpty).findAny().orElse("");
                            }
                            sta.put(key,overList);
                     });
                     if(sta.checked()){
+                        /*把附表数据刷入对应的附表元素对象*/
                         sta.flush();
                     }
                 }