fix: 完成订单接口(飞行端完成限制);优化订单详情返回主订单状态;修复飞行任务更新状态接口
This commit is contained in:
parent
196cddb071
commit
0f01c52dd9
@ -354,6 +354,7 @@ public class OrderBiz {
|
|||||||
orderAllDetailVO.setId(orderMain.getId());
|
orderAllDetailVO.setId(orderMain.getId());
|
||||||
orderAllDetailVO.setOrderNo(orderMain.getOrderNo());
|
orderAllDetailVO.setOrderNo(orderMain.getOrderNo());
|
||||||
orderAllDetailVO.setOrderType(OrderTypeEnum.getInstance(orderMain.getOrderType()).getDescription());
|
orderAllDetailVO.setOrderType(OrderTypeEnum.getInstance(orderMain.getOrderType()).getDescription());
|
||||||
|
orderAllDetailVO.setMainOrderStatus(MainOrderStatusEnum.getInstance(orderMain.getMainOrderStatus()).getDescription());
|
||||||
orderAllDetailVO.setOrderInitiator(emEmployees.getName());
|
orderAllDetailVO.setOrderInitiator(emEmployees.getName());
|
||||||
orderAllDetailVO.setInitiatorPhone(emEmployees.getPhone());
|
orderAllDetailVO.setInitiatorPhone(emEmployees.getPhone());
|
||||||
orderAllDetailVO.setCustomerName(customerName);
|
orderAllDetailVO.setCustomerName(customerName);
|
||||||
@ -557,6 +558,7 @@ public class OrderBiz {
|
|||||||
* @param orderTaskId 订单任务ID
|
* @param orderTaskId 订单任务ID
|
||||||
* @param taskStatus 飞行状态
|
* @param taskStatus 飞行状态
|
||||||
*/
|
*/
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void editOrderTaskStatus(Long orderTaskId, Integer taskStatus) {
|
public void editOrderTaskStatus(Long orderTaskId, Integer taskStatus) {
|
||||||
// 获取订单详情
|
// 获取订单详情
|
||||||
OrderDetail orderDetail = orderDetailService.obtainOrderDetailById(orderTaskId);
|
OrderDetail orderDetail = orderDetailService.obtainOrderDetailById(orderTaskId);
|
||||||
@ -723,4 +725,66 @@ public class OrderBiz {
|
|||||||
public Boolean updateSettlementOrderStatus(Long settlementOrderId, Integer settlementOrderStatus) {
|
public Boolean updateSettlementOrderStatus(Long settlementOrderId, Integer settlementOrderStatus) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 完成订单
|
||||||
|
* @param orderId 订单ID
|
||||||
|
*/
|
||||||
|
public void completeOrder(Long orderId) {
|
||||||
|
// 查询订单信息
|
||||||
|
OrderMain orderMain = orderMainService.obtainOrderMainById(orderId);
|
||||||
|
// 获取当前用户(根据不同的登录类型,处理不同的逻辑)
|
||||||
|
UserTypeEnum currentUserType = SecurityUtils.getCurrentUserType();
|
||||||
|
switch (currentUserType) {
|
||||||
|
case CUSTOMER:
|
||||||
|
customerCompleteOrder(orderMain);
|
||||||
|
break;
|
||||||
|
case EMPLOYEES:
|
||||||
|
employeesCompleteOrder(orderMain);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// 是否存在飞行任务(至少存在一个飞行失败或者完成的,才能点击完成,且不能存在未开始,进行中的)
|
||||||
|
List<OrderDetail> orderDetailList = orderDetailService.queryOrderDetailByOrderId(orderId);
|
||||||
|
if (CollectionUtil.isEmpty(orderDetailList)) {
|
||||||
|
throw new BadRequestException("该订单不存在飞行任务,无法完成");
|
||||||
|
}
|
||||||
|
// 订单不能存在未开始或者进行中的飞行任务
|
||||||
|
boolean hasFlightTask = orderDetailList.stream().anyMatch(orderDetail -> {
|
||||||
|
Integer flightTaskStatus = orderDetail.getOrderItemStatus();
|
||||||
|
return OrderTaskStatusEnum.NOT_STARTED.getCode().equals(flightTaskStatus)
|
||||||
|
|| OrderTaskStatusEnum.PROCESSING.getCode().equals(flightTaskStatus);
|
||||||
|
});
|
||||||
|
if (hasFlightTask) {
|
||||||
|
throw new BadRequestException("订单存在未开始或者进行中的飞行任务,无法完成");
|
||||||
|
}
|
||||||
|
OrderMain updateOrderMain = new OrderMain();
|
||||||
|
updateOrderMain.setId(orderId);
|
||||||
|
updateOrderMain.setOrderFinishTime(new Date());
|
||||||
|
updateOrderMain.setMainOrderStatus(MainOrderStatusEnum.COMPLETED.getCode());
|
||||||
|
orderMainService.finishMainOrder(updateOrderMain);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户端完成订单
|
||||||
|
*
|
||||||
|
* @param orderMain {@link OrderMain}
|
||||||
|
*/
|
||||||
|
private void customerCompleteOrder(OrderMain orderMain) {
|
||||||
|
// TODO 客户端不限制
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 飞行端完成订单
|
||||||
|
*
|
||||||
|
* @param orderMain {@link OrderMain}
|
||||||
|
*/
|
||||||
|
private void employeesCompleteOrder(OrderMain orderMain) {
|
||||||
|
// 飞行员端只能由发起人才能完成
|
||||||
|
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||||
|
if (!orderMain.getOrderInitiatorId().equals(currentUserId)) {
|
||||||
|
throw new BadRequestException("订单不属于当前用户,无法完成");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,5 +101,15 @@ public class OrderMainController {
|
|||||||
public ResponseEntity<OrderAllDetailVO> queryOrderDetail(@PathVariable("id") Long id) {
|
public ResponseEntity<OrderAllDetailVO> queryOrderDetail(@PathVariable("id") Long id) {
|
||||||
return ResponseEntity.ok(orderBiz.queryOrderDetail(id));
|
return ResponseEntity.ok(orderBiz.queryOrderDetail(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 完成订单
|
||||||
|
*/
|
||||||
|
@ApiOperation("完成订单-飞行端&客户端")
|
||||||
|
@PutMapping("/completeOrder/{orderId}")
|
||||||
|
public ResponseEntity<Object> completeOrder(@PathVariable("orderId") Long orderId) {
|
||||||
|
orderBiz.completeOrder(orderId);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,6 +36,12 @@ public class OrderAllDetailVO {
|
|||||||
@ApiModelProperty(value = "订单类型")
|
@ApiModelProperty(value = "订单类型")
|
||||||
private String orderType;
|
private String orderType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单状态
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "订单状态")
|
||||||
|
private String mainOrderStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单发起人
|
* 订单发起人
|
||||||
*/
|
*/
|
||||||
|
@ -88,4 +88,11 @@ public interface IOrderMainService extends IService<OrderMain> {
|
|||||||
* @param settlementStatus 结算状态
|
* @param settlementStatus 结算状态
|
||||||
*/
|
*/
|
||||||
void updateSettlementStatus(List<Long> orderIds, Integer settlementStatus);
|
void updateSettlementStatus(List<Long> orderIds, Integer settlementStatus);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 完成订单
|
||||||
|
*
|
||||||
|
* @param updateOrderMain {@link OrderMain}
|
||||||
|
*/
|
||||||
|
void finishMainOrder(OrderMain updateOrderMain);
|
||||||
}
|
}
|
||||||
|
@ -67,5 +67,6 @@ public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailMapper, Order
|
|||||||
LambdaUpdateWrapper<OrderDetail> updateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<OrderDetail> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.eq(OrderDetail::getId, orderTaskId)
|
updateWrapper.eq(OrderDetail::getId, orderTaskId)
|
||||||
.set(OrderDetail::getOrderItemStatus, taskStatus);
|
.set(OrderDetail::getOrderItemStatus, taskStatus);
|
||||||
|
this.update(updateWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,4 +114,14 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
|||||||
.in(OrderMain::getId, orderIds)
|
.in(OrderMain::getId, orderIds)
|
||||||
.set(OrderMain::getSettlementStatus, settlementStatus));
|
.set(OrderMain::getSettlementStatus, settlementStatus));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void finishMainOrder(OrderMain updateOrderMain) {
|
||||||
|
// 根据 ID 进行更新
|
||||||
|
this.update(updateOrderMain, Wrappers.<OrderMain>lambdaUpdate()
|
||||||
|
.eq(OrderMain::getId, updateOrderMain.getId())
|
||||||
|
.set(OrderMain::getOrderFinishTime, updateOrderMain.getOrderFinishTime())
|
||||||
|
.set(OrderMain::getMainOrderStatus, updateOrderMain.getMainOrderStatus())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user