xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -31,6 +31,7 @@ import com.xiaopeng.maintenance.service.XpTaskService; import com.xiaopeng.maintenance.vo.TaskCleanDetailVO; import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO; import com.xiaopeng.maintenance.vo.TaskReassignVo; import com.xiaopeng.maintenance.vo.VehicleListVO; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -52,6 +53,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; import static net.sf.jsqlparser.parser.feature.Feature.comment; /** * <p> @@ -103,8 +106,8 @@ @ApiOperation(value = "工单改派", tags = "运维APP-任务中心") @PostMapping("/maintenance-app/api/v1/task/reassign") public R<?> reassign(@RequestParam("taskId") Long taskId, @RequestParam("comment") String comment) { xpTaskService.reassign(taskId, comment); public R<?> reassign(@RequestBody TaskReassignVo vo) { xpTaskService.reassign(vo.getTaskId(), vo.getComment()); return R.ok(); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRuleServiceImpl.java
@@ -92,7 +92,7 @@ .eq(XpCruiseCheckInRecord::getDeleted, 0) .eq(XpCruiseCheckInRecord::getCruiseCheckInRuleId, ruleId) .eq(XpCruiseCheckInRecord::getOperationsUserId, uid) .last(" and DATE_FORMAT(check_in_time, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d")); .last(" and DATE(check_in_time) = DATE(NOW())")); //构建返回结果 for (XpCruiseCheckInRuleLocation xpCruiseCheckInRuleLocation : list) { XpCruiseCheckInRecord xpCruiseCheckInRecord = list1.stream().filter(x -> x.getCheckLocationId().equals(xpCruiseCheckInRuleLocation.getCheckLocationId())).findFirst().orElse(null); @@ -132,7 +132,7 @@ .eq(XpCruiseCheckInRecord::getDeleted, 0) .eq(XpCruiseCheckInRecord::getCheckLocationId, checkLocationId) .eq(XpCruiseCheckInRecord::getOperationsUserId, dto.getOperationsUserId()) .last(" and DATE_FORMAT(check_in_time, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')")); .last(" and DATE(check_in_time) = DATE(NOW())")); if(null != cruiseCheckInRecord){ throw new ServiceException("不能重复打卡", I18nKeyConstant.CANNOT_REPEAT_CLOCKING_IN); } @@ -169,7 +169,7 @@ .eq(XpCruiseCheckInRecord::getCruiseCheckInRuleId, dto.getId()) .eq(XpCruiseCheckInRecord::getDeleted, 0) .eq(XpCruiseCheckInRecord::getOperationsUserId, uid) .last(" and DATE_FORMAT(check_in_time, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d') order by check_in_time desc limit 1")); .last(" and DATE(check_in_time) = DATE(NOW()) order by check_in_time desc limit 1")); XpCruiseCheckInRuleLocation cruiseCheckInRuleLocation = null; //没有打卡的情况,用第一个打卡点位 if(null == cruiseCheckInRecord){ @@ -232,6 +232,6 @@ .eq(XpCruiseCheckInRecord::getCheckLocationId, locationId) .eq(XpCruiseCheckInRecord::getDeleted, 0) .eq(XpCruiseCheckInRecord::getOperationsUserId, uid) .last(" and DATE_FORMAT(check_in_time, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')")); .last(" and DATE(check_in_time) = DATE(NOW())")); } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -65,6 +65,7 @@ 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; @@ -1383,7 +1384,7 @@ 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()); @@ -1393,7 +1394,9 @@ .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) { @@ -1401,12 +1404,9 @@ 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()); } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/TaskReassignVo.java
New file @@ -0,0 +1,15 @@ package com.xiaopeng.maintenance.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel public class TaskReassignVo { @ApiModelProperty("任务id") private Long taskId; @ApiModelProperty("说明") private String comment; }