From 2b64fd747005b44b685e616da71b63c92c536fe3 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期四, 27 八月 2026 22:26:53 +0800
Subject: [PATCH] fix: persist battery groups without templates

---
 ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImplTest.java |   56 ++++++++++++++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImpl.java    |   10 ++++
 2 files changed, 65 insertions(+), 1 deletions(-)

diff --git a/ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImplTest.java b/ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImplTest.java
new file mode 100644
index 0000000..6477e04
--- /dev/null
+++ b/ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImplTest.java
@@ -0,0 +1,56 @@
+package com.ruoyi.system.service.impl;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyList;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.List;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import com.ruoyi.system.domain.TBatteryGroup;
+import com.ruoyi.system.domain.TBatteryGroupBattery;
+import com.ruoyi.system.mapper.TBatteryGroupMapper;
+
+/** 电池组 Service 单元测试。 */
+@ExtendWith(MockitoExtension.class)
+class TBatteryGroupServiceImplTest
+{
+    @Mock
+    private TBatteryGroupMapper batteryGroupMapper;
+
+    @InjectMocks
+    private TBatteryGroupServiceImpl batteryGroupService;
+
+    @Test
+    void insertShouldPersistBatteriesWithoutTemplate()
+    {
+        TBatteryGroup group = new TBatteryGroup();
+        group.setGroupName("  样品组  ");
+        group.setModel("M-01");
+        group.setBatteryNos(Arrays.asList(" BAT-01 ", "BAT-02"));
+        group.setCreateBy("admin");
+        when(batteryGroupMapper.selectBatteryGroupByName("样品组")).thenReturn(null);
+        when(batteryGroupMapper.selectBatteryByNo(any(String.class), any())).thenReturn(null);
+        doAnswer(invocation -> {
+            invocation.<TBatteryGroup>getArgument(0).setGroupId(12L);
+            return 1;
+        }).when(batteryGroupMapper).insertBatteryGroup(any(TBatteryGroup.class));
+
+        assertEquals(1, batteryGroupService.insertBatteryGroup(group));
+
+        ArgumentCaptor<List<TBatteryGroupBattery>> captor = ArgumentCaptor.forClass(List.class);
+        verify(batteryGroupMapper).batchInsertBatteries(captor.capture());
+        assertEquals(Arrays.asList("BAT-01", "BAT-02"), captor.getValue().stream()
+                .map(TBatteryGroupBattery::getBatteryNo).toList());
+        verify(batteryGroupMapper, never()).batchInsertRelationFields(anyList());
+    }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImpl.java
index f9ce654..795f7b0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImpl.java
@@ -180,7 +180,11 @@
         }
         if (group.getTemplateId() == null)
         {
-            throw new ServiceException("模板不能为空");
+            if (group.getTemplateFieldRelations() != null && !group.getTemplateFieldRelations().isEmpty())
+            {
+                throw new ServiceException("未选择模板时不能配置模板字段");
+            }
+            return;
         }
         if (batteryGroupMapper.selectTemplate(group.getTemplateId()) == null)
         {
@@ -231,6 +235,10 @@
             batteries.add(item);
         }
         batteryGroupMapper.batchInsertBatteries(batteries);
+        if (group.getTemplateId() == null)
+        {
+            return;
+        }
         List<TBatteryGroupRelationField> relations = group.getTemplateFieldRelations();
         if (relations == null || relations.isEmpty())
         {

--
Gitblit v1.7.1