From 64620a1580271f117fe1dfce24c37e5c6562359e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=B5=A9?= Date: Wed, 29 Mar 2023 23:52:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=8F=91OTA=E5=A4=87=E6=A1=88?= =?UTF-8?q?=E5=B7=A5=E5=85=B7-=E8=BD=A6=E8=BE=86=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OtaBaSjSjmbclServiceImpl.java | 40 +++- .../com/jero/modules/ota/utils/CSVUtil.java | 198 ++++++++++++++++++ 2 files changed, 228 insertions(+), 10 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/CSVUtil.java diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjmbclServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjmbclServiceImpl.java index 0edcd6d15..52a54ee7c 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjmbclServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjmbclServiceImpl.java @@ -1,14 +1,21 @@ package com.jero.modules.ota.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.constant.enums.CutEnum; import com.jero.common.exception.JeroBootException; -import com.jero.modules.extRepo.entity.ERFTreeData; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; -import com.jero.modules.ota.entity.*; +import com.jero.modules.ota.entity.OtaBaCxTxjl; +import com.jero.modules.ota.entity.OtaBaSjSjmbcl; +import com.jero.modules.ota.entity.OtaBaSjSjmbcx; +import com.jero.modules.ota.entity.VinObj; import com.jero.modules.ota.enums.OtaModuleEnum; import com.jero.modules.ota.mapper.OtaBaSjSjmbclMapper; -import com.jero.modules.ota.service.*; +import com.jero.modules.ota.service.IOtaBaCxTxjlService; +import com.jero.modules.ota.service.IOtaBaSjSjmbclService; +import com.jero.modules.ota.service.IOtaBaSjSjmbcxService; +import com.jero.modules.ota.utils.CSVUtil; import com.jero.modules.ota.utils.ComparisonUtil; import com.jero.modules.ota.utils.ImportFileUtil; import com.jero.modules.system.service.ISysDictService; @@ -18,20 +25,16 @@ import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; -import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; - -import java.io.File; -import java.text.SimpleDateFormat; -import java.util.*; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.*; /** * @Description: 升级备案-升级目标车辆 @@ -219,6 +222,7 @@ public class OtaBaSjSjmbclServiceImpl extends ServiceImpl(); + Map vrow = null; + for (int i = 0; i < vinList.size(); i++) { + vrow = new LinkedHashMap(); + vrow.put("1", vinList.get(i).getVin()); + exportData.add(vrow); + } + String fileName = "VIN码.csv"; + File file = CSVUtil.createCSVFile(exportData, map, uploadPath + System.currentTimeMillis(), fileName); + String filePath = uploadPath + "/" + file.getName(); + OSSFile ossFile = ossFileService.uploadLocalOfCos(ImportFileUtil.createMfileByFile(file), "/ota", "", CutEnum.CN.getValue()); + mbcl.setCsv(ossFile.getId()); } } return mbcl; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/CSVUtil.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/CSVUtil.java new file mode 100644 index 000000000..423f532ad --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/CSVUtil.java @@ -0,0 +1,198 @@ +package com.jero.modules.ota.utils; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.beanutils.BeanUtils; + +/** + * 文件操作 + */ +public class CSVUtil { + + /** + * 生成为CVS文件 + * + * @param exportData 源数据List + * @param map csv文件的列表头map + * @param outPutPath 文件路径 + * @param fileName 文件名称 + * @return + */ + @SuppressWarnings("rawtypes") + public static File createCSVFile(List exportData, LinkedHashMap map, + String outPutPath, String fileName) { + File csvFile = null; + BufferedWriter csvFileOutputStream = null; + try { + // 定义文件名格式并创建 + File file = new File(outPutPath); + if (!file.exists()) { + file.mkdir(); + } + csvFile = new File(outPutPath + "/" + fileName); + System.out.println("csvFile:" + csvFile); + // UTF-8使正确读取分隔符"," + csvFileOutputStream = new BufferedWriter( + new OutputStreamWriter( + new FileOutputStream(csvFile), "UTF-8"), 1024); + System.out.println("csvFileOutputStream:" + csvFileOutputStream); + // 写入文件头部 + for (Iterator propertyIterator = map.entrySet().iterator(); + propertyIterator.hasNext(); ) { + java.util.Map.Entry propertyEntry = + (java.util.Map.Entry) propertyIterator.next(); + csvFileOutputStream.write( + "" + (String) propertyEntry.getValue() != null ? + (String) propertyEntry.getValue() : "" + ""); + if (propertyIterator.hasNext()) { + csvFileOutputStream.write(","); + } + } + csvFileOutputStream.newLine(); + // 写入文件内容 + for (Iterator iterator = exportData.iterator(); iterator.hasNext(); ) { + Object row = (Object) iterator.next(); + for (Iterator propertyIterator = map.entrySet().iterator(); + propertyIterator.hasNext(); ) { + java.util.Map.Entry propertyEntry = + (java.util.Map.Entry) propertyIterator.next(); + csvFileOutputStream.write((String) BeanUtils.getProperty( + row, (String) propertyEntry.getKey())); + if (propertyIterator.hasNext()) { + csvFileOutputStream.write(","); + } + } + if (iterator.hasNext()) { + csvFileOutputStream.newLine(); + } + } + csvFileOutputStream.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + csvFileOutputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return csvFile; + } + + /** + * 下载文件 + * + * @param response + * @param csvFilePath 文件路径 + * @param fileName 文件名称 + * @throws IOException + */ + public static void exportFile(HttpServletResponse response, + String csvFilePath, String fileName) + throws IOException { + response.setContentType("application/csv;charset=UTF-8"); + response.setHeader("Content-Disposition", "attachment; filename=" + + URLEncoder.encode(fileName, "UTF-8")); + + InputStream in = null; + try { + in = new FileInputStream(csvFilePath); + int len = 0; + byte[] buffer = new byte[1024]; + response.setCharacterEncoding("UTF-8"); + OutputStream out = response.getOutputStream(); + while ((len = in.read(buffer)) > 0) { + out.write(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF}); + out.write(buffer, 0, len); + } + } catch (FileNotFoundException e) { + System.out.println(e); + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + } + + /** + * 删除该目录filePath下的所有文件 + * + * @param filePath 文件目录路径 + */ + public static void deleteFiles(String filePath) { + File file = new File(filePath); + if (file.exists()) { + File[] files = file.listFiles(); + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + files[i].delete(); + } + } + } + } + + /** + * 删除单个文件 + * + * @param filePath 文件目录路径 + * @param fileName 文件名称 + */ + public static void deleteFile(String filePath, String fileName) { + File file = new File(filePath); + if (file.exists()) { + File[] files = file.listFiles(); + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + if (files[i].getName().equals(fileName)) { + files[i].delete(); + return; + } + } + } + } + } + + /** + * 测试数据 + * + * @param args + */ + @SuppressWarnings({"rawtypes", "unchecked"}) + public static void main(String[] args) { + List exportData = new ArrayList(); + Map row1 = new LinkedHashMap(); + row1.put("1", "11"); + exportData.add(row1); + row1 = new LinkedHashMap(); + row1.put("1", "21"); + exportData.add(row1); + LinkedHashMap map = new LinkedHashMap(); + map.put("1", "第一列"); + + String path = "c:/export/"; + String fileName = "文件导出"; + File file = CSVUtil.createCSVFile(exportData, map, path, fileName); + String fileName2 = file.getName(); + System.out.println("文件名称:" + fileName2); + } +}