Эх сурвалжийг харах

表单相关:重置和擦除元素数据

yangyj 2 жил өмнө
parent
commit
83289b1d5b

+ 120 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1785,6 +1785,126 @@ public class InformationWriteQueryController extends BladeController {
         }
         }
         return R.fail("操作失败");
         return R.fail("操作失败");
     }
     }
+    static String[] G8_TBN= new String[]{"m_20220922161954_1572863246099021824","m_20220928134702_1574999102784012288"};
+    private boolean checkG8(String tableName){
+        for (String s:G8_TBN){
+            if(s.equals(tableName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    private Map<String,String> reviseValue(WbsTreeContract wtc,WbsTreeContract parent,Map<String,Map<String,String>> ekvMap){
+        /*复制数据筛查
+        * 1.G8G10过滤  2.右键数据重新生成 3.*/
+        if(wtc!=null){
+            try {
+                String tableName=wtc.getInitTableName();
+                if(parent==null){
+                    parent  = this.wbsTreeContractClient.getContractWbsTreeByContractIdAndId(wtc.getParentId(),Long.parseLong(wtc.getContractId()));
+                }
+                if(checkG8(tableName)&&!ekvMap.containsKey(tableName)){
+                    List<Map<String,Object>> listMaps  =  this.jdbcTemplate.queryForList("select rely from m_formula where number ='TURN_POINT' limit 1");
+                    if(listMaps.size()>0){
+                        String rely = listMaps.get(0).get("rely").toString();
+                        ekvMap.put(tableName,Arrays.stream(rely.split("[,]")).skip(1).map(e->e.split(":")[1]).collect(Collectors.toMap(e->e,e->"null")));
+                    }
+                }else {
+                    FormulaOption formulaOption = this.formulaClient.option(parent.getPKeyId());
+                    if(formulaOption!=null){
+                        JSONObject root = JSON.parseObject(formulaOption.getVal());
+                        JSONObject table = (JSONObject) root.computeIfAbsent(wtc.getInitTableName(), (k) -> new JSONObject());
+                        Map<String,String> map = ekvMap.computeIfAbsent(wtc.getInitTableName(),K->new HashMap<>());
+                        table.forEach((k,v)->{
+                            if(!k.contains("@")){
+                                /*元素级别*/
+                                JSONObject elementJson = (JSONObject) v;
+                                JSONArray rgJson = elementJson.getJSONArray(RangeInfo.RG);
+                                if(rgJson!=null) {
+                                    map.put(k,rgJson.toJSONString());
+                                }
+                            }
+                        });
+                    }
+                }
+                return ekvMap.getOrDefault(tableName,new HashMap<>());
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+        return new HashMap<>();
+    }
+
+
+    private Object reviseValue(Map<String,String> p2 ,String key,Object value){
+        try {
+            if(p2.containsKey(key)){
+                String setting= p2.get(key);
+                if(StringPool.NULL.equals(setting)){
+                    /*擦除原来的内容*/
+                   return setting;
+                }else {
+                    /*重做随机值*/
+                    List<RangeJson> rjs = JSON.parseArray(setting, RangeJson.class);
+                    if (value != null && value.toString().length() > 0 && Func.isNotEmpty(rjs)) {
+                        List<String[]> la = Arrays.stream(value.toString().split("☆")).map(s -> s.split("_\\^_")).collect(Collectors.toList());
+                        /*全部为一个数的时候不用修改*/
+                        if (la.stream().map(a -> a[0]).collect(Collectors.toSet()).size() > 1||la.size()==1) {
+/*                            return la.stream().map(a -> {
+                                String v = a[0];
+                                RangeJson best = rjs.stream().min(Comparator.comparingDouble(j -> Double.parseDouble(v) - Double.parseDouble(j.getDesign()))).orElse(rjs.get(0));
+                                int scale = Math.max(new StringBuilder(v).reverse().indexOf("."), 0);
+                                String sv = BaseUtils.rangeList(1, best.getDesign(), best.getDev(), 1, scale, 1).get(0).toString();
+                                return sv + "_^_" + a[1];
+                            }).collect(Collectors.joining());*/
+                            List<String> result = new ArrayList<>();
+                            for(String[] a:la){
+                                String v = a[0];
+                                RangeJson best = rjs.stream().min(Comparator.comparingDouble(j -> Double.parseDouble(v) - Double.parseDouble(j.getDesign()))).orElse(rjs.get(0));
+                                int scale = Math.max(new StringBuilder(v).reverse().indexOf("."), 0);
+                                String sv = BaseUtils.rangeList(1, best.getDesign(), best.getDev(), 1, scale, 1).get(0).toString();
+                                result.add(sv + "_^_" + a[1]);
+                            }
+                            return String.join("☆",result);
+                        }
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return value;
+    }
+    /*元素情况,表字段,表单流水号,数据库表名*/
+    private String reviseCols(Map<String,String> p2 ,String cols ,Long pkeyId,String tableName ){
+        try {
+            if(p2.size()>0) {
+                String dataSql = "SELECT * FROM " + tableName + " WHERE p_key_id= " + pkeyId + " LIMIT 1";
+                List<Map<String, Object>> listMaps = this.jdbcTemplate.queryForList(dataSql);
+                if (listMaps.size() > 0) {
+                    Map<String, Object> origin = listMaps.get(0);
+                    List<String> target = Arrays.stream(cols.split(",")).collect(Collectors.toList());
+                    List<String> colsList = target.stream().filter(k -> k.startsWith("key")).collect(Collectors.toList());
+                    for (String k : colsList) {
+                        if (p2.containsKey(k)) {
+                            Object value = reviseValue(p2, k, origin.get(k));
+                            if (value != null && value.toString().contains("_^_")) {
+                                value = "'" + value + "'";
+                                target.set(target.indexOf(k), value.toString());
+                            }
+                        }
+                    }
+                    cols = String.join(",", target);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return cols;
+    }
+
+
+
 
 
     /**
     /**
      * 重构祖级id
      * 重构祖级id