package com.highdatas.mdm.mapper;

import com.highdatas.mdm.entity.TableSchemaResult;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * @author kimi
 * @description
 * @date 2019-12-16 14:57
 */

@Mapper
public interface TableInfoMapper {

    String selectTableByName(@Param("tableName")String tableName);

    List<TableSchemaResult> getTableField(@Param("tableName")String tableName);

    List<TableSchemaResult> getTableFieldFromDb(@Param("tableName")String tableName, @Param("dbName")String dbName);

    List<Map<String,Object>> selectByPage(@Param("tableName") String tableName, @Param("fields") String fields, @Param("where") String where, @Param("limit") String limit);

    List<Map<String,Object>> selectByPageByVersion(@Param("tableName") String tableName,@Param("tableTempName") String tableTempName, @Param("fields") String fields, @Param("tempFields") String tempFields,@Param("Hfields") String Hfields, @Param("A1fields") String A1fields, @Param("A2fields") String A2fields, @Param("tempHFields") String tempHFields, @Param("fromOrderNo") Integer fromOrderNo, @Param("toOrderNo") Integer toOrderNo, @Param("maintainId") String maintainId, @Param("where") String where, @Param("limit") String limit);

    List<Map<String,Object>> selectByPageByMaxVersion(@Param("tableName") String tableName,@Param("tableTempName") String tableTempName, @Param("fields") String fields, @Param("tempFields") String tempFields,@Param("Hfields") String Hfields, @Param("A1fields") String A1fields, @Param("A2fields") String A2fields, @Param("tempHFields") String tempHFields, @Param("fromOrderNo") Integer fromOrderNo, @Param("toOrderNo") Integer toOrderNo,@Param("maintainId") String maintainId,  @Param("where") String where, @Param("limit") String limit);


    List<Map<String,Object>> select(@Param("tableName") String tableName, @Param("fields") String fields, @Param("where") String where);

    Long getCount(@Param("tableName") String tableName,  @Param("where") String where);

    Long getCountByVersion(@Param("tableName") String tableName,@Param("tableTempName") String tableTempName, @Param("fields") String fields, @Param("tempFields") String tempFields,@Param("Hfields") String Hfields,@Param("A1fields") String A1fields, @Param("A2fields") String A2fields, @Param("tempHFields") String tempHFields, @Param("fromOrderNo") Integer fromOrderNo, @Param("toOrderNo") Integer toOrderNo,@Param("maintainId") String maintainId,  @Param("where") String where);

    Long getCountByMaxVersion(@Param("tableName") String tableName,@Param("tableTempName") String tableTempName, @Param("fields") String fields, @Param("tempFields") String tempFields,@Param("Hfields") String Hfields,@Param("A1fields") String A1fields, @Param("A2fields") String A2fields, @Param("tempHFields") String tempHFields, @Param("fromOrderNo") Integer fromOrderNo, @Param("toOrderNo") Integer toOrderNo,@Param("maintainId") String maintainId, @Param("where") String where);

    void insert(@Param("tableName") String tableName, @Param("fields") String fields, @Param("values") String values);

    void update(@Param("tableName") String tableName, @Param("updateSegment") String updateSegment, @Param("where") String where);

    void delete(@Param("tableName") String tableName, @Param("where") String where);

    void deleteTempByMaintainId(@Param("tableTempName") String tableTempName, @Param("maintainId") String maintainId);

    String getTempIdByStdId(@Param("tableTempName") String tableTempName, @Param("stdId") String stdId, @Param("maintainId") String maintainId);

    void tempCreate2std(@Param("tableName") String tableName,@Param("tempFields") String tempFields, @Param("tableTempName") String tableTempName, @Param("maintainId") String maintainId);
    List<Map<String,Object>> tempByOperate(@Param("operate") String operate, @Param("fields") String fields, @Param("tableTempName") String tableTempName, @Param("maintainId") String maintainId);

    Long tempDeal(@Param("tableTempName") String tableTempName, @Param("maintainId") String maintainId);

    Integer insertMatintainDetailFromTemp(@Param("maintainId")String maintainId, @Param("tableTempName")String tableTempName);

    Integer updateStdId(@Param("tableTempName")String tableTempName);

}