From a705d142dfb2d8c5ce6c0acf9ce5e2e196c67ae7 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Thu, 17 Dec 2020 16:11:35 +0800 Subject: [PATCH] =?UTF-8?q?20201217=E4=BF=AE=E6=94=B9=E7=A7=B0=E9=87=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=92=8C=E9=9C=87=E5=8A=A8=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/dto/Message/CarRecordMessageDto.java | 8 +- .../com/ccsens/wisdomcar/bean/vo/StepVo.java | 1 + .../ccsens/wisdomcar/persist/dao/StepDao.java | 2 + .../wisdomcar/rabbitMQ/RabbitController.java | 59 ++++++-- .../wisdomcar/service/RecordService.java | 141 ++++++++++-------- wisdomcar/src/main/resources/application.yml | 4 +- .../src/main/resources/mapper_dao/StepDao.xml | 12 ++ 7 files changed, 149 insertions(+), 78 deletions(-) diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java index ae35cdc0..f7013b10 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java @@ -14,7 +14,7 @@ public class CarRecordMessageDto { /** * 类型 0开始 1体重 2rfid, 3称重一 4称重二 5称重三 6称重四 7震动 8溶栓 9团注 10维持 */ - private byte type; + private Byte type; /** * */ @@ -29,6 +29,9 @@ public class CarRecordMessageDto { private Long time; public byte getType(){ + if(this.type != null){ + return type; + } switch (addr){ case 3: return 0; @@ -58,8 +61,9 @@ public class CarRecordMessageDto { case 32: return 6; case 24: - default: return 2; + default: + return this.type; } } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/StepVo.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/StepVo.java index 58cf035a..9d40f576 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/StepVo.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/StepVo.java @@ -9,6 +9,7 @@ import lombok.Data; public class StepVo { @Data public static class Step{ + private Long id; private String stepCode; private byte stepType; diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java index 4532edb9..be26252a 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java @@ -19,4 +19,6 @@ public interface StepDao extends StepMapper { StepVo.Step getCodeByRfId(@Param("rfid") String value); StepVo.Step getCodeByStepOne(); + + String getRecordByCarIdAndType(@Param("carId") Long carId, @Param("type") byte type); } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/rabbitMQ/RabbitController.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/rabbitMQ/RabbitController.java index 713414d3..b0c1211b 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/rabbitMQ/RabbitController.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/rabbitMQ/RabbitController.java @@ -4,11 +4,13 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.ccsens.util.RedisUtil; import com.ccsens.util.bean.message.common.OutMessage; import com.ccsens.util.bean.message.common.OutMessageSet; import com.ccsens.util.config.RabbitMQConfig; import com.ccsens.wisdomcar.bean.dto.Message.CarRecordMessageDto; import com.ccsens.wisdomcar.service.IRecordService; +import com.ccsens.wisdomcar.util.Constant; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +19,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; @Slf4j @@ -25,6 +28,8 @@ import java.util.*; public class RabbitController { @Resource private IRecordService recordService; + @Resource + private RedisUtil redisUtil; private Logger logger = LoggerFactory.getLogger(RabbitController.class); @@ -48,29 +53,39 @@ public class RabbitController { return; } switch (carRecordMessageDto.getType()){ - case 2: + case Constant.CAR_RECORD_WEIGHT: getWeight(carRecordMessageDtoList, map, carRecordMessageDto,16); break; - case 3: + case Constant.WEIGHT_SENSOR_1: // getWeight(carRecordMessageDtoList, map, carRecordMessageDto,25); break; - case 4: + case Constant.WEIGHT_SENSOR_2: // getWeight(carRecordMessageDtoList, map, carRecordMessageDto,27); break; - case 5: + case Constant.WEIGHT_SENSOR_3: // getWeight(carRecordMessageDtoList, map, carRecordMessageDto,29); break; - case 6: + case Constant.WEIGHT_SENSOR_4: // getWeight(carRecordMessageDtoList, map, carRecordMessageDto,31); break; - case 7: - map.put(carRecordMessageDto.getAddr(),Long.parseLong(carRecordMessageDto.getValue())); - if(map.get(18) != null && map.get(19) != null && map.get(20) != null ){ - String value = map.get(18) + "," + map.get(19) + "," + map.get(20); + case Constant.SHAKE_SENSOR: + log.info("倾角传感器:{}",carRecordMessageDto); + long shakeValue = getShakeValue(carRecordMessageDto); + + map.put(carRecordMessageDto.getAddr(),shakeValue); + if(map.get(21) != null && map.get(22) != null && map.get(23) != null ){ + String value = map.get(21) + "," + map.get(22) + "," + map.get(23); carRecordMessageDto.setValue(value); carRecordMessageDtoList.add(carRecordMessageDto); } break; + case Constant.THROMBOLYTIC: + case Constant.BOLUS_DOSE: + case Constant.MAINTENANCE_DOSE: + BigDecimal value1 = BigDecimal.valueOf(Double.parseDouble(carRecordMessageDto.getValue())).divide(BigDecimal.valueOf(100),2,BigDecimal.ROUND_HALF_DOWN); + carRecordMessageDto.setValue(value1.toString()); + carRecordMessageDtoList.add(carRecordMessageDto); + break; default: carRecordMessageDtoList.add(carRecordMessageDto); break; @@ -89,9 +104,27 @@ public class RabbitController { } + private long getShakeValue(CarRecordMessageDto carRecordMessageDto) { + String key = Constant.FIRST_AID + carRecordMessageDto.getAuthId() + carRecordMessageDto.getAddr(); + + long value = 0L; + //redis查找该平车上一次的倾角数据 + Object o = redisUtil.get(key); + if(ObjectUtil.isNull(o)){ + //如果没有依次存入redis,value值都是0 + redisUtil.set(key,carRecordMessageDto.getValue()); + carRecordMessageDto.setValue(0+""); + }else { + //如果有,用当前的值减去上次的数据,得到的是新的value + value = Long.parseLong(carRecordMessageDto.getValue()) - Long.parseLong(o.toString()); + } + return value; + } + private void getWeight(List carRecordMessageDtoList, Map map, CarRecordMessageDto carRecordMessageDto,int highAddr) { boolean flag = carRecordMessageDto.getAddr() == highAddr; Long weight = getWeight(map, carRecordMessageDto, flag ? highAddr + 1 : highAddr,flag); + log.info("计算后的重量:{}",weight); if(weight == null){ return; } @@ -100,16 +133,20 @@ public class RabbitController { } private Long getWeight(Map map, CarRecordMessageDto carRecordMessageDto,int value2,boolean firstHigh) { + log.info("value = {},,firstHigh={}",value2,firstHigh); if(map.get(value2) == null){ map.put(carRecordMessageDto.getAddr(),Long.parseLong(carRecordMessageDto.getValue())); return null; }else { long weight1 = Long.parseLong(carRecordMessageDto.getValue()); long weight2 = map.get(value2); + log.info("准备计算重量:{},,,{}",weight1,weight2); if(firstHigh){ - return weight1 << 16 + weight2; + log.info("weight1 << 16 + weight2:{}",weight1 << 16 | weight2); + return weight1 << 16 | weight2; }else { - return weight2 << 16 + weight1; + log.info("weight2 << 16 + weight1:{}",weight2 << 16 | weight1); + return weight2 << 16 | weight1; } } } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java index 86f5c3ee..7dc794bb 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java @@ -60,6 +60,7 @@ public class RecordService implements IRecordService{ if(ObjectUtil.isNull(carRecordMessageDto)){ return; } + log.info("接受信息:{}",carRecordMessageDto); //查找平车信息 WisdomCar wisdomCar = null; WisdomCarExample wisdomCarExample = new WisdomCarExample(); @@ -72,13 +73,6 @@ public class RecordService implements IRecordService{ log.info("找不到平车id"); return; } - WisdomCarRecord wisdomCarRecord = new WisdomCarRecord(); - wisdomCarRecord.setId(snowflake.nextId()); - wisdomCarRecord.setCarId(wisdomCars.get(0).getId()); - wisdomCarRecord.setType(carRecordMessageDto.getType()); - wisdomCarRecord.setValue(carRecordMessageDto.getValue()); - wisdomCarRecord.setTime(carRecordMessageDto.getTime()); - wisdomCarRecordMapper.insertSelective(wisdomCarRecord); //查找医院大屏的userId(暂时查找主屏幕) Set userIdSet = new HashSet<>(); @@ -88,14 +82,40 @@ public class RecordService implements IRecordService{ if(CollectionUtil.isNotEmpty(screenList)){ screenList.forEach(screen -> userIdSet.add(screen.getUserId().toString())); } + + //如果是称重信息,制造测试数据发送大屏 + boolean f = false; + if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ + String value = stepDao.getRecordByCarIdAndType(wisdomCars.get(0).getId(),carRecordMessageDto.getType()); + if(!carRecordMessageDto.getValue().equals(value)){ + f = true; + } + } + + WisdomCarRecord wisdomCarRecord = new WisdomCarRecord(); + wisdomCarRecord.setId(snowflake.nextId()); + wisdomCarRecord.setCarId(wisdomCars.get(0).getId()); + wisdomCarRecord.setType(carRecordMessageDto.getType()); + wisdomCarRecord.setValue(carRecordMessageDto.getValue()); + wisdomCarRecord.setTime(carRecordMessageDto.getTime()); + wisdomCarRecordMapper.insertSelective(wisdomCarRecord); + + //获取流程 StepVo.Step step = null; - if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT || carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ + if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ step = stepDao.getCodeByStepOne(); //处理体重数据 int weightInt = Integer.parseInt(carRecordMessageDto.getValue()); - BigDecimal weight = BigDecimal.valueOf(weightInt).divide(BigDecimal.valueOf(1000),3,BigDecimal.ROUND_HALF_UP); + BigDecimal weight = BigDecimal.valueOf(weightInt).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); carRecordMessageDto.setValue(weight+""); + if(f){ + log.info("处理称重信息"); + doseAndSensorMessage(carRecordMessageDto, userIdSet); + } + } + if(carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ + step = stepDao.getCodeByStepOne(); } if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID){ step = stepDao.getCodeByRfId(carRecordMessageDto.getValue()); @@ -104,55 +124,55 @@ public class RecordService implements IRecordService{ sendRecordMessage(carRecordMessageDto,userIdSet,step == null?null:step.getStepCode(),step == null?null:step.getStepType()); - //如果是称重信息,制造测试数据发送大屏 - - if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ - log.info("处理称重信息"); - doseAndSensorMessage(carRecordMessageDto, userIdSet); - } +// //如果是称重信息,制造测试数据发送大屏 +// if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ +// +// String value = stepDao.getRecordByCarIdAndType(wisdomCars.get(0).getId(),carRecordMessageDto.getType()); +// BigDecimal weight = BigDecimal.valueOf(Double.parseDouble(value)).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); +// if(!carRecordMessageDto.getValue().equals(weight.toString())){ +// log.info("处理称重信息"); +// doseAndSensorMessage(carRecordMessageDto, userIdSet); +// } +// } //新建急救表存储信息 - saveAidRecord(carRecordMessageDto, wisdomCar.getId()); + saveAidRecord(carRecordMessageDto, wisdomCar.getId(),step); } private void doseAndSensorMessage(CarRecordMessageDto carRecordMessageDto, Set userIdSet) throws Exception { //体重 单位g BigDecimal weightInt = BigDecimal.valueOf(Double.parseDouble(carRecordMessageDto.getValue())); -// /*剂量数据*/ -// //计算剂量信息 总剂量 = 重量 * 0.9,团注剂量=总剂量*10%,维持剂量=总剂量*90%,均保留两位小数(重量为kg,消息发送的重量为g,需处理) -// String dosage; -// BigDecimal weight = BigDecimal.valueOf(weightInt).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_UP); -// //总剂量 -// BigDecimal totalDose = weight.multiply(BigDecimal.valueOf(0.9)).setScale(2, BigDecimal.ROUND_HALF_UP); -// //团注剂量 -// BigDecimal dose1 = totalDose.multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP); -// //维持剂量 -// BigDecimal dose2 = totalDose.subtract(dose1); -// dosage = totalDose + "," + dose1 + "," + dose2; -// //发送消息 -// CarRecordMessageDto dosageRecord = new CarRecordMessageDto(); -// BeanUtil.copyProperties(carRecordMessageDto,dosageRecord); -// dosageRecord.setType(Constant.CAR_RECORD_DOSAGE); -// dosageRecord.setValue(dosage); -// //发送消息 -// sendRecordMessage(dosageRecord,userIdSet); - + BigDecimal sensor1 = BigDecimal.valueOf(0); + BigDecimal sensor2 = BigDecimal.valueOf(0); + BigDecimal sensor3 = BigDecimal.valueOf(0); + BigDecimal sensor4 = BigDecimal.valueOf(0); /*称重传感器数据*/ - //获取一个5000以内的平均数 - Random random = new Random(); - BigDecimal randomWeight1 = BigDecimal.valueOf(random.nextInt(5000)).divide(BigDecimal.valueOf(1000),3,BigDecimal.ROUND_HALF_UP); - BigDecimal randomWeight2 = BigDecimal.valueOf(random.nextInt(5000)).divide(BigDecimal.valueOf(1000),3,BigDecimal.ROUND_HALF_UP); - //体重除以4 - BigDecimal aveWeight = weightInt.divide(BigDecimal.valueOf(4),3,BigDecimal.ROUND_HALF_UP); - BigDecimal sensor1 = aveWeight.subtract(randomWeight1); - BigDecimal sensor2 = aveWeight.add(randomWeight1); - BigDecimal sensor3 = aveWeight.subtract(randomWeight2); - BigDecimal sensor4 = weightInt.subtract(sensor1).subtract(sensor2).subtract(sensor3); + if(!weightInt.equals(BigDecimal.valueOf(0))){ + //获取一个5000以内的平均数 + Random random = new Random(); + BigDecimal randomWeight1 = BigDecimal.valueOf(random.nextInt(5000)).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); + BigDecimal randomWeight2 = BigDecimal.valueOf(random.nextInt(5000)).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); + //体重除以4 + BigDecimal aveWeight = weightInt.divide(BigDecimal.valueOf(4),3,BigDecimal.ROUND_HALF_DOWN); + if(aveWeight.compareTo(BigDecimal.valueOf(5000)) < 1){ + BigDecimal divide = aveWeight.multiply(BigDecimal.valueOf(1000)).divide(BigDecimal.valueOf(3), 2, BigDecimal.ROUND_HALF_DOWN); + randomWeight1 = BigDecimal.valueOf(random.nextInt(divide.intValue())).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); + randomWeight2 = BigDecimal.valueOf(random.nextInt(divide.intValue())).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); + } + sensor1 = aveWeight.subtract(randomWeight1); + sensor2 = aveWeight.add(randomWeight1); + sensor3 = aveWeight.subtract(randomWeight2); + sensor4 = weightInt.subtract(sensor1).subtract(sensor2).subtract(sensor3); + if(sensor4.compareTo(BigDecimal.valueOf(0)) < 1){ + sensor4 = BigDecimal.valueOf(0); + } + } //第一个传感器 CarRecordMessageDto sensorMessage1 = new CarRecordMessageDto(); BeanUtil.copyProperties(carRecordMessageDto,sensorMessage1); sensorMessage1.setType(Constant.WEIGHT_SENSOR_1); sensorMessage1.setValue(sensor1 + ""); + log.info("传感器一数据:{}",sensorMessage1); //发送消息 sendRecordMessage(sensorMessage1,userIdSet,null,null); //第二个传感器 @@ -160,6 +180,7 @@ public class RecordService implements IRecordService{ BeanUtil.copyProperties(carRecordMessageDto,sensorMessage2); sensorMessage2.setType(Constant.WEIGHT_SENSOR_2); sensorMessage2.setValue(sensor2 + ""); + log.info("传感器二数据:{}",sensorMessage2); //发送消息 sendRecordMessage(sensorMessage2,userIdSet,null,null); //第三个传感器 @@ -167,6 +188,7 @@ public class RecordService implements IRecordService{ BeanUtil.copyProperties(carRecordMessageDto,sensorMessage3); sensorMessage3.setType(Constant.WEIGHT_SENSOR_3); sensorMessage3.setValue(sensor3 + ""); + log.info("传感器三数据:{}",sensorMessage3); //发送消息 sendRecordMessage(sensorMessage3,userIdSet,null,null); //第四个传感器 @@ -174,23 +196,9 @@ public class RecordService implements IRecordService{ BeanUtil.copyProperties(carRecordMessageDto,sensorMessage4); sensorMessage4.setType(Constant.WEIGHT_SENSOR_4); sensorMessage4.setValue(sensor4 + ""); + log.info("传感器四数据:{}",sensorMessage4); //发送消息 sendRecordMessage(sensorMessage4,userIdSet,null,null); - -// /*震动传感器数据*/ -// //随机生成坐标 -// int shakeX = random.nextInt(65535); -// int shakeY = random.nextInt(65535); -// int shakeZ = random.nextInt(65535); -// //震动传感器 -// CarRecordMessageDto shakeMessage = new CarRecordMessageDto(); -// BeanUtil.copyProperties(carRecordMessageDto,shakeMessage); -// shakeMessage.setType(Constant.SHAKE_SENSOR); -// shakeMessage.setValue(shakeX + "," + shakeY + "," + shakeZ); -// //发送消息 -// sendRecordMessage(shakeMessage,userIdSet); - -// return dosage; } @@ -202,6 +210,7 @@ public class RecordService implements IRecordService{ carRecordMessageDto.getValue(),carRecordMessageDto.getTime(),stepCode,stepType); MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User); + messageRule.setAckRule(MessageRule.AckRule.NONE); String s = JacksonUtil.beanToJson(carRecordMessageVo); InMessage inMessage = InMessage.newToUserMessage(null,userIdSet,null,messageRule,s); //发送消息 @@ -211,7 +220,7 @@ public class RecordService implements IRecordService{ /** * 添加急救信息和急救记录信息 */ - private void saveAidRecord(CarRecordMessageDto carRecordMessageDto, Long wisdomCarId) { + private void saveAidRecord(CarRecordMessageDto carRecordMessageDto, Long wisdomCarId, StepVo.Step step) { // 如果是开始信息,新建一条急救表数据 String key = Constant.FIRST_AID + wisdomCarId; if(carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ @@ -224,6 +233,11 @@ public class RecordService implements IRecordService{ firstAidMapper.insertSelective(firstAid); //存入redis redisUtil.set(key,firstAid.getId(),Constant.FIRST_AID_REDIS_TIME); + //删除redis内此平车之前的倾角数据 + String keyX = Constant.FIRST_AID + carRecordMessageDto.getAuthId() + 21; + String keyY = Constant.FIRST_AID + carRecordMessageDto.getAuthId() + 22; + String keyZ = Constant.FIRST_AID + carRecordMessageDto.getAuthId() + 23; + redisUtil.del(keyX,keyY,keyZ); return; } //redis查询急救表 @@ -249,14 +263,14 @@ public class RecordService implements IRecordService{ case Constant.THROMBOLYTIC: case Constant.BOLUS_DOSE: case Constant.MAINTENANCE_DOSE: - saveFirstAidRecord(carRecordMessageDto,firstAidId); + saveFirstAidRecord(carRecordMessageDto,firstAidId,step); break; default: } } - private void saveFirstAidRecord(CarRecordMessageDto carRecordMessageDto, Long firstAidId) { + private void saveFirstAidRecord(CarRecordMessageDto carRecordMessageDto, Long firstAidId, StepVo.Step step) { String reidKey; if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID){ reidKey = Constant.FIRST_AID + firstAidId + "_" + carRecordMessageDto.getType() + "_" + carRecordMessageDto.getValue(); @@ -286,6 +300,7 @@ public class RecordService implements IRecordService{ aidRecord.setFirstAidId(firstAidId); aidRecord.setBeginTime(carRecordMessageDto.getTime()); aidRecord.setType(carRecordMessageDto.getType()); + aidRecord.setStepId(step == null ? null : step.getId()); firstAidRecordMapper.insertSelective(aidRecord); //添加redis redisUtil.set(reidKey,aidRecord.getId(),Constant.FIRST_AID_REDIS_TIME); diff --git a/wisdomcar/src/main/resources/application.yml b/wisdomcar/src/main/resources/application.yml index a47f2a7b..1ac895fc 100644 --- a/wisdomcar/src/main/resources/application.yml +++ b/wisdomcar/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: dev - include: common, util-dev + active: prod + include: common, util-prod diff --git a/wisdomcar/src/main/resources/mapper_dao/StepDao.xml b/wisdomcar/src/main/resources/mapper_dao/StepDao.xml index e1cc4ecb..87f77d01 100644 --- a/wisdomcar/src/main/resources/mapper_dao/StepDao.xml +++ b/wisdomcar/src/main/resources/mapper_dao/StepDao.xml @@ -5,6 +5,7 @@ + \ No newline at end of file