龚焕茏
2024-03-05 73ea78235e216c3d34d9ce10723af046737635d5
Excel导入部分
4个文件已修改
117 ■■■■ 已修改文件
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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() + "条!";
    }
}