# Conflicts:
#	car-base-server/src/main/java/com/god/base/server/controller/FenceController.java
#	car-base-server/src/main/java/com/god/base/server/mapper/FenceMapper.java
#	car-base-server/src/main/java/com/god/base/server/service/FenceService.java
#	car-base-server/src/main/java/com/god/base/server/service/impl/FenceServiceImpl.java
master
chenchenxinhai 2023-11-24 09:35:33 +08:00
commit 428135ed02
28 changed files with 1443 additions and 4 deletions

View File

@ -0,0 +1,96 @@
package com.god.base.common.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.god.base.common.domain.request.FenceAddRequest;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
*
*
* @author Lou-Zs
* @Date 2023/11/20 19:41
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "t_fence")
public class Fence {
/**
*
*/
@TableId(value = "fence_id",type = IdType.AUTO)
private Integer fenceId;
/**
*
*/
@NotEmpty(message = "围栏名称不能为空")
private String fenceName;
/**
*
*/
private String fenceLocation;
/**
*
* 0-
* 1-
*/
private Integer fenceStatus;
/**
*
* 1-
* 2-
*/
private Integer driveStatus;
/**
*
*/
private String carVinId;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
private Date createTime;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
private Date updateTime;
public static Fence fenceBuildAdd(FenceAddRequest fenceAddRequest){
return Fence.builder()
.fenceName(fenceAddRequest.getFenceName())
.fenceLocation(fenceAddRequest.getFenceLocation())
.fenceStatus(fenceAddRequest.getFenceStatus())
.driveStatus(fenceAddRequest.getDriveStatus())
.carVinId(fenceAddRequest.getCarVinId())
.createTime(fenceAddRequest.getCreateTime())
.updateTime(fenceAddRequest.getUpdateTime())
.build();
}
}

View File

@ -0,0 +1,76 @@
package com.god.base.common.domain.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty;
import java.util.Date;
/**
*
*
* @author Lou-Zs
* @Date 2023/11/20 19:41
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "t_fence")
public class FenceAddRequest {
/**
*
*/
@NotEmpty(message = "围栏名称不能为空")
private String fenceName;
/**
*
*/
private String fenceLocation;
/**
*
* 0-
* 1-
*/
private Integer fenceStatus;
/**
*
* 1-
* 2-
*/
private Integer driveStatus;
/**
*
*/
private String carVinId;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
private Date createTime;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
private Date updateTime;
}

View File

@ -0,0 +1,46 @@
package com.god.base.common.domain.request;
import com.god.base.common.page.PageQuery;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import javax.validation.constraints.NotEmpty;
/**
*
*
* @author Lou-Zs
* @Date 2023/11/20 22:01
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class FenceQueryRequest extends PageQuery {
/**
*
*/
private String fenceName;
/**
*
* 0-
* 1-
*/
private Integer fenceStatus;
/**
*
* 1-
* 2-
*/
private Integer driveStatus;
}

View File

@ -0,0 +1,36 @@
package com.god.base.common.page;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author Lou-Zs
* @Date 2023/11/20 22:03
**/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class PageQuery {
private Integer pageNum;
private Integer pageSize;
public <T> Page<T> buildPage(){
Page<T> page = new Page<>(this.pageNum, this.pageSize);
return page;
}
}

View File

@ -0,0 +1,64 @@
package com.god.base.server.common.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
*
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("t_battery_box")
public class BatteryBox {
/**
*
*/
private long batteryBoxId;
/**
*
*/
private String batteryBoxBatteryPackCoding;
/**
*
*/
private String batteryBoxName;
/**
*
*/
private String batteryBoxNumber;
/**
*
*/
private String batteryBoxActualCapacity;
/**
*
*/
private String batteryBoxVirtualVoltage;
/**
*
*/
private String batteryBoxActualMass;
/**
*
*/
@DateTimeFormat
private Date batteryBoxDate;
/**
*
*/
private long cellId;
/**
* VIN
*/
private String carVin;
}

View File

