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; + } }