小车上线

master
xiaohuang 2024-06-24 19:04:24 +08:00
parent 5b56363dde
commit b01d8e8112
46 changed files with 1320 additions and 267 deletions

View File

@ -9,6 +9,7 @@ import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* BingRui.Hou
@ -21,6 +22,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@EnableCustomConfig
@EnableCustomSwagger2
@EnableMyFeignClients
@EnableScheduling
@SpringBootApplication(exclude = {DynamicDataSourceAutoConfiguration.class, DataSourceAutoConfiguration.class })
public class MuYuVehicleApplication {
public static void main (String[] args) {

View File

@ -0,0 +1,104 @@
package com.muyu.vehicle.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.vehicle.domain.FaultCode;
import com.muyu.vehicle.domain.req.FaultCodeEditReq;
import com.muyu.vehicle.domain.req.FaultCodeQueryReq;
import com.muyu.vehicle.domain.req.FaultCodeSaveReq;
import com.muyu.vehicle.service.FaultCodeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Controller
*
* @author chx
* @date 2024-06-20
*/
@Api(tags = "车辆故障码")
@RestController
@RequestMapping("/faultCode")
public class FaultCodeController extends BaseController {
@Autowired
private FaultCodeService faultCodeService;
/**
*
*/
@ApiOperation("获取车辆故障码列表")
// @RequiresPermissions("client:faultCode:list")
@GetMapping("/list")
public Result<TableDataInfo<FaultCode>> list(FaultCodeQueryReq faultCodeQueryReq) {
startPage();
List<FaultCode> list = faultCodeService.list(FaultCode.queryBuild(faultCodeQueryReq));
return getDataTable(list);
}
/**
*
*/
@ApiOperation("导出车辆故障码列表")
// @RequiresPermissions("client:faultCode:export")
@Log(title = "车辆故障码", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, FaultCode faultCode) {
List<FaultCode> list = faultCodeService.list(faultCode);
ExcelUtil<FaultCode> util = new ExcelUtil<FaultCode>(FaultCode.class);
util.exportExcel(response, list, "车辆故障码数据");
}
/**
*
*/
@ApiOperation("获取车辆故障码详细信息")
// @RequiresPermissions("client:faultCode:query")
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result<FaultCode> getInfo(@PathVariable("id") Long id) {
return Result.success(faultCodeService.getById(id));
}
/**
*
*/
// @RequiresPermissions("client:faultCode:add")
@Log(title = "车辆故障码", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("新增车辆故障码")
public Result<String> add(@RequestBody FaultCodeSaveReq faultCodeSaveReq) {
return toAjax(faultCodeService.save(FaultCode.saveBuild(faultCodeSaveReq)));
}
/**
*
*/
// @RequiresPermissions("client:faultCode:edit")
@Log(title = "车辆故障码", businessType = BusinessType.UPDATE)
@PutMapping("/{id}")
@ApiOperation("修改车辆故障码")
public Result<String> edit(@PathVariable Long id, @RequestBody FaultCodeEditReq faultCodeEditReq) {
return toAjax(faultCodeService.updateById(FaultCode.editBuild(id,faultCodeEditReq)));
}
/**
*
*/
// @RequiresPermissions("client:faultCode:remove")
@Log(title = "车辆故障码", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@ApiOperation("删除车辆故障码")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4")
public Result<String> remove(@PathVariable List<Long> ids) {
return toAjax(faultCodeService.removeBatchByIds(ids));
}
}

View File

@ -0,0 +1,115 @@
package com.muyu.vehicle.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.vehicle.domain.FaultRecord;
import com.muyu.vehicle.domain.req.FaultRecordEditReq;
import com.muyu.vehicle.domain.req.FaultRecordQueryReq;
import com.muyu.vehicle.domain.req.FaultRecordReqVo;
import com.muyu.vehicle.domain.req.FaultRecordSaveReq;
import com.muyu.vehicle.domain.vo.FaultRecordVo;
import com.muyu.vehicle.service.FaultRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Controller
*
* @author chx
* @date 2024-06-20
*/
@Api(tags = "故障记录")
@RestController
@RequestMapping("/faultRecord")
public class FaultRecordController extends BaseController {
@Autowired
private FaultRecordService faultRecordService;
/**
*
*/
@ApiOperation("获取故障记录列表")
// @RequiresPermissions("client:faultRecord:list")
@GetMapping("/list")
public Result<TableDataInfo<FaultRecord>> list(FaultRecordQueryReq faultRecordQueryReq) {
startPage();
List<FaultRecord> list = faultRecordService.list(FaultRecord.queryBuild(faultRecordQueryReq));
return getDataTable(list);
}
/**
*
*/
@ApiOperation("导出故障记录列表")
// @RequiresPermissions("client:faultRecord:export")
@Log(title = "故障记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, FaultRecord faultRecord) {
List<FaultRecord> list = faultRecordService.list(faultRecord);
ExcelUtil<FaultRecord> util = new ExcelUtil<FaultRecord>(FaultRecord.class);
util.exportExcel(response, list, "故障记录数据");
}
/**
*
*/
@ApiOperation("获取故障记录详细信息")
// @RequiresPermissions("client:faultRecord:query")
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result<FaultRecord> getInfo(@PathVariable("id") Long id) {
return Result.success(faultRecordService.getById(id));
}
/**
*
*/
// @RequiresPermissions("client:faultRecord:add")
@Log(title = "故障记录", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("新增故障记录")
public Result<String> add(@RequestBody FaultRecordSaveReq faultRecordSaveReq) {
return toAjax(faultRecordService.save(FaultRecord.saveBuild(faultRecordSaveReq)));
}
/**
*
*/
// @RequiresPermissions("client:faultRecord:edit")
@Log(title = "故障记录", businessType = BusinessType.UPDATE)
@PutMapping("/{id}")
@ApiOperation("修改故障记录")
public Result<String> edit(@PathVariable Long id, @RequestBody FaultRecordEditReq faultRecordEditReq) {
return toAjax(faultRecordService.updateById(FaultRecord.editBuild(id,faultRecordEditReq)));
}
/**
*
*/
// @RequiresPermissions("client:faultRecord:remove")
@Log(title = "故障记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@ApiOperation("删除故障记录")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4")
public Result<String> remove(@PathVariable List<Long> ids) {
return toAjax(faultRecordService.removeBatchByIds(ids));
}
@Log(title = "图",businessType = BusinessType.DELETE)
@PostMapping("/countList")
@ApiOperation("图展示")
public Result<List<FaultRecordVo>> countList(@RequestBody FaultRecordReqVo recordReqVo) {
return Result.success(faultRecordService.countList(recordReqVo));
}
}

View File

@ -1,28 +1,19 @@
package com.muyu.vehicle.controller;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.vehicle.domain.Fence;
import com.muyu.vehicle.service.IFenceService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**

View File

@ -1,31 +1,22 @@
package com.muyu.vehicle.controller;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.vehicle.domain.Group;
import com.muyu.vehicle.service.IGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Controller
*
* @author xiaohuang
* @author BingRui.Hou
* @date 2024-06-02
*/
@RestController

View File

@ -2,25 +2,21 @@ package com.muyu.vehicle.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.vehicle.domain.Vehicle;
import com.muyu.vehicle.service.IVehicleService;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Controller
*
* @author xiaohuang
* @author BingRui.Hou
* @date 2024-05-27
*/
@RestController

View File

@ -1,6 +1,7 @@
package com.muyu.vehicle.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.vehicle.domain.VehicleInfo;
@ -13,29 +14,27 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* VehiclelnfoController
* Controller
*
* @author xiaohuang
* Date 2024/6/18 18:35
* @author BingRui.Hou
* @date 2024-05-27
*/
@Log4j2
@RestController
@RequestMapping("/vehicleInfo")
public class VehiclelnfoController extends BaseController {
public class VehicleInfoController extends BaseController
{
@Autowired
private RedisTemplate<String,String> redisTemplate;
@GetMapping("/list/{vin}")
public Result vehicleInfoAllList(@PathVariable String vin){
if (vin.isEmpty()){
return Result.error("该车辆未上线");
if (redisTemplate.hasKey(vin)){
String lastElement = redisTemplate.opsForList().index(vin, -1);
VehicleInfo vehicleInfo = JSON.parseObject(lastElement, VehicleInfo.class);
return Result.success(vehicleInfo);
}
String lastElement = redisTemplate.opsForList().index(vin, 0);
VehicleInfo vehicleInfo = JSON.parseObject(lastElement, VehicleInfo.class);
return Result.success(vehicleInfo);
return null;
}
}

View File

@ -0,0 +1,90 @@
package com.muyu.vehicle.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.vehicle.domain.req.FaultCodeEditReq;
import com.muyu.vehicle.domain.req.FaultCodeQueryReq;
import com.muyu.vehicle.domain.req.FaultCodeSaveReq;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* fault_code
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("fault_code")
@ApiModel(value = "FaultCode", description = "车辆故障码")
public class FaultCode {
private static final long serialVersionUID = 1L;
/** 主键 */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
/** 故障码 */
@Excel(name = "故障码")
@ApiModelProperty(name = "故障码", value = "故障码")
private String faultCode;
/** 故障标签 */
@Excel(name = "故障标签")
@ApiModelProperty(name = "故障标签", value = "故障标签")
private String faultLabel;
/** 故障位 */
@Excel(name = "故障位")
@ApiModelProperty(name = "故障位", value = "故障位")
private Long faultBit;
/** 故障值 */
@Excel(name = "故障值")
@ApiModelProperty(name = "故障值", value = "故障值")
private Long faultValue;
/**
*
*/
public static FaultCode queryBuild( FaultCodeQueryReq faultCodeQueryReq){
return FaultCode.builder()
.faultCode(faultCodeQueryReq.getFaultCode())
.build();
}
/**
*
*/
public static FaultCode saveBuild(FaultCodeSaveReq faultCodeSaveReq){
return FaultCode.builder()
.faultCode(faultCodeSaveReq.getFaultCode())
.faultLabel(faultCodeSaveReq.getFaultLabel())
.faultBit(faultCodeSaveReq.getFaultBit())
.faultValue(faultCodeSaveReq.getFaultValue())
.build();
}
/**
*
*/
public static FaultCode editBuild(Long id, FaultCodeEditReq faultCodeEditReq){
return FaultCode.builder()
.id(id)
.faultCode(faultCodeEditReq.getFaultCode())
.faultLabel(faultCodeEditReq.getFaultLabel())
.faultBit(faultCodeEditReq.getFaultBit())
.faultValue(faultCodeEditReq.getFaultValue())
.build();
}
}

View File

@ -0,0 +1,110 @@
package com.muyu.vehicle.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.muyu.common.core.annotation.Excel;
import com.muyu.vehicle.domain.req.FaultRecordEditReq;
import com.muyu.vehicle.domain.req.FaultRecordQueryReq;
import com.muyu.vehicle.domain.req.FaultRecordSaveReq;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* fault_record
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("fault_record")
@ApiModel(value = "FaultRecord", description = "故障记录")
public class FaultRecord {
private static final long serialVersionUID = 1L;
/** 主键 */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
/** 故障码 */
@Excel(name = "故障码")
@ApiModelProperty(name = "故障码", value = "故障码")
private String faultCode;
/** 车辆vin */
@Excel(name = "车辆vin")
@ApiModelProperty(name = "车辆vin", value = "车辆vin")
private String vin;
/** 故障开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "故障开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(name = "故障开始时间", value = "故障开始时间")
private Date startTime;
/** 故障结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "故障结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(name = "故障结束时间", value = "故障结束时间")
private Date endTime;
/** 故障级别 */
@Excel(name = "故障级别")
@ApiModelProperty(name = "故障级别", value = "故障级别")
private String faultLevel;
/** 故障是否处理 */
@Excel(name = "故障是否处理")
@ApiModelProperty(name = "故障是否处理", value = "故障是否处理")
private String faultHandle;
/**
*
*/
public static FaultRecord queryBuild( FaultRecordQueryReq faultRecordQueryReq){
return FaultRecord.builder()
.faultCode(faultRecordQueryReq.getFaultCode())
.vin(faultRecordQueryReq.getVin())
.build();
}
/**
*
*/
public static FaultRecord saveBuild(FaultRecordSaveReq faultRecordSaveReq){
return FaultRecord.builder()
.faultCode(faultRecordSaveReq.getFaultCode())
.vin(faultRecordSaveReq.getVin())
.startTime(faultRecordSaveReq.getStartTime())
.endTime(faultRecordSaveReq.getEndTime())
.faultLevel(faultRecordSaveReq.getFaultLevel())
.faultHandle(faultRecordSaveReq.getFaultHandle())
.build();
}
/**
*
*/
public static FaultRecord editBuild(Long id, FaultRecordEditReq faultRecordEditReq){
return FaultRecord.builder()
.id(id)
.faultCode(faultRecordEditReq.getFaultCode())
.vin(faultRecordEditReq.getVin())
.startTime(faultRecordEditReq.getStartTime())
.endTime(faultRecordEditReq.getEndTime())
.faultLevel(faultRecordEditReq.getFaultLevel())
.faultHandle(faultRecordEditReq.getFaultHandle())
.build();
}
}

View File

@ -1,7 +1,6 @@
package com.muyu.vehicle.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
@ -11,8 +10,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.List;

View File

@ -1,7 +1,5 @@
package com.muyu.vehicle.domain;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.annotation.Excel;
@ -11,8 +9,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**

View File

@ -10,7 +10,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* xiaohuang
* BingRui.Hou
*
* @Description
* @ClassName Type

View File

@ -1,5 +1,6 @@
package com.muyu.vehicle.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
@ -8,8 +9,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* vehicle
@ -59,8 +58,9 @@ public class Vehicle extends BaseEntity
private Long batteryNumber;
/** 企业ID */
// @Excel(name = "企业ID")
// private Long businessId;
@Excel(name = "企业ID")
@TableField(value = "business_id")
private Long businessId;
@Excel(name="围栏组ID")
private Long groupId;

View File

@ -1,208 +1,202 @@
package com.muyu.vehicle.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import lombok.experimental.SuperBuilder;
/**
*
* @author Mobai
* @className Vehicle
* @description
* @date 2024/6/6 8:18
*
* @author YunFei.Du
* @date 9:03 2024/6/4
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class VehicleInfo {
/**
* vin
* VIN
*/
private String vin;
/**
*
*/
private Long startTime;
/**
*
*/
private BigDecimal longitude;
private String longitude;
/**
*
*/
private BigDecimal latitude;
private String latitude;
/**
*
*/
private BigDecimal speed;
private String speed;
/**
*
*
*/
private BigDecimal mileage;
private String mileage;
/**
*
*/
private BigDecimal voltage;
private String voltage;
/**
*
*/
private BigDecimal current;
private String current;
/**
*
*/
private BigDecimal resistance;
private String resistance;
private String gear;
/**
*
*/
private String gear;
/**
*
*/
private BigDecimal accelerationPedal;
private String accelerationPedal;
/**
*
*/
private BigDecimal brakePedal;
private String brakePedal;
/**
*
*/
private BigDecimal fuelConsumptionRate;
private String fuelConsumptionRate;
/**
*
*/
private BigDecimal motorControllerTemperature;
private String motorControllerTemperature;
/**
*
*/
private BigDecimal motorSpeed;
private String motorSpeed;
/**
*
*/
private BigDecimal motoTorque;
private String motorTorque;
/**
*
*/
private BigDecimal motorTemperature;
private String motorTemperature;
/**
*
*/
private BigDecimal motorVoltage;
private String motorVoltage;
/**
*
*/
private BigDecimal motorCurrent;
private String motorCurrent;
/**
* SOC
*
*/
private BigDecimal remainingBattery;
private String remainingBattery;
/**
*
*/
private BigDecimal maximumFeedbackPower;
private String maximumFeedbackPower;
/**
*
*
*/
private BigDecimal maximumDischargePower;
private String maximumDischargePower;
/**
* BMS
*/
private BigDecimal selfCheckCounter;
private String selfCheckCounter;
/**
*
*/
private BigDecimal totalBatteryCurrent;
private String totalBatteryCurrent;
/**
* V3
*/
private BigDecimal totalBatteryVoltage;
private String totalBatteryVoltage;
/**
*
*/
private BigDecimal singleBatteryMaxVoltage;
private String singleBatteryMaxVoltage;
/**
*
*
*/
private BigDecimal singleBatteryMinVoltage;
private String singleBatteryMinVoltage;
/**
*
*/
private BigDecimal singleBatteryMaxTemperature;
private String singleBatteryMaxTemperature;
/**
*
*/
private BigDecimal singleBatteryMinTemperature;
private String singleBatteryMinTemperature;
/**
*
*/
private BigDecimal availableBatteryCapacity;
private String availableBatteryCapacity;
/**
*
*/
private Integer vehicleStatus;
private String vehicleStatus;
/**
*
*/
private Integer chargingStatus;
private String chargingStatus;
/**
*
*/
private Integer operatingStatus;
private String operatingStatus;
/**
* SOC
*/
private Integer chargingEnergyStorageStatus;
private String socStatus;
/**
*
*/
private Integer driveMotorStatus;
private String chargingEnergyStorageStatus;
/**
*
*/
private String driveMotorStatus;
/**
*
*/
private Integer positionStatus;
private String positionStatus;
/**
* EAS
* EAS()
*/
private Integer easStatus;
private String easStatus;
/**
* PTC
* PTC()
*/
private Integer ptcStatus;
private String ptcStatus;
/**
* EPS
* EPS()
*/
private Integer epsStatus;
private String epsStatus;
/**
* ABS
* ABS()
*/
private Integer absStatus;
private String absStatus;
/**
* MCU
* MCU(/)
*/
private Integer mcuStatus;
private String mcuStatus;
/**
*
*/
private Integer heatingStatus;
private String heatingStatus;
/**
*
*/
private Integer batteryStatus;
private String batteryStatus;
/**
*
*/
private Integer batteryInsulationStatus;
private String batteryInsulationStatus;
/**
* DCDC
* DCDC()
*/
private Integer dcdcStatus;
private String dcdcStatus;
/**
* CHG
* CHG()
*/
private Integer chgStatus;
private String chgStatus;
}

View File

@ -0,0 +1,41 @@
package com.muyu.vehicle.domain.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* fault_code
*
* @author hbr
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "FaultCodeEditReq", description = "车辆故障码")
public class FaultCodeEditReq {
private static final long serialVersionUID = 1L;
/** 故障码 */
@ApiModelProperty(name = "故障码", value = "故障码")
private String faultCode;
/** 故障标签 */
@ApiModelProperty(name = "故障标签", value = "故障标签")
private String faultLabel;
/** 故障位 */
@ApiModelProperty(name = "故障位", value = "故障位")
private Long faultBit;
/** 故障值 */
@ApiModelProperty(name = "故障值", value = "故障值")
private Long faultValue;
}

View File

@ -0,0 +1,29 @@
package com.muyu.vehicle.domain.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* fault_code
*
* @author hbr
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "FaultCodeQueryReq", description = "车辆故障码")
public class FaultCodeQueryReq {
private static final long serialVersionUID = 1L;
/** 故障码 */
@ApiModelProperty(name = "故障码", value = "故障码")
private String faultCode;
}

View File

@ -0,0 +1,52 @@
package com.muyu.vehicle.domain.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* fault_code
*
* @author hbr
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "FaultCodeSaveReq", description = "车辆故障码")
public class FaultCodeSaveReq {
private static final long serialVersionUID = 1L;
/** 主键 */
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
/** 故障码 */
@ApiModelProperty(name = "故障码", value = "故障码")
private String faultCode;
/** 故障标签 */
@ApiModelProperty(name = "故障标签", value = "故障标签")
private String faultLabel;
/** 故障位 */
@ApiModelProperty(name = "故障位", value = "故障位")
private Long faultBit;
/** 故障值 */
@ApiModelProperty(name = "故障值", value = "故障值")
private Long faultValue;
}

View File

@ -0,0 +1,54 @@
package com.muyu.vehicle.domain.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* fault_record
*
* @author hbr
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "FaultRecordEditReq", description = "故障记录")
public class FaultRecordEditReq {
private static final long serialVersionUID = 1L;
/** 故障码 */
@ApiModelProperty(name = "故障码", value = "故障码")
private String faultCode;
/** 车辆vin */
@ApiModelProperty(name = "车辆vin", value = "车辆vin")
private String vin;
/** 故障开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "故障开始时间", value = "故障开始时间")
private Date startTime;
/** 故障结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "故障结束时间", value = "故障结束时间")
private Date endTime;
/** 故障级别 */
@ApiModelProperty(name = "故障级别", value = "故障级别")
private String faultLevel;
/** 故障是否处理 */
@ApiModelProperty(name = "故障是否处理", value = "故障是否处理")
private String faultHandle;
}

View File

@ -0,0 +1,34 @@
package com.muyu.vehicle.domain.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* fault_record
*
* @author hbr
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "FaultRecordQueryReq", description = "故障记录")
public class FaultRecordQueryReq {
private static final long serialVersionUID = 1L;
/** 故障码 */
@ApiModelProperty(name = "故障码", value = "故障码")
private String faultCode;
/** 车辆vin */
@ApiModelProperty(name = "车辆vin", value = "车辆vin")
private String vin;
}

View File

@ -0,0 +1,31 @@
package com.muyu.vehicle.domain.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* fault_record
*
* @author hbr
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class FaultRecordReqVo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date max;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date min;
}

