diff --git a/backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java b/backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java index 15001f6..2464d1f 100644 --- a/backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java +++ b/backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java @@ -13,4 +13,7 @@ public interface ModuleMapper extends BaseMapper { default boolean existsActiveById(Integer iIncrement) { return findActiveFlagById(iIncrement) != null; } + + @Select("SELECT iParentId FROM tModule WHERE iIncrement = #{id} AND bDeleted = 0") + Integer selectParentIdById(@Param("id") Integer iIncrement); } diff --git a/backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java b/backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java index 3dc888a..527b31b 100644 --- a/backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java +++ b/backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java @@ -60,6 +60,24 @@ class ModuleMapperIT { assertThat(moduleMapper.existsActiveById(99999999)).isFalse(); } + @Test + void selectParentIdById_returnsNullForRootOrMissing_andValueForChild() { + Module root = newModule("sp_test_root", "根", null); + moduleMapper.insert(root); + + Module child = newModule("sp_test_child", "子", root.getIIncrement()); + moduleMapper.insert(child); + + Module deleted = newModule("sp_test_del", "删", root.getIIncrement()); + deleted.setBDeleted(true); + moduleMapper.insert(deleted); + + assertThat(moduleMapper.selectParentIdById(root.getIIncrement())).isNull(); + assertThat(moduleMapper.selectParentIdById(child.getIIncrement())).isEqualTo(root.getIIncrement()); + assertThat(moduleMapper.selectParentIdById(deleted.getIIncrement())).isNull(); + assertThat(moduleMapper.selectParentIdById(99999998)).isNull(); + } + private Module newModule(String procedureName, String nameZh, Integer parentId) { Module m = new Module(); m.setSBrandsId("XLY");