package com.njcn.rdms.module.project.service.status;

import com.njcn.rdms.framework.common.pojo.PageResult;
import com.njcn.rdms.module.project.controller.admin.status.vo.transition.ObjectStatusTransitionPageReqVO;
import com.njcn.rdms.module.project.controller.admin.status.vo.transition.ObjectStatusTransitionRespVO;
import com.njcn.rdms.module.project.controller.admin.status.vo.transition.ObjectStatusTransitionSaveReqVO;
import com.njcn.rdms.module.project.dal.dataobject.status.ObjectStatusTransitionDO;

import java.util.List;

/**
 * 对象状态流转 Service 接口。
 */
public interface ObjectStatusTransitionService {

    /**
     * 新增状态流转。
     *
     * @param createReqVO 新增请求
     * @return 新记录编号
     */
    Long createTransition(ObjectStatusTransitionSaveReqVO createReqVO);

    /**
     * 修改状态流转。
     *
     * @param updateReqVO 修改请求
     */
    void updateTransition(ObjectStatusTransitionSaveReqVO updateReqVO);

    /**
     * 获取状态流转。
     *
     * @param id 状态流转编号
     * @return 状态流转
     */
    ObjectStatusTransitionRespVO getTransition(Long id);

    /**
     * 删除状态流转。
     *
     * @param id 状态流转编号
     */
    void deleteTransition(Long id);

    /**
     * 批量删除状态流转
     * @param ids
     */
    void deleteTransitionList(List<Long> ids);

    /**
     * 分页查询状态流转。
     *
     * @param pageReqVO 分页请求
     * @return 分页结果
     */
    PageResult<ObjectStatusTransitionDO> getTransitionPage(ObjectStatusTransitionPageReqVO pageReqVO);
}
