SpringBoot实现导入功能
实体类-->MeetRestaurantArrange
package com.krt.meet.entity;import com.baomidou.mybatisplus.annotation.TableName;
import com.krt.common.core.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;import java.util.Date;/*** 餐厅安排实体类** @author lf* @date 2022-06-07*/
@ApiModel(value = "会务安排餐厅安排")
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@TableName("meet_restaurant_arrange")
public class MeetRestaurantArrange extends BaseEntity {/*** 会务ID*/@ApiModelProperty(value = "会务ID 关联meet_information表的id")private Integer meetId;/*** 关联人员信息ID*/@ApiModelProperty(value = "关联人员信息ID")private Integer restId;/*** 餐厅名称*/@ApiModelProperty(value = "餐厅名称")private String diningName;/*** 座位号*/@ApiModelProperty(value = "座位号")private String seatMember;/***餐厅地址*/@ApiModelProperty(value = "餐厅地址")private String mapAddress;/*** 经度*/@ApiModelProperty(value = "经度")private String lng;/*** 纬度*/@ApiModelProperty(value = "纬度")private String lat;/*** 用餐时间*/@ApiModelProperty(value = "用餐时间")private Date time;/*** 批次id*/@ApiModelProperty(value = "批次id")private String uuid;}
需要导入的Excel字段-->ExcelInRestauratVO
package com.krt.meet.VO;import cn.afterturn.easypoi.excel.annotation.Excel;
import com.krt.common.core.annotation.KrtDataMaskingClass;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;import java.util.Date;/*** 导入餐厅安排数据VO** @author lf* @version 1.0* @date 2022年06月07日*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@KrtDataMaskingClass
public class ExcelInRestaurantVO {/*** 人员姓名*/@Excel(name = "姓名")private String personName;/*** 联系方式*/@Excel(name = "联系方式")private String phone;/*** 餐厅名称*/@Excel(name = "餐厅名称")private String diningName;/*** 座位号*/@Excel(name = "座位号")private String seatMember;/*** 用餐时间*/@Excel(name = "用餐时间")private Date time;
}
控制层部分代码-->MraController
/*** 会务安排管理餐厅安排导入* @param file* @return*/@KrtLog("会务安排管理餐厅安排导入")@PostMapping("/api/meet/enrollPerson/excelInRestaurant")@ApiOperation(value = "餐厅安排数据导入", notes = "餐厅安排数据导入")@ApiImplicitParams({@ApiImplicitParam(paramType = "form", name = "file", value = "文件", dataType = "__file", required = true),@ApiImplicitParam(paramType = "form", name = "meetId", value = "对应导入会务id")})public ReturnBean excelInRestaurant(Integer meetId,@RequestParam("file") MultipartFile file){if (file.isEmpty()) {return ReturnBean.error("导入文件不能为空");}String fileName = file.getOriginalFilename();if (fileName.indexOf(".xls") == -1 && fileName.indexOf(".xlsx") == -1) {return ReturnBean.error("导入文件必须是Excel");}ImportParams params = new ImportParams();params.setTitleRows(1);params.setHeadRows(1);params.setNeedSave(false);try{//读取excelList<ExcelInRestaurantVO> excelList = ExcelImportUtil.importExcel(file.getInputStream(),ExcelInRestaurantVO.class,params);//保存return iMraService.excelInRestaurant(meetId,excelList);}catch (Exception e){log.debug("导入餐厅安排数据失败",e);return ReturnBean.error("导入餐厅安排数据失败");}}
服务接口层-->IMraService
package com.krt.meet.service;import com.krt.common.core.base.IBaseService;
import com.krt.common.core.bean.ReturnBean;
import com.krt.meet.VO.ExcelInRestaurantVO;
import com.krt.meet.entity.MeetRestaurantArrange;import java.util.List;/*** 餐厅安排服务接口层** @author lf* @date 2022-06-07*/
public interface IMraService extends IBaseService<MeetRestaurantArrange> {ReturnBean excelInRestaurant(Integer meetId,List<ExcelInRestaurantVO> excelList);
}
接口实现层-->MraServiceImpl
package com.krt.meet.service.impl;import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.krt.common.core.base.BaseServiceImpl;
import com.krt.common.core.bean.ReturnBean;
import com.krt.meet.VO.ExcelInRestaurantVO;
import com.krt.meet.entity.EnrollPerson;
import com.krt.meet.entity.MeetRestaurantArrange;
import com.krt.meet.mapper.MraMapper;
import com.krt.meet.service.IEnrollPersonService;
import com.krt.meet.service.IMeetHotelArrangeService;
import com.krt.meet.service.IMraService;
import com.krt.meet.utils.StringUtil;
import lombok.extern.slf4j.Slf4j;
import net.hasor.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;/*** 餐厅安排接口实现层** @author lf* @date 2022-06-07*/
@Slf4j
@Service
public class MraServiceImpl extends BaseServiceImpl<MraMapper, MeetRestaurantArrange> implements IMraService {@Autowiredprivate IMeetHotelArrangeService hotelArrangeService;@Overridepublic ReturnBean excelInRestaurant(Integer meetId,List<ExcelInRestaurantVO> excelList) {//生成导入批次String uuid = IdUtil.simpleUUID();ArrayList<MeetRestaurantArrange> restaurantArrangeList = new ArrayList<>();//解析数据,判断导入的姓名及手机号是否为空for (int i = 0;i < excelList.size();i++) {ExcelInRestaurantVO excelInRestaurantVO = excelList.get(i);if (StringUtils.isBlank(excelInRestaurantVO.getPersonName()) || StringUtils.isBlank(excelInRestaurantVO.getPersonName().trim())) {return ReturnBean.error("第" + (i + 1) + "行人员姓名为空");}if (StringUtils.isBlank(excelInRestaurantVO.getPhone()) || StringUtils.isBlank(excelInRestaurantVO.getPhone().trim())) {return ReturnBean.error("第" + (i + 1) + "行人员手机号为空");}/*** 将excel导入的数据与meet_enroll_person(手机号及姓名做匹配),查询出id.* 查询id的目的:meet_enroll_person的id关联meet_restaurant_arrange的id.*/EnrollPerson enrollPerson = hotelArrangeService.selectPerson(excelInRestaurantVO.getPersonName().trim(), excelInRestaurantVO.getPhone().trim(),meetId);if (enrollPerson == null) {return ReturnBean.error("存在导入的数据在人员信息中找不到!");}/*** 通过meet_id去中间表meet_restaurant_service查询rest_id,* 再通过rest_id关联meet_restaurant的id查询出餐厅名称,判断导入的餐厅名称是否存在.如果不存在,提示!*/List<MeetRestaurantArrange> meetRestaurantArranges = baseMapper.selectByRestName(meetId);boolean flag = true;for (MeetRestaurantArrange restaurantArrange : meetRestaurantArranges) {if (excelInRestaurantVO.getDiningName().equals(restaurantArrange.getDiningName())) {restaurantArrange.setUuid(uuid);restaurantArrange.setRestId(enrollPerson.getId());restaurantArrange.setMeetId(meetId);restaurantArrange.setDiningName(excelInRestaurantVO.getDiningName());restaurantArrange.setSeatMember(StringUtil.replaceBlank(excelInRestaurantVO.getSeatMember()));restaurantArrange.setTime(excelInRestaurantVO.getTime());restaurantArrangeList.add(restaurantArrange);flag = false;break;}}if (flag){return ReturnBean.error("第" + (i + 3) +"行导入的餐厅名称不匹配!");}}//保存数据if (restaurantArrangeList.size()>0){this.saveBatch(restaurantArrangeList);}return ReturnBean.ok();}
}
映射层-->MraMapper
package com.krt.meet.mapper;import com.krt.common.core.base.BaseMapper;
import com.krt.meet.entity.MeetRestaurantArrange;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;import java.util.List;/*** 餐厅安排映射层** @author lf* @version 1.0* @date 2022年06月07日*/
@Mapper
public interface MraMapper extends BaseMapper<MeetRestaurantArrange> {/*** 查询餐厅名称* @param meetId* @return*/List<MeetRestaurantArrange> selectByRestName(Integer meetId);}
sql-->MraMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.krt.meet.mapper.MraMapper"><sql id="Base_Column_List">t3.dining_name,t3.map_address,t3.lat,t3.lng</sql><select id="selectByRestName" resultType="com.krt.meet.entity.MeetRestaurantArrange">SELECT<include refid="Base_Column_List"/>FROM meet_restaurant_service t2LEFT JOIN meet_restaurant t3 ON t3.id = t2.restaurant_idWHEREt2.meet_id = #{meetId}</select>
</mapper>
SpringBoot实现导入功能相关推荐
- 【vue+springboot】excel模板下载、导入功能实现
基于VUE+SpringBoot实现excel模板下载.导入功能 背景 最近在工作中经常遇到批量导入的功能,而且前端还要提示导入成功几条.失败几条.哪一条数据重复.是哪一条导入的数据出现问题等,抽空写 ...
- SpringBoot集成邮箱功能并使用Knife4j测试
SpringBoot集成邮箱功能并使用Knife4j测试 哔哩哔哩链接:https://www.bilibili.com/video/BV1uA411N7cm 1.获取163或QQ邮箱授权码 163邮 ...
- 使用EasyExcel实现模板下载、数据导入功能
这里是在springboot项目下使用EasyExcel实现模板下载.数据导入功能. 顺便记录下自己遇到的一些坑. 一.模板下载 1.在你的工程下添加模板文件 2.编写代码实现下载功能 control ...
- c#直接调用ssis包实现Sql Server的数据导入功能
调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...
- oracle导入excel字段超过4000字符数据_产品思考:B端产品中,为什么批量导入功能很重要?...
B端产品的重要价值是提高企业的办公效率,在企业的日常工作中批量录入数据的场景很多,所以批量导入是b端设计中很重要的一个功能.本文作者结合案例,分享了自己关于B端产品批量导入功能的思考. 在做b端产品的 ...
- SAP Analytics Cloud Model的delta upload(增量导入)功能
初始导入到Model中的数据,一共8行: 准备导入增量数据: 在本地csv文件新建一条增量记录(2020-3-13): 重命名为formatted2-delta1.csv, 导入系统: 点击这个dra ...
- 互联网晚报 | 3月13日 星期日 | 上海加强疫情防控:非必要不离沪;MasterGo宣布上线Figma文件导入功能...
准备回家!"太空出差三人组"计划4月返回地球 3月13日,据中国载人航天工程办公室消息,2021年以来,我国载人航天工程已成功实施空间站关键技术验证阶段5次飞行任务,目前,核心舱组 ...
- ssms的导入功能_SSMS 17中的新增功能; PowerShell和DAX
ssms的导入功能 介绍 (Introduction) In earlier versions, SSMS was included in the SQL Server installer. Now ...
- java导_java——导入功能
1.导入功能思路: 前台上传文件将MultipartFile ->输入流 ->poi work对象 ->使用excel表头与model字段对应关系 ->通过sheet.row. ...
- excel表格导入功能
1.表格导入方法 (1)首先jsp文件中加入对应的HTML样式,并调用对应js中的方法 <em class="separ"></em><a class ...
最新文章
- Linux输入输出I/O
- mysql mha官网下载_mysql MHA 及多主复制
- IOS NSPredicate 查询、搜索
- MOPSO 多目标粒子群优化算法
- Spring Cloud Gateway之负载均衡
- Linux 查看系统硬件信息
- 服务器的防火墙禁止了对指定通讯端口的访问,使用iptables限制访问网站指定端口...
- MyBatisPlus_通用service篇_入门试炼_05
- 数据产品经理的5大阶段和6步作战模型
- win7、offcie 2010是否激活查看方法
- c语言学习进阶-C语言程序出错处理
- Hive启动的三种方式
- 如何在旧 Mac 或 MacBook 上安装 Chrome 操作系统?
- pp什么叫php的事务,ThinkPHP5.0框架事务处理操作简单示例
- Mysql入门实战上
- 音乐文件加密歌曲转换器mp3
- Redis安装部署(Windows/Linux)
- Excel如何快速将一维表转为二维表
- 在Java中实现有账号密码的Http代理访问
- 数据运营平台-基础架构
热门文章
- TortoiseSVN - Download下载 - 1.5.4
- 实时帧数手机_方便好用的手机帧数记录软件
- IBM小型机安装AIX系统
- 经典合成器插件 – LennarDigital Sylenth1 2.2.1 WiN-MAC
- python如何上传文件_python请求文件上传
- 怎么把word转换ppt?
- 什么是WPF,对WPF的认识
- java 远程视频监控系统_基于JAVA的远程屏幕监控系统
- k2pb1官改和梅林_K2P B1免拆机刷官改和梅林阉割版固件(方法超简单)
- 锐捷长ping_锐捷 ping 网关通 ping 机器不通