From b471ab5edf72439cf6e37c4635c07e7a5fc08a4f Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期二, 03 十一月 2026 19:10:14 +0800
Subject: [PATCH] fix(excel): Excel 导入报错统一转为可读中文提示,不再出现「系统异常」500
---
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 56 insertions(+), 1 deletions(-)
diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java
index ee6f7ec..686e362 100644
--- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java
+++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java
@@ -1,7 +1,15 @@
package cn.iocoder.yudao.module.system.service.notice;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+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.module.system.controller.admin.notice.vo.NoticeImportExcelVO;
+import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeImportReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeImportRespVO;
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.notice.NoticeDO;
@@ -10,10 +18,13 @@
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
+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.module.system.enums.ErrorCodeConstants.NOTICE_NOT_FOUND;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
+import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
/**
* 閫氱煡鍏憡 Service 瀹炵幇绫�
@@ -65,6 +76,50 @@
return noticeMapper.selectById(id);
}
+ @Override
+ public NoticeImportRespVO importNoticeList(List<NoticeImportExcelVO> importNotices, NoticeImportReqVO importReqVO) {
+ importNotices = filterList(importNotices, item -> StrUtil.isNotBlank(item.getTitle()));
+ if (CollUtil.isEmpty(importNotices)) {
+ throw exception(NOTICE_IMPORT_LIST_IS_EMPTY);
+ }
+ NoticeImportRespVO respVO = NoticeImportRespVO.builder()
+ .createNoticeNames(new ArrayList<>())
+ .updateNoticeNames(new ArrayList<>())
+ .failureNoticeNames(new LinkedHashMap<>())
+ .build();
+ importNotices.forEach(importNotice -> {
+ try {
+ // 1. 鍏憡绫诲瀷蹇呭~
+ if (importNotice.getType() == null) {
+ throw exception(NOTICE_TYPE_NOT_EXISTS);
+ }
+ // 2. 鍒ゆ柇鏄惁瀛樺湪锛堟寜鏍囬锛�
+ NoticeDO existNotice = noticeMapper.selectByTitle(importNotice.getTitle());
+ if (existNotice == null) {
+ // 2.1 鏂板
+ NoticeDO notice = BeanUtils.toBean(importNotice, NoticeDO.class)
+ .setStatus(ObjUtil.defaultIfNull(importNotice.getStatus(), CommonStatusEnum.ENABLE.getStatus()));
+ noticeMapper.insert(notice);
+ respVO.getCreateNoticeNames().add(importNotice.getTitle());
+ return;
+ }
+ // 2.2 宸插瓨鍦紝鍒ゆ柇鏄惁鍏佽鏇存柊
+ if (!importReqVO.getUpdateSupport()) {
+ respVO.getFailureNoticeNames().put(importNotice.getTitle(),
+ StrUtil.format(NOTICE_TITLE_DUPLICATE.getMsg(), importNotice.getTitle()));
+ return;
+ }
+ NoticeDO updateNotice = BeanUtils.toBean(importNotice, NoticeDO.class)
+ .setId(existNotice.getId());
+ noticeMapper.updateById(updateNotice);
+ respVO.getUpdateNoticeNames().add(importNotice.getTitle());
+ } catch (ServiceException ex) {
+ respVO.getFailureNoticeNames().put(importNotice.getTitle(), ex.getMessage());
+ }
+ });
+ return respVO;
+ }
+
@VisibleForTesting
public void validateNoticeExists(Long id) {
if (id == null) {
--
Gitblit v1.9.3