From 2bad8336e2c14ffd85403c14ad254916146b6a5e Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Tue, 13 Mar 2018 15:11:31 +0800 Subject: [PATCH] 报表模块 --- 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 4ee5b0f..fab186f 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