运维模块直接通过Feign调用订单模块接口获取用户上报故障信息,附件按照运维模块的附件结构组织

This commit is contained in:
jkcdev 2025-04-18 15:07:59 +08:00
parent 290c1508f1
commit ed3c0ad9ee
9 changed files with 211 additions and 31 deletions

View File

@ -8,9 +8,7 @@
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>ebike-feign</artifactId> <artifactId>ebike-feign</artifactId>
<dependencies> <dependencies>

View File

@ -1,9 +1,12 @@
package com.cdzy.ebikemaintenance.controller; package com.cdzy.ebikemaintenance.controller;
import com.cdzy.common.model.EbikeOrderAttachmentFileDto;
import com.cdzy.common.model.EbikeUserFaultreportDto; import com.cdzy.common.model.EbikeUserFaultreportDto;
import com.cdzy.common.model.EbikeUserFaultreportQueryDto; import com.cdzy.common.model.EbikeUserFaultreportQueryDto;
import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.JsonResult;
import com.cdzy.ebikemaintenance.model.dto.response.EbikeFaultreportReviewDto; import com.cdzy.ebikemaintenance.model.dto.response.EbikeFaultreportReviewDto;
import com.cdzy.ebikemaintenance.model.dto.response.ResEbikeUserFaultreportDto;
import com.cdzy.ebikemaintenance.model.pojo.EbikeBikeFaultReportFile;
import com.cdzy.ebikemaintenance.model.pojo.EbikeFaultreportReview; import com.cdzy.ebikemaintenance.model.pojo.EbikeFaultreportReview;
import com.ebike.feign.clients.OrdersFeignClient; import com.ebike.feign.clients.OrdersFeignClient;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -87,6 +90,10 @@ public class EbikeFaultreportReviewController {
*/ */
@PostMapping("userFaultreports") @PostMapping("userFaultreports")
public JsonResult<?> getUserFaultreports(@RequestBody EbikeUserFaultreportQueryDto queryParam) { public JsonResult<?> getUserFaultreports(@RequestBody EbikeUserFaultreportQueryDto queryParam) {
return ebikeUserFaultreportService.getUserReportList(queryParam); List<ResEbikeUserFaultreportDto> faultReportDtos = ebikeFaultreportReviewService.getUserReportList(queryParam);
if (faultReportDtos == null) {
return JsonResult.failed("未查询到用户上报故障信息");
}
return JsonResult.success(faultReportDtos);
} }
} }

View File

@ -2,6 +2,7 @@ package com.cdzy.ebikemaintenance.model.dto.response;
import com.cdzy.common.model.EbikeOrderAttachmentFileDto; import com.cdzy.common.model.EbikeOrderAttachmentFileDto;
import com.cdzy.common.model.EbikeUserFaultreportDto; import com.cdzy.common.model.EbikeUserFaultreportDto;
import com.cdzy.ebikemaintenance.model.pojo.EbikeBikeFaultReportFile;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -74,9 +75,9 @@ public class EbikeFaultreportReviewDto implements Serializable {
/** /**
* 附件文件列表 * 附件文件列表
*/ */
List<EbikeOrderAttachmentFileDto> attachmentFiles; List<ResEbikeFaultReportFileDto> attachmentFiles;
/** /**
* 故障上报列表 * 故障上报列表
*/ */
List<EbikeUserFaultreportDto> faultReports; List<ResEbikeUserFaultreportDto> faultReports;
} }

View File

@ -0,0 +1,112 @@
package com.cdzy.ebikemaintenance.model.dto.response;
import com.cdzy.ebikemaintenance.model.pojo.EbikeBikeFaultReportFile;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 用户上报故障信息 运维端类
*
* @author dingchao
* @since 2025-04-17
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResEbikeUserFaultreportDto implements Serializable {
/**
* ID
*/
private String faultReportId;
/**
* 车辆编号
*/
private String bikeCode;
/**
* 当前位置
*/
private String position;
/**
* 损坏部件
*/
private String faultPart;
/**
* 故障说明
*/
private String faultDescription;
/**
* 上报时间
*/
private LocalDateTime reportAt;
/**
* 删除状态;1已删除
*/
private String isDeleted;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 删除时间
*/
private LocalDateTime deletedAt;
/**
* 上报人
*/
private String reportUser;
/**
* 上报人手机号
*/
private String userMobile;
/**
* 上报来源
*/
private String reportSource;
/**
* 处理状态
*/
private String handleState;
/**
* 当前位置经度
*/
private Double longitude;
/**
* 当前位置纬度
*/
private Double latitude;
/**
* 订单编号
*/
private String orderCode;
/**
* 工单ID
*/
private String workorderId;
/**
* 附件文件列表
*/
List<ResEbikeFaultReportFileDto> reportAttachments;
}

