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); } /** * 获取景区运行数据详细信息 * 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; 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); } 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() + "条!"; } }