xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -65,7 +65,7 @@ @ApiOperation(value = "事故任务确认到达", tags = "运维APP-任务中心") @GetMapping("/api/v1/task/confirmArrive") @Transactional public R confirmArrive( Integer id) { public R confirmArrive( Long id) { return xpTaskService.confirmArrive(id); } @ApiOperation(value = "查询车辆不分页列表", tags = "运维APP-任务中心") xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskManagementController.java
New file @@ -0,0 +1,203 @@ package com.xiaopeng.maintenance.controller; import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.maintenance.XpErrorType; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.account.LoginOperationUser; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.maintenance.dto.HandleVehicleAccidentDto; import com.xiaopeng.maintenance.dto.SaveErrorTaskDto; import com.xiaopeng.maintenance.dto.SaveRoutineDetailDto; import com.xiaopeng.maintenance.dto.SaveVehicleAccidentDto; import com.xiaopeng.maintenance.model.query.TaskManagementPageListQuery; import com.xiaopeng.maintenance.model.query.TaskPageListQuery; import com.xiaopeng.maintenance.model.query.XpTaskRecordPageQuery; import com.xiaopeng.maintenance.model.vo.*; import com.xiaopeng.maintenance.service.IXpErrorTypeService; import com.xiaopeng.maintenance.service.XpTaskService; import com.xiaopeng.maintenance.vo.VehicleListVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; /** * <p> * 运维APP 任务中心 * </p> * * @author mitao * @since 2026-02-03 */ @RestController @Slf4j @Api(tags = "管理后台-任务工单") @RequestMapping("/api/v1/taskManagement") public class XpTaskManagementController { @Resource private XpTaskService xpTaskService; @Resource private TokenService tokenService; @Resource private IXpErrorTypeService xpErrorTypeService; @Resource private XpFleetOperationsClient xpFleetOperationsClient; @Resource private XpVehicleClient xpVehicleClient; @ApiOperation(value = "事故类型列表", response = XpErrorType.class) @GetMapping("/errorTypeList") public R<List<XpErrorType>> errorTypeList() { return xpErrorTypeService.errorTypeList(); } @ApiOperation(value = "任务中心列表", response = TaskPageListVO.class) @PostMapping("/pageList") public R<PageInfo<TaskManagementPageListVO>> pageListManagement(@RequestBody TaskManagementPageListQuery query) { PageInfo<TaskManagementPageListVO> pageList = xpTaskService.pageListManagement(query); return R.ok(pageList); } /** * 管理后台-车辆管理-运营车辆管理-删除任务/事故 * @param id * @return */ @ApiOperation(value = "删除任务/事故") @DeleteMapping("/deleteTaskById") public R<?> deleteTaskById(@ApiParam(name = "id", value = "任务ID")Long id){ xpTaskService.deleteTaskById(id); return R.ok(); } @ApiOperation(value = "任务分配") @GetMapping("/assigneeTask") public R assigneeTask(@ApiParam(name = "id", value = "任务ID") Long id, @ApiParam(name = "handlerUserId", value = "处理人id")Long handlerUserId) { Long assigneeUserId = tokenService.getLoginUser().getSysUser().getId(); return xpTaskService.assigneeTask(id, handlerUserId,assigneeUserId); } @ApiOperation(value = "创建任务事故") @PostMapping("/saveTask") public R saveTask(@RequestBody SaveErrorTaskDto dto) { Long reportUserId = tokenService.getLoginUser().getSysUser().getId(); xpTaskService.saveTask(dto, reportUserId); return R.ok(); } @ApiOperation(value = "任务详情") @GetMapping("/taskDetail") public R<TaskManagementDetailVO> taskDetail(Long id) { return xpTaskService.taskDetail(id); } @ApiOperation(value = "查询车辆不分页列表") @PostMapping(" /listVehicle") public R<List<VehicleListVO>> listVehicle() { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser(); // 查询当前人员所属车队 查询车队关联车辆 R<List<Long>> vehicleByUserId = xpFleetOperationsClient.getVehicleByUserId(xpOperationsUser.getId()); List<Long> vehicleIds = vehicleByUserId.getData(); if (vehicleIds != null && !vehicleIds.isEmpty()){ // todo 查询车辆列表 获取经纬度 List<XpVehicle> data = xpVehicleClient.listByIds(vehicleIds).getData(); if (data!=null){ List<VehicleListVO> vehicleListVOS = new ArrayList<>(); for (XpVehicle xpVehicle : data) { VehicleListVO vehicleListVO = new VehicleListVO(); vehicleListVO.setId(xpVehicle.getId()); // vehicleListVO.setVehicleLon(xpVehicle.getVehicleLon()); // vehicleListVO.setVehicleLat(xpVehicle.getVehicleLat()); vehicleListVO.setVehicleCode(xpVehicle.getVehicleCode()); vehicleListVO.setVehicleColor(xpVehicle.getVehicleColor()); vehicleListVO.setPlateNumber(xpVehicle.getPlateNumber()); vehicleListVO.setOperatingStatus(xpVehicle.getOperatingStatus()); vehicleListVOS.add(vehicleListVO); } return R.ok(vehicleListVOS); } } return R.ok(new ArrayList<>()); } @ApiOperation(value = "上传车辆事故", tags = "运维APP-任务中心") @PostMapping(" /saveVehicleAccident") public R saveVehicleAccident(@RequestBody SaveVehicleAccidentDto dto) { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser(); xpTaskService.saveVehicleAccident(dto, xpOperationsUser); return R.ok(); } @ApiOperation(value = "车辆其他常规任务详情", tags = "运维APP-任务中心") @GetMapping(" /vehicleRoutineDetail") public R<TaskRoutineDetailVO> vehicleRoutineDetail(Long id) { return xpTaskService.vehicleRoutineDetail(id); } @ApiOperation(value = "上传车辆其他常规任务详情", tags = "运维APP-任务中心") @PostMapping(" /saveRoutineDetail") public R saveRoutineDetail(@RequestBody SaveRoutineDetailDto dto) { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); Long id = loginOperationUser.getId(); return xpTaskService.saveRoutineDetail(dto, id); } @ApiOperation(value = "车辆常规充电任务详情", tags = "运维APP-任务中心") @GetMapping(" /chargingDetail") public R<TaskChargingDetailVO> chargingDetail(Long id) { return xpTaskService.chargingDetail(id); } @ApiOperation(value = "车辆常规维修任务详情", tags = "运维APP-任务中心") @GetMapping(" /repairDetail") public R<com.xiaopeng.maintenance.vo.TaskRepairDetailVO> repairDetail(Long id) { return xpTaskService.repairDetail(id); } @ApiOperation(value = "车辆常规整备任务详情", tags = "运维APP-任务中心") @GetMapping(" /preparationDetail") public R<com.xiaopeng.maintenance.vo.TaskPreparationDetailVO> preparationDetail(Long id) { return xpTaskService.preparationDetail(id); } @ApiOperation(value = "车辆常规检测任务详情", tags = "运维APP-任务中心") @GetMapping(" /detectionDetail") public R<com.xiaopeng.maintenance.vo.TaskDetectionDetailVO> detectionDetail(Long id) { return xpTaskService.detectionDetail(id); } @ApiOperation(value = "车辆常规洗车任务详情", tags = "运维APP-任务中心") @GetMapping(" /cleanDetail") public R<com.xiaopeng.maintenance.vo.TaskCleanDetailVO> cleanDetail(Long id) { return xpTaskService.cleanDetail(id); } @ApiOperation(value = "处理车辆事故", tags = "运维APP-任务中心") @PostMapping(" /handleVehicleAccident") @Transactional public R handleVehicleAccident(@RequestBody HandleVehicleAccidentDto dto) { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser(); return xpTaskService.handleVehicleAccident(dto,xpOperationsUser); } /** * 通过车辆id查询任务事故分页列表 * @return */ @ApiOperation(value = "通过车辆id查询任务事故分页列表", tags = {"管理后台-车辆管理-运营车辆管理"}) @PostMapping("/api/v1/vehicle/queryTaskByVehicleId") public R<PageInfo<XpTaskRecordVO>> queryTaskByVehicleId(@Valid @RequestBody XpTaskRecordPageQuery query) { return R.ok(xpTaskService.queryTaskByVehicleId(query)); } @ApiOperation(value = "事故类型列表", response = XpErrorType.class, tags = "管理后台-车辆管理-运营车辆管理") @GetMapping(" /errorTypeTreeList") public R<List<XpErrorType>> errorTypeTreeList() { return xpErrorTypeService.errorTypeList(); } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/SaveErrorTaskDto.java
New file @@ -0,0 +1,31 @@ package com.xiaopeng.maintenance.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Data @ApiModel(value = "管理后台创建事故任务DTO") public class SaveErrorTaskDto { @ApiModelProperty(value = "车辆ids") private List<Long> vehicleIds; @ApiModelProperty(value = "任务类型id 对应数据字典,多个逗号分割") private String taskTypeId; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "任务描述") private String taskDescription; @ApiModelProperty(value = "任务图片") private String taskImage; @ApiModelProperty(value = "车辆id") private Long vehicleId; @ApiModelProperty(value = "车辆位置") private String vehicleLocation; @ApiModelProperty(value = "车辆经度") private BigDecimal vehicleLon; @ApiModelProperty(value = "车辆纬度") private BigDecimal vehicleLat; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpTaskMapper.java
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xiaopeng.api.model.maintenance.XpTask; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.model.query.TaskManagementPageListQuery; import com.xiaopeng.maintenance.model.query.WorkBenchQuery; import com.xiaopeng.maintenance.model.vo.TaskManagementPageListVO; import com.xiaopeng.maintenance.model.vo.WorkBenchVO; import com.xiaopeng.maintenance.model.query.TaskPageListQuery; import com.xiaopeng.maintenance.model.vo.TaskPageListVO; @@ -25,4 +27,6 @@ List<WorkBenchVO> workbench(@Param("pageInfo") PageInfo<WorkBenchVO> pageInfo, @Param("query")WorkBenchQuery query); List<TaskPageListVO> pageList(@Param("pageInfo")PageInfo<TaskPageListVO> pageInfo, @Param("query")TaskPageListQuery query); List<TaskManagementPageListVO> pageListManagement(@Param("pageInfo")PageInfo<TaskManagementPageListVO> pageInfo,@Param("query") TaskManagementPageListQuery query); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/query/TaskManagementPageListQuery.java
New file @@ -0,0 +1,29 @@ package com.xiaopeng.maintenance.model.query; import com.xiaopeng.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "管理后台任务工单列表查询query") public class TaskManagementPageListQuery extends BasePage { @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "任务类别1常规 2事故") private Integer taskCategory; @ApiModelProperty(value = "常规任务类型枚举1车辆检查 2车辆充电 3车辆整备 4整备洗车 5车辆维修 6车辆保养 7车辆保险到期 8车辆年检到期 9车辆运营资质到期") private Integer taskGeneralId; @ApiModelProperty(value = "事故任务类型id") private Long taskErrorId; @ApiModelProperty(value = "任务优先级 0=P0 1=P1 2=P2 3=P3 不传为全部") private Integer taskUrgencyLevel; @ApiModelProperty(value = "状态0=待到达 1=待处理 2=已完成 3=已取消") private Integer status; @ApiModelProperty(value = " 开始时间 yyyy-MM-dd HH:mm:ss") private String startTime; @ApiModelProperty(value = " 结束时间 yyyy-MM-dd HH:mm:ss") private String endTime; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementAccidentDetailVO.java
New file @@ -0,0 +1,102 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.xiaopeng.api.model.maintenance.XpErrorType; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** * <p> * 运维APP 任务事故详情 * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台任务事故详情VO") public class TaskManagementAccidentDetailVO implements Serializable { @ApiModelProperty(value = "任务id") private Long id; @ApiModelProperty(value = "状态 0=待到达 1=待处理 2=已完成 3=已取消") private Integer status; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "车辆id") private Long vehicleId; @ApiModelProperty(value = "任务类型名称 任务类别为2时返回") private List<XpErrorType> errorTypeList; @ApiModelProperty(value = "任务描述") private String taskDescription; @ApiModelProperty(value = "任务描述图片") private String taskImage; @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "车辆颜色") private String vehicleColor; @ApiModelProperty(value = "车辆编码") private String vehicleCode; @ApiModelProperty(value = "车辆vin") private String vehicleVin; @ApiModelProperty(value = "车辆图片") private String vehiclePictures; @ApiModelProperty(value = "上报地址") private String vehicleLocation; @ApiModelProperty(value = "上报人id") private Long reportUserId; @ApiModelProperty(value = "上报人名称") private String reportUserName; @ApiModelProperty(value = "上报人电话") private String reportUserPhone; @ApiModelProperty(value = "上报人头像") private String reportUserAvatar; @ApiModelProperty(value = "处理id") private Long handleUserId; @ApiModelProperty(value = "处理名称") private String handleUserName; @ApiModelProperty(value = "处理电话") private String handleUserPhone; @ApiModelProperty(value = "处理头像") private String handleUserAvatar; @ApiModelProperty(value = "死亡人数") private Integer deathCount; @ApiModelProperty(value = "重伤人数") private Integer severeCount; @ApiModelProperty(value = "轻伤人数") private Integer minorCount; @ApiModelProperty(value = "责任判断 1我方主责 2我方无责 3双方同责") private Integer responsibilityJudgment; @ApiModelProperty(value = "交警判责现场情况") private String responsibleDescription; @ApiModelProperty(value = "交警判责现场照片") private String responsibleImage; @ApiModelProperty(value = "处置情况描述") private String disposalDescription; @ApiModelProperty(value = "处置情况照片") private String disposalImage; @ApiModelProperty(value = "现场情况描述") private String situationDescription; @ApiModelProperty(value = "现场情况照片") private String situationImage; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementChargingDetailVO.java
New file @@ -0,0 +1,61 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 运维APP 常规任务详情VO * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台常规充电任务详情VO") public class TaskManagementChargingDetailVO implements Serializable { @ApiModelProperty(value = "任务id") private Long id; @ApiModelProperty(value = "车辆id") private Long vehicleId; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "车辆颜色") private String vehicleColor; @ApiModelProperty(value = "车辆编码") private String vehicleCode; @ApiModelProperty(value = "车辆Vin") private String vehicleVin; @ApiModelProperty(value = "车辆地址") private String vehicleLocation; @ApiModelProperty(value = "任务编号") private String taskCode; @ApiModelProperty(value = "开始剩余电量") private Integer startRemainingBattery; @ApiModelProperty(value = "开始充电图片") private String startChargingPicture; @ApiModelProperty(value = "开始充电时间") private LocalDateTime startTime; @ApiModelProperty(value = "结束剩余电量") private Integer endRemainingBattery; @ApiModelProperty(value = "结束充电图片") private String endChargingPicture; @ApiModelProperty(value = "结束充电时间") private LocalDateTime endTime; @ApiModelProperty(value = "开始充电操作人") private Long startOperationsUserId; @ApiModelProperty(value = "开始充电操作人名称") private String startOperationsUserName; @ApiModelProperty(value = "结束充电操作人") private Long endOperationsUserId; @ApiModelProperty(value = "结束充电操作人名称") private String endOperationsUserName; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementCleanDetailVO.java
New file @@ -0,0 +1,50 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 运维APP 常规洗车任务详情VO * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台常规洗车任务详情VO") public class TaskManagementCleanDetailVO implements Serializable { @ApiModelProperty(value = "任务id") private Long id; @ApiModelProperty(value = "车辆id") private Long vehicleId; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "车辆颜色") private String vehicleColor; @ApiModelProperty(value = "车辆编码") private String vehicleCode; @ApiModelProperty(value = "车辆Vin") private String vehicleVin; @ApiModelProperty(value = "车辆地址") private String vehicleLocation; @ApiModelProperty(value = "任务编号") private String taskCode; @ApiModelProperty(value = "完成情况图片") private String taskImage; @ApiModelProperty(value = "操作人id") private Long operationUserId; @ApiModelProperty(value = "操作人名称") private String operationsUserName; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementDetailVO.java
New file @@ -0,0 +1,41 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 运维APP 常规检测任务详情VO * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台任务详情VO") public class TaskManagementDetailVO implements Serializable { @ApiModelProperty(value = "事故任务详情") private TaskManagementAccidentDetailVO accidentDetailVO; @ApiModelProperty(value = "充电任务详情") private TaskManagementChargingDetailVO chargingDetailVO; @ApiModelProperty(value = "检测任务详情") private TaskManagementDetectionDetailVO detectionDetailVO; @ApiModelProperty(value = "洗车任务详情") private TaskManagementCleanDetailVO cleanDetailVO; @ApiModelProperty(value = "整备任务详情") private TaskManagementPreparationDetailVO preparationDetailVO; @ApiModelProperty(value = "维修任务详情") private TaskManagementRepairDetailVO repairDetailVO; @ApiModelProperty(value = "保养、年检、保险、营运资质任务详情") private TaskManagementRoutineDetailVO routineDetailVO; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementDetectionDetailVO.java
New file @@ -0,0 +1,98 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 运维APP 常规检测任务详情VO * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台常规检测任务详情VO") public class TaskManagementDetectionDetailVO implements Serializable { @ApiModelProperty(value = "任务id") private Long id; @ApiModelProperty(value = "车辆id") private Long vehicleId; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "车辆颜色") private String vehicleColor; @ApiModelProperty(value = "车辆编码") private String vehicleCode; @ApiModelProperty(value = "车辆Vin") private String vehicleVin; @ApiModelProperty(value = "车辆地址") private String vehicleLocation; @ApiModelProperty(value = "任务编号") private String taskCode; @ApiModelProperty(value = "网络检测") private Integer networkDetection; @ApiModelProperty(value = "版本核对") private Integer versionVerification; @ApiModelProperty(value = "通讯自检") private Integer communicationSelfCheck; @ApiModelProperty(value = "远程自检") private Integer remoteSelfCheck; @ApiModelProperty(value = "防撞激活") private Integer collisionPrevention; @ApiModelProperty(value = "传感器自检") private Integer sensorSelfCheck; @ApiModelProperty(value = "传感器清洁") private Integer sensorCleaning; @ApiModelProperty(value = "传感器清洁检测图") private String sensorCleaningPicture; @ApiModelProperty(value = "交互屏") private Integer interactiveScreen; @ApiModelProperty(value = "交互屏检测图") private String interactiveScreenPicture; @ApiModelProperty(value = "求助按钮") private Integer helpButton; @ApiModelProperty(value = "求助按钮图") private String helpButtonPicture; @ApiModelProperty(value = "支付功能") private Integer paymentFunction; @ApiModelProperty(value = "支付功能图") private String paymentFunctionPicture; @ApiModelProperty(value = "系统检查") private Integer systemCheck; @ApiModelProperty(value = "系统检查图") private String systemCheckPicture; @ApiModelProperty(value = "检查人id") private Long operationsUserId; @ApiModelProperty(value = "检查人名称") private String operationsUserName; @ApiModelProperty(value = "检测时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime checkTime; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementPageListVO.java
New file @@ -0,0 +1,48 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; /** * <p> * 运维APP 任务中心分页列表VO * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台任务中心分页列表VO") public class TaskManagementPageListVO implements Serializable { @ApiModelProperty(value = "任务") private Long id; @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "任务类别1常规 2事故") private Integer taskCategory; @ApiModelProperty(value = "任务类型id 任务类别为2时对应数据字典,多个逗号分割,为1的时候 枚举1车辆检查 2车辆充电 3车辆整备 4整备洗车 5车辆维修 6车辆保养 7车辆保险到期 8车辆年检到期 9车辆运营资质到期") private String taskTypeId; @ApiModelProperty(value = "任务类型名称 任务类别为2时返回") private String taskTypeName; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "上报时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "状态 0=待到达 1=待处理 2=已完成 3=已取消") private Integer status; @ApiModelProperty(value = "处理人id") private Integer handleUserId; @ApiModelProperty(value = "处理人名称") private String handleUserName; @ApiModelProperty(value = "任务描述") private String taskDescription; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementPreparationDetailVO.java
New file @@ -0,0 +1,81 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 运维APP 常规整备任务详情VO * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台常规整备任务详情VO") public class TaskManagementPreparationDetailVO implements Serializable { @ApiModelProperty(value = "任务id") private Long id; @ApiModelProperty(value = "车辆id") private Long vehicleId; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "车辆颜色") private String vehicleColor; @ApiModelProperty(value = "车辆编码") private String vehicleCode; @ApiModelProperty(value = "车辆Vin") private String vehicleVin; @ApiModelProperty(value = "车辆地址") private String vehicleLocation; @ApiModelProperty(value = "任务编号") private String taskCode; @ApiModelProperty(value = "左前轮") private String leftFrontWheel; @ApiModelProperty(value = "右前轮") private String rightFrontWheel; @ApiModelProperty(value = "左后轮") private String leftRearWheel; @ApiModelProperty(value = "右后轮") private String rightRearWheel; @ApiModelProperty(value = "大灯") private String headLight; @ApiModelProperty(value = "转向灯") private String turnSignal; @ApiModelProperty(value = "刹车灯") private String brakeLight; @ApiModelProperty(value = "雾灯") private String fogLight; @ApiModelProperty(value = "车身标识") private String bodyEmblem; @ApiModelProperty(value = "舱内清洁") private String cabinCleaning; @ApiModelProperty(value = "遗失物品") private String lostItems; @ApiModelProperty(value = "备注") private String remarks; @ApiModelProperty(value = "操作人id") private Long operationsUserId; @ApiModelProperty(value = "操作人名称") private String operationsUserName; @ApiModelProperty(value = "操作时间") private LocalDateTime operationsTime; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementRepairDetailVO.java
New file @@ -0,0 +1,79 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; /** * <p> * 运维APP 常规维修任务详情VO * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台常规维修任务详情VO") public class TaskManagementRepairDetailVO implements Serializable { @ApiModelProperty(value = "任务id") private Long id; @ApiModelProperty(value = "车辆id") private Long vehicleId; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "车辆颜色") private String vehicleColor; @ApiModelProperty(value = "车辆编码") private String vehicleCode; @ApiModelProperty(value = "车辆Vin") private String vehicleVin; @ApiModelProperty(value = "车辆地址") private String vehicleLocation; @ApiModelProperty(value = "任务编号") private String taskCode; @ApiModelProperty(value = "开始时间") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate startTime; @ApiModelProperty(value = "结束时间") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate endTime; @ApiModelProperty(value = "维修原因") private String repairReason; @ApiModelProperty(value = "维修前图片") private String startRepairPicture; @ApiModelProperty(value = "维修费用") private Double repairMoney; @ApiModelProperty(value = "维修费用明细") private String repairMoneyDetail; @ApiModelProperty(value = "送修人") private Long sendUserId; @ApiModelProperty(value = "送修人名称") private String sendUserName; @ApiModelProperty(value = "送修时间") private LocalDateTime sendTime; @ApiModelProperty(value = "取回人") private Long returnUserId; @ApiModelProperty(value = "取回人名称") private String returnUserName; @ApiModelProperty(value = "取回时间") private LocalDateTime returnTime; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/TaskManagementRoutineDetailVO.java
New file @@ -0,0 +1,51 @@ package com.xiaopeng.maintenance.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; /** * <p> * 运维APP 常规任务详情VO * </p> * * @author mitao * @since 2026-02-06 */ @Data @ApiModel(value = "管理后台常规任务保养、年检、保险、营运资质任务详情") public class TaskManagementRoutineDetailVO implements Serializable { @ApiModelProperty(value = "任务id") private Long id; @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3") private Integer taskUrgencyLevel; @ApiModelProperty(value = "车牌号") private String plateNumber; @ApiModelProperty(value = "车辆颜色") private String vehicleColor; @ApiModelProperty(value = "车辆编码") private String vehicleCode; @ApiModelProperty(value = "车辆Vin") private String vehicleVin; @ApiModelProperty(value = "车辆地址") private String vehicleLocation; @ApiModelProperty(value = "任务编号") private String taskCode; @ApiModelProperty(value = "完成任务情况描述") private String taskDescription; @ApiModelProperty(value = "完成图片") private String taskImage; @ApiModelProperty(value = "处理人id") private Long handleUserId; @ApiModelProperty(value = "处理人姓名") private String handleUserName; @ApiModelProperty(value = "处理时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime handleTime; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java
@@ -6,8 +6,10 @@ import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.dto.HandleVehicleAccidentDto; import com.xiaopeng.maintenance.dto.SaveErrorTaskDto; import com.xiaopeng.maintenance.dto.SaveRoutineDetailDto; import com.xiaopeng.maintenance.dto.SaveVehicleAccidentDto; import com.xiaopeng.maintenance.model.query.TaskManagementPageListQuery; import com.xiaopeng.maintenance.model.query.WorkBenchQuery; import com.xiaopeng.maintenance.model.query.XpTaskRecordPageQuery; import com.xiaopeng.maintenance.model.vo.*; @@ -49,7 +51,7 @@ R<com.xiaopeng.maintenance.vo.TaskCleanDetailVO> cleanDetail(Long id); R confirmArrive(Integer id); R confirmArrive(Long id); /** * 通过车辆id查询任务事故分页列表 @@ -70,4 +72,12 @@ * @param status */ void updateTaskStatus(Long taskId, Integer status); PageInfo<TaskManagementPageListVO> pageListManagement(TaskManagementPageListQuery query); R assigneeTask(Long id, Long handlerUserId,Long assigneeUserId); void saveTask(SaveErrorTaskDto dto, Long reportUserId); R<TaskManagementDetailVO> taskDetail(Long id); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -3,8 +3,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.feignClient.account.SysUserClient; import com.xiaopeng.api.feignClient.account.XpOperationUserClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.account.SysUser; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.maintenance.*; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; @@ -14,20 +16,24 @@ import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.constant.I18nKeyConstant; import com.xiaopeng.maintenance.dto.HandleVehicleAccidentDto; import com.xiaopeng.maintenance.dto.SaveErrorTaskDto; import com.xiaopeng.maintenance.dto.SaveRoutineDetailDto; import com.xiaopeng.maintenance.dto.SaveVehicleAccidentDto; import com.xiaopeng.maintenance.mapper.*; import com.xiaopeng.maintenance.model.query.TaskManagementPageListQuery; import com.xiaopeng.maintenance.model.query.TaskPageListQuery; import com.xiaopeng.maintenance.model.query.WorkBenchQuery; import com.xiaopeng.maintenance.model.query.XpTaskRecordPageQuery; import com.xiaopeng.maintenance.model.vo.*; import com.xiaopeng.maintenance.service.XpTaskService; import com.xiaopeng.maintenance.utils.UUIDUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @@ -77,6 +83,8 @@ private XpVehicleCleanMapper vehicleCleanMapper; @Autowired private XpOperationUserClient xpOperationUserClient; @Autowired private SysUserClient sysUserClient; @Autowired private XpTaskHandleDetailRoutineMapper xpTaskHandleDetailRoutineMapper; @@ -138,7 +146,9 @@ @Override public void saveVehicleAccident(SaveVehicleAccidentDto dto, XpOperationsUser xpOperationsUser) { XpTask xpTask = new XpTask(); xpTask.setTaskCode("1"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); xpTask.setTaskCode(code); xpTask.setTaskCategory(2); xpTask.setTaskTypeId(dto.getTaskTypeId()); xpTask.setTaskUrgencyLevel(dto.getTaskUrgencyLevel()); @@ -466,13 +476,6 @@ @Override public R<com.xiaopeng.maintenance.vo.TaskDetectionDetailVO> detectionDetail(Long id) { com.xiaopeng.maintenance.vo.TaskDetectionDetailVO res = new com.xiaopeng.maintenance.vo.TaskDetectionDetailVO(); XpTask task = this.getById(id); if (task == null){ throw new ServiceException( @@ -614,7 +617,7 @@ } @Override public R confirmArrive(Integer id) { public R confirmArrive(Long id) { XpTask task = this.getById(id); if (task!=null){ task.setStatus(1); @@ -734,4 +737,170 @@ } } @Override public PageInfo<TaskManagementPageListVO> pageListManagement(TaskManagementPageListQuery query) { PageInfo<TaskManagementPageListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TaskManagementPageListVO> list = this.baseMapper.pageListManagement(pageInfo, query); pageInfo.setRecords(list); return pageInfo; } @Override public R assigneeTask(Long id, Long handlerUserId,Long assigneeUserId) { XpTask task = this.getById(id); task.setAssigneeTime(LocalDateTime.now()); task.setHandleUserId(handlerUserId); task.setAssigneeUserId(assigneeUserId); this.updateById(task); return R.ok(); } @Override public void saveTask(SaveErrorTaskDto dto, Long reportUserId) { XpTask task = new XpTask(); BeanUtils.copyProperties(dto, task); task.setReportTime(LocalDateTime.now()); task.setStatus(0); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); task.setTaskCode(code); // 查询规则 XpTaskRule taskRule = xpTaskRuleMapper.selectOne(null); if (taskRule != null){ task.setEndTime(LocalDateTime.now().plusMinutes(taskRule.getProcessingTimeLimit())); } } @Override public R<TaskManagementDetailVO> taskDetail(Long id) { TaskManagementDetailVO managementDetailVO = new TaskManagementDetailVO(); XpTask task = this.getById(id); if (task == null){ throw new ServiceException( "任务不存在", I18nKeyConstant.TASK_NOT_EXIST ); } XpVehicle vehicle = xpVehicleClient.queryById(task.getVehicleId()).getData(); if (vehicle == null){ throw new ServiceException( "车辆不存在", I18nKeyConstant.VEHICLE_NOT_EXIST ); } if (task.getTaskCategory()==1){ // 常规任务 switch (task.getTaskTypeId()){ case "1": // 检测 TaskManagementDetectionDetailVO taskManagementDetectionDetailVO = new TaskManagementDetectionDetailVO(); break; case "2": // 充电 TaskManagementChargingDetailVO taskManagementChargingDetailVO = new TaskManagementChargingDetailVO(); break; case "3": // 整备 TaskManagementPreparationDetailVO taskManagementPreparationDetailVO = new TaskManagementPreparationDetailVO(); break; case "4": // 洗车 TaskManagementCleanDetailVO taskManagementCleanDetailVO = new TaskManagementCleanDetailVO(); break; case "5": // 维修 TaskManagementRepairDetailVO taskManagementRepairDetailVO = new TaskManagementRepairDetailVO(); break; default: // 保养、年检、保险、营运资质 TaskManagementRoutineDetailVO res = new TaskManagementRoutineDetailVO(); res.setId(task.getId()); res.setTaskUrgencyLevel(task.getTaskUrgencyLevel()); res.setPlateNumber(vehicle.getPlateNumber()); res.setVehicleColor(vehicle.getVehicleColor()); res.setVehicleCode(vehicle.getVehicleCode()); res.setVehicleLocation(task.getVehicleLocation()); res.setVehicleVin(vehicle.getVehicleVin()); res.setTaskCode(task.getTaskCode()); res.setTaskDescription(task.getTaskDescription()); res.setTaskImage(task.getTaskImage()); res.setHandleUserId(task.getHandleUserId()); XpOperationsUser operationsUser = xpOperationUserClient.queryById(task.getHandleUserId()).getData(); if (operationsUser != null){ res.setHandleUserId(operationsUser.getId()); res.setHandleUserName(operationsUser.getNickName()); } res.setHandleTime(task.getHandleTime()); res.setId(id); res.setTaskUrgencyLevel(task.getTaskUrgencyLevel()); res.setPlateNumber(vehicle.getPlateNumber()); res.setVehicleColor(vehicle.getVehicleColor()); res.setVehicleCode(vehicle.getVehicleCode()); res.setVehicleLocation(task.getVehicleLocation()); res.setVehicleVin(vehicle.getVehicleVin()); break; } }else{ // 事故任务 TaskManagementAccidentDetailVO res = new TaskManagementAccidentDetailVO(); Map<Long, List<XpErrorType>> errorType = errorTypeMapper.selectList(new LambdaQueryWrapper<XpErrorType>() .in(XpErrorType::getId, Arrays.asList(task.getTaskTypeId().split(",")))) .stream().collect(Collectors.groupingBy(XpErrorType::getParentId)); List<XpErrorType> xpErrorTypes = errorType.get(0L); for (XpErrorType xpErrorType : xpErrorTypes) { xpErrorType.setChild(errorType.get(xpErrorType.getId())); } res.setErrorTypeList(xpErrorTypes); res.setStatus(task.getStatus()); res.setTaskDescription(task.getTaskDescription()); res.setTaskImage(task.getTaskImage()); res.setId(id); res.setVehicleId(vehicle.getId()); res.setTaskUrgencyLevel(task.getTaskUrgencyLevel()); res.setPlateNumber(vehicle.getPlateNumber()); res.setVehicleColor(vehicle.getVehicleColor()); res.setVehicleCode(vehicle.getVehicleCode()); res.setVehicleLocation(task.getVehicleLocation()); res.setVehicleVin(vehicle.getVehicleVin()); List<Long> reportUserIds = new ArrayList<>(); reportUserIds.add(task.getReportUserId()); List<SysUser> sysUsers = sysUserClient.listByIds(reportUserIds).getData(); if (sysUsers!=null && !sysUsers.isEmpty()){ SysUser sysUser = sysUsers.get(0); res.setReportUserId(sysUser.getId()); res.setReportUserName(sysUser.getNickName()); res.setReportUserPhone(sysUser.getPhoneNumber()); res.setReportUserAvatar(sysUser.getAvatar()); } XpOperationsUser operationsUser = xpOperationUserClient.queryById(task.getHandleUserId()).getData(); if (operationsUser != null){ res.setHandleUserId(operationsUser.getId()); res.setHandleUserName(operationsUser.getNickName()); res.setHandleUserPhone(operationsUser.getPhoneNumber()); res.setHandleUserAvatar(operationsUser.getAvatar()); } XpTaskHandleDetail xpTaskHandleDetail = xpTaskHandleDetailMapper.selectOne(new LambdaQueryWrapper<XpTaskHandleDetail>() .eq(XpTaskHandleDetail::getTaskId, id)); res.setDeathCount(xpTaskHandleDetail.getDeathCount()); res.setSevereCount(xpTaskHandleDetail.getSevereCount()); res.setMinorCount(xpTaskHandleDetail.getMinorCount()); res.setResponsibilityJudgment(xpTaskHandleDetail.getResponsibilityJudgment()); res.setResponsibleDescription(xpTaskHandleDetail.getResponsibleDescription()); res.setResponsibleImage(xpTaskHandleDetail.getResponsibleImage()); res.setDisposalDescription(xpTaskHandleDetail.getDisposalDescription()); res.setDisposalImage(xpTaskHandleDetail.getDisposalImage()); res.setSituationDescription(xpTaskHandleDetail.getSituationDescription()); res.setSituationImage(xpTaskHandleDetail.getSituationImage()); managementDetailVO.setAccidentDetailVO(res); } return R.ok(managementDetailVO); } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/utils/UUIDUtil.java
New file @@ -0,0 +1,103 @@ package com.xiaopeng.maintenance.utils; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; /** * 定义生成随机码的工具类 */ public class UUIDUtil { private int i = 1; /** * 定义生成原生的UUID随机码 * * @return */ public static String getNativeUUID() { return UUID.randomUUID().toString(); } /** * 生成32位随机码 * * @return */ public static String getRandomCode() { return UUIDUtil.getNativeUUID().replaceAll("-", ""); } /** * 获取给定长度的随机码 * * @param num * @return * @throws Exception */ public static String getRandomCode(Integer num) throws Exception { String str = null; if (0 < num) { if (num % 32 > 0) { Integer s = num / 32; Integer l = num % 32; StringBuffer sb = new StringBuffer(); for (int i = 0; i < s; i++) { sb.append(UUIDUtil.getRandomCode()); } sb.append(UUIDUtil.getRandomCode().substring(0, l)); str = sb.toString(); } else if (num % 32 == 0) { Integer s = num / 32; StringBuffer sb = new StringBuffer(); for (int i = 0; i < s; i++) { sb.append(UUIDUtil.getRandomCode()); } str = sb.toString(); } else { str = UUIDUtil.getRandomCode().substring(0, num); } } else { throw new Exception("参数只能大于0"); } return str; } /** * 获取根据当前时间的字符串数据 * * @return */ public synchronized static String getTimeStr() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmssS"); return simpleDateFormat.format(new Date()); } /** * @Description: 获取数字随机码 * @Author pzb * @Date 2021/8/11 16:52 * @Param * @Return * @Exception */ public static String getNumberRandom(Integer num) { if (null == num) { num = 32; } StringBuffer sb = new StringBuffer(); for (int i = 0; i < num; i++) { sb.append(Double.valueOf(Math.random() * 10).intValue()); } return sb.toString(); } } xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpTaskMapper.xml
@@ -4,47 +4,56 @@ <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.xiaopeng.api.model.maintenance.XpTask"> <id column="id" property="id" /> <result column="task_code" property="taskCode" /> <result column="task_category" property="taskCategory" /> <result column="task_type_id" property="taskTypeId" /> <result column="task_urgency_level" property="taskUrgencyLevel" /> <result column="task_description" property="taskDescription" /> <result column="vehicle_location" property="vehicleLocation" /> <result column="vehicle_id" property="vehicleId" /> <result column="vehicle_lon" property="vehicleLon" /> <result column="vehicle_lat" property="vehicleLat" /> <result column="handle_user_id" property="handleUserId" /> <result column="handle_time" property="handleTime" /> <result column="assignee_user_id" property="assigneeUserId" /> <result column="assignee_time" property="assigneeTime" /> <result column="report_user_id" property="reportUserId" /> <result column="report_time" property="reportTime" /> <result column="status" property="status" /> <result column="is_deleted" property="deleted" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="create_by" property="createBy" /> <result column="update_by" property="updateBy" /> <id column="id" property="id"/> <result column="task_code" property="taskCode"/> <result column="task_category" property="taskCategory"/> <result column="task_type_id" property="taskTypeId"/> <result column="task_urgency_level" property="taskUrgencyLevel"/> <result column="task_description" property="taskDescription"/> <result column="vehicle_location" property="vehicleLocation"/> <result column="vehicle_id" property="vehicleId"/> <result column="vehicle_lon" property="vehicleLon"/> <result column="vehicle_lat" property="vehicleLat"/> <result column="handle_user_id" property="handleUserId"/> <result column="handle_time" property="handleTime"/> <result column="assignee_user_id" property="assigneeUserId"/> <result column="assignee_time" property="assigneeTime"/> <result column="report_user_id" property="reportUserId"/> <result column="report_time" property="reportTime"/> <result column="status" property="status"/> <result column="is_deleted" property="deleted"/> <result column="create_time" property="createTime"/> <result column="update_time" property="updateTime"/> <result column="create_by" property="createBy"/> <result column="update_by" property="updateBy"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, task_code, task_category,end_time, task_type_id,task_image, task_urgency_level, task_description, vehicle_location, vehicle_id, vehicle_lon, vehicle_lat, handle_user_id, handle_time, assignee_user_id, assignee_time, report_user_id, report_time, status, is_deleted, create_time, update_time, create_by, update_by id , task_code, task_category,end_time, task_type_id,task_image, task_urgency_level, task_description, vehicle_location, vehicle_id, vehicle_lon, vehicle_lat, handle_user_id, handle_time, assignee_user_id, assignee_time, report_user_id, report_time, status, is_deleted, create_time, update_time, create_by, update_by </sql> <select id="workbench" resultType="com.xiaopeng.maintenance.model.vo.WorkBenchVO"> select t1.*,t2.vehicle_vin as vehicleVin,t2.plate_number as plateNumber, t2.vehicle_color as vehicleColor,t2.vehicle_pictures as vehiclePictures select t1.*, t2.vehicle_vin as vehicleVin, t2.plate_number as plateNumber, t2.vehicle_color as vehicleColor, t2.vehicle_pictures as vehiclePictures from xp_task t1 left join xp_vehicle t2 on t1.vehicle_id = t2.id left join xp_vehicle t2 on t1.vehicle_id = t2.id where t1.handle_user_id = #{query.operationId} and t1.status = 1 and t1.is_deleted = 0 and t1.status = 1 and t1.is_deleted = 0 order by t1.assignee_time asc </select> <select id="pageList" resultType="com.xiaopeng.maintenance.model.vo.TaskPageListVO"> select t1.id,t1.task_code as taskCode,t1.end_time as endTime,t1.task_category as taskCategory,t1.task_type_id as taskTypeId,t1.task_urgency_level as taskUrgencyLevel,t1.task_description as taskDescription,t1.vehicle_location as vehicleLocation,t1.vehicle_id as vehicleId,t1.vehicle_lon as vehicleLon,t1.vehicle_lat as vehicleLat,t1.handle_user_id as handleUserId,t1.handle_time as handleTime,t1.assignee_user_id as assigneeUserId ,t1.assignee_time as assigneeTime,t1.task_image as taskImage,t1.report_user_id as reportUserId,t1.report_time as reportTime,t1.status as status,t1.is_deleted as isDeleted,t1.create_time as createTime,t1.update_time as updateTime,t1.create_by as createBy,t1.update_by as updateBy,t2.plate_number as plateNumber select t1.id,t1.task_code as taskCode,t1.end_time as endTime,t1.task_category as taskCategory,t1.task_type_id as taskTypeId,t1.task_urgency_level as taskUrgencyLevel,t1.task_description as taskDescription,t1.vehicle_location as vehicleLocation,t1.vehicle_id as vehicleId,t1.vehicle_lon as vehicleLon,t1.vehicle_lat as vehicleLat,t1.handle_user_id as handleUserId,t1.handle_time as handleTime,t1.assignee_user_id as assigneeUserId ,t1.assignee_time as assigneeTime,t1.task_image as taskImage,t1.report_user_id as reportUserId,t1.report_time as reportTime,t1.status as status,t1.is_deleted as isDeleted,t1.create_time as createTime,t1.update_time as updateTime,t1.create_by as createBy,t1.update_by as updateBy,t2.plate_number as plateNumber from xp_task t1 left join xp_vehicle t2 on t1.vehicle_id = t2.id where t1.is_deleted = 0 @@ -89,5 +98,37 @@ </select> <select id="pageListManagement" resultType="com.xiaopeng.maintenance.model.vo.TaskManagementPageListVO"> select t.id,t.task_category as taskCategory,t.task_type_id as taskTypeId,t.task_urgency_level as taskUrgencyLevel,t.task_description as taskDescription,t.handle_user_id as handleUserId,t.create_time as createTime,t.status as status, v.plate_number as plateNumber from xp_task t left join xp_vehicle v on t.vehicle_id = v.id where t.is_deleted = 0 <if test="query.taskCategory != null"> and t.task_category = #{query.taskCategory} </if> <if test="query.taskUrgencyLevel != null"> and t.task_urgency_level = #{query.taskUrgencyLevel} </if> <if test="query.status != null"> and t.status = #{query.status} </if> <if test="query.plateNumber != null and query.plateNumber != ''"> and v.plate_number like concat('%',#{query.plateNumber},'%') </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> and t.create_time between #{query.startTime} and #{query.endTime} </if> <if test="query.taskGeneralId != null"> and t.task_type_id = #{query.taskGeneralId} </if> <if test="query.taskErrorId != null"> and find_in_set(#{query.taskErrorId}, t.task_type_id) and t.task_category = 2 </if> order by t.status,t.task_urgency_level asc, t.create_time desc </select> </mapper>