7 changed files with 100 additions and 32 deletions
@ -1,35 +1,52 @@
|
||||
package com.biutag.lan.service; |
||||
|
||||
import cn.hutool.core.util.StrUtil; |
||||
import com.alibaba.excel.context.AnalysisContext; |
||||
import com.alibaba.excel.read.listener.ReadListener; |
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
import com.biutag.lan.domain.Work; |
||||
import com.biutag.lan.domain.bo.MailQuery; |
||||
import com.biutag.lan.domain.vo.WorkVo; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import com.biutag.lan.mapper.WorkMapper; |
||||
import lombok.Getter; |
||||
|
||||
import java.sql.Connection; |
||||
import java.sql.PreparedStatement; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
@Slf4j |
||||
@Getter |
||||
public class ExcelService implements ReadListener<WorkVo> { |
||||
// 定义一个批量插入的大小
|
||||
private static final int BATCH_SIZE = 100; |
||||
// 定义一个缓存的列表,用于存储读取到的数据
|
||||
private List<WorkVo> dataList = new ArrayList<>(BATCH_SIZE); |
||||
// 定义一个数据库连接对象
|
||||
private Connection connection; |
||||
// 定义一个预编译的SQL语句对象
|
||||
private PreparedStatement preparedStatement; |
||||
public ExcelService(WorkService workService) { |
||||
private List<Work> dbDatalist; |
||||
private List<WorkVo> excelDatalist = new ArrayList<>(); |
||||
|
||||
private List<WorkVo> result; |
||||
|
||||
private final WorkMapper workMapper; |
||||
private final MailQuery mailQuery; |
||||
|
||||
public ExcelService(WorkMapper workMapper, MailQuery mailQuery) { |
||||
this.workMapper = workMapper; |
||||
this.mailQuery = mailQuery; |
||||
} |
||||
|
||||
@Override |
||||
public void invoke(WorkVo workVo, AnalysisContext analysisContext) { |
||||
|
||||
excelDatalist.add(workVo); |
||||
} |
||||
|
||||
@Override |
||||
public void doAfterAllAnalysed(AnalysisContext analysisContext) { |
||||
|
||||
QueryWrapper<Work> queryWrapper = new QueryWrapper<Work>() |
||||
.ge(StrUtil.isNotBlank(mailQuery.getMailTimeStart()), "TO_CHAR(m.mail_time, 'YYYY-MM-DD')", mailQuery.getMailTimeStart()) |
||||
.le(StrUtil.isNotBlank(mailQuery.getMailTimeStartEnd()), "TO_CHAR(m.mail_time, 'YYYY-MM-DD')", mailQuery.getMailTimeStartEnd()); |
||||
dbDatalist = workMapper.selectList(queryWrapper); |
||||
for (WorkVo workVo : excelDatalist) { |
||||
for (Work work : dbDatalist) { |
||||
if (work.getMailId().equals(workVo.getMailId())) { |
||||
excelDatalist.remove(workVo); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
result = excelDatalist; |
||||
} |
||||
} |
||||
|
||||
Loading…
Reference in new issue