yeg
2026-08-27 2b64fd747005b44b685e616da71b63c92c536fe3
fix: persist battery groups without templates
1个文件已添加
1个文件已修改
66 ■■■■■ 已修改文件
ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImplTest.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImplTest.java
New file
@@ -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());
    }
}
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())
        {