parent
3ecc09bb50
commit
2d09c01505
|
@ -11,7 +11,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||
* @date 2023/11/9
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@MapperScan(value = "com.muyu.mapper")
|
||||
@MapperScan(value = "com.muyu.**.mapper")
|
||||
public class VehicleSimulationApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
package com.muyu.vehicle;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.muyu.common.SystemConstant;
|
||||
import com.muyu.common.pool.ScheduledThreadPool;
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.domain.model.PositionModel;
|
||||
import com.muyu.utils.CalculateCheckDigit;
|
||||
import com.muyu.utils.ConversionUtil;
|
||||
import com.muyu.utils.VehicleUtils;
|
||||
import com.muyu.web.common.SystemConstant;
|
||||
import com.muyu.web.common.pool.ScheduledThreadPool;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
import com.muyu.web.domain.model.PositionModel;
|
||||
import com.muyu.web.utils.CalculateCheckDigit;
|
||||
import com.muyu.web.utils.ConversionUtil;
|
||||
import com.muyu.web.utils.VehicleUtils;
|
||||
import com.muyu.vehicle.model.VehicleData;
|
||||
import com.muyu.vehicle.model.properties.MqttProperties;
|
||||
import com.muyu.vehicle.thread.VehicleThread;
|
||||
|
@ -29,7 +29,7 @@ import java.util.Objects;
|
|||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
|
||||
import static com.muyu.common.SystemConstant.*;
|
||||
import static com.muyu.web.common.SystemConstant.*;
|
||||
|
||||
/**
|
||||
* @author DongZeLiang
|
||||
|
@ -141,6 +141,7 @@ public class VehicleInstance {
|
|||
JSONObject.toJSONString(this.mqttProperties));
|
||||
} catch (MqttException e) {
|
||||
log.error("车辆:[{}] 客户端初始化异常", getVin(), e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -195,7 +196,10 @@ public class VehicleInstance {
|
|||
*/
|
||||
public void initVehicleThread() {
|
||||
if (this.positionCode == null){
|
||||
throw new RuntimeException("车辆["+getVin()+"]为选中路径");
|
||||
throw new RuntimeException("车辆["+getVin()+"]未选中路径");
|
||||
}
|
||||
if (!isOnline()){
|
||||
throw new RuntimeException("车辆["+getVin()+"]未和服务器建立链接");
|
||||
}
|
||||
VehicleThread vehicleThread = new VehicleThread();
|
||||
vehicleThread.setVehicleInstance(this);
|
||||
|
|
|
@ -3,8 +3,8 @@ package com.muyu.vehicle.api;
|
|||
import com.dtflys.forest.annotation.BaseRequest;
|
||||
import com.dtflys.forest.annotation.JSONBody;
|
||||
import com.dtflys.forest.annotation.Post;
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.domain.model.MqttServerModel;
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.web.domain.model.MqttServerModel;
|
||||
import com.muyu.vehicle.api.req.VehicleConnectionReq;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package com.muyu.vehicle.core;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.muyu.common.pool.FixedThreadPool;
|
||||
import com.muyu.common.pool.ScheduledThreadPool;
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.service.VehicleInstanceService;
|
||||
import com.muyu.service.VehicleService;
|
||||
import com.muyu.web.common.pool.FixedThreadPool;
|
||||
import com.muyu.web.common.pool.ScheduledThreadPool;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
import com.muyu.web.service.VehicleInstanceService;
|
||||
import com.muyu.web.service.VehicleService;
|
||||
import com.muyu.vehicle.VehicleInstance;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
package com.muyu.vehicle.model;
|
||||
|
||||
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.utils.VehicleUtils;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
@ -10,7 +9,7 @@ import lombok.NoArgsConstructor;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import static com.muyu.utils.VehicleUtils.genValue;
|
||||
import static com.muyu.web.utils.VehicleUtils.genValue;
|
||||
|
||||
/**
|
||||
* @author 牧鱼
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
package com.muyu.vehicle.thread;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.muyu.vehicle.VehicleInstance;
|
||||
import lombok.Data;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
|
||||
@Data
|
||||
@Log4j2
|
||||
public class VehicleThread implements Runnable {
|
||||
|
||||
|
@ -70,7 +71,4 @@ public class VehicleThread implements Runnable {
|
|||
this.isStop = true;
|
||||
}
|
||||
|
||||
public void setVehicleInstance(VehicleInstance vehicleInstance) {
|
||||
this.vehicleInstance = vehicleInstance;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.common;
|
||||
package com.muyu.web.common;
|
||||
|
||||
/**
|
||||
* 返回状态码
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.common;
|
||||
package com.muyu.web.common;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.common;
|
||||
package com.muyu.web.common;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.common;
|
||||
package com.muyu.web.common;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.common.pool;
|
||||
package com.muyu.web.common.pool;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.common.pool;
|
||||
package com.muyu.web.common.pool;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
|
@ -1,6 +1,6 @@
|
|||
package com.muyu.config;
|
||||
package com.muyu.web.config;
|
||||
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.web.common.Result;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.config;
|
||||
package com.muyu.web.config;
|
||||
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import lombok.extern.slf4j.Slf4j;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.config;
|
||||
package com.muyu.web.config;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.DbType;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.controller;
|
||||
package com.muyu.web.controller;
|
||||
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.stereotype.Controller;
|
|
@ -0,0 +1,32 @@
|
|||
package com.muyu.web.controller;
|
||||
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.web.domain.model.OverviewModel;
|
||||
import com.muyu.web.domain.resp.OverviewResp;
|
||||
import com.muyu.web.service.OverviewService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Author: DongZeLiang
|
||||
* @date: 2024/6/10
|
||||
* @Description: 车辆模拟系统概述
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/vehicle/overview")
|
||||
public class OverviewController {
|
||||
|
||||
@Autowired
|
||||
private OverviewService overviewService;
|
||||
|
||||
@GetMapping
|
||||
public Result<OverviewResp> overview() {
|
||||
|
||||
OverviewModel overviewModel = overviewService.overview();
|
||||
|
||||
return Result.success(OverviewResp.modeBuild(overviewModel));
|
||||
}
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
package com.muyu.controller;
|
||||
package com.muyu.web.controller;
|
||||
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.domain.req.VehicleCreateAddReq;
|
||||
import com.muyu.service.VehicleService;
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
import com.muyu.web.domain.req.VehicleCreateAddReq;
|
||||
import com.muyu.web.service.VehicleService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
|
@ -1,14 +1,13 @@
|
|||
package com.muyu.controller;
|
||||
package com.muyu.web.controller;
|
||||
|
||||
import com.muyu.common.PageList;
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.domain.req.CheckPositionReq;
|
||||
import com.muyu.domain.req.GearReq;
|
||||
import com.muyu.domain.req.MsgReq;
|
||||
import com.muyu.domain.req.VehicleInstanceListReq;
|
||||
import com.muyu.domain.resp.UnifiedTaskResp;
|
||||
import com.muyu.domain.resp.VehicleInstanceResp;
|
||||
import com.muyu.service.VehicleInstanceService;
|
||||
import com.muyu.web.common.PageList;
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.web.domain.req.CheckPositionReq;
|
||||
import com.muyu.web.domain.req.GearReq;
|
||||
import com.muyu.web.domain.req.MsgReq;
|
||||
import com.muyu.web.domain.req.VehicleInstanceListReq;
|
||||
import com.muyu.web.domain.resp.VehicleInstanceResp;
|
||||
import com.muyu.web.service.VehicleInstanceService;
|
||||
import com.muyu.vehicle.core.LocalContainer;
|
||||
import com.muyu.vehicle.model.VehicleData;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
|
@ -61,7 +60,7 @@ public class VehicleInstanceController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 车辆连接初始化
|
||||
* 关闭车辆连接
|
||||
* @param vin vin
|
||||
* @return 初始化
|
||||
*/
|
|
@ -1,8 +1,8 @@
|
|||
package com.muyu.controller;
|
||||
package com.muyu.web.controller;
|
||||
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.domain.PositionRouteInfo;
|
||||
import com.muyu.service.PositionRouteService;
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.web.domain.PositionRouteInfo;
|
||||
import com.muyu.web.service.PositionRouteService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
@ -1,8 +1,8 @@
|
|||
package com.muyu.controller;
|
||||
package com.muyu.web.controller;
|
||||
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.domain.resp.UnifiedTaskResp;
|
||||
import com.muyu.service.VehicleUnifiedService;
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.web.domain.resp.UnifiedTaskResp;
|
||||
import com.muyu.web.service.VehicleUnifiedService;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
@ -1,7 +1,7 @@
|
|||
package com.muyu.controller;
|
||||
package com.muyu.web.controller;
|
||||
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.domain.model.MqttServerModel;
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.web.domain.model.MqttServerModel;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain;
|
||||
package com.muyu.web.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
@ -1,9 +1,9 @@
|
|||
package com.muyu.domain;
|
||||
package com.muyu.web.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.muyu.utils.VehicleUtils;
|
||||
import com.muyu.web.utils.VehicleUtils;
|
||||
import com.muyu.vehicle.VehicleInstance;
|
||||
import com.muyu.vehicle.model.VehicleData;
|
||||
import lombok.AllArgsConstructor;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.model;
|
||||
package com.muyu.web.domain.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -0,0 +1,32 @@
|
|||
package com.muyu.web.domain.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Author: DongZeLiang
|
||||
* @date: 2024/6/10
|
||||
* @Description: 概述响应
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OverviewModel {
|
||||
|
||||
/**
|
||||
* 在线车辆
|
||||
*/
|
||||
private Long online;
|
||||
/**
|
||||
* 离线车辆
|
||||
*/
|
||||
private Long offline;
|
||||
/**
|
||||
* 暂停车辆
|
||||
*/
|
||||
private Long pause;
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.model;
|
||||
package com.muyu.web.domain.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.model;
|
||||
package com.muyu.web.domain.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.req;
|
||||
package com.muyu.web.domain.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.req;
|
||||
package com.muyu.web.domain.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.req;
|
||||
package com.muyu.web.domain.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.req;
|
||||
package com.muyu.web.domain.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.req;
|
||||
package com.muyu.web.domain.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -0,0 +1,45 @@
|
|||
package com.muyu.web.domain.resp;
|
||||
|
||||
import com.muyu.web.domain.model.OverviewModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Author: DongZeLiang
|
||||
* @date: 2024/6/10
|
||||
* @Description: 概述响应
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OverviewResp {
|
||||
|
||||
/**
|
||||
* 在线车辆
|
||||
*/
|
||||
private Long online;
|
||||
/**
|
||||
* 离线车辆
|
||||
*/
|
||||
private Long offline;
|
||||
/**
|
||||
* 暂停车辆
|
||||
*/
|
||||
private Long pause;
|
||||
|
||||
/**
|
||||
* 模型构建返回值
|
||||
* @param overviewModel 模型
|
||||
* @return 返回值
|
||||
*/
|
||||
public static OverviewResp modeBuild(OverviewModel overviewModel){
|
||||
return builder().online(overviewModel.getOnline())
|
||||
.offline(overviewModel.getOffline())
|
||||
.pause(overviewModel.getPause())
|
||||
.build();
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.resp;
|
||||
package com.muyu.web.domain.resp;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.domain.resp;
|
||||
package com.muyu.web.domain.resp;
|
||||
|
||||
import com.muyu.vehicle.VehicleInstance;
|
||||
import lombok.AllArgsConstructor;
|
|
@ -1,7 +1,7 @@
|
|||
package com.muyu.mapper;
|
||||
package com.muyu.web.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.muyu.domain.PositionRouteInfo;
|
||||
import com.muyu.web.domain.PositionRouteInfo;
|
||||
|
||||
/**
|
||||
* @author DongZl
|
|
@ -1,7 +1,7 @@
|
|||
package com.muyu.mapper;
|
||||
package com.muyu.web.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
|
||||
/**
|
||||
* <p>
|
|
@ -0,0 +1,18 @@
|
|||
package com.muyu.web.service;
|
||||
|
||||
import com.muyu.web.domain.model.OverviewModel;
|
||||
|
||||
/**
|
||||
* @Author: DongZeLiang
|
||||
* @date: 2024/6/10
|
||||
* @Description:
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public interface OverviewService {
|
||||
|
||||
/**
|
||||
* 车辆模拟概述
|
||||
* @return 概述数据模型
|
||||
*/
|
||||
OverviewModel overview ();
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
package com.muyu.service;
|
||||
package com.muyu.web.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.muyu.domain.PositionRouteInfo;
|
||||
import com.muyu.domain.model.PositionModel;
|
||||
import com.muyu.web.domain.PositionRouteInfo;
|
||||
import com.muyu.web.domain.model.PositionModel;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
package com.muyu.service;
|
||||
package com.muyu.web.service;
|
||||
|
||||
import com.muyu.common.PageList;
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.domain.req.CheckPositionReq;
|
||||
import com.muyu.domain.req.GearReq;
|
||||
import com.muyu.domain.req.MsgReq;
|
||||
import com.muyu.domain.req.VehicleInstanceListReq;
|
||||
import com.muyu.domain.resp.UnifiedTaskResp;
|
||||
import com.muyu.domain.resp.VehicleInstanceResp;
|
||||
import com.muyu.web.common.PageList;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
import com.muyu.web.domain.req.CheckPositionReq;
|
||||
import com.muyu.web.domain.req.GearReq;
|
||||
import com.muyu.web.domain.req.MsgReq;
|
||||
import com.muyu.web.domain.req.VehicleInstanceListReq;
|
||||
import com.muyu.web.domain.resp.VehicleInstanceResp;
|
||||
|
||||
/**
|
||||
* @author DongZeLiang
|
|
@ -1,7 +1,7 @@
|
|||
package com.muyu.service;
|
||||
package com.muyu.web.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
|
||||
/**
|
||||
* <p>
|
|
@ -1,6 +1,6 @@
|
|||
package com.muyu.service;
|
||||
package com.muyu.web.service;
|
||||
|
||||
import com.muyu.domain.resp.UnifiedTaskResp;
|
||||
import com.muyu.web.domain.resp.UnifiedTaskResp;
|
||||
|
||||
/**
|
||||
* @author DongZeLiang
|
|
@ -0,0 +1,53 @@
|
|||
package com.muyu.web.service.impl;
|
||||
|
||||
import com.muyu.vehicle.VehicleInstance;
|
||||
import com.muyu.vehicle.core.LocalContainer;
|
||||
import com.muyu.web.domain.model.OverviewModel;
|
||||
import com.muyu.web.service.OverviewService;
|
||||
import com.muyu.web.service.VehicleInstanceService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* @Author: DongZeLiang
|
||||
* @date: 2024/6/10
|
||||
* @Description: 车辆概述业务实现层
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Service
|
||||
public class OverviewServiceImpl implements OverviewService {
|
||||
|
||||
/**
|
||||
* 车辆模拟概述
|
||||
*
|
||||
* @return 概述数据模型
|
||||
*/
|
||||
@Override
|
||||
public OverviewModel overview () {
|
||||
// 车辆实例对象
|
||||
Collection<VehicleInstance> instanceList = LocalContainer.vehicleDataMap.values();
|
||||
|
||||
|
||||
return OverviewModel.builder()
|
||||
.online(
|
||||
instanceList.stream()
|
||||
.filter(VehicleInstance::isOnline)
|
||||
.filter(VehicleInstance::isSend)
|
||||
.count()
|
||||
)
|
||||
.offline(
|
||||
instanceList.stream()
|
||||
.filter(vehicleInstance -> !vehicleInstance.isOnline())
|
||||
.count()
|
||||
)
|
||||
.pause(
|
||||
instanceList.stream()
|
||||
.filter(VehicleInstance::isOnline)
|
||||
.filter(vehicleInstance -> !vehicleInstance.isSend())
|
||||
.count()
|
||||
)
|
||||
.build();
|
||||
}
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
package com.muyu.service.impl;
|
||||
package com.muyu.web.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.muyu.domain.PositionRouteInfo;
|
||||
import com.muyu.domain.model.PositionModel;
|
||||
import com.muyu.mapper.PositionRouteMapper;
|
||||
import com.muyu.service.PositionRouteService;
|
||||
import com.muyu.web.domain.PositionRouteInfo;
|
||||
import com.muyu.web.domain.model.PositionModel;
|
||||
import com.muyu.web.mapper.PositionRouteMapper;
|
||||
import com.muyu.web.service.PositionRouteService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
|
@ -1,12 +1,12 @@
|
|||
package com.muyu.service.impl;
|
||||
package com.muyu.web.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.mapper.VehicleMapper;
|
||||
import com.muyu.service.VehicleInstanceService;
|
||||
import com.muyu.service.VehicleService;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
import com.muyu.web.mapper.VehicleMapper;
|
||||
import com.muyu.web.service.VehicleInstanceService;
|
||||
import com.muyu.web.service.VehicleService;
|
||||
import com.muyu.vehicle.VehicleInstance;
|
||||
import com.muyu.vehicle.core.LocalContainer;
|
||||
import lombok.extern.log4j.Log4j2;
|
|
@ -1,19 +1,19 @@
|
|||
package com.muyu.service.impl;
|
||||
package com.muyu.web.service.impl;
|
||||
|
||||
import com.muyu.common.PageList;
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.domain.Vehicle;
|
||||
import com.muyu.domain.model.MqttServerModel;
|
||||
import com.muyu.domain.model.PositionModel;
|
||||
import com.muyu.domain.req.CheckPositionReq;
|
||||
import com.muyu.domain.req.GearReq;
|
||||
import com.muyu.domain.req.MsgReq;
|
||||
import com.muyu.domain.req.VehicleInstanceListReq;
|
||||
import com.muyu.domain.resp.VehicleInstanceResp;
|
||||
import com.muyu.service.PositionRouteService;
|
||||
import com.muyu.service.VehicleInstanceService;
|
||||
import com.muyu.utils.MD5Util;
|
||||
import com.muyu.utils.ReflectUtils;
|
||||
import com.muyu.web.common.PageList;
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.web.domain.Vehicle;
|
||||
import com.muyu.web.domain.model.MqttServerModel;
|
||||
import com.muyu.web.domain.model.PositionModel;
|
||||
import com.muyu.web.domain.req.CheckPositionReq;
|
||||
import com.muyu.web.domain.req.GearReq;
|
||||
import com.muyu.web.domain.req.MsgReq;
|
||||
import com.muyu.web.domain.req.VehicleInstanceListReq;
|
||||
import com.muyu.web.domain.resp.VehicleInstanceResp;
|
||||
import com.muyu.web.service.PositionRouteService;
|
||||
import com.muyu.web.service.VehicleInstanceService;
|
||||
import com.muyu.web.utils.MD5Util;
|
||||
import com.muyu.web.utils.ReflectUtils;
|
||||
import com.muyu.vehicle.VehicleInstance;
|
||||
import com.muyu.vehicle.api.ClientAdmin;
|
||||
import com.muyu.vehicle.api.req.VehicleConnectionReq;
|
|
@ -1,15 +1,15 @@
|
|||
package com.muyu.service.impl;
|
||||
package com.muyu.web.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.muyu.common.pool.FixedThreadPool;
|
||||
import com.muyu.domain.PositionRouteInfo;
|
||||
import com.muyu.domain.model.PositionModel;
|
||||
import com.muyu.domain.model.TaskModel;
|
||||
import com.muyu.domain.resp.UnifiedTaskResp;
|
||||
import com.muyu.service.PositionRouteService;
|
||||
import com.muyu.service.VehicleInstanceService;
|
||||
import com.muyu.service.VehicleUnifiedService;
|
||||
import com.muyu.web.common.pool.FixedThreadPool;
|
||||
import com.muyu.web.domain.PositionRouteInfo;
|
||||
import com.muyu.web.domain.model.PositionModel;
|
||||
import com.muyu.web.domain.model.TaskModel;
|
||||
import com.muyu.web.domain.resp.UnifiedTaskResp;
|
||||
import com.muyu.web.service.PositionRouteService;
|
||||
import com.muyu.web.service.VehicleInstanceService;
|
||||
import com.muyu.web.service.VehicleUnifiedService;
|
||||
import com.muyu.vehicle.VehicleInstance;
|
||||
import com.muyu.vehicle.core.LocalContainer;
|
||||
import lombok.extern.log4j.Log4j2;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.utils;
|
||||
package com.muyu.web.utils;
|
||||
|
||||
/**
|
||||
* 校验位计算
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.utils;
|
||||
package com.muyu.web.utils;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.utils;
|
||||
package com.muyu.web.utils;
|
||||
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.utils;
|
||||
package com.muyu.web.utils;
|
||||
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.utils;
|
||||
package com.muyu.web.utils;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.Validate;
|
|
@ -1,7 +1,6 @@
|
|||
package com.muyu.utils;
|
||||
package com.muyu.web.utils;
|
||||
|
||||
import com.muyu.common.SystemConstant;
|
||||
import com.muyu.domain.model.PositionModel;
|
||||
import com.muyu.web.domain.model.PositionModel;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
|
@ -9,7 +9,7 @@ spring:
|
|||
password: 123456
|
||||
# 如果需要数据本地化,则改成 file 方式
|
||||
# jdbc:h2:mem:testDB;DB_CLOSE_DELAY=-1
|
||||
url: jdbc:h2:file:~/vehicle/db;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1
|
||||
url: jdbc:h2:file:./db/vehicleSimulationDataBaseFile;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1
|
||||
driver-class-name: org.h2.Driver
|
||||
h2:
|
||||
# 开启这个配置就可以通过 web 页面访问了,例如:http://localhost:8080/springboot-h2/h2-console
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
.dashboard-container[data-v-492ff9f3]{margin:30px}.dashboard-text[data-v-492ff9f3]{font-size:46px;line-height:60px;text-align:center;font-weight:900;font-family:cursive}.el-divider[data-v-492ff9f3]{background-color:#575757;position:relative}
|
|
@ -1 +0,0 @@
|
|||
.dashboard-container[data-v-3e145b52]{margin:30px}.dashboard-text[data-v-3e145b52]{font-size:30px;line-height:46px}
|
|
@ -0,0 +1 @@
|
|||
.app-container[data-v-5503ff78]{padding:10px 5px 0 10px;background-color:#f4f4f5}.el-row[data-v-5503ff78]{&:last-child{margin-bottom:0}}.bg-purple[data-v-5503ff78]{background:#f4f4f5}.grid-content[data-v-5503ff78]{border-radius:4px;overflow-x:hidden;overflow-y:auto}.grid-content[data-v-5503ff78]::-webkit-scrollbar{width:4px}.grid-content[data-v-5503ff78]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.grid-content[data-v-5503ff78]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.vehicleDiv[data-v-5503ff78]{height:50px;margin:0 0 10px 0}.contentMain[data-v-5503ff78]{margin-top:10px}.vehicleDataTab[data-v-5503ff78]{width:100%;overflow-y:auto;overflow-x:hidden}.vehicleDataTab[data-v-5503ff78]::-webkit-scrollbar{width:4px}.vehicleDataTab[data-v-5503ff78]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.vehicleDataTab[data-v-5503ff78]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.el-form-item__label[data-v-5503ff78]{padding:0}.el-form-item[data-v-5503ff78]{margin-bottom:5px}
|
|
@ -1 +0,0 @@
|
|||
.app-container[data-v-3ebe39a8]{padding:10px 5px 0 10px;background-color:#f4f4f5}.el-row[data-v-3ebe39a8]{&:last-child{margin-bottom:0}}.bg-purple[data-v-3ebe39a8]{background:#f4f4f5}.grid-content[data-v-3ebe39a8]{border-radius:4px;overflow-x:hidden;overflow-y:auto}.grid-content[data-v-3ebe39a8]::-webkit-scrollbar{width:4px}.grid-content[data-v-3ebe39a8]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.grid-content[data-v-3ebe39a8]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.vehicleDiv[data-v-3ebe39a8]{height:50px;margin:0 0 10px 0}.contentMain[data-v-3ebe39a8]{margin-top:10px}.vehicleDataTab[data-v-3ebe39a8]{width:100%;overflow-y:auto;overflow-x:hidden}.vehicleDataTab[data-v-3ebe39a8]::-webkit-scrollbar{width:4px}.vehicleDataTab[data-v-3ebe39a8]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.vehicleDataTab[data-v-3ebe39a8]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.el-form-item__label[data-v-3ebe39a8]{padding:0}.el-form-item[data-v-3ebe39a8]{margin-bottom:5px}
|
|
@ -1 +1 @@
|
|||
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/favicon.ico><title>车辆</title><link href=/static/css/app.949a0224.css rel=preload as=style><link href=/static/css/chunk-elementUI.c1c3b808.css rel=preload as=style><link href=/static/css/chunk-libs.3dfb7769.css rel=preload as=style><link href=/static/js/app.967d9126.js rel=preload as=script><link href=/static/js/chunk-elementUI.2491fb2f.js rel=preload as=script><link href=/static/js/chunk-libs.2ec7c235.js rel=preload as=script><link href=/static/css/chunk-elementUI.c1c3b808.css rel=stylesheet><link href=/static/css/chunk-libs.3dfb7769.css rel=stylesheet><link href=/static/css/app.949a0224.css rel=stylesheet></head><body><noscript><strong>We're sorry but 车辆 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var n,o,c=t[0],i=t[1],l=t[2],f=0,d=[];f<c.length;f++)o=c[f],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&d.push(a[o][0]),a[o]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);s&&s(t);while(d.length)d.shift()();return u.push.apply(u,l||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var c=r[o];0!==a[c]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={runtime:0},a={runtime:0},u=[];function c(e){return i.p+"static/js/"+({}[e]||e)+"."+{"chunk-019c66da":"ded8571e","chunk-cefe5306":"756dde8f","chunk-22cea610":"a50359dd","chunk-510f32e7":"18a692c7","chunk-630a64ed":"8295bd3f"}[e]+".js"}function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r={"chunk-cefe5306":1,"chunk-22cea610":1,"chunk-510f32e7":1,"chunk-630a64ed":1};o[e]?t.push(o[e]):0!==o[e]&&r[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{"chunk-019c66da":"31d6cfe0","chunk-cefe5306":"0a41cd80","chunk-22cea610":"3c7f5ad9","chunk-510f32e7":"1510e3c5","chunk-630a64ed":"9a9361c6"}[e]+".css",a=i.p+n,u=document.getElementsByTagName("link"),c=0;c<u.length;c++){var l=u[c],f=l.getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(f===n||f===a))return t()}var d=document.getElementsByTagName("style");for(c=0;c<d.length;c++){l=d[c],f=l.getAttribute("data-href");if(f===n||f===a)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=n,delete o[e],s.parentNode.removeChild(s),r(u)},s.href=a;var h=document.getElementsByTagName("head")[0];h.appendChild(s)})).then((function(){o[e]=0})));var n=a[e];if(0!==n)if(n)t.push(n[2]);else{var u=new Promise((function(t,r){n=a[e]=[t,r]}));t.push(n[2]=u);var l,f=document.createElement("script");f.charset="utf-8",f.timeout=120,i.nc&&f.setAttribute("nonce",i.nc),f.src=c(e);var d=new Error;l=function(t){f.onerror=f.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;d.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",d.name="ChunkLoadError",d.type=n,d.request=o,r[1](d)}a[e]=void 0}};var s=setTimeout((function(){l({type:"timeout",target:f})}),12e4);f.onerror=f.onload=l,document.head.appendChild(f)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var l=window["webpackJsonp"]=window["webpackJsonp"]||[],f=l.push.bind(l);l.push=t,l=l.slice();for(var d=0;d<l.length;d++)t(l[d]);var s=f;r()})([]);</script><script src=/static/js/chunk-elementUI.2491fb2f.js></script><script src=/static/js/chunk-libs.2ec7c235.js></script><script src=/static/js/app.967d9126.js></script></body></html>
|
||||
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/favicon.ico><title>车辆</title><link href=/static/css/app.63269458.css rel=preload as=style><link href=/static/css/chunk-elementUI.c1c3b808.css rel=preload as=style><link href=/static/css/chunk-libs.3dfb7769.css rel=preload as=style><link href=/static/js/app.4b247cb1.js rel=preload as=script><link href=/static/js/chunk-elementUI.2491fb2f.js rel=preload as=script><link href=/static/js/chunk-libs.2ec7c235.js rel=preload as=script><link href=/static/css/chunk-elementUI.c1c3b808.css rel=stylesheet><link href=/static/css/chunk-libs.3dfb7769.css rel=stylesheet><link href=/static/css/app.63269458.css rel=stylesheet></head><body><noscript><strong>We're sorry but 车辆 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var r,o,u=t[0],i=t[1],f=t[2],l=0,s=[];l<u.length;l++)o=u[l],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&s.push(a[o][0]),a[o]=0;for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r]);d&&d(t);while(s.length)s.shift()();return c.push.apply(c,f||[]),n()}function n(){for(var e,t=0;t<c.length;t++){for(var n=c[t],r=!0,o=1;o<n.length;o++){var u=n[o];0!==a[u]&&(r=!1)}r&&(c.splice(t--,1),e=i(i.s=n[0]))}return e}var r={},o={runtime:0},a={runtime:0},c=[];function u(e){return i.p+"static/js/"+({}[e]||e)+"."+{"chunk-019c66da":"ded8571e","chunk-6f60c8f1":"f16bf298","chunk-4a014042":"2fe4ac72","chunk-cd3ab578":"ba31bb9e","chunk-22cea610":"fd8494c8","chunk-510f32e7":"792568de"}[e]+".js"}function i(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,i),n.l=!0,n.exports}i.e=function(e){var t=[],n={"chunk-4a014042":1,"chunk-cd3ab578":1,"chunk-22cea610":1,"chunk-510f32e7":1};o[e]?t.push(o[e]):0!==o[e]&&n[e]&&t.push(o[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-019c66da":"31d6cfe0","chunk-6f60c8f1":"31d6cfe0","chunk-4a014042":"3328abfd","chunk-cd3ab578":"5a7a63c7","chunk-22cea610":"3c7f5ad9","chunk-510f32e7":"1510e3c5"}[e]+".css",a=i.p+r,c=document.getElementsByTagName("link"),u=0;u<c.length;u++){var f=c[u],l=f.getAttribute("data-href")||f.getAttribute("href");if("stylesheet"===f.rel&&(l===r||l===a))return t()}var s=document.getElementsByTagName("style");for(u=0;u<s.length;u++){f=s[u],l=f.getAttribute("data-href");if(l===r||l===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var r=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=r,delete o[e],d.parentNode.removeChild(d),n(c)},d.href=a;var h=document.getElementsByTagName("head")[0];h.appendChild(d)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var c=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=c);var f,l=document.createElement("script");l.charset="utf-8",l.timeout=120,i.nc&&l.setAttribute("nonce",i.nc),l.src=u(e);var s=new Error;f=function(t){l.onerror=l.onload=null,clearTimeout(d);var n=a[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;s.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",s.name="ChunkLoadError",s.type=r,s.request=o,n[1](s)}a[e]=void 0}};var d=setTimeout((function(){f({type:"timeout",target:l})}),12e4);l.onerror=l.onload=f,document.head.appendChild(l)}return Promise.all(t)},i.m=e,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var f=window["webpackJsonp"]=window["webpackJsonp"]||[],l=f.push.bind(f);f.push=t,f=f.slice();for(var s=0;s<f.length;s++)t(f[s]);var d=l;n()})([]);</script><script src=/static/js/chunk-elementUI.2491fb2f.js></script><script src=/static/js/chunk-libs.2ec7c235.js></script><script src=/static/js/app.4b247cb1.js></script></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-4a014042"],{7015:function(e,t,a){},8931:function(e,t,a){"use strict";a("7015")},9406:function(e,t,a){"use strict";a.r(t);var i=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"dashboard-container"},[a("div",{staticClass:"dashboard-text"},[e._v(e._s(e.name))]),a("el-divider"),a("div",{style:{width:e.vehicleStatusWidth+"%",height:e.vehicleStatusHeight+"px",margin:"0 auto"},attrs:{id:"vehicleStatus"}})],1)},n=[],o=a("5530"),r=a("2f62"),s=a("313e"),c=a("b775");function u(){return Object(c["a"])({url:"/vehicle/overview",method:"get"})}var l={name:"Dashboard",data:function(){return{vehicleStatusChart:null,vehicleStatusWidth:50,vehicleStatusHeight:window.innerHeight-300,dataMap:{online:0,offline:2,pause:0}}},computed:Object(o["a"])({},Object(r["b"])(["name"])),watch:{dataMap:function(){this.initVehicleStatus()}},created:function(){setInterval(this.getVehicleOverview,5e3)},mounted:function(){this.vehicleStatusChart=s["a"](document.getElementById("vehicleStatus")),this.initVehicleStatus(),window.addEventListener("resize",this.initVehicleStatus)},methods:{getVehicleOverview:function(){var e=this;u().then((function(t){e.dataMap=t.data}))},initVehicleStatus:function(){this.vehicleStatusChart.setOption({title:{text:"系统模拟车辆状态统计一览",left:"center",textStyle:{fontWeight:1e3,fontSize:26}},tooltip:{trigger:"item"},legend:{top:"5%",left:"center"},series:[{type:"pie",radius:["40%","70%"],avoidLabelOverlap:!1,itemStyle:{borderRadius:10,borderColor:"#fff",borderWidth:10},label:{show:!0},emphasis:{label:{show:!0,fontSize:40,fontWeight:"bold"}},labelLine:{show:!0},data:[{value:this.dataMap.pause,name:"暂停车辆"},{value:this.dataMap.online,name:"在线车辆"},{value:this.dataMap.offline,name:"离线车辆"}]}]})}}},h=l,d=(a("8931"),a("2877")),f=Object(d["a"])(h,i,n,!1,null,"492ff9f3",null);t["default"]=f.exports},b775:function(e,t,a){"use strict";a("d3b7");var i=a("bc3a"),n=a.n(i),o=a("5c96"),r=a("4360"),s=a("5f87"),c=n.a.create({baseURL:"/",timeout:5e3});c.interceptors.request.use((function(e){return r["a"].getters.token&&(e.headers["X-Token"]=Object(s["a"])()),e}),(function(e){return console.log(e),Promise.reject(e)})),c.interceptors.response.use((function(e){var t=e.data;return 200!==t.code?(Object(o["Message"])({message:t.msg||"Error",type:"error",duration:5e3}),50008!==t.code&&50012!==t.code&&50014!==t.code||o["MessageBox"].confirm("You have been logged out, you can cancel to stay on this page, or log in again","Confirm logout",{confirmButtonText:"Re-Login",cancelButtonText:"Cancel",type:"warning"}).then((function(){r["a"].dispatch("user/resetToken").then((function(){location.reload()}))})),Promise.reject(new Error(t.msg||"Error"))):t}),(function(e){return console.log("err"+e),Object(o["Message"])({message:e.message,type:"error",duration:5e3}),Promise.reject(e)})),t["a"]=c}}]);
|
|
@ -1 +0,0 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-630a64ed"],{"30fb":function(t,a,e){"use strict";e("7148")},7148:function(t,a,e){},9406:function(t,a,e){"use strict";e.r(a);var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"dashboard-container"},[e("div",{staticClass:"dashboard-text"},[t._v("name: "+t._s(t.name))])])},s=[],c=e("5530"),i=e("2f62"),o={name:"Dashboard",computed:Object(c["a"])({},Object(i["b"])(["name"]))},r=o,u=(e("30fb"),e("2877")),b=Object(u["a"])(r,n,s,!1,null,"3e145b52",null);a["default"]=b.exports}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
|||
package com;
|
||||
|
||||
import com.muyu.VehicleSimulationApplication;
|
||||
import com.muyu.common.Result;
|
||||
import com.muyu.web.common.Result;
|
||||
import com.muyu.vehicle.api.ClientAdmin;
|
||||
import com.muyu.vehicle.api.req.VehicleConnectionReq;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
|
Loading…
Reference in New Issue