fix(phase3): close loading and dispatch flows
This commit is contained in:
@@ -43,6 +43,13 @@ public interface OrderFulfillmentSplitMapper extends BaseMapper<OrderFulfillment
|
||||
@Select("SELECT COALESCE(MAX(split_sequence),0) FROM ord_order WHERE tenant_id=#{tenantId} AND (id=#{parentOrderId} OR parent_order_id=#{parentOrderId}) AND deleted=0")
|
||||
Integer maxSplitSequence(@Param("tenantId") long tenantId, @Param("parentOrderId") long parentOrderId);
|
||||
|
||||
@Update("UPDATE ord_order SET version=version+1, updated_by=#{operatorId}, updated_at=CURRENT_TIMESTAMP "
|
||||
+ "WHERE tenant_id=#{tenantId} AND id=#{parentOrderId} AND version=#{expectedVersion} AND deleted=0")
|
||||
int incrementParentVersion(@Param("tenantId") long tenantId,
|
||||
@Param("parentOrderId") long parentOrderId,
|
||||
@Param("expectedVersion") int expectedVersion,
|
||||
@Param("operatorId") long operatorId);
|
||||
|
||||
@Select("SELECT s.container_booking_id AS containerBookingId,s.tenant_id AS tenantId,s.parent_order_id AS parentOrderId,p.order_no AS parentOrderNo,s.child_order_id AS childOrderId,c.order_no AS childOrderNo,s.source_order_id AS sourceOrderId,so.order_no AS sourceOrderNo,s.split_role AS splitRole,CASE WHEN s.split_role='LOADED' THEN s.loaded_package_count ELSE s.remaining_package_count END AS packageCount,s.loading_plan_id AS loadingPlanId FROM ord_order_fulfillment_split s JOIN ord_order p ON p.id=s.parent_order_id AND p.tenant_id=s.tenant_id JOIN ord_order c ON c.id=s.child_order_id AND c.tenant_id=s.tenant_id LEFT JOIN ord_order so ON so.id=s.source_order_id AND so.tenant_id=s.tenant_id WHERE s.container_booking_id=#{containerBookingId} ORDER BY s.tenant_id,s.id")
|
||||
List<OrderSplitDtos.ContainerSlice> findByContainer(@Param("containerBookingId") long containerBookingId);
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.baiyue.order.entity.OrderEntity;
|
||||
import com.baiyue.order.mapper.OrderFulfillmentSplitMapper;
|
||||
import com.baiyue.order.mapper.OrderMapper;
|
||||
import com.baiyue.order.entity.OrderFulfillmentSplitEntity;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -59,13 +58,9 @@ public class OrderFulfillmentSplitService {
|
||||
OrderSplitDtos.Child remainder = req.remainingPackageCount() > 0
|
||||
? createChild(req, parent, next, "REMAINDER", req.remainingPackageCount(), hash, operatorId, rows) : null;
|
||||
for (OrderFulfillmentSplitEntity row : rows) splits.insert(row);
|
||||
parent.setVersion(parentVersion + 1);
|
||||
LambdaUpdateWrapper<OrderEntity> guard = new LambdaUpdateWrapper<OrderEntity>()
|
||||
.eq(OrderEntity::getId, parent.getId())
|
||||
.eq(OrderEntity::getTenantId, parent.getTenantId())
|
||||
.eq(OrderEntity::getVersion, parentVersion);
|
||||
int updated = orders.update(parent, guard);
|
||||
int updated = splits.incrementParentVersion(parent.getTenantId(), parent.getId(), parentVersion, operatorId);
|
||||
if (updated != 1) throw new BizException(ResultCode.CONFLICT, "父订单版本已变化,请刷新后重试");
|
||||
parent.setVersion(parentVersion + 1);
|
||||
return new OrderSplitDtos.Response(parent.getId(), parent.getOrderNo(), parent.getVersion(), loaded, remainder,
|
||||
req.sourcePackageCount(), req.loadedPackageCount(), req.remainingPackageCount(), req.loadingPlanId(), req.containerBookingId(), req.idempotencyKey(), LocalDateTime.now());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user