Commit 95cf11a0 by xmh

<refactor> 修改请求vaserver失败时的返回

<feat> 数据概览及详情
<feat> 定时任务初步配置
1 parent 07a440e4
......@@ -3,13 +3,13 @@ package com.viontech.fanxing.commons.base;
import java.io.Serializable;
/**
*
* @author suman
* model类的基类 所有的model都要继承自该类
*/
public abstract class BaseModel implements Serializable{
public abstract class BaseModel implements Serializable {
private Long count;
private Long id;
private Integer hour;
public BaseModel() {
super();
......@@ -31,5 +31,12 @@ public abstract class BaseModel implements Serializable{
this.id = id;
}
public Integer getHour() {
return hour;
}
public BaseModel setHour(Integer hour) {
this.hour = hour;
return this;
}
}
package com.viontech.fanxing.ops.controller.web;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.viontech.fanxing.commons.base.BaseExample;
import com.viontech.fanxing.commons.model.ContentExample;
......@@ -48,4 +49,11 @@ public class ContentController extends ContentBaseController {
public JsonMessageUtil.JsonMessage<ImageKeepConfig> selectImageKeepConfig() {
return JsonMessageUtil.getSuccessJsonMsg(contentService.selectImageKeepConfig());
}
@PostMapping("/timing")
@ResponseBody
public JsonMessageUtil.JsonMessage<Object> timing(@RequestBody JSONObject jsonObject) {
contentService.addOrUpdateTimingConfig(jsonObject);
return JsonMessageUtil.getSuccessJsonMsg("success", null);
}
}
\ No newline at end of file
package com.viontech.fanxing.ops.service.adapter;
import com.alibaba.fastjson.JSONObject;
import com.viontech.fanxing.commons.base.BaseService;
import com.viontech.fanxing.commons.model.Content;
import com.viontech.fanxing.commons.model.ContentExample;
......@@ -12,4 +13,6 @@ public interface ContentService extends BaseService<Content> {
List<Content> selectByExampleWithBlob(ContentExample contentExample);
ImageKeepConfig selectImageKeepConfig();
void addOrUpdateTimingConfig(JSONObject jsonObject);
}
\ No newline at end of file
package com.viontech.fanxing.ops.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.viontech.fanxing.commons.base.BaseMapper;
import com.viontech.fanxing.commons.base.BaseServiceImpl;
import com.viontech.fanxing.commons.model.Content;
......@@ -15,6 +16,8 @@ import java.util.List;
@Service
public class ContentServiceImpl extends BaseServiceImpl<Content> implements ContentService {
private static final String PLATFORM_CONFIG = "platformConfig";
private static final String TIMING_CONFIG = "timingConfig";
@Resource
private ContentMapper contentMapper;
......@@ -32,7 +35,7 @@ public class ContentServiceImpl extends BaseServiceImpl<Content> implements Cont
@Override
public ImageKeepConfig selectImageKeepConfig() {
ContentExample contentExample = new ContentExample();
contentExample.createCriteria().andTypeEqualTo("platformConfig").andNameEqualTo("imageKeepConfig");
contentExample.createCriteria().andTypeEqualTo(PLATFORM_CONFIG).andNameEqualTo("imageKeepConfig");
List<Content> contents = contentMapper.selectByExampleWithBLOBs(contentExample);
if (contents.size() > 0) {
String content = contents.get(0).getContent();
......@@ -41,4 +44,24 @@ public class ContentServiceImpl extends BaseServiceImpl<Content> implements Cont
return new ImageKeepConfig();
}
}
@Override
public void addOrUpdateTimingConfig(JSONObject jsonObject) {
ContentExample contentExample = new ContentExample();
contentExample.createCriteria().andTypeEqualTo(PLATFORM_CONFIG).andNameEqualTo(TIMING_CONFIG);
List<Content> contents = contentMapper.selectByExampleWithBLOBs(contentExample);
if (contents.size() > 0) {
Content content = contents.get(0);
content.setContent(jsonObject.toJSONString());
contentMapper.updateByPrimaryKeySelective(content);
} else {
Content content = new Content();
content.setName(TIMING_CONFIG);
content.setType(PLATFORM_CONFIG);
content.setContent(jsonObject.toJSONString());
}
// todo 发给运维服务
}
}
\ No newline at end of file
......@@ -138,6 +138,17 @@ public class TrafficController extends TrafficBaseController {
return JsonMessageUtil.getSuccessJsonMsg(dataOverViewModels);
}
@GetMapping("overview/detail")
@ResponseBody
public JsonMessageUtil.JsonMessage<Collection<DataOverViewModel>> overviewDetail(@RequestParam(required = false) Date date, @RequestParam Long taskId) {
if (date == null) {
date = new Date();
}
Collection<DataOverViewModel> dataOverViewModels = trafficService.overviewDetail(date, taskId);
return JsonMessageUtil.getSuccessJsonMsg(dataOverViewModels);
}
public TrafficExample getExample(TrafficVo trafficVo) {
return (TrafficExample) super.getExample(trafficVo, EXAMPLE_TYPE_PAGE);
}
......
......@@ -14,4 +14,6 @@ public interface TrafficService extends BaseService<Traffic> {
PageInfo<TrafficVo> getJsonData(BaseExample example, int pageNum, int pageSize);
Collection<DataOverViewModel> dataOverview(Date date,Long taskId);
Collection<DataOverViewModel> overviewDetail(Date date, Long taskId);
}
\ No newline at end of file
......@@ -18,10 +18,7 @@ import com.viontech.keliu.util.DateUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
......@@ -122,4 +119,67 @@ public class TrafficServiceImpl extends BaseServiceImpl<Traffic> implements Traf
}
return resultMap.values();
}
@Override
public Collection<DataOverViewModel> overviewDetail(Date date, Long taskId) {
Date min = DateUtil.setDayMinTime(date);
Date max = DateUtil.setDayMaxTime(date);
TreeMap<Integer, DataOverViewModel> resultMap = new TreeMap<>();
TrafficExample trafficExample = new TrafficExample();
trafficExample.createCriteria().andEventTimeGreaterThanOrEqualTo(min).andEventTimeLessThanOrEqualTo(max).andTaskIdEqualTo(taskId);
TrafficExample.ColumnContainer columns = trafficExample.createColumns().hasTaskIdColumn();
columns.addColumnStr("count(*) as count");
columns.addColumnStr("hour(date_add(event_time,interval 8 hour)) as hour");
trafficExample.setGroupByClause("task_id,hour");
trafficExample.setOrderByClause("task_id,hour");
List<Traffic> traffic = trafficMapper.selectByExample(trafficExample);
for (Traffic t : traffic) {
DataOverViewModel dov = resultMap.computeIfAbsent(t.getHour(), x -> {
DataOverViewModel temp = new DataOverViewModel();
temp.setHour(x);
return temp;
});
dov.setTraffic(t.getCount());
dov.setTaskId(t.getTaskId());
}
FlowEventExample flowEventExample = new FlowEventExample();
flowEventExample.createCriteria().andEventTimeGreaterThanOrEqualTo(min).andEventTimeLessThanOrEqualTo(max).andTaskIdEqualTo(taskId);
FlowEventExample.ColumnContainer columns2 = flowEventExample.createColumns().hasTaskIdColumn();
columns2.addColumnStr("count(*) as count");
columns2.addColumnStr("hour(date_add(event_time,interval 8 hour)) as hour");
flowEventExample.setGroupByClause("task_id,hour");
flowEventExample.setOrderByClause("task_id,hour");
List<FlowEvent> flowEvents = flowEventService.getMapper().selectByExample(flowEventExample);
for (FlowEvent f : flowEvents) {
DataOverViewModel dov = resultMap.computeIfAbsent(f.getHour(), x -> {
DataOverViewModel temp = new DataOverViewModel();
temp.setHour(x);
return temp;
});
dov.setFlow(f.getCount());
dov.setTaskId(f.getTaskId());
}
BehaviorExample behaviorExample = new BehaviorExample();
behaviorExample.createCriteria().andEventTimeGreaterThanOrEqualTo(min).andEventTimeLessThanOrEqualTo(max).andTaskIdEqualTo(taskId);
BehaviorExample.ColumnContainer columns3 = behaviorExample.createColumns().hasTaskIdColumn();
columns3.addColumnStr("count(*) as count");
columns3.addColumnStr("hour(date_add(event_time,interval 8 hour)) as hour");
behaviorExample.setGroupByClause("task_id,hour");
behaviorExample.setOrderByClause("task_id,hour");
List<Behavior> behaviors = behaviorService.getMapper().selectByExample(behaviorExample);
for (Behavior b : behaviors) {
DataOverViewModel dov = resultMap.computeIfAbsent(b.getHour(), x -> {
DataOverViewModel temp = new DataOverViewModel();
temp.setHour(x);
return temp;
});
dov.setBehavior(b.getCount());
dov.setTaskId(b.getTaskId());
}
return resultMap.values();
}
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ecwid.consul.v1.ConsulClient;
import com.viontech.fanxing.commons.constant.ChannelType;
import com.viontech.fanxing.commons.exception.FanXingException;
import com.viontech.fanxing.commons.model.Channel;
import com.viontech.fanxing.task.model.TaskData;
import com.viontech.fanxing.task.model.vaserver.VATask;
......@@ -52,7 +53,7 @@ public class VAServerHttpService {
.bodyValue(vaTask)
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(60));
String response = getResponse(stringMono, Duration.ofSeconds(60));
log.info("下发任务结果:{}", response);
return JSON.parseObject(response);
}
......@@ -74,7 +75,7 @@ public class VAServerHttpService {
.bodyValue(vaTask)
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(20));
String response = getResponse(stringMono, Duration.ofSeconds(60));
log.info("更新任务结果:{}", response);
return JSON.parseObject(response);
}
......@@ -94,7 +95,7 @@ public class VAServerHttpService {
.bodyValue(jsonObject.toString())
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(20));
String response = getResponse(stringMono);
log.info("删除任务结果:{}", response);
return JSON.parseObject(response);
}
......@@ -115,7 +116,7 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String block = stringMono.block(Duration.ofSeconds(20));
String block = getResponse(stringMono);
return JSON.parseObject(block);
}
......@@ -135,7 +136,7 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(10));
String response = getResponse(stringMono);
log.info("获取分析流地址结果 : {}", response);
return JSON.parseObject(response);
}
......@@ -158,7 +159,7 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(20));
String response = getResponse(stringMono);
log.info("输出分析流结果:{}", response);
return JSON.parseObject(response);
}
......@@ -180,7 +181,7 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(20));
String response = getResponse(stringMono);
log.info("场景切换结果:{}", response);
return JSON.parseObject(response);
}
......@@ -202,7 +203,7 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(20));
String response = getResponse(stringMono);
log.info("轮训状态控制结果:{}", response);
return JSON.parseObject(response);
}
......@@ -223,7 +224,7 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(20));
String response = getResponse(stringMono);
log.info("获取轮训状态:{}", response);
return JSON.parseObject(response);
}
......@@ -242,7 +243,7 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String response = stringMono.block(Duration.ofSeconds(20));
String response = getResponse(stringMono);
log.info("运行状态查询:{}", response);
return JSON.parseObject(response);
}
......@@ -262,7 +263,7 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String block = mono.block(Duration.ofSeconds(20));
String block = getResponse(mono);
log.info("默认配置获取:{}", block);
return JSON.parseObject(block);
......@@ -283,9 +284,26 @@ public class VAServerHttpService {
.retrieve()
.bodyToMono(String.class);
String block = mono.block(Duration.ofSeconds(20));
String block = getResponse(mono);
log.info("获取当前预置位:{}", block);
return JSON.parseObject(block);
}
private <T> T getResponse(Mono<T> mono, Duration duration) {
try {
return mono.block(duration);
} catch (Exception e) {
throw new FanXingException("访问设备失败");
}
}
private <T> T getResponse(Mono<T> mono) {
try {
return mono.block(Duration.ofSeconds(20));
} catch (Exception e) {
throw new FanXingException("访问设备失败");
}
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!