package easydo.technology.service;

import easydo.technology.model.ProductOrderDispatch;
import easydo.technology.model.vo.MaterialRequisitionVO;

import java.sql.Connection;
import java.util.Map;

/**
 * 领料单服务接口
 */
public interface MaterialRequisitionService {
    
    /**
     * 分页查询领料单
     * @param map 查询参数
     * @return 分页结果
     */
    Map<String, Object> getPage(Map<String, Object> map) throws Exception;

    /**
     * 新增领料单
     */
    MaterialRequisitionVO save(MaterialRequisitionVO model) throws Exception;

    /**
     * 修改领料单
     */
    MaterialRequisitionVO update(MaterialRequisitionVO model) throws Exception;

    /**
     * 删除领料单
     */
    MaterialRequisitionVO remove(MaterialRequisitionVO model) throws Exception;
    
    /**
     * 生成领料单（在派工时调用）
     * @param dispatch 派工单信息
     * @param connection 外部事务的 connection
     */
    void generateRequisition(ProductOrderDispatch dispatch, Connection connection) throws Exception;
    
    /**
     * 更新领料单状态
     * @param requisitionId 领料单ID
     * @param status 新状态
     * @param connection 外部事务的 connection
     */
    void updateStatus(String requisitionId, String status, Connection connection) throws Exception;
}
