fix: map sealed pallet cartons to physical pallet

This commit is contained in:
2026-09-20 16:10:01 +08:00
parent cb008ad64d
commit 2ce2fff8d7
2 changed files with 17 additions and 0 deletions
@@ -32,6 +32,10 @@ public interface LoadingPickItemMapper extends BaseMapper<LoadingPickItemEntity>
AND label.inbound_id = plan_item.inbound_id
AND label.inbound_detail_id = plan_item.inbound_detail_id
AND label.batch_status = 'ACTIVE'
AND (plan_item.unit_type <> 'SEALED_PALLET'
OR EXISTS (SELECT 1 FROM fl_dropship_pallet_carton pallet_carton
WHERE pallet_carton.pallet_id = plan_item.pallet_id
AND pallet_carton.carton_label_id = label.id))
WHERE pick_item.pick_task_id = #{taskId} AND plan_item.deleted = 0
ORDER BY pick_item.id, label.carton_index
""")
@@ -73,6 +73,19 @@ class LoadingPickPdaTaskSqlContractTest {
.contains("label.box_code AS boxCode");
}
@Test
void sealedPalletCartonsAreRestrictedToTheirPhysicalPalletMembership() throws Exception {
String sql = LoadingPickItemMapper.class
.getDeclaredMethod("selectTaskCartonLabels", long.class)
.getAnnotation(Select.class).value()[0];
assertThat(sql)
.contains("plan_item.unit_type <> 'SEALED_PALLET'")
.contains("fl_dropship_pallet_carton pallet_carton")
.contains("pallet_carton.pallet_id = plan_item.pallet_id")
.contains("pallet_carton.carton_label_id = label.id");
}
@Test
void taskDetailResolvesOnlyTheActiveBookingOwnedByItsCurrentPlan() throws Exception {
String sql = LoadingPickTaskMapper.class