@ -0,0 +1,56 @@
package com.god.base.server.common.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("t_batteryBox_model")
public class BatteryBoxModel {
/**
*
*/
private long batteryBoxModelId;
/**
*
*/
private String batteryBoxModelName;
/**
*
*/
private String batteryBoxModelNumber;
/**
*
*/
private String batteryBoxModelPackSpecificationCode;
/**
*
*/
private int batteryBoxModelBrand;
/**
*
*/
private String batteryBoxModelTemperatureProbePopulation;
/**
*
*/
private String batteryBoxModelModuleSeriesParallelMode;
/**
*
*/
private String batteryBoxModelNumberOfModules;
/**
*
*/
private String batteryBoxModelManufacturerName;
}

View File

@ -0,0 +1,127 @@
package com.god.base.server.common.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.god.base.server.common.domain.request.CarRequest;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
*
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName(value = "t_car")
public class Car {
/**
* Vin
*/
private String carVinId;
/**
* id
*/
private long userId;
/**
* id
*/
private long carTypeId;
/**
* id
*/
private long batteryBoxId;
/**
* id
*/
private long cellId;
/**
* id
*/
private long batteryCellId;
/**
* id
*/
private long batteryPackInformationId;
/**
* ID
*/
private long fenceId;
/**
*
*/
private String carNumber;
/**
*
*/
private long driveMotorId;
/**
*
*/
private String carMileage;
/**
*
*/
private String createBy;
/**
*
*/
private Date createTime;
/**
*
*/
private String updateBy;
/**
*
*/
@DateTimeFormat
private Date updateTime;
/**
*
*/
private String address;
/**
*
*/
private String batteryManufacturer;
/**
*
*/
private String motorManufacturer;
/**
*
*/
private String motorNumber;
/**
*
*/
private String batteryNumber;
/**
*
*/
private int isDelete;
public static Car addReqBuild(CarRequest carRequest){
return Car.builder()
//把所有的属性点都加上
.carVinId(carRequest.getCarVinId())
.carTypeId(carRequest.getCarTypeId())
.batteryManufacturer(carRequest.getBatteryManufacturer())
.motorManufacturer(carRequest.getMotorManufacturer())
.motorNumber(carRequest.getMotorNumber())
.batteryNumber(carRequest.getBatteryNumber())
.batteryNumber(carRequest.getBatteryNumber())
.build()
;
}
}

View File

@ -0,0 +1,29 @@
package com.god.base.server.common.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("t_carT_type")
public class CarType {
/**
*
*/
private long id;
/**
*
*/
private String carTypename;
}

View File

@ -0,0 +1,58 @@
package com.god.base.server.common.domain.request;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
*
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@NotNull
public class CarRequest {
/**
* Vin
*/
@NotEmpty(message = "车辆vin不能为空")
private String carVinId;
/**
*
*/
@NotEmpty(message = "车辆类型不能为空")
private long carTypeId;
/**
* ID
*/
@NotEmpty(message = "电子围栏不能为空")
private long fenceId;
/**
*
*/
@NotEmpty(message = "电池厂商不能为空")
private String batteryManufacturer;
/**
*
*/
@NotEmpty(message = "电机厂商不能为空")
private String motorManufacturer;
/**
*
*/
@NotEmpty(message = "电机编号不能为空")
private String motorNumber;
/**
*
*/
@NotEmpty(message = "电池编号不能为空")
private String batteryNumber;
}

View File

@ -1,6 +1,6 @@
# Tomcat # Tomcat
server: server:
port: 9802 port: 9803
# Spring # Spring
spring: spring:

View File

@ -25,4 +25,4 @@
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -59,9 +59,27 @@
<groupId>com.mysql</groupId> <groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId> <artifactId>mysql-connector-j</artifactId>
</dependency> </dependency>
<!-- 登录-->
<dependency>
<groupId>com.god</groupId>
<artifactId>god-common-security</artifactId>
<version>3.6.3</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>${project.artifactId}</finalName> <finalName>${project.artifactId}</finalName>
<plugins> <plugins>
@ -87,4 +105,4 @@
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@ -17,6 +17,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @SpringBootApplication
public class GodCarBaseApplication { public class GodCarBaseApplication {
public static void main (String[] args) { public static void main (String[] args) {
SpringApplication.run(com.god.base.server.GodCarBaseApplication .class, args); SpringApplication.run(GodCarBaseApplication.class, args);
} }
} }

