From ebd47e950c8d45f5cc21336f4996857de58e0ea6 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期四, 27 八月 2026 22:51:35 +0800
Subject: [PATCH] fix: persist battery group configuration

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImpl.java |   34 ++++++++++++++++++++++++++++------
 1 files changed, 28 insertions(+), 6 deletions(-)

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 795f7b0..fdc318f 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
@@ -22,7 +22,6 @@
 public class TBatteryGroupServiceImpl implements ITBatteryGroupService
 {
     private static final String ENABLED = "0";
-    private static final String TESTING = "1";
 
     @Autowired
     private TBatteryGroupMapper batteryGroupMapper;
@@ -56,13 +55,13 @@
     @Transactional(rollbackFor = Exception.class)
     public int insertBatteryGroup(TBatteryGroup group)
     {
-        validate(group, false);
-        group.setGroupName(StringUtils.trim(group.getGroupName()));
-        group.setCreateTime(new Date());
         if (StringUtils.isEmpty(group.getStatus()))
         {
             group.setStatus(ENABLED);
         }
+        validate(group, false);
+        group.setGroupName(StringUtils.trim(group.getGroupName()));
+        group.setCreateTime(new Date());
         int rows = batteryGroupMapper.insertBatteryGroup(group);
         replaceRelations(group);
         return rows;
@@ -76,10 +75,16 @@
         {
             throw new ServiceException("电池组ID不能为空");
         }
-        if (batteryGroupMapper.selectBatteryGroupById(group.getGroupId()) == null)
+        TBatteryGroup current = batteryGroupMapper.selectBatteryGroupById(group.getGroupId());
+        if (current == null)
         {
             throw new ServiceException("电池组不存在");
         }
+        if (StringUtils.isEmpty(group.getStatus()))
+        {
+            group.setStatus(current.getStatus());
+        }
+        validateStatusChange(group, current.getStatus());
         validate(group, true);
         group.setGroupName(StringUtils.trim(group.getGroupName()));
         group.setUpdateTime(new Date());
@@ -100,7 +105,7 @@
         {
             throw new ServiceException("电池组ID和目标状态不能为空");
         }
-        if (TESTING.equals(group.getStatus()) || !ENABLED.equals(group.getStatus()) && !"1".equals(group.getStatus()))
+        if (!ENABLED.equals(group.getStatus()) && !"1".equals(group.getStatus()))
         {
             throw new ServiceException("电池组状态不正确");
         }
@@ -155,6 +160,10 @@
         {
             throw new ServiceException("电池组型号不能为空");
         }
+        if (!ENABLED.equals(group.getStatus()) && !"1".equals(group.getStatus()))
+        {
+            throw new ServiceException("电池组状态不正确");
+        }
         TBatteryGroup existing = batteryGroupMapper.selectBatteryGroupByName(StringUtils.trim(group.getGroupName()));
         if (existing != null && (group.getGroupId() == null || !group.getGroupId().equals(existing.getGroupId())))
         {
@@ -198,6 +207,10 @@
                 if (relation == null || relation.getBatteryGroupFieldId() == null || !fieldIds.add(relation.getBatteryGroupFieldId()))
                 {
                     throw new ServiceException("模板字段关系不正确");
+                }
+                if (relation.getFieldValue() != null && relation.getFieldValue().length() > 500)
+                {
+                    throw new ServiceException("模板字段值长度不能超过500个字符");
                 }
             }
         }
@@ -258,4 +271,13 @@
         }
         batteryGroupMapper.batchInsertRelationFields(relations);
     }
+
+    private void validateStatusChange(TBatteryGroup group, String currentStatus)
+    {
+        if ("1".equals(group.getStatus()) && !"1".equals(currentStatus)
+                && batteryGroupMapper.countTestingByGroupId(group.getGroupId()) > 0)
+        {
+            throw new ServiceException("测试中的电池组不能禁用");
+        }
+    }
 }

--
Gitblit v1.7.1