fix: 优化代码

dev
huangfeng 1 year ago
parent f4633d04aa
commit 02e7513f69

@ -21,6 +21,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.List; import java.util.List;
import java.util.Map;
@RestController @RestController
@Api(tags = {"装置表相关接口"}) @Api(tags = {"装置表相关接口"})
@ -94,7 +95,7 @@ public class NiecSensorController extends BasicController {
model.setPageNum(this.initPageNum(model.getPageNum())); model.setPageNum(this.initPageNum(model.getPageNum()));
model.setPageSize(this.initPageSize(model.getPageSize())); model.setPageSize(this.initPageSize(model.getPageSize()));
} }
SensorDetail detail = service.getDetail(model); SensorDetail<Map<String, Object>> detail = service.getDetail(model);
response.setHeader("Content-Disposition", "attachment; filename=" response.setHeader("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(detail.getSensor().getName() + ".xlsx", "UTF-8")); + URLEncoder.encode(detail.getSensor().getName() + ".xlsx", "UTF-8"));
response.setContentType("application/vnd.ms-excel"); response.setContentType("application/vnd.ms-excel");

@ -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<T> {
@ApiModelProperty("数据")
private List<T> content;
@ApiModelProperty("总数量")
private Long total;
@ApiModelProperty("页码")
Integer pageNum;
@ApiModelProperty("每页数量")
Integer pageSize;
}

@ -6,20 +6,18 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
import java.util.Map;
@Data @Data
public class SensorDetail { public class SensorDetail<T> extends OnePage<T> {
@ApiModelProperty("装置信息") @ApiModelProperty("装置信息")
private NiecSensor sensor; private NiecSensor sensor;
@ApiModelProperty("点表配置") @ApiModelProperty("点表配置")
private List<NiecPoint> points; private List<NiecPoint> points;
@ApiModelProperty("数据")
private List<Map<String, Object>> content; public void initFrom(OnePage page) {
@ApiModelProperty("总数量") this.setContent(page.getContent());
private Long total; this.setTotal(page.getTotal());
@ApiModelProperty("页码") this.setPageNum(page.getPageNum());
Integer pageNum; this.setPageSize(page.getPageSize());
@ApiModelProperty("每页数量") }
Integer pageSize;
} }

@ -1,11 +1,17 @@
package com.xydl.cac.service; package com.xydl.cac.service;
import com.xydl.cac.entity.*;
import com.xydl.cac.model.*;
import java.util.List; import java.util.List;
import java.util.Map;
public interface DataService { public interface DataService {
List<String> getDataTables() throws Exception; List<String> getDataTables() throws Exception;
List<String> getDataTableColumns(String tableName) throws Exception; List<String> getDataTableColumns(String tableName) throws Exception;
OnePage<Map<String, Object>> getDate(NiecSensor sensor, List<NiecPoint> points, ConditionModel model);
} }

@ -6,6 +6,7 @@ import com.xydl.cac.model.SensorDetail;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import java.util.List; import java.util.List;
import java.util.Map;
public interface NiecSensorService { public interface NiecSensorService {
List<NiecSensor> listAll(); List<NiecSensor> listAll();
@ -14,5 +15,5 @@ public interface NiecSensorService {
List<NiecSensor> getTree(); List<NiecSensor> getTree();
SensorDetail getDetail(ConditionModel model) throws Exception; SensorDetail<Map<String, Object>> getDetail(ConditionModel model) throws Exception;
} }

@ -3,8 +3,9 @@ package com.xydl.cac.service;
import com.xydl.cac.model.SensorDetail; import com.xydl.cac.model.SensorDetail;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.Map;
public interface ReportService { public interface ReportService {
void exportSensor(SensorDetail detail, OutputStream output) throws Exception; void exportSensor(SensorDetail<Map<String, Object>> detail, OutputStream output) throws Exception;
} }

@ -1,7 +1,13 @@
package com.xydl.cac.service.impl; 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.service.DataService;
import com.xydl.cac.util.DateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -9,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
@Service @Service
@Slf4j @Slf4j
@ -46,4 +53,43 @@ public class DataServiceImpl implements DataService {
} }
return cols; return cols;
} }
@Override
public OnePage<Map<String, Object>> getDate(NiecSensor sensor, List<NiecPoint> 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<Map<String, Object>> content = jdbcTemplate.queryForList(sql);
result.setTotal(count);
result.setContent(content);
return result;
}
} }

