车辆信息 删改查

master
tangwenkang 2023-11-22 14:18:11 +08:00
parent 0ad2cd436d
commit f549b1824b
27 changed files with 944 additions and 19 deletions

23
pom.xml
View File

@ -27,4 +27,27 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<distributionManagement>
<repository>
<id>dragon-release</id>
<name>dragon-releases</name>
<url>http://10.100.1.7:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>dragon-public</id>
<name>dragon-maven</name>
<url>http://10.100.1.7:8081/repository/maven-public/</url>
</repository>
<repository>
<id>aliyun-public</id>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
</project> </project>

View File

@ -22,5 +22,12 @@
<groupId>com.dragon</groupId> <groupId>com.dragon</groupId>
<artifactId>dragon-common-core</artifactId> <artifactId>dragon-common-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -0,0 +1,54 @@
package com.dragon.vehicle.history.common.domain;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Wenkang Tang
* @date 2023/11/20 19:26
* @description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Car {
/**
* ID
*/
private Integer carId;
/**
* VIN
*/
private String carVin;
/**
*
*/
private String carName;
/**
*
*/
private String carBrand;
/**
*
*/
private Integer carTypeId;
/**
* ID
*/
private Integer fenceId;
/**
* 1-线 0-线
*/
private Integer carStatus;
/**
* 1- 0-
*/
@TableLogic(value="0",delval="1")
//value为正常数据的值delval为删除数据的值
private Integer isDelete;
}

View File

@ -0,0 +1,26 @@
package com.dragon.vehicle.history.common.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Wenkang Tang
* @date 2023/11/21 19:47
* @description
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CarType {
/**
* ID
*/
private Integer carTypeId;
/**
*
*/
private String carTypeName;
}

View File

@ -0,0 +1,64 @@
package com.dragon.vehicle.history.common.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Wenkang Tang
* @date 2023/11/22 8:14
* @description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Fence {
/**
* id
*/
private Integer fenceId;
/**
*
*/
private String fenceName;
/**
*
*/
private String fenceData;
/**
*
*/
private Integer status;
/**
*
*/
private String alarmType;
/**
*
*/
private String tenantId;
/**
*
*/
private Integer revision;
/**
*
*/
private String createBy;
/**
*
*/
private Date createTime;
/**
*
*/
private String updateBy;
/**
*
*/
private Date updateTime;
}

View File

@ -0,0 +1,240 @@
package com.dragon.vehicle.history.common.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author Wenkang Tang
* @date 2023/11/19 20:01
* @description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class VehicleOperation {
/**
*
*/
private Integer vehicleOperationId;
/**
* VIN
*/
private String vin;
/**
* 线
*/
private String drivingRoute;
/**
*
*/
private String longitude;
/**
*
*/
private String latitude;
/**
*
*/
private String speed;
/**
*
*/
private BigDecimal mileage;
/**
*
*/
private String voltage;
/**
*
*/
private String current;
/**
*
*/
private String resistance;
/**
*
*/
private String gear;
/**
*
*/
private String accelerationPedal;
/**
*
*/
private String brakePedal;
/**
*
*/
private String fuelConsumptionRate;
/**
*
*/
private String motorControllerTemperature;
/**
*
*/
private String motorSpeed;
/**
*
*/
private String motorTorque;
/**
*
*/
private String motorTemperature;
/**
*
*/
private String motorVoltage;
/**
*
*/
private String motorCurrent;
/**
* SOC
*/
private BigDecimal remainingBattery;
/**
*
*/
private BigDecimal batteryLevel;
/**
*
*/
private String maximumFeedbackPower;
/**
*
*/
private String maximumDischargePower;
/**
* BMS
*/
private String selfCheckCounter;
/**
*
*/
private String totalBatteryCurrent;
/**
* V3
*/
private String totalBatteryVoltage;
/**
*
*/
private String singleBatteryMaxVoltage;
/**
*
*/
private String singleBatteryMinVoltage;
/**
*
*/
private String singleBatteryMaxTemperature;
/**
*
*/
private String singleBatteryMinTemperature;
/**
*
*/
private String availableBatteryCapacity;
/**
*
*/
private Integer vehicleStatus;
/**
*
*/
private Integer chargingStatus;
/**
*
*/
private Integer operatingStatus;
/**
* SOC
*/
private Integer socStatus;
/**
*
*/
private Integer chargingRnergyStorageStatus;
/**
*
*/
private Integer driveMotorStatus;
/**
*
*/
private Integer positionStatus;
/**
* EAS()
*/
private Integer easStatus;
/**
* EPS()
*/
private Integer epsStatus;
/**
* ABS()
*/
private Integer absStatus;
/**
* MCU(/)
*/
private Integer mcuStatus;
/**
*
*/
private Integer heatingStatus;
/**
*
*/
private Integer batteryStatus;
/**
*
*/
private Integer batteryInsulationStatus;
/**
* DCDC()
*/
private Integer dcdcStatus;
/**
* CHG()
*/
private Integer chgStatus;
/**
*
*/
private String vehicleStatusMsg;
/**
*
*/
private String smartHardwareMsg;
/**
*
*/
private String batteryMsg;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**
* 1- 0-
*/
private Integer isDelete;
}

