From 339b01526f1eac7b2a4018313b49a45c98df009c069df7730d7ac9b2c566a8b1 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Thu, 27 Nov 2025 10:25:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E5=B7=A5=E5=8D=95=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=80=81=E6=8E=A5=E5=8F=96=E5=B7=A5=E5=8D=95=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeBikeOrderController.java | 26 +++++++++++ .../operations/model/vo/FaultOrderVo.java | 31 +++++++++++++ .../service/EbikeBikeOrderService.java | 17 ++++++- .../impl/EbikeBikeOrderServiceImpl.java | 44 ++++++++++++++++++- 4 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 ebike-operations/src/main/java/com/cdzy/operations/model/vo/FaultOrderVo.java diff --git a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeOrderController.java b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeOrderController.java index c8cc2ed..4b39c2a 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeOrderController.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeOrderController.java @@ -1,10 +1,12 @@ package com.cdzy.operations.controller; +import com.cdzy.common.enums.Message; import com.cdzy.common.model.request.PageParam; import com.cdzy.common.model.response.JsonResult; import com.cdzy.operations.enums.BikeOrderHandleState; import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto; import com.cdzy.operations.model.dto.EbikeBikeOrderPageDto; +import com.cdzy.operations.model.vo.FaultOrderVo; import com.cdzy.operations.model.vo.InspectionSwapOrderVo; import com.cdzy.operations.service.EbikeBikeOrderService; import com.mybatisflex.core.paginate.Page; @@ -14,6 +16,7 @@ import jakarta.annotation.Resource; import jakarta.validation.constraints.NotNull; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.util.Objects; @@ -101,6 +104,18 @@ public class EbikeBikeOrderController { return JsonResult.success(); } + /** + * 生成维修工单。 + * + * @param faultOrderVo 故障信息 + * @return 结果 + */ + @GetMapping("faultOrder") + public JsonResult faultOrder(@Validated @RequestBody FaultOrderVo faultOrderVo) { + ebikeBikeOrderService.faultOrder(faultOrderVo); + return JsonResult.success(); + } + /** * 接取工单。 * @@ -112,4 +127,15 @@ public class EbikeBikeOrderController { ebikeBikeOrderService.acceptOrder(orderId); return JsonResult.success(); } + + /** + * 上传远程故障图片 + * @param file 文件 + * @return 操作结果 + */ + @PostMapping("upload") + public JsonResult upload(@RequestParam("file") MultipartFile file) throws Exception { + String result = ebikeBikeOrderService.upload(file); + return JsonResult.success(Message.SUCCESS,result); + } } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/vo/FaultOrderVo.java b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/FaultOrderVo.java new file mode 100644 index 0000000..f9d780c --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/FaultOrderVo.java @@ -0,0 +1,31 @@ +package com.cdzy.operations.model.vo; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author attiya + * @since 2025-11-26 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FaultOrderVo { + + @NotNull(message = "车辆编号不能为空") + private String bikeCode; + + @NotNull(message = "故障部位不能为空") + private List parts; + + @NotNull(message = "故障部位图片不能为空") + private List fileUrls; + + private String remarks; +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeOrderService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeOrderService.java index b76d948..eeb3536 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeOrderService.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeOrderService.java @@ -1,9 +1,11 @@ package com.cdzy.operations.service; import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto; +import com.cdzy.operations.model.entity.EbikeBikeOrder; +import com.cdzy.operations.model.vo.FaultOrderVo; import com.cdzy.operations.model.vo.InspectionSwapOrderVo; import com.mybatisflex.core.service.IService; -import com.cdzy.operations.model.entity.EbikeBikeOrder; +import org.springframework.web.multipart.MultipartFile; /** * 工单信息 服务层。 @@ -44,4 +46,17 @@ public interface EbikeBikeOrderService extends IService { * @param orderId 工单ID */ void acceptOrder(Long orderId); + + /** + * 上传故障文件 + * @param file 上传文件 + * @return 文件路径 + */ + String upload(MultipartFile file) throws Exception; + + /** + * 生成维修工单 + * @param faultOrderVo 故障信息 + */ + void faultOrder(FaultOrderVo faultOrderVo); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java index 4859539..c69db03 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java @@ -1,6 +1,7 @@ package com.cdzy.operations.service.impl; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.io.file.FileNameUtil; import com.cdzy.common.ex.EbikeException; import com.cdzy.common.model.dto.ResGPSDto; import com.cdzy.operations.enums.*; @@ -10,8 +11,10 @@ import com.cdzy.operations.model.entity.EbikeBikeInfo; import com.cdzy.operations.model.entity.EbikeBikeOrder; import com.cdzy.operations.model.entity.EbikeOrderFile; import com.cdzy.operations.model.entity.EbikeOrderPart; +import com.cdzy.operations.model.vo.FaultOrderVo; import com.cdzy.operations.model.vo.InspectionSwapOrderVo; import com.cdzy.operations.service.EbikeBikeOrderService; +import com.cdzy.operations.utils.MinioUtil; import com.cdzy.operations.utils.RedisUtil; import com.mybatisflex.core.keygen.impl.SnowFlakeIDKeyGenerator; import com.mybatisflex.core.query.QueryWrapper; @@ -21,10 +24,12 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.UUID; import static com.cdzy.operations.model.entity.table.EbikeBikeInfoTableDef.EBIKE_BIKE_INFO; import static com.cdzy.operations.model.entity.table.EbikeBikeOrderTableDef.EBIKE_BIKE_ORDER; @@ -42,6 +47,8 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl parts = faultOrderVo.getParts(); + List fileUrls = faultOrderVo.getFileUrls(); + if (parts != null && !parts.isEmpty()) { + List list = parts.stream().map(e -> EbikeOrderPart.builder().orderId(orderId).orderPart(e).build()).toList(); + orderPartMapper.insertBatch(list); + } + if (fileUrls != null && !fileUrls.isEmpty()) { + List list = fileUrls.stream().map(e -> EbikeOrderFile.builder().orderId(orderId).fileUrl(e).build()).toList(); + orderFileMapper.insertBatch(list); + } + } + EbikeBikeInfo checkBikeCode(String bikeCode) { QueryWrapper queryWrapper = QueryWrapper.create() .where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))