View File

@ -0,0 +1,65 @@
package com.muyu.vehicle.domain.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* fault_record
*
* @author hbr
* @date 2024-06-20
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "FaultRecordSaveReq", description = "故障记录")
public class FaultRecordSaveReq {
private static final long serialVersionUID = 1L;
/** 主键 */
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
/** 故障码 */
@ApiModelProperty(name = "故障码", value = "故障码")
private String faultCode;
/** 车辆vin */
@ApiModelProperty(name = "车辆vin", value = "车辆vin")
private String vin;
/** 故障开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "故障开始时间", value = "故障开始时间")
private Date startTime;
/** 故障结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "故障结束时间", value = "故障结束时间")
private Date endTime;
/** 故障级别 */
@ApiModelProperty(name = "故障级别", value = "故障级别")
private String faultLevel;
/** 故障是否处理 */
@ApiModelProperty(name = "故障是否处理", value = "故障是否处理")
private String faultHandle;
}

View File

@ -0,0 +1,26 @@
package com.muyu.vehicle.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* BingRui.Hou
*
* @Description
* @ClassName FaultRecordVo
* @Date 2024/06/21 11:44
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FaultRecordVo {
private String faultCode;
private String vin;
private Integer count;
private String faultLabel;
}

View File

@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* xiaohuang
* BingRui.Hou
*
* @Description
* @ClassName Path

