package com.inkasso.factoring.system.businessProcessLog.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.inkasso.factoring.system.businessProcessLog.entity.BusinessProcessingLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description:业务处理日志Mapper
 * @Author:wanxiangZhou
 * @E-mail:zhouyu@sunxung.cn
 * @Date:2018年6月26日 下午8:18:57
 */
@Mapper
public interface BusinessProcessingLogMapper extends BaseMapper<BusinessProcessingLog> {

//    /**
//     * 新增业务处理日志信息
//     *
//     * @param processingLog 处理日志信息
//     */
//    void add(BusinessProcessingLog processingLog);
//
//    BusinessProcessingLog get(Long id);
//
//    /**
//     * 更新处理日志信息
//     *
//     * @return 受影响的记录条数
//     */
//    int update(BusinessProcessingLog processingLog);
//
//    /**
//     * 修改处理人Id
//     *
//     * @param processingLog
//     */
//    void updateAssigneeId(BusinessProcessingLog processingLog);
//
//    /**
//     * 获取业务流程节点任务的ID
//     *
//     * @param businessKey  业务信息ID
//     * @param businessType 业务类型
//     * @return
//     */
//    List<String> findTaskByBusinessLike(@Param("businessKey") Long businessKey, @Param("businessType") String businessType);
//
//    /**
//     * 获取业务流程节点任务的ID
//     *
//     * @param businessKey  业务信息ID
//     * @param businessType 业务类型
//     * @return
//     */
//    List<String> findTaskByBusiness(@Param("businessKey") Long businessKey, @Param("businessType") String businessType);
//
//    /**
//     * 获取业务流程节点待处理（未完车）任务的ID，已对任务ID进行GROUP BY，过滤掉被分配的待处理任务
//     *
//     * @param businessKey  业务信息ID
//     * @param businessType 业务类型
//     * @return
//     */
//    List<String> findPendingTaskByBusiness(@Param("businessKey") Long businessKey,
//                                           @Param("businessType") String businessType);
//
//    /**
//     * 查询待处理（未完成）任务的ID，同理要求：对任务ID进行GROUP BY，过滤掉被分配的待处理任务。<br>
//     * 因为通常获取待处理日志，然后循环日志，获取任务id，更改任务执行人，若存在被分配掉的任务ID，那么这时候更改任务执行人就会重复操作导致错误。
//     *
//     * @param taskDefKey   任务定义KEY
//     * @param businessType 业务类型
//     * @param businessKeys 业务ID集合
//     * @param assigneeType 任务办理类型
//     * @return
//     */
//    List<String> findPendingTaskByBusinessKeys(@Param("taskDefKey") String taskDefKey,
//                                               @Param("businessType") String businessType, @Param("businessKeys") List<Long> businessKeys,
//                                               @Param("assigneeType") String assigneeType);
//
//    /**
//     * 根据任务ID获取最新的待处理任务日志，该方法通常结合findPendingTaskByBusinessKeys合用
//     *
//     * @param historicTaskId 任务ID
//     * @param assigneeType   任务办理类型
//     * @return
//     */
//    BusinessProcessingLog getPendingByTaskId(@Param("historicTaskId") String historicTaskId,
//                                             @Param("assigneeType") String assigneeType);
//
//    /**
//     * 根据业务流程节点任务ID获取每个任务节点业务处理日志信息<br>
//     * latest not null时，要求：按照创建时间降序排列，否则无法获取最新的“处理”任务日志
//     *
//     * @param businessKey    业务信息ID
//     * @param businessType   业务类型
//     * @param historicTaskId 任务ID
//     * @param assigneeType   办理人类型
//     * @param latest         not null表示获取最新的一条业务处理日志
//     * @return
//     */
//    List<BusinessProcessingLog> findLogsByBusiness(@Param("businessKey") Long businessKey,
//                                                   @Param("businessType") String businessType, @Param("historicTaskId") String historicTaskId,
//                                                   @Param("assigneeType") String assigneeType, @Param("limit") Boolean latest);
//
//    /**
//     * 查询完成或者待处理的业务日志信息
//     *
//     * @param businessKey  业务信息ID
//     * @param businessType 业务类型
//     * @return
//     */
//    List<BusinessProcessingLog> findCompletedByBusiness(@Param("businessKey") Long businessKey,
//                                                        @Param("businessType") String businessType);
//
//    /**
//     * 统计业务进度
//     *
//     * @param search 查询类
//     * @return List<BusinessProcessingLog>
//     */
//    List<BusinessProcessingLog> findBusinessProgressStatistics(SearchBusinessProcessingVo search);
//
//    List<BusinessProcessingLog> findBusinessProgressByIds(SearchBusinessProcessingVo search);
//
//    /**
//     * 根据历史任务Id查询
//     *
//     * @param taskId
//     * @return
//     */
//    BusinessProcessingLog findByHistoricTaskId(String taskId);
//
//    /**
//     * 获取最新的log
//     * @param businessType
//     * @param businessKey
//     * @return
//     */
//    BusinessProcessingLog getByBusinessTypeBusinessKey(@Param("businessKey") Long businessKey,
//                                                       @Param("businessType") String businessType);
//
//    /**
//     * 查询最新的业务流程节点信息  根据处理人为NULL
//     * @param businessKey
//     * @param businessType
//     * @return
//     */
//    List<BusinessProcessingLog> listForNullValueOfEndTime(@Param("businessKey")Long businessKey, @Param("businessType")String businessType);
//
//    /**
//     *
//     * @param formBusinessId
//     * @param businessKey
//     * @param taskDefKey
//     * @param businessType
//     * @return
//     */
//    BusinessProcessingLog getbyFormBusinessIdBusinessKeyTaskDefKeyBusinessType(@Param("formBusinessId")Long formBusinessId, @Param("businessKey")Long businessKey, @Param("taskDefKey")String taskDefKey, @Param("businessType")String businessType);
//
//    /**
//     * 获取该节点最新的log
//     * @param businessKey
//     * @param businessType
//     * @param taskName
//     * @return
//     */
//    BusinessProcessingLog getLastByBusinessKeyBusinessTypeTaskName(@Param("businessKey")Long businessKey, @Param("businessType")String businessType,@Param("taskName") String taskName);
//
//    /**
//     * 查询最新的业务流程节点信息
//     *
//     * @param taskDefKey   任务定义KEY
//     * @param businessType 业务类型
//     * @param businessKey  业务ID
//     * @return
//     */
//    BusinessProcessingLog findLatestByTaskDefKey(@Param("taskDefKey") String taskDefKey,
//                                                 @Param("businessType") String businessType,
//                                                 @Param("businessKey") Long businessKey);
//
//    List<BusinessProcessingLog> getCLogByBusinessKeyBusinessType(@Param("businessKey") Long businessKey,@Param("businessType") String businessType);

}
