package com.gic.haoban.manage.service.dao.mapper;

import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface PreDealLogMapper {
    /**
     */
    int deleteByPrimaryKey(Integer id);

    /**
     */
    int insert(TabHaobanPreDealLog record);

    /**
     */
    int insertSelective(TabHaobanPreDealLog record);


    /**
     */
    int insertSelectiveBatch(List<TabHaobanPreDealLog> record);

    /**
     */
    TabHaobanPreDealLog selectByPrimaryKey(Integer id);

    /**
     */
    int updateByPrimaryKeySelective(TabHaobanPreDealLog record);

    /**
     */
    int updateByPrimaryKey(TabHaobanPreDealLog record);

    /**
     * 获取单条数据
     *
     * @param taskId
     * @param dataId
     * @return
     */
    List<TabHaobanPreDealLog> getByDataId(@Param("taskId") String taskId, @Param("dataId") String dataId,@Param("dataType") int dataType, @Param("status") int status);

    /**
     * 获取单条数据
     *
     * @param taskId
     * @param pDataId
     * @return
     */
    List<TabHaobanPreDealLog> listByPDataId(@Param("taskId") String taskId, @Param("dataId") String pDataId
            , @Param("status") int status, @Param("dataType") int dataType);

    /**
     * 更新状态
     *
     * @param taskId
     * @param dataId
     * @param status
     * @return
     */
    public int updateStatusByDataId(@Param("taskId") String taskId, @Param("dataId") String dataId,@Param("dataType") int dataType, @Param("status") int status, @Param("reason") String reason);

    /**
     * 校验任务
     *
     * @param taskId
     * @param dataType
     * @return
     */
    public int checkTask(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("status") int status);


    public List<TabHaobanPreDealLog> listByTaskId(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("status") int status);

    /**
     * 统计任务数量
     *listRebuildByTaskId
     * @param taskId
     * @return
     */
    public int countByTaskId(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("status") int status);


    /**
     * 统计任务数量
     * countExcepAndPreByTaskId
     *
     * @param taskId
     * @return
     */
    public int countExcepAndPreByTaskId(@Param("taskId") String taskId, @Param("dataType") int dataType);


    /**
     * 重试的时候 第一级部门
     *
     * @param taskId
     * @return
     */
    public List<TabHaobanPreDealLog> listRebuildDepartByTaskId(@Param("taskId") String taskId);
    
    public List<TabHaobanPreDealLog> listAllByTaskId(@Param("taskId") String taskId);
    
    

    /**
     * 统计重试任务数量
     *
     * @param taskId
     * @return
     */
    public List<TabHaobanPreDealLog> listRebuildByTaskId(@Param("taskId") String taskId, @Param("dataType") int dataType);

    /**
     * 更新状态
     *
     * @param taskId
     * @param dataId
     * @param status
     * @return
     */
    public int updateExceptionToPre(@Param("taskId") String taskId);

    /**
     * 统计重试任务数量
     *
     * @param taskId
     * @return
     */
    public List<TabHaobanPreDealLog> listExceptionByTask(@Param("taskId") String taskId);

    /**
     * 获取列表
     * @param taskId
     * @param dataType
     */
    public List<String> listDataIdByTaskIdAndDataType(@Param("taskId") String taskId,@Param("dataType") int dataType);
    /**
     * 统计任务数量
     * countExcepAndPreByTaskId
     *
     * @param taskId
     * @return
     */
    public TabHaobanPreDealLog getLastPreDataByTaskId(@Param("taskId") String taskId);
    /**
     * 更新状态
     * @param taskId
     * @param dataId
     * @param status
     * @param reason
     * @param dataContent
     * @return
     */
	int updateFriendStatusByDataId(@Param("taskId")String taskId, @Param("dataId")String dataId, @Param("status")int status, @Param("reason")String reason, @Param("dataContent")String dataContent);

    /**
     * 更新状态
     *
     * @param taskId
     * @param dataId
     * @param status
     * @param reason
     * @param dataContent
     * @return
     */
    int updateFriendStatusAndRelationKeyByDataId(@Param("taskId") String taskId, @Param("dataId") String dataId, @Param("status") int status, @Param("reason") String reason, @Param("dataContent") String dataContent, @Param("relationKey") String relationKey , @Param("dataType")  int dataType);

    /**
     * 根据关联键获取字段
     *
     * @param taskId
     * @param relationKey
     * @return
     */
    List<TabHaobanPreDealLog> getByRelationKey(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("relationKey") String relationKey);

    /**
     * 校验任务
     *
     * @param taskId
     * @param dataType
     * @return
     */
    public int checkTaskFriend(@Param("taskId") String taskId, @Param("pDataId") String pDataId, @Param("dataType") int dataType);


    /**
     * 获取dataid 根据父id
     *
     * @param taskId
     * @param pDataId
     * @return
     */
    List<String> listReDataIdByPDataId(@Param("taskId") String taskId, @Param("dataId") String pDataId
            , @Param("dataType") int dataType);


}