View File

@ -0,0 +1,77 @@
package com.god.base.server.controller;
import com.god.base.server.common.domain.Car;
import com.god.base.server.common.domain.request.CarRequest;
import com.god.base.server.service.CarService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.god.common.core.domain.Result;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("/car")
@Log4j2
public class CarController {
@Autowired
private CarService carService;
/**
*
*/
@GetMapping("carList/{userId}")
public Result<?> carList(@PathVariable String userId){
log.info("请求参数" + userId);
Result<List<Car>> carList = carService.carList(userId);
log.info("响应参数" + carList);
return Result.success(carList);
}
/**
*
*/
@PostMapping("/addCar")
public Result<String> addCarP(@RequestBody @Validated CarRequest carRequest){
log.info("请求参数" + carRequest);
boolean save = carService.save(Car.addReqBuild(carRequest));
log.info("响应参数" + save);
return Result.success();
}
/**
*
*/
@PostMapping("/updCar/{vinId}")
public Result updCat(@PathVariable @Validated String vinId){
log.info("请求参数" + vinId);
carService.updateById(vinId);
log.info("响应参数" + vinId);
return Result.success();
}
/**
*
*/
@PostMapping("/delCar/{vinId}")
public Result delCar(@PathVariable String vinId){
log.info("请求参数" + vinId);
boolean b = carService.removeById(vinId);
log.info("响应参数" + b);
return Result.success();
}
/**
*
*/
@PostMapping
public Result sSgj(){
return null;
}
}

View File

@ -0,0 +1,113 @@
package com.god.base.server.controller;
/**
* @ClassName FenceController
* @Author Lou-Zs
* @Date 2023/11/19 20:00
* @Version 1.0
* @Description TODO
**/
import com.alibaba.fastjson.JSONObject;
import com.god.base.common.domain.Fence;
import com.god.base.common.domain.request.FenceAddRequest;
import com.god.base.common.domain.request.FenceQueryRequest;
import com.god.base.server.service.FenceService;
import com.god.common.core.web.page.TableDataInfo;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.god.common.core.domain.Result;
import javax.servlet.http.HttpServletRequest;
/**
* base
* @author Lou-Zs
*/
@RestController
@RequestMapping("/baseFence")
@Log4j2
public class FenceController {
@Autowired
private HttpServletRequest request;
@Autowired
private FenceService fenceService;
/**
*
* @param fenceAddRequest
* @return
*/
@PostMapping("/insertFence")
public Result<String> insertFence(@RequestBody @Validated FenceAddRequest fenceAddRequest){
log.info("功能介绍新增电子围栏,请求方式;{},请求路径:{},请求参数:{}",
request.getMethod(),
request.getRequestURL(),
JSONObject.toJSONString(fenceAddRequest));
//围栏添加
fenceService.save(Fence.fenceBuildAdd(fenceAddRequest));
return Result.success();
}
/**
*
* @param fence
* @return
*/
@PostMapping("/updateFence")
public Result<String> updateFence(@RequestBody @Validated Fence fence){
log.info("功能介绍:编辑围栏信息,请求方式:{},请求路径:{},请求参数:{}",
request.getMethod(),
request.getRequestURL(),
JSONObject.toJSONString(fence));
//编辑电子围栏信息
fenceService.updateById(fence);
return Result.success();
}
/**
*
* @param fenceId
* @return
*/
@GetMapping("/deleteFence")
public Result<String> deleteFence(@RequestParam("fenceId") Integer fenceId){
log.info("功能介绍:通过围栏编号删除围栏,请求方式:{},请求路径:{},请求参数:{}",
request.getMethod(),
request.getRequestURL(),
JSONObject.toJSONString(fenceId));
//根据围栏编号删除围栏
fenceService.removeById(fenceId);
return Result.success();
}
/**
*
* @param fenceQueryRequest
* @return
*/
@PostMapping("/fenceListAndPage")
public Result<TableDataInfo<Fence>> fenceListAndPage(@RequestBody FenceQueryRequest fenceQueryRequest){
log.info("功能介绍:查询围栏列表,请求方式:{},请求路径:{},请求参数:{}",
request.getMethod(),
request.getRequestURL(),
JSONObject.toJSONString(fenceQueryRequest));
//分页查询围栏列表
TableDataInfo<Fence> dataInfo = fenceService.fenceListAndPage(fenceQueryRequest);
return Result.success(dataInfo);
}
}

