| | |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.data.geo.Point; |
| | | import org.springframework.data.mongodb.core.MongoTemplate; |
| | | import org.springframework.data.mongodb.core.geo.GeoJsonPoint; |
| | | import org.springframework.data.mongodb.core.query.Criteria; |
| | | import org.springframework.data.mongodb.core.query.Query; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | throw new ServiceException("未配置车辆事故任务分配规则"); |
| | | } |
| | | List<Long> excludedUserIds = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>()); |
| | | excludedUserIds.add(Long.valueOf(task.getHandleUserId())); |
| | | excludedUserIds.addAll(Arrays.asList(task.getHandleUserId().split(",")).stream().map(Long::parseLong).collect(Collectors.toList())); |
| | | task.setExcluded(excludedUserIds); |
| | | Long fleetId = xpFleetVehicleClient.getFleetIdByVehicleId(vehicle.getId()).getData(); |
| | | List<Long> roleIds = taskRuleRole.stream().map(XpTaskRuleRole::getRoleId).collect(Collectors.toList()); |
| | |
| | | .filter(ids::contains) |
| | | .filter(id -> !excludedUserIds.contains(id)) |
| | | .map(String::valueOf).collect(Collectors.joining(",")); |
| | | VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class); |
| | | // VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class); |
| | | VehiclePosition vehiclePosition = new VehiclePosition(); |
| | | vehiclePosition.setPoint(new GeoJsonPoint(103.12615621, 30.264561)); |
| | | String handlerUser = chooseNearestAvailableOperationsUser(belongUserIds, vehiclePosition); |
| | | task.setHandleUserId(handlerUser); |
| | | if(handlerUser == null) { |
| | |
| | | noticeAdministrator(task); |
| | | } |
| | | updateById(task); |
| | | // 存储事故处理日志 |
| | | XpTaskHandleDetail xpTaskHandleDetail = new XpTaskHandleDetail(); |
| | | xpTaskHandleDetail.setTaskId(task.getId()); |
| | | xpTaskHandleDetail.setResponsibleDescription(msg); |
| | | xpTaskHandleDetailMapper.insert(xpTaskHandleDetail); |
| | | sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit()); |
| | | if(StringUtils.isNotBlank(task.getHandleUserId())){ |
| | | sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit()); |
| | | } |
| | | } |
| | | |
| | | |