瀏覽代碼

日志公式问题

zhuwei 1 天之前
父節點
當前提交
857abb5566

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -66,7 +66,7 @@ public class FormData {
      */
     private Integer sort = 0;
     /**
-     * 内容:同一个groupId下List<每一页内容>
+     * 内容:同一个groupId下List<每一页内容> key 坐标
      * 用于输出
      */
     private List<ElementData> values=new ArrayList<>();

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

@@ -54,6 +54,10 @@ public class StaticObjectMethodNode implements MethodNode {
                 if (method == null) {
                     nextmethod:
                     for (Method each : beanType.getMethods()) {
+                        System.out.println("---"+each.getName()+"===="+Modifier.isStatic(each.getModifiers())+"--"+(each.getParameterTypes().length == args.length) );
+                       if(each.getName().equals("maxtembydate")){
+                           System.out.println();
+                       }
                         if (Modifier.isStatic(each.getModifiers()) && each.getName().equals(methodName)
                                 && each.getParameterTypes().length == args.length) {
                             Class<?>[] parameterTypes = each.getParameterTypes();

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

@@ -469,7 +469,7 @@ public class CustomFunction {
             return result;
     }
 
-
+    // 获取天气
     public static Object weather( Object dateObj,Map<String,Object> map){
            if(dateObj!=null&&map!=null){
                List<Object> date=obj2ListObj(dateObj);
@@ -478,6 +478,23 @@ public class CustomFunction {
            return "";
     }
 
+    // 获取最大温度
+    public static Object maxtembydate( Object dateObj,Map<String,Object> map){
+        if(dateObj!=null&&map!=null){
+            List<Object> date=obj2ListObj(dateObj);
+            return  date.stream().map(StringUtils::handleNull).filter(StringUtils::isNotEmpty).map(e->map.get(new DateTime(FormulaUtils.range2end(e)).toString(DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
+        }
+        return "";
+    }
+
+    // 获取最小温度
+    public static Object mintembydate( Object dateObj,Map<String,Object> map){
+        if(dateObj!=null&&map!=null){
+            List<Object> date=obj2ListObj(dateObj);
+            return  date.stream().map(StringUtils::handleNull).filter(StringUtils::isNotEmpty).map(e->map.get(new DateTime(FormulaUtils.range2end(e)).toString(DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
+        }
+        return "";
+    }
 
 
 

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

@@ -643,6 +643,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
     }
 
+    //计算key和坐标之间的关系数据
     private List<NodeTable> createNodeTables(Long nodeId, String contractId, String projectId, ExecuteType type ,String tableOwner, String recordId) {
         List<NodeTable> tableAll = new ArrayList<>();
         if (type.equals(ExecuteType.INSPECTION)) {
@@ -674,7 +675,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         List<Long> pkeyIds = keyMappers.stream().map(KeyMapper::getPkId).distinct().collect(Collectors.toList());
         Map<String, Map<String, String>> coordinateMap = new HashMap<>(pkeyIds.size() * 2);
         if (pkeyIds.size() > 0) {
-            if (ExecuteType.TESTING.equals(type)) {
+            if (ExecuteType.TESTING.equals(type) || ExecuteType.LOGINFO.equals(type)) {
                 List<WbsTreePrivate> list = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>query().lambda().in(WbsTreePrivate::getPKeyId, pkeyIds));
                 if (list.size() > 0) {
                     list.forEach(e -> coordinateMap.computeIfAbsent(e.getInitTableName(), k -> FormulaUtils.getElementCell(e.getHtmlUrl())));

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

@@ -1218,7 +1218,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         tec.formDataMap.putAll(baseMap);*/
         /*通用计算*/
         generalCalc(tec);
-        if (ExecuteType.INSPECTION.equals(tec.getExecuteType())|| ExecuteType.LOGINFO.equals(tec.getExecuteType()) ) {
+        if (ExecuteType.INSPECTION.equals(tec.getExecuteType())) {
             if (tec.isNew) {
                 //TODO
             } else {
@@ -1237,8 +1237,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         try {
             List<String> dateList = new ArrayList<>();
             tec.formDataList.forEach(e -> {
-                if (e.executable() && e.getFormula().getFormula().contains(".weather(")) {
-                    String code = RegexUtil.findResult("(?<=weather\\(E\\[')[^']+(?='\\],WEATHER\\))", e.getFormula().getFormula());
+                if (e.executable() && (e.getFormula().getFormula().contains(".weather(") || e.getFormula().getFormula().contains(".maxtembydate("))) {
+                    String code = RegexUtil.findResult("(?<=\\(E\\[')[^']+(?='\\],WEATHER\\))", e.getFormula().getFormula());
                     if (code != null) {
                         FormData formData = tec.getFormDataMap().get(code);
                         if (formData != null && !formData.empty()) {
@@ -1249,12 +1249,38 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 }
             });
             if (dateList.size() > 0) {
-                List<Map<String, Object>> listMap = this.jdbcTemplate.queryForList(" select DATE(b.record_time) ds,b.weather from m_project_contract_area a join u_weather_info b on a.id=contract_area_id where a.contract_id=" + tec.getContractId() + " and DATE(b.record_time) in('" + dateList.stream().distinct().collect(Collectors.joining("','")) + "')");
+                List<Map<String, Object>> listMap = this.jdbcTemplate.queryForList(" select DATE(b.record_time) ds,b.weather,temp_high as maxtembydate,temp_low as mintembydate from m_project_contract_area a join u_weather_info b on a.id=contract_area_id where a.contract_id=" + tec.getContractId() + " and DATE(b.record_time) in('" + dateList.stream().distinct().collect(Collectors.joining("','")) + "')");
+                // 天气
                 Map<String, String> map = new HashMap<>();
+                //星期几
+                Map<String, String> map4 = new HashMap<>();
                 listMap.forEach(m -> {
-                    map.put(Func.toStr(m.get("ds")), Func.toStr(m.get("weather")));
+                    String ds = Func.toStr(m.get("ds"));
+                    map.put(ds, Func.toStr(m.get("weather")));
+                    //将时间转化星期几
+
+
+
                 });
                 tec.constantMap.put("WEATHER", map);
+
+                // 最高气温
+                Map<String, String> map2 = new HashMap<>();
+                listMap.forEach(m -> {
+                    map2.put(Func.toStr(m.get("ds")), Func.toStr(m.get("maxtembydate")));
+                });
+                tec.constantMap.put("MAXTEMBYDATE", map2);
+
+                // 最低气温
+                Map<String, String> map3 = new HashMap<>();
+                listMap.forEach(m -> {
+                    map3.put(Func.toStr(m.get("ds")), Func.toStr(m.get("mintembydate")));
+                });
+                tec.constantMap.put("MINTEMBYDATE", map3);
+
+                //星期几
+                tec.constantMap.put("MINTEMBYDATE", map4 );
+
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -1271,7 +1297,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             checkTable = op.get().getInitTableName();
         }
         for (FormData fd : tec.formDataList) {
-            if(fd.getCode().equals("m_20230423154304_1650042591250481152:key_42")){
+            if(fd.getCode().equals("_20240528110420_1795289980302524416:key_8")){
                 System.out.println("111");
             }
             if (fd.verify()) {
@@ -1315,6 +1341,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                 }
                             } else {
                                 putEle(f, ele, currentMap, fd);
+                               //公式获取值
                                 Object data = Expression.parse(formula.getFormula()).calculate(currentMap);
                                 //如果有空串,也要加进data不然表格数据顺序会混乱
                                 try {
@@ -1389,7 +1416,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                         }
                                     }
                                 }
-
+                                // 公式获取的数据 准备写入 准装 字段和值的关系
                                 write(tec, fd, data);
                             }
                             /*错位计算偏移量重置*/