作者 钟来

修改曲线算法

@@ -2,6 +2,7 @@ package com.zhonglai.luhui.api.service; @@ -2,6 +2,7 @@ package com.zhonglai.luhui.api.service;
2 2
3 import com.google.common.base.CaseFormat; 3 import com.google.common.base.CaseFormat;
4 import com.ruoyi.common.utils.DateUtils; 4 import com.ruoyi.common.utils.DateUtils;
  5 +import com.ruoyi.common.utils.StringUtils;
5 import com.zhonglai.luhui.api.controller.data.DeviceSensorData; 6 import com.zhonglai.luhui.api.controller.data.DeviceSensorData;
6 import com.zhonglai.luhui.api.controller.data.SensorData; 7 import com.zhonglai.luhui.api.controller.data.SensorData;
7 import com.zhonglai.luhui.api.controller.data.TableGenerateSqlEnum; 8 import com.zhonglai.luhui.api.controller.data.TableGenerateSqlEnum;
@@ -310,18 +311,69 @@ public class DataService { @@ -310,18 +311,69 @@ public class DataService {
310 311
311 if(null != list && list.size() !=0 && null != list.get(0) && null != list.get(0).get("ct") && (list.get(0).get("ct")+"").equals("1")) 312 if(null != list && list.size() !=0 && null != list.get(0) && null != list.get(0).get("ct") && (list.get(0).get("ct")+"").equals("1"))
312 { 313 {
313 - list = publicMapper.getObjectListBySQL("select * from `ly-device-data`.`"+deviceInfoId+"-"+dataType+"` where (`time` % "+interval+")=0 and `time`>="+startTime+" and `time`<="+endTime+""); 314 + list = publicMapper.getObjectListBySQL("select *,(`time` % "+interval+") asb from `ly-device-data`.`"+deviceInfoId+"-"+dataType+"` where ((`time` % "+interval+")=0 OR `value`<>'') AND `time`>="+startTime+" and `time`<="+endTime+" order by `time` asc");
314 315
315 if(null != list && list.size() !=0 ) 316 if(null != list && list.size() !=0 )
316 { 317 {
317 StringBuffer sb = new StringBuffer(); 318 StringBuffer sb = new StringBuffer();
318 319
319 - for(Map<String,Object> map:list) 320 +
  321 + for(int i=0;i<list.size();i++)
320 { 322 {
321 - sb.append(map.get("time"));  
322 - sb.append(",");  
323 - sb.append(map.get("value"));  
324 - sb.append("\r\n"); 323 + Map<String,Object> map = list.get(i);
  324 + if(StringUtils.isNotEmpty((String)map.get("value")))
  325 + {
  326 + sb.append(map.get("time"));
  327 + sb.append(",");
  328 + sb.append(map.get("value"));
  329 + sb.append("\r\n");
  330 + }else{
  331 + String svalue = (String) map.get("value");
  332 + Long sasb = 0l;
  333 + if (i-1>=0)
  334 + {
  335 +
  336 + String object = (String) list.get(i-1).get("value");
  337 + if((Long) list.get(i-1).get("asb")!=0 && !"".equals(object)){
  338 + svalue = object;
  339 + sasb = (Long) list.get(i-1).get("asb");
  340 + }
  341 +
  342 + }
  343 + String xvalue = (String) map.get("value");
  344 + Long xasb = 0l;
  345 + if (i+1<list.size())
  346 + {
  347 + String object = (String) list.get(i+1).get("value");
  348 + if((Long) list.get(i+1).get("asb")!=0 && !"".equals(object)){
  349 + xvalue = object;
  350 + xasb = (Long) list.get(i+1).get("asb");
  351 + }
  352 + }
  353 +
  354 + if(!"".equals(svalue) && !"".equals(xvalue) )
  355 + {
  356 + if(sasb-xasb>=0)
  357 + {
  358 + sb.append(map.get("time"));
  359 + sb.append(",");
  360 + sb.append(xvalue);
  361 + sb.append("\r\n");
  362 + }else {
  363 + sb.append(map.get("time"));
  364 + sb.append(",");
  365 + sb.append(svalue);
  366 + sb.append("\r\n");
  367 + }
  368 + }else{
  369 + sb.append(map.get("time"));
  370 + sb.append(",");
  371 + sb.append( svalue+""+xvalue);
  372 + sb.append("\r\n");
  373 + }
  374 + }
  375 +
  376 +
325 } 377 }
326 // 销毁数据源 在执行方法之后 378 // 销毁数据源 在执行方法之后
327 DynamicDataSourceContextHolder.clearDataSourceType(); 379 DynamicDataSourceContextHolder.clearDataSourceType();