龚焕茏
2024-03-06 bb77e44761f61ec08e257fecc5143859eb14bd30
Excel导入实现
6个文件已修改
118 ■■■■■ 已修改文件
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsDangerTotalController.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerTotalVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsDangerTotalService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsDangerTotalServiceImpl.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsDangerTotalController.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.RsDangerTotalVo;
import org.dromara.demo.domain.bo.RsDangerTotalBo;
import org.dromara.demo.service.IRsDangerTotalService;
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.RsDangerTotal;
import org.dromara.demo.domain.bo.RsDangerTotalBo;
import org.dromara.demo.domain.vo.RsDangerTotalVo;
import org.dromara.demo.service.IRsDangerTotalService;
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;
/**
 * 安全隐患统计
@@ -57,6 +64,29 @@
    }
    /**
     * 导入数据
     *
     * @param file          导入文件
     */
    @Log(title = "导入数据", businessType = BusinessType.IMPORT)
    @SaCheckPermission("demo:dangerTotal:import")
    @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public R<Void> importData(@RequestPart("file") MultipartFile file) throws Exception {
        ExcelResult<RsDangerTotalVo> result = ExcelUtil.importExcel(file.getInputStream(), RsDangerTotalVo.class, true);
        List<RsDangerTotal> list = MapstructUtils.convert(result.getList(), RsDangerTotal.class);
        return R.ok(rsDangerTotalService.importExcel(list));
    }
    /**
     * 获取导入模板
     */
    @SaCheckPermission("demo:dangerTotal:importTemplate")
    @PostMapping("/importTemplate")
    public void importTemplate(HttpServletResponse response) {
        ExcelUtil.exportExcel(new ArrayList<>(), "景区运行数据", RsDangerTotalVo.class, response);
    }
    /**
     * 获取安全隐患统计详细信息
     *
     * @param id 主键
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java
@@ -65,7 +65,6 @@
        ExcelUtil.exportExcel(list, "景区运行数据", RsSceneryOperationDataVo.class, response);
    }
    /**
     * 导入数据
     *
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerTotalVo.java
@@ -31,7 +31,6 @@
    /**
     * 编号
     */
    @ExcelProperty(value = "编号")
    private String id;
    /**
@@ -43,19 +42,18 @@
    /**
     * 年度/月度 1年度 2月度
     */
    @ExcelProperty(value = "年度/月度 1年度 2月度")
    private Long period;
    /**
     * 周期
     */
    @ExcelProperty(value = "周期")
    @ExcelProperty(value = "统计周期")
    private String periodDate;
    /**
     * 发现安全隐患
     */
    @ExcelProperty(value = "发现安全隐患")
    @ExcelProperty(value = "发现隐患")
    private Long findSecurityRisks;
    /**
@@ -67,19 +65,17 @@
    /**
     * 处置安全隐患
     */
    @ExcelProperty(value = "处置安全隐患")
    @ExcelProperty(value = "处置隐患")
    private Long dealWithSecurityRisks;
    /**
     * 启用状态 1启用 2未启用
     */
    @ExcelProperty(value = "启用状态 1启用 2未启用")
    private Long status;
    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;
}
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsDangerTotalService.java
@@ -2,6 +2,7 @@
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.demo.domain.RsDangerTotal;
import org.dromara.demo.domain.bo.RsDangerTotalBo;
import org.dromara.demo.domain.vo.RsDangerTotalVo;
@@ -45,4 +46,11 @@
     * 校验并批量删除安全隐患统计信息
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
    /**
     * Excel数据导入
     * @param list 数据列
     * @return 导入提示
     */
    String importExcel(List<RsDangerTotal> list);
}
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsDangerTotalServiceImpl.java
@@ -1,25 +1,28 @@
package org.dromara.demo.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.demo.domain.RsDangerInfo;
import org.springframework.stereotype.Service;
import org.dromara.common.core.utils.MapstructUtils;
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.RsDangerTotal;
import org.dromara.demo.domain.bo.RsDangerTotalBo;
import org.dromara.demo.domain.vo.RsDangerTotalVo;
import org.dromara.demo.domain.RsDangerTotal;
import org.dromara.demo.mapper.RsDangerTotalMapper;
import org.dromara.demo.service.IRsDangerTotalService;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * 安全隐患统计Service业务层处理
@@ -117,4 +120,14 @@
        }
        return baseMapper.deleteBatchIds(ids) > 0;
    }
    @Override
    public String importExcel(List<RsDangerTotal> list) {
        for (RsDangerTotal dangerTotal : list) {
            dangerTotal.setPeriod(dangerTotal.getPeriodDate().length() > 4 ? 1L : 2L);
            dangerTotal.setCreateTime(new Date());
            dangerTotal.setStatus(2L);
        }
        return baseMapper.insertBatch(list) ? "恭喜您,数据已全部导入成功!共"  + list.size() + "条!" : "很抱歉,导入失败!请检查数据格式!";
    }
}
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java
@@ -134,12 +134,12 @@
        for (RsSceneryOperationData operationData : list) {
            String sceneryName = operationData.getSceneryInfoName();
            RsSceneryInfo sceneryInfo = sceneryInfoMap.get(sceneryName);
            // 景区已存在,正常导入
            // 景区已存在,正常导入,默认禁用
            if (sceneryInfo != null) {
                operationData.setSceneryInfoId(sceneryInfo.getId());
                operationData.setPeriod(operationData.getPeriodDate().length() > 4 ? 1L : 2L);
                operationData.setCreateTime(new Date());
                operationData.setStatus(1L);
                operationData.setStatus(2L);
            } else {
                sceneryInfoNames.add(operationData.getSceneryInfoName());
            }
@@ -147,10 +147,6 @@
        if (!sceneryInfoNames.isEmpty()) {
            return "很抱歉,导入失败!" + String.join("、", "<" + sceneryInfoNames + ">") + "景区不存在,请前往【景区配置】添加后重试!";
        }
        // // 其余数据禁用
        // LambdaUpdateWrapper<RsSceneryOperationData> updateWrapper = new LambdaUpdateWrapper<>();
        // updateWrapper.ne(RsSceneryOperationData::getId, operationData.getId()).eq(RsSceneryOperationData::getSceneryInfoId, operationData.getSceneryInfoId()).set(RsSceneryOperationData::getStatus, 2);
        // baseMapper.update(updateWrapper);
        baseMapper.insertBatch(list);
        return "恭喜您,数据已全部导入成功!共"  + list.size() + "条!";
    }