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