diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/TradeController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/TradeController.java index e1977f2..76ea8f2 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/TradeController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/TradeController.java @@ -66,6 +66,7 @@ public class TradeController { @PostMapping({"/wechatpay/notify"}) @ApiOperationSupport(order = 5) @Hidden + public Result wechatPayNotifyHandle(@ParameterObject TradeDetail tradeDetail) { return tradeService.wechatPayNotifyHandle(tradeDetail); } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/StateMessageService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/StateMessageService.java index 57a3419..0b637b3 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/StateMessageService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/StateMessageService.java @@ -163,7 +163,7 @@ public class StateMessageService { OrderSwapBattery orderSwapBattery = orderSwapBatteryDao.selectOne(wrapper); //计算费用方式 if (orderSwapBattery.getFeeType()==3){ - log.info("\r\n=====>>>换电订单电量结算,订单号:{}",orderStatus.getOrderNo() ); + log.info("\r\n=====>>>换电订单电量结算,订单号:{}",orderStatus.getOrderNo() ); orderSwapBatteryService.calculateCost(orderStatus.getOrderNo()); } batteryStationDcDao.update(dc, new QueryWrapper().eq("bat_code", statusData.getBatCode())); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/OrderSwapBatteryTask.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/OrderSwapBatteryTask.java index c5505fa..9d61380 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/OrderSwapBatteryTask.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/OrderSwapBatteryTask.java @@ -22,37 +22,59 @@ public class OrderSwapBatteryTask { @Resource private OrderSwapBatteryPreDao orderSwapBatteryPreDao; - @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次 + // @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次 public void orderSwapBatteryExpired() { - log.info("\r\n===>>> 开始查找预约单更新预约状态.."); + log.info("===>>> 开始查找预约单更新预约状态..."); - // 查询条件,排除已过期和无效状态 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.ne("status", 4)//无效 - .ne("status", 3); //过期 + try { + // 查询条件:排除已过期(3)和无效(4)的订单 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ne("status", 4) // 无效 + .ne("status", 3) // 过期 + .isNotNull("reservation_time"); // 确保预约时间不为空 - List orderSwapBatteryPreList = orderSwapBatteryPreDao.selectList(queryWrapper); + List orderSwapBatteryPreList = orderSwapBatteryPreDao.selectList(queryWrapper); - // 获取当前时间 - Date currentTime = new Date(); - int expiredCount = 0; // 记录过期的预约单数量 + // 获取当前时间 + Date currentTime = new Date(); + int expiredCount = 0; // 记录过期的预约单数量 - for (OrderSwapBatteryPre order : orderSwapBatteryPreList) { - // 检查预约时间是否已过期 - if (order.getReservationTime() != null && order.getReservationTime().before(currentTime)) { - // 更新状态为过期 - order.setStatus(4); // 设置为过期状态 - try { - orderSwapBatteryPreDao.updateById(order); - expiredCount++; - log.info("预约单已过期,订单ID: {}", order.getSourceId()); // 记录过期的订单ID - } catch (Exception e) { - log.error("更新预约单状态失败,预约人:{},订单ID: {}, 错误信息: {}",order.getUname(), order.getPkId(), e.getMessage()); + for (OrderSwapBatteryPre order : orderSwapBatteryPreList) { + // 计算时间差(毫秒) + long timeDiff = currentTime.getTime() - order.getReservationTime().getTime(); + // 24小时 = 24 * 60 * 60 * 1000 毫秒 + if (timeDiff >= 24 * 60 * 60 * 1000) { + try { + // 更新状态为过期 + order.setStatus(3); // 设置为过期状态 + order.setUptime(currentTime); // 更新修改时间 + orderSwapBatteryPreDao.updateById(order); + expiredCount++; + + log.info("预约单已过期 - 预约人: {}, 订单ID: {}, 预约时间: {}", + order.getUname(), + order.getPkId(), + DateUtil.format(order.getReservationTime(), "yyyy-MM-dd HH:mm:ss")); + + } catch (Exception e) { + log.error("更新预约单状态失败 - 预约人: {}, 订单ID: {}, 预约时间: {}, 错误信息: {}", + order.getUname(), + order.getPkId(), + DateUtil.format(order.getReservationTime(), "yyyy-MM-dd HH:mm:ss"), + e.getMessage()); + } } } - } - log.info("\r\n===>>> 预约单过期:{} 条数据", expiredCount); + if (expiredCount > 0) { + log.info("===>>> 本次处理过期预约单:{} 条", expiredCount); + } else { + log.info("===>>> 本次没有需要处理的过期预约单"); + } + + } catch (Exception e) { + log.error("处理过期预约单时发生异常: {}", e.getMessage(), e); + } } } diff --git a/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardMapper.xml b/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardMapper.xml index 512af7c..588de7f 100644 --- a/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardMapper.xml +++ b/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardMapper.xml @@ -39,12 +39,12 @@ yt_t_battery_station_hd_fee_standard a where a.station_code = #{stationCode} - - and a.day_begin <= #{day} - - - and a.day_end >= #{day} - + + and DATE_FORMAT(a.day_begin,'%Y-%m-%d') <=DATE_FORMAT(#{day},'%Y-%m-%d') + + + and DATE_FORMAT(a.day_end,'%Y-%m-%d') >= DATE_FORMAT(#{day},'%Y-%m-%d') + order by a.pk_id desc diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHMessageTemplateService.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHMessageTemplateService.java index d6dc1ef..d76e7b0 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHMessageTemplateService.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHMessageTemplateService.java @@ -2,6 +2,7 @@ package com.evotech.hd.wechat.service.gzh; import java.math.BigDecimal; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -31,6 +32,7 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import jakarta.annotation.Resource; +@Slf4j @Service public class GZHMessageTemplateService { @@ -83,6 +85,7 @@ public class GZHMessageTemplateService { data.setCar_number1(osbp.getPlateNum()); data.setThing2(osbp.getStationName()); data.setTime3(DateUtil.format(osbp.getReservationTime(), DatePattern.NORM_DATETIME_FORMATTER)); + log.info("预约完成推送公众号消息时间=======>:{}", DateUtil.format(osbp.getReservationTime(), DatePattern.NORM_DATETIME_FORMATTER)); data.setThing5(osbp.getUname()); data.setPhone_number4(osbp.getPhone()); sendData.setData(JSONUtil.parseObj(data)); @@ -129,6 +132,7 @@ public class GZHMessageTemplateService { data.setCharacter_string3(osb.getReturnBatCode()); data.setCharacter_string4(osb.getRentBatCode()); data.setTime5(DateUtil.format(osb.getOrderTime(), DatePattern.NORM_DATETIME_FORMATTER)); + log.info("付款完成推送公众号消息=======>:{}", JSONUtil.parseObj(data)); sendData.setData(JSONUtil.parseObj(data)); break; // 充电完成,待结算 @@ -141,6 +145,7 @@ public class GZHMessageTemplateService { chargeData.setCharacter_string25(osb.getElectAmount() + ""); chargeData.setAmount34(osb.getServiceFee().toString()); chargeData.setAmount28(osb.getAmount() + ""); + log.info("付款完成推送公众号消息=======>:{}", JSONUtil.parseObj(chargeData)); sendData.setData(JSONUtil.parseObj(chargeData)); break; // 付款完成 @@ -153,6 +158,7 @@ public class GZHMessageTemplateService { payData.setCar_number10(osb.getPlateNum()); payData.setAmount6(osb.getAmount() + ""); payData.setTime9(""); + log.info("付款完成推送公众号消息=======>:{}", JSONUtil.parseObj(payData)); sendData.setData(JSONUtil.parseObj(payData)); break; default: