ExcelServiceImpl.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package com.fdkankan.manage.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.alibaba.excel.EasyExcel;
  4. import com.alibaba.excel.ExcelWriter;
  5. import com.alibaba.excel.write.metadata.WriteSheet;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.fdkankan.common.exception.BusinessException;
  8. import com.fdkankan.common.util.DateExtUtil;
  9. import com.fdkankan.manage.constant.CameraOutTypeEnum;
  10. import com.fdkankan.manage.entity.Company;
  11. import com.fdkankan.manage.service.ICameraService;
  12. import com.fdkankan.manage.service.ICompanyService;
  13. import com.fdkankan.manage.service.IExcelService;
  14. import com.fdkankan.manage.service.IInvoiceService;
  15. import com.fdkankan.manage.util.ExcelUtil;
  16. import com.fdkankan.manage.vo.InvoicePageParamVO;
  17. import com.fdkankan.manage.vo.InvoiceVO;
  18. import com.fdkankan.manage.vo.request.CameraInOutParam;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.web.multipart.MultipartFile;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.io.IOException;
  25. import java.net.URLEncoder;
  26. import java.util.ArrayList;
  27. import java.util.Calendar;
  28. import java.util.HashMap;
  29. import java.util.List;
  30. /**
  31. * <p>
  32. * TODO
  33. * </p>
  34. *
  35. * @author dengsixing
  36. * @since 2022/6/6
  37. **/
  38. @Service
  39. public class ExcelServiceImpl implements IExcelService {
  40. @Autowired
  41. private IInvoiceService invoiceService;
  42. @Autowired
  43. ICompanyService companyService;
  44. @Autowired
  45. ICameraService cameraService;
  46. @Override
  47. public void exportInvoice(HttpServletRequest request, HttpServletResponse response, InvoicePageParamVO param)
  48. throws IOException {
  49. response.setContentType("application/vnd.ms-excel");
  50. response.setCharacterEncoding("utf-8");
  51. String fileName = "开票申请数据" + DateUtil.format(Calendar.getInstance().getTime(), DateExtUtil.dateStyle6) + ".xlsx";
  52. fileName = URLEncoder.encode(fileName, "UTF-8");
  53. response.setHeader("Content-disposition", "attachment;filename=" + fileName);
  54. try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), InvoiceVO.class).build()) {
  55. // 这里注意 如果同一个sheet只要创建一次
  56. WriteSheet writeSheet = EasyExcel.writerSheet("开票申请数据").build();
  57. // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来
  58. int pageNum = 1;
  59. param.setPageSize(5000);
  60. Page<InvoiceVO> invoiceVOPage;
  61. do {
  62. param.setPageNum(pageNum);
  63. invoiceVOPage = invoiceService.pageInvoice(param);
  64. excelWriter.write(invoiceVOPage.getRecords(), writeSheet);
  65. ++pageNum;
  66. }while (invoiceVOPage.hasNext());
  67. }
  68. }
  69. @Override
  70. public Integer uploadExcel(MultipartFile file, Integer type) throws IOException {
  71. String originalFilename = file.getOriginalFilename();
  72. assert originalFilename != null;
  73. String fileType=originalFilename.substring(originalFilename.lastIndexOf(".")+1);
  74. if (!fileType.equalsIgnoreCase("xls") && !fileType.equalsIgnoreCase("xlsx")) {
  75. throw new BusinessException(-1,"文件格式校验,需为excel文件;");
  76. }
  77. List<HashMap<Integer, String>> excelRowList = ExcelUtil.getExcelRowList(file);
  78. List<String> wifiNameList = new ArrayList<>();
  79. List<CameraInOutParam> params = new ArrayList<>();
  80. List<CameraInOutParam> companyParams = new ArrayList<>();
  81. for (HashMap<Integer, String> map : excelRowList) {
  82. if(type == 0){ //入库
  83. String wifiName = map.get(0);
  84. wifiNameList.add(wifiName);
  85. }else if(type == 1){ //出库
  86. String snCode = map.get(0);
  87. String outTypeString = map.get(1);
  88. String companyName = map.get(2);
  89. String orderSn = map.get(3);
  90. CameraOutTypeEnum outTypeEnum = CameraOutTypeEnum.getByMsg(outTypeString);
  91. if(outTypeEnum == null){
  92. throw new BusinessException(-1,"出库类型错误:"+outTypeString);
  93. }
  94. int outType = outTypeEnum.getCode();
  95. Company company = companyService.getCompanyByName(companyName);
  96. CameraInOutParam param = new CameraInOutParam();
  97. param.setCompanyId(company.getId());
  98. param.setOutType(outType);
  99. param.setOrderSn(orderSn);
  100. param.setSnCode(snCode);
  101. params.add(param);
  102. }else if(type == 2){ //关联客户
  103. CameraInOutParam param = new CameraInOutParam();
  104. param.setCompanyName(map.get(0));
  105. param.setSnCode(map.get(1));
  106. companyParams.add(param);
  107. }
  108. }
  109. if(wifiNameList.size() >0){
  110. return cameraService.ins(wifiNameList);
  111. }
  112. if(params.size() >0){
  113. return cameraService.outs(params);
  114. }
  115. if(companyParams.size() >0){
  116. return cameraService.updateCompany(companyParams);
  117. }
  118. return 0;
  119. }
  120. }