Commit b6bd857f authored by tangwei's avatar tangwei

解决冲突

parents a3f3ba1a 91f790e8
...@@ -12,8 +12,8 @@ import java.util.Date; ...@@ -12,8 +12,8 @@ import java.util.Date;
//风机指标信息 //风机指标信息
@Data @Data
public class IndexDto { public class IndexDto {
private String gateway;// '网关', private String gatewayId;// '网关',
private String indicatorValue;// '指标值', 取valueLable private String valueLabel;// '指标值', 取valueLable
private String indexAddress;// 指标地址 private String address;// 指标地址
private Date time;// '上报时间', private Date createdTime;// '上报时间',
} }
...@@ -3,22 +3,30 @@ package com.yeejoin.amos.boot.module.jxiop.biz.controller; ...@@ -3,22 +3,30 @@ package com.yeejoin.amos.boot.module.jxiop.biz.controller;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jxiop.api.dto.IndexDto;
import com.yeejoin.amos.boot.module.jxiop.api.entity.StationBasic; import com.yeejoin.amos.boot.module.jxiop.api.entity.StationBasic;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper; import com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.Test; import com.yeejoin.amos.boot.module.jxiop.biz.entity.Test;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.SjglZsjZsbtzServiceImpl; import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.SjglZsjZsbtzServiceImpl;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.StationBasicServiceImpl; import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.StationBasicServiceImpl;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.TestServiceImpl; import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.TestServiceImpl;
import com.yeejoin.amos.boot.module.jxiop.biz.utils.InfluxDButils;
import com.yeejoin.amos.component.influxdb.InfluxDbConnection; import com.yeejoin.amos.component.influxdb.InfluxDbConnection;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import org.influxdb.dto.QueryResult; import org.influxdb.dto.QueryResult;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
@RestController @RestController
@Api(tags = "Demo-test") @Api(tags = "Demo-test")
...@@ -39,6 +47,8 @@ public class DemoController extends BaseController { ...@@ -39,6 +47,8 @@ public class DemoController extends BaseController {
InfluxDbConnection influxDbConnection; InfluxDbConnection influxDbConnection;
@Autowired @Autowired
SjglZsjZsbtzServiceImpl sjglZsjZsbtzServiceImpl; SjglZsjZsbtzServiceImpl sjglZsjZsbtzServiceImpl;
@Autowired
InfluxDButils influxDButils;
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY) @TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
...@@ -57,19 +67,9 @@ public class DemoController extends BaseController { ...@@ -57,19 +67,9 @@ public class DemoController extends BaseController {
@ApiOperation(value = "demo测试influxdb") @ApiOperation(value = "demo测试influxdb")
@GetMapping("/test3") @GetMapping("/test3")
public void demoTest2() { public void demoTest2() {
QueryResult query =influxDbConnection.query("select * from iot_data where time> now()-1s"); String sql = "SELECT createdTime ,gatewayId,address,valueLabel FROM \"iot_data\" WHERE equipmentSpecificName=~/.*27风机.*/ and gatewayId='1668801435891929089' GROUP BY equipmentIndex ORDER BY time desc LIMIT 600";
List<QueryResult.Result > queryResults=query.getResults(); List<IndexDto> list=influxDButils.getListData(sql,IndexDto.class);
for (int i = 0; i <queryResults.size() ; i++) { System.out.println(list.size());
QueryResult.Result result = queryResults.get(i);
List list =result.getSeries();
for (int j = 0; j <list.size() ; j++) {
QueryResult.Series series = (QueryResult.Series) list.get(j);
System.out.println(series.getName());
System.out.println(series.getColumns());
System.out.println(series.getValues());
System.out.println(series.getTags());
}
}
} }
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY) @TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@ApiOperation(value = "测试数据同步逻辑") @ApiOperation(value = "测试数据同步逻辑")
......
...@@ -8,6 +8,7 @@ import com.yeejoin.amos.boot.module.jxiop.api.entity.StationBasic; ...@@ -8,6 +8,7 @@ import com.yeejoin.amos.boot.module.jxiop.api.entity.StationBasic;
import com.yeejoin.amos.boot.module.jxiop.api.service.IStationDataTask; import com.yeejoin.amos.boot.module.jxiop.api.service.IStationDataTask;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.SjglZsjZsbtz; import com.yeejoin.amos.boot.module.jxiop.biz.entity.SjglZsjZsbtz;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.TpriDmpDatabook; import com.yeejoin.amos.boot.module.jxiop.biz.entity.TpriDmpDatabook;
import com.yeejoin.amos.boot.module.jxiop.biz.utils.InfluxDButils;
import com.yeejoin.amos.component.influxdb.InfluxDbConnection; import com.yeejoin.amos.component.influxdb.InfluxDbConnection;
import org.influxdb.dto.QueryResult; import org.influxdb.dto.QueryResult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -34,6 +35,8 @@ public class StationDataTaskImpl { ...@@ -34,6 +35,8 @@ public class StationDataTaskImpl {
InfluxDbConnection influxDbConnection; InfluxDbConnection influxDbConnection;
@Autowired @Autowired
MonitorFanIndicatorImpl monitorFanIndicatorImpl; MonitorFanIndicatorImpl monitorFanIndicatorImpl;
@Autowired
InfluxDButils influxDButils;
@Value("${station.section}") @Value("${station.section}")
...@@ -73,26 +76,24 @@ public class StationDataTaskImpl { ...@@ -73,26 +76,24 @@ public class StationDataTaskImpl {
@Async("jxiopAsyncExecutor") @Async("jxiopAsyncExecutor")
public List<IndexDto> getIndexDto(DeviceDto deviceDto) { public List<IndexDto> getIndexDto(DeviceDto deviceDto) {
String querysql ="SELECT createdTime ,gatewayId,address,valueLabel FROM iot_data WHERE equipmentSpecificName=~/.*"+deviceDto.getNumberName()+".*/ and gatewayId='"+deviceDto.getGateway()+"' GROUP BY equipmentIndex ORDER BY time desc LIMIT 600";
//每个分机的指标数据 //每个分机的指标数据
List<IndexDto> list = null; List<IndexDto> list = influxDButils.getListData(querysql,IndexDto.class);
QueryResult query = influxDbConnection.query("SELECT * FROM iot_data where \"equipmentSpecificName\" =~/.*"+ deviceDto.getNumberName()+".*/ and \"gatewayId\" =~/" + deviceDto.getGateway() + "/ group by \"equipmentsIdx\" limit 1"); if(list!=null&&list.size()>0){
List<QueryResult.Result> queryResults = query.getResults(); //对数据切片处理 默认创建
for (int i = 0; i < queryResults.size(); i++) { if(stationSection>list.size()||!isok){
QueryResult.Result result = queryResults.get(i); monitorFanIndicatorImpl.UpdateMonitorFanIndicator(list);
List seriesList = result.getSeries(); }else{
for (int j = 0; j < list.size(); j++) { //进行分片处理
QueryResult.Series series = (QueryResult.Series) seriesList.get(j); List<List<IndexDto>> listfp= Lists.partition(list,list.size()%stationSection);
System.out.println(series.getName()); for (List<IndexDto> indexDtos : listfp) {
System.out.println(series.getColumns()); //每个分级信息处理
System.out.println(series.getValues()); monitorFanIndicatorImpl.UpdateMonitorFanIndicator(indexDtos);
System.out.println(series.getTags()); }
} }
} }
return list; return list;
} }
@Async("jxiopAsyncExecutor") @Async("jxiopAsyncExecutor")
public void UpdateMonitorFanIndicator(List<IndexDto> list){ public void UpdateMonitorFanIndicator(List<IndexDto> list){
if(list!=null&&list.size()>0){ if(list!=null&&list.size()>0){
...@@ -110,4 +111,5 @@ public class StationDataTaskImpl { ...@@ -110,4 +111,5 @@ public class StationDataTaskImpl {
} }
} }
} }
package com.yeejoin.amos.boot.module.jxiop.biz.utils;
import java.sql.Time;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
*
* <pre>
* 日期
* </pre>
*
* @author as-chenjiajun
* @version $Id: DateUtil.java, v 0.1 2018年1月29日 下午5:08:40 as-chenjiajun Exp $
*/
public class DateUtil
{
private static String LONG_PATTERN = "yyyy-MM-dd HH:mm:ss";
private static String MID_PATTERN = "yyyy-MM-dd HH:mm";
private static String SHORT_PATTERN = "yyyy-MM-dd";
public static long THREE_DAY_MILLSEC = 259200000L;
public static long ONE_DAY_MILLSEC = 86400000L;
public static long ONE_HOUR_MILLSEC = 3600000L;
public static long THREE_HOURS_MILLSEC = 10800000L;
public static long TWELVE_HOURS_MILLSEC = 43200000L;
public static Date EMPTY_DATE = null;
static
{
Calendar calendar = Calendar.getInstance();
calendar.set(9999, 0, 0);
EMPTY_DATE = calendar.getTime();
}
/**
* 获取当前时间
*
* @return 当前日期时间
*/
public static Date getDateNow() {
return new Date();
}
/**
*
* <pre>
* 获取当前北京时间
* </pre>
*
* @return
*/
public static Date getCurrentDate()
{
return getCurrentCalendar().getTime();
}
public static String getLongCurrentDate()
{
return new SimpleDateFormat(LONG_PATTERN)
.format(getCurrentCalendar().getTime());
}
public static String getLongDate(Date date)
{
if (null == date)
return getLongCurrentDate();
else
return new SimpleDateFormat(LONG_PATTERN).format(date);
}
public static String getLongDate(long value)
{
return new SimpleDateFormat(LONG_PATTERN).format(new Date(value));
}
public static String getShortCurrentDate()
{
return new SimpleDateFormat(SHORT_PATTERN).format(new Date());
}
public static String getShortDate(Date date)
{
if (null == date)
return getShortCurrentDate();
else
return new SimpleDateFormat(SHORT_PATTERN).format(date);
}
public static String getShortDate(long value)
{
return new SimpleDateFormat(SHORT_PATTERN).format(new Date(value));
}
public static Date getShortCurrentDate(String shortDateStr) throws ParseException
{
return new SimpleDateFormat(SHORT_PATTERN).parse(shortDateStr);
}
public static Date getLongDate(String longDateStr) throws ParseException
{
return new SimpleDateFormat(LONG_PATTERN).parse(longDateStr);
}
public static String getMidCurrentDate()
{
return new SimpleDateFormat(MID_PATTERN).format(new Date());
}
public static String getMidDate(Date date)
{
if (null == date)
return getMidCurrentDate();
else
return new SimpleDateFormat(MID_PATTERN).format(new Date());
}
public static String getMidDate(long value)
{
return new SimpleDateFormat(MID_PATTERN).format(new Date(value));
}
public static Date str2Date(String strDate, String dateFormat)
{
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
public static int getYear(Date date)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
return year;
}
public static int getMonth(Date date)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH) + 1;
return month;
}
public static int getDay(Date date)
{
Calendar c = Calendar.getInstance();
c.setTime(date);
int day = c.get(Calendar.DATE);
return day;
}
public static int getHour(Date date)
{
Calendar c = Calendar.getInstance();
c.setTime(date);
int hour = c.get(Calendar.HOUR_OF_DAY);
return hour;
}
public static int getMinite(Date date)
{
Calendar c = Calendar.getInstance();
c.setTime(date);
int minite = c.get(Calendar.MINUTE);
return minite;
}
/**
*
* <pre>
* 获取当前北京时间
* </pre>
*
* @return
*/
public static Calendar getCurrentCalendar()
{
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
return Calendar.getInstance();
}
/**
*
* <pre>
* 获取当前两个时间差
* </pre>
*
* @return
*/
public static String getTimeDifference(Date dateBefore, Date dateAfter )
{
long l=dateAfter.getTime()-dateBefore.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
return ""+day+"天"+hour+"小时"+min+"分"+s+"秒";
}
/**
* 获取某年某月的第一天日期
* @param date
* @param format
* @return
*/
public static String getStartMonthDate(String date,String format) {
if(date==null || date.length()<6 || format==null){
return null;
}
int year = Integer.parseInt(date.substring(0, 4));
int month = Integer.parseInt(date.substring(4, 6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
return new SimpleDateFormat(format).format(calendar.getTime());
}
/**
* 获取某年某月的最后一天日期
* @param date
* @param format
* @return
*/
public static String getEndMonthDate(String date,String format) {
if(date==null || date.length()<6 || format==null){
return null;
}
int year = Integer.parseInt(date.substring(0, 4));
int month = Integer.parseInt(date.substring(4, 6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
int day = calendar.getActualMaximum(5);
calendar.set(year, month - 1, day);
return new SimpleDateFormat(format).format(calendar.getTime());
}
/**
* 获取某天的间隔天数
* @param date
* @param interval 间隔天数。负数为前,正数为后
* @param format 输出格式化
* @return
*/
public static String getIntervalDateStr(Date date,int interval,String format) {
if(date==null || format==null){
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, interval);
return new SimpleDateFormat(format).format(calendar.getTime());
}
/**
* 获取某天的年初第一天
* @param date
* @param format 输出格式化
* @return
*/
public static String getFirstDayOfYear(String date,String format) {
int year = Integer.parseInt(date.substring(0, 4));
Calendar calendar = Calendar.getInstance();
calendar.set(year,Calendar.JANUARY,1);
return new SimpleDateFormat(format).format(calendar.getTime());
}
/**
* 获取某天的年初第一天
* @param date
* @param format 输出格式化
* @return date
*/
public static Date getFirstDayOfYearDate(String date) {
int year = Integer.parseInt(date.substring(0, 4));
Calendar calendar = Calendar.getInstance();
calendar.set(year,Calendar.JANUARY,1);
return calendar.getTime();
}
/**
* 获取某天的年末最后一天
* @param date
* @param format 输出格式化
* @return date
*/
public static Date getLastDayOfYearDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
final int last = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
calendar.set(Calendar.DAY_OF_YEAR, last);
return calendar.getTime();
}
/**
* 获取某天的间隔天数
* @param date
* @param interval 间隔天数。负数为前,正数为后
* @param format 输出格式化
* @return
*/
public static Date getIntervalDate(Date date,int interval) {
if(date==null){
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, interval);
return calendar.getTime();
}
/**
* 获得指定日期的间隔周末
* @param exeDate
* @param init
* @return
*/
public static Date getIntervalWeekDate(Date exeDate, int init) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(exeDate);
calendar.add(Calendar.DATE, init*7);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return calendar.getTime();
}
/**
* 获得制定日期间隔的上个月最后一天
* @param exeDate
* @param inter
* @return
*/
public static Date getEndMonthDate(Date exeDate, int inter) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(exeDate);
calendar.add(Calendar.MONTH, inter-1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return calendar.getTime();
}
/**
* 获取间隔周的
* @param mounthFirstDate
* @param whatWeek
* @param weekDay
* @return
*/
public static Date getIntMonthWeekDate(Date mounthFirstDate,int week,int day) {
Calendar calendar= Calendar.getInstance();
calendar.setTime(mounthFirstDate);
if (day == 7) {
day=1;
week=week+1;
}else{
day = day+1;
}
calendar.set(Calendar.WEEK_OF_MONTH,week);
calendar.set(Calendar.DAY_OF_WEEK,day);
return calendar.getTime();
}
/**
* 获取间隔的年日期
* @param planDegin
* @param init
* @return
*/
public static String getIntervalYearDate(Date planDegin, int init) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(planDegin);
calendar.add(Calendar.YEAR, init);
return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
}
/**
* 格式化日期
* @param beginDate
* @param string
* @return
*/
public static String formatDatrToStr(Date beginDate, String formart) {
SimpleDateFormat df = new SimpleDateFormat(formart);
String strDate = df.format(beginDate);
return strDate;
}
public static Time formatStrToTime(String strDate){
String str = strDate;
SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss");
Date d = null;
try {
d = format.parse(str);
} catch (Exception e) {
e.printStackTrace();
}
Time date = new Time(d.getTime());
return date;
}
public static String cronTime(Date date){
StringBuilder cron = new StringBuilder();
cron.append(date.getSeconds()).append(" ")
.append(date.getMinutes()).append(" ")
.append(date.getHours()).append(" ")
.append(date.getDay()).append(" ")
.append(date.getMonth()).append(" ")
.append("?").append(" ")
.append(date.getYear());
return cron.toString();
}
}
package com.yeejoin.amos.boot.module.jxiop.biz.utils;
import com.yeejoin.amos.component.influxdb.InfluxDbConnection;
import org.influxdb.dto.QueryResult;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
public class InfluxDButils {
@Autowired
InfluxDbConnection influxDbConnection;
public <T> List<T> getListData(String sql, Class<T> clazz) {
List<T> list = new ArrayList<>();
try {
QueryResult query = influxDbConnection.query(sql);
List<QueryResult.Result> queryResults = query.getResults();
for (QueryResult.Result result : queryResults) {
List<QueryResult.Series> series = result.getSeries();
if (series == null) {
continue;
}
for (QueryResult.Series serie : series) {
List<List<Object>> values = serie.getValues();
List<String> columns = serie.getColumns();
for (int i = 0; i < values.size(); ++i) {
T object = clazz.newInstance();
BeanWrapperImpl bean = new BeanWrapperImpl(object);
for (int j = 0; j < columns.size(); ++j) {
String k = columns.get(j);
Object v = values.get(i).get(j);
if ("time".equals(k)) {
continue;
} else if ("createdTime".equals(k)) {
Date date = DateUtil.getLongDate(v.toString());
bean.setPropertyValue(k, date);
} else {
bean.setPropertyValue(k, v);
}
}
list.add(object);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment