package com.haha.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.haha.entity.StockRecord;
import com.haha.entity.dto.StockRecordQueryDTO;

import java.util.Map;

/**
 * 上货记录服务接口
 */
public interface StockRecordService extends IService<StockRecord> {

    /**
     * 分页查询上货记录
     *
     * @param page     页码
     * @param pageSize 每页条数
     * @param queryDTO 查询参数
     * @return 分页结果
     */
    IPage<StockRecord> getPage(int page, int pageSize, StockRecordQueryDTO queryDTO);

    /**
     * 开始上货活动
     *
     * @param recordId 记录ID
     */
    void startActivity(Long recordId);

    /**
     * 完成上货活动
     *
     * @param recordId    记录ID
     * @param totalItems  商品种类数
     * @param totalQuantity 总数量
     * @param activityId  哈哈平台活动号
     */
    void completeActivity(Long recordId, Integer totalItems, Integer totalQuantity, String activityId);

    /**
     * 取消上货活动
     *
     * @param recordId 记录ID
     */
    void cancelActivity(Long recordId);

    /**
     * 获取上货员工作统计
     *
     * @param stockerId 上货员ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 统计数据
     */
    Map<String, Object> getStockerStatistics(Long stockerId, String startTime, String endTime);

    /**
     * 获取上货记录详情（带设备名称）
     *
     * @param id 记录ID
     * @return 记录详情
     */
    Map<String, Object> getDetailWithDeviceName(Long id);

    /**
     * V2：创建上货记录（使用独立补货员体系）
     *
     * @param deviceId       设备ID
     * @param stockType      类型：1上货，2补货
     * @param replenisherId  补货员ID
     * @param replenisherName 补货员名称
     * @param replenisherPhone 补货员电话
     * @param remark         备注
     * @return 上货记录
     */
    StockRecord createRecordV2(String deviceId, Integer stockType, Long replenisherId,
                               String replenisherName, String replenisherPhone, String remark);
}
