package cn.iocoder.yudao.module.asset.service.delivery;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.asset.controller.admin.delivery.vo.DeliveryTaskActivateReqVO;
import cn.iocoder.yudao.module.asset.controller.admin.delivery.vo.DeliveryTaskContractGroupRespVO;
import cn.iocoder.yudao.module.asset.controller.admin.delivery.vo.DeliveryTaskPageReqVO;
import cn.iocoder.yudao.module.asset.controller.admin.delivery.vo.DeliveryTaskRespVO;
import cn.iocoder.yudao.module.asset.controller.admin.delivery.vo.DeliveryTaskSaveReqVO;
import cn.iocoder.yudao.module.asset.dal.dataobject.delivery.DeliveryTaskDO;

import jakarta.validation.Valid;
import java.util.List;

public interface DeliveryTaskService {

    Long createDeliveryTask(@Valid DeliveryTaskSaveReqVO createReqVO);

    void updateDeliveryTask(@Valid DeliveryTaskSaveReqVO updateReqVO);

    void deleteDeliveryTask(Long id);

    DeliveryTaskDO getDeliveryTask(Long id);

    DeliveryTaskRespVO getDeliveryTaskDetail(Long id);

    PageResult<DeliveryTaskDO> getDeliveryTaskPage(DeliveryTaskPageReqVO pageReqVO);

    void suspendDeliveryTask(Long id);

    void activateDeliveryTask(Long id);

    /**
     * 激活交车任务（带日期参数）
     */
    void activateDeliveryTask(DeliveryTaskActivateReqVO reqVO);

    /**
     * 获得按合同分组的交车任务分页
     */
    PageResult<DeliveryTaskContractGroupRespVO> getDeliveryTaskContractPage(DeliveryTaskPageReqVO pageReqVO);

    List<DeliveryTaskDO> getDeliveryTaskSimpleList();

}
