fix(lastleg): scope inventory holds by cycle and align pick lock ordering
This commit is contained in:
+11
-2
@@ -78,6 +78,15 @@ public class LastlegOrderCommandService {
|
||||
|| text(order.getOutboundOrderNo()) != null)) {
|
||||
throw conflict("尾程订单已进入出库流程,不能新增暂扣");
|
||||
}
|
||||
String holdCycle = "ORDER_HOLD:" + orderId + ":" + (version + 1);
|
||||
if (!held) {
|
||||
LastlegOrderHoldHistory original = holdHistory.selectOne(new LambdaQueryWrapper<LastlegOrderHoldHistory>()
|
||||
.eq(LastlegOrderHoldHistory::getCustomerId, order.getCustomerId())
|
||||
.eq(LastlegOrderHoldHistory::getOrderId, orderId).eq(LastlegOrderHoldHistory::getHeld, true)
|
||||
.orderByDesc(LastlegOrderHoldHistory::getOrderVersion).last("LIMIT 1"));
|
||||
if (original == null) throw conflict("暂扣来源记录缺失,不能释放其他业务冻结库存");
|
||||
holdCycle = "ORDER_HOLD:" + orderId + ":" + original.getOrderVersion();
|
||||
}
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
boolean chargeable = held && request.chargeable();
|
||||
String reason = request.reason().trim();
|
||||
@@ -86,10 +95,10 @@ public class LastlegOrderCommandService {
|
||||
}
|
||||
if (held) {
|
||||
inventory.holdInboundOrderInventory(order.getCustomerId(), operatorId, orderId,
|
||||
order.getOrderNo(), reason);
|
||||
order.getOrderNo(), reason, holdCycle);
|
||||
} else {
|
||||
inventory.releaseInboundOrderHold(order.getCustomerId(), operatorId, orderId,
|
||||
order.getOrderNo(), reason);
|
||||
order.getOrderNo(), reason, holdCycle);
|
||||
}
|
||||
int nextVersion = version + 1;
|
||||
LastlegOrderCommandDtos.HoldResponse response = new LastlegOrderCommandDtos.HoldResponse(
|
||||
|
||||
Reference in New Issue
Block a user