Browse Source

公式相关:天气公式bug

yangyj 1 year ago
parent
commit
e729b24daa

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

@@ -452,12 +452,14 @@ public class CustomFunction {
     public static Object weather( 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(e).toString(DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
+            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 List<Object> obj2ListObj(Object input) {
         if (input == null) {
             return Collections.emptyList();

+ 7 - 0
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -615,6 +615,13 @@ public class FormulaUtils {
         }
         return list;
     }
+    /**从时间段中获取最后一个日期*/
+    public  static String range2end(String t){
+        if(t!=null&&Pattern.matches("^\\[(\\d{4}[年.\\-]\\d{2}[月.\\-]\\d{2}[日]?),\\s+(\\d{4}[年.\\-]\\d{2}[月.\\-]\\d{2}[日]?)]$",t)){
+            t=t.replaceAll("^\\[|]$","").split(",")[1].trim();
+        }
+        return t;
+    }
 
     public static FormData createFormDataFast(String name,String code,String values,String coords){
         if(StringUtils.isNotEmpty(code,name)){

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

@@ -12,6 +12,6 @@ public interface IFormulaOptionService extends IService<FormulaOption> {
     String queryOption(Long contractId, Long parentId, Long pkeyId, String key);
 
     Object saveOrUpdateOption(FormulaOptionVo fo);
-    Object saveOrUpdateOption(RangeInfo rg ,String[] dw,int start);
+    void saveOrUpdateOption(RangeInfo rg , String[] dw, int start);
 
 }

+ 2 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaOptionServiceImpl.java

@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mixsmart.utils.FormulaUtils;
 import com.mixsmart.utils.StringUtils;
 import lombok.RequiredArgsConstructor;
 import org.springblade.core.tool.api.R;
@@ -18,7 +17,6 @@ import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.mapper.FormulaOptionMapper;
 import org.springblade.manager.service.IFormulaOptionService;
 import org.springblade.manager.service.IWbsTreeContractService;
-import org.springframework.beans.BeanUtils;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
@@ -110,7 +108,7 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
     }
 
     @Override
-    public Object saveOrUpdateOption(RangeInfo rg,String[] dw,int start ) {
+    public void saveOrUpdateOption(RangeInfo rg, String[] dw, int start ) {
         try {
 
             RangeJson rj = new RangeJson(rg);
@@ -151,10 +149,9 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
             }
             formulaOption.setVal(root.toJSONString());
             this.saveOrUpdate(formulaOption);
-            return data;
         }catch (Exception e){
             e.printStackTrace();
-            return R.fail("保存失败");
+            R.fail("保存失败");
         }
     }
 

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

@@ -693,6 +693,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
 
     /*天气信息获取*/
     private void weather(){
+        try {
           List<String> dateList=new ArrayList<>();
           tec.formDataList.forEach(e->{
                if(e.executable()&&e.getFormula().getFormula().contains(".weather(")){
@@ -702,6 +703,10 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                       if(formData!=null&&!formData.empty()){
                          Optional<String> op= formData.getValues().stream().map(ElementData::stringValue).filter(StringUtils::isNotEmpty).findFirst();
                          op.ifPresent(t->{
+                             /*[2023年08月14日,  2023年08月15日]时间段格式*/
+                             if(t instanceof String){
+                                 t=FormulaUtils.range2end(t);
+                             }
                              dateList.add(new DateTime(t).toString(DatePattern.NORM_DATE_PATTERN));
                          });
                       }
@@ -716,6 +721,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                });
                tec.constantMap.put("WEATHER",map);
            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
     }
 
     /**通用计算*/