package com.zt.plat.module.qms.common.data.service;

import java.util.*;

import com.alibaba.fastjson.JSONObject;
import com.zt.plat.module.qms.common.data.controller.vo.DataOpinionPageReqVO;
import com.zt.plat.module.qms.common.data.controller.vo.DataOpinionRespVO;
import com.zt.plat.module.qms.common.data.controller.vo.DataOpinionSaveReqVO;
import com.zt.plat.module.qms.common.data.dal.dataobject.DataCommonType;
import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDO;
import jakarta.validation.*;
import com.zt.plat.module.qms.common.data.dal.dataobject.DataOpinionDO;
import com.zt.plat.framework.common.pojo.PageResult;

/**
 * 审批意见 Service 接口
 *
 * @author 后台管理
 */
public interface DataOpinionService {


    void disableOpinionsByBusId(Long busId);

    void saveOpinionByWfCallback(DataCommonType entity, String activityId, String activityName, JSONObject taskVariables);

    List<DataOpinionDO> getListByBusId(Long busId);

    List<DataOpinionDO> getListByFlowInsId(String flowInsId);

    JSONObject assembleOpinion(Long busId);

    /**
     * 创建审批意见
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    DataOpinionRespVO createDataOpinion(@Valid DataOpinionSaveReqVO createReqVO);

    /**
     * 更新审批意见
     *
     * @param updateReqVO 更新信息
     */
    void updateDataOpinion(@Valid DataOpinionSaveReqVO updateReqVO);

    /**
     * 删除审批意见
     *
     * @param id 编号
     */
    void deleteDataOpinion(Long id);

    /**
    * 批量删除审批意见
    *
    * @param ids 编号
    */
    void deleteDataOpinionListByIds(List<Long> ids);

    /**
     * 获得审批意见
     *
     * @param id 编号
     * @return 审批意见
     */
    DataOpinionDO getDataOpinion(Long id);

    /**
     * 获得审批意见分页
     *
     * @param pageReqVO 分页查询
     * @return 审批意见分页
     */
    PageResult<DataOpinionDO> getDataOpinionPage(DataOpinionPageReqVO pageReqVO);

}