package com.fdkankan.manage.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.manage.common.PageInfo;
import com.fdkankan.manage.common.CacheUtil;
import com.fdkankan.manage.entity.Camera;
import com.fdkankan.manage.entity.DownloadOrder;
import com.fdkankan.manage.entity.ScenePlus;
import com.fdkankan.manage.entity.ScenePro;
import com.fdkankan.manage.mapper.IDownloadOrderMapper;
import com.fdkankan.manage.service.*;
import com.fdkankan.manage.vo.request.OrderParam;
import com.fdkankan.manage.vo.response.DownOrderVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Set;
import java.util.stream.Collectors;
/**
*
* 下载次数订单表 服务实现类
*
*
* @author
* @since 2022-05-31
*/
@Service
public class DownloadOrderServiceImpl extends ServiceImpl implements IDownloadOrderService {
@Autowired
IExcelService excelService;
@Autowired
ISceneProService sceneProService;
@Autowired
IScenePlusService scenePlusService;
@Autowired
ICameraService cameraService;
@Override
public PageInfo pageList(OrderParam param) {
CacheUtil.orderParam = param;
return PageInfo.PageInfo(this.pageListByParam(param));
}
@Override
public Page pageListByParam(OrderParam orderParam) {
Page page = this.getBaseMapper().pageList(new Page<>(orderParam.getPageNum(), orderParam.getPageSize()), orderParam);
Set numList = page.getRecords().stream().map(DownOrderVo::getSceneNum).collect(Collectors.toSet());
HashMap snCodeMap = new HashMap<>();
if(numList.size() >0){
snCodeMap = sceneProService.getSnCodeByNumList(numList);
}
for (DownOrderVo record : page.getRecords()) {
if(StringUtils.isNotBlank(record.getSceneNum())){
record.setSnCode(snCodeMap.get(record.getSceneNum()));
}
record.setCreateTime(record.getTradeTime());
}
return page;
}
@Override
public void export(HttpServletRequest req, HttpServletResponse resp) {
OrderParam orderParam = CacheUtil.orderParam;
orderParam.setPageNum(1);
orderParam.setPageSize(5000);
Page page = this.pageListByParam(orderParam);
ExcelWriter excelWriter = null;
try {
excelWriter = EasyExcel.write(resp.getOutputStream(),DownOrderVo.class).build();
excelService.commonExport(req,resp,"下载订单",page.getRecords(),excelWriter);
while (page.hasNext()){
orderParam.setPageNum(orderParam.getPageNum()+1);
page = this.pageListByParam(orderParam);
if(page.getRecords().size() >0){
excelService.commonExport(req,resp,"下载订单",page.getRecords(),excelWriter);
}
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(excelWriter !=null){
excelWriter.finish();
}
}
}
}