فهرست منبع

公式相关:天气查询优化

yangyj 2 سال پیش
والد
کامیت
d0926e2b7f

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

@@ -452,13 +452,29 @@ public class CustomFunction {
     }
 
 
-    public static Object weather(List<Object> date,Map<String,Object> map){
-           if(ListUtils.isNotEmpty(date)&&map!=null){
+    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 "";
     }
 
+
+    public static List<Object> obj2ListObj(Object input) {
+        if (input == null) {
+            return Collections.emptyList();
+        }
+        List<Object> result = new ArrayList<>();
+        if (input instanceof List<?>) {
+            result.addAll((List<?>) input);
+        } else if (StringUtils.isNotEmpty(input)) {
+            result.add(input);
+        }
+        return result;
+    }
+
+
     public static Object dateMax(Object range) {
         if (StringUtils.isNotEmpty(range)) {
             String[] s = Func.toStr(range).replaceAll("[\\[\\]]", "").split(",\\s+");

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

@@ -688,7 +688,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                }
           });
            if(dateList.size()>0){
-              List<Map<String,Object>> listMap= this.jdbcTemplate.queryForList(" select DATE(b.create_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.create_time) in('"+ String.join(",", dateList) +"')");
+              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('"+ String.join(",", dateList) +"')");
               Map<String,String> map= new HashMap<>();
                listMap.forEach(m->{
                    map.put(Func.toStr(m.get("ds")),Func.toStr(m.get("weather")));