From c6d5c883a516577f89abc5972ed097d569245fc2 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 21 三月 2026 09:00:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 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