实体类-->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实现导入功能相关推荐

  1. 【vue+springboot】excel模板下载、导入功能实现

    基于VUE+SpringBoot实现excel模板下载.导入功能 背景 最近在工作中经常遇到批量导入的功能,而且前端还要提示导入成功几条.失败几条.哪一条数据重复.是哪一条导入的数据出现问题等,抽空写 ...

  2. SpringBoot集成邮箱功能并使用Knife4j测试

    SpringBoot集成邮箱功能并使用Knife4j测试 哔哩哔哩链接:https://www.bilibili.com/video/BV1uA411N7cm 1.获取163或QQ邮箱授权码 163邮 ...

  3. 使用EasyExcel实现模板下载、数据导入功能

    这里是在springboot项目下使用EasyExcel实现模板下载.数据导入功能. 顺便记录下自己遇到的一些坑. 一.模板下载 1.在你的工程下添加模板文件 2.编写代码实现下载功能 control ...

  4. c#直接调用ssis包实现Sql Server的数据导入功能

    调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...

  5. oracle导入excel字段超过4000字符数据_产品思考:B端产品中,为什么批量导入功能很重要?...

    B端产品的重要价值是提高企业的办公效率,在企业的日常工作中批量录入数据的场景很多,所以批量导入是b端设计中很重要的一个功能.本文作者结合案例,分享了自己关于B端产品批量导入功能的思考. 在做b端产品的 ...

  6. SAP Analytics Cloud Model的delta upload(增量导入)功能

    初始导入到Model中的数据,一共8行: 准备导入增量数据: 在本地csv文件新建一条增量记录(2020-3-13): 重命名为formatted2-delta1.csv, 导入系统: 点击这个dra ...

  7. 互联网晚报 | 3月13日 星期日 |​ ​​上海加强疫情防控:非必要不离沪;MasterGo宣布上线Figma文件导入功能...

    准备回家!"太空出差三人组"计划4月返回地球 3月13日,据中国载人航天工程办公室消息,2021年以来,我国载人航天工程已成功实施空间站关键技术验证阶段5次飞行任务,目前,核心舱组 ...

  8. ssms的导入功能_SSMS 17中的新增功能; PowerShell和DAX

    ssms的导入功能 介绍 (Introduction) In earlier versions, SSMS was included in the SQL Server installer. Now ...

  9. java导_java——导入功能

    1.导入功能思路: 前台上传文件将MultipartFile ->输入流 ->poi work对象 ->使用excel表头与model字段对应关系 ->通过sheet.row. ...

  10. excel表格导入功能

    1.表格导入方法 (1)首先jsp文件中加入对应的HTML样式,并调用对应js中的方法 <em class="separ"></em><a class ...

最新文章

  1. Linux输入输出I/O
  2. mysql mha官网下载_mysql MHA 及多主复制
  3. IOS NSPredicate 查询、搜索
  4. MOPSO 多目标粒子群优化算法
  5. Spring Cloud Gateway之负载均衡
  6. Linux 查看系统硬件信息
  7. 服务器的防火墙禁止了对指定通讯端口的访问,使用iptables限制访问网站指定端口...
  8. MyBatisPlus_通用service篇_入门试炼_05
  9. 数据产品经理的5大阶段和6步作战模型
  10. win7、offcie 2010是否激活查看方法
  11. c语言学习进阶-C语言程序出错处理
  12. Hive启动的三种方式
  13. 如何在旧 Mac 或 MacBook 上安装 Chrome 操作系统?
  14. pp什么叫php的事务,ThinkPHP5.0框架事务处理操作简单示例
  15. Mysql入门实战上
  16. 音乐文件加密歌曲转换器mp3
  17. Redis安装部署(Windows/Linux)
  18. Excel如何快速将一维表转为二维表
  19. 在Java中实现有账号密码的Http代理访问
  20. 数据运营平台-基础架构

热门文章

  1. TortoiseSVN - Download下载 - 1.5.4
  2. 实时帧数手机_方便好用的手机帧数记录软件
  3. IBM小型机安装AIX系统
  4. 经典合成器插件 – LennarDigital Sylenth1 2.2.1 WiN-MAC
  5. python如何上传文件_python请求文件上传
  6. 怎么把word转换ppt?
  7. 什么是WPF,对WPF的认识
  8. java 远程视频监控系统_基于JAVA的远程屏幕监控系统
  9. k2pb1官改和梅林_K2P B1免拆机刷官改和梅林阉割版固件(方法超简单)
  10. 锐捷长ping_锐捷 ping 网关通 ping 机器不通