From d4f150414533b95324b2a1c8a81c11d92efb71ec Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Tue, 13 Mar 2018 16:25:20 +0800
Subject: [PATCH] Merge branch 'master' of http://blit.7drlb.com:8888/r/screen_api_v2.git
---
src/main/java/com/moral/service/HistoryMinutelyService.java | 4
src/main/java/com/moral/service/OrganizationService.java | 2
src/main/java/com/moral/entity/charts/LineChartCriteria.java | 12 +
src/main/java/com/moral/controller/ReportController.java | 13 +
src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java | 4
src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java | 8
src/main/java/com/moral/entity/charts/AreaRange.java | 5
src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java | 2
src/main/java/com/moral/service/impl/SensorServiceImpl.java | 2
src/main/java/com/moral/controller/OrganizationController.java | 9 +
src/main/java/com/moral/entity/charts/TimePeriod.java | 12 +
src/main/java/com/moral/entity/charts/DataCondition.java | 13 +
src/main/java/com/moral/entity/charts/PairData.java | 9 +
src/main/java/com/moral/security/config/WebSecurityConfig.java | 1
src/main/java/com/moral/security/auth/jwt/SkipPathRequestMatcher.java | 4
src/main/java/com/moral/mapper/HistoryMinutelyMapper.java | 7
src/test/java/com/moral/ScreenApiApplicationTests.java | 14 ++
src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationSuccessHandler.java | 7
src/main/resources/mapper/HistoryMinutelyMapper.xml | 57 +++++++
src/test/java/com/moral/JavaBeanToJsonOutPrint.java | 45 ++++-
src/main/java/com/moral/common/util/ReportTimeFormat.java | 72 ++++++++++
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java | 7 +
src/main/java/com/moral/entity/charts/TimeUnits.java | 5
src/main/resources/application.yml | 19 +-
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 73 ++++++++++
25 files changed, 360 insertions(+), 46 deletions(-)
diff --git a/src/main/java/com/moral/common/util/ReportTimeFormat.java b/src/main/java/com/moral/common/util/ReportTimeFormat.java
new file mode 100644
index 0000000..47aa811
--- /dev/null
+++ b/src/main/java/com/moral/common/util/ReportTimeFormat.java
@@ -0,0 +1,72 @@
+package com.moral.common.util;
+
+import com.moral.entity.charts.TimePeriod;
+import com.moral.entity.charts.TimeUnits;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+public class ReportTimeFormat {
+ public static String toMySqlTimeFormat(TimeUnits timeUnits){
+ switch (timeUnits){
+ case YEAR: return "%Y";
+ case MONTH: return "%Y-%m";
+ case DAY: return "%Y-%m-%d";
+ case HOUR: return "%Y-%m-%d/%H";
+ case MINUTE:return "%Y-%m-%d/%H:%i";
+ }
+ return "%Y-%m-%d%H:%i:%s";
+ }
+ public static String toMySqlActualTimeFormat(TimeUnits timeUnits){
+ switch (timeUnits){
+ case YEAR: return "%Y";
+ case MONTH: return "%m";
+ case DAY: return "%d";
+ case HOUR: return "%H";
+ case MINUTE:return "%i";
+ }
+ return "%s";
+ }
+ public static List<String> makeTimeList(TimePeriod timePeriod){
+ Calendar start = Calendar.getInstance();
+ start.setTime(timePeriod.getStartTime());
+ Calendar end = Calendar.getInstance();
+ end.setTime(timePeriod.getEndTime());
+ List<String> timeList = new ArrayList<>();
+ String formatStyle = "";
+ int timeUnit = 0;
+ switch (timePeriod.getTimeUnits()){
+ case YEAR: formatStyle ="yyyy";
+ timeUnit = Calendar.YEAR;break;
+ case MONTH: formatStyle ="yyyy-MM";
+ timeUnit = Calendar.MONTH;break;
+ case DAY: formatStyle ="yyyy-MM-dd";
+ timeUnit = Calendar.DAY_OF_YEAR;break;
+ case HOUR: formatStyle ="yyyy-MM-dd/HH";
+ timeUnit = Calendar.HOUR;break;
+ case MINUTE: formatStyle ="yyyy-MM-dd/HH:mm";
+ timeUnit = Calendar.MINUTE;break;
+ }
+ do{
+ String time = dateToString(start.getTime(),formatStyle);
+ timeList.add(time);
+ start.add(timeUnit,1);
+ }
+ while (start.getTimeInMillis()<end.getTimeInMillis());
+ return timeList;
+ }
+ /**"yyyy-MM-dd hh:mm:ss"
+ * ������������date���������������������������������������������
+ * @param date
+ * @return
+ */
+ private static String dateToString(Date date,String formatStyle) {
+ SimpleDateFormat format = new SimpleDateFormat(formatStyle);
+ String dateFormat = format.format(date);
+ return dateFormat;
+ }
+
+}
diff --git a/src/main/java/com/moral/controller/OrganizationController.java b/src/main/java/com/moral/controller/OrganizationController.java
index bfeae2d..334c2f4 100644
--- a/src/main/java/com/moral/controller/OrganizationController.java
+++ b/src/main/java/com/moral/controller/OrganizationController.java
@@ -3,6 +3,8 @@
import com.moral.common.bean.PageBean;
import com.moral.common.bean.ResultBean;
import com.moral.entity.Organization;
+import com.moral.security.auth.JwtAuthenticationToken;
+import com.moral.security.model.UserContext;
import com.moral.service.OrganizationService;
import org.springframework.web.bind.annotation.*;
@@ -37,5 +39,10 @@
List<Organization> organizations = organizationService.getOrganizationsByName(name);
return new ResultBean<List<Organization>>(organizations);
}
-
+ @GetMapping("get-my-org")
+ public ResultBean<Organization> getMyOrganization(JwtAuthenticationToken token){
+ UserContext userContext = token.getPrincipal();
+ Organization organization = organizationService.getOrganizationsById(userContext.getOrganizationId());
+ return new ResultBean<>(organization);
+ }
}
diff --git a/src/main/java/com/moral/controller/ReportController.java b/src/main/java/com/moral/controller/ReportController.java
index 72bfd3a..f2058a8 100644
--- a/src/main/java/com/moral/controller/ReportController.java
+++ b/src/main/java/com/moral/controller/ReportController.java
@@ -12,10 +12,10 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.alibaba.fastjson.JSON;
+import com.moral.entity.charts.LineChartCriteria;
+import com.moral.entity.charts.PairData;
+import org.springframework.web.bind.annotation.*;
import com.moral.common.bean.ResultBean;
import com.moral.service.HistoryMinutelyService;
@@ -34,7 +34,10 @@
Map<String, List<Object>> demo = historyMinutelyService.getCompareReport(parameters);
return new ResultBean<Map<String,List<Object>>>(demo);
}
-
+ @PostMapping("line-chart")
+ public ResultBean <List<List<PairData>>> lineChart(@RequestBody LineChartCriteria lineChartCriteria){
+ return new ResultBean<>(historyMinutelyService.queryLineChartDateByCrieria(lineChartCriteria));
+ }
@GetMapping("excel")
public ResultBean<Boolean> getExcelReport(HttpServletRequest request,HttpServletResponse response) throws Exception {
Map<String, Object> parameters = getParametersStartingWith(request, null);
diff --git a/src/main/java/com/moral/entity/charts/AreaRange.java b/src/main/java/com/moral/entity/charts/AreaRange.java
new file mode 100644
index 0000000..0f0915c
--- /dev/null
+++ b/src/main/java/com/moral/entity/charts/AreaRange.java
@@ -0,0 +1,5 @@
+package com.moral.entity.charts;
+
+public enum AreaRange {
+ PROVINCE,CITY,AREA,MONITORPOINT,DEVICE
+}
diff --git a/src/main/java/com/moral/entity/charts/DataCondition.java b/src/main/java/com/moral/entity/charts/DataCondition.java
new file mode 100644
index 0000000..65bf0f8
--- /dev/null
+++ b/src/main/java/com/moral/entity/charts/DataCondition.java
@@ -0,0 +1,13 @@
+package com.moral.entity.charts;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class DataCondition {
+ private TimeUnits timeUnits;//������
+ private Integer actualTime;//������������
+ private AreaRange areaRange;//������������
+ private Integer areaRangeId;//���������������ID
+}
diff --git a/src/main/java/com/moral/entity/charts/LineChartCriteria.java b/src/main/java/com/moral/entity/charts/LineChartCriteria.java
new file mode 100644
index 0000000..589a25e
--- /dev/null
+++ b/src/main/java/com/moral/entity/charts/LineChartCriteria.java
@@ -0,0 +1,12 @@
+package com.moral.entity.charts;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LineChartCriteria {
+ private String sensorKey;//���������������
+ private TimePeriod timePeriod;//������������
+ private List<DataCondition> dataConditions;//������������������
+}
diff --git a/src/main/java/com/moral/entity/charts/PairData.java b/src/main/java/com/moral/entity/charts/PairData.java
new file mode 100644
index 0000000..d385a18
--- /dev/null
+++ b/src/main/java/com/moral/entity/charts/PairData.java
@@ -0,0 +1,9 @@
+package com.moral.entity.charts;
+
+import lombok.Data;
+
+@Data
+public class PairData {
+ private String category ;
+ private Double Value;
+}
diff --git a/src/main/java/com/moral/entity/charts/TimePeriod.java b/src/main/java/com/moral/entity/charts/TimePeriod.java
new file mode 100644
index 0000000..aec4a62
--- /dev/null
+++ b/src/main/java/com/moral/entity/charts/TimePeriod.java
@@ -0,0 +1,12 @@
+package com.moral.entity.charts;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class TimePeriod {
+ private TimeUnits timeUnits;//������������
+ private Date startTime;//������������
+ private Date endTime;//������������
+}
diff --git a/src/main/java/com/moral/entity/charts/TimeUnits.java b/src/main/java/com/moral/entity/charts/TimeUnits.java
new file mode 100644
index 0000000..92ed288
--- /dev/null
+++ b/src/main/java/com/moral/entity/charts/TimeUnits.java
@@ -0,0 +1,5 @@
+package com.moral.entity.charts;
+
+public enum TimeUnits {
+ YEAR,MONTH,DAY,HOUR,MINUTE
+}
diff --git a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
index cfc8941..7149776 100644
--- a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
@@ -1,5 +1,10 @@
package com.moral.mapper;
+import com.moral.entity.charts.DataCondition;
+import com.moral.entity.charts.PairData;
+import com.moral.entity.charts.TimePeriod;
+import org.apache.ibatis.annotations.Param;
+
import java.util.List;
import java.util.Map;
@@ -8,5 +13,5 @@
Map<String, Double> getSersionAvgByDevice(Map<String, Object> parameters);
List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters);
-
+ List<PairData> selectLineChartDateByCrieria(@Param("sensorKey") String sensorKey, @Param("timePeriod") TimePeriod timePeriod, @Param("dataCondition") DataCondition dataCondition);
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/security/auth/jwt/SkipPathRequestMatcher.java b/src/main/java/com/moral/security/auth/jwt/SkipPathRequestMatcher.java
index 7c747d8..a0302ed 100644
--- a/src/main/java/com/moral/security/auth/jwt/SkipPathRequestMatcher.java
+++ b/src/main/java/com/moral/security/auth/jwt/SkipPathRequestMatcher.java
@@ -7,6 +7,7 @@
import javax.servlet.http.HttpServletRequest;
import java.util.List;
+import java.util.Optional;
import java.util.stream.Collectors;
/**
@@ -21,7 +22,8 @@
private RequestMatcher processingMatcher;
public SkipPathRequestMatcher(List<String> pathsToSkip, String processingPath) {
- Assert.notNull(pathsToSkip);
+ pathsToSkip = Optional.of(pathsToSkip)
+ .orElseThrow(()-> new NullPointerException("In Method SkipPathRequestMatcher,Param pathsToSkip can't be null."));
List<RequestMatcher> m = pathsToSkip.stream().map(path -> new AntPathRequestMatcher(path)).collect(Collectors.toList());
matchers = new OrRequestMatcher(m);
processingMatcher = new AntPathRequestMatcher(processingPath);
diff --git a/src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationSuccessHandler.java b/src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationSuccessHandler.java
index 02c6d29..71db7f1 100644
--- a/src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationSuccessHandler.java
+++ b/src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationSuccessHandler.java
@@ -1,6 +1,7 @@
package com.moral.security.auth.login;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.moral.security.config.JwtSettings;
import com.moral.security.model.UserContext;
import com.moral.security.model.token.JwtToken;
import com.moral.security.model.token.JwtTokenFactory;
@@ -17,6 +18,7 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -31,7 +33,8 @@
public class LoginAwareAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
private final ObjectMapper mapper;
private final JwtTokenFactory tokenFactory;
-
+ @Autowired
+ private JwtSettings jwtSettings;
@Autowired
public LoginAwareAuthenticationSuccessHandler(final ObjectMapper mapper, final JwtTokenFactory tokenFactory) {
this.mapper = mapper;
@@ -49,7 +52,7 @@
Map<String, String> tokenMap = new HashMap<String, String>();
tokenMap.put("token", accessToken.getToken());
tokenMap.put("refreshToken", refreshToken.getToken());
-
+ tokenMap.put("expiredTime",jwtSettings.getTokenExpirationTime().toString());
response.setStatus(HttpStatus.OK.value());
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
mapper.writeValue(response.getWriter(), tokenMap);
diff --git a/src/main/java/com/moral/security/config/WebSecurityConfig.java b/src/main/java/com/moral/security/config/WebSecurityConfig.java
index c04d95d..c237db9 100644
--- a/src/main/java/com/moral/security/config/WebSecurityConfig.java
+++ b/src/main/java/com/moral/security/config/WebSecurityConfig.java
@@ -40,6 +40,7 @@
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
public static final String AUTHENTICATION_HEADER_NAME = "X-Authorization";
+ public static final String REFRESH_TOKEN_HEADER_NAME = "X-Refrsh-Token";
public static final String AUTHENTICATION_PARAM_NAME = "_token";
public static final String AUTHENTICATION_URL = "/auth/login";
public static final String REFRESH_TOKEN_URL = "/auth/token";
diff --git a/src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java b/src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java
index f965e0f..2ad722d 100644
--- a/src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java
+++ b/src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java
@@ -56,7 +56,7 @@
@RequestMapping(value="/auth/token", method= RequestMethod.GET, produces={ MediaType.APPLICATION_JSON_VALUE })
public @ResponseBody
JwtToken refreshToken(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
- String tokenPayload = tokenExtractor.extract(request.getHeader(WebSecurityConfig.AUTHENTICATION_HEADER_NAME));
+ String tokenPayload = tokenExtractor.extract(request.getHeader(WebSecurityConfig.REFRESH_TOKEN_HEADER_NAME));
RawAccessJwtToken rawToken = new RawAccessJwtToken(tokenPayload);
RefreshToken refreshToken = RefreshToken.create(rawToken, jwtSettings.getTokenSigningKey()).orElseThrow(() -> new InvalidJwtToken());
diff --git a/src/main/java/com/moral/service/HistoryMinutelyService.java b/src/main/java/com/moral/service/HistoryMinutelyService.java
index 7a1ca38..ec3f36d 100644
--- a/src/main/java/com/moral/service/HistoryMinutelyService.java
+++ b/src/main/java/com/moral/service/HistoryMinutelyService.java
@@ -1,5 +1,8 @@
package com.moral.service;
+import com.moral.entity.charts.LineChartCriteria;
+import com.moral.entity.charts.PairData;
+
import java.util.List;
import java.util.Map;
@@ -14,4 +17,5 @@
Map<String, Object> getMonthAverageBySensor(Map<String, Object> parameters);
+ List<List<PairData>> queryLineChartDateByCrieria(LineChartCriteria lineChartCriteria);
}
diff --git a/src/main/java/com/moral/service/OrganizationService.java b/src/main/java/com/moral/service/OrganizationService.java
index 4a243d9..e210565 100644
--- a/src/main/java/com/moral/service/OrganizationService.java
+++ b/src/main/java/com/moral/service/OrganizationService.java
@@ -20,5 +20,5 @@
public void deleteByIds(Integer... ids);
List<Organization> getOrganizationsByName(String name);
-
+ public Organization getOrganizationsById(int id);
}
diff --git a/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
index 8b9651c..24ca266 100644
--- a/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
@@ -50,11 +50,11 @@
public Optional queryValueByOrganizationId(int organizationId) {
String key = RedisUtils.getAlarmKey(organizationId);
AlarmConfigValue alarmConfigValue = redisUtils.get(key,new TypeReference<AlarmConfigValue>(){});
- if(alarmConfigValue==null){
+ if(alarmConfigValue==null) {
AlarmConfig alarmConfig = alarmConfigMapper.selectByOrganizationId(organizationId);
- if(alarmConfig!=null&&alarmConfig.getValue()!=null){
- alarmConfigValue = alarmConfig.getValue();
- }else{
+ if (alarmConfig != null && alarmConfig.getValue() != null) {
+ alarmConfigValue = alarmConfig.getValue();
+ } else {
alarmConfigValue = getDefaultAlarmConfigValue();
}
}
diff --git a/src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java
index ac912aa..9f15f47 100644
--- a/src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java
@@ -1,19 +1,15 @@
package com.moral.service.impl;
import com.moral.common.bean.PageBean;
-import com.moral.common.util.ExampleUtil;
import com.moral.common.util.MyBatisBaseMapUtil;
import com.moral.entity.DeviceVersion;
import com.moral.entity.DeviceVersionSensor;
import com.moral.mapper.DeviceVersionMapper;
import com.moral.mapper.DeviceVersionSensorMapper;
import com.moral.service.DeviceVersionService;
-import org.springframework.data.mongodb.core.aggregation.ArrayOperators;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
-
import javax.annotation.Resource;
-import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index bf84e4a..1518f85 100644
--- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -27,9 +27,16 @@
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.stream.Collector;
+import java.util.stream.Collectors;
import javax.annotation.Resource;
+import com.moral.common.util.ReportTimeFormat;
+import com.moral.entity.charts.DataCondition;
+import com.moral.entity.charts.LineChartCriteria;
+import com.moral.entity.charts.PairData;
+import com.moral.entity.charts.TimePeriod;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -435,4 +442,70 @@
return result;
}
+ /**
+ * ������������������������������������������������������������������
+ * @param lineChartCriteria
+ * @return
+ */
+ @Override
+ public List<List<PairData>> queryLineChartDateByCrieria(LineChartCriteria lineChartCriteria){
+ String sensorKey = lineChartCriteria.getSensorKey();
+ TimePeriod timePeriod = lineChartCriteria.getTimePeriod();
+ List<DataCondition> dataConditionList = lineChartCriteria.getDataConditions();
+ List<List<PairData>> list = new ArrayList<>();
+ dataConditionList.forEach(item -> {
+ List<PairData> pairDataList = queryOneLineChartDateByCrieria(sensorKey,timePeriod,item);
+ list.add(pairDataList);
+ });
+ return list;
+ }
+
+ /**
+ * ������������������������������������������������������������������
+ * @param sensorKey
+ * @param timePeriod
+ * @param dataCondition
+ * @return
+ */
+ public List<PairData> queryOneLineChartDateByCrieria(String sensorKey, TimePeriod timePeriod, DataCondition dataCondition){
+ List<String> timeList = ReportTimeFormat.makeTimeList(timePeriod);
+ List<PairData> lineChartDatas = historyMinutelyMapper.selectLineChartDateByCrieria(sensorKey,timePeriod,dataCondition);
+ List<PairData> lineChartDatasWithEmpty = new ArrayList<>();
+ int m = 0;
+ int dataLength = lineChartDatas.size()-1;
+ m = dataLength>-1?0:-1;
+ if(m>-1){
+ for(int n =0;n<timeList.size();n++){
+ String time = timeList.get(n);
+ if(m>-1){
+ PairData pairData = lineChartDatas.get(m);
+ String keyTime = pairData.getCategory();
+ if(time.equals(keyTime)){
+ lineChartDatasWithEmpty.add(pairData);
+ m = m<dataLength ? m+1 : -1;
+ }else{
+ lineChartDatasWithEmpty.add(generateEmptyData(time));
+ }
+ }else {
+ lineChartDatasWithEmpty.add(generateEmptyData(time));
+ }
+
+ }
+ }else{
+ fillEmptyDataToList(timeList,lineChartDatasWithEmpty);
+ }
+ return lineChartDatasWithEmpty;
+ }
+ private PairData generateEmptyData(String time) {
+ PairData pairData = new PairData();
+ pairData.setCategory(time);
+ pairData.setValue(null);
+ return pairData;
+ }
+ private void fillEmptyDataToList(List<String> timeList,List<PairData> lineChartDatasWithEmpty){
+ timeList.forEach( time ->{
+ PairData pairData = generateEmptyData(time);
+ lineChartDatasWithEmpty.add(pairData);
+ });
+ }
}
diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
index 2442dc2..f38fe9e 100644
--- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -119,4 +119,11 @@
return organizations;
}
+ @Override
+ public Organization getOrganizationsById(int id) {
+ Example example = new Example(ENTITY_CLASS);
+ example.or().andEqualTo("id",id);
+ List<Organization> organizationList = organizationMapper.selectWithAreaNameByExample(example);
+ return organizationList.size()>0?organizationList.get(0):null;
+ }
}
diff --git a/src/main/java/com/moral/service/impl/SensorServiceImpl.java b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
index a628a6f..727f319 100644
--- a/src/main/java/com/moral/service/impl/SensorServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
@@ -27,7 +27,7 @@
public List<Sensor> queryAll(){
return sensorMapper.selectByExample(null);
}
- public PageBean queryByPageBean(PageBean pageBean){
+ public PageBean<Sensor> queryByPageBean(PageBean pageBean){
return MyBatisBaseMapUtil.queryPage(sensorMapper,pageBean,ENTITY_CLASS);
}
@Override
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6967306..0580053 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,14 +1,18 @@
+
server:
- port: 8001
+ port: 8080
session-timeout: 30
tomcat.max-threads: 0
tomcat.uri-encoding: UTF-8
+ jsp-servlet:
+ init-parameters:
+ development: true
spring:
thymeleaf:
cache: false
datasource:
- url: jdbc:mysql://47.96.19.115:3306/monitor_db?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
+ url: jdbc:mysql://47.96.26.152:3306/monitor_db?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
username: root
password: xOlx8z9L7Pt6y9YI
#driver-class-name: com.mysql.cj.jdbc.Driver
@@ -60,9 +64,9 @@
min-idle: 0
- data:
- mongodb:
- uri: mongodb://47.96.171.62:27017/monitor
+# data:
+# mongodb:
+# uri: mongodb://47.96.171.62:27017/monitor
mybatis:
mapper-locations: classpath*:/mapper/*Mapper.xml
@@ -71,7 +75,8 @@
spring.profiles: default
moral.security.jwt:
- tokenExpirationTime: 15 # Number of minutes
+ tokenExpirationTime: 5 # Number of minutes
refreshTokenExpTime: 60 # Minutes
tokenIssuer: http://monitor.7drlb.com
- tokenSigningKey: xm9EV6Hy5RAFL8EEACIDAwQus
\ No newline at end of file
+ tokenSigningKey: xm9EV6Hy5RAFL8EEACIDAwQus
+
diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml
index 3f3e22f..2bbb17b 100644
--- a/src/main/resources/mapper/HistoryMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.moral.mapper.HistoryMinutelyMapper">
-
- <select id="getSersionAvgByDevice" resultType="java.util.LinkedHashMap">
+<mapper namespace="com.moral.mapper.HistoryMinutelyMapper">
+ <resultMap id="PairDataResultMap" type="com.moral.entity.charts.PairData" >
+ <result column="format_time" property="category" jdbcType="VARCHAR" />
+ <result column="value" property="value" jdbcType="DOUBLE" />
+ </resultMap>
+ <select id="getSersionAvgByDevice" resultType="java.util.Map">
SELECT
${sensorKeyColumn}
FROM
@@ -13,7 +16,7 @@
AND time < #{end}
</select>
- <select id="getMonitorPointOrDeviceAvgData" resultType="java.util.LinkedHashMap">
+ <select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
SELECT
DATE_FORMAT(time, #{typeFormat}) time,
${sensorKeyColumn}
@@ -38,5 +41,49 @@
ORDER BY
time
</select>
-
+ <select id="selectLineChartDateByCrieria" resultMap="PairDataResultMap">
+ SELECT
+ <if test='"MINUTE"!=dataCondition.timeUnits.toString()'>
+ AVG(json->'$.${sensorKey}[0]')
+ </if>
+ <if test='"MINUTE"==dataCondition.timeUnits.toString()'>
+ json->'$.${sensorKey}[0]'
+ </if>
+ as value,
+ DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as format_time
+ FROM
+ `history_minutely` hmi
+ <where>
+ and hmi.time >= #{timePeriod.startTime}
+ and hmi.time <![CDATA[<=]]> #{timePeriod.endTime}
+ <if test="dataCondition.actualTime != null">
+ and DATE_FORMAT(time, '${@com.moral.common.util.ReportTimeFormat@toMySqlActualTimeFormat(dataCondition.timeUnits)}') = #{dataCondition.actualTime}
+ </if>
+ and hmi.mac in (
+ select mac from device dev
+ join monitor_point mpt on dev.monitor_point_id = mpt.id
+ <where>
+ <if test='"DEVICE"==dataCondition.areaRange.toString()'>
+ and dev.id = #{dataCondition.areaRangeId}
+ </if>
+ <if test='"MONITORPOINT"==dataCondition.areaRange.toString()'>
+ and mpt.id = #{dataCondition.areaRangeId}
+ </if>
+ <if test='"PROVINCE"==dataCondition.areaRange.toString()'>
+ and mpt.provice_code = #{dataCondition.areaRangeId}
+ </if>
+ <if test='"CITY"==dataCondition.areaRange.toString()'>
+ and mpt.city_code = #{dataCondition.areaRangeId}
+ </if>
+ <if test='"AREA"==dataCondition.areaRange.toString()'>
+ and mpt.area_code = #{dataCondition.areaRangeId}
+ </if>
+ </where>
+ )
+ </where>
+ <if test='"MINUTE"!=dataCondition.timeUnits.toString()'>
+ GROUP BY format_time
+ </if>
+ ORDER BY format_time asc
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/test/java/com/moral/JavaBeanToJsonOutPrint.java b/src/test/java/com/moral/JavaBeanToJsonOutPrint.java
index 8b9de9d..e639249 100644
--- a/src/test/java/com/moral/JavaBeanToJsonOutPrint.java
+++ b/src/test/java/com/moral/JavaBeanToJsonOutPrint.java
@@ -6,30 +6,49 @@
import com.moral.entity.Device;
import com.moral.entity.DeviceAdjustValue;
import com.moral.entity.alarm.AlarmConfig;
+import com.moral.entity.charts.*;
import com.moral.security.auth.login.LoginMode;
import com.moral.security.model.UserContext;
import org.junit.Test;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import javax.annotation.Resource;
+import java.util.*;
public class JavaBeanToJsonOutPrint {
@Test
public void jsonOutPrintTest(){
- UserContext userContext = UserContext.create("312", LoginMode.Andriod,1,new ArrayList<>());
-// adjustValue.setCreateTime(new Date());
-// adjustValue.setUpdateTime(new Date());
-// adjustValue.setId(0);
-// Map<String,Float> value = new HashMap();
-// value.put("e1", (float) 1.2);
-// adjustValue.setValue(value);
- String json = "{\"createTime\":1516342989358,\"deviceId\":null,\"id\":0,\"updateTime\":1516342989358,\"value\":{\"e1\":1.2}}";
+// UserContext userContext = UserContext.create("312", LoginMode.Andriod,1,new ArrayList<>());
+//// adjustValue.setCreateTime(new Date());
+//// adjustValue.setUpdateTime(new Date());
+//// adjustValue.setId(0);
+//// Map<String,Float> value = new HashMap();
+//// value.put("e1", (float) 1.2);
+//// adjustValue.setValue(value);
+// String json = "{\"createTime\":1516342989358,\"deviceId\":null,\"id\":0,\"updateTime\":1516342989358,\"value\":{\"e1\":1.2}}";
+// LineChartCriteria lineChartCriteria = new LineChartCriteria();
+// List<DataCondition> dataConditions = new ArrayList<>();
+// DataCondition dataCondition = new DataCondition();
+// dataCondition.setActualTime(1);
+// dataCondition.setAreaRange(AreaRange.AREA);
+// dataCondition.setAreaRangeId(1);
+// dataCondition.setTimeUnits(TimeUnits.DAY);
+// dataConditions.add(dataCondition);
+// lineChartCriteria.setDataConditions(dataConditions);
+// lineChartCriteria.setSensorKey("e1");
+// TimePeriod timePeriod = new TimePeriod();
+// timePeriod.setEndTime(new Date());
+// timePeriod.setStartTime(new Date());
+// timePeriod.setTimeUnits(TimeUnits.DAY);
+// lineChartCriteria.setTimePeriod(timePeriod);
// Map map = JSON.parseObject("{\"e1\":0.0}");
- String json1 = JSON.toJSONString(userContext);
+ String str = "{\"sensorKey\":\"e1\",\"timePeriod\":{\"startTime\":\"2018-03-09T07:53:53.463Z\",\"endTime\":\"2018-03-09T07:53:53.463Z\",\"timeUnits\":\"DAY\"},\"dataConditions\":[{\"timeUnits\":\"DAY\",\"actualTime\":null,\"areaRange\":\"AREA\",\"areaRangeId\":320583}]}";
+ LineChartCriteria lineChartCriteria = JSON.parseObject(str,LineChartCriteria.class);
+// TimePeriod timePeriod = JSON.parseObject(str,TimePeriod.class);
+ String json1 = JSON.toJSONString(lineChartCriteria);
System.out.printf("\n\n\n\n");
System.out.printf(json1);
System.out.printf("\n\n\n\n");
}
+
}
diff --git a/src/test/java/com/moral/ScreenApiApplicationTests.java b/src/test/java/com/moral/ScreenApiApplicationTests.java
index 0dbf23c..35846f3 100644
--- a/src/test/java/com/moral/ScreenApiApplicationTests.java
+++ b/src/test/java/com/moral/ScreenApiApplicationTests.java
@@ -3,7 +3,10 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest
@@ -12,5 +15,16 @@
@Test
public void contextLoads() {
}
+ @Resource
+ private BCryptPasswordEncoder encoder;
+ @Test
+ public void testEncoder(){
+ String hash = encoder.encode("123456");
+ System.out.printf("\n============================\n");
+ System.out.printf("hash:"+hash);
+// Boolean result = encoder.matches("123456",hash);
+// System.out.printf("result:"+result);
+ System.out.printf("\n============================\n");
+ }
}
--
Gitblit v1.8.0