From 8ec657dd1a87bb0f923d64fa64032acb69a637ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=86=99=E6=9C=9D?= <13694051+wangxizhao123@user.noreply.gitee.com> Date: Wed, 26 Jun 2024 21:43:58 +0800 Subject: [PATCH] =?UTF-8?q?fast()=E6=8C=87=E6=A0=87=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=EF=BC=8C=E6=8A=A5=E6=96=87=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/service/TokenService.java | 2 + .../business/common/dev/DataFormatDev.java | 42 ++++ .../java/com/business/common/domain/Car.java | 42 ++-- .../business/common/domain/DataFormat.java | 32 +++ .../common/domain/MessageParsingUtil.java | 183 ++++++++++++++++++ .../business/common/domain/VehicleInfo.java | 16 +- .../business/common/domain/event/Length.java | 22 +++ .../business/common/domain/event/Radius.java | 21 ++ .../business/common/domain/event/Window.java | 44 +++++ .../muyu-business-server/pom.xml | 5 + .../com/muyu/goods/Domain/WindowDonain.java | 35 ++++ .../goods/MuyuGoodsBusinessApplication.java | 3 +- .../goods/controller/ForewarnController.java | 51 +++++ .../muyu/goods/event/consumer/Consumer.java | 21 ++ .../goods/event/consumer/WindowListener.java | 18 ++ .../goods/event/producer/CouponService.java | 16 ++ .../goods/event/producer/EmailService.java | 18 ++ .../goods/event/producer/UserService.java | 25 +++ .../com/muyu/goods/mapper/ForewarnMapper.java | 20 ++ .../muyu/goods/service/IForewarnService.java | 37 ++++ .../goods/service/impl/CarServiceImpl.java | 5 - .../goods/service/impl/ForewarnService.java | 103 ++++++++++ .../muyu/goods/service/impl/MapService.java | 2 +- .../main/resources/mapper/rule/CarMapper.xml | 10 +- .../resources/mapper/rule/ForewarnMapper.xml | 64 ++++++ 25 files changed, 786 insertions(+), 51 deletions(-) create mode 100644 muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/dev/DataFormatDev.java create mode 100644 muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/DataFormat.java create mode 100644 muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/MessageParsingUtil.java create mode 100644 muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Length.java create mode 100644 muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Radius.java create mode 100644 muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Window.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/Domain/WindowDonain.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/controller/ForewarnController.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/consumer/Consumer.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/consumer/WindowListener.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/CouponService.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/EmailService.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/UserService.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/mapper/ForewarnMapper.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/IForewarnService.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/ForewarnService.java create mode 100644 muyu-modules/muyu-business/muyu-business-server/src/main/resources/mapper/rule/ForewarnMapper.xml diff --git a/muyu-common/muyu-common-security/src/main/java/com/muyu/common/security/service/TokenService.java b/muyu-common/muyu-common-security/src/main/java/com/muyu/common/security/service/TokenService.java index 8b734f6..8ea059d 100644 --- a/muyu-common/muyu-common-security/src/main/java/com/muyu/common/security/service/TokenService.java +++ b/muyu-common/muyu-common-security/src/main/java/com/muyu/common/security/service/TokenService.java @@ -44,10 +44,12 @@ public class TokenService { String token = IdUtils.fastUUID(); Long userId = loginUser.getSysUser().getUserId(); String userName = loginUser.getSysUser().getUserName(); + Long firm = loginUser.getSysUser().getFirm(); loginUser.setToken(token); loginUser.setUserId(userId); loginUser.setUsername(userName); loginUser.setIpaddr(IpUtils.getIpAddr()); + loginUser.setFirm(firm); refreshToken(loginUser); // Jwt存储信息 diff --git a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/dev/DataFormatDev.java b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/dev/DataFormatDev.java new file mode 100644 index 0000000..2656953 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/dev/DataFormatDev.java @@ -0,0 +1,42 @@ +package com.business.common.dev; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 报文数据格式 + * @ClassName DataFormat + * @Author GuanTieLin + * @Date 2024/6/26 14:15 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DataFormatDev { + /** + * 主要 + */ + private String vin; + /** + * 数据编码 + */ + private String dataCode; + + /** + * 数据标签 + */ + private String label; + + /** + * 数据起始位置 + */ + private Integer start; + + /** + * 数据结束位置 + */ + private Integer end; +} diff --git a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/Car.java b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/Car.java index b0f2275..adb9c2b 100644 --- a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/Car.java +++ b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/Car.java @@ -38,10 +38,6 @@ public class Car extends BaseEntity @Excel(name = "生产年份") private Long manufactureYear; - /** 车身类型 */ - @Excel(name = "车身类型") - private String bodyType; - /** 车辆颜色 */ @Excel(name = "车辆颜色") private String color; @@ -62,10 +58,6 @@ public class Car extends BaseEntity @Excel(name = "驱动类型") private String driveType; - /** 行驶里程 */ - @Excel(name = "行驶里程") - private Long mileage; - /** 注册日期 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "注册日期", width = 30, dateFormat = "yyyy-MM-dd") @@ -79,6 +71,12 @@ public class Car extends BaseEntity @Excel(name = "所有者") private Long ownerId; + + @Excel(name = "是否报文") + private String message; + + + public void setCarId(Long carId) { this.carId = carId; @@ -124,15 +122,7 @@ public class Car extends BaseEntity { return manufactureYear; } - public void setBodyType(String bodyType) - { - this.bodyType = bodyType; - } - public String getBodyType() - { - return bodyType; - } public void setColor(String color) { this.color = color; @@ -178,15 +168,8 @@ public class Car extends BaseEntity { return driveType; } - public void setMileage(Long mileage) - { - this.mileage = mileage; - } - public Long getMileage() - { - return mileage; - } + public void setRegistrationDate(Date registrationDate) { this.registrationDate = registrationDate; @@ -215,6 +198,14 @@ public class Car extends BaseEntity return ownerId; } + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -223,16 +214,15 @@ public class Car extends BaseEntity .append("brand", getBrand()) .append("model", getModel()) .append("manufactureYear", getManufactureYear()) - .append("bodyType", getBodyType()) .append("color", getColor()) .append("engineCapacity", getEngineCapacity()) .append("fuelType", getFuelType()) .append("transmission", getTransmission()) .append("driveType", getDriveType()) - .append("mileage", getMileage()) .append("registrationDate", getRegistrationDate()) .append("registrationNumber", getRegistrationNumber()) .append("ownerId", getOwnerId()) + .append("message",getMessage()) .toString(); } } diff --git a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/DataFormat.java b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/DataFormat.java new file mode 100644 index 0000000..801dc95 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/DataFormat.java @@ -0,0 +1,32 @@ +package com.business.common.domain; + +import lombok.Data; + +/** + * 报文数据格式 + * @ClassName DataFormat + * @Author GuanTieLin + * @Date 2024/6/26 14:15 + */ +@Data +public class DataFormat { + /** + * 数据编码 + */ + private String dataCode; + + /** + * 数据标签 + */ + private String label; + + /** + * 数据起始位置 + */ + private Integer start; + + /** + * 数据结束位置 + */ + private Integer end; +} diff --git a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/MessageParsingUtil.java b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/MessageParsingUtil.java new file mode 100644 index 0000000..3f9e5e1 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/MessageParsingUtil.java @@ -0,0 +1,183 @@ +//package com.business.common.domain; +// +//import com.gtl.protocolParsing.domain.VehicleInfo; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +//import java.util.Arrays; +//import java.util.HashMap; +//import java.util.Map; +// +///** +// * 报文解析工具 +// * @ClassName MessageParsingUtils +// * @Author GuanTieLin +// * @Date 2024/5/30 13:47 +// */ +//@Component +//public class MessageParsingUtil { +// +// @Autowired +// private LocalCacheUtils localCacheUtils; +// +// public static Map newParsing(String msg){ +// HashMap map = new HashMap<>(); +// String[] part = msg.split(" "); +// +// return map; +// } +// +// public static VehicleInfo parsing(String msg){ +// String[] part = msg.split(" "); +// //下标1-17是vin +// String vin = ConversionUtil.hexStringToString(splicing(part,1,18)); +// //下标18-27是时间 +// String time = ConversionUtil.hexStringToString(splicing(part,18,28)); +// //下标31-40是经度 +// String longitude = ConversionUtil.hexStringToString(splicing(part,31,41)); +// //下标41-50是纬度 +// String latitude = ConversionUtil.hexStringToString(splicing(part,41,51)); +// //下标52-57是车速 +// String speed = ConversionUtil.hexStringToString(splicing(part,52,58)); +// //下标58-68是总里程 +// String totalMileage = ConversionUtil.hexStringToString(splicing(part,58,69)); +// //下标69-75是总电压 +// String totalVoltage = ConversionUtil.hexStringToString(splicing(part,69,75)); +// //下标75-79是总电流 +// String totalCurrent = ConversionUtil.hexStringToString(splicing(part,75,80)); +// //下标80-87是绝缘电阻 +// String insulationResistance = ConversionUtil.hexStringToString(splicing(part,80,89)); +// //下标89是档位 +// String gears = ConversionUtil.hexStringToString(part[89]); +// //下标90-91是加速踏板行程值 +// String acceleratorPedal = ConversionUtil.hexStringToString(splicing(part,90,92)); +// //下标92-93是制动踏板行程值 +// String brakePedal = ConversionUtil.hexStringToString(splicing(part,92,94)); +// //下标94-98是燃料消耗率 +// String fuelConsumptionRate = ConversionUtil.hexStringToString(splicing(part,94,99)); +// //下标99-104是电机控制器温度 +// String MotorControllerTemperature = ConversionUtil.hexStringToString(splicing(part,99,105)); +// //下标104-109是电机转速 +// String motorSpeed = ConversionUtil.hexStringToString(splicing(part,105,110)); +// //下标110-113是电机转矩 +// String motorTorque = ConversionUtil.hexStringToString(splicing(part,110,114)); +// //下标114-119是电机温度 +// String motorTemperature = ConversionUtil.hexStringToString(splicing(part,114,120)); +// //下标120-124是电机电压 +// String motorVoltage = ConversionUtil.hexStringToString(splicing(part,120,125)); +// //下标125-132是电机电流 +// String motorCurrent = ConversionUtil.hexStringToString(splicing(part,125,133)); +// //下标133-138是动力电池剩余电量SOC +// String remainingPower = ConversionUtil.hexStringToString(splicing(part,133,139)); +// //下标139-144是当前状态允许的最大反馈功率 +// String maximumFeedbackPower = ConversionUtil.hexStringToString(splicing(part,139,145)); +// //下标145-150是当前状态允许最大放电功率 +// String maximumDischargePower = ConversionUtil.hexStringToString(splicing(part,145,151)); +// //下标151-152是BMS自检计数器 +// String selfTestCounter = ConversionUtil.hexStringToString(splicing(part,151,153)); +// //下标153-157是动力电池充放电电流 +// String batteryChargeOrDischargeCurrent = ConversionUtil.hexStringToString(splicing(part,153,158)); +// //下标158-163是动力电池负载端总电压V3 +// String totalVoltageV3 = ConversionUtil.hexStringToString(splicing(part,158,164)); +// //下标164-167是单次最大电压 +// String maximumVoltage = ConversionUtil.hexStringToString(splicing(part,164,168)); +// //下标168-171是单体电池最低电压 +// String minimumBatteryVoltage = ConversionUtil.hexStringToString(splicing(part,168,172)); +// //下标172-177是单体电池最高温度 +// String maximumBatteryTemperature = ConversionUtil.hexStringToString(splicing(part,172,178)); +// //下标178-183是单体电池最低温度 +// String minimumBatteryTemperature = ConversionUtil.hexStringToString(splicing(part,178,184)); +// //下标184-189是动力电池可用容量 +// String usableBatteryCapacity = ConversionUtil.hexStringToString(splicing(part,184,190)); +// //下标190是车辆状态 +// String vehicleStatus = ConversionUtil.hexStringToString(part[190]); +// //下标191是充电状态 +// String chargeStatus = ConversionUtil.hexStringToString(part[191]); +// //下标192是运行状态 +// String operationalStatus = ConversionUtil.hexStringToString(part[192]); +// //下标193是SOC +// String soc = ConversionUtil.hexStringToString(part[193]); +// //下标194是可充电储能装置工作状态 +// String energyStorageDeviceWorkingStatus = ConversionUtil.hexStringToString(part[194]); +// //下标195是驱动电机状态 +// String driveMotorStatus = ConversionUtil.hexStringToString(part[195]); +// //下标196是定位是否有效 +// String positioningIsOrNotEffective = ConversionUtil.hexStringToString(part[196]); +// //下标197是EAS +// String eas = ConversionUtil.hexStringToString(part[197]); +// //下标198是PTC +// String ptc = ConversionUtil.hexStringToString(part[198]); +// //下标199是EPS +// String eps = ConversionUtil.hexStringToString(part[199]); +// //下标200是ABS +// String abs = ConversionUtil.hexStringToString(part[200]); +// //下标201是MCU +// String mcu = ConversionUtil.hexStringToString(part[201]); +// //下标202是动力电池加热状态 +// String batteryHeatingStatus = ConversionUtil.hexStringToString(part[202]); +// //下标203是动力电池当前状态 +// String batteryCurrentStatus = ConversionUtil.hexStringToString(part[203]); +// //下标204是动力电池保温状态 +// String batteryInsulationStatus = ConversionUtil.hexStringToString(part[204]); +// //下标205是DCDC +// String dcdc = ConversionUtil.hexStringToString(part[205]); +// //下标206是CHG +// String chg = ConversionUtil.hexStringToString(part[206]); +// //下标207是校验位 +// String checkDigit = ConversionUtil.hexStringToString(part[207]); +// return VehicleInfo.builder() +// .vin(vin) +// .time(time) +// .longitude(longitude) +// .latitude(latitude) +// .speed(speed) +// .totalMileage(totalMileage) +// .totalVoltage(totalVoltage) +// .totalCurrent(totalCurrent) +// .insulationResistance(insulationResistance) +// .gears(gears) +// .acceleratorPedal(acceleratorPedal) +// .brakePedal(brakePedal) +// .fuelConsumptionRate(fuelConsumptionRate) +// .MotorControllerTemperature(MotorControllerTemperature) +// .motorSpeed(motorSpeed) +// .motorTorque(motorTorque) +// .motorTemperature(motorTemperature) +// .motorVoltage(motorVoltage) +// .motorCurrent(motorCurrent) +// .remainingPower(remainingPower) +// .maximumFeedbackPower(maximumFeedbackPower) +// .maximumDischargePower(maximumDischargePower) +// .selfTestCounter(selfTestCounter) +// .batteryChargeOrDischargeCurrent(batteryChargeOrDischargeCurrent) +// .totalVoltageV3(totalVoltageV3) +// .maximumVoltage(maximumVoltage) +// .minimumBatteryVoltage(minimumBatteryVoltage) +// .maximumBatteryTemperature(maximumBatteryTemperature) +// .minimumBatteryTemperature(minimumBatteryTemperature) +// .usableBatteryCapacity(usableBatteryCapacity) +// .vehicleStatus(vehicleStatus) +// .chargeStatus(chargeStatus) +// .operationalStatus(operationalStatus) +// .soc(soc) +// .energyStorageDeviceWorkingStatus(energyStorageDeviceWorkingStatus) +// .driveMotorStatus(driveMotorStatus) +// .positioningIsOrNotEffective(positioningIsOrNotEffective) +// .eas(eas) +// .ptc(ptc) +// .eps(eps) +// .abs(abs) +// .mcu(mcu) +// .batteryHeatingStatus(batteryHeatingStatus) +// .batteryCurrentStatus(batteryCurrentStatus) +// .batteryInsulationStatus(batteryInsulationStatus) +// .dcdc(dcdc) +// .chg(chg) +// .checkDigit(checkDigit) +// .build(); +// } +// +// public static String splicing(String[] part,int start,int end){ +// return String.join("", Arrays.stream(Arrays.copyOfRange(part, start, end)).toList()); +// } +// +//} diff --git a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/VehicleInfo.java b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/VehicleInfo.java index b84c85a..35239fb 100644 --- a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/VehicleInfo.java +++ b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/VehicleInfo.java @@ -17,27 +17,27 @@ import lombok.experimental.SuperBuilder; @AllArgsConstructor public class VehicleInfo { /** - * vin + * vin1 */ private String vin; /** - * 时间 + * 时间1 */ private String time; /** - * 经度 + * 经度1 */ private String longitude; /** - * 纬度 + * 纬度1 */ private String latitude; /** - * 车速 + * 车速1 */ private String speed; /** - * 总里程 + * 总里程1 */ private String totalMileage; /** @@ -53,7 +53,7 @@ public class VehicleInfo { */ private String insulationResistance; /** - * 档位 + * 档位1 */ private String gears; /** @@ -137,7 +137,7 @@ public class VehicleInfo { */ private String usableBatteryCapacity; /** - * 车辆状态 + * 车辆状态3 */ private String vehicleStatus; /** diff --git a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Length.java b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Length.java new file mode 100644 index 0000000..a8aae1f --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Length.java @@ -0,0 +1,22 @@ +package com.business.common.domain.event; + +import jdk.jfr.BooleanFlag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Length { + /** + * 长度定义 + */ + private String lengthName; + /** + * 长度 + */ + private Double length; +} diff --git a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Radius.java b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Radius.java new file mode 100644 index 0000000..4f8c03c --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Radius.java @@ -0,0 +1,21 @@ +package com.business.common.domain.event; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Radius { + /** + * 范围定义 + */ + private String radiusName; + /** + * 范围 + */ + private Integer radius; +} diff --git a/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Window.java b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Window.java new file mode 100644 index 0000000..296e039 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-common/src/main/java/com/business/common/domain/event/Window.java @@ -0,0 +1,44 @@ +package com.business.common.domain.event; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Window { + /** + * 主键 + */ + private Long id; + /** + * 车辆唯一标识 + */ + private String vin; + /** + * 指向目标 + */ + private String point; + /** + * 标准值 + */ + private Integer standard; + /** + * 启动时间 + */ + private Date windowStartTime; + /** + * 结束时间 + */ + private Date windowEndTime; + /** + * 结果 + */ + private String result; + +} diff --git a/muyu-modules/muyu-business/muyu-business-server/pom.xml b/muyu-modules/muyu-business/muyu-business-server/pom.xml index d86cc70..0e74ab8 100644 --- a/muyu-modules/muyu-business/muyu-business-server/pom.xml +++ b/muyu-modules/muyu-business/muyu-business-server/pom.xml @@ -119,6 +119,11 @@ forest-spring-boot-starter 1.5.36 + + + org.springframework.boot + spring-boot-starter-web + diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/Domain/WindowDonain.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/Domain/WindowDonain.java new file mode 100644 index 0000000..74821b8 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/Domain/WindowDonain.java @@ -0,0 +1,35 @@ +package com.muyu.goods.Domain; + +import jdk.jfr.BooleanFlag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WindowDonain { + /** + * 车辆标识 + */ + private String vin; + /** + * 车速 + */ + private String speed; + /** + * 滑窗范围 + */ + private Integer windowRadius; + /** + * 滑窗频率 + */ + private Double windowDistance; + /** + * 滑窗标准 + */ + private Integer windowStandard; + +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/MuyuGoodsBusinessApplication.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/MuyuGoodsBusinessApplication.java index 70451cd..d8783e4 100644 --- a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/MuyuGoodsBusinessApplication.java +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/MuyuGoodsBusinessApplication.java @@ -12,8 +12,7 @@ import org.springframework.scheduling.annotation.EnableAsync; @EnableMyFeignClients @EnableCustomConfig @EnableAsync -public class -MuyuGoodsBusinessApplication { +public class MuyuGoodsBusinessApplication { public static void main(String[] args) { SpringApplication.run(MuyuGoodsBusinessApplication.class,args); } diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/controller/ForewarnController.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/controller/ForewarnController.java new file mode 100644 index 0000000..9ec924e --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/controller/ForewarnController.java @@ -0,0 +1,51 @@ +package com.muyu.goods.controller; + +import com.business.common.dev.DataFormatDev; +import com.business.common.domain.DataFormat; +import com.business.common.domain.event.Window; +import com.dtflys.forest.annotation.Post; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.goods.Domain.WindowDonain; +import com.muyu.goods.event.consumer.WindowListener; +import com.muyu.goods.service.IForewarnService; +import org.apache.kafka.common.protocol.types.Field; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("forewarn") +public class ForewarnController extends BaseController { + @Autowired + private IForewarnService forewarnService; + + @PostMapping("list") + public Result> list() { + return success(forewarnService.list()); + } + //全部报文 + @GetMapping("listDataFormat") + public Result> listDataFormat() { + return success(forewarnService.listDataFormat()); + } + //新增报文 + @PostMapping("indexDataFormat") + public Result indexDataFormat(@RequestBody List dataFormat,@RequestParam String vin) { + return success(forewarnService.indexDataFormat(dataFormat,vin)); + } + //查询报文 + @PostMapping("selectDataFormatById") + public Result> selectDataFormatById(@RequestParam String vin) { + return success(forewarnService.selectDataFormatById(vin)); + } + //删除报文 + @PostMapping("deleteDataFormatById/{vin}") + public Result deleteDataFormatById(@PathVariable String vin) { + return success(forewarnService.deleteDataFormatById(vin)); + } +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/consumer/Consumer.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/consumer/Consumer.java new file mode 100644 index 0000000..0e694cc --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/consumer/Consumer.java @@ -0,0 +1,21 @@ +package com.muyu.goods.event.consumer; + +import lombok.Data; +import org.springframework.context.ApplicationEvent; + +public class Consumer extends ApplicationEvent{ + // 展示内容 + private String name; + public Consumer(Object source) { + super(source); + } + + public Consumer(Object source,String name) { + super(source); + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/consumer/WindowListener.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/consumer/WindowListener.java new file mode 100644 index 0000000..9584124 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/consumer/WindowListener.java @@ -0,0 +1,18 @@ +package com.muyu.goods.event.consumer; + +import com.muyu.goods.Domain.WindowDonain; +import lombok.SneakyThrows; +import lombok.extern.log4j.Log4j2; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +@Component +@Log4j2 +public class WindowListener { + + @SneakyThrows + @EventListener(WindowDonain.class) + public void sendMsh(WindowDonain windowDonain){ + log.info("启动:{}",windowDonain); + } +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/CouponService.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/CouponService.java new file mode 100644 index 0000000..092fb38 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/CouponService.java @@ -0,0 +1,16 @@ +package com.muyu.goods.event.producer; + +import com.muyu.goods.event.consumer.Consumer; +import lombok.extern.log4j.Log4j2; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Service +@Log4j2 +public class CouponService { + + @EventListener + public void addCoupon(Consumer consumer) { + log.info("addCoupon发布消息给{}",consumer.getName()); + } +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/EmailService.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/EmailService.java new file mode 100644 index 0000000..a785fbe --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/EmailService.java @@ -0,0 +1,18 @@ +package com.muyu.goods.event.producer; + +import com.muyu.goods.event.consumer.Consumer; +import lombok.extern.log4j.Log4j2; +import org.springframework.context.ApplicationListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +@Service +@Log4j2 +public class EmailService implements ApplicationListener { + + @Override + @Async + public void onApplicationEvent(Consumer consumer) { + log.info("EmailService发送信息给{}",consumer); + } +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/UserService.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/UserService.java new file mode 100644 index 0000000..3a2b8ef --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/event/producer/UserService.java @@ -0,0 +1,25 @@ +package com.muyu.goods.event.producer; + +import com.muyu.goods.event.consumer.Consumer; +import lombok.extern.log4j.Log4j2; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.ApplicationEventPublisherAware; +import org.springframework.stereotype.Service; + +@Service +@Log4j2 +public class UserService implements ApplicationEventPublisherAware { + private ApplicationEventPublisher applicationEventPublisher; + + @Override + public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { + this.applicationEventPublisher = applicationEventPublisher; + } + + public void register(String name) { + //执行逻辑 + log.info("执行user逻辑"); + //发布 + applicationEventPublisher.publishEvent(new Consumer(this,name)); + } +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/mapper/ForewarnMapper.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/mapper/ForewarnMapper.java new file mode 100644 index 0000000..c5faf14 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/mapper/ForewarnMapper.java @@ -0,0 +1,20 @@ +package com.muyu.goods.mapper; + +import com.business.common.dev.DataFormatDev; +import com.business.common.domain.DataFormat; +import com.business.common.domain.event.Window; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ForewarnMapper { + List list(); + + List listDataFormat(); + + Integer indexDataFormat(@Param("dataFormat") List dataFormat); + + Integer deleteDataFormatById(@Param("vin") String vin); + + List selectDataFormatById(@Param("vin") String vin); +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/IForewarnService.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/IForewarnService.java new file mode 100644 index 0000000..1aa76b7 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/IForewarnService.java @@ -0,0 +1,37 @@ +package com.muyu.goods.service; + +import com.business.common.dev.DataFormatDev; +import com.business.common.domain.DataFormat; +import com.business.common.domain.event.Window; + +import java.util.List; + +public interface IForewarnService { + List list(); + + /** + * 全部报文 + * @return + */ + List listDataFormat(); + + /** + * 查看报文 + * @return + */ + List selectDataFormatById(String vin); + + /** + * 新增报文 + * @param dataFormat + * @return + */ + Integer indexDataFormat(List dataFormat,String vin); + + /** + * 删除报文 + * @return + */ + Integer deleteDataFormatById(String vin); + +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/CarServiceImpl.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/CarServiceImpl.java index 19ae244..0a7c141 100644 --- a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/CarServiceImpl.java +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/CarServiceImpl.java @@ -94,7 +94,6 @@ public class CarServiceImpl implements ICarService } System.out.println(enterprise); car.setOwnerId(enterprise.getId()); - car.setVin(UUID.randomUUID().toString().replaceAll("-","")); int i = carMapper.insertCar(car); if (i>0) { Car car1 = carMapper.carByCar(); @@ -172,10 +171,6 @@ public class CarServiceImpl implements ICarService if (rightPopAndLeftPush != null){ String parse = JSON.parse(rightPopAndLeftPush).toString(); VehicleInfo vehicleInfo = JSON.parseObject(parse, VehicleInfo.class); -// LongitudeAndLatitude longitudeAndLatitude = LongitudeAndLatitude.builder() -// .latitude(latitude) -// .longitude(longitude) -// .build(); return vehicleInfo; }else{ return null; diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/ForewarnService.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/ForewarnService.java new file mode 100644 index 0000000..e8756e7 --- /dev/null +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/ForewarnService.java @@ -0,0 +1,103 @@ +package com.muyu.goods.service.impl; + +import com.business.common.dev.DataFormatDev; +import com.business.common.domain.DataFormat; +import com.business.common.domain.event.Window; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.goods.mapper.ForewarnMapper; +import com.muyu.goods.service.IForewarnService; +import org.apache.kafka.common.protocol.types.Field; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class ForewarnService implements IForewarnService { + @Autowired + private ForewarnMapper forewarnMapper; + @Autowired + private RedisTemplate redisTemplate; + + @Override + public List list() { + return forewarnMapper.list(); + } + + /** + * 全部报文 + * @return + */ + @Override + public List listDataFormat() { + Map map = new HashMap<>(); + List list = forewarnMapper.listDataFormat(); + Map> collect = list.stream().collect(Collectors.groupingBy(DataFormatDev::getVin)); + collect.forEach((a,b) -> { + String name = ""; + for (DataFormatDev dataFormatDev : b) { + name+= dataFormatDev.getDataCode()+"-"+dataFormatDev.getLabel()+"-"+dataFormatDev.getStart()+"-"+dataFormatDev.getEnd()+","; + } + name = name.substring(0,name.length()-1); + map.put(a,name); + }); + map.forEach((key,val) -> { + redisTemplate.opsForHash().put("protocol_parsing:data_format",key,val); + }); + return list; + } + + /** + * 查看报文 + * @return + */ + @Override + public List selectDataFormatById(String vin) { + List dataFormatList = forewarnMapper.selectDataFormatById(vin); + if (dataFormatList.size()>0){ + return dataFormatList; + } + return null; + } + + /** + * 新增报文 + * @param dataFormat + * @return + */ + @Override + public Integer indexDataFormat(List dataFormat, String vin) { + deleteDataFormatById(vin); + List list = new ArrayList<>(); + for (DataFormat format : dataFormat) { + DataFormatDev dataFormatDev = DataFormatDev.builder() + .vin(vin) + .dataCode(format.getDataCode()) + .label(format.getLabel()) + .start(format.getStart()) + .end(format.getEnd()) + .build(); + list.add(dataFormatDev); + } + //再添加新报文 + + return forewarnMapper.indexDataFormat(list); + } + + /** + * 删除报文 + * @return + */ + @Override + public Integer deleteDataFormatById(String vin) { + return forewarnMapper.deleteDataFormatById(vin); + } + + +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/MapService.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/MapService.java index f31de1a..7e8894d 100644 --- a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/MapService.java +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/goods/service/impl/MapService.java @@ -72,7 +72,7 @@ public class MapService implements IMapService { /** * 传入电子围栏 - * @param pences + * @param list * @return */ @Override diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/resources/mapper/rule/CarMapper.xml b/muyu-modules/muyu-business/muyu-business-server/src/main/resources/mapper/rule/CarMapper.xml index 3ef5dab..6410ee9 100644 --- a/muyu-modules/muyu-business/muyu-business-server/src/main/resources/mapper/rule/CarMapper.xml +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/resources/mapper/rule/CarMapper.xml @@ -10,20 +10,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - select car_id, vin, brand, model, manufacture_year, body_type, color, engine_capacity, fuel_type, transmission, drive_type, mileage, registration_date, registration_number, owner_id from car + select car_id, vin, brand, model, manufacture_year, color, engine_capacity, fuel_type, transmission, drive_type, registration_date, registration_number, owner_id from car + + + + + + +