@ -3,16 +3,16 @@ package com.xydl.cac.service.impl;
import com.xydl.cac.entity.NiecPoint; import com.xydl.cac.entity.NiecPoint;
import com.xydl.cac.entity.NiecSensor; import com.xydl.cac.entity.NiecSensor;
import com.xydl.cac.model.ConditionModel; import com.xydl.cac.model.ConditionModel;
import com.xydl.cac.model.OnePage;
import com.xydl.cac.model.SensorDetail; import com.xydl.cac.model.SensorDetail;
import com.xydl.cac.repository.NiecSensorRepository; import com.xydl.cac.repository.NiecSensorRepository;
import com.xydl.cac.service.DataService;
import com.xydl.cac.service.NiecPointService; import com.xydl.cac.service.NiecPointService;
import com.xydl.cac.service.NiecSensorService; import com.xydl.cac.service.NiecSensorService;
import com.xydl.cac.util.DateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -30,7 +30,7 @@ public class NiecSensorServiceImpl implements NiecSensorService {
@Resource @Resource
NiecPointService pointService; NiecPointService pointService;
@Resource @Resource
private JdbcTemplate jdbcTemplate; DataService dataService;
@Override @Override
public List<NiecSensor> listAll() { public List<NiecSensor> listAll() {
@ -70,7 +70,7 @@ public class NiecSensorServiceImpl implements NiecSensorService {
} }
@Override @Override
public SensorDetail getDetail(ConditionModel model) throws Exception { public SensorDetail<Map<String, Object>> getDetail(ConditionModel model) throws Exception {
Optional<NiecSensor> optional = repository.findById(model.getId()); Optional<NiecSensor> optional = repository.findById(model.getId());
if (!optional.isPresent()) { if (!optional.isPresent()) {
throw new Exception("未找到该装置"); throw new Exception("未找到该装置");
@ -93,58 +93,32 @@ public class NiecSensorServiceImpl implements NiecSensorService {
throw new Exception("该装置缺少业务点表配置信息"); throw new Exception("该装置缺少业务点表配置信息");
} }
SensorDetail result = this.getData(sensor, points, model); SensorDetail<Map<String, Object>> result = this.getData(sensor, points, model);
return result; return result;
} }
public SensorDetail getData(NiecSensor sensor, List<NiecPoint> points, ConditionModel model) { public SensorDetail<Map<String, Object>> getData(NiecSensor sensor, List<NiecPoint> points, ConditionModel model) {
SensorDetail result = new SensorDetail();
result.setSensor(sensor);
List<NiecPoint> pointList = new ArrayList<>(); List<NiecPoint> 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) { for (NiecPoint point : points) {
if (StringUtils.isNotBlank(point.getField())) { if (StringUtils.isNotBlank(point.getField())) {
sqlSelect = sqlSelect + ", " + point.getField();
pointList.add(point); pointList.add(point);
} }
} }
String sqlCount = "SELECT count(*)" + sqlFrom + sqlWhere; SensorDetail<Map<String, Object>> result = new SensorDetail();
String sql = sqlSelect + sqlFrom + sqlWhere + sqlOrder + sqlLimit; result.setSensor(sensor);
log.info(sql); OnePage<Map<String, Object>> page = dataService.getDate(sensor, pointList, model);
result.initFrom(page);
Long count = jdbcTemplate.queryForObject(sqlCount, Long.class);
List<Map<String, Object>> content = jdbcTemplate.queryForList(sql);
for (NiecPoint point : pointList) { for (NiecPoint point : pointList) {
List<Object> dataList = new ArrayList<>(); List<Object> dataList = new ArrayList<>();
for (Map<String, Object> item : content) { for (Map<String, Object> item : result.getContent()) {
Object value = item.get(point.getField()); Object value = item.get(point.getField());
dataList.add(value); dataList.add(value);
} }
point.setData(dataList); point.setData(dataList);
} }
result.setTotal(count);
result.setPoints(pointList); result.setPoints(pointList);
result.setContent(content);
return result; return result;
} }
} }

@ -22,7 +22,7 @@ import java.util.Map;
public class ReportServiceImpl implements ReportService { public class ReportServiceImpl implements ReportService {
@Override @Override
public void exportSensor(SensorDetail detail, OutputStream output) throws Exception { public void exportSensor(SensorDetail<Map<String, Object>> detail, OutputStream output) throws Exception {
List<List<String>> heads = new ArrayList<>(); List<List<String>> heads = new ArrayList<>();
List<String> head = new ArrayList<>(); List<String> head = new ArrayList<>();
head.add("时间"); head.add("时间");

Loading…
Cancel
Save