Commit 702bf887 by 吕明尚

增加自动解决异常订单

parent 4292bc2e
package share.quartz.task;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.*;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
......@@ -15,6 +12,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import share.common.constant.Constants;
import share.common.core.redis.RedisUtil;
import share.common.enums.*;
......@@ -72,6 +70,9 @@ public class OrderTask {
@Autowired
private ISStoreService storeService;
@Autowired
private ISCleanRecordsService isCleanRecordsService;
final int ZERO = 0;
//10分钟的常量
......@@ -324,16 +325,41 @@ public class OrderTask {
public void orderCompensate() {
// 订单状态处理
LambdaQueryWrapper<SOrder> queryWrapper = new LambdaQueryWrapper();
queryWrapper.le(SOrder::getEndDate, DateUtil.offset(DateUtil.date(), DateField.MINUTE, -5));
queryWrapper.le(SOrder::getEndDate, DateUtil.offset(DateUtil.date(), DateField.MINUTE, -2));
queryWrapper.in(SOrder::getStatus, OrderStatusEnum.UNUSED.getCode(),OrderStatusEnum.INUSE.getCode());
queryWrapper.eq(SOrder::getPayStatus, 1);
queryWrapper.eq(SOrder::getPayStatus, YesNoEnum.yes.getIndex());
List<SOrder> orders = orderService.list(queryWrapper);
if (orders != null && orders.size() > 0) {
orders.forEach(order -> {
order.setStatus(OrderStatusEnum.USED.getCode());
order.setUpdateTime(new Date());
orders.stream().forEach(sOrder -> {
logger.debug("订单号为:" + sOrder.getOrderNo() + "的订单异常");
//更改订单状态
sOrder.setStatus(OrderStatusEnum.USED.getCode());
sOrder.setUpdateTime(new Date());
orderService.updateById(sOrder);
// 修改房间状态
SRoom room = roomService.getById(sOrder.getRoomId());
if (ObjectUtil.isNotEmpty(room)) {
room.setStatus(RoomStatusEnum.FREE.getValue());
room.setUpdateTime(new Date());
roomService.updateById(room);
}
//判断订单是否已经添加保洁记录
SCleanRecords cleanRecords = isCleanRecordsService.lastCleanByRoomId(sOrder.getRoomId());
if (ObjectUtils.isEmpty(cleanRecords) || cleanRecords.getStatus().compareTo(CleaningStatusEnum.UNCLEAN.getCode()) != 0) {
boolean b = isCleanRecordsService.addSCleanRecords(sOrder.getStoreId(), sOrder.getRoomId());
}
deviceOpService.actionExecute(sOrder.getRoomId(), sOrder.getConsumerPhone(), VoiceEnum.SEND_CUSTOMER.getCode(),
DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN),
DateUtil.format(DateUtil.offsetMinute(new Date(), 1), DatePattern.NORM_DATETIME_PATTERN), "1",
DeviceOpSourceEnum.DEVICE_SOURCE_20.getCode());
//延时3分钟断电
deviceOpService.openOrCloseDevice(sOrder.getRoomId(), sOrder.getConsumerPhone(), OpTypeEnum.CUT_ELECTRIC.getCode(), false, 0L,
DeviceOpSourceEnum.DEVICE_SOURCE_20.getCode());
logger.debug("订单号为:" + sOrder.getOrderNo() + "的订单已结束,更改订单状态为已使用");
// order.setStatus(OrderStatusEnum.USED.getCode());
// order.setUpdateTime(new Date());
});
orderService.updateBatchById(orders,orders.size());
// orderService.updateBatchById(orders,orders.size());
}
// 房间状态处理
LambdaQueryWrapper<SRoom> queryRoomWrapper = new LambdaQueryWrapper();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment