package com.fdkankan.manage.service.impl; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.manage.constant.CameraOutTypeEnum; import com.fdkankan.manage.entity.Company; import com.fdkankan.manage.service.ICameraService; import com.fdkankan.manage.service.ICompanyService; import com.fdkankan.manage.service.IExcelService; import com.fdkankan.manage.util.ExcelUtil; import com.fdkankan.manage.vo.request.CameraInOutParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** *

* TODO *

* * @author dengsixing * @since 2022/6/6 **/ @Service public class ExcelServiceImpl implements IExcelService { @Autowired ICompanyService companyService; @Autowired ICameraService cameraService; public void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List result,ExcelWriter excelWriter) throws Exception { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = name + ".xlsx"; fileName = URLEncoder.encode(fileName, "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); WriteSheet writeSheet = EasyExcel.writerSheet(name).build(); excelWriter.write(result, writeSheet); } public void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List result,Class clazz) throws Exception { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = name + ".xlsx"; fileName = URLEncoder.encode(fileName, "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); ExcelWriter excelWriter = null; try { excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build(); WriteSheet writeSheet = EasyExcel.writerSheet(name).build(); excelWriter.write(result, writeSheet); }catch (Exception e){ e.printStackTrace(); }finally { if(excelWriter != null){ excelWriter.finish(); } } } @Override public Integer uploadExcel(MultipartFile file, Integer type) throws IOException { String originalFilename = file.getOriginalFilename(); assert originalFilename != null; String fileType=originalFilename.substring(originalFilename.lastIndexOf(".")+1); if (!fileType.equalsIgnoreCase("xls") && !fileType.equalsIgnoreCase("xlsx")) { throw new BusinessException(-1,"文件格式校验,需为excel文件;"); } List> excelRowList = ExcelUtil.getExcelRowList(file); List wifiNameList = new ArrayList<>(); List params = new ArrayList<>(); List companyParams = new ArrayList<>(); for (HashMap map : excelRowList) { if(type == 0){ //入库 String wifiName = map.get(0); wifiNameList.add(wifiName); }else if(type == 1){ //出库 String snCode = map.get(0); String outTypeString = map.get(1); String companyName = map.get(2); String orderSn = map.get(3); CameraOutTypeEnum outTypeEnum = CameraOutTypeEnum.getByMsg(outTypeString); if(outTypeEnum == null){ throw new BusinessException(-1,"出库类型错误:"+outTypeString); } int outType = outTypeEnum.getCode(); Company company = companyService.getCompanyByName(companyName); CameraInOutParam param = new CameraInOutParam(); param.setCompanyId(company.getId()); param.setOutType(outType); param.setOrderSn(orderSn); param.setSnCode(snCode); params.add(param); }else if(type == 2){ //关联客户 CameraInOutParam param = new CameraInOutParam(); param.setCompanyName(map.get(0)); param.setSnCode(map.get(1)); companyParams.add(param); } } if(wifiNameList.size() >0){ return cameraService.ins(wifiNameList); } if(params.size() >0){ return cameraService.outs(params); } if(companyParams.size() >0){ return cameraService.updateCompany(companyParams); } return 0; } }