View File

@ -0,0 +1,19 @@
package com.god.base.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.god.base.server.common.domain.Car;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* mapper
*/
@Mapper
public interface CarMapper extends BaseMapper<Car> {
List<Car> getList(int userId1);
}

View File

@ -0,0 +1,17 @@
package com.god.base.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.god.base.common.domain.Fence;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName FenceMapper
* @Author Lou-Zs
* @Date 2023/11/19 20:28
* @Version 1.0
* @Description TODO
**/
@Mapper
public interface FenceMapper extends BaseMapper<Fence> {
}

View File

@ -0,0 +1,17 @@
package com.god.base.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.god.base.server.common.domain.Car;
import com.god.common.core.domain.Result;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*/
public interface CarService extends IService<Car> {
Result<List<Car>> carList(@Param("userId") String userId);
void updateById(@Param("vinId") String vinId);
}

View File

@ -0,0 +1,29 @@
package com.god.base.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.god.base.common.domain.Fence;
import com.god.base.common.domain.request.FenceQueryRequest;
import com.god.common.core.web.page.TableDataInfo;
/**
* @ClassName FenceService
* @Author Lou-Zs
* @Date 2023/11/19 22:26
* @Version 1.0
* @Description TODO
**/
/**
*
* @author Lou-Zs
*/
public interface FenceService extends IService<Fence> {
/**
*
* @param fenceQueryRequest
* @return
*/
TableDataInfo<Fence> fenceListAndPage(FenceQueryRequest fenceQueryRequest);
}

View File

@ -0,0 +1,43 @@
package com.god.base.server.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.god.base.server.common.domain.Car;
import com.god.base.server.mapper.CarMapper;
import com.god.base.server.service.CarService;
import com.god.common.core.domain.Result;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*/
@Log4j2
@Service
public class CarServiceImpl extends ServiceImpl<CarMapper,Car> implements CarService {
@Autowired
private CarMapper carMapper;
@Override
public Result<List<Car>> carList(String userId) {
// Long userId1 = SecurityUtils.getUserId();
// if (null == userId1){
// throw new SecurityException("请先登录");
// }
int userId1 = 1;
List<Car> carList = carMapper.getList(userId1);
return Result.success(carList);
}
/**
*
* @param vinId
*/
@Override
public void updateById(String vinId) {
}
}

View File

