添加报文解析接口
parent
4613873874
commit
93cca647a4
|
@ -84,7 +84,7 @@ public class MessageTemplateTypeController {
|
|||
* @return
|
||||
*/
|
||||
@PostMapping("/findMessageByTemplateName")
|
||||
public Result<List<MessageTemplateType>> findMessageByTemplateName(@RequestParam("templateName") String templateName) {
|
||||
return Result.success(messageTemplateTypeService.findMessageByTemplateName(templateName));
|
||||
public Result<List<MessageTemplateType>> findMessageByTemplateName(@RequestParam("templatedId") Integer templatedId) {
|
||||
return Result.success(messageTemplateTypeService.findMessageByTemplateName(templatedId));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public class TemplateController {
|
|||
* @return
|
||||
*/
|
||||
@PostMapping("/messageParsing")
|
||||
public Result messageParsing(@RequestParam String templateMessage){
|
||||
public Result messageParsing(@RequestParam("templateMessage") String templateMessage){
|
||||
templateService.messageParsing(templateMessage);
|
||||
return Result.success();
|
||||
}
|
||||
|
|
|
@ -30,6 +30,6 @@ public interface MessageTemplateTypeMapper {
|
|||
|
||||
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);
|
||||
|
||||
}
|
||||
|
|
|
@ -27,6 +27,6 @@ public interface MessageTemplateTypeService {
|
|||
|
||||
List<MessageTemplateType> finddeviceStatusData(Integer templatedId, String code);
|
||||
|
||||
List<MessageTemplateType> findMessageByTemplateName(String templateName);
|
||||
List<MessageTemplateType> findMessageByTemplateName(Integer templatedId);
|
||||
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class MessageTemplateTypeServiceImpl implements MessageTemplateTypeServi
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<MessageTemplateType> findMessageByTemplateName(String templateName) {
|
||||
return messageTemplateTypeMapper.findMessageByTemplateName(templateName);
|
||||
public List<MessageTemplateType> findMessageByTemplateName(Integer templatedId) {
|
||||
return messageTemplateTypeMapper.findMessageByTemplateName(templatedId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,55 +34,52 @@ public class TemplateServiceImpl implements TemplateService{
|
|||
|
||||
@Override
|
||||
public void messageParsing(String templateMessage) {
|
||||
|
||||
//新能源车里面有的配置
|
||||
MessageTemplate messageTemplate = new MessageTemplate();
|
||||
//先截取出VIN码 然后根据VIN码查询这个车属于什么类型
|
||||
if(templateMessage.length()<18){
|
||||
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码
|
||||
String carVin = templateMessage.substring(1, 18-1);
|
||||
String carVin = result.substring(0, 18-1);
|
||||
System.out.println("carVin码为:"+carVin);
|
||||
//根据VIN码获取车辆信息
|
||||
SysCar carByVin = carService.findCarByVin(carVin);
|
||||
if(carByVin==null){
|
||||
throw new RuntimeException("Check this car!!");
|
||||
}else{
|
||||
//根据车辆类型ID获取车辆类型名称
|
||||
CarType carTypeById = carService.findCarTypeById(carByVin.getCarTypeId());
|
||||
//查询报文模版
|
||||
Template templateDate=templateMapper.findTemplateByName(carTypeById.getTypeName());
|
||||
//根据报文模版的ID查询对应的模版
|
||||
List<MessageTemplateType> messageByTemplateName = messageTemplateTypeService.findMessageByTemplateName(templateDate.getTemplateName());
|
||||
|
||||
List<MessageTemplateType> messageByTemplateName = messageTemplateTypeService.findMessageByTemplateName(templateDate.getTemplateId());
|
||||
//将模版里面有的配置进行循环
|
||||
for (MessageTemplateType messageTemplateType : messageByTemplateName) {
|
||||
//车辆VIN码
|
||||
String[] split = templateMessage.split(" ");
|
||||
//开始位置
|
||||
Integer startIndex = messageTemplateType.getStartIndex();
|
||||
//结束位置
|
||||
Integer endIndex = messageTemplateType.getEndIndex();
|
||||
String messageField = messageTemplateType.getMessageField();
|
||||
String str="set"+messageField;
|
||||
//车辆VIN码
|
||||
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));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,6 @@
|
|||
select * from sys_car where car_vin=#{carVin}
|
||||
</select>
|
||||
<select id="carMapper" resultType="com.template.domain.CarType">
|
||||
|
||||
select * from car_type where id=#{carTypeId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
FROM
|
||||
message_template_type
|
||||
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>
|
||||
|
||||
</mapper>
|
||||
|
|
Loading…
Reference in New Issue