ExcelServiceImpl.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.fdkankan.manage.service.impl;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.excel.ExcelWriter;
  4. import com.alibaba.excel.write.metadata.WriteSheet;
  5. import com.fdkankan.common.exception.BusinessException;
  6. import com.fdkankan.manage.constant.CameraOutTypeEnum;
  7. import com.fdkankan.manage.entity.Company;
  8. import com.fdkankan.manage.service.ICameraService;
  9. import com.fdkankan.manage.service.ICompanyService;
  10. import com.fdkankan.manage.service.IExcelService;
  11. import com.fdkankan.manage.util.ExcelUtil;
  12. import com.fdkankan.manage.vo.request.CameraInOutParam;
  13. import org.apache.commons.lang3.StringUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import javax.servlet.http.HttpServletRequest;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.io.IOException;
  20. import java.net.URLEncoder;
  21. import java.util.ArrayList;
  22. import java.util.HashMap;
  23. import java.util.List;
  24. /**
  25. * <p>
  26. * TODO
  27. * </p>
  28. *
  29. * @author dengsixing
  30. * @since 2022/6/6
  31. **/
  32. @Service
  33. public class ExcelServiceImpl implements IExcelService {
  34. @Autowired
  35. ICompanyService companyService;
  36. @Autowired
  37. ICameraService cameraService;
  38. public void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List<?> result,ExcelWriter excelWriter) throws Exception {
  39. response.setContentType("application/vnd.ms-excel");
  40. response.setCharacterEncoding("utf-8");
  41. String fileName = name + ".xlsx";
  42. fileName = URLEncoder.encode(fileName, "UTF-8");
  43. response.setHeader("Content-disposition", "attachment;filename=" + fileName);
  44. WriteSheet writeSheet = EasyExcel.writerSheet(name).build();
  45. excelWriter.write(result, writeSheet);
  46. }
  47. public void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List<?> result,Class<?> clazz) throws Exception {
  48. response.setContentType("application/vnd.ms-excel");
  49. response.setCharacterEncoding("utf-8");
  50. String fileName = name + ".xlsx";
  51. fileName = URLEncoder.encode(fileName, "UTF-8");
  52. response.setHeader("Content-disposition", "attachment;filename=" + fileName);
  53. ExcelWriter excelWriter = null;
  54. try {
  55. excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build();
  56. WriteSheet writeSheet = EasyExcel.writerSheet(name).build();
  57. excelWriter.write(result, writeSheet);
  58. }catch (Exception e){
  59. e.printStackTrace();
  60. }finally {
  61. if(excelWriter != null){
  62. excelWriter.finish();
  63. }
  64. }
  65. }
  66. @Override
  67. public Integer uploadExcel(MultipartFile file, Integer type) {
  68. String originalFilename = file.getOriginalFilename();
  69. assert originalFilename != null;
  70. String fileType=originalFilename.substring(originalFilename.lastIndexOf(".")+1);
  71. if (!fileType.equalsIgnoreCase("xlsx")) {
  72. throw new BusinessException(50001,"文件格式校验,需为xlsx文件;");
  73. }
  74. List<HashMap<Integer, String>> excelRowList = new ArrayList<>();
  75. try {
  76. excelRowList = ExcelUtil.getExcelRowList(file);
  77. }catch (Exception e){
  78. e.printStackTrace();
  79. throw new BusinessException(50002,"模板错误");
  80. }
  81. List<String> wifiNameList = new ArrayList<>();
  82. List<CameraInOutParam> params = new ArrayList<>();
  83. List<CameraInOutParam> companyParams = new ArrayList<>();
  84. for (HashMap<Integer, String> map : excelRowList) {
  85. if(type == 0){ //入库
  86. String wifiName = map.get(0);
  87. wifiNameList.add(wifiName);
  88. }else if(type == 1){ //出库
  89. String snCode = map.get(0);
  90. String outTypeString = map.get(1);
  91. String companyName = map.get(2);
  92. String orderSn = map.get(3);
  93. CameraOutTypeEnum outTypeEnum = CameraOutTypeEnum.getByMsg(outTypeString);
  94. if(outTypeEnum == null){
  95. throw new BusinessException(50003,"出库类型错误:"+outTypeString);
  96. }
  97. int outType = outTypeEnum.getCode();
  98. CameraInOutParam param = new CameraInOutParam();
  99. param.setCompanyName(companyName);
  100. param.setOutType(outType);
  101. param.setOrderSn(orderSn);
  102. param.setSnCode(snCode);
  103. params.add(param);
  104. }else if(type == 2){ //关联客户
  105. CameraInOutParam param = new CameraInOutParam();
  106. param.setCompanyName(map.get(0));
  107. param.setSnCode(map.get(1));
  108. companyParams.add(param);
  109. }
  110. }
  111. if(type == 0 && wifiNameList.size() <=0){
  112. throw new BusinessException(50004,"入库模板数据为空");
  113. }else if(type == 1 && params.size() <=0){
  114. throw new BusinessException(50005,"出库模板数据为空");
  115. }else if(type == 2 && companyParams.size() <=0){
  116. throw new BusinessException(50006,"客户关联数据为空");
  117. }
  118. if(wifiNameList.size() >0){
  119. return cameraService.ins(wifiNameList);
  120. }
  121. if(params.size() >0){
  122. return cameraService.outs(params);
  123. }
  124. if(companyParams.size() >0){
  125. return cameraService.updateCompany(companyParams);
  126. }
  127. return 0;
  128. }
  129. }