贴标申请,仓储转运

This commit is contained in:
2026-09-24 14:09:50 +08:00
parent d03862d47e
commit 56f4e6e35c
2 changed files with 18 additions and 6 deletions
@@ -1222,12 +1222,10 @@ public class WarehouseTransferService {
@Transactional(readOnly = true)
public List<WarehouseTransferResponses.Summary> pdaCandidates(long overseasWarehouseId) {
List<WarehouseTransferOrder> candidates = transfers.selectList(new LambdaQueryWrapper<WarehouseTransferOrder>()
.eq(WarehouseTransferOrder::getOperatingWarehouseId, String.valueOf(overseasWarehouseId))
// 只有尚未完成 PDA 收货/测量的状态才进入测量列表。换标、待排车及已出库
// 都是后续履约阶段,不能继续占用 PDA 的“当前测量单”锁。
.in(WarehouseTransferOrder::getStatus, List.of(WAIT_PDA_RECEIVING, APPROVED, ALLOCATED))
.orderByDesc(WarehouseTransferOrder::getUpdatedAt));
// PDA 测量列表只接收明确进入 WAIT_PDA_RECEIVING 的在途转运单。
// APPROVED 是已有库存转运的后续处理入口,ALLOCATED 已进入库存出库流程;
// 两者都不能再次显示为待测量,更不能引导操作员重复进入托盘作业。
List<WarehouseTransferOrder> candidates = transfers.pdaCandidates(String.valueOf(overseasWarehouseId));
Map<String, RelabelApplication> relabelApplicationsByNo = relabelApplications(candidates);
return candidates.stream().map(value -> {
RelabelApplication relabel = StringUtils.hasText(value.getRelabelNo())
@@ -80,6 +80,20 @@ import static org.mockito.Mockito.times;
@ExtendWith(MockitoExtension.class)
class WarehouseTransferServiceTest {
@Test
void pdaCandidatesUseTheMapperRestrictedToWaitingMeasurementOnly() {
WarehouseTransferOrder transfer = transfer(WarehouseTransferService.WAIT_PDA_RECEIVING);
transfer.setOperatingWarehouseId("900");
when(transfers.pdaCandidates("900")).thenReturn(List.of(transfer));
var result = service.pdaCandidates(900L);
assertEquals(1, result.size());
assertEquals(WarehouseTransferService.WAIT_PDA_RECEIVING, result.get(0).status());
verify(transfers).pdaCandidates("900");
verify(transfers, never()).selectList(any());
}
@Test
void customerMainStatusFiltersExpandToInternalWorkflowStates() {
assertEquals(List.of(WarehouseTransferService.APPROVED, WarehouseTransferService.WAIT_PDA_RECEIVING),