package com.nanometer.smartlab.controller;
|
|
|
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.Maps;
|
import com.nanometer.smartlab.entity.*;
|
import com.nanometer.smartlab.entity.dto.ContainerStatusMngDto;
|
import com.nanometer.smartlab.service.SysContainerSensorsService;
|
import com.nanometer.smartlab.service.SysLaboratoryContainerService;
|
import com.nanometer.smartlab.service.SysLaboratoryService;
|
import com.nanometer.smartlab.service.SysWarehouseContainerService;
|
import com.nanometer.smartlab.util.FacesUtils;
|
import com.nanometer.smartlab.util.Utils;
|
import org.apache.commons.lang.RandomStringUtils;
|
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.time.DateFormatUtils;
|
import org.apache.commons.lang.time.DateUtils;
|
import org.apache.commons.lang3.RandomUtils;
|
import org.apache.log4j.Logger;
|
import org.primefaces.context.RequestContext;
|
import org.primefaces.model.LazyDataModel;
|
import org.primefaces.model.SortOrder;
|
import org.primefaces.model.chart.*;
|
import org.springframework.context.annotation.Scope;
|
import org.springframework.stereotype.Controller;
|
|
import javax.annotation.PostConstruct;
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
|
@Controller
|
@Scope("session")
|
public class ContainerStatusMngController extends BaseController {
|
|
private static Logger logger = Logger.getLogger(ContainerStatusMngController.class);
|
|
@Resource
|
private SysContainerSensorsService sysContainerSensorsService;
|
|
private String laboratoryName;
|
private String laboratoryContainerName;
|
|
private LazyDataModel<ContainerStatusMngDto> dataModel;
|
private LineChartModel lineModel;
|
|
private SysContainerSensors viewSensors;
|
|
private List<Map<String,String>> containerSelectorList = new ArrayList<Map<String,String>>();
|
private String selectedContainerId;
|
private Integer periodType =1; //1:day; 2:week; 3:month
|
private Integer lineType =1; //1:温度; 2:湿度; 3:浓度
|
private Integer model = 0; //1是查询
|
|
private List<ContainerStatusMngDto> selectContainerList;
|
private SysContainerSensors selectedSysContainerSensors;
|
|
private List<SysContainerSensors> chartSensorsList;
|
|
|
public LazyDataModel<ContainerStatusMngDto> getDataModel() {
|
if (this.dataModel == null) {
|
this.dataModel = new LazyDataModel<ContainerStatusMngDto>() {
|
|
public List<ContainerStatusMngDto> load(int first, int pageSize, String sortField, SortOrder sortOrder,
|
Map<String, Object> filters) {
|
List<ContainerStatusMngDto> list = null;
|
try {
|
Map<String,Object> params = new HashMap<>();
|
//查询把index置为0
|
if(model == 1){
|
first = 0;
|
}
|
params.put("offset", first);
|
params.put("limit",pageSize);
|
params.put("laboratoryName",laboratoryName);
|
params.put("laboratoryContainerName",laboratoryContainerName);
|
|
int pageCount = sysContainerSensorsService.countAll(params);
|
//设置页码
|
this.setRowCount(pageCount);
|
if(pageCount>0)
|
list = sysContainerSensorsService.selectInfo(params);
|
|
} catch (Exception e) {
|
logger.error("error occured.", e);
|
}
|
return list;
|
}
|
|
@Override
|
public ContainerStatusMngDto getRowData(String rowKey) {
|
Iterator<ContainerStatusMngDto> iterator = this.iterator();
|
if (iterator != null) {
|
ContainerStatusMngDto su = null;
|
while (iterator.hasNext()) {
|
su = iterator.next();
|
if (rowKey.equals(su.getId())) {
|
return su;
|
}
|
}
|
}
|
return null;
|
}
|
};
|
}
|
return dataModel;
|
}
|
|
public void onViewBtnClick() {
|
if (this.selectContainerList == null
|
|| this.selectContainerList.size() == 0) {
|
FacesUtils.warn("请选择数据。");
|
return;
|
}
|
if (this.selectContainerList.size() > 1) {
|
FacesUtils.warn("只能选择一个数据进行查看。");
|
return;
|
}
|
containerSelectorList.clear();
|
selectedContainerId = selectContainerList.get(0).getId();
|
fetchChartSensorsList();
|
renderLineChart();
|
RequestContext.getCurrentInstance().execute("PF('dialog').show()");
|
}
|
|
|
public void search(){
|
dataModel = null;
|
model = 1;
|
}
|
|
public String getLaboratoryName() {
|
return laboratoryName;
|
}
|
|
public void setLaboratoryName(String laboratoryName) {
|
this.laboratoryName = laboratoryName;
|
}
|
|
public String getLaboratoryContainerName() {
|
return laboratoryContainerName;
|
}
|
|
public void setLaboratoryContainerName(String laboratoryContainerName) {
|
this.laboratoryContainerName = laboratoryContainerName;
|
}
|
|
public List<ContainerStatusMngDto> getSelectContainerList() {
|
return selectContainerList;
|
}
|
|
public void setSelectContainerList(List<ContainerStatusMngDto> selectContainerList) {
|
this.selectContainerList = selectContainerList;
|
}
|
|
public SysContainerSensors getViewSensors() {
|
return viewSensors;
|
}
|
|
public void setViewSensors(SysContainerSensors viewSensors) {
|
this.viewSensors = viewSensors;
|
}
|
|
public LineChartModel getLineModel() {
|
return lineModel;
|
}
|
|
public void setLineModel(LineChartModel lineModel) {
|
this.lineModel = lineModel;
|
}
|
|
public String getSelectedContainerId() {
|
return selectedContainerId;
|
}
|
|
public void setSelectedContainerId(String selectedContainerId) {
|
this.selectedContainerId = selectedContainerId;
|
}
|
|
public Integer getLineType() {
|
return lineType;
|
}
|
|
public void setLineType(Integer lineType) {
|
this.lineType = lineType;
|
}
|
|
public Integer getPeriodType() {
|
return periodType;
|
}
|
|
public void setPeriodType(Integer periodType) {
|
this.periodType = periodType;
|
}
|
|
public SysContainerSensors getSelectedSysContainerSensors() {
|
return selectedSysContainerSensors;
|
}
|
|
public void setSelectedSysContainerSensors(SysContainerSensors selectedSysContainerSensors) {
|
this.selectedSysContainerSensors = selectedSysContainerSensors;
|
}
|
|
public void onSelectLineType(){
|
renderLineChart();
|
}
|
|
public void onSelectPeriodType(){
|
fetchChartSensorsList();
|
renderLineChart();
|
}
|
|
public void onSelectContainer(){
|
fetchChartSensorsList();
|
renderLineChart();
|
}
|
|
public List<Map<String, String>> getContainerSelectorList() {
|
return containerSelectorList;
|
}
|
|
public void setContainerSelectorList(List<Map<String, String>> containerSelectorList) {
|
this.containerSelectorList = containerSelectorList;
|
}
|
|
public void fetchChartSensorsList(){
|
String beginDate = null;
|
|
if(periodType == 1){
|
beginDate = DateFormatUtils.ISO_DATE_FORMAT.format(new Date());
|
} else if(periodType == 2){
|
beginDate = Utils.getWeekMonday("yyyy-MM-dd");
|
} else if(periodType ==3){
|
beginDate = DateFormatUtils.ISO_DATE_FORMAT.format(DateUtils.truncate(new Date(),Calendar.MONTH));
|
}
|
|
Map params = ImmutableMap.of("containerId",selectedContainerId,"beginUpdateTime", beginDate,"orderby","update_time asc");
|
chartSensorsList = sysContainerSensorsService.getListBySelective(params);
|
}
|
|
public void renderLineChart() {
|
String minY = null;
|
String maxY = null;
|
|
lineModel = new LineChartModel();
|
LineChartSeries series1 = new LineChartSeries();
|
series1.setFill(true);
|
|
for (SysContainerSensors sensors : chartSensorsList) {
|
if(lineType == 1) {
|
series1.setLabel("温度");
|
series1.set(DateFormatUtils.format(sensors.getUpdateTime(),"yyyy-MM-dd HH:mm"),sensors.getTemp());
|
} else if(lineType == 2){
|
series1.setLabel("湿度");
|
series1.set(DateFormatUtils.format(sensors.getUpdateTime(),"yyyy-MM-dd HH:mm"),sensors.getHumidity());
|
} else {
|
series1.setLabel("浓度");
|
series1.set(DateFormatUtils.format(sensors.getUpdateTime(),"yyyy-MM-dd HH:mm"),sensors.getVoc1());
|
}
|
}
|
|
// DateAxis axis = new DateAxis("Dates");
|
// Axis xAxis = lineModel.getAxis(AxisType.X);
|
|
Axis xAxis = new DateAxis();
|
|
lineModel.getAxes().put(AxisType.X, xAxis);
|
lineModel.setShowDatatip(true);
|
if (periodType == 1) {
|
xAxis.setTickFormat("%m-%d:%H");
|
}
|
if (periodType == 2) {
|
xAxis.setTickFormat("%m-%d");
|
}
|
if (periodType == 3) {
|
xAxis.setTickFormat("%m-%d");
|
}
|
// axis.setMax(DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm"));
|
// axis.setMin(minDate);
|
// axis.setTickFormat("%Y-%m-%d %H:%M");
|
|
lineModel.addSeries(series1);
|
lineModel.setSeriesColors("5e9cd9");
|
lineModel.setLegendPosition("e");
|
Axis yAxis = lineModel.getAxis(AxisType.Y);
|
// yAxis.setMin(0);
|
// yAxis.setMax(10);
|
}
|
|
public List<SysContainerSensors> getChartSensorsList() {
|
return chartSensorsList;
|
}
|
|
public void setChartSensorsList(List<SysContainerSensors> chartSensorsList) {
|
this.chartSensorsList = chartSensorsList;
|
}
|
}
|