@ -0,0 +1,131 @@
package com.god.base.server.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.god.base.common.domain.Fence;
import com.god.base.common.domain.request.FenceQueryRequest;
import com.god.base.server.mapper.FenceMapper;
import com.god.base.server.service.FenceService;
import com.god.common.core.web.page.TableDataInfo;
import com.god.common.redis.service.RedisService;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.Date;
/**
* @ClassName FenceServiceImpl
* @Author Lou-Zs
* @Date 2023/11/19 22:26
* @Version 1.0
* @Description TODO
**/
/**
*
* @author Lou-Zs
*/
@Service
@Log4j2
public class FenceServiceImpl extends ServiceImpl<FenceMapper , Fence> implements FenceService {
//redis
@Autowired
private RedisService redisService;
/**
*
* @param entity
* @return
*/
@Override
public boolean save(Fence entity) {
boolean save = super.save(entity);
if (!save){
log.warn("增加围栏:[/-{}-/]失败! 请求参数:{}",
entity.getFenceName(),
JSONObject.toJSONString(entity));
throw new RuntimeException("增添围栏失败!");
}
return true;
}
/**
*
* @param id
* @return
*/
@Override
public boolean removeById(Serializable id) {
boolean remove = super.removeById(id);
if (!remove){
log.warn("删除围栏编号:[/-{}-/]失败!",
id);
throw new RuntimeException("删除围栏失败!");
}
return true;
}
/**
*
* @param entity
* @return
*/
@Override
public boolean updateById(Fence entity) {
entity.setUpdateTime(new Date());
// 获取当前围栏坐标
String fenceLocation = entity.getFenceLocation();
// 将围栏坐标存储到redis中
// key 围栏编号
// value 围栏坐标信息
redisService.setCacheObject(entity.getFenceId()+"",fenceLocation);
boolean update = super.updateById(entity);
if (!update){
log.warn("编辑围栏[/-{}-/]未成功! 请求参数:{}",
entity.getFenceName(),
JSONObject.toJSONString(entity));
throw new RuntimeException("编辑围栏失败!");
}
return true;
}
/**
*
* @param fenceQueryRequest
* @return
*/
@Override
public TableDataInfo<Fence> fenceListAndPage(FenceQueryRequest fenceQueryRequest) {
LambdaQueryWrapper<Fence> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//判断查询围栏是否为空
if (StringUtils.isNotEmpty(fenceQueryRequest.getFenceName())){
//模糊查询
lambdaQueryWrapper.like(Fence::getFenceName,fenceQueryRequest.getFenceName());
}
//判断激活状态是否为空
if (null != fenceQueryRequest.getFenceStatus()){
//精确查询
lambdaQueryWrapper.eq(Fence::getFenceStatus,fenceQueryRequest.getFenceStatus());
}
//判断行驶状态是否为空
if (null != fenceQueryRequest.getDriveStatus()){
//精确查询
lambdaQueryWrapper.eq(Fence::getDriveStatus,fenceQueryRequest.getDriveStatus());
}
//分页
Page<Fence> fencePage = fenceQueryRequest.buildPage();
log.info("分页查询:[ {} ]", JSONObject.toJSONString(fencePage));
Page<Fence> page = this.page(fencePage, lambdaQueryWrapper);
return TableDataInfo.<Fence>builder()
.rows(page.getRecords())
.total(page.getTotal())
.build();
}
}

View File

@ -0,0 +1,30 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />
<title>地图显示</title>
<style>
html,
body,
#container {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="container"></div>
<!-- 加载地图JSAPI脚本 -->
<script src="https://webapi.amap.com/maps?v=2.0&key=1dc6c2a01b67ed7f982a49fc89ac3190"></script>
<script>
var map = new AMap.Map('container', {
viewMode: '3D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D'
zoom:11, // 初始化地图层级
center: [116.397428, 39.90923] // 初始化地图中心点
});
</script>
</body>
</html>

View File

@ -0,0 +1,81 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<style>
html,
body,
#container {
width: 100%;
height: 100%;
}
</style>
<title>多边形的绘制和编辑</title>
<link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />
<script src="https://webapi.amap.com/maps?v=2.0&key=1dc6c2a01b67ed7f982a49fc89ac3190&plugin=AMap.PolygonEditor"></script>
<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
</head>
<body>
<div id="container"></div>
<div class="input-card" style="width: 120px">
<button class="btn" onclick="polyEditor.open()" style="margin-bottom: 5px">开始编辑</button>
<button class="btn" onclick="polyEditor.close()">结束编辑</button>
</div>
<script type="text/javascript">
var map = new AMap.Map("container", {
center: [116.400274, 39.905812],
zoom: 14,
viewMode: '3D',
});
var path = [
[116.403322, 39.920255],
[116.410703, 39.897555],
[116.402292, 39.892353],
[116.389846, 39.891365]
]
var path1 = [
[116.453322, 39.920255],
[116.460703, 39.897555],
[116.452292, 39.892353],
[116.439846, 39.891365]
]
var polygon = new AMap.Polygon({
path: path,
strokeColor: "#FF33FF",
strokeWeight: 6,
strokeOpacity: 0.2,
fillOpacity: 0.4,
fillColor: '#1791fc',
zIndex: 50,
bubble: true,
})
var polygon1 = new AMap.Polygon({
path: path1,
strokeColor: "green",
strokeWeight: 6,
strokeOpacity: 0.2,
fillOpacity: 0.4,
fillColor: '#1791fc',
zIndex: 50,
bubble: true,
})
map.add([polygon, polygon1])
// 缩放地图到合适的视野级别
map.setFitView()
var polyEditor;
// var polyEditor = new AMap.PolyEditor(map, polygon)
// polyEditor = new AMap.PolygonEditor(map)
polyEditor = new AMap.PolygonEditor(map, polygon);
polyEditor.addAdsorbPolygons(polygon1)
polyEditor.open();
// polyEditor.close();
</script>
</body>
</html>