View File

@ -1,11 +1,15 @@
package com.cdzy.ebikemaintenance.service; package com.cdzy.ebikemaintenance.service;
import com.cdzy.common.model.EbikeUserFaultreportDto;
import com.cdzy.common.model.EbikeUserFaultreportQueryDto; import com.cdzy.common.model.EbikeUserFaultreportQueryDto;
import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.JsonResult;
import com.cdzy.ebikemaintenance.model.dto.response.EbikeFaultreportReviewDto; import com.cdzy.ebikemaintenance.model.dto.response.EbikeFaultreportReviewDto;
import com.cdzy.ebikemaintenance.model.dto.response.ResEbikeUserFaultreportDto;
import com.mybatisflex.core.service.IService; import com.mybatisflex.core.service.IService;
import com.cdzy.ebikemaintenance.model.pojo.EbikeFaultreportReview; import com.cdzy.ebikemaintenance.model.pojo.EbikeFaultreportReview;
import java.util.List;
/** /**
* 用户上报故障审查 服务层 * 用户上报故障审查 服务层
* *
@ -35,4 +39,18 @@ public interface EbikeFaultreportReviewService extends IService<EbikeFaultreport
*/ */
EbikeFaultreportReviewDto getByBikeCode(String bikeCode); EbikeFaultreportReviewDto getByBikeCode(String bikeCode);
/**
* 查询某台车所有用户上报故障信息
*
* @param queryParam 查询参数
* @return 列表, 含附件列表
*/
List<ResEbikeUserFaultreportDto> getUserReportList(EbikeUserFaultreportQueryDto queryParam);
/**
* 转换订单附件格式为运维上报附件格式
*
* @param ebikeUserFaultreportDto
* @return
*/
ResEbikeUserFaultreportDto fromEbikeUserFaultreportDto(EbikeUserFaultreportDto ebikeUserFaultreportDto);
} }

View File

@ -1,6 +1,7 @@
package com.cdzy.ebikemaintenance.service.impl; package com.cdzy.ebikemaintenance.service.impl;
import com.cdzy.common.model.EbikeOrderAttachmentFileDto; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.cdzy.common.model.EbikeUserFaultreportDto; import com.cdzy.common.model.EbikeUserFaultreportDto;
import com.cdzy.common.model.EbikeUserFaultreportQueryDto; import com.cdzy.common.model.EbikeUserFaultreportQueryDto;
import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.JsonResult;
@ -9,6 +10,8 @@ import com.cdzy.ebikemaintenance.mapper.EbikeFaultreportReviewMapper;
import com.cdzy.ebikemaintenance.model.dto.request.ReqEbikeBikeFaultReportDto; import com.cdzy.ebikemaintenance.model.dto.request.ReqEbikeBikeFaultReportDto;
import com.cdzy.ebikemaintenance.model.dto.request.ReqEbikeFaultReportFileDto; import com.cdzy.ebikemaintenance.model.dto.request.ReqEbikeFaultReportFileDto;
import com.cdzy.ebikemaintenance.model.dto.response.EbikeFaultreportReviewDto; import com.cdzy.ebikemaintenance.model.dto.response.EbikeFaultreportReviewDto;
import com.cdzy.ebikemaintenance.model.dto.response.ResEbikeFaultReportFileDto;
import com.cdzy.ebikemaintenance.model.dto.response.ResEbikeUserFaultreportDto;
import com.cdzy.ebikemaintenance.model.pojo.EbikeBikeFaultReportFile; import com.cdzy.ebikemaintenance.model.pojo.EbikeBikeFaultReportFile;
import com.cdzy.ebikemaintenance.model.pojo.EbikeFaultreportReview; import com.cdzy.ebikemaintenance.model.pojo.EbikeFaultreportReview;
import com.cdzy.ebikemaintenance.service.EbikeBikeInfoService; import com.cdzy.ebikemaintenance.service.EbikeBikeInfoService;
@ -60,24 +63,24 @@ public class EbikeFaultreportReviewServiceImpl extends ServiceImpl<EbikeFaultrep
entity.setDeleteTime(LocalDateTime.now()); entity.setDeleteTime(LocalDateTime.now());
} }
// 保存选择故障图片附件信息 // 保存选择故障图片附件信息
List<EbikeBikeFaultReportFile> attachmentFiles = ebikeFaultreportReview.getAttachmentFiles().stream().map(dto -> { List<EbikeBikeFaultReportFile> attachmentFiles = ebikeFaultreportReview.getAttachmentFiles().stream().map(file -> {
EbikeBikeFaultReportFile attachment = new EbikeBikeFaultReportFile(); EbikeBikeFaultReportFile attachmentFile = new EbikeBikeFaultReportFile();
attachment.setFileUniqueKey(dto.getFileKey()); BeanUtils.copyProperties(file, attachmentFile);
attachment.setFileBucket(dto.getFileBucket()); return attachmentFile;
attachment.setFileSize(dto.getFileSize());
attachment.setFileType(dto.getFileType());
attachment.setFileName(dto.getFileName());
attachment.setCreatedAt(dto.getUploadTime());
attachment.setReportId(entity.getReviewId());
return attachment;
}).toList(); }).toList();
if (!attachmentFiles.isEmpty()) { if (!attachmentFiles.isEmpty()) {
for (EbikeBikeFaultReportFile file : attachmentFiles) {
file.setReportId(entity.getReviewId());
}
ebikeBikeFaultReportFileMapper.insertBatch(attachmentFiles); ebikeBikeFaultReportFileMapper.insertBatch(attachmentFiles);
} }
// 保存上报管理信息 // 保存上报管理信息
final EbikeFaultreportReview finalEntity = entity;
List<EbikeUserFaultreportDto> userFaultreports = ebikeFaultreportReview.getFaultReports().stream().map(faultReportDto -> { List<EbikeUserFaultreportDto> userFaultreports = ebikeFaultreportReview.getFaultReports().stream().map(faultReportDto -> {
faultReportDto.setWorkorderId(entity.getReviewId()); EbikeUserFaultreportDto userFaultreportDto = new EbikeUserFaultreportDto();
return faultReportDto; BeanUtils.copyProperties(faultReportDto, userFaultreportDto);
userFaultreportDto.setWorkorderId(finalEntity.getReviewId());
return userFaultreportDto;
}).toList(); }).toList();
if (!userFaultreports.isEmpty()) { if (!userFaultreports.isEmpty()) {
ebikeUserFaultreportService.updateUserFaultreports(userFaultreports); ebikeUserFaultreportService.updateUserFaultreports(userFaultreports);
@ -138,20 +141,62 @@ public class EbikeFaultreportReviewServiceImpl extends ServiceImpl<EbikeFaultrep
// 查询附件信息 // 查询附件信息
List<EbikeBikeFaultReportFile> attachmentFiles = ebikeBikeFaultReportFileMapper.selectListByCondition(EBIKE_BIKE_FAULT_REPORT_FILE.REPORT_ID.eq(entity.getReviewId())); List<EbikeBikeFaultReportFile> attachmentFiles = ebikeBikeFaultReportFileMapper.selectListByCondition(EBIKE_BIKE_FAULT_REPORT_FILE.REPORT_ID.eq(entity.getReviewId()));
dto.setAttachmentFiles(attachmentFiles.stream().map(file -> { dto.setAttachmentFiles(attachmentFiles.stream().map(file -> {
EbikeOrderAttachmentFileDto attachmentFileDto = new EbikeOrderAttachmentFileDto(); ResEbikeFaultReportFileDto attachmentFile = new ResEbikeFaultReportFileDto();
BeanUtils.copyProperties(file, attachmentFileDto); BeanUtils.copyProperties(file, attachmentFile);
attachmentFileDto.setFileUrl(minioUtil.getFileUrl2(file.getFileBucket(), file.getFileUniqueKey())); attachmentFile.setUrl(minioUtil.getFileUrl2(file.getFileBucket(), file.getFileUniqueKey()));
return attachmentFileDto; return attachmentFile;
}).toList()); }).toList());
// 查询上报管理信息 // 查询上报管理信息
EbikeUserFaultreportQueryDto req = new EbikeUserFaultreportQueryDto(); EbikeUserFaultreportQueryDto req = new EbikeUserFaultreportQueryDto();
req.setBikeCode(bikeCode); req.setBikeCode(bikeCode);
JsonResult<?> result = ebikeUserFaultreportService.getUserReportList(req); JsonResult<?> result = ebikeUserFaultreportService.getUserReportList(req);
if (result.getCode() == 200) { if (result.getCode() == 200) {
List<EbikeUserFaultreportDto> userFaultreports = (List<EbikeUserFaultreportDto>) result.getData(); List<EbikeUserFaultreportDto> userFaultreports = fromRestResult(result.getData());
dto.setFaultReports(userFaultreports); List<ResEbikeUserFaultreportDto> faultReports = userFaultreports.stream().map(this::fromEbikeUserFaultreportDto).toList();
dto.setFaultReports(faultReports);
} }
return dto; return dto;
} }
@Override
public List<ResEbikeUserFaultreportDto> getUserReportList(EbikeUserFaultreportQueryDto queryParam) {
JsonResult<?> result = ebikeUserFaultreportService.getUserReportList(queryParam);
if (result.getCode() != 200) {
return null;
}
//附件结构转为运维的附件结构
List<EbikeUserFaultreportDto> ebikeUserFaultreportDtos = fromRestResult(result.getData());
List<ResEbikeUserFaultreportDto> faultReportDtos = ebikeUserFaultreportDtos.stream().map(this::fromEbikeUserFaultreportDto).toList();
return faultReportDtos;
}
@Override
public ResEbikeUserFaultreportDto fromEbikeUserFaultreportDto(EbikeUserFaultreportDto ebikeUserFaultreportDto) {
ResEbikeUserFaultreportDto faultReportDto = new ResEbikeUserFaultreportDto();
BeanUtils.copyProperties(ebikeUserFaultreportDto, faultReportDto);
List<ResEbikeFaultReportFileDto> attachmentFiles = ebikeUserFaultreportDto.getAttachmentFiles().stream().map(fileDto -> {
ResEbikeFaultReportFileDto attachmentFile = new ResEbikeFaultReportFileDto();
attachmentFile.setFileUniqueKey(fileDto.getFileKey());
attachmentFile.setFileBucket(fileDto.getFileBucket());
attachmentFile.setFileSize(fileDto.getFileSize());
attachmentFile.setFileType(fileDto.getFileType());
attachmentFile.setFileName(fileDto.getFileName());
attachmentFile.setUrl(fileDto.getFileUrl());
return attachmentFile;
}).toList();
faultReportDto.setReportAttachments(attachmentFiles);
return faultReportDto;
}
/**
* 将rest接口返回结果转为list
* 因为rest接口返回结果是LinkedHashMap所以需要转换为list
*
* @param result rest接口返回结果[{}]
* @return
*/
private List<EbikeUserFaultreportDto> fromRestResult(Object result){
List<EbikeUserFaultreportDto> ebikeUserFaultreportDtos = JSON.parseArray(JSONObject.toJSONString(result), EbikeUserFaultreportDto.class);
return ebikeUserFaultreportDtos;
}
} }

