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

import com.baomidou.mybatisplus.extension.service.IService;
import com.inkasso.factoring.system.businessProcessLog.entity.BusinessProcessingLog;

import java.util.List;

/**
 * @Description:处理日志Service
 * @Author:wanxiangZhou
 * @E-mail:zhouyu@sunxung.cn
 * @Date:2018年6月26日 下午8:19:42
 */
public interface BusinessProcessingLogService extends IService<BusinessProcessingLog> {
//
//    /**
//     * 新增处理日志。新增的几种情形：<br>
//     * 1.开启流程实例，默认生成第一个任务办理人的处理日志；<br>
//     * 2.分配人操作，均属于add操作；<br>
//     * 3.任务完成，若流程实例未结束，则默认add下一个任务办理人的处理日志。<br>
//     *
//     * @param processingLog 处理日志信息
//     * @return
//     */
//    BusinessProcessingLog add(BusinessProcessingLog processingLog);
//
//    /**
//     * 更新处理日志，日志信息以处理人完成一个节点业务（如立项中的初评准备节点/用户任务）的处理作为一条记录，故存在更新。<br>
//     * 任务提交（提交：指完成当前任务）则更新当前任务的最新的处理日志，一定是update最新的处理日志（根据修改时间降序DESC排序）
//     *
//     * @param processLog 处理日志信息
//     * @return true表示更新成功，否则失败
//     */
//    Boolean update(BusinessProcessingLog processingLog);
//
//    /**
//     * 获取业务流程中当前任务的最新的处理日志。<br>
//     * assigneeType:要求ConstantConversionUtil.java中assigneeType包含的值一致
//     *
//     * @param businessKey    业务信息ID
//     * @param businessType   业务类型
//     * @param historicTaskId 用户任务ID
//     * @param assigneeType   办理人类型
//     * @return
//     */
//    BusinessProcessingLog getLatestByTask(Long businessKey, String businessType, String historicTaskId,
//                                          String assigneeType);
//
//    BusinessProcessingLog get(Long id);
//
//    /**
//     * 获取业务时间轴数据
//     *
//     * @param businessKey  业务信息ID
//     * @param businessType 业务类型
//     * @return
//     */
//    List<BusinessProcessingLogDetailVo> findByBusiness(Long businessKey, String businessType);
//
//    /**
//     * 获取业务表单节点完成时的处理日志，要求按照创建时间升序排序。注意：业务完成的标志，formBusinessId/endTime均不为空时
//     *
//     * @param businessKey  业务信息ID
//     * @param businessType 业务类型
//     * @return
//     */
//    List<BusinessProcessingLog> findCompletedByBusiness(Long businessKey, String businessType);
//
//    /**
//     * 获取业务流程节点待处理（未完车）任务的ID。注意：业务未完成或未提交的标志，formBusinessId/endTime均为空时
//     *
//     * @param businessKey  业务信息ID
//     * @param businessType 业务类型
//     * @return
//     */
//    List<String> findPendingTaskByBusiness(Long businessKey, String businessType);
//
//    /**
//     * 查询业务流程节点待处理（未完成）任务的日志集合，给定业务ID范围。
//     *
//     * @param taskDefKey   任务定义KEY
//     * @param businessType 业务类型
//     * @param businessKeys 业务ID集合
//     * @param assigneeType 任务办理类型
//     * @return
//     */
//    List<BusinessProcessingLog> findPendingByBusinessKeys(String taskDefKey, String businessType,
//                                                          List<Long> businessKeys, String assigneeType);
//
//    /**
//     * 周例会：统计业务进度
//     *
//     * @param search
//     * @return List<BusinessProcessingLog>
//     */
//    List<BusinessProcessingLog> findBusinessProgressStatistics(SearchBusinessProcessingVo search);
//
//    /**
//     * 周例会：业务进度统计查询列表
//     *
//     * @param search
//     * @return List<BusinessProcessingLog>
//     */
//    List<BusinessProcessingLog> findBusinessProgressByIds(SearchBusinessProcessingVo search);
//
//    /**
//     * 根据历史任务Id查询
//     *
//     * @param taskId
//     * @return
//     */
//    BusinessProcessingLog findByHistoricTaskId(String taskId);
//
//    /**
//     * 修改处理人Id
//     *
//     * @param processingLog
//     */
//    void updateAssigneeId(BusinessProcessingLog processingLog);
//
//    /**
//     * 获取最新的log
//     * @param businessType
//     * @param businessKey
//     * @return
//     */
//    BusinessProcessingLog getByBusinessTypeBusinessKey(String businessType, Long businessKey);
//
//    /**
//     * 查询最新的业务流程节点信息  根据处理人为NULL
//     * @param businessKey
//     * @param businessType
//     * @return
//     */
//    List<BusinessProcessingLog> listForNullValueOfEndTime(Long businessKey, String businessType);
//
//    /**
//     * 查询最新的业务流程节点信息
//     *
//     * @param taskDefKey   任务定义KEY
//     * @param businessType 业务类型
//     * @param businessKey  业务ID
//     * @return
//     */
//    BusinessProcessingLog findLatestByTaskDefKey(String taskDefKey, String businessType, Long businessKey);
//
//    /**
//     *
//     * @param formBusinessId
//     * @param businessKey
//     * @param taskDefKey
//     * @param businessType
//     * @return
//     */
//    BusinessProcessingLog getbyFormBusinessIdBusinessKeyTaskDefKeyBusinessType(Long formBusinessId, Long businessKey, String taskDefKey, String businessType);
//
//    /**
//     * 获取该节点最新的log
//     * @param businessKey
//     * @param businessType
//     * @param taskName
//     * @return
//     */
//    BusinessProcessingLog getLastByBusinessKeyBusinessTypeTaskName(Long businessKey, String businessType, String taskName);
//
//    /**
//     * 获取C端用户处理的节点（最新）
//     * @param businessKey
//     * @param businessType
//     * @return
//     */
//    List<BusinessProcessingLog> getCLogByBusinessKeyBusinessType(Long businessKey, String businessType);
}