View File

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--引入高德地图sdk-->
<!--"@amap/amap-jsapi-loader": "^1.0.1"-->
<!--html 展示操作按钮-->
<el-button type="primary" class="sub-btn" @click="handleStart">开始建围栏</el-button>点击开始建立围栏后,围栏操作按钮才可见
<div class="map-paint-box2" v-show="clickBox">
<button class="btn" onclick="startWrite">开始绘制</button>
<button class="btn" onclick="clearWrite">清除</button>
<button class="btn" onclick="finishWrite">完成绘制</button>
<button class="btn" onclick="polyEditor.open()" style="margin-bottom: 5px">开始编辑</button>
<button class="btn" onclick="polyEditor.close()">结束编辑</button>
</div>
<script type="text/javascript">
var map = new AMap.Map("container", {
center: [116.400274, 39.905812],
zoom: 14,
viewMode: '3D',
});
//初始化地图:
function initMap() {
AMapLoader.load({
key:"", // 申请好的Web端开发者Key首次调用 load 时必填
version:"2.0", // 指定要加载的 JSAPI 的版本缺省时默认1.4.15
AMapUI: {
version: '1.1',
plugins:['control/BasicControl']
} // 需要使用的的插件列表,如比例尺'AMap.Scale'等
}).then((AMap)=>{
map.value = new AMap.Map("container",{ //设置地图容器id
resizeEnable: true, //是否监控地图容器尺寸变化
zoom: 16, //初始化地图层级、
center: [104.560920999, 31.4560470000]
});
}).catch(e=>{
console.log(e);
})
}
//初始化围栏信息
function handleStart() {
allPoly = []
//先从后端获取已经建立的围栏展示在地图上存到currentOrgWeilan
clickBox.value = true //展示操作按钮
AMapLoader.load({
key:"", // 申请好的Web端开发者Key首次调用 load 时必填
version:"2.0",
plugins:['AMap.PolygonEditor','AMap.Polygon'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
}).then((AMap)=>{
polyEditor = new AMap.PolygonEditor(map.value);
if (currentOrgWeilan.length > 0) {
// 复现该组织下的围栏数据
for (let one of currentOrgWeilan ) {
let path = []
let arr = one.regionScope.split(',')
for (var i of arr) {
let itemLatLng = []
let oneArr = i.split('_')
itemLatLng.push(Number(oneArr[0]), Number(oneArr[1]))
path.push(itemLatLng)
}
//围栏数据处理 并展示
var polygon = new AMap.Polygon({
path: path
})
allPoly.push(polygon)
}
map.value.add(allPoly)
map.value.setFitView(allPoly);
polyEditor.addAdsorbPolygons(allPoly)
for (let one of allPoly) {
// 双击某个围栏可以进行编辑
one.on('dblclick', () => {
polyOverlays = []
currentPoly = one
polyEditor.setTarget(one);
polyOverlays.push(one)
polyEditor.open();
})
}
}
// 直接在地图建立新的围栏
polyEditor.on('add', function () {
var polygon = data.target;
polyEditor.addAdsorbPolygons(polygon);
polyOverlays = []
polyOverlays.push(polygon)
allPoly.push(polygon)
currentPoly = polygon // currentPoly 存放当前双击围栏,不然点其他操作时总是会操作到最后创建的围栏
polygon.on('dblclick', () => {
polyOverlays = []
currentPoly = polygon
polyEditor.setTarget(polygon);
polyOverlays.push(polygon)
polyEditor.open();
})
})
}).catch(e=>{
console.log(e);
})
}
function startWrite() {
polyEditor.close();
polyEditor.setTarget();
polyEditor.open();
polyPointArr = []
}
function clearWrite() {
allPoly.some((one,index)=> {
if (one==currentPoly) {
allPoly.splice(index,1)
return true
}
})
map.value.remove(polyOverlays)
polyEditor.close()
}
async function finishWrite() {
polyEditor.close()
for (var item of allPoly) {
let polyAr = item.getPath()
let str = '',allStrArr = [], allStr=''
for (var one of polyAr) {
str = one.lng+'_'+one.lat
allStrArr.push(str)
}
allStr=allStrArr.join(',');
polyPointArr.push(allStr)
}
//polyPointArr是围栏角坐标集合可以传给后端判断是否在坐标围栏内
}
</script>
</body>
</html>

View File

@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=1dc6c2a01b67ed7f982a49fc89ac3190&plugin=AMap.MouseTool"></script>
<script type="text/javascript">
var map = new AMap.Map('container', {
center: [121.548181, 29.806906],
zoom: 15
});
var path = [
[121.546266, 29.80975],
[121.54543, 29.806845],
[121.548713, 29.806752],
[121.549957, 29.809508]
]
var polygon = new AMap.Polygon({
path: path,
strokeColor: "#1E9FFF",
strokeWeight: 2,
strokeStyle: 'dashed',
strokeOpacity: 1,
fillOpacity: 0.1,
fillColor: '#1E9FFF',
zIndex: 50,
})
map.add(polygon)
// 缩放地图到合适的视野级别
map.setFitView([polygon])
var map = new AMap.Map('container', {
zoom: 14
});
var mouseTool = new AMap.MouseTool(map);
//监听draw事件可获取画好的覆盖物
var overlays = [];
mouseTool.on('draw', function (e) {
//绘制多边形;
overlays.push(e.obj);
//获取坐标;
console.log(e.obj.getPath());
//格式化坐标;
var polyPoints = e.obj.getPath();
var arr = "";
for (var i = 0; i < polyPoints.length; i++) {
arr += polyPoints[i].lng + "," + polyPoints[i].lat + ";";
}
console.log(arr);//121.540994,29.870174;121.55138,29.858116;121.55756,29.874193;
})
//多边形样式;
mouseTool.polygon({
strokeColor: "#1E9FFF",
strokeWeight: 2,
strokeStyle: 'dashed',
strokeOpacity: 1,
fillOpacity: 0.1,
fillColor: '#1E9FFF',
zIndex: 50,
});
//清除覆盖物;
var radios = document.getElementsByName('func');
document.getElementById('clear').onclick = function () {
map.remove(overlays)
overlays = [];
}
</script>
</body>
</html>

View File

@ -0,0 +1,25 @@
package com.god.base.server.util;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatis-plus
* @author
*/
@Configuration
@MapperScan("com.god.base.server.mapper") //mapper持久层所在位置
public class MyBatisPlusPageHelperConfig {
/**
*
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}

View File

@ -4,6 +4,8 @@ server:
# Spring # Spring
spring: spring:
# main:
# allow-bean-definition-overriding: true
application: application:
# 应用名称 # 应用名称
name: god-car-base name: god-car-base

View File

@ -0,0 +1,22 @@
<?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.god.base.server.mapper.CarMapper">
<!-- 车辆列表-->
<select id="getList" resultType="com.god.base.server.common.domain.Car">
SELECT
*
FROM
t_car
JOIN t_car_type ON t_car.car_type_id = t_car_type.id
JOIN t_battery_box ON t_car.battery_box_id = t_battery_box.battery_box_id
JOIN t_cell ON t_car.cell_id = t_cell.cell_id
JOIN t_batterycell ON t_car.battery_cell_id = t_batterycell.batterycell_id
JOIN t_batterypackinformation ON t_car.battery_pack_information_id = t_batterypackinformation.batterypackinformation_id
JOIN t_drive_motor ON t_car.drive_motor_id = t_drive_motor.drive_motor_id
</select>
</mapper>