package com.siwei.rsmonitoring.service;

import java.util.List;
import java.util.Map;

import com.siwei.rsmonitoring.domain.TDkAuditflowRecord;

/**
 * 地块核查流程Service接口
 *
 * @author siwei
 * @date 2025-01-21
 */
public interface ITDkAuditflowRecordService {
    /**
     * 查询地块核查流程
     *
     * @param id 地块核查流程主键
     * @return 地块核查流程
     */
    public TDkAuditflowRecord selectTDkAuditflowRecordById(String id);

    /**
     * 查询地块核查流程列表
     *
     * @param tDkAuditflowRecord 地块核查流程
     * @return 地块核查流程集合
     */
    public List<TDkAuditflowRecord> selectTDkAuditflowRecordList(TDkAuditflowRecord tDkAuditflowRecord);

    public List<TDkAuditflowRecord> selectTDkAuditflowRecordListBusiness(TDkAuditflowRecord tDkAuditflowRecord);

    public List<TDkAuditflowRecord> selectTDkAuditflowRecordListStep(String dkjdxxId);

    /**
     * 新增地块核查流程
     *
     * @param tDkAuditflowRecord 地块核查流程
     * @return 结果
     */
    public int insertTDkAuditflowRecord(TDkAuditflowRecord tDkAuditflowRecord);

    /**
     * 初始化地块核查流程
     * <br>
     * 初始化前先不要进行状态更新，由初始化程序更新。
     * <br>
     * 因初始化会查询上次执行状态，做一些操作
     *
     * <br>
     * 参数需要三个，地块ID，核查流程类型，用户名
     *
     * @param tDkAuditflowRecord
     * @return 结果 current 当前更新的流程ID next的流程ID
     */
    public Map<String, String> initDkAuditflowRecord(TDkAuditflowRecord tDkAuditflowRecord);

    /**
     * 刷新地块核查流程
     *
     * @param tDkAuditflowRecord 地块核查流程 所需参数 dkid ,AuditflowType,SuccessType ,用户信息从当前缓存数据中获取
     * @return 结果 current 当前更新的流程ID next的流程ID
     */
    public Map<String, String> refreshTDkAuditflowRecord(TDkAuditflowRecord tDkAuditflowRecord);


    /**
     * 修改地块核查流程
     *
     * @param tDkAuditflowRecord 地块核查流程
     * @return 结果
     */
    public int updateTDkAuditflowRecord(TDkAuditflowRecord tDkAuditflowRecord);

    /**
     * 批量删除地块核查流程
     *
     * @param ids 需要删除的地块核查流程主键集合
     * @return 结果
     */
    public int deleteTDkAuditflowRecordByIds(String[] ids);

    /**
     * 删除地块核查流程信息
     *
     * @param id 地块核查流程主键
     * @return 结果
     */
    public int deleteTDkAuditflowRecordById(String id);

    /**
     * 校驗用戶是否有权限操作，并返回当前操作
     *
     * @param dkid
     * @param auditflow
     * @param operationType
     * @return
     */
    public boolean isCheckUserTDkAuditflowRecord(String dkid, String auditflow, String auditflowStep, String operationType);

    /**
     * 校驗图斑信息是否可以进行数据更新
     *
     * @param dkid
     * @param auditflow
     * @return
     */
    public boolean isCheckDataUpdateTDkAuditflowRecord(String dkid, String auditflow);
}
