package org.dromara.erp.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.erp.domain.query.ErpOrderQuery;
import org.dromara.erp.domain.vo.ErpOrderVo;

import java.util.List;
import java.util.Map;

/**
 * 订单 Service 接口
 * @Author: Antigravity
 */
public interface IErpOrderService {

    /**
     * 分页查询订单列表
     */
    TableDataInfo<ErpOrderVo> queryPageList(ErpOrderQuery query, PageQuery pageQuery);

    /**
     * 按客户ID分页查询订单（不限制下单人）
     */
    TableDataInfo<ErpOrderVo> queryPageListByClientId(ErpOrderQuery query, PageQuery pageQuery);

    /**
     * 查询订单列表
     */
    List<ErpOrderVo> queryList(ErpOrderQuery query);

    /**
     * 根据ID查询订单
     */
    ErpOrderVo queryById(String rowId);

    /**
     * 按状态统计订单数量
     */
    Map<Integer, Long> countByStatus();

    /**
     * 新增订单，返回生成的订单 ID
     */
    String insert(org.dromara.erp.domain.bo.ErpOrderBo bo);

    /**
     * 撤销订单
     */
    Boolean cancelOrder(String rowId);

    /**
     * 加急订单
     * @Author: Trae
     */
    Boolean markUrgent(String rowId);

    /**
     * 同步 ERP 订单状态（定时任务）
     * 根据 ErpSaleOrderMaster 中的 Finished/Reviewed/Approved 字段更新本地订单状态
     */
    void syncErpOrderStatus();
}
