| | |
| | | import java.util.ArrayList; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | |
| | | import com.ruoyi.system.utils.TaskCodeGenerator; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.GpsDistanceUtils; |
| | | import com.ruoyi.common.utils.file.FileUploadUtils; |
| | | import com.ruoyi.common.utils.file.FileUtils; |
| | | import com.ruoyi.system.domain.SysTask; |
| | |
| | | import com.ruoyi.system.mapper.SysTaskVehicleMapper; |
| | | import com.ruoyi.system.mapper.SysTaskAttachmentMapper; |
| | | import com.ruoyi.system.mapper.SysTaskLogMapper; |
| | | import com.ruoyi.system.mapper.VehicleInfoMapper; |
| | | import com.ruoyi.system.domain.VehicleInfo; |
| | | import com.ruoyi.system.service.ISysTaskService; |
| | | |
| | | /** |
| | |
| | | |
| | | @Autowired |
| | | private SysTaskLogMapper sysTaskLogMapper; |
| | | |
| | | @Autowired |
| | | private VehicleInfoMapper vehicleInfoMapper; |
| | | |
| | | /** |
| | | * 查询任务管理 |
| | |
| | | task.setTaskDescription(createVO.getTaskDescription()); |
| | | task.setDepartureAddress(createVO.getDepartureAddress()); |
| | | task.setDestinationAddress(createVO.getDestinationAddress()); |
| | | task.setDepartureLongitude(createVO.getDepartureLongitude()); |
| | | task.setDepartureLatitude(createVO.getDepartureLatitude()); |
| | | task.setDestinationLongitude(createVO.getDestinationLongitude()); |
| | | task.setDestinationLatitude(createVO.getDestinationLatitude()); |
| | | task.setPlannedStartTime(createVO.getPlannedStartTime()); |
| | | task.setPlannedEndTime(createVO.getPlannedEndTime()); |
| | | task.setAssigneeId(createVO.getAssigneeId()); |
| | |
| | | task.setDeptId(SecurityUtils.getDeptId()); |
| | | task.setCreateBy(SecurityUtils.getUsername()); |
| | | task.setCreateTime(DateUtils.getNowDate()); |
| | | task.setUpdateBy(SecurityUtils.getUsername()); |
| | | task.setUpdateTime(DateUtils.getNowDate()); |
| | | task.setRemark(createVO.getRemark()); |
| | | task.setDelFlag("0"); |
| | | |
| | | // 计算预计公里数 |
| | | calculateEstimatedDistance(task); |
| | | |
| | | int result = sysTaskMapper.insertSysTask(task); |
| | | |
| | | // 保存车辆关联信息 |
| | | if (result > 0 && createVO.getVehicleIds() != null && !createVO.getVehicleIds().isEmpty()) { |
| | | for (Long vehicleId : createVO.getVehicleIds()) { |
| | | SysTaskVehicle taskVehicle = new SysTaskVehicle(); |
| | | taskVehicle.setTaskId(task.getTaskId()); |
| | | taskVehicle.setVehicleId(vehicleId); |
| | | taskVehicle.setAssignTime(DateUtils.getNowDate()); |
| | | taskVehicle.setAssignBy(SecurityUtils.getUsername()); |
| | | taskVehicle.setStatus("ASSIGNED"); |
| | | taskVehicle.setCreateBy(SecurityUtils.getUsername()); |
| | | taskVehicle.setCreateTime(DateUtils.getNowDate()); |
| | | taskVehicle.setUpdateBy(SecurityUtils.getUsername()); |
| | | taskVehicle.setUpdateTime(DateUtils.getNowDate()); |
| | | |
| | | sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle); |
| | | } |
| | | } |
| | | |
| | | // 记录操作日志 |
| | | if (result > 0) { |
| | |
| | | task.setTaskDescription(updateVO.getTaskDescription()); |
| | | task.setDepartureAddress(updateVO.getDepartureAddress()); |
| | | task.setDestinationAddress(updateVO.getDestinationAddress()); |
| | | task.setDepartureLongitude(updateVO.getDepartureLongitude()); |
| | | task.setDepartureLatitude(updateVO.getDepartureLatitude()); |
| | | task.setDestinationLongitude(updateVO.getDestinationLongitude()); |
| | | task.setDestinationLatitude(updateVO.getDestinationLatitude()); |
| | | task.setPlannedStartTime(updateVO.getPlannedStartTime()); |
| | | task.setPlannedEndTime(updateVO.getPlannedEndTime()); |
| | | task.setAssigneeId(updateVO.getAssigneeId()); |
| | | task.setUpdateBy(SecurityUtils.getUsername()); |
| | | task.setUpdateTime(DateUtils.getNowDate()); |
| | | task.setRemark(updateVO.getRemark()); |
| | | |
| | | // 重新计算预计公里数 |
| | | calculateEstimatedDistance(task); |
| | | |
| | | int result = sysTaskMapper.updateSysTask(task); |
| | | |
| | |
| | | task.setTaskId(taskId); |
| | | task.setAssigneeId(assigneeId); |
| | | task.setUpdateBy(SecurityUtils.getUsername()); |
| | | task.setUpdateTime(DateUtils.getNowDate()); |
| | | |
| | | int result = sysTaskMapper.assignTask(task); |
| | | |
| | |
| | | task.setTaskId(taskId); |
| | | task.setTaskStatus(newStatus.getCode()); |
| | | task.setUpdateBy(SecurityUtils.getUsername()); |
| | | task.setUpdateTime(DateUtils.getNowDate()); |
| | | |
| | | // 根据状态设置相应的时间 |
| | | if (newStatus == TaskStatus.IN_PROGRESS && oldTask.getActualStartTime() == null) { |
| | |
| | | */ |
| | | @Override |
| | | public List<SysTaskVehicle> getAvailableVehicles(Long deptId, String taskType) { |
| | | // 这里需要根据业务逻辑查询可用车辆 |
| | | // 暂时返回空列表,实际实现需要查询车辆表 |
| | | return new ArrayList<>(); |
| | | List<SysTaskVehicle> availableVehicles = new ArrayList<>(); |
| | | |
| | | try { |
| | | // 查询所有状态为正常的车辆(不限制部门) |
| | | VehicleInfo queryParam = new VehicleInfo(); |
| | | queryParam.setStatus("0"); // 0表示正常状态 |
| | | // 不设置deptId,查询所有部门的车辆 |
| | | |
| | | List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(queryParam); |
| | | |
| | | // 转换为SysTaskVehicle对象 |
| | | for (VehicleInfo vehicle : vehicles) { |
| | | SysTaskVehicle taskVehicle = new SysTaskVehicle(); |
| | | taskVehicle.setVehicleId(vehicle.getVehicleId()); |
| | | taskVehicle.setVehicleNo(vehicle.getVehicleNo()); |
| | | taskVehicle.setVehicleType(vehicle.getVehicleType()); |
| | | taskVehicle.setVehicleBrand(vehicle.getVehicleBrand()); |
| | | taskVehicle.setVehicleModel(vehicle.getVehicleModel()); |
| | | taskVehicle.setDeptName(vehicle.getDeptName()); // 添加部门名称 |
| | | availableVehicles.add(taskVehicle); |
| | | } |
| | | } catch (Exception e) { |
| | | // 如果查询失败,记录日志并返回空列表 |
| | | System.err.println("查询可用车辆失败: " + e.getMessage()); |
| | | } |
| | | |
| | | return availableVehicles; |
| | | } |
| | | |
| | | /** |
| | |
| | | return task; |
| | | } |
| | | |
| | | @Autowired |
| | | private TaskCodeGenerator taskCodeGenerator; |
| | | |
| | | /** |
| | | * 生成任务编号 |
| | | * |
| | | * @return 任务编号 |
| | | */ |
| | | private String generateTaskCode() { |
| | | String dateStr = DateUtils.dateTimeNow("yyyyMMdd"); |
| | | return "TASK" + dateStr + "0001"; |
| | | return taskCodeGenerator.generateTaskCode(); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 计算预计公里数 |
| | | * |
| | | * @param task 任务对象 |
| | | */ |
| | | private void calculateEstimatedDistance(SysTask task) { |
| | | if (task.getDepartureLongitude() != null && task.getDepartureLatitude() != null && |
| | | task.getDestinationLongitude() != null && task.getDestinationLatitude() != null) { |
| | | |
| | | // 验证GPS坐标是否有效 |
| | | if (GpsDistanceUtils.isValidCoordinate(task.getDepartureLatitude(), task.getDepartureLongitude()) && |
| | | GpsDistanceUtils.isValidCoordinate(task.getDestinationLatitude(), task.getDestinationLongitude())) { |
| | | |
| | | // 计算距离 |
| | | java.math.BigDecimal distance = GpsDistanceUtils.calculateDistance( |
| | | task.getDepartureLatitude(), task.getDepartureLongitude(), |
| | | task.getDestinationLatitude(), task.getDestinationLongitude() |
| | | ); |
| | | |
| | | task.setEstimatedDistance(distance); |
| | | } else { |
| | | // 坐标无效,设置为0 |
| | | task.setEstimatedDistance(java.math.BigDecimal.ZERO); |
| | | } |
| | | } else { |
| | | // 坐标不完整,设置为0 |
| | | task.setEstimatedDistance(java.math.BigDecimal.ZERO); |
| | | } |
| | | } |
| | | } |