From 255db1f1ddd23fcbebc86283b9c6c63e1d480dc1 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 20 三月 2026 20:01:18 +0800
Subject: [PATCH] fix:动态调价触发定时任务
---
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java
index 0cf5465..33cf0b3 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java
@@ -38,10 +38,14 @@
import com.xiaopeng.operation.service.IXpGeoQueryEntityService;
import com.xiaopeng.operation.service.XpPointService;
import com.xiaopeng.operation.service.XpPricingService;
+import com.xiaopeng.operation.job.base.QuartzManager;
+import com.xiaopeng.operation.job.base.TimeJobType;
+import com.xiaopeng.operation.job.jobs.DynamicPricingCheckJob;
import com.xiaopeng.operation.utils.XpPricingUtil;
import com.xiaopeng.operation.utils.holiday.HolidayUtil;
import com.xiaopeng.operation.utils.map.FastDistanceCalculator;
import com.xiaopeng.operation.vo.PricingPageListVO;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.stereotype.Service;
@@ -63,6 +67,7 @@
* @author liu
* @since 2026-02-03
*/
+@Slf4j
@Service
public class XpPricingServiceImpl extends ServiceImpl<XpPricingMapper, XpPricing> implements XpPricingService {
@@ -762,6 +767,28 @@
update.setDynamicPricingJson(dto.getDynamicPricingJson());
update.setIsDynamicPrice(dto.getIsDynamicPrice());
this.updateById(update);
+
+ // 动态调价 Quartz 任务调度
+ String jobName = DynamicPricingCheckJob.JOB_PREFIX + dto.getId();
+ if (Integer.valueOf(1).equals(dto.getIsDynamicPrice())
+ && StringUtils.isNotBlank(dto.getDynamicPricingJson())) {
+ JSONObject dynamicJson = JSONObject.parseObject(dto.getDynamicPricingJson());
+ Integer periodMinutes = dynamicJson.getInteger("num1");
+ if (periodMinutes != null && periodMinutes > 0) {
+ // 先移除可能存在的旧任务,再注册新任务(num1 分钟后首次执行)
+ QuartzManager.removeJob(jobName, TimeJobType.DYNAMIC_PRICING_CHECK);
+ Date triggerTime = new Date(System.currentTimeMillis() + periodMinutes * 60_000L);
+ Map<String, Object> jobData = new HashMap<>();
+ jobData.put("pricingId", dto.getId());
+ QuartzManager.addJob(DynamicPricingCheckJob.class, jobName,
+ TimeJobType.DYNAMIC_PRICING_CHECK, triggerTime, jobData);
+ log.info("动态调价任务已注册 pricingId={}, 供需计算周期={}分钟", dto.getId(), periodMinutes);
+ }
+ } else {
+ // 关闭动态调价时,移除已存在的任务
+ QuartzManager.removeJob(jobName, TimeJobType.DYNAMIC_PRICING_CHECK);
+ log.info("动态调价任务已移除 pricingId={}", dto.getId());
+ }
}
@Override
--
Gitblit v1.7.1