From 4ec7e8febff80089114e4a9d420a7b925c15bb49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Wed, 23 Apr 2025 18:05:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=BD=A6=E8=BE=86=E8=B0=83?= =?UTF-8?q?=E5=BA=A6=E5=B7=A5=E5=8D=95=E5=92=8C=E6=A0=B9=E6=8D=AE=E5=B7=A5?= =?UTF-8?q?=E5=8D=95ID=E8=8E=B7=E5=8F=96=E5=AF=B9=E5=BA=94=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeBikeInfoController.java | 30 +++++++ .../service/EbikeBikeInfoService.java | 15 ++++ .../impl/EbikeBikeInfoServiceImpl.java | 87 +++++++++++++++++++ 3 files changed, 132 insertions(+) diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/controller/EbikeBikeInfoController.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/controller/EbikeBikeInfoController.java index 81f677e0..94522d07 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/controller/EbikeBikeInfoController.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/controller/EbikeBikeInfoController.java @@ -740,4 +740,34 @@ public class EbikeBikeInfoController { return JsonResult.failed("删除失败"); } } + /** + * 批量投放,创建车辆调度工单 + * + * @param reqWorkOrderDispatchDto 车辆编号 + * @return + */ + @PostMapping("createWorkOrderDispatch") + public JsonResult createWorkOrderDispatch(@RequestBody ReqWorkOrderDispatchDto reqWorkOrderDispatchDto) { + + String orderId = ebikeBikeInfoService.createWorkOrderDispatch(reqWorkOrderDispatchDto); + if (!StringUtils.isEmpty(orderId)) { + return JsonResult.success("", orderId); + } + return JsonResult.failed("创建调度工单失败"); + } + /** + * 根据工单id 获取调度车辆数据接口 + * + * @param orderId 工单Id + * @return + */ + @GetMapping("getDispatchVehicleByOrderId") + public JsonResult getDispatchVehicleByOrderId(@RequestParam(name = "orderId") String orderId) { + ResDispatchVehicleDto resDispatchVehicleDto = ebikeBikeInfoService.getDispatchVehicleByOrderId(orderId); + if (!StringUtils.isEmpty(resDispatchVehicleDto)) { + return JsonResult.success("", resDispatchVehicleDto); + } + return JsonResult.failed("获取调度车辆数据失败!"); + + } } diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/EbikeBikeInfoService.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/EbikeBikeInfoService.java index f5644677..e39cca45 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/EbikeBikeInfoService.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/EbikeBikeInfoService.java @@ -234,4 +234,19 @@ public interface EbikeBikeInfoService extends IService { * @return */ ResEbikeBikeWorkOrderDto getWorkOrderInfo(String orderId); + + /** + * 批量投放 + * + * @param reqWorkOrderDispatchDto + * @return + */ + String createWorkOrderDispatch(ReqWorkOrderDispatchDto reqWorkOrderDispatchDto); + /** + * 根据工单id 获取调度车辆数据接口 + * + * @param orderId + * @return + */ + ResDispatchVehicleDto getDispatchVehicleByOrderId(String orderId); } diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java index aa713024..5dce389c 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java @@ -15,6 +15,7 @@ import com.cdzy.ebikemaintenance.model.dto.response.*; import com.cdzy.ebikemaintenance.model.pojo.*; import com.cdzy.ebikemaintenance.service.EbikeBikeInfoService; import com.cdzy.ebikemaintenance.service.EbikeBikeOrderService; +import com.cdzy.ebikemaintenance.service.EbikeScheduleWorkOrderExtensionService; import com.cdzy.ebikemaintenance.utils.GeoCodingUtil; import com.cdzy.ebikemaintenance.utils.MinioUtil; import com.cdzy.ebikemaintenance.utils.RedisUtil; @@ -32,6 +33,7 @@ import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @@ -115,6 +117,10 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl result = staffFeignClient.getInfoByToken(tokenValue); + + if (result.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取用户信息失败"); + } + + StaffFeign staffFeign = result.getData(); + String userId = staffFeign.getStaffId().toString(); + // 生成工单编号 + SnowFlakeIDKeyGenerator snowFlakeIDKeyGenerator = new SnowFlakeIDKeyGenerator(); + long orderCode = snowFlakeIDKeyGenerator.nextId(); + // 创建工单 + EbikeBikeOrder ebikeBikeOrder = new EbikeBikeOrder(); + ebikeBikeOrder.setOrderCode(orderCode); + ebikeBikeOrder.setOrderType("3"); // 设定工单类型(可能是常量,视需求而定) + ebikeBikeOrder.setReceiverId(userId); + ebikeBikeOrderMapper.insert(ebikeBikeOrder); + // 创建工单扩展关联表 + EbikeScheduleWorkOrderExtension ebikeScheduleWorkOrderExtension = new EbikeScheduleWorkOrderExtension(); + ebikeScheduleWorkOrderExtension.setId(ebikeBikeOrder.getOrderId()); + ebikeScheduleWorkOrderExtension.setDispatchType(eqWorkOrderDispatchDto.getDispatchType()); + ebikeScheduleWorkOrderExtension.setSiteId(eqWorkOrderDispatchDto.getSiteId());//站点id + ebikeScheduleWorkOrderExtensionMapper.insert(ebikeScheduleWorkOrderExtension); + // 创建并保存调度记录 + List records = new ArrayList<>(); + for (String bikeCode : eqWorkOrderDispatchDto.getBikeCodes()) { + EbikeDispatchRecords dispatchRecord = new EbikeDispatchRecords(); + dispatchRecord.setOrderId(ebikeBikeOrder.getOrderId()); + dispatchRecord.setBikeCode(bikeCode); + dispatchRecord.setStartStation(eqWorkOrderDispatchDto.getSiteId()); + records.add(dispatchRecord); + } + // 批量插入调度记录(如果支持批量插入的话) + if (!records.isEmpty()) { + ebikeDispatchRecordsMapper.insertBatch(records); // 假设有批量插入的方法 + } + + // 返回工单 ID + return ebikeBikeOrder.getOrderId(); + + } catch (Exception e) { + // 异常处理,记录日志并抛出自定义异常或包装成 RuntimeException + // 可以使用日志工具,例如 log4j 或 slf4j,记录错误详细信息 + log.error("创建工单调度失败", e); + + // 可根据需求抛出更具体的异常 + throw new RuntimeException("创建工单调度时发生异常", e); + } + } + + /** + * 根据订单ID 获取车辆调度信息 + * @param orderId + * @return + */ + public ResDispatchVehicleDto getDispatchVehicleByOrderId(String orderId){ + ResDispatchVehicleDto resDispatchVehicleDto=new ResDispatchVehicleDto(); + EbikeBikeOrder ebikeBikeOrder = ebikeBikeOrderMapper.selectOneById(orderId); + EbikeScheduleWorkOrderExtension ebikeScheduleWorkOrderExtension = ebikeScheduleWorkOrderExtensionMapper.selectOneById(orderId); + + QueryWrapper query = QueryWrapper.create(); + query.eq("order_id", orderId); + List ebikeDispatchRecords = ebikeDispatchRecordsMapper.selectListByQuery(query); + resDispatchVehicleDto.setOrderId(orderId); + resDispatchVehicleDto.setDispatchRecords(ebikeDispatchRecords); + resDispatchVehicleDto.setBikeOrder(ebikeBikeOrder); + resDispatchVehicleDto.setScheduleExtension(ebikeScheduleWorkOrderExtension); + + + return resDispatchVehicleDto; + } }