创建车辆调度工单和根据工单ID获取对应信息

This commit is contained in:
小朱 2025-04-23 18:05:06 +08:00
parent 24fdfa7cb8
commit 4ec7e8febf
3 changed files with 132 additions and 0 deletions

View File

@ -740,4 +740,34 @@ public class EbikeBikeInfoController {
return JsonResult.failed("删除失败"); 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("获取调度车辆数据失败!");
}
} }

View File

@ -234,4 +234,19 @@ public interface EbikeBikeInfoService extends IService<EbikeBikeInfo> {
* @return * @return
*/ */
ResEbikeBikeWorkOrderDto getWorkOrderInfo(String orderId); ResEbikeBikeWorkOrderDto getWorkOrderInfo(String orderId);
/**
* 批量投放
*
* @param reqWorkOrderDispatchDto
* @return
*/
String createWorkOrderDispatch(ReqWorkOrderDispatchDto reqWorkOrderDispatchDto);
/**
* 根据工单id 获取调度车辆数据接口
*
* @param orderId
* @return
*/
ResDispatchVehicleDto getDispatchVehicleByOrderId(String orderId);
} }

View File

@ -15,6 +15,7 @@ import com.cdzy.ebikemaintenance.model.dto.response.*;
import com.cdzy.ebikemaintenance.model.pojo.*; import com.cdzy.ebikemaintenance.model.pojo.*;
import com.cdzy.ebikemaintenance.service.EbikeBikeInfoService; import com.cdzy.ebikemaintenance.service.EbikeBikeInfoService;
import com.cdzy.ebikemaintenance.service.EbikeBikeOrderService; import com.cdzy.ebikemaintenance.service.EbikeBikeOrderService;
import com.cdzy.ebikemaintenance.service.EbikeScheduleWorkOrderExtensionService;
import com.cdzy.ebikemaintenance.utils.GeoCodingUtil; import com.cdzy.ebikemaintenance.utils.GeoCodingUtil;
import com.cdzy.ebikemaintenance.utils.MinioUtil; import com.cdzy.ebikemaintenance.utils.MinioUtil;
import com.cdzy.ebikemaintenance.utils.RedisUtil; import com.cdzy.ebikemaintenance.utils.RedisUtil;
@ -32,6 +33,7 @@ import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -115,6 +117,10 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
private GeoCodingUtil geoCodingUtil; private GeoCodingUtil geoCodingUtil;
@Resource @Resource
private EbikeVehicleListingRecordsMapper ebikeVehicleListingRecordsMapper; private EbikeVehicleListingRecordsMapper ebikeVehicleListingRecordsMapper;
@Resource
private EbikeDispatchRecordsMapper ebikeDispatchRecordsMapper;
@Resource
private EbikeScheduleWorkOrderExtensionMapper ebikeScheduleWorkOrderExtensionMapper;
@Override @Override
public EbikeBikeInfo getByBikeCode(String bikeCode) { public EbikeBikeInfo getByBikeCode(String bikeCode) {
@ -1128,4 +1134,85 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
ebikeVehicleListingRecordsMapper.insertBatch(recordsList); ebikeVehicleListingRecordsMapper.insertBatch(recordsList);
} }
} }
/**
* 创建调度工单信息
* @param eqWorkOrderDispatchDto
* @return
*/
public String createWorkOrderDispatch(ReqWorkOrderDispatchDto eqWorkOrderDispatchDto) {
try {
// 获取 token 和用户信息
String tokenValue = StpUtil.getTokenValue();
JsonResult<StaffFeign> 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<EbikeDispatchRecords> 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> ebikeDispatchRecords = ebikeDispatchRecordsMapper.selectListByQuery(query);
resDispatchVehicleDto.setOrderId(orderId);
resDispatchVehicleDto.setDispatchRecords(ebikeDispatchRecords);
resDispatchVehicleDto.setBikeOrder(ebikeBikeOrder);
resDispatchVehicleDto.setScheduleExtension(ebikeScheduleWorkOrderExtension);
return resDispatchVehicleDto;
}
} }