package com.vincent.rsf.server.manager.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.api.controller.erp.params.InOutResultReportParam; import com.vincent.rsf.server.manager.entity.CloudWmsNotifyLog; import java.io.IOException; import java.util.List; /** 云仓上报待办 */ public interface CloudWmsNotifyLogService extends IService { List listPending(int limit, int maxRetry); void fillFromConfig(CloudWmsNotifyLog log); /** 上报类型:入出库结果(系统配置优先,缺省 IN_OUT_RESULT) */ String getReportTypeInOutResult(); /** 上报类型:库存调整(系统配置优先,缺省 INVENTORY_ADJUST) */ String getReportTypeInventoryAdjust(); /** 通知状态:待通知(系统配置优先,缺省 0) */ int getNotifyStatusPending(); /** 通知状态:已成功(系统配置优先,缺省 1) */ int getNotifyStatusSuccess(); /** 通知状态:失败(系统配置优先,缺省 2) */ int getNotifyStatusFail(); /** 入出库同单分组键(orderNo+入库/出库+仓),与调度内存合并一致 */ String inOutMergeKeyFromRequestBody(String requestBody); /** 解析请求体为入出库行列表(单行 JSON 或 lines 数组) */ List parseInOutLinesFromRequestBody(String requestBody) throws IOException; /** 发送前占位,避免与合并并发;返回 false 表示已有实例在处理 */ boolean tryClaimSending(Long id); void clearSending(Long id); /** sending=1 且 update_time 超时:补偿清零;启用 Redis 时还要求占位已失 */ void recoverStaleSendingWhenRedisMiss(); /** manual 模式:按单号放行暂缓的入出库待办(send_hold=1→0) */ R manualFlushToNotifyByOrderCode(String orderCode, boolean inbound); }