View File

@ -104,11 +104,7 @@
<artifactId>spring-boot-starter-validation</artifactId> <artifactId>spring-boot-starter-validation</artifactId>
<version>${boot.version}</version> <version>${boot.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-codegen</artifactId>
<version>1.10.8</version>
</dependency>
<dependency> <dependency>
<groupId>com.zaxxer</groupId> <groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId> <artifactId>HikariCP</artifactId>

View File

@ -1,5 +1,6 @@
package com.cdzy.orders.model.entity; package com.cdzy.orders.model.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table; import com.mybatisflex.annotation.Table;
import java.io.Serializable; import java.io.Serializable;
@ -57,6 +58,7 @@ public class EbikeUserFaultreport implements Serializable {
/** /**
* 上报时间 * 上报时间
*/ */
@Column(onInsertValue = "now()")
private LocalDateTime reportAt; private LocalDateTime reportAt;
/** /**
@ -67,6 +69,7 @@ public class EbikeUserFaultreport implements Serializable {
/** /**
* 更新时间 * 更新时间
*/ */
@Column(onUpdateValue = "now()")
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
/** /**

View File

@ -1,7 +1,7 @@
server: server:
port: 10016 port: 10016
servlet: # servlet:
context-path: /order # context-path: /order
spring: spring:
application: application:
name: ebike-orders name: ebike-orders