From 10158625f1096c54664a5f87b3f32d33794e4eee Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期五, 11 九月 2026 12:13:59 +0800
Subject: [PATCH] fix(mdm): 物料导入“状态”列兼容中文,读表异常改为友好提示
---
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/StatusTextConverter.java | 57 ++++++++++++++++++++++++++++
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/MdmItemImportExcelVO.java | 2
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/MdmItemController.java | 14 ++++++
3 files changed, 71 insertions(+), 2 deletions(-)
diff --git a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/MdmItemController.java b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/MdmItemController.java
index 4495e23..b570ded 100644
--- a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/MdmItemController.java
+++ b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/MdmItemController.java
@@ -333,7 +333,19 @@
@PreAuthorize("@ss.hasPermission('mdm:item:import')")
public CommonResult<MdmItemImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
- List<MdmItemImportExcelVO> list = ExcelUtils.read(file, MdmItemImportExcelVO.class);
+ List<MdmItemImportExcelVO> list;
+ try {
+ list = ExcelUtils.read(file, MdmItemImportExcelVO.class);
+ } catch (cn.idev.excel.exception.ExcelDataConvertException e) {
+ int row = e.getRowIndex() == null ? 0 : e.getRowIndex() + 1;
+ int col = e.getColumnIndex() == null ? 0 : e.getColumnIndex() + 1;
+ String cellVal = e.getCellData() == null ? "" : String.valueOf(e.getCellData().getStringValue());
+ throw new cn.iocoder.yudao.framework.common.exception.ServiceException(400,
+ "Excel 绗� " + row + " 琛岀 " + col + " 鍒楁暟鎹��" + cellVal + "銆忔牸寮忎笉姝g‘锛岃妫�鏌ヨ鍒楀唴瀹癸紙渚嬪鈥滅姸鎬佲�濊濉� 0/1 鎴� 鍚敤/鍋滅敤锛�");
+ } catch (Exception e) {
+ throw new cn.iocoder.yudao.framework.common.exception.ServiceException(400,
+ "Excel 瑙f瀽澶辫触锛�" + e.getMessage() + "锛岃浣跨敤绯荤粺鈥滀笅杞藉鍏ユā鏉库�濆苟鎸夋ā鏉垮~鍐欍��");
+ }
return success(itemService.importItemList(list, updateSupport));
}
diff --git a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/MdmItemImportExcelVO.java b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/MdmItemImportExcelVO.java
index 9fa5c81..a490136 100644
--- a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/MdmItemImportExcelVO.java
+++ b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/MdmItemImportExcelVO.java
@@ -74,7 +74,7 @@
@ExcelProperty("淇濊川鏈�(澶�)")
private Integer expiryDay;
- @ExcelProperty("鐘舵��")
+ @ExcelProperty(value = "鐘舵��", converter = StatusTextConverter.class)
private Integer status;
@ExcelProperty("鏄惁鍚屾鍒癕ES")
diff --git a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/StatusTextConverter.java b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/StatusTextConverter.java
new file mode 100644
index 0000000..d01affa
--- /dev/null
+++ b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/item/vo/StatusTextConverter.java
@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.mdm.controller.admin.item.vo;
+
+import cn.idev.excel.converters.Converter;
+import cn.idev.excel.enums.CellDataTypeEnum;
+import cn.idev.excel.metadata.GlobalConfiguration;
+import cn.idev.excel.metadata.data.ReadCellData;
+import cn.idev.excel.metadata.property.ExcelContentProperty;
+
+/**
+ * 鐗╂枡瀵煎叆鈥滅姸鎬佲�濆垪杞崲鍣細
+ * 鍏煎 鏁板瓧(0/1)銆佷腑鏂囷紙鍚敤/鍋滅敤銆佸紑鍚�/鍏抽棴銆佹槸/鍚︼級銆佽嫳鏂囷紙true/false銆乪nable/disable锛夈��
+ * 鏃犳硶璇嗗埆鏃惰繑鍥� null锛堢敱涓氬姟灞傛寜榛樿鈥滃惎鐢ㄢ�濆鐞嗭級锛岄伩鍏嶇洿鎺ユ姏鍑衡�滅郴缁熷紓甯糕�濄��
+ */
+public class StatusTextConverter implements Converter<Integer> {
+
+ @Override
+ public Class<Integer> supportJavaTypeKey() {
+ return Integer.class;
+ }
+
+ @Override
+ public CellDataTypeEnum supportExcelTypeKey() {
+ return CellDataTypeEnum.STRING;
+ }
+
+ @Override
+ public Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty,
+ GlobalConfiguration globalConfiguration) {
+ if (cellData == null) {
+ return null;
+ }
+ if (cellData.getType() == CellDataTypeEnum.NUMBER && cellData.getNumberValue() != null) {
+ return cellData.getNumberValue().intValue() >= 1 ? 1 : 0;
+ }
+ String s = cellData.getStringValue();
+ if (s == null) {
+ return null;
+ }
+ s = s.trim();
+ if (s.isEmpty()) {
+ return null;
+ }
+ if ("0".equals(s) || s.contains("鍚敤") || s.contains("寮�鍚�") || "鏄�".equals(s)
+ || "true".equalsIgnoreCase(s) || "enable".equalsIgnoreCase(s)) {
+ return 0;
+ }
+ if ("1".equals(s) || s.contains("鍋滅敤") || s.contains("鍏抽棴") || "鍚�".equals(s)
+ || "false".equalsIgnoreCase(s) || "disable".equalsIgnoreCase(s)) {
+ return 1;
+ }
+ try {
+ return Integer.parseInt(s);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ }
+}
--
Gitblit v1.9.3