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