package com.microservices.pms.product.service;

import com.microservices.pms.product.domain.PmsProductReqOperationRecord;
import com.microservices.pms.product.domain.vo.ProductReqOperationRecordDataVo;

import java.util.List;

/**
 * 项目管理-产品需求操作记录Service接口
 *
 * @author otto
 * @date 2024-11-29
 */
public interface IPmsProductReqOperationRecordService {
    /**
     * 查询项目管理-产品需求操作记录
     *
     * @param id 项目管理-产品需求操作记录主键
     * @return 项目管理-产品需求操作记录
     */
    public PmsProductReqOperationRecord selectPmsProductReqOperationRecordById(Long id);

    /**
     * 查询项目管理-产品需求操作记录列表
     *
     * @param pmsProductReqOperationRecord 项目管理-产品需求操作记录
     * @return 项目管理-产品需求操作记录集合
     */
    public List<PmsProductReqOperationRecord> selectPmsProductReqOperationRecordList(PmsProductReqOperationRecord pmsProductReqOperationRecord);

    /**
     * 新增项目管理-产品需求操作记录
     *
     * @param pmsProductReqOperationRecord 项目管理-产品需求操作记录
     * @return 结果
     */
    public int insertPmsProductReqOperationRecord(PmsProductReqOperationRecord pmsProductReqOperationRecord);

    /**
     * 修改项目管理-产品需求操作记录
     *
     * @param pmsProductReqOperationRecord 项目管理-产品需求操作记录
     * @return 结果
     */
    public int updatePmsProductReqOperationRecord(PmsProductReqOperationRecord pmsProductReqOperationRecord);

    /**
     * 批量删除项目管理-产品需求操作记录
     *
     * @param ids 需要删除的项目管理-产品需求操作记录主键集合
     * @return 结果
     */
    public int deletePmsProductReqOperationRecordByIds(Long[] ids);

    /**
     * 删除项目管理-产品需求操作记录信息
     *
     * @param id 项目管理-产品需求操作记录主键
     * @return 结果
     */
    public int deletePmsProductReqOperationRecordById(Long id);

    /**
     * 查询用户需求最近一次评审记录
     *
     * @param reqId 用户需求id
     * @return 最近一次评审记录
     */
    PmsProductReqOperationRecord selectUserReqLatestReviewRecord(Long reqId);

    List<ProductReqOperationRecordDataVo> selectUserReqChangeRecordList(Long userReqId);

    List<ProductReqOperationRecordDataVo> selectReqSpecsChangeRecordList(Long reqSpecsId);

    PmsProductReqOperationRecord selectReqSpecsLatestChangeRecord(Long reqSpecsId);

    PmsProductReqOperationRecord selectReqSpecsLatestReviewRecord(Long reqSpecsId);
}
