diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/ErpGoofishOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/ErpGoofishOrderController.java index bad6719..bf1dc2f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/ErpGoofishOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/ErpGoofishOrderController.java @@ -40,6 +40,12 @@ public class ErpGoofishOrderController extends BaseController { return getDataTable(list); } + @PreAuthorize("@ss.hasPermi('jarvis:erpGoofishOrder:list')") + @GetMapping("/stats/rrsLogistics") + public AjaxResult rrsLogisticsStats() { + return AjaxResult.success(erpGoofishOrderService.selectRrsJdLinkedLogisticsStats()); + } + @PreAuthorize("@ss.hasPermi('jarvis:erpGoofishOrder:list')") @GetMapping("/list") public TableDataInfo list(ErpGoofishOrder query) { diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 1a35247..bf13a50 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -208,7 +208,7 @@ jarvis: adhoc-pending-batch-size: 50 # 物流扫描(LogisticsScanTask):轮询 JD 单拉运单 + drain 分享链队列 scan: - cron: "0 */20 * * * ?" + cron: "0 */5 * * * ?" order-delay-ms: 250 # 0=不限制;例如 40 可控制单轮最长耗时(余下下轮再扫) max-orders-per-round: 0 diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 6ff413e..f3f6038 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -206,7 +206,7 @@ jarvis: health-path: /health adhoc-pending-batch-size: 50 scan: - cron: "0 */20 * * * ?" + cron: "0 */5 * * * ?" order-delay-ms: 250 max-orders-per-round: 0 # 获取评论接口服务地址(后端转发) diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/dto/GoofishRrsLogisticsStatsVo.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/dto/GoofishRrsLogisticsStatsVo.java new file mode 100644 index 0000000..6048228 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/dto/GoofishRrsLogisticsStatsVo.java @@ -0,0 +1,16 @@ +package com.ruoyi.jarvis.dto; + +import lombok.Data; + +/** + * 闲管家订单:日日顺承运且已关联京东单的出库统计口径(与前台「手动推送/hasPlatformShipped」基本一致)。 + */ +@Data +public class GoofishRrsLogisticsStatsVo { + + /** 已出库:有有效运单去重计数 + 无运单但已发货/完成或本系统发货成功的订单数 */ + private long shippedOutboundCount; + + /** 待出库:平台「待发货」且无运单、且非本系统发货成功 */ + private long pendingOutboundCount; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/mapper/ErpGoofishOrderMapper.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/mapper/ErpGoofishOrderMapper.java index 7617b84..f8ab5f6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/mapper/ErpGoofishOrderMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/mapper/ErpGoofishOrderMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.jarvis.mapper; import com.ruoyi.jarvis.domain.ErpGoofishOrder; +import com.ruoyi.jarvis.dto.GoofishRrsLogisticsStatsVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -25,4 +26,9 @@ public interface ErpGoofishOrderMapper { List selectByGoofishOrderNo(@Param("orderNo") String orderNo); int resetShipForRetry(@Param("id") Long id); + + /** + * 已关联 jd_order_id、承运为日日顺(rrs 或名称含日日顺);排除已退款/已关闭。 + */ + GoofishRrsLogisticsStatsVo selectRrsJdLinkedLogisticsStats(); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/IErpGoofishOrderService.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/IErpGoofishOrderService.java index bbfe339..2ef7e54 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/IErpGoofishOrderService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/IErpGoofishOrderService.java @@ -5,6 +5,7 @@ import com.ruoyi.jarvis.domain.ErpGoofishOrder; import com.ruoyi.jarvis.domain.ErpGoofishOrderEventLog; import com.ruoyi.jarvis.domain.ErpGoofishOrderEventLogQuery; import com.ruoyi.jarvis.dto.GoofishShipPreviewVo; +import com.ruoyi.jarvis.dto.GoofishRrsLogisticsStatsVo; import java.util.List; @@ -17,6 +18,9 @@ public interface IErpGoofishOrderService { */ void asyncPipelineAfterNotify(String appid, JSONObject notifyBody); + /** 日日顺 + 关联京东出库统计(侧边栏):已出库(去重运单口径)/待出库 */ + GoofishRrsLogisticsStatsVo selectRrsJdLinkedLogisticsStats(); + List selectList(ErpGoofishOrder query); ErpGoofishOrder selectById(Long id); diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/ErpGoofishOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/ErpGoofishOrderServiceImpl.java index b39732b..a2830d3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/ErpGoofishOrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/ErpGoofishOrderServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.jarvis.domain.JDOrder; import com.ruoyi.jarvis.domain.ErpGoofishOrderEventLogQuery; import com.ruoyi.jarvis.domain.ErpOpenConfig; import com.ruoyi.jarvis.dto.GoofishNotifyMessage; +import com.ruoyi.jarvis.dto.GoofishRrsLogisticsStatsVo; import com.ruoyi.jarvis.dto.GoofishShipPreviewVo; import com.ruoyi.jarvis.mapper.ErpGoofishOrderEventLogMapper; import com.ruoyi.jarvis.mapper.ErpGoofishOrderMapper; @@ -83,6 +84,12 @@ public class ErpGoofishOrderServiceImpl implements IErpGoofishOrderService { goofishOrderPipeline.runFullPipeline(appid, notifyBody); } + @Override + public GoofishRrsLogisticsStatsVo selectRrsJdLinkedLogisticsStats() { + GoofishRrsLogisticsStatsVo vo = erpGoofishOrderMapper.selectRrsJdLinkedLogisticsStats(); + return vo != null ? vo : new GoofishRrsLogisticsStatsVo(); + } + @Override public List selectList(ErpGoofishOrder query) { return erpGoofishOrderMapper.selectList(query); diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/task/LogisticsScanTask.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/task/LogisticsScanTask.java index 068e906..a33985c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/task/LogisticsScanTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/task/LogisticsScanTask.java @@ -15,7 +15,7 @@ import java.util.List; /** * 物流信息扫描定时任务 - * 按配置周期(默认每 20 分钟)扫描分销标记为 F/PDD 等的订单(最近 30 天),拉物流并推送; + * 按配置周期(默认每 5 分钟)扫描分销标记为 F/PDD 等的订单(最近 30 天),拉物流并推送; * 结束后处理企微分享链 adhoc 队列。 */ @Component @@ -39,7 +39,7 @@ public class LogisticsScanTask { /** * 只扫描最近 30 天的订单(SQL 固定);周期与单轮上限见 jarvis.server.logistics.scan.* */ - @Scheduled(cron = "${jarvis.server.logistics.scan.cron:0 */20 * * * ?}") + @Scheduled(cron = "${jarvis.server.logistics.scan.cron:0 */5 * * * ?}") public void scanAndFetchLogistics() { long t0 = System.currentTimeMillis(); int orderCandidates = 0; diff --git a/ruoyi-system/src/main/resources/mapper/jarvis/ErpGoofishOrderMapper.xml b/ruoyi-system/src/main/resources/mapper/jarvis/ErpGoofishOrderMapper.xml index 2c69b80..88a9699 100644 --- a/ruoyi-system/src/main/resources/mapper/jarvis/ErpGoofishOrderMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/jarvis/ErpGoofishOrderMapper.xml @@ -182,4 +182,65 @@ update_time = now() where id = #{id} + + +