package com.ruoyi.system.service;
|
|
import java.util.Date;
|
import java.util.List;
|
|
import com.ruoyi.system.domain.vo.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import com.ruoyi.system.domain.SysTask;
|
import com.ruoyi.system.domain.SysTaskLog;
|
import com.ruoyi.system.domain.SysTaskVehicle;
|
import com.ruoyi.system.domain.SysTaskAttachment;
|
import com.ruoyi.system.domain.enums.TaskStatus;
|
|
/**
|
* 任务管理Service接口
|
*
|
* @author ruoyi
|
* @date 2024-01-15
|
*/
|
public interface ISysTaskService {
|
|
public Boolean dispatchSyncEvent(Long taskId);
|
/**
|
* 查询任务管理
|
*
|
* @param taskId 任务管理主键
|
* @return 任务管理
|
*/
|
public SysTask selectSysTaskByTaskId(Long taskId);
|
|
/**
|
* 查询任务管理列表
|
*
|
* @param queryVO 任务查询对象
|
* @return 任务管理集合
|
*/
|
public List<SysTask> selectSysTaskList(TaskQueryVO queryVO);
|
|
/**
|
* 根据任务编号、调度单编号或服务单编号查询任务列表
|
*
|
* @param queryVO 任务查询对象
|
* @param taskCode 任务编号
|
* @return 任务管理集合
|
*/
|
public List<SysTask> selectSysTaskListByMultiCode(TaskQueryVO queryVO, String taskCode);
|
|
/**
|
* 新增任务管理
|
*
|
* @param createVO 任务创建对象
|
* @return 结果
|
*/
|
public int insertSysTask(TaskCreateVO createVO);
|
|
/**
|
* 新增任务管理(允许从外部传入用户信息、部门信息和时间信息)
|
*
|
* @param createVO 任务创建对象
|
* @param userId 用户ID
|
* @param deptId 部门ID
|
* @param createTime 创建时间
|
* @param updateTime 更新时间
|
* @return 结果
|
*/
|
public int insertTask(TaskCreateVO createVO,String serviceOrderId,String dispatchOrderId, String serviceOrdNo, Long userId,String userName, Long deptId, Date createTime, Date updateTime);
|
|
/**
|
* 修改任务管理
|
*
|
* @param updateVO 任务更新对象
|
* @return 结果
|
*/
|
public int updateSysTask(TaskUpdateVO updateVO,Boolean updateFromLegacy);
|
|
/**
|
* 修改任务管理(允许从外部传入用户信息、部门信息和时间信息) 用于从旧系统中同步过来
|
* @param updateVO
|
* @param serviceOrderId
|
* @param dispatchOrderId
|
* @param serviceOrdNo
|
* @param userId
|
* @param userName
|
* @param deptId
|
* @param createTime
|
* @param updateTime
|
* @return
|
*/
|
public int updateTask(TaskUpdateVO updateVO, String serviceOrderId, String dispatchOrderId, String serviceOrdNo, Long userId, String userName, Long deptId, Date createTime, Date updateTime);
|
|
/**
|
* 批量删除任务管理
|
*
|
* @param taskIds 需要删除的任务管理主键集合
|
* @return 结果
|
*/
|
public int deleteSysTaskByTaskIds(Long[] taskIds);
|
|
/**
|
* 分配任务
|
*
|
* @param taskId 任务ID
|
* @param assigneeId 执行人ID
|
* @param remark 备注
|
* @return 结果
|
*/
|
public int assignTask(Long taskId, Long assigneeId, String remark);
|
|
/**
|
* 变更任务状态
|
*
|
* @param taskId 任务ID
|
* @param newStatus 新状态
|
* @param remark 备注
|
* @return 结果
|
*/
|
public int changeTaskStatus(Long taskId, TaskStatus newStatus, String remark);
|
|
/**
|
* 变更任务状态(含GPS位置信息)
|
*
|
* @param taskId 任务ID
|
* @param newStatus 新状态
|
* @param remark 备注
|
* @param locationLog GPS位置信息日志对象
|
* @return 结果
|
*/
|
public int changeTaskStatusWithLocation(Long taskId, TaskStatus newStatus, String remark, SysTaskLog locationLog);
|
|
/**
|
* 上传任务附件
|
*
|
* @param taskId 任务ID
|
* @param file 文件
|
* @param category 附件分类
|
* @return 结果
|
*/
|
public Long uploadAttachment(Long taskId, MultipartFile file, String category);
|
|
/**
|
* 从微信mediaId上传任务附件
|
*
|
* @param taskId 任务ID
|
* @param accessToken 微信AccessToken
|
* @param mediaId 微信mediaId
|
* @param category 附件分类
|
* @return
|
*/
|
public Long uploadAttachmentFromWechat(Long taskId, String accessToken, String mediaId, String category);
|
|
/**
|
* 删除任务附件
|
*
|
* @param attachmentId 附件ID
|
* @return 结果
|
*/
|
public int deleteAttachment(Long attachmentId);
|
|
/**
|
* 根据ID获取附件详情
|
*
|
* @param attachmentId 附件ID
|
* @return 附件详情
|
*/
|
public SysTaskAttachment getAttachmentById(Long attachmentId);
|
|
|
public List<SysTaskAttachment> getAttachmentsByTaskId(Long taskId);
|
/**
|
* 分配车辆给任务
|
*
|
* @param taskId 任务ID
|
* @param vehicleId 车辆ID
|
* @param remark 备注
|
* @return 结果
|
*/
|
public int assignVehicleToTask(Long taskId, Long vehicleId, String remark,Long userId,String userName);
|
|
/**
|
* 取消任务车辆分配
|
*
|
* @param taskId 任务ID
|
* @param vehicleId 车辆ID
|
* @return 结果
|
*/
|
public int unassignVehicleFromTask(Long taskId, Long vehicleId);
|
|
/**
|
* 批量分配车辆给任务
|
*
|
* @param taskId 任务ID
|
* @param vehicleIds 车辆ID列表
|
* @param remark 备注
|
* @return 结果
|
*/
|
public int assignMultipleVehiclesToTask(Long taskId, List<Long> vehicleIds, String remark,Long userId,String userName);
|
|
/**
|
* 查询任务关联的车辆
|
*
|
* @param taskId 任务ID
|
* @return 任务车辆关联列表
|
*/
|
public List<SysTaskVehicle> getTaskVehicles(Long taskId);
|
|
/**
|
* 查询可用车辆
|
*
|
* @param deptId 部门ID
|
* @param taskType 任务类型
|
* @return 可用车辆列表
|
*/
|
public List<SysTaskVehicle> getAvailableVehicles(Long deptId, String taskType);
|
|
/**
|
* 查询任务统计信息
|
*
|
* @return 任务统计信息
|
*/
|
public TaskStatisticsVO getTaskStatistics();
|
|
/**
|
* 查询超时任务列表
|
*
|
* @return 超时任务列表
|
*/
|
public List<SysTask> selectOverdueTasks();
|
|
/**
|
* 查询我的任务列表
|
*
|
* @param userId 用户ID
|
* @return 我的任务列表
|
*/
|
public List<SysTask> selectMyTasks(Long userId);
|
|
/**
|
* 获取任务详情(包含关联数据)
|
*
|
* @param taskId 任务ID
|
* @return 任务详情
|
*/
|
public SysTask getTaskDetail(Long taskId);
|
|
/**
|
* 检查车辆是否有正在进行中的任务
|
* 正在进行中的任务是指状态不为:PENDING(待处理)、COMPLETED(已完成)、CANCELLED(已取消)的任务
|
*
|
* @param vehicleId 车辆ID
|
* @return 正在进行中的任务列表
|
*/
|
public List<SysTask> checkVehicleActiveTasks(Long vehicleId);
|
|
/**
|
* 检查任务是否已关联旧系统服务单ID
|
*
|
* @param taskId 任务ID
|
* @return true-已关联,false-未关联
|
*/
|
public boolean hasLegacyServiceOrdId(Long taskId);
|
|
/**
|
* 检查任务是否已关联旧系统调度单ID
|
*
|
* @param taskId 任务ID
|
* @return true-已关联,false-未关联
|
*/
|
public boolean hasLegacyDispatchOrdId(Long taskId);
|
|
/**
|
* 根据旧系统服务单ID检查是否存在任务
|
*
|
* @param legacyServiceOrdId 旧系统服务单ID
|
* @return true-存在,false-不存在
|
*/
|
public boolean existsByLegacyServiceOrdId(Long legacyServiceOrdId);
|
|
/**
|
* 根据旧系统调度单ID检查是否存在任务
|
*
|
* @param legacyDispatchOrdId 旧系统调度单ID
|
* @return true-存在,false-不存在
|
*/
|
public boolean existsByLegacyDispatchOrdId(Long legacyDispatchOrdId);
|
|
/**
|
* 检查任务是否可以出发
|
* 检查:
|
* 1. 车辆是否有未完成的任务
|
* 2. 执行人员是否有未完成的任务
|
*
|
* @param taskId 任务ID
|
* @return AjaxResult 校验结果,包含 valid 和 conflicts 信息
|
*/
|
public com.ruoyi.common.core.domain.AjaxResult checkTaskCanDepart(Long taskId);
|
|
/**
|
* 执行人点击就绪
|
*
|
* @param taskId 任务ID
|
* @param userId 用户ID
|
* @return 结果
|
*/
|
public com.ruoyi.common.core.domain.AjaxResult setAssigneeReady(Long taskId, Long userId);
|
|
/**
|
* 取消执行人就绪
|
*
|
* @param taskId 任务ID
|
* @param userId 用户ID
|
* @return 结果
|
*/
|
public com.ruoyi.common.core.domain.AjaxResult cancelAssigneeReady(Long taskId, Long userId);
|
|
}
|