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