Bläddra i källkod

支座垫石bug

cr 5 dagar sedan
förälder
incheckning
74fea4224c

+ 6 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -2390,10 +2390,13 @@ public class ExcelTabController extends BladeController {
         executionTime.info("----组装完成----");
         try {
             Long pKeyId = Long.parseLong(tableInfoList.get(0).getPkeyId());
-            String sql = "SELECT node_name from m_wbs_tree_contract where p_key_id=" + pKeyId;
-            String nodeName = jdbcTemplate.queryForObject(sql, String.class);
+            WbsTreeContract contract = wbsTreeContractService.getById(pKeyId);
+            String sql = "SELECT * from m_wbs_tree_contract where (p_key_id=?) OR (p_id=? AND is_type_private_pid=? AND is_deleted=0 AND is_buss_show!=2)";
+            List<WbsTreeContract> list = jdbcTemplate.query(sql, new Object[]{pKeyId, contract.getPId(), contract.getIsTypePrivatePid()}, new BeanPropertyRowMapper<>(WbsTreeContract.class));
             HashMap<Long, String> map = new HashMap<>();
-            map.put(pKeyId, nodeName);
+            for (WbsTreeContract wbsTreeContract : list) {
+                map.put(wbsTreeContract.getPKeyId(), wbsTreeContract.getNodeName());
+            }
             RandomNumberHolder.setRandomNumber(map);
         } catch (NumberFormatException e) {
             throw new RuntimeException(e);

+ 75 - 70
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/FormulaZhiZuo.java

@@ -18,105 +18,110 @@ import org.springframework.stereotype.Component;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 
 @Component
 @Data
 public class FormulaZhiZuo implements FormulaStrategy {
 
+
     @Override
     public void execute(FormData cur, TableElementConverter tec) {
         String key = cur.getFormula().getRely().substring(cur.getFormula().getRely().indexOf(':') + 1);
         HashMap<Long, String> randomNumber = RandomNumberHolder.getRandomNumber();
-        Map.Entry<Long, String> firstMap = randomNumber.entrySet().iterator().next();
-        Optional<TableInfo> firstTableInfo = tec.getTableInfoList().stream().filter(tableInfo->tableInfo.getPkeyId().equals(firstMap.getKey().toString())).findFirst();
-        String s = firstTableInfo.get().getDataMap().get(key);
-        String[] strings = s.split("☆");
-        Map<Integer, Double> list = new HashMap<>();
-        for (int i = 0; i < strings.length; i++) {
-            String pattern = "_\\^_(.*?)_";
-            java.util.regex.Pattern r = java.util.regex.Pattern.compile(pattern);
-            java.util.regex.Matcher m = r.matcher(strings[i]);
-            if (m.find()) {
-                // 获取匹配的值
-                Integer mapkey = Integer.parseInt(m.group(1));
-                Double v = Double.valueOf(strings[i].substring(0, strings[i].indexOf("_^_")));
-                list.put(mapkey, v);
-            }
-        }
-        List<ElementData> values = cur.getValues();
-        values.forEach(e->e.setValue(null));
-        TreeMap<Integer, Double> map = new TreeMap<>(list);
-        Map.Entry<Integer, Double> firstEntry = map.firstEntry();
-        Double first = firstEntry.getValue();
-        Double second;
-        Double threed;
-        for (int i = 0; i < map.size(); i++) {
-            if(i>=4){
-                break;
-            }
-            Double v = map.get(firstEntry.getKey() + i + 1);
-            if (ObjectUtil.isNotEmpty(v)) {
-                Double value = first - v;
-                if(value<0){
-                    value=Math.abs(value);
-                }
-                for (int j = i; j < values.size(); j++) {
-                    if(values.get(j).getY()==firstEntry.getKey() + i + 1){
-                        values.get(j).setValue(value);
-                        break;
+        if (!randomNumber.isEmpty()) {
+            List<TableInfo> collect = tec.getTableInfoList().stream().filter(tableInfo -> randomNumber.containsKey(Long.parseLong(tableInfo.getPkeyId()))).collect(Collectors.toList());
+            int index=0;
+            List<ElementData> values = cur.getValues();
+            values.forEach(e -> e.setValue(null));
+            for (TableInfo tableInfo : collect) {
+                String s = tableInfo.getDataMap().get(key);
+                String[] strings = s.split("☆");
+                Map<Integer, Double> list = new HashMap<>();
+                for (int i = 0; i < strings.length; i++) {
+                    String pattern = "_\\^_(.*?)_";
+                    java.util.regex.Pattern r = java.util.regex.Pattern.compile(pattern);
+                    java.util.regex.Matcher m = r.matcher(strings[i]);
+                    if (m.find()) {
+                        // 获取匹配的值
+                        Integer mapkey = Integer.parseInt(m.group(1));
+                        Double v = Double.valueOf(strings[i].substring(0, strings[i].indexOf("_^_")));
+                        list.put(mapkey, v);
                     }
                 }
-            }
-        }
-        if (map.size() >= 5) {
-            Integer key1 = firstEntry.getKey() + 5;
-            second = map.get(key1);
-            if (ObjectUtil.isNotEmpty(second)) {
-                for (int i = 5; i < map.size(); i++) {
-                    if(i>=9){
+                TreeMap<Integer, Double> map = new TreeMap<>(list);
+                Map.Entry<Integer, Double> firstEntry = map.firstEntry();
+                Double first = firstEntry.getValue();
+                Double second;
+                Double threed;
+                for (int i = 0; i < map.size(); i++) {
+                    if (i >= 4) {
                         break;
                     }
-                    Double v = map.get(key1 + i -4);
+                    Double v = map.get(firstEntry.getKey() + i + 1);
                     if (ObjectUtil.isNotEmpty(v)) {
-                        Double value = second - v;
-                        if(value<0){
-                            value=Math.abs(value);
+                        Double value = first - v;
+                        if (value < 0) {
+                            value = Math.abs(value);
                         }
                         for (int j = i; j < values.size(); j++) {
-                            if(values.get(j).getY()==key1 + i -4){
-                                values.get(j).setValue(value);
+                            if (values.get(j).getY() == firstEntry.getKey() + i + 1) {
+                                values.get(j+index).setValue(value);
                                 break;
                             }
                         }
                     }
                 }
-
-            }
-        }
-        if (map.size() >= 10) {
-            Integer key2 = firstEntry.getKey() + 10;
-            threed = map.get(key2);
-            if (ObjectUtil.isNotEmpty(threed)) {
-                for (int i = 10; i < map.size(); i++) {
-                    Double v = map.get(key2 + i -9);
-                    if (ObjectUtil.isNotEmpty(v)) {
-                        Double value = threed - v;
-                        if(value<0){
-                            value=Math.abs(value);
-                        }
-                        for (int j = i; j < values.size(); j++) {
-                            if(values.get(j).getY()==key2 + i -9){
-                                values.get(j).setValue(value);
+                if (map.size() >= 5) {
+                    Integer key1 = firstEntry.getKey() + 5;
+                    second = map.get(key1);
+                    if (ObjectUtil.isNotEmpty(second)) {
+                        for (int i = 5; i < map.size(); i++) {
+                            if (i >= 9) {
                                 break;
                             }
+                            Double v = map.get(key1 + i - 4);
+                            if (ObjectUtil.isNotEmpty(v)) {
+                                Double value = second - v;
+                                if (value < 0) {
+                                    value = Math.abs(value);
+                                }
+                                for (int j = i; j < values.size(); j++) {
+                                    if (values.get(j).getY() == key1 + i - 4) {
+                                        values.get(j+index).setValue(value);
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+
+                    }
+                }
+                if (map.size() >= 10) {
+                    Integer key2 = firstEntry.getKey() + 10;
+                    threed = map.get(key2);
+                    if (ObjectUtil.isNotEmpty(threed)) {
+                        for (int i = 10; i < map.size(); i++) {
+                            Double v = map.get(key2 + i - 9);
+                            if (ObjectUtil.isNotEmpty(v)) {
+                                Double value = threed - v;
+                                if (value < 0) {
+                                    value = Math.abs(value);
+                                }
+                                for (int j = i; j < values.size(); j++) {
+                                    if (values.get(j).getY() == key2 + i - 9) {
+                                        values.get(j+index).setValue(value);
+                                        break;
+                                    }
+                                }
+                            }
                         }
                     }
                 }
+                index=index+15;
             }
-
         }
-        System.out.println(values);
     }
      //优化之后的代码 放开注释可直接使用
 //    @Override

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

@@ -434,15 +434,15 @@ public class TableElementConverter implements ITableElementConverter {
                             if(ObjectUtil.isNotEmpty(fd.getFormula())&&ObjectUtil.isNotEmpty(fd.getFormula().getNumber())&&"ZHIZUO".equals(fd.getFormula().getNumber())){
                                 HashMap<Long, String> map = RandomNumberHolder.getRandomNumber();
                                 if(!map.entrySet().isEmpty()){
-                                    String nodeName = map.entrySet().iterator().next().getValue();
-                                    if(nodeName.indexOf("__")!=-1){
-                                        String num = nodeName.substring(nodeName.indexOf("__") + 2);
-                                        int i = Integer.parseInt(num);
-                                        List<ElementData> p = pages.get(0);
-                                        TableInfo info = tables.get(i);
-                                        info.setToBeUpdated(true);
-                                        info.getDataMap().put(fd.getKey(), FormulaUtils.recovery(p));
-                                    }else {
+                                    //String nodeName = map.entrySet().iterator().next().getValue();
+//                                    if(nodeName.indexOf("__")!=-1){
+//                                        String num = nodeName.substring(nodeName.indexOf("__") + 2);
+//                                        int i = Integer.parseInt(num);
+//                                        List<ElementData> p = pages.get(0);
+//                                        TableInfo info = tables.get(i);
+//                                        info.setToBeUpdated(true);
+//                                        info.getDataMap().put(fd.getKey(), FormulaUtils.recovery(p));
+//                                    }else {
                                         for (int i = 0; i < pages.size(); i++) {
                                         /*每一页映射一个tableInfo*/
                                         List<ElementData> p = pages.get(i);
@@ -450,7 +450,7 @@ public class TableElementConverter implements ITableElementConverter {
                                         info.setToBeUpdated(true);
                                         info.getDataMap().put(fd.getKey(), FormulaUtils.recovery(p));
                                         }
-                                    }
+//                                    }
                                 }
                             }else {
                                 for (int i = 0; i < pages.size(); i++) {