diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/area/domain/Area.java b/ruoyi-service/src/main/java/com/ruoyi/bst/area/domain/Area.java
index f39e846..254b88f 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/area/domain/Area.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/area/domain/Area.java
@@ -188,6 +188,10 @@ public class Area extends BaseEntity implements LogBizParam
@ApiModelProperty("响铃寻车是否必须在范围内")
private Boolean requiredRingRadius;
+ @Excel(name = "超时是否自动断电")
+ @ApiModelProperty("超时是否自动断电")
+ private Boolean timeoutLock;
+
@Override
public Object logBizId() {
return id;
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/area/mapper/AreaMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/area/mapper/AreaMapper.xml
index e6eec47..28c63d3 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/area/mapper/AreaMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/area/mapper/AreaMapper.xml
@@ -48,6 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ba.outage_distance,
ba.ring_radius,
ba.required_ring_radius,
+ ba.timeout_lock,
su.nick_name as user_name,
su.agent_id as agent_id,
su.user_name as user_phone,
@@ -85,6 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and su.nick_name like concat('%', #{query.userName}, '%')
and suc.nick_name like concat('%', #{query.createName}, '%')
and su.user_name like concat('%', #{query.userPhone}, '%')
+ and ba.timeout_lock = #{query.timeoutLock}
and ba.id in
@@ -166,6 +168,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
outage_distance,
ring_radius,
required_ring_radius,
+ timeout_lock,
#{userId},
@@ -204,6 +207,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{outageDistance},
#{ringRadius},
#{requiredRingRadius},
+ #{timeoutLock},
@@ -252,6 +256,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
outage_distance = #{data.outageDistance},
ring_radius = #{data.ringRadius},
required_ring_radius = #{data.requiredRingRadius},
+ timeout_lock = #{data.timeoutLock},
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/area/service/impl/AreaConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/area/service/impl/AreaConverterImpl.java
index 4ec537f..048f259 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/area/service/impl/AreaConverterImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/area/service/impl/AreaConverterImpl.java
@@ -32,6 +32,7 @@ public class AreaConverterImpl implements AreaConverter {
po.setAreaOutOutage(data.getAreaOutOutage());
po.setBoundaryDistance(data.getBoundaryDistance());
po.setOutageDistance(data.getOutageDistance());
+ po.setTimeoutLock(data.getTimeoutLock());
// 还车设置
po.setError(data.getError());
@@ -74,7 +75,8 @@ public class AreaConverterImpl implements AreaConverter {
po.setAreaOutOutage(data.getAreaOutOutage());
po.setBoundaryDistance(data.getBoundaryDistance());
po.setOutageDistance(data.getOutageDistance());
-
+ po.setTimeoutLock(data.getTimeoutLock());
+
// 还车设置
po.setError(data.getError());
po.setReturnVerify(data.getReturnVerify());
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/areaSub/utils/AreaSubUtil.java b/ruoyi-service/src/main/java/com/ruoyi/bst/areaSub/utils/AreaSubUtil.java
index d15a62b..95de45d 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/areaSub/utils/AreaSubUtil.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/areaSub/utils/AreaSubUtil.java
@@ -6,6 +6,7 @@ import java.util.List;
import org.locationtech.jts.geom.Geometry;
import com.ruoyi.bst.areaSub.domain.AreaSubVO;
+import com.ruoyi.bst.areaSub.domain.enums.AreaSubStatus;
import com.ruoyi.common.utils.collection.CollectionUtils;
import com.ruoyi.common.utils.map.GeoUtils;
@@ -35,6 +36,9 @@ public class AreaSubUtil {
if (geometry == null) {
continue;
}
+ if (AreaSubStatus.DISABLED.getCode().equals(area.getStatus())) {
+ continue;
+ }
if(area.getError() != null ){
tolerance = area.getError();
}
@@ -67,6 +71,9 @@ public class AreaSubUtil {
if (geometry == null) {
continue;
}
+ if (AreaSubStatus.DISABLED.getCode().equals(area.getStatus())) {
+ continue;
+ }
if (area.getError() != null) {
tolerance = area.getError();
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/DeviceVO.java b/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/DeviceVO.java
index a1e1319..3038847 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/DeviceVO.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/DeviceVO.java
@@ -1,6 +1,7 @@
package com.ruoyi.bst.device.domain;
import java.math.BigDecimal;
+import java.time.LocalDateTime;
import java.time.LocalTime;
import org.springframework.format.annotation.DateTimeFormat;
@@ -67,7 +68,7 @@ public class DeviceVO extends Device {
@ApiModelProperty("是否必须停车点还车")
private Boolean areaParkingReturn;
- // 订单
+ // 订单设备
@ApiModelProperty("当前订单ID")
private Long orderId;
@ApiModelProperty("当前订单状态")
@@ -76,8 +77,18 @@ public class DeviceVO extends Device {
private String orderNo;
@ApiModelProperty("当前订单设备状态")
private String orderDeviceStatus;
+ @ApiModelProperty("当前订单设备开始时间")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime orderDeviceStartTime;
+ @ApiModelProperty("当前订单设备结束时间")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime orderDeviceEndTime;
@ApiModelProperty("当前订单用户ID")
private Long orderUserId;
+ @ApiModelProperty("当前订单用户名称")
+ private String orderUserName;
+ @ApiModelProperty("当前订单用户手机号")
+ private String orderUserPhone;
// 硬件版本
@ApiModelProperty("硬件版本")
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/device/mapper/DeviceMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/device/mapper/DeviceMapper.xml
index d94eb72..518b943 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/device/mapper/DeviceMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/device/mapper/DeviceMapper.xml
@@ -44,7 +44,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bd.last_online_time,
bd.order_device_id,
bd.software_version,
- bd.last_user_id,
mch.nick_name as mch_name,
mch.point as mch_point,
bm.name as model_name,
@@ -73,10 +72,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bo.user_id as order_user_id,
bod.status as order_device_status,
bod.order_id as order_id,
+ bod.start_time as order_device_start_time,
+ bod.end_time as order_device_end_time,
bhv.version as hardware_version,
bhv.instructions as hardware_version_instructions,
- bul.nick_name as last_user_name,
- bul.user_name as last_user_phone
+ suo.nick_name as order_user_name,
+ suo.user_name as order_user_phone
from
@@ -84,13 +85,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bst_device bd
left join sys_user mch on bd.mch_id = mch.user_id
left join bst_model bm on bd.model_id = bm.id
+ left join bst_hardware_version bhv on bhv.id = bd.hardware_version_id
left join bst_area ba on bd.area_id = ba.id
left join sys_user basu on basu.user_id = ba.user_id
left join sys_user basua on basua.user_id = basu.agent_id
- left join sys_user bul on bul.user_id = bd.last_user_id
left join bst_order_device bod on bod.id = bd.order_device_id
left join bst_order bo on bo.id = bod.order_id
- left join bst_hardware_version bhv on bhv.id = bd.hardware_version_id
+ left join sys_user suo on suo.user_id = bo.user_id
@@ -122,11 +123,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and basua.nick_name like concat('%', #{query.areaAgentName}, '%')
and bo.no like concat('%', #{query.orderNo}, '%')
and bd.id != #{query.excludeId}
- and bd.last_user_id = #{query.lastUserId}
- and bul.nick_name like concat('%', #{query.lastUserName}, '%')
- and bul.user_name like concat('%', #{query.lastUserPhone}, '%')
and mch.nick_name like concat('%', #{query.mchName}, '%')
and bm.name like concat('%', #{query.modelName}, '%')
+ and suo.nick_name like concat('%', #{query.orderUserName}, '%')
+ and suo.user_name like concat('%', #{query.orderUserPhone}, '%')
and bd.last_location_time <= #{query.lastTimeEnd}
and bd.last_location_time >= #{query.lastTimeStart}
@@ -230,7 +230,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
last_online_time,
order_device_id,
software_version,
- last_user_id,
#{modelId},
@@ -265,7 +264,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{lastOnlineTime},
#{orderDeviceId},
#{softwareVersion},
- #{lastUserId},
@@ -310,7 +308,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bd.last_online_time = #{data.lastOnlineTime},
bd.order_device_id = #{data.orderDeviceId},
bd.software_version = #{data.softwareVersion},
- bd.last_user_id = #{data.lastUserId},
@@ -373,8 +370,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bd.longitude,
bd.latitude,
bod.status as order_device_status,
- bod.order_id
+ bod.order_id,
+ bm.full_voltage as model_full_voltage,
+ bm.low_voltage as model_low_voltage,
+ bm.full_endurance as model_full_endurance
from bst_device bd
+ left join bst_model bm on bm.id = bd.model_id
left join bst_order_device bod on bod.id = bd.order_device_id
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
index 85ffe43..0044ec3 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
@@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
-public class OrderQuery extends OrderVO {
+public class OrderQuery extends OrderVO {
@ApiModelProperty("id列表")
private List ids;
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java
index 92e5b5e..598606c 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java
@@ -5,12 +5,13 @@ import java.time.LocalDateTime;
import java.util.List;
import com.ruoyi.bst.orderDevice.domain.OrderDeviceVO;
+import com.ruoyi.iot.interfaces.IotDevice;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
-public class OrderVO extends Order {
+public class OrderVO extends Order implements IotDevice {
// 订单设备
@ApiModelProperty("当前设备ID")
@@ -33,6 +34,10 @@ public class OrderVO extends Order {
private BigDecimal returnLon;
@ApiModelProperty("还车纬度")
private BigDecimal returnLat;
+ @ApiModelProperty("当前经度")
+ private BigDecimal currentLon;
+ @ApiModelProperty("当前纬度")
+ private BigDecimal currentLat;
@ApiModelProperty("订单设备列表")
private List orderDeviceList;
@@ -65,4 +70,18 @@ public class OrderVO extends Order {
private BigDecimal payAdminRefund;
+ @Override
+ public String mac() {
+ return this.deviceMac;
+ }
+
+ @Override
+ public BigDecimal longitude() {
+ return this.currentLon;
+ }
+
+ @Override
+ public BigDecimal latitude() {
+ return this.currentLat;
+ }
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/vo/OrderInParkingVO.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/vo/OrderInParkingVO.java
index e926fce..27fdd46 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/vo/OrderInParkingVO.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/vo/OrderInParkingVO.java
@@ -9,6 +9,9 @@ import lombok.Data;
@Data
public class OrderInParkingVO {
+
+ @ApiModelProperty("停车区数量")
+ private Integer parkingCount;
@ApiModelProperty("手机定位所在停车区")
private AreaSubVO mobileAreaSub;
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
index 97ad65a..80cec45 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
@@ -72,7 +72,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bod.end_area_sub_name,
bod.return_mode,
bod.return_lon,
- bod.return_lat
+ bod.return_lat,
+ bd.longitude as current_lon,
+ bd.latitude as current_lat
from
@@ -82,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join sys_user su on bo.user_id = su.user_id
left join bst_pay bp on bo.pay_id = bp.id
left join bst_order_device bod on bod.id = bo.order_device_id
+ left join bst_device bd on bod.device_id = bd.id
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/OrderValidator.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/OrderValidator.java
index 696a596..e8afc76 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/OrderValidator.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/OrderValidator.java
@@ -90,4 +90,15 @@ public interface OrderValidator {
*/
boolean canOperate(Long orderId);
+ /**
+ * 校验订单是否超时
+ * @param order 订单
+ * @return 是否超时
+ */
+ boolean isTimeout(OrderVO order);
+
+ /**
+ * 是否是用户
+ */
+ boolean isUser(Long orderId, Long userId);
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderValidatorImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderValidatorImpl.java
index 7c38434..fcdc3e6 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderValidatorImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderValidatorImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.bst.order.service.impl;
+import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collections;
import java.util.HashSet;
@@ -165,6 +166,12 @@ public class OrderValidatorImpl implements OrderValidator{
public void checkInParking(AreaVO area, OrderInParkingVO inParkingVO) {
log.info("【还车定位校验】运营区:{},定位数据:{}", area.getName(), inParkingVO);
ServiceUtil.assertion(inParkingVO == null, "参数错误,停车点信息不存在");
+ ServiceUtil.assertion(area == null, "参数错误,运营区信息不存在");
+
+ if (inParkingVO.getParkingCount() != null && inParkingVO.getParkingCount() == 0) {
+ log.warn("运营区{}的停车区数量为0,无需校验停车区", area.getName());
+ return;
+ }
boolean mustInParking = area.getParkingReturn() != null && area.getParkingReturn();
boolean inParking = inParkingVO.getInParking() != null && inParkingVO.getInParking();
@@ -224,4 +231,15 @@ public class OrderValidatorImpl implements OrderValidator{
List list = orderMapper.selectIdByQuery(query);
return new HashSet<>(list).containsAll(orderIds);
}
+
+ @Override
+ public boolean isTimeout(OrderVO order) {
+ return order != null && order.getMaxTime() != null && order.getMaxTime().isBefore(LocalDateTime.now());
+ }
+
+ @Override
+ public boolean isUser(Long orderId, Long userId) {
+ OrderVO order = orderMapper.selectOrderById(orderId);
+ return isUser(order, userId);
+ }
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/utils/OrderUtil.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/utils/OrderUtil.java
index 0ece95a..87bce18 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/utils/OrderUtil.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/utils/OrderUtil.java
@@ -126,6 +126,10 @@ public class OrderUtil {
BigDecimal deviceLon = device.getLongitude();
BigDecimal deviceLat = device.getLatitude();
+ // 停车区数量
+ int parkingCount = parkingList == null ? 0 : parkingList.size();
+ vo.setParkingCount(parkingCount);
+
// 通过设备定位获取所在停车点
AreaSubVO deviceAreaSub = AreaSubUtil.getInAreaSub(parkingList, deviceLon, deviceLat, areaError);
vo.setDeviceAreaSub(deviceAreaSub);
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/service/impl/OrderDeviceServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/service/impl/OrderDeviceServiceImpl.java
index b42c782..c8e27f6 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/service/impl/OrderDeviceServiceImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/service/impl/OrderDeviceServiceImpl.java
@@ -182,11 +182,11 @@ public class OrderDeviceServiceImpl implements OrderDeviceService
query.setStatusList(OrderDeviceStatus.canStart());
int rows = orderDeviceMapper.updateByQuery(data, query);
- if (rows > 0 ) {
- // 更新设备最后一次使用的用户ID
- int update = deviceService.updateLastUserId(orderDevice.getDeviceId(), orderDevice.getOrderUserId());
- ServiceUtil.assertion(update != 1, "更新设备最后一次使用的用户ID失败");
- }
+ // if (rows > 0 ) {
+ // // 更新设备最后一次使用的用户ID
+ // int update = deviceService.updateLastUserId(orderDevice.getDeviceId(), orderDevice.getOrderUserId());
+ // ServiceUtil.assertion(update != 1, "更新设备最后一次使用的用户ID失败");
+ // }
return rows;
});
@@ -236,8 +236,8 @@ public class OrderDeviceServiceImpl implements OrderDeviceService
int rows = orderDeviceMapper.updateByQuery(data, query);
// 清除设备当前订单设备ID
- int clear = deviceService.clearCurrentOrderDevice(orderDevice.getDeviceId(), orderDevice.getId());
- ServiceUtil.assertion(clear != 1, "清除设备当前订单ID失败");
+ // int clear = deviceService.clearCurrentOrderDevice(orderDevice.getDeviceId(), orderDevice.getId());
+ // ServiceUtil.assertion(clear != 1, "清除设备当前订单ID失败");
return rows;
});
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/refund/service/impl/RefundConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/refund/service/impl/RefundConverterImpl.java
index 473d62c..17fdb51 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/refund/service/impl/RefundConverterImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/refund/service/impl/RefundConverterImpl.java
@@ -22,6 +22,7 @@ public class RefundConverterImpl implements RefundConverter{
refund.setReason(dto.getRefundReason());
refund.setUserId(dto.getUserId());
refund.setUserName(dto.getUserName());
+ refund.setType(dto.getType());
return refund;
}
}
diff --git a/ruoyi-web/src/main/java/com/ruoyi/task/order/OrderTask.java b/ruoyi-web/src/main/java/com/ruoyi/task/order/OrderTask.java
index 4a158fb..29c0506 100644
--- a/ruoyi-web/src/main/java/com/ruoyi/task/order/OrderTask.java
+++ b/ruoyi-web/src/main/java/com/ruoyi/task/order/OrderTask.java
@@ -9,18 +9,19 @@ import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
+import com.ruoyi.bst.device.service.DeviceIotService;
import com.ruoyi.bst.locationLog.domain.vo.LocationLogPositionVO;
import com.ruoyi.bst.locationLog.service.LocationLogService;
import com.ruoyi.bst.locationLog.utils.LocationLogUtil;
import com.ruoyi.bst.order.domain.OrderQuery;
import com.ruoyi.bst.order.domain.OrderVO;
-import com.ruoyi.bst.order.domain.dto.OrderEndDTO;
-import com.ruoyi.bst.order.domain.enums.OrderReturnType;
import com.ruoyi.bst.order.domain.enums.OrderStatus;
import com.ruoyi.bst.order.mapper.OrderMapper;
import com.ruoyi.bst.order.service.OrderService;
import com.ruoyi.common.utils.ServiceUtil;
import com.ruoyi.common.utils.collection.CollectionUtils;
+import com.ruoyi.iot.constants.IotConstants;
+import com.ruoyi.iot.service.IotService;
import lombok.extern.slf4j.Slf4j;
@@ -37,6 +38,11 @@ public class OrderTask implements ApplicationRunner {
@Autowired
private LocationLogService locationLogService;
+ @Autowired
+ private DeviceIotService deviceIotService;
+
+ @Autowired
+ private IotService iotService;
@Override
public void run(ApplicationArguments args) throws Exception {
@@ -55,9 +61,9 @@ public class OrderTask implements ApplicationRunner {
}
/**
- * 关闭超过最大可用时间的订单
+ * 处理超过最大可用时间的订单
*/
- public void closeExpireMaxTimeOrder() {
+ public void handleExpireMaxTimeOrder() {
// 查询超过最大可用时间的订单
OrderQuery query = new OrderQuery();
query.setStatusList(OrderStatus.inUse());
@@ -71,11 +77,12 @@ public class OrderTask implements ApplicationRunner {
for (OrderVO order : orderList) {
try {
- OrderEndDTO dto = new OrderEndDTO();
- dto.setReturnType(OrderReturnType.SYSTEM.getCode());
- dto.setOrderId(order.getId());
- dto.setEndReason("超时系统自动结束");
- orderService.endOrder(dto);
+ // OrderEndDTO dto = new OrderEndDTO();
+ // dto.setReturnType(OrderReturnType.SYSTEM.getCode());
+ // dto.setOrderId(order.getId());
+ // dto.setEndReason("超时系统自动结束");
+ // orderService.endOrder(dto);
+ iotService.play(order, IotConstants.PLAY_END, "超时系统警告");
} catch (Exception e) {
log.error("结束订单失败,订单ID:{}", order.getId(), e);
}
diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppDeviceIotController.java b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppDeviceIotController.java
index 6b39453..f01f8bd 100644
--- a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppDeviceIotController.java
+++ b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppDeviceIotController.java
@@ -50,6 +50,7 @@ public class AppDeviceIotController extends BaseController {
ServiceUtil.assertion(device == null, "当前车辆不存在,无法响铃寻车");
if (device.getAreaRequiredRingRadius() != null && device.getAreaRequiredRingRadius()) {
+ ServiceUtil.assertion(lon == null || lat == null, "请开启定位后重试");
BigDecimal distance = GeoUtils.calculateDistance(device.getLatitude(), device.getLongitude(), lat, lon);
ServiceUtil.assertion(MathUtils.biggerThan(distance, device.getAreaRingRadius()),
"您当前距离车辆%s米,无法响铃寻车。请距离车辆%s米以内再试", distance, device.getAreaRingRadius());
diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppLocationLogController.java b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppLocationLogController.java
index 68bfab0..d7ff8d3 100644
--- a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppLocationLogController.java
+++ b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppLocationLogController.java
@@ -1,12 +1,51 @@
package com.ruoyi.web.app;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.bst.locationLog.domain.LocationLogQuery;
+import com.ruoyi.bst.locationLog.domain.LocationLogVO;
+import com.ruoyi.bst.locationLog.service.LocationLogService;
+import com.ruoyi.bst.order.service.OrderValidator;
import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+
+import io.swagger.annotations.ApiOperation;
+
@RestController
@RequestMapping("/app/locationLog")
public class AppLocationLogController extends BaseController {
+
+ @Autowired
+ private LocationLogService locationLogService;
+
+ @Autowired
+ private OrderValidator orderValidator;
+
+ private boolean canView(Long orderId) {
+ return orderValidator.isUser(orderId, getUserId());
+ }
+
+ @ApiOperation("根据订单ID查询定位日志")
+ @GetMapping("/allByOrder")
+ public AjaxResult getAllByOrder(Long orderId) {
+ if (orderId == null) {
+ return error("订单ID不允许为空");
+ }
+ if (!canView(orderId)) {
+ return error("您无权查看ID为" + orderId + "的订单轨迹");
+ }
+
+ LocationLogQuery query = new LocationLogQuery();
+ query.setOrderId(orderId);
+ List list = locationLogService.selectLocationLogList(query);
+ return success(list);
+ }
+
}
diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppOrderController.java b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppOrderController.java
index 10edd8d..fc9899c 100644
--- a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppOrderController.java
+++ b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppOrderController.java
@@ -129,6 +129,7 @@ public class AppOrderController extends BaseController {
OrderVO order = orderService.selectOrderById(orderId);
ServiceUtil.assertion(order == null, "订单不存在");
ServiceUtil.assertion(!orderValidator.canOpenDevice(order, getUserId()), "您无权操作ID为%s的订单设备开启", order.getId());
+ ServiceUtil.assertion(orderValidator.isTimeout(order), "当前订单已超时,请在安全的区域还车");
return success(orderService.openDevice(order, true));
}
@@ -139,6 +140,7 @@ public class AppOrderController extends BaseController {
OrderVO order = orderService.selectOrderById(dto.getOrderId());
ServiceUtil.assertion(order == null, "订单不存在");
ServiceUtil.assertion(!orderValidator.canCloseDevice(order, getUserId()), "您无权操作ID为%s的订单设备关闭", order.getId());
+ ServiceUtil.assertion(orderValidator.isTimeout(order), "当前订单已超时,请在安全的区域还车");
dto.setRequiredIot(true);
return success(orderService.closeDevice(dto));
}
@@ -149,6 +151,7 @@ public class AppOrderController extends BaseController {
public AjaxResult changeDevice(@RequestBody @Validated OrderChangeDeviceDTO dto) {
OrderVO order = orderService.selectOrderById(dto.getOrderId());
ServiceUtil.assertion(!orderValidator.canChangeDevice(order, getUserId()), "您无权操作ID为%s的订单换车", order.getId());
+ ServiceUtil.assertion(orderValidator.isTimeout(order), "当前订单已超时,请在安全的区域还车");
dto.setUserId(getUserId());
dto.setUserName(getNickName());
return toAjax(orderService.changeDevice(dto));