package com.highdatas.mdm.service;

import com.baomidou.mybatisplus.service.IService;
import com.highdatas.mdm.entity.Maintain;
import com.highdatas.mdm.pojo.ActivitiStatus;
import com.highdatas.mdm.pojo.Operate;
import com.highdatas.mdm.pojo.Result;

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

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author kimi
 * @since 2019-12-16
 */
public interface IMaintainService extends IService<Maintain> {

    HashMap<Operate, Object> compare(String maintainId, String maintainId2);

    void dealFlow(String maintainId, ActivitiStatus status);

    boolean checkdMaxVersion(String maintainId);

    Maintain getMaxVersion(String tableName);

    Maintain getUnFlowMaxVersion(String tableName);

    Maintain getInvalidMaxVersion(String tableName);

    Result getInvalidVerionData(String tableName, String where, Integer pageNo, Integer pageSize);

    Maintain getNowVersion(String tableName);

    Maintain getRecentHistoryVersion(String tableName);

    Maintain getMaintainFromVersion(String tableName, String verison);


    List<Map<String, Object>> selectVersionOperator(String tableTempName, String maintaInId, String where);

    List<Map<String, Object>> selectVersionOperator(String tableTempName, String maintaInId);

    List<Map<String, Object>> selectVersionOperatorByType(String tableTempName, String maintaInId, Operate operate, String where);

    List<Map<String, Object>> selectVersionOperatorByType(String tableTempName, String maintaInId, Operate operate);

    long countVersionOperator(String tableTempName, String maintaInId, String whereSegment);

    long countVersionOperator(String tableTempName, String maintaInId);


    long countVersionOperatorByType(String tableTempName, String filterSegment, String maintaInId, Operate operate);

    List<Map<String, Object>> selectVersionOperatorByPage(String tableTempName, String maintaInId, String limit, String where);

    List<Map<String, Object>> selectVersionOperatorByPage(String tableTempName, String maintaInId, String limit);

    List<Map<String, Object>> selectVersionOperatorByTypeByPage(String tableTempName, String maintaInId, Operate operate,String limit);


    List<Map<String, Object>> selectVersionOperatorByTypeByPage(String tableTempName, String maintaInId, Operate operate, String limit, String where);

    List<String> getCompareVersionMaintains(Maintain unFlowMaxVersion, Maintain maintainFromVersion);

    Result tempDataByVersionByFlow(String flowId, String whereSegment, Integer pageNo, Integer pageSize);

    boolean checkNowVersion(String id);
    boolean checkFirstVersion(String id);

    Result getUnSubmitData(String tableName, Integer pageNo, String pageSize, String whereSegment);

    Maintain getNextMaintain(String tableName, String userId);
}