diff --git a/src/main/java/com/xydl/cac/service/DataService.java b/src/main/java/com/xydl/cac/service/DataService.java index 0d1f9e9..8a0149c 100644 --- a/src/main/java/com/xydl/cac/service/DataService.java +++ b/src/main/java/com/xydl/cac/service/DataService.java @@ -14,9 +14,7 @@ public interface DataService { List getDataTableColumns(String tableName) throws Exception; - OnePage> getData(NSensor sensor, List points, ConditionModel model); - - OnePage> getDataByDate(NSensor sensor, List points, ConditionModel model, int dayPerPage) throws Exception; + OnePage> getData(NSensor sensor, List points, ConditionModel model) throws Exception; void clearAllBind(); } diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index 0c72734..3de3ea8 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -86,8 +86,66 @@ public class DataServiceImpl implements DataService { schema = list.get(0); } + @Override - public OnePage> getData(NSensor sensor, List points, ConditionModel model) { + public OnePage> getData(NSensor sensor, List points, ConditionModel model) throws Exception { + if (model.getNumPerDay() != null && model.getNumPerDay() > 0) { + OnePage> page; + long totalDays = 0; + // 需要抽取数据 + if (model.getPageNum() != null || model.getPageSize() != null) { + + // 当前一页 + int dayPerPage = model.getPageSize() / model.getNumPerDay(); + if (dayPerPage < 1) { + dayPerPage = 1; + } + + // 处理开始和结束时间 + Date end = model.getEndTime(); + if (end == null) { + end = new Date(); + } + end = DateUtil.addDay(end, 1); + end = DateUtil.getDayZero(end); + model.setEndTime(end); + if (model.getStartTime() != null) { + totalDays = DateUtil.getDifferenceInDays(model.getStartTime(), model.getEndTime()); + } + + if (model.getPageNum() > 1) { + int p = model.getPageNum() - 1; + end = DateUtil.addDay(end, -dayPerPage * p); + } + model.setEndTime(end); + Date start = DateUtil.addDay(end, -dayPerPage); + if (model.getStartTime() == null || start.compareTo(model.getStartTime()) > 0) { + model.setStartTime(start); + } + + page = this.doSqlData(sensor, points, model); + page.setTotal(totalDays * model.getNumPerDay()); + + } else { + // 全量 + page = this.doSqlData(sensor, points, model); + } + + // 从数据里每天抽取num条 + List> content = DataUtil.pickNumPerDay(page.getContent(), model.getNumPerDay()); + page.setContent(content); + + page.setPageNum(model.getPageNum()); + page.setPageSize(content.size()); + return page; + } else { + // 不抽取数据 + OnePage> page = this.doSqlData(sensor, points, model); + return page; + } + } + + private OnePage> doSqlData(NSensor sensor, List points, ConditionModel model) { String devField = DataTable.getDevidField(sensor.getTableName()); String timeField = DataTable.getTimeField(sensor.getTableName()); OnePage result = new OnePage(); @@ -126,54 +184,6 @@ public class DataServiceImpl implements DataService { return result; } - @Override - public OnePage> getDataByDate(NSensor sensor, List points, ConditionModel model, int dayPerPage) throws Exception { - - // 处理开始和结束时间 - Date end = model.getEndTime(); - if (end == null) { - end = new Date(); - } - end = DateUtil.addDay(end, 1); - end = DateUtil.getDayZero(end); - model.setEndTime(end); - - Date start = model.getStartTime(); - if (start == null) { - start = DateUtil.addMonth(new Date(), -1); - } - start = DateUtil.getDayZero(start); - model.setStartTime(start); - - long daysBetweenDates = DateUtil.getDifferenceInDays(start, end); - - // 本次查询的时间范围 - ConditionModel newmodel = new ConditionModel(); - if (daysBetweenDates > dayPerPage) { - if (model.getPageNum() > 1) { - int p = model.getPageNum() - 1; - end = DateUtil.addDay(end, -dayPerPage * p); - } - newmodel.setEndTime(end); - start = DateUtil.addDay(end, -dayPerPage); - if (start.compareTo(model.getStartTime()) > 0) { - newmodel.setStartTime(start); - } else { - newmodel.setStartTime(model.getStartTime()); - } - } - OnePage> page = this.getData(sensor, points, newmodel); - - // 从数据里每天抽取num条 - List> content = DataUtil.pickNumPerDay(page.getContent(), model.getNumPerDay()); - page.setContent(content); - - page.setPageNum(model.getPageNum()); - page.setPageSize(model.getPageSize()); - page.setTotal(daysBetweenDates * model.getPageSize()); - return page; - } - @Override public void clearAllBind() { String sql = "UPDATE n_sensor SET icd_id=null"; diff --git a/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java index 816bc92..52add7c 100644 --- a/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java @@ -182,17 +182,8 @@ public class NSensorServiceImpl implements NSensorService { SensorDetail> result = new SensorDetail(); result.setSensor(sensor); - - if (model.getNumPerDay() != null && model.getPageSize() > model.getNumPerDay()) { - // 按每页几天取数据 - int dayPerPage = model.getPageSize() / model.getNumPerDay(); - OnePage> page = dataService.getDataByDate(sensor, pointList, model, dayPerPage); - result.initFrom(page); - } else { - // 按全量取数据 - OnePage> page = dataService.getData(sensor, pointList, model); - result.initFrom(page); - } + OnePage> page = dataService.getData(sensor, pointList, model); + result.initFrom(page); for (ModevTypePoint point : pointList) { List dataList = new ArrayList<>();