From 02e7513f69757f9310dfb51c801bf735cfea873a Mon Sep 17 00:00:00 2001 From: huangfeng Date: Fri, 5 Jan 2024 09:26:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cac/controller/NiecSensorController.java | 3 +- src/main/java/com/xydl/cac/model/OnePage.java | 18 +++++++ .../java/com/xydl/cac/model/SensorDetail.java | 18 ++++--- .../com/xydl/cac/service/DataService.java | 6 +++ .../xydl/cac/service/NiecSensorService.java | 3 +- .../com/xydl/cac/service/ReportService.java | 3 +- .../cac/service/impl/DataServiceImpl.java | 46 ++++++++++++++++++ .../service/impl/NiecSensorServiceImpl.java | 48 +++++-------------- .../cac/service/impl/ReportServiceImpl.java | 2 +- 9 files changed, 96 insertions(+), 51 deletions(-) create mode 100644 src/main/java/com/xydl/cac/model/OnePage.java diff --git a/src/main/java/com/xydl/cac/controller/NiecSensorController.java b/src/main/java/com/xydl/cac/controller/NiecSensorController.java index c25069f..075be9c 100644 --- a/src/main/java/com/xydl/cac/controller/NiecSensorController.java +++ b/src/main/java/com/xydl/cac/controller/NiecSensorController.java @@ -21,6 +21,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.util.List; +import java.util.Map; @RestController @Api(tags = {"装置表相关接口"}) @@ -94,7 +95,7 @@ public class NiecSensorController extends BasicController { model.setPageNum(this.initPageNum(model.getPageNum())); model.setPageSize(this.initPageSize(model.getPageSize())); } - SensorDetail detail = service.getDetail(model); + SensorDetail> detail = service.getDetail(model); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(detail.getSensor().getName() + ".xlsx", "UTF-8")); response.setContentType("application/vnd.ms-excel"); diff --git a/src/main/java/com/xydl/cac/model/OnePage.java b/src/main/java/com/xydl/cac/model/OnePage.java new file mode 100644 index 0000000..95abb01 --- /dev/null +++ b/src/main/java/com/xydl/cac/model/OnePage.java @@ -0,0 +1,18 @@ +package com.xydl.cac.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class OnePage { + @ApiModelProperty("数据") + private List content; + @ApiModelProperty("总数量") + private Long total; + @ApiModelProperty("页码") + Integer pageNum; + @ApiModelProperty("每页数量") + Integer pageSize; +} diff --git a/src/main/java/com/xydl/cac/model/SensorDetail.java b/src/main/java/com/xydl/cac/model/SensorDetail.java index 6bce12d..9812e27 100644 --- a/src/main/java/com/xydl/cac/model/SensorDetail.java +++ b/src/main/java/com/xydl/cac/model/SensorDetail.java @@ -6,20 +6,18 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; -import java.util.Map; @Data -public class SensorDetail { +public class SensorDetail extends OnePage { @ApiModelProperty("装置信息") private NiecSensor sensor; @ApiModelProperty("点表配置") private List points; - @ApiModelProperty("数据") - private List> content; - @ApiModelProperty("总数量") - private Long total; - @ApiModelProperty("页码") - Integer pageNum; - @ApiModelProperty("每页数量") - Integer pageSize; + + public void initFrom(OnePage page) { + this.setContent(page.getContent()); + this.setTotal(page.getTotal()); + this.setPageNum(page.getPageNum()); + this.setPageSize(page.getPageSize()); + } } diff --git a/src/main/java/com/xydl/cac/service/DataService.java b/src/main/java/com/xydl/cac/service/DataService.java index 22bfa9f..2097387 100644 --- a/src/main/java/com/xydl/cac/service/DataService.java +++ b/src/main/java/com/xydl/cac/service/DataService.java @@ -1,11 +1,17 @@ package com.xydl.cac.service; +import com.xydl.cac.entity.*; +import com.xydl.cac.model.*; + import java.util.List; +import java.util.Map; public interface DataService { List getDataTables() throws Exception; List getDataTableColumns(String tableName) throws Exception; + + OnePage> getDate(NiecSensor sensor, List points, ConditionModel model); } diff --git a/src/main/java/com/xydl/cac/service/NiecSensorService.java b/src/main/java/com/xydl/cac/service/NiecSensorService.java index fb9a81e..e517617 100644 --- a/src/main/java/com/xydl/cac/service/NiecSensorService.java +++ b/src/main/java/com/xydl/cac/service/NiecSensorService.java @@ -6,6 +6,7 @@ import com.xydl.cac.model.SensorDetail; import org.springframework.data.domain.Page; import java.util.List; +import java.util.Map; public interface NiecSensorService { List listAll(); @@ -14,5 +15,5 @@ public interface NiecSensorService { List getTree(); - SensorDetail getDetail(ConditionModel model) throws Exception; + SensorDetail> getDetail(ConditionModel model) throws Exception; } diff --git a/src/main/java/com/xydl/cac/service/ReportService.java b/src/main/java/com/xydl/cac/service/ReportService.java index 6cfe75d..7f5c6e4 100644 --- a/src/main/java/com/xydl/cac/service/ReportService.java +++ b/src/main/java/com/xydl/cac/service/ReportService.java @@ -3,8 +3,9 @@ package com.xydl.cac.service; import com.xydl.cac.model.SensorDetail; import java.io.OutputStream; +import java.util.Map; public interface ReportService { - void exportSensor(SensorDetail detail, OutputStream output) throws Exception; + void exportSensor(SensorDetail> detail, OutputStream output) throws Exception; } 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 9a213b2..0e427a5 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -1,7 +1,13 @@ package com.xydl.cac.service.impl; +import com.xydl.cac.entity.NiecPoint; +import com.xydl.cac.entity.NiecSensor; +import com.xydl.cac.model.ConditionModel; +import com.xydl.cac.model.OnePage; import com.xydl.cac.service.DataService; +import com.xydl.cac.util.DateUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -9,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Map; @Service @Slf4j @@ -46,4 +53,43 @@ public class DataServiceImpl implements DataService { } return cols; } + + @Override + public OnePage> getDate(NiecSensor sensor, List points, ConditionModel model) { + OnePage result = new OnePage(); + + String sqlFrom = " FROM " + sensor.getTableName(); + String sqlWhere = " WHERE " + sensor.getDevidFieldName() + "=" + sensor.getDevId(); + if (model.getStartTime() != null) { + sqlWhere = sqlWhere + " AND " + sensor.getDtimeFieldName() + " >= '" + DateUtil.format(model.getStartTime()) + "'"; + } + if (model.getEndTime() != null) { + sqlWhere = sqlWhere + " AND " + sensor.getDtimeFieldName() + " < '" + DateUtil.format(model.getEndTime()) + "'"; + } + String sqlOrder = " ORDER BY " + sensor.getDtimeFieldName() + " DESC"; + String sqlLimit = ""; + if (model.getPageNum() != null && model.getPageSize() != null) { + result.setPageNum(model.getPageNum()); + result.setPageSize(model.getPageSize()); + sqlLimit = String.format(" LIMIT %d,%d", (model.getPageNum() - 1) * model.getPageSize(), model.getPageSize()); + } + + String sqlSelect = "SELECT DATE_FORMAT(" + sensor.getDtimeFieldName() + ", '%Y-%m-%d %H:%i:%s') as acquisitionTime"; + for (NiecPoint point : points) { + if (StringUtils.isNotBlank(point.getField())) { + sqlSelect = sqlSelect + ", " + point.getField(); + } + } + + String sqlCount = "SELECT count(*)" + sqlFrom + sqlWhere; + String sql = sqlSelect + sqlFrom + sqlWhere + sqlOrder + sqlLimit; + log.info(sql); + + Long count = jdbcTemplate.queryForObject(sqlCount, Long.class); + List> content = jdbcTemplate.queryForList(sql); + + result.setTotal(count); + result.setContent(content); + return result; + } } diff --git a/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java index 9a835b4..059e875 100644 --- a/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java @@ -3,16 +3,16 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.NiecPoint; import com.xydl.cac.entity.NiecSensor; import com.xydl.cac.model.ConditionModel; +import com.xydl.cac.model.OnePage; import com.xydl.cac.model.SensorDetail; import com.xydl.cac.repository.NiecSensorRepository; +import com.xydl.cac.service.DataService; import com.xydl.cac.service.NiecPointService; import com.xydl.cac.service.NiecSensorService; -import com.xydl.cac.util.DateUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -30,7 +30,7 @@ public class NiecSensorServiceImpl implements NiecSensorService { @Resource NiecPointService pointService; @Resource - private JdbcTemplate jdbcTemplate; + DataService dataService; @Override public List listAll() { @@ -70,7 +70,7 @@ public class NiecSensorServiceImpl implements NiecSensorService { } @Override - public SensorDetail getDetail(ConditionModel model) throws Exception { + public SensorDetail> getDetail(ConditionModel model) throws Exception { Optional optional = repository.findById(model.getId()); if (!optional.isPresent()) { throw new Exception("未找到该装置"); @@ -93,58 +93,32 @@ public class NiecSensorServiceImpl implements NiecSensorService { throw new Exception("该装置缺少业务点表配置信息"); } - SensorDetail result = this.getData(sensor, points, model); + SensorDetail> result = this.getData(sensor, points, model); return result; } - public SensorDetail getData(NiecSensor sensor, List points, ConditionModel model) { - SensorDetail result = new SensorDetail(); - result.setSensor(sensor); + public SensorDetail> getData(NiecSensor sensor, List points, ConditionModel model) { List pointList = new ArrayList<>(); - - String sqlFrom = " FROM " + sensor.getTableName(); - String sqlWhere = " WHERE " + sensor.getDevidFieldName() + "=" + sensor.getDevId(); - if (model.getStartTime() != null) { - sqlWhere = sqlWhere + " AND " + sensor.getDtimeFieldName() + " >= '" + DateUtil.format(model.getStartTime()) + "'"; - } - if (model.getEndTime() != null) { - sqlWhere = sqlWhere + " AND " + sensor.getDtimeFieldName() + " < '" + DateUtil.format(model.getEndTime()) + "'"; - } - String sqlOrder = " ORDER BY " + sensor.getDtimeFieldName() + " DESC"; - String sqlLimit = ""; - if (model.getPageNum() != null && model.getPageSize() != null) { - result.setPageNum(model.getPageNum()); - result.setPageSize(model.getPageSize()); - sqlLimit = String.format(" LIMIT %d,%d", (model.getPageNum() - 1) * model.getPageSize(), model.getPageSize()); - } - - String sqlSelect = "SELECT DATE_FORMAT(" + sensor.getDtimeFieldName() + ", '%Y-%m-%d %H:%i:%s') as acquisitionTime"; for (NiecPoint point : points) { if (StringUtils.isNotBlank(point.getField())) { - sqlSelect = sqlSelect + ", " + point.getField(); pointList.add(point); } } - String sqlCount = "SELECT count(*)" + sqlFrom + sqlWhere; - String sql = sqlSelect + sqlFrom + sqlWhere + sqlOrder + sqlLimit; - log.info(sql); - - Long count = jdbcTemplate.queryForObject(sqlCount, Long.class); - List> content = jdbcTemplate.queryForList(sql); + SensorDetail> result = new SensorDetail(); + result.setSensor(sensor); + OnePage> page = dataService.getDate(sensor, pointList, model); + result.initFrom(page); for (NiecPoint point : pointList) { List dataList = new ArrayList<>(); - for (Map item : content) { + for (Map item : result.getContent()) { Object value = item.get(point.getField()); dataList.add(value); } point.setData(dataList); } - - result.setTotal(count); result.setPoints(pointList); - result.setContent(content); return result; } } diff --git a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java index 3daba55..cf0f841 100644 --- a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java @@ -22,7 +22,7 @@ import java.util.Map; public class ReportServiceImpl implements ReportService { @Override - public void exportSensor(SensorDetail detail, OutputStream output) throws Exception { + public void exportSensor(SensorDetail> detail, OutputStream output) throws Exception { List> heads = new ArrayList<>(); List head = new ArrayList<>(); head.add("时间");