Ver código fonte

feat: 导入

wanggaokun 3 semanas atrás
pai
commit
b5d552e432

+ 3 - 1
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/controller/config/ConfigController.java

@@ -18,6 +18,7 @@ import org.eco.vip.excel.utils.ExcelUtils;
 import org.eco.vip.nexus.core.domain.config.excel.ConfigImport;
 import org.eco.vip.nexus.core.domain.config.pojo.ConfigBO;
 import org.eco.vip.nexus.core.domain.config.pojo.ConfigVO;
+import org.eco.vip.nexus.core.listener.ConfigImportListener;
 import org.eco.vip.nexus.core.service.config.IConfigService;
 import org.eco.vip.security.annotation.PermissionsResource;
 import org.springframework.validation.annotation.Validated;
@@ -97,7 +98,8 @@ public class ConfigController {
     @SaCheckPermission("system:config:import")
     @PostMapping("/import")
     public CommonResult<Valid> importData(MultipartFile file, boolean isCover) throws IOException {
-        ExcelResult<ConfigImport> result = ExcelUtils.importExcel(file.getInputStream(), ConfigImport.class, true);
+        ExcelResult<ConfigImport> result = ExcelUtils.importExcel(file.getInputStream(), ConfigImport.class, new ConfigImportListener(isCover));
+        System.out.println(result.getList());
         return success(result.getAnalysis());
     }
 

+ 6 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/domain/config/excel/ConfigImport.java

@@ -21,6 +21,12 @@ import java.io.Serializable;
 @NoArgsConstructor
 public class ConfigImport implements Serializable {
 
+    /**
+     * 唯一标识
+     */
+    @ExcelProperty(value = "参数编号")
+    private String configId;
+
     /**
      * 名称
      */

+ 62 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/listener/ConfigImportListener.java

@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ */
+
+package org.eco.vip.nexus.core.listener;
+
+
+import cn.idev.excel.context.AnalysisContext;
+import cn.idev.excel.event.AnalysisEventListener;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.vip.core.utils.BeanUtils;
+import org.eco.vip.core.utils.ObjUtils;
+import org.eco.vip.core.utils.SpringUtils;
+import org.eco.vip.core.utils.ValidatorUtils;
+import org.eco.vip.excel.core.ExcelListener;
+import org.eco.vip.excel.core.ExcelResult;
+import org.eco.vip.nexus.core.domain.config.excel.ConfigImport;
+import org.eco.vip.nexus.core.domain.config.pojo.ConfigBO;
+import org.eco.vip.nexus.core.domain.config.pojo.ConfigVO;
+import org.eco.vip.nexus.core.service.config.IConfigService;
+
+/**
+ * @description ConfigImportListener
+ *
+ * @author GaoKunW
+ * @date 2025/7/21 23:04
+ */
+@Slf4j
+public class ConfigImportListener extends AnalysisEventListener<ConfigImport> implements ExcelListener<ConfigImport> {
+
+    private final IConfigService configService;
+    private final boolean isCover;
+
+    public ConfigImportListener(boolean isCover) {
+        this.isCover = isCover;
+        this.configService = SpringUtils.getBean(IConfigService.class);
+    }
+
+    @Override
+    public void invoke(ConfigImport configImport, AnalysisContext analysisContext) {
+        ConfigBO configBO = BeanUtils.toBean(configImport, ConfigBO.class);
+        ConfigVO configVO = configService.selectById(configBO.getConfigId());
+        if (ObjUtils.isEmpty(configVO)) {
+            ValidatorUtils.validate(configBO);
+            configService.insert(configBO);
+        } else if (isCover) {
+            configBO.setVersion(configVO.getVersion());
+            configService.update(configBO);
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+    }
+
+    @Override
+    public ExcelResult<ConfigImport> getExcelResult() {
+        return null;
+    }
+
+}

+ 6 - 5
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/service/config/ConfigService.java

@@ -9,16 +9,17 @@ package org.eco.vip.nexus.core.service.config;
 import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryWrapper;
 import jakarta.annotation.Resource;
+import org.eco.vip.core.pojo.PageResult;
+import org.eco.vip.core.utils.CollUtils;
+import org.eco.vip.core.utils.MapstructUtils;
 import org.eco.vip.core.utils.ObjUtils;
+import org.eco.vip.core.utils.StrUtils;
 import org.eco.vip.nexus.core.domain.config.Config;
 import org.eco.vip.nexus.core.domain.config.pojo.ConfigBO;
 import org.eco.vip.nexus.core.domain.config.pojo.ConfigVO;
 import org.eco.vip.nexus.core.mapper.ConfigMapper;
 import org.eco.vip.orm.domain.PageQuery;
-import org.eco.vip.core.pojo.PageResult;
 import org.eco.vip.orm.service.BaseService;
-import org.eco.vip.core.utils.CollUtils;
-import org.eco.vip.core.utils.MapstructUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -78,7 +79,7 @@ public class ConfigService extends BaseService<ConfigMapper, Config> implements
 
     @Override
     public ConfigVO selectById(String id) {
-        QueryWrapper queryWrapper = query().where(CONFIG.CONFIG_ID.eq(id));
+        QueryWrapper queryWrapper = query().where(CONFIG.CONFIG_ID.eq(id).when(StrUtils.isNotBlank(id))).and(CONFIG.CONFIG_ID.isNull().when(StrUtils.isBlank(id)));
         return this.getOneAs(queryWrapper, ConfigVO.class);
     }
 
@@ -93,7 +94,7 @@ public class ConfigService extends BaseService<ConfigMapper, Config> implements
     public String getConfValue(String key) {
         QueryWrapper queryWrapper = query().where(CONFIG.CONFIG_KEY.eq(key));
         Config config = this.getOne(queryWrapper);
-        if(ObjUtils.isNotEmpty(config)){
+        if (ObjUtils.isNotEmpty(config)) {
             return config.getConfigValue();
         }
         return "";