View File

@ -1,10 +1,9 @@
package com.muyu.vehicle.domain.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.*;
import lombok.experimental.SuperBuilder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* vehicle

View File

@ -1,11 +1,7 @@
package com.muyu.vehicle.domain.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@ -19,7 +15,7 @@ import lombok.experimental.SuperBuilder;
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class VehicleVo extends BaseEntity
public class VehicleVo
{

View File

@ -0,0 +1,56 @@
package com.muyu.vehicle.job;
import com.muyu.vehicle.datasource.config.holder.DynamicDataSourceHolder;
import com.muyu.vehicle.domain.Vehicle;
import com.muyu.vehicle.mapper.VehicleMapper;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/**
* BingRui.Hou
*
* @Description
* @ClassName ManyJob
* @Date 2024/06/20 17:34
*/
@Component
@Log4j2
public class ManyJob {
@Autowired
private RedisTemplate<String,String> redisTemplate;
@Autowired
private VehicleMapper vehicleService;
@Scheduled(cron = "*/10 * * * * ?")// 每10分钟执行一次
public void manyJob(){
DynamicDataSourceHolder.setDynamicDataSourceKey("test_00");
List<Vehicle> list = vehicleService.selectVehicleListAll(new Vehicle());
ExecutorService executor = Executors.newFixedThreadPool(list.size());
list.forEach(vehicle -> {
executor.submit(new Runnable() {
@Override
public void run() {
redisTemplate
.opsForValue()
.set(vehicle.getNumber()+"1",
String.valueOf(vehicle.getBusinessId()),
24,
TimeUnit.HOURS);
}
});
});
DynamicDataSourceHolder.removeDynamicDataSourceKey();
}
}

View File

@ -1,10 +1,16 @@
package com.muyu.vehicle.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.vehicle.domain.FaultCode;
/**
* FaultCodeMapper
* Mapper
*
* @author xiaohuang
* Date 2024/6/20 17:16
* @author chx
* @date 2024-06-20
*/
public interface FaultCodeMapper {
public interface FaultCodeMapper extends BaseMapper<FaultCode> {
}

View File

@ -1,11 +1,26 @@
package com.muyu.vehicle.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.vehicle.domain.FaultRecord;
import com.muyu.vehicle.domain.req.FaultRecordReqVo;
import com.muyu.vehicle.domain.vo.FaultRecordVo;
import java.util.List;
/**
* FaultRecordMapper
* Mapper
*
* @author xiaohuang
* Date 2024/6/20 17:17
* @author chx
* @date 2024-06-20
*/
public interface FaultRecordMapper {
public interface FaultRecordMapper extends BaseMapper<FaultRecord> {
void updateByFaultRecord(FaultRecord build);
FaultRecord getByFaultRecord(FaultRecord faultRecord);
List<FaultRecordVo> countList(FaultRecordReqVo recordReqVo);
}

View File

@ -2,7 +2,6 @@ package com.muyu.vehicle.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.vehicle.domain.Fence;
import com.muyu.vehicle.domain.Vehicle;
import java.util.List;

View File

@ -61,4 +61,6 @@ public interface VehicleMapper extends BaseMapper<Vehicle>
* @return
*/
public int deleteVehicleByIds(Long[] ids);
List<Vehicle> selectVehicleListAll(Vehicle vehicle);
}

View File

@ -1,5 +1,13 @@
package com.muyu.vehicle.rabbitmq.producer;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.muyu.common.core.utils.uuid.UUID;
import com.muyu.vehicle.datasource.config.holder.DynamicDataSourceHolder;
import com.muyu.vehicle.domain.FaultRecord;
import com.muyu.vehicle.service.FaultRecordService;
import com.rabbitmq.client.Channel;
import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.core.Message;
@ -10,86 +18,142 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Date;
/**
* VehicleProducer
*
* @author xiaohuang
* Date 2024/6/20 15:56
* @BelongsProject: Bob_Up_Like_A_Cork
* @BelongsPackage: com.bwie.sms.config
* @Author: zhangquan
* @CreateTime: 2023/7/30 20:48
*/
@Component
@Log4j2
public class VehicleProducer {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Autowired
private RedisTemplate<String,String> redisTemplate;
private FaultRecordService faultRecordService;
//调用注解添加队列名称
//调用注解 添加队列名称
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-start")})
public void smsConfigStart(String msg, Message message, Channel channel){
//获取消息的id
//获取消息的ID
String messageId = message.getMessageProperties().getMessageId();
try {
Long count = redisTemplate.opsForSet().add("messageId", messageId);
if (count==1) {
log.info("开始消费:{}", msg);
//判断车辆属于哪个企业
//选择数据源,切换数据源
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
log.info("消费成功!数据源为:{}", message);
}
} catch (IOException e) {
log.info("消费失败");
try {
channel.basicReject(message.getMessageProperties().getDeliveryTag(),false);
log.info("回退成功");
} catch (IOException ex) {
log.info("回退失败");
}
throw new RuntimeException(e);
}
}
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-ent")})
public void smsConfigEnt(String msg, Message message, Channel channel){
//获取消息的id
String messageId = message.getMessageProperties().getMessageId();
try {
//提那家消费id到redis set集合中,
Long count = redisTemplate.opsForSet().add("messageId", messageId);
//成功
if (count == 1 ) {
log.info("开始消费:{}", msg);
//确认消费
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
log.info("消费成功");
}
} catch (Exception e) {
//删除队列id
log.info("消费失败");
try {
channel.basicReject(message.getMessageProperties().getDeliveryTag(),false);
log.info("消费失败");
}catch (IOException ex){
log.info("消费异常");
Long count=null;
messageId= messageId !=null? messageId : UUID.randomUUID().toString().replaceAll("_","");
JSONObject jsonObject = JSON.parseObject(msg);
String vin = jsonObject.get("vin").toString();
if (vin.length()!=17){
messageId=0+"";
log.error("车辆vin格式不正确:{}",vin);
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}else {
count= redisTemplate.opsForSet().add("messageId", messageId);
}
if (count==1) {
log.info("开始消费!{}", msg);
FaultRecord faultRecord = new FaultRecord(){{
setVin(vin);
setFaultCode(String.valueOf(jsonObject.get("faultCode")));
setStartTime(new Date((Long) jsonObject.get("timestamp")));
}};
//判断车辆属于哪个企业
String s = redisTemplate.opsForValue().get(faultRecord.getVin()+"1");
//选择数据源,切换数据源,
DynamicDataSourceHolder.setDynamicDataSourceKey("test_"+s);
// 进行添加故障表
FaultRecord build = FaultRecord
.builder()
.faultCode(faultRecord.getFaultCode())
.vin(faultRecord.getVin())
.startTime(faultRecord.getStartTime()).build();
FaultRecord one = faultRecordService.getOne(new LambdaQueryWrapper<>() {{
eq(FaultRecord::getVin, faultRecord.getVin());
eq(FaultRecord::getFaultCode, faultRecord.getFaultCode());
isNotNull(FaultRecord::getStartTime);
isNull(FaultRecord::getEndTime);
}});
if (one!= null){
log.info("不用消费,异常已存在,待结束!数据源为:{}",message);
}else {
faultRecordService.save(build);
// 移除数据源,
DynamicDataSourceHolder.removeDynamicDataSourceKey();
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
log.info("消费成功!数据源为:{}",message);
}
}
} catch (IOException e) {
log.info("消费失败,{}",e.getMessage());
try {
//回退消息
channel.basicReject(message.getMessageProperties().getDeliveryTag(),false);
log.info("回退成功");
}catch (IOException ex){
log.info("回退失败:{}",ex.getMessage());
}
throw new RuntimeException(e);
}
}
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-end")})
public void smsConfigEnt(String msg, Message message, Channel channel){
//获取消息的ID
String messageId = message.getMessageProperties().getMessageId();
try {
Long count=null;
messageId= messageId !=null? messageId : UUID.randomUUID().toString().replaceAll("_","");
JSONObject jsonObject = JSON.parseObject(msg);
String vin = jsonObject.get("vin").toString();
if (vin.length()!=17){
messageId=0+"";
log.error("车辆vin格式不正确:{}",vin);
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}else {
count= redisTemplate.opsForSet().add("messageId", messageId);
}
//添加消息id到redis set集合中 添加成功返回1 表示未消费 添加失败返回0 表示已消费
// Long count = redisTemplate.opsForSet().add("messageId", messageId);
//添加成功 正常消费信息
if (count == 1) {
log.info("开始消费:{}",msg);
// JSONObject jsonObject = JSON.parseObject(msg);
FaultRecord faultRecord = new FaultRecord(){{
setVin(vin);
setFaultCode(String.valueOf(jsonObject.get("faultCode")));
setEndTime(new Date((long) jsonObject.get("timestamp")));
}};
//判断车辆属于哪个企业
String s = redisTemplate.opsForValue().get(faultRecord.getVin()+"1");
//选择数据源,切换数据源,
DynamicDataSourceHolder.setDynamicDataSourceKey("test_"+s);
// 进行查询故障表
FaultRecord faultRecordOne = faultRecordService.getByFaultRecord(faultRecord);
log.info("查询到的故障为:{}",faultRecordOne);
faultRecordOne.setEndTime(faultRecord.getEndTime());
// 进行修改故障表
faultRecordService.updateByFaultRecord(faultRecordOne);
// 移除数据源,
DynamicDataSourceHolder.removeDynamicDataSourceKey();
//确认消费
channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
log.info("消费成功");
}
} catch (Exception e) {
//删除队列ID
log.info("消费失败,{}",e.getMessage());
try {
//回退消息
channel.basicReject(message.getMessageProperties().getDeliveryTag(),false);
log.info("回退消息");
} catch (IOException ex) {
//回退失败
log.info("回退失败");
}
}
}
}

View File

@ -1,10 +1,23 @@
package com.muyu.vehicle.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.vehicle.domain.FaultCode;
import java.util.List;
/**
* FaultCodeService
* Service
*
* @author xiaohuang
* Date 2024/6/20 17:12
* @author chx
* @date 2024-06-20
*/
public interface FaultCodeService {
public interface FaultCodeService extends IService<FaultCode> {
/**
*
*
* @param faultCode
* @return
*/
public List<FaultCode> list(FaultCode faultCode);
}

View File

@ -1,10 +1,32 @@
package com.muyu.vehicle.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.vehicle.domain.FaultRecord;
import com.muyu.vehicle.domain.req.FaultRecordReqVo;
import com.muyu.vehicle.domain.vo.FaultRecordVo;
import java.util.List;
/**
* FaultRecordService
* Service
*
* @author xiaohuang
* Date 2024/6/20 17:12
* @author chx
* @date 2024-06-20
*/
public interface FaultRecordService {
public interface FaultRecordService extends IService<FaultRecord> {
/**
*
*
* @param faultRecord
* @return
*/
public List<FaultRecord> list(FaultRecord faultRecord);
void updateByFaultRecord(FaultRecord build);
FaultRecord getByFaultRecord(FaultRecord faultRecord);
List<FaultRecordVo> countList(FaultRecordReqVo recordReqVo);
}

View File

@ -1,10 +1,9 @@
package com.muyu.vehicle.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.vehicle.domain.Fence;
import com.muyu.vehicle.domain.Vehicle;
import java.util.List;
/**
* Service

View File

@ -2,7 +2,6 @@ package com.muyu.vehicle.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.vehicle.domain.Fence;
import com.muyu.vehicle.domain.Group;
import java.util.List;

View File

@ -0,0 +1,43 @@
package com.muyu.vehicle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.vehicle.domain.FaultCode;
import com.muyu.vehicle.mapper.FaultCodeMapper;
import com.muyu.vehicle.service.FaultCodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Service
*
* @author chx
* @date 2024-06-20
*/
@Slf4j
@Service
public class FaultCodeServiceImpl extends ServiceImpl<FaultCodeMapper, FaultCode> implements FaultCodeService {
/**
*
*
* @param faultCode
* @return
*/
@Override
public List<FaultCode> list(FaultCode faultCode) {
LambdaQueryWrapper<FaultCode> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(faultCode.getFaultCode())){
queryWrapper.eq(FaultCode::getFaultCode, faultCode.getFaultCode());
}
return list(queryWrapper);
}
}

View File

@ -1,10 +0,0 @@
package com.muyu.vehicle.service.impl;
/**
* FaultCodeServicelmpl
*
* @author xiaohuang
* Date 2024/6/20 17:13
*/
public class FaultCodeServicelmpl {
}

View File

@ -0,0 +1,70 @@
package com.muyu.vehicle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.vehicle.domain.FaultRecord;
import com.muyu.vehicle.domain.req.FaultRecordReqVo;
import com.muyu.vehicle.domain.vo.FaultRecordVo;
import com.muyu.vehicle.mapper.FaultRecordMapper;
import com.muyu.vehicle.service.FaultRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Service
*
* @author chx
* @date 2024-06-20
*/
@Slf4j
@Service
public class FaultRecordServiceImpl extends ServiceImpl<FaultRecordMapper, FaultRecord> implements FaultRecordService {
@Autowired
private FaultRecordMapper faultRecordMapper;
/**
*
*
* @param faultRecord
* @return
*/
@Override
public List<FaultRecord> list(FaultRecord faultRecord) {
LambdaQueryWrapper<FaultRecord> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(faultRecord.getFaultCode())){
queryWrapper.eq(FaultRecord::getFaultCode, faultRecord.getFaultCode());
}
if (StringUtils.isNotEmpty(faultRecord.getVin())){
queryWrapper.eq(FaultRecord::getVin, faultRecord.getVin());
}
return list(queryWrapper);
}
@Override
public void updateByFaultRecord(FaultRecord build) {
faultRecordMapper.updateByFaultRecord(build);
}
@Override
public FaultRecord getByFaultRecord(FaultRecord faultRecord) {
return faultRecordMapper.getByFaultRecord(faultRecord);
}
@Override
public List<FaultRecordVo> countList(FaultRecordReqVo recordReqVo) {
return faultRecordMapper.countList(recordReqVo);
}
}

View File

@ -1,10 +0,0 @@
package com.muyu.vehicle.service.impl;
/**
* FaultRecordServicelmpl
*
* @author xiaohuang
* Date 2024/6/20 17:15
*/
public class FaultRecordServicelmpl {
}

View File

@ -1,6 +1,5 @@
package com.muyu.vehicle.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.DateUtils;
import com.muyu.vehicle.domain.Fence;
@ -9,6 +8,8 @@ import com.muyu.vehicle.service.IFenceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Service

View File

@ -8,7 +8,6 @@ import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteFileService;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.vehicle.datasource.config.role.DynamicDataSource;
import com.muyu.vehicle.domain.Vehicle;
import com.muyu.vehicle.mapper.VehicleMapper;
import com.muyu.vehicle.service.IVehicleService;

View File

@ -0,0 +1,50 @@
<?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.muyu.vehicle.mapper.FaultRecordMapper">
<resultMap type="com.muyu.vehicle.domain.FaultRecord" id="FaultRecordResult">
<result property="id" column="id" />
<result property="faultCode" column="fault_code" />
<result property="vin" column="vin" />
<result property="startTime" column="start_time" />
<result property="endTime" column="end_time" />
<result property="faultLevel" column="fault_level" />
<result property="faultHandle" column="fault_handle" />
</resultMap>
<sql id="selectFaultRecordVo">
select id, fault_code, vin, start_time, end_time, fault_level, fault_handle from fault_record
</sql>
<update id="updateByFaultRecord">
update fault_record set end_time=#{endTime} where id=#{id}
</update>
<select id="getByFaultRecord" resultType="com.muyu.vehicle.domain.FaultRecord">
SELECT id,fault_code,vin,start_time,end_time,fault_level,fault_handle
FROM fault_record
WHERE fault_code =#{faultCode} AND vin = #{vin} AND end_time is NULL
</select>
<select id="countList" resultType="com.muyu.vehicle.domain.vo.FaultRecordVo">
SELECT
fr.vin,
fr.fault_code,
COUNT(*) AS count,
fc.fault_label
FROM
fault_record fr
LEFT JOIN fault_code fc ON fr.fault_code = fc.fault_code
<where>
<if test=" max != null ">
and #{max} >= start_time
</if>
<if test=" min != null ">
and #{min} &lt;= end_time
</if>
</where>
GROUP BY
fr.vin,
fr.fault_code,
fc.fault_label ORDER BY count
</select>
</mapper>

View File

@ -0,0 +1,18 @@
<?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.muyu.vehicle.mapper.FaultCodeMapper">
<resultMap type="com.muyu.vehicle.domain.FaultCode" id="FaultCodeResult">
<result property="id" column="id" />
<result property="faultCode" column="fault_code" />
<result property="faultLabel" column="fault_label" />
<result property="faultBit" column="fault_bit" />
<result property="faultValue" column="fault_value" />
</resultMap>
<sql id="selectFaultCodeVo">
select id, fault_code, fault_label, fault_bit, fault_value from fault_code
</sql>
</mapper>

View File

@ -1,7 +1,7 @@
<?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">
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.vehicle.mapper.FenceMapper">
<resultMap type="com.muyu.vehicle.domain.Fence" id="FenceResult">
@ -60,7 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if>
<if test="groupId != null">#{groupId},</if>
@ -75,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</trim>
</insert>
<update id="updateFence" parameterType="com.muyu.vehicle.domain.Fence">

View File

@ -1,7 +1,7 @@
<?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">
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.vehicle.mapper.GroupMapper">
<resultMap type="com.muyu.vehicle.domain.Group" id="GroupResult">
@ -40,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="groupName != null">#{groupName},</if>
<if test="remark != null">#{remark},</if>
@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</trim>
</insert>
<update id="updateGroup" parameterType="com.muyu.vehicle.domain.Group">

View File

@ -1,7 +1,7 @@
<?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">
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.vehicle.mapper.VehicleMapper">
<resultMap type="com.muyu.vehicle.domain.Vehicle" id="VehicleResult">
@ -13,7 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="battery" column="battery" />
<result property="motorNumber" column="motor_number" />
<result property="batteryNumber" column="battery_number" />
<!-- <result property="businessId" column="business_id" />-->
<!-- <result property="businessId" column="business_id" />-->
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
@ -37,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="battery != null and battery != ''"> and battery = #{battery}</if>
<if test="motorNumber != null "> and motor_number = #{motorNumber}</if>
<if test="batteryNumber != null "> and battery_number = #{batteryNumber}</if>
<!-- <if test="businessId != null "> and business_id = #{businessId}</if>-->
<!-- <if test="businessId != null "> and business_id = #{businessId}</if>-->
<if test="groupId != null "> and group_id = #{groupId}</if>
</where>
</select>
@ -46,6 +46,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectVehicleVo"/>
where id = #{id}
</select>
<select id="selectVehicleListAll" resultType="com.muyu.vehicle.domain.Vehicle">
select * from vehicle
</select>
<insert id="insertVehicle" parameterType="com.muyu.vehicle.domain.Vehicle">
insert into vehicle
@ -58,14 +61,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="battery != null">battery,</if>
<if test="motorNumber != null">motor_number,</if>
<if test="batteryNumber != null">battery_number,</if>
<!-- <if test="businessId != null">business_id,</if>-->
<!-- <if test="businessId != null">business_id,</if>-->
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="groupId != null">group_id,</if>
</trim>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="number != null">#{number},</if>
@ -75,14 +78,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="battery != null">#{battery},</if>
<if test="motorNumber != null">#{motorNumber},</if>
<if test="batteryNumber != null">#{batteryNumber},</if>
<!-- <if test="businessId != null">#{businessId},</if>-->
<!-- <if test="businessId != null">#{businessId},</if>-->
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="groupId != null">#{groupId},</if>
</trim>
</trim>
</insert>
<update id="updateVehicle" parameterType="com.muyu.vehicle.domain.Vehicle">
@ -95,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="battery != null">battery = #{battery},</if>
<if test="motorNumber != null">motor_number = #{motorNumber},</if>
<if test="batteryNumber != null">battery_number = #{batteryNumber},</if>
<!-- <if test="businessId != null">business_id = #{businessId},</if>-->
<!-- <if test="businessId != null">business_id = #{businessId},</if>-->
<if test="remark != null">remark = #{remark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>