From a4a360b6ea88c6c1c8bc3f7098ee7e25a6a101c1 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 16 十月 2026 14:27:49 +0800
Subject: [PATCH] fix(bi): 修复 BiDataSourceConfigMapper 字段名与 infra 同名 bean 冲突导致启动失败

---
 yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiAlertRuleServiceImpl.java |   65 ++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 1 deletions(-)

diff --git a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiAlertRuleServiceImpl.java b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiAlertRuleServiceImpl.java
index 23197ea..e83d1b9 100644
--- a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiAlertRuleServiceImpl.java
+++ b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiAlertRuleServiceImpl.java
@@ -1,7 +1,14 @@
 package cn.iocoder.yudao.module.bi.service.decision;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.bi.controller.admin.decision.vo.DecisionAlertRuleImportExcelVO;
+import cn.iocoder.yudao.module.bi.controller.admin.decision.vo.DecisionAlertRuleImportReqVO;
+import cn.iocoder.yudao.module.bi.controller.admin.decision.vo.DecisionAlertRuleImportRespVO;
 import cn.iocoder.yudao.module.bi.controller.admin.decision.vo.DecisionAlertRulePageReqVO;
 import cn.iocoder.yudao.module.bi.dal.dataobject.decision.BiAlertRuleDO;
 import cn.iocoder.yudao.module.bi.dal.dataobject.decision.BiKpiDefinitionDO;
@@ -12,7 +19,12 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
 
 /**
  * 棰勮瑙勫垯 Service 瀹炵幇
@@ -73,4 +85,55 @@
                 .orderByDesc(BiAlertRuleDO::getId));
     }
 
-}
\ No newline at end of file
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public DecisionAlertRuleImportRespVO importAlertRuleList(List<DecisionAlertRuleImportExcelVO> importList,
+                                                             DecisionAlertRuleImportReqVO importReqVO) {
+        // 1. 鏍¢獙闈炵┖
+        importList = filterList(importList, item -> StrUtil.isNotBlank(item.getName()));
+        if (CollUtil.isEmpty(importList)) {
+            throw exception(ErrorCodeConstants.ALERT_RULE_IMPORT_LIST_IS_EMPTY);
+        }
+        // 2. 閫愭潯澶勭悊
+        DecisionAlertRuleImportRespVO respVO = DecisionAlertRuleImportRespVO.builder()
+                .createAlertRuleNames(new ArrayList<>())
+                .updateAlertRuleNames(new ArrayList<>())
+                .failureAlertRuleNames(new LinkedHashMap<>())
+                .build();
+        importList.forEach(item -> {
+            try {
+                // 2.1 瑙f瀽KPI
+                BiKpiDefinitionDO kpi = StrUtil.isBlank(item.getKpiCode()) ? null
+                        : kpiMapper.selectOne(BiKpiDefinitionDO::getCode, item.getKpiCode());
+                if (kpi == null) {
+                    throw exception(ErrorCodeConstants.ALERT_RULE_IMPORT_KPI_NOT_EXISTS, item.getKpiCode());
+                }
+                // 2.2 鍒ゆ柇鏄惁瀛樺湪
+                BiAlertRuleDO exist = alertRuleMapper.selectByName(item.getName());
+                if (exist == null) {
+                    // 2.2.1 鏂板
+                    BiAlertRuleDO rule = BeanUtils.toBean(item, BiAlertRuleDO.class)
+                            .setKpiId(kpi.getId());
+                    alertRuleMapper.insert(rule);
+                    respVO.getCreateAlertRuleNames().add(item.getName());
+                    return;
+                }
+                // 2.2.2 宸插瓨鍦紝鍒ゆ柇鏄惁鍏佽鏇存柊
+                if (!importReqVO.getUpdateSupport()) {
+                    respVO.getFailureAlertRuleNames().put(item.getName(),
+                            StrUtil.format(ErrorCodeConstants.ALERT_RULE_NAME_EXISTS.getMsg(), item.getName()));
+                    return;
+                }
+                BiAlertRuleDO updateObj = BeanUtils.toBean(item, BiAlertRuleDO.class)
+                        .setId(exist.getId())
+                        .setKpiId(kpi.getId());
+                alertRuleMapper.updateById(updateObj);
+                respVO.getUpdateAlertRuleNames().add(item.getName());
+            } catch (ServiceException ex) {
+                respVO.getFailureAlertRuleNames().put(item.getName(), ex.getMessage());
+            }
+        });
+        return respVO;
+    }
+
+}

--
Gitblit v1.9.3