From 73ea78235e216c3d34d9ce10723af046737635d5 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 05 三月 2024 18:10:31 +0800
Subject: [PATCH] Excel导入部分

---
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java    |   63 ++++++++++++++++++++++++-------
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java         |   15 +++++--
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java             |    7 ---
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java |   32 ++++++++++++++--
 4 files changed, 88 insertions(+), 29 deletions(-)

diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java
index 9bbbf98..a439c07 100644
--- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java
@@ -1,26 +1,33 @@
 package org.dromara.demo.controller;
 
-import java.util.List;
-
-import lombok.RequiredArgsConstructor;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.mybatis.core.page.PageQuery;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.core.ExcelResult;
 import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
-import org.dromara.demo.domain.bo.RsSceneryOperationDataBo;
-import org.dromara.demo.service.IRsSceneryOperationDataService;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.demo.domain.RsSceneryOperationData;
+import org.dromara.demo.domain.bo.RsSceneryOperationDataBo;
+import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
+import org.dromara.demo.service.IRsSceneryOperationDataService;
+import org.springframework.http.MediaType;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 鏅尯杩愯鏁版嵁
@@ -35,6 +42,8 @@
 public class RsSceneryOperationDataController extends BaseController {
 
     private final IRsSceneryOperationDataService rsSceneryOperationDataService;
+    private final StringBuilder successMsg = new StringBuilder();
+    private final StringBuilder failureMsg = new StringBuilder();
 
     /**
      * 鏌ヨ鏅尯杩愯鏁版嵁鍒楄〃
@@ -56,6 +65,30 @@
         ExcelUtil.exportExcel(list, "鏅尯杩愯鏁版嵁", RsSceneryOperationDataVo.class, response);
     }
 
+
+    /**
+     * 瀵煎叆鏁版嵁
+     *
+     * @param file          瀵煎叆鏂囦欢
+     */
+    @Log(title = "瀵煎叆鏁版嵁", businessType = BusinessType.IMPORT)
+    @SaCheckPermission("demo:sceneryOperationData:import")
+    @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    public R<Void> importData(@RequestPart("file") MultipartFile file) throws Exception {
+        ExcelResult<RsSceneryOperationDataVo> result = ExcelUtil.importExcel(file.getInputStream(), RsSceneryOperationDataVo.class, true);
+        List<RsSceneryOperationData> list = MapstructUtils.convert(result.getList(), RsSceneryOperationData.class);
+        return R.ok(rsSceneryOperationDataService.importExcel(list));
+    }
+
+    /**
+     * 鑾峰彇瀵煎叆妯℃澘
+     */
+    @SaCheckPermission("demo:sceneryOperationData:importTemplate")
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil.exportExcel(new ArrayList<>(), "鏅尯杩愯鏁版嵁", RsSceneryOperationDataVo.class, response);
+    }
+
     /**
      * 鑾峰彇鏅尯杩愯鏁版嵁璇︾粏淇℃伅
      *
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java
index cdd82d0..4a9bec6 100644
--- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java
@@ -31,13 +31,11 @@
     /**
      * id
      */
-    @ExcelProperty(value = "id")
     private String id;
 
     /**
      * 鏅尯id
      */
-    @ExcelProperty(value = "鏅尯id")
     private String sceneryInfoId;
 
     /**
@@ -49,13 +47,12 @@
     /**
      * 骞村害/鏈堝害 1骞村害 2鏈堝害
      */
-    @ExcelProperty(value = "骞村害/鏈堝害 1骞村害 2鏈堝害")
     private Long period;
 
     /**
      * 鍛ㄦ湡
      */
-    @ExcelProperty(value = "鍛ㄦ湡")
+    @ExcelProperty(value = "缁熻鍛ㄦ湡")
     private String periodDate;
 
     /**
@@ -103,13 +100,11 @@
     /**
      * 鐘舵�� 1鍚敤 0鏈惎鐢�
      */
-    @ExcelProperty(value = "鐘舵�� 1鍚敤 0鏈惎鐢�")
     private Long status;
 
     /**
      * 鍒涘缓鏃堕棿
      */
-    @ExcelProperty(value = "鍒涘缓鏃堕棿")
     private Date createTime;
 
 
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java
index 7d030ea..c2d7b50 100644
--- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java
@@ -1,10 +1,10 @@
 package org.dromara.demo.service;
 
-import org.dromara.demo.domain.RsSceneryOperationData;
-import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
-import org.dromara.demo.domain.bo.RsSceneryOperationDataBo;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.demo.domain.RsSceneryOperationData;
+import org.dromara.demo.domain.bo.RsSceneryOperationDataBo;
+import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -46,4 +46,11 @@
      * 鏍¢獙骞舵壒閲忓垹闄ゆ櫙鍖鸿繍琛屾暟鎹俊鎭�
      */
     Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
+    /**
+     * Excel鎵归噺瀵煎叆
+     * @param list 鏁版嵁闆�
+     * @return 瀵煎叆鎻愮ず
+     */
+    String importExcel(List<RsSceneryOperationData> list);
 }
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java
index 3371dde..f107c12 100644
--- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java
@@ -9,17 +9,18 @@
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.demo.domain.RsSceneryInfo;
 import org.dromara.demo.domain.RsSceneryOperationData;
 import org.dromara.demo.domain.bo.RsSceneryOperationDataBo;
 import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
+import org.dromara.demo.mapper.RsSceneryInfoMapper;
 import org.dromara.demo.mapper.RsSceneryOperationDataMapper;
 import org.dromara.demo.service.IRsSceneryOperationDataService;
 import org.springframework.stereotype.Service;
 
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 鏅尯杩愯鏁版嵁Service涓氬姟灞傚鐞�
@@ -32,6 +33,7 @@
 public class RsSceneryOperationDataServiceImpl implements IRsSceneryOperationDataService {
 
     private final RsSceneryOperationDataMapper baseMapper;
+    private final RsSceneryInfoMapper sceneryInfoMapper;
 
     /**
      * 鏌ヨ鏅尯杩愯鏁版嵁
@@ -122,4 +124,26 @@
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    @Override
+    public String importExcel(List<RsSceneryOperationData> list) {
+        List<String> sceneryInfoNames = new ArrayList<>();
+        // 鏌ヨ鏁版嵁搴撴槸鍚﹀瓨鍦ㄥ鍏ョ殑鏅尯
+        Map<String, RsSceneryInfo> sceneryInfoMap = sceneryInfoMapper.selectList().stream()
+            .collect(Collectors.toMap(RsSceneryInfo::getSceneryName, Function.identity()));
+        for (RsSceneryOperationData operationData : list) {
+            String sceneryName = operationData.getSceneryInfoName();
+            RsSceneryInfo sceneryInfo = sceneryInfoMap.get(sceneryName);
+            if (sceneryInfo != null) {
+                operationData.setSceneryInfoId(sceneryInfo.getId());
+            } else {
+                sceneryInfoNames.add(operationData.getSceneryInfoName());
+            }
+        }
+        if (!sceneryInfoNames.isEmpty()) {
+            return "寰堟姳姝夛紝瀵煎叆澶辫触锛�" + String.join("銆�", sceneryInfoNames) + "鏅尯涓嶅瓨鍦紝璇峰墠寰�銆愭櫙鍖洪厤缃�戞坊鍔犲悗閲嶈瘯锛�";
+        }
+        baseMapper.insertBatch(list);
+        return "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏�"  + list.size() + "鏉★紒";
+    }
 }

--
Gitblit v1.8.0