package com.aucma.dms.service;

import com.aucma.dms.domain.DmsDispatchPlan;

import java.util.List;

/**
 * 派工计划Service接口
 * 
 * @author Cascade AI
 * @date 2025-01-10
 */
public interface IDmsDispatchPlanService {
    
    /**
     * 查询派工计划
     * 
     * @param planId 派工计划主键
     * @return 派工计划
     */
    DmsDispatchPlan selectDmsDispatchPlanByPlanId(Long planId);

    /**
     * 查询派工计划列表
     * 
     * @param dmsDispatchPlan 派工计划
     * @return 派工计划集合
     */
    List<DmsDispatchPlan> selectDmsDispatchPlanList(DmsDispatchPlan dmsDispatchPlan);

    /**
     * 新增派工计划（含成员）
     * 
     * @param dmsDispatchPlan 派工计划
     * @return 结果
     */
    int insertDmsDispatchPlan(DmsDispatchPlan dmsDispatchPlan);

    /**
     * 修改派工计划（含成员）
     * 
     * @param dmsDispatchPlan 派工计划
     * @return 结果
     */
    int updateDmsDispatchPlan(DmsDispatchPlan dmsDispatchPlan);

    /**
     * 批量删除派工计划
     * 
     * @param planIds 需要删除的派工计划主键集合
     * @return 结果
     */
    int deleteDmsDispatchPlanByPlanIds(Long[] planIds);

    /**
     * 删除派工计划信息
     * 
     * @param planId 派工计划主键
     * @return 结果
     */
    int deleteDmsDispatchPlanByPlanId(Long planId);

    /**
     * 接收派工
     * 
     * @param planId 派工计划ID
     * @return 结果
     */
    int receiveDispatch(Long planId);

    /**
     * 拒绝派工
     * 
     * @param dmsDispatchPlan 派工计划（含planId、rejectReason）
     * @return 结果
     */
    int rejectDispatch(DmsDispatchPlan dmsDispatchPlan);
}
