package com.zt.plat.module.qms.business.bus.service;

import java.util.*;

import com.alibaba.fastjson.JSONObject;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleDispatchPageReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleDispatchRespVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleDispatchSaveReqVO;
import jakarta.validation.*;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleDispatchDO;
import com.zt.plat.framework.common.pojo.PageResult;

/**
 * 样品调拨 Service 接口
 *
 * @author 后台管理
 */
public interface BusinessSampleDispatchService {

    //增加样品
    void addOrRemoveSample(@Valid BusinessSampleDispatchSaveReqVO paramVo, boolean updateCancelFlag);

    //发起流程
    CommonResult<BusinessSampleDispatchRespVO> createProcessInstance(BusinessSampleDispatchSaveReqVO paramVo);

    //执行调拨
    CommonResult<String> execDispatch(BusinessSampleDispatchSaveReqVO paramVo);
    CommonResult<String> execGiveback(JSONObject paramVo);

    /**
     * 创建样品调拨
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    BusinessSampleDispatchRespVO createBusinessSampleDispatch(@Valid BusinessSampleDispatchSaveReqVO createReqVO);

    /**
     * 更新样品调拨
     *
     * @param updateReqVO 更新信息
     */
    void updateBusinessSampleDispatch(@Valid BusinessSampleDispatchSaveReqVO updateReqVO);

    /**
     * 删除样品调拨
     *
     * @param id 编号
     */
    void deleteBusinessSampleDispatch(Long id);

    /**
    * 批量删除样品调拨
    *
    * @param ids 编号
    */
    void deleteBusinessSampleDispatchListByIds(List<Long> ids);

    /**
     * 获得样品调拨
     *
     * @param id 编号
     * @return 样品调拨
     */
    BusinessSampleDispatchDO getBusinessSampleDispatch(Long id);

    /**
     * 获得样品调拨分页
     *
     * @param pageReqVO 分页查询
     * @return 样品调拨分页
     */
    PageResult<BusinessSampleDispatchDO> getBusinessSampleDispatchPage(BusinessSampleDispatchPageReqVO pageReqVO);

}