TienChin 渠道管理-渠道导入

简介: TienChin 渠道管理-渠道导入

ChannelController

@PostMapping("/importTemplate")
void importTemplate(HttpServletResponse response) {
    ExcelUtil<Channel> util = new ExcelUtil<>(Channel.class);
    util.importTemplateExcel(response, "渠道数据");
}
@Log(title = "渠道管理", businessType = BusinessType.IMPORT)
@PreAuthorize("hasPermission('tienchin:channel:import')")
@PostMapping("/importData")
AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
    ExcelUtil<Channel> util = new ExcelUtil<>(Channel.class);
    List<Channel> channelList = util.importExcel(file.getInputStream());
    return AjaxResult.success(iChannelService.importChannel(channelList, updateSupport));
}

IChannelService

/**
 * 导入渠道数据
 *
 * @param channelList   渠道数据列表
 * @param updateSupport 是否更新支持,如果已存在,则进行更新数据
 * @return {@code boolean} {@code true} 导入成功 {@code false} 导入失败
 */
boolean importChannel(List<Channel> channelList, boolean updateSupport);

ChannelServiceImpl

@Override
@Transactional(rollbackFor = Exception.class)
public boolean importChannel(List<Channel> channelList, boolean updateSupport) {
    String username = SecurityUtils.getUsername();
    LocalDateTime currentTime = LocalDateTime.now();
    List<Channel> channels = channelList
            .stream()
            .peek(channel -> {
                if (updateSupport) {
                    channel.setUpdateBy(username);
                    channel.setUpdateTime(currentTime);
                } else {
                    channel.setCreateBy(username);
                    channel.setCreateTime(currentTime);
                    channel.setChannelId(null);
                }
            }).collect(Collectors.toList());
    if (updateSupport) {
        return updateBatchById(channels);
    } else {
        return saveBatch(channels);
    }
}

!> 修复若依框架导入数据 Byte 类型数据报错的问题


更改 ReflectUtils.java 中的 invokeMethodByName 方法:

2105804-20230917233341026-1413251200.png

...
else if (cs[i] == Byte.class) {
    args[i] = Convert.toByte(args[i]);
}
...

配置 MySQL 批量插入

# 批量插入
&rewriteBatchedStatements=true

配置在 MySQL 的连接地址后面即可:



因为 MyBatisPlus 当中的批量插入,并没有达到我的预料效果的批量插入,所以我们需要进行配置,配置方式如上。

目录
相关文章
|
XML 数据可视化 安全
IIS中的URL Rewrite模块功能学习总结
IIS中的URL Rewrite模块功能学习总结
541 0
IIS中的URL Rewrite模块功能学习总结
|
9月前
|
前端开发 UED 索引
React 图片灯箱组件 Image Lightbox
图片灯箱组件是一种常见的Web交互模式,用户点击缩略图后弹出全屏窗口展示大图,并提供导航功能。本文介绍了基于React框架的图片灯箱组件开发,涵盖初始化状态管理、图片加载与预加载、键盘和鼠标事件处理等常见问题及解决方案。通过`useState`和`useEffect`钩子管理状态,使用懒加载和预加载优化性能,确保流畅的用户体验。代码案例展示了组件的基本功能实现,包括打开/关闭灯箱、切换图片及键盘操作。
323 80
|
11月前
|
人工智能 弹性计算 数据可视化
解决方案|触手可及,函数计算玩转 AI 大模型 评测
解决方案|触手可及,函数计算玩转 AI 大模型 评测
163 1
|
搜索推荐 数据可视化 Linux
【超乎想象】Archman Linux:一款基于Arch Linux的极致轻量、极速稳定、超凡体验的Linux发行版!
【8月更文挑战第22天】Archman Linux是一款基于Arch Linux的轻量级、快速且稳定的发行版,继承了Arch的技术优势并提供友好的桌面环境。安装步骤包括下载ISO镜像、创建启动盘、从USB启动进入Live环境、运行安装程序、分区、配置网络及安装基本系统、设置密码、安装引导程序并重启。配置涉及系统更新、安装桌面环境与常用软件、个性化设置、安装驱动、设置自动更新和备份计划。通过提供的Shell脚本可自动化完成部分配置工作。无论新手还是老手,Archman Linux都能提供出色的体验。
505 2
|
存储 缓存 算法
深入理解Python的`functools.lru_cache`装饰器
在 Python 中,有许多内置的装饰器可以用来增强函数或者类的功能。其中之一就是 `functools.lru_cache` 装饰器。这是一个非常有用的装饰器,它可以帮助我们优化递归函数,避免重复计算已经计算过的值。在这篇文章中,我们将探讨 `functools.lru_cache` 的工作原理以及如何使用它。
|
XML JSON Apache
【Android】如何获得Apache服务器的JSON文件数据
【Android】如何获得Apache服务器的JSON文件数据
240 0
|
存储 网络协议 开发工具
WIFI DTU产品设计与实现(基于STM32F103+QT配置上位机案例设计分享)
WIFI DTU产品设计与实现(基于STM32F103+QT配置上位机案例设计分享)
520 0
|
编译器 C++
自定义类型之结构体的基础和进阶(有关位段、结构体自引用、嵌套、内存对齐、修改对齐数、结构体的传参、和offsetof宏的使用)
一、结构体基础知识 二、结构体的进阶(有关结构体的自引用,嵌套,内存对齐和内存设计) (一、)首先是结构体的嵌套 (二、)结构体的自引用 (三、)结构体的内存对齐(如何计算结构体的所占内存大小) (四、)如何修改默认对齐数 三、offsetof的意思 四、结构体的传参 五、位段的使用和注意 总结:
|
存储 算法 Java
【数据结构与算法】有向图的拓扑排序
【数据结构与算法】有向图的拓扑排序
307 1
【数据结构与算法】有向图的拓扑排序
|
SQL 存储 数据库
Navicat Premium导出数据库中的结构及数据及运行SQL文件
利用Navicat Premium导出数据库中的结构及数据利用Navicat Premium执行数据库中的结构及数据。本文以Navicat Premium15为例。
591 1
Navicat Premium导出数据库中的结构及数据及运行SQL文件