fix(firstleg): restrict broker submission to tax refund cargo
This commit is contained in:
+8
@@ -217,6 +217,14 @@ public interface ContainerCustomsMapper {
|
||||
""")
|
||||
int missingRefundCount(@Param("planId") long planId,@Param("containerId") long containerId);
|
||||
|
||||
@Select("""
|
||||
SELECT COUNT(DISTINCT i.id)
|
||||
FROM fl_loading_plan_item item
|
||||
JOIN fl_inbound_order i ON i.id=item.inbound_id AND i.tenant_id=item.account_id AND i.deleted=0
|
||||
WHERE item.loading_plan_id=#{planId} AND item.deleted=0 AND i.tax_mode='TAX_REFUND'
|
||||
""")
|
||||
int taxRefundCount(@Param("planId") long planId);
|
||||
|
||||
@Update("UPDATE fl_customs_customer_document SET frozen_version=version,frozen_at=CURRENT_TIMESTAMP(3) " +
|
||||
"WHERE customs_container_id=#{containerId} AND status='ACTIVE' AND frozen_at IS NULL")
|
||||
int freezeDocuments(@Param("containerId") long containerId);
|
||||
|
||||
+1
@@ -183,6 +183,7 @@ public class ContainerCustomsService {
|
||||
ContainerRow container = mapper.lockContainer(planId);
|
||||
if (container == null || !DECLARING.equals(container.status())) throw conflict("当前柜不在报关中");
|
||||
if (!Objects.equals(container.version(), request.expectedVersion())) throw concurrent();
|
||||
if (mapper.taxRefundCount(container.loadingPlanId()) == 0) throw conflict("全买单柜无需发送客户回执给报关行");
|
||||
if (mapper.unconfirmedReceiptCount(container.id()) != 0) throw conflict("仍有报关行回执未完成客户确认");
|
||||
if (mapper.brokerSubmittedAt(container.id()) != null) throw conflict("当前柜已发送给报关行执行");
|
||||
if (mapper.submitToBroker(container.id(), container.version(), operatorId, operatorName) != 1) throw concurrent();
|
||||
|
||||
Reference in New Issue
Block a user