/*
 * Copyright (c) 2023 codvision.com All Rights Reserved.
 */

package com.codvision.workflow.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.codvision.webcore.bean.QueryPage;
import com.codvision.webcore.service.IBaseService;
import com.codvision.workflow.entity.WorkFlowData;
import com.codvision.workflow.entity.vo.WorkFlowDataVO;

import java.util.Map;

/**
 * @author hxl
 */
public interface WorkFlowDataService extends IBaseService<WorkFlowData, WorkFlowDataVO> {

    /**
     * 分页列表
     * @param queryPage 查询条件
     * @return 列表
     */
    IPage<WorkFlowDataVO> getPageResult(QueryPage<Map<String, Object>> queryPage);

    /**
     * 我发起的列表
     * @param queryPage 查询条件
     * @return 列表
     */
    IPage<WorkFlowDataVO> myInitiatedList(QueryPage<Map<String, Object>> queryPage);

    /**
     * 我待办的列表
     * @param queryPage 查询条件
     * @return 列表
     */
    IPage<WorkFlowDataVO> todoList(QueryPage<Map<String, Object>> queryPage);

    /**
     * 我已办的列表
     * @param queryPage 查询条件
     * @return 列表
     */
    IPage<WorkFlowDataVO> finishedList(QueryPage<Map<String, Object>> queryPage);

    /**
     * 待签收列表
     * @param queryPage 查询条件
     * @return 列表
     */
    IPage<WorkFlowDataVO> claimList(QueryPage<Map<String, Object>> queryPage);

    /**
     * 更新表单数据
     * @param instanceId 流程实例ID
     * @param jsonData 表单数据
     */
    void updateFormDataByInstanceId(String instanceId, String jsonData);

    /**
     * 获取表单数据
     * @param instanceId 流程实例ID
     * @return 表单数据
     */
    WorkFlowData getFormDataByInstanceId(String instanceId);

    /**
     * 统计数据
     * @param deployId 流程部署ID
     * @return 当前部署产生的数据量
     */
    int getCountByDeployId(String deployId);

    /**
     * 删除数据
     * @param deployId 流程部署ID
     */
    void delAllByDeployId(String deployId);

    /**
     * 删除数据
     * @param instanceId 流程实例ID
     */
    void delByInstanceId(String instanceId);
}