View File

@ -0,0 +1,54 @@
package com.dragon.vehicle.history.common.domain.req;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dragon.common.core.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Wenkang Tang
* @date 2023/11/21 19:15
* @description
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ReqCar {
/**
*
*/
private Integer pageNum=1;
/**
*
*/
private Integer pageSize=10;
/**
* VIN
*/
private String carVin;
/**
*
*/
private String carName;
/**
*
*/
private String carBrand;
/**
*
*/
private Integer carTypeId;
/**
* ID
*/
private Integer fenceId;
/**
* 1-线 0-线
*/
private Integer carStatus;
}

View File

@ -0,0 +1,47 @@
package com.dragon.vehicle.history.common.domain.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Wenkang Tang
* @date 2023/11/20 18:38
* @description
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ReqVehicleOperation {
/**
* VIN
*/
private String vin;
/**
*
*/
private Integer pageNum;
/**
*
*/
private Integer pageSize;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
}

View File

@ -0,0 +1,58 @@
package com.dragon.vehicle.history.common.domain.res;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Wenkang Tang
* @date 2023/11/21 20:35
* @description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ResCar {
/**
* ID
*/
private Integer carId;
/**
* VIN
*/
private String carVin;
/**
*
*/
private String carName;
/**
*
*/
private String carBrand;
/**
*
*/
private Integer carTypeId;
/**
* ID
*/
private Integer fenceId;
/**
* 1-线 0-线
*/
private Integer carStatus;
/**
* 1- 0-
*/
private Integer isDelete;
/**
*
*/
private String carTypeName;
/**
*
*/
private String fenceName;
}

View File

@ -1,10 +1,8 @@
package com.dragon.vehicle.history.remote; package com.dragon.vehicle.history.remote;
/** /**
* @author * @author
* @version 1.0
* @description:
* @date 2023/11/19 19:02
*/ */
public interface RemoteHistoryService { public interface RemoteHistoryService {
} }

View File

@ -4,10 +4,7 @@ import com.dragon.vehicle.history.remote.RemoteHistoryService;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
* @author * @author
* @version 1.0
* @description:
* @date 2023/11/19 19:03
*/ */
@Component @Component
public class RemoteHistoryServiceFallbackFactory implements RemoteHistoryService { public class RemoteHistoryServiceFallbackFactory implements RemoteHistoryService {

View File

@ -83,18 +83,51 @@
<artifactId>dragon-common-swagger</artifactId> <artifactId>dragon-common-swagger</artifactId>
</dependency> </dependency>
<!-- Mybatis Plus-->
<dependency> <dependency>
<groupId>com.dragon</groupId> <groupId>com.baomidou</groupId>
<artifactId>dragon-file-remote</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.dragon</groupId> <groupId>com.github.yulichang</groupId>
<artifactId>dragon-system-common</artifactId> <artifactId>mybatis-plus-join</artifactId>
<version>1.2.4</version>
</dependency> </dependency>
</dependencies> </dependencies>
<distributionManagement>
<repository>
<id>dragon-release</id>
<name>dragon-releases</name>
<url>http://10.100.1.7:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>dragon-public</id>
<name>dragon-maven</name>
<url>http://10.100.1.7:8081/repository/maven-public/</url>
</repository>
<repository>
<id>aliyun-public</id>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
<build> <build>
<finalName>${project.artifactId}</finalName> <finalName>${project.artifactId}</finalName>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
@ -106,6 +139,8 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<!--当deploy时候忽略此model-->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId> <artifactId>maven-deploy-plugin</artifactId>
@ -113,7 +148,7 @@
<skip>true</skip> <skip>true</skip>
</configuration> </configuration>
</plugin> </plugin>
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>16</source><target>16</target></configuration></plugin>
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@ -6,11 +6,9 @@ import com.dragon.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
/** /**
* @author * @author
* @version 1.0
* @description:
* @date 2023/11/19 18:59
*/ */
@EnableCustomConfig @EnableCustomConfig
@EnableCustomSwagger2 @EnableCustomSwagger2

View File

@ -0,0 +1,26 @@
package com.dragon.vehicle.history.server.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author
*/
@Configuration
public class MybatisPlusConfig {
/**
*
*/
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 指定数据库方言为 MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}

View File

@ -0,0 +1,62 @@
package com.dragon.vehicle.history.server.controller;
import com.dragon.common.core.domain.Result;
import com.dragon.vehicle.history.common.domain.Car;
import com.dragon.vehicle.history.common.domain.CarType;
import com.dragon.vehicle.history.common.domain.req.ReqCar;
import com.dragon.vehicle.history.common.domain.res.ResCar;
import com.dragon.vehicle.history.server.service.CarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author Wenkang Tang
* @date 2023/11/21 19:18
* @description
*/
@RestController
@RequestMapping("/car")
public class CarController {
@Autowired
private CarService carService;
/**
*
* @param reqCar
* @return
*/
@PostMapping("/listCar")
public Result<List<ResCar>> listCar(@RequestBody ReqCar reqCar){
return carService.listCar(reqCar);
}
/**
*
* @return
*/
@GetMapping("/listCarType")
public Result<List<CarType>> listCarType(){
return carService.listCarType();
}
/**
*
* @return
*/
@PostMapping("/updateCar")
public Result updateCar(@RequestBody Car car){
return carService.updateCar(car);
}
/**
*
* @param carVin
* @return
*/
@PostMapping("/deleteCar")
public Result deleteCar(@RequestParam String carVin){
return carService.deleteCar(carVin);
}
}

View File

@ -0,0 +1,23 @@
package com.dragon.vehicle.history.server.controller;
import com.dragon.common.core.domain.Result;
import com.dragon.vehicle.history.common.domain.VehicleOperation;
import com.dragon.vehicle.history.server.service.HistoricalTrackService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author Wenkang Tang
* @date 2023/11/19 19:54
*/
@RestController
@RequestMapping("/history")
public class HistoricalTrackController {
@Autowired
private HistoricalTrackService historicalTrackService;
}

View File

@ -0,0 +1,15 @@
package com.dragon.vehicle.history.server.mapper;
import com.dragon.vehicle.history.common.domain.Car;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Wenkang Tang
* @date 2023/11/21 19:29
* @description
*/
@Mapper
public interface CarMapper extends MPJBaseMapper<Car> {
}

View File

@ -0,0 +1,15 @@
package com.dragon.vehicle.history.server.mapper;
import com.dragon.vehicle.history.common.domain.CarType;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Wenkang Tang
* @date 2023/11/22 9:24
* @description
*/
@Mapper
public interface CarTypeMapper extends MPJBaseMapper<CarType> {
}

View File

@ -0,0 +1,14 @@
package com.dragon.vehicle.history.server.mapper;
import com.dragon.vehicle.history.common.domain.VehicleOperation;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Wenkang Tang
* @date 2023/11/19 19:55
*/
@Mapper
public interface HistoricalTrackMapper extends MPJBaseMapper<VehicleOperation> {
}

View File

@ -0,0 +1,42 @@
package com.dragon.vehicle.history.server.service;
import com.dragon.common.core.domain.Result;
import com.dragon.vehicle.history.common.domain.Car;
import com.dragon.vehicle.history.common.domain.CarType;
import com.dragon.vehicle.history.common.domain.req.ReqCar;
import com.dragon.vehicle.history.common.domain.res.ResCar;
import java.util.List;
/**
* @author Wenkang Tang
* @date 2023/11/21 19:27
* @description
*/
public interface CarService {
/**
*
* @param reqCar
* @return
*/
Result<List<ResCar>> listCar(ReqCar reqCar);
/**
*
* @return
*/
Result<List<CarType>> listCarType();
/**
*
* @return
*/
Result updateCar(Car car);
/**
*
* @param carVin
* @return
*/
Result deleteCar(String carVin);
}

View File

@ -0,0 +1,8 @@
package com.dragon.vehicle.history.server.service;
/**
* @author Wenkang Tang
* @date 2023/11/19 19:55
*/
public interface HistoricalTrackService {
}

View File

@ -0,0 +1,89 @@
package com.dragon.vehicle.history.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dragon.common.core.domain.Result;
import com.dragon.vehicle.history.common.domain.Car;
import com.dragon.vehicle.history.common.domain.CarType;
import com.dragon.vehicle.history.common.domain.Fence;
import com.dragon.vehicle.history.common.domain.req.ReqCar;
import com.dragon.vehicle.history.common.domain.res.ResCar;
import com.dragon.vehicle.history.server.mapper.CarMapper;
import com.dragon.vehicle.history.server.mapper.CarTypeMapper;
import com.dragon.vehicle.history.server.service.CarService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author Wenkang Tang
* @date 2023/11/21 19:29
* @description
*/
@Service
public class CarServiceImpl implements CarService {
@Autowired
private CarMapper carMapper;
@Autowired
private CarTypeMapper carTypeMapper;
/**
*
* @param reqCar
* @return
*/
@Override
public Result<List<ResCar>> listCar(ReqCar reqCar) {
Page<ResCar> resCarPage = new Page<>(reqCar.getPageNum(), reqCar.getPageSize());
List<ResCar> resCars = carMapper.selectJoinPage(resCarPage, ResCar.class, new MPJLambdaWrapper<Car>()
.selectAll(Car.class)
.select(CarType::getCarTypeName)
.select(Fence::getFenceName)
.leftJoin(CarType.class, CarType::getCarTypeId, Car::getCarTypeId)
.leftJoin(Fence.class,Fence::getFenceId,Car::getFenceId)
.like(reqCar.getCarName() != null, Car::getCarName, reqCar.getCarName())
.like(reqCar.getCarBrand() != null, Car::getCarBrand, reqCar.getCarBrand())
.like(reqCar.getCarVin() != null, Car::getCarVin, reqCar.getCarVin())
.eq(reqCar.getCarStatus() != null, Car::getCarStatus, reqCar.getCarStatus())
.eq(reqCar.getCarTypeId() != null, CarType::getCarTypeId, reqCar.getCarTypeId())
.eq(reqCar.getFenceId() != null, Car::getFenceId, reqCar.getFenceId())).getRecords();
return Result.success(resCars);
}
/**
*
* @return
*/
@Override
public Result<List<CarType>> listCarType() {
MPJLambdaWrapper<CarType> carTypeMPJLambdaWrapper = new MPJLambdaWrapper<CarType>().selectAll(CarType.class);
return Result.success(carTypeMapper.selectList(carTypeMPJLambdaWrapper));
}
/**
*
*
* @param car
* @return
*/
@Override
public Result updateCar(Car car) {
MPJLambdaWrapper<Car> carMPJLambdaWrapper = new MPJLambdaWrapper<>();
MPJLambdaWrapper<Car> lambdaWrapper = carMPJLambdaWrapper.eq(Car::getCarVin, car.getCarVin());
carMapper.update(car,lambdaWrapper);
return Result.success();
}
/**
*
* @param carVin
* @return
*/
@Override
public Result deleteCar(String carVin) {
carMapper.deleteById(carVin);
return Result.success();
}
}

View File

@ -0,0 +1,16 @@
package com.dragon.vehicle.history.server.service.impl;
import com.dragon.vehicle.history.server.mapper.HistoricalTrackMapper;
import com.dragon.vehicle.history.server.service.HistoricalTrackService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author Wenkang Tang
* @date 2023/11/19 19:55
*/
@Service
public class HistoricalTrackServiceImpl implements HistoricalTrackService {
@Autowired
private HistoricalTrackMapper historicalTrackMapper;
}

View File

@ -26,3 +26,8 @@ spring:
mybatis-plus: mybatis-plus:
configuration: configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: flag # 全局逻辑删除的实体字段名
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

View File

@ -0,0 +1,5 @@
<?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.dragon.vehicle.history.server.mapper.CarMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?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.dragon.vehicle.history.server.mapper.CarTypeMapper">
</mapper>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dragon.vehicle.history.server.mapper.HistoryMapper"> <mapper namespace="com.dragon.vehicle.history.server.mapper.HistoricalTrackMapper">
</mapper> </mapper>