添加报文解析接口

dev
Number7 2024-09-21 20:11:28 +08:00
parent 4613873874
commit 93cca647a4
8 changed files with 44 additions and 47 deletions

View File

@ -84,7 +84,7 @@ public class MessageTemplateTypeController {
* @return * @return
*/ */
@PostMapping("/findMessageByTemplateName") @PostMapping("/findMessageByTemplateName")
public Result<List<MessageTemplateType>> findMessageByTemplateName(@RequestParam("templateName") String templateName) { public Result<List<MessageTemplateType>> findMessageByTemplateName(@RequestParam("templatedId") Integer templatedId) {
return Result.success(messageTemplateTypeService.findMessageByTemplateName(templateName)); return Result.success(messageTemplateTypeService.findMessageByTemplateName(templatedId));
} }
} }

View File

@ -42,7 +42,7 @@ public class TemplateController {
* @return * @return
*/ */
@PostMapping("/messageParsing") @PostMapping("/messageParsing")
public Result messageParsing(@RequestParam String templateMessage){ public Result messageParsing(@RequestParam("templateMessage") String templateMessage){
templateService.messageParsing(templateMessage); templateService.messageParsing(templateMessage);
return Result.success(); return Result.success();
} }

View File

@ -30,6 +30,6 @@ public interface MessageTemplateTypeMapper {
List<MessageTemplateType> findvehicleData(@Param("templatedId") Integer templatedId, @Param("code") String code); List<MessageTemplateType> findvehicleData(@Param("templatedId") Integer templatedId, @Param("code") String code);
List<MessageTemplateType> findMessageByTemplateName(@Param("templateName") String templateName); List<MessageTemplateType> findMessageByTemplateName(@Param("templatedId") Integer templatedId);
} }

View File

@ -27,6 +27,6 @@ public interface MessageTemplateTypeService {
List<MessageTemplateType> finddeviceStatusData(Integer templatedId, String code); List<MessageTemplateType> finddeviceStatusData(Integer templatedId, String code);
List<MessageTemplateType> findMessageByTemplateName(String templateName); List<MessageTemplateType> findMessageByTemplateName(Integer templatedId);
} }

View File

@ -49,7 +49,7 @@ public class MessageTemplateTypeServiceImpl implements MessageTemplateTypeServi
} }
@Override @Override
public List<MessageTemplateType> findMessageByTemplateName(String templateName) { public List<MessageTemplateType> findMessageByTemplateName(Integer templatedId) {
return messageTemplateTypeMapper.findMessageByTemplateName(templateName); return messageTemplateTypeMapper.findMessageByTemplateName(templatedId);
} }
} }

View File

@ -34,55 +34,52 @@ public class TemplateServiceImpl implements TemplateService{
@Override @Override
public void messageParsing(String templateMessage) { public void messageParsing(String templateMessage) {
//新能源车里面有的配置
MessageTemplate messageTemplate = new MessageTemplate(); MessageTemplate messageTemplate = new MessageTemplate();
//先截取出VIN码 然后根据VIN码查询这个车属于什么类型 //先截取出VIN码 然后根据VIN码查询这个车属于什么类型
if(templateMessage.length()<18){ if(templateMessage.length()<18){
throw new RuntimeException("The vehicle message is incorrect"); throw new RuntimeException("The vehicle message is incorrect");
} }
//将报文进行切割
String[] hexArray = templateMessage.split(" ");
StringBuilder result = new StringBuilder();
for (String hex : hexArray) {
int decimal = Integer.parseInt(hex, 16);
result.append((char) decimal);
}
//取出VIN码 //取出VIN码
String carVin = templateMessage.substring(1, 18-1); String carVin = result.substring(0, 18-1);
System.out.println("carVin码为:"+carVin);
//根据VIN码获取车辆信息 //根据VIN码获取车辆信息
SysCar carByVin = carService.findCarByVin(carVin); SysCar carByVin = carService.findCarByVin(carVin);
if(carByVin==null){
throw new RuntimeException("Check this car!!");
}else{
//根据车辆类型ID获取车辆类型名称 //根据车辆类型ID获取车辆类型名称
CarType carTypeById = carService.findCarTypeById(carByVin.getCarTypeId()); CarType carTypeById = carService.findCarTypeById(carByVin.getCarTypeId());
//查询报文模版 //查询报文模版
Template templateDate=templateMapper.findTemplateByName(carTypeById.getTypeName()); Template templateDate=templateMapper.findTemplateByName(carTypeById.getTypeName());
//根据报文模版的ID查询对应的模版 //根据报文模版的ID查询对应的模版
List<MessageTemplateType> messageByTemplateName = messageTemplateTypeService.findMessageByTemplateName(templateDate.getTemplateName()); List<MessageTemplateType> messageByTemplateName = messageTemplateTypeService.findMessageByTemplateName(templateDate.getTemplateId());
//将模版里面有的配置进行循环
for (MessageTemplateType messageTemplateType : messageByTemplateName) { for (MessageTemplateType messageTemplateType : messageByTemplateName) {
//车辆VIN码
String[] split = templateMessage.split(" ");
//开始位置 //开始位置
Integer startIndex = messageTemplateType.getStartIndex(); Integer startIndex = messageTemplateType.getStartIndex();
//结束位置 //结束位置
Integer endIndex = messageTemplateType.getEndIndex(); Integer endIndex = messageTemplateType.getEndIndex();
String messageField = messageTemplateType.getMessageField(); //车辆VIN码
String str="set"+messageField; if(messageTemplateType.getMessageField().equals("vinCode")){
messageTemplate.setVinCode(result.substring(startIndex, endIndex-1));
}
if(messageTemplateType.getMessageField().equals("latitude")){
messageTemplate.setLatitude(result.substring(startIndex, endIndex-1));
}
} }
System.out.println("解析后的报文是:"+messageTemplate);
} }
public static void main(String[] args) {
String character="1A 2B 3C 4D 5E 6F";
//将这个报文去除空格
String[] split = character.split(" ");
//字符数组
char[] asciiChars = new char[split.length];
for (int i = 0; i < split.length; i++) {
// 将16进制字符串转换为整数字节值
int decimal = Integer.parseInt(split[i], 16);
asciiChars[i] = (char) decimal;
} }
System.out.println(new String(asciiChars));
}
} }

View File

@ -8,6 +8,6 @@
select * from sys_car where car_vin=#{carVin} select * from sys_car where car_vin=#{carVin}
</select> </select>
<select id="carMapper" resultType="com.template.domain.CarType"> <select id="carMapper" resultType="com.template.domain.CarType">
select * from car_type where id=#{carTypeId}
</select> </select>
</mapper> </mapper>

View File

@ -50,7 +50,7 @@
FROM FROM
message_template_type message_template_type
LEFT JOIN data_type ON data_type.data_type_id = message_template_type.data_type_id LEFT JOIN data_type ON data_type.data_type_id = message_template_type.data_type_id
where message_template_type.template_name=#{templateName} where message_template_type.template_id=#{templatedId}
</select> </select>
</mapper> </mapper>