From 335ad8269f062d2650a0c8fa3415105607a0be31 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Tue, 25 Aug 2026 18:07:48 +0800 Subject: [PATCH] fix: execute overseas pallet transitions --- .../WarehousePalletTransitionMapper.java | 4 +-- ...usePalletTransitionMapperContractTest.java | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 warehouse-overseas-service/src/test/java/com/baiyue/warehouse/mapper/WarehousePalletTransitionMapperContractTest.java diff --git a/warehouse-overseas-service/src/main/java/com/baiyue/warehouse/mapper/WarehousePalletTransitionMapper.java b/warehouse-overseas-service/src/main/java/com/baiyue/warehouse/mapper/WarehousePalletTransitionMapper.java index 751a848c0..9f4b423ba 100644 --- a/warehouse-overseas-service/src/main/java/com/baiyue/warehouse/mapper/WarehousePalletTransitionMapper.java +++ b/warehouse-overseas-service/src/main/java/com/baiyue/warehouse/mapper/WarehousePalletTransitionMapper.java @@ -20,12 +20,12 @@ public interface WarehousePalletTransitionMapper extends BaseMapper'INACTIVE' AND deleted=0") long countActiveLocation(@Param("warehouseId") long warehouseId, @Param("locationId") long locationId); @Update("UPDATE wh_pallet SET status=#{targetStatus},location_id=#{targetLocationId},version=version+1," + "updated_at=CURRENT_TIMESTAMP(3) WHERE id=#{palletId} AND customer_id=0 " + - "AND warehouse_id=#{warehouseId} AND version=#{expectedVersion} AND status<>'SCRAPPED' AND deleted=0") + "AND warehouse_id=#{warehouseId} AND version=#{expectedVersion} AND status<>'SCRAPPED' AND deleted=0") int transition(@Param("warehouseId") long warehouseId, @Param("palletId") long palletId, @Param("targetStatus") String targetStatus, @Param("targetLocationId") long targetLocationId, @Param("expectedVersion") int expectedVersion); diff --git a/warehouse-overseas-service/src/test/java/com/baiyue/warehouse/mapper/WarehousePalletTransitionMapperContractTest.java b/warehouse-overseas-service/src/test/java/com/baiyue/warehouse/mapper/WarehousePalletTransitionMapperContractTest.java new file mode 100644 index 000000000..06f4c4d57 --- /dev/null +++ b/warehouse-overseas-service/src/test/java/com/baiyue/warehouse/mapper/WarehousePalletTransitionMapperContractTest.java @@ -0,0 +1,32 @@ +package com.baiyue.warehouse.mapper; + +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Method; +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class WarehousePalletTransitionMapperContractTest { + + @Test + void annotationSqlUsesNativeComparisonOperatorsInsteadOfXmlEntities() throws Exception { + Method locationQuery = WarehousePalletTransitionMapper.class.getMethod( + "countActiveLocation", long.class, long.class); + String selectSql = String.join(" ", locationQuery.getAnnotation(Select.class).value()); + + Method transition = Arrays.stream(WarehousePalletTransitionMapper.class.getMethods()) + .filter(method -> method.getName().equals("transition")) + .findFirst() + .orElseThrow(); + String updateSql = String.join(" ", transition.getAnnotation(Update.class).value()); + + assertTrue(selectSql.contains("status<>'INACTIVE'")); + assertTrue(updateSql.contains("status<>'SCRAPPED'")); + assertFalse(selectSql.contains("<") || selectSql.contains(">")); + assertFalse(updateSql.contains("<") || updateSql.contains(">")); + } +}