fix: align dropship acceptance with precreated pallets

This commit is contained in:
2026-09-11 12:26:52 +08:00
parent e61050c490
commit b57ca7def7
5 changed files with 57 additions and 60 deletions
@@ -27,6 +27,7 @@ public class DropshipPalletizationService {
if (!"ONE_CLICK_DROPSHIP".equals(inbound.getFulfillmentType())) return;
if (inbound.getTotalPackageCount()==null || inbound.getTotalPackageCount()<1) throw invalid("一件代发测量完成箱数无效,不能下发清点组托任务");
if (inbound.getPalletCount()==null || inbound.getPalletCount()<1) throw invalid("一件代发预计托数无效,不能生成托盘码");
if (inbound.getPalletCount()>inbound.getTotalPackageCount()) throw invalid("一件代发预计托数不能超过总箱数");
long taskId=IdWorker.getId();
if(mapper.insertTask(taskId,inbound.getTenantId(),inbound.getId(),inbound.getWarehouseId(),inbound.getTotalPackageCount())!=1) return;
for(int sequence=1;sequence<=inbound.getPalletCount();sequence++){
@@ -135,6 +135,11 @@ public class InboundMeasurementService {
&& (request.expectedPalletCount() == null || request.expectedPalletCount() < 1)) {
throw new BizException(ResultCode.VALIDATION_FAILED, "一件代发必须录入预计托数");
}
if ("ONE_CLICK_DROPSHIP".equals(inbound.getFulfillmentType())
&& inbound.getTotalPackageCount() != null
&& request.expectedPalletCount() > inbound.getTotalPackageCount()) {
throw new BizException(ResultCode.VALIDATION_FAILED, "一件代发预计托数不能超过总箱数");
}
validateInboundDetails(tenantId, inbound, request.items());
request.items().stream().map(InboundMeasurementRequests.ItemRequest::chargeRuleId)
.filter(java.util.Objects::nonNull).distinct().forEach(ruleId -> {
@@ -37,7 +37,7 @@ class PlatformInboundMeasurementControllerContractTest {
void draftRequestOnlyAcceptsEditableGoodsNameAndMeasurementItems() {
assertThat(Arrays.stream(InboundMeasurementRequests.SaveDraftRequest.class.getRecordComponents())
.map(RecordComponent::getName)).containsExactly(
"measurementId", "version", "actualGoodsName", "items");
"measurementId", "version", "actualGoodsName", "expectedPalletCount", "items");
}
@Test
@@ -13,7 +13,7 @@ class PlatformLoadingPdaControllerContractTest {
@Test
void exposesAssignmentWorkAndReviewWithDedicatedAuthorities() throws Exception {
authority("task", "platform:firstleg:pda:view", AuthenticatedUser.class, String.class, Long.class, long.class);
authority("pendingTasks", "platform:firstleg:pda:view", AuthenticatedUser.class, String.class);
authority("pendingTasks", "platform:firstleg:pda:view", AuthenticatedUser.class, long.class, String.class);
authority("inventorySnapshot", "platform:firstleg:pda:view", AuthenticatedUser.class, long.class, long.class);
authority("claim", "platform:firstleg:pda:work", AuthenticatedUser.class, long.class, ClaimRequest.class);
authority("assign", "platform:firstleg:pda:assign", AuthenticatedUser.class, long.class, AssignRequest.class);