开发OTA备案工具-导入导出
This commit is contained in:
+1
-1
@@ -443,7 +443,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
|||||||
@Override
|
@Override
|
||||||
public String queryDictItemByValue(String code, String itemValue, String cut) {
|
public String queryDictItemByValue(String code, String itemValue, String cut) {
|
||||||
|
|
||||||
String dictItemValue= sysDictMapper.queryDictTextByKey(code,itemValue);
|
String dictItemValue= sysDictMapper.queryDictKeyByText(code,itemValue);
|
||||||
return dictItemValue;
|
return dictItemValue;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+22
@@ -18,6 +18,7 @@ import com.jero.common.system.base.controller.JeroController;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
@@ -182,4 +183,25 @@ public class OtaBaCxJbxxController extends JeroController<OtaBaCxJbxx, IOtaBaCxJ
|
|||||||
return super.importExcel(request, response, OtaBaCxJbxx.class);
|
return super.importExcel(request, response, OtaBaCxJbxx.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "车型备案-车型基本信息-模板下载")
|
||||||
|
@GetMapping(value = "/exportTemplate")
|
||||||
|
// @RequiresPermissions("otaBaCx:exportTemplate")
|
||||||
|
public void exportTemplate(HttpServletResponse response, HttpServletRequest request) throws Exception {
|
||||||
|
this.otaBaCxJbxxService.exportTemplate(response, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "车型备案-车型基本信息-数据导入")
|
||||||
|
@PostMapping(value = "/importData")
|
||||||
|
// @RequiresPermissions("otaBaCx:importData")
|
||||||
|
public Result<?> importData(@RequestParam(value = "file", required = false) MultipartFile file,
|
||||||
|
@RequestParam(value = "cut", required = false) String cut) throws Exception {
|
||||||
|
try {
|
||||||
|
this.otaBaCxJbxxService.importData(file, cut);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
}
|
||||||
|
return Result.OK("导入成功");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -189,7 +189,6 @@ public class OtaBaCxListController extends JeroController<OtaBaCxList, IOtaBaCxL
|
|||||||
return Result.OK("备案维护成功!");
|
return Result.OK("备案维护成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@AutoLog(value = "车型及功能备案列表-模板下载")
|
|
||||||
@ApiOperation(value = "车型及功能备案列表-模板下载")
|
@ApiOperation(value = "车型及功能备案列表-模板下载")
|
||||||
@GetMapping(value = "/exportTemplate")
|
@GetMapping(value = "/exportTemplate")
|
||||||
// @RequiresPermissions("otaBaCx:exportTemplate")
|
// @RequiresPermissions("otaBaCx:exportTemplate")
|
||||||
@@ -197,7 +196,6 @@ public class OtaBaCxListController extends JeroController<OtaBaCxList, IOtaBaCxL
|
|||||||
this.otaBaCxListService.exportTemplate(response, request);
|
this.otaBaCxListService.exportTemplate(response, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@AutoLog(value = "车型及功能备案列表-数据导入")
|
|
||||||
@ApiOperation(value = "车型及功能备案列表-数据导入")
|
@ApiOperation(value = "车型及功能备案列表-数据导入")
|
||||||
@PostMapping(value = "/importData")
|
@PostMapping(value = "/importData")
|
||||||
// @RequiresPermissions("otaBaCx:importData")
|
// @RequiresPermissions("otaBaCx:importData")
|
||||||
@@ -212,7 +210,6 @@ public class OtaBaCxListController extends JeroController<OtaBaCxList, IOtaBaCxL
|
|||||||
return Result.OK("导入成功");
|
return Result.OK("导入成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
@AutoLog(value = "车型及功能备案列表-数据导出")
|
|
||||||
@ApiOperation(value = "车型及功能备案列表-数据导出")
|
@ApiOperation(value = "车型及功能备案列表-数据导出")
|
||||||
@GetMapping(value = "/exportData")
|
@GetMapping(value = "/exportData")
|
||||||
// @RequiresPermissions("otaBaCx:exportTemplate")
|
// @RequiresPermissions("otaBaCx:exportTemplate")
|
||||||
|
|||||||
+8
@@ -2,6 +2,10 @@ package com.jero.modules.ota.service;
|
|||||||
|
|
||||||
import com.jero.modules.ota.entity.OtaBaCxJbxx;
|
import com.jero.modules.ota.entity.OtaBaCxJbxx;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,4 +64,8 @@ public interface IOtaBaCxJbxxService extends IService<OtaBaCxJbxx> {
|
|||||||
List<OtaBaCxJbxx> queryList();
|
List<OtaBaCxJbxx> queryList();
|
||||||
|
|
||||||
OtaBaCxJbxx queryByOtaId(String otaId, String otaIdT);
|
OtaBaCxJbxx queryByOtaId(String otaId, String otaIdT);
|
||||||
|
|
||||||
|
void exportTemplate(HttpServletResponse response, HttpServletRequest request);
|
||||||
|
|
||||||
|
void importData(MultipartFile file, String cut);
|
||||||
}
|
}
|
||||||
|
|||||||
+84
@@ -1,5 +1,6 @@
|
|||||||
package com.jero.modules.ota.service.impl;
|
package com.jero.modules.ota.service.impl;
|
||||||
|
|
||||||
|
import com.aliyuncs.utils.IOUtils;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.jero.modules.ota.entity.OtaBaCxJbxx;
|
import com.jero.modules.ota.entity.OtaBaCxJbxx;
|
||||||
@@ -11,12 +12,21 @@ import com.jero.modules.ota.service.IOtaBaCxJbxxService;
|
|||||||
import com.jero.modules.ota.service.IOtaBaCxListService;
|
import com.jero.modules.ota.service.IOtaBaCxListService;
|
||||||
import com.jero.modules.ota.service.IOtaBaCxTxjlService;
|
import com.jero.modules.ota.service.IOtaBaCxTxjlService;
|
||||||
import com.jero.modules.ota.utils.ComparisonUtil;
|
import com.jero.modules.ota.utils.ComparisonUtil;
|
||||||
|
import com.jero.modules.ota.utils.ImportFileUtil;
|
||||||
import com.jero.modules.system.service.ISysDictService;
|
import com.jero.modules.system.service.ISysDictService;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
|
import org.apache.poi.ss.usermodel.*;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.*;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -39,6 +49,12 @@ public class OtaBaCxJbxxServiceImpl extends ServiceImpl<OtaBaCxJbxxMapper, OtaBa
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ISysDictService sysDictService;
|
private ISysDictService sysDictService;
|
||||||
|
|
||||||
|
@Value(value = "${ota.templatePath}")
|
||||||
|
private String templatePath;
|
||||||
|
|
||||||
|
@Value(value = "${ota.uploadPath}")
|
||||||
|
private String uploadPath;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
*
|
*
|
||||||
@@ -143,4 +159,72 @@ public class OtaBaCxJbxxServiceImpl extends ServiceImpl<OtaBaCxJbxxMapper, OtaBa
|
|||||||
queryWrapper.eq(OtaBaCxJbxx::getOtaId, otaId);
|
queryWrapper.eq(OtaBaCxJbxx::getOtaId, otaId);
|
||||||
return this.getOne(queryWrapper, false);
|
return this.getOne(queryWrapper, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exportTemplate(HttpServletResponse response, HttpServletRequest request) {
|
||||||
|
ImportFileUtil.exportTemplate(response, templatePath + "车型基本信息.xlsx");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void importData(MultipartFile file, String cut) {
|
||||||
|
File upLoadFile = ImportFileUtil.importFile(file, cut, uploadPath, "xlsx");
|
||||||
|
OtaBaCxJbxx jbxx = parseFile(upLoadFile, cut);
|
||||||
|
add(jbxx);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCellValue(Cell cell, Workbook workbook) {
|
||||||
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
||||||
|
DataFormatter formatter = new DataFormatter();
|
||||||
|
//单元格不设置数字格式
|
||||||
|
cell.setCellStyle(null);
|
||||||
|
return formatter.formatCellValue(cell, evaluator);
|
||||||
|
}
|
||||||
|
|
||||||
|
private OtaBaCxJbxx parseFile(File file, String cut) {
|
||||||
|
OtaBaCxJbxx jbxx = new OtaBaCxJbxx();
|
||||||
|
try {
|
||||||
|
Workbook wb = ImportFileUtil.readExcel(file);
|
||||||
|
Sheet s = wb.getSheetAt(0);
|
||||||
|
|
||||||
|
Row row = s.getRow(1);
|
||||||
|
Cell cell = row.getCell(1);
|
||||||
|
jbxx.setQymc(getCellValue(cell, wb));
|
||||||
|
|
||||||
|
row = s.getRow(2);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setDjbh(getCellValue(cell, wb));
|
||||||
|
row = s.getRow(3);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setCplb(getCellValue(cell, wb));
|
||||||
|
row = s.getRow(4);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setGgpc(getCellValue(cell, wb));
|
||||||
|
row = s.getRow(5);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setCpsb(getCellValue(cell, wb));
|
||||||
|
row = s.getRow(6);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setCpmc(getCellValue(cell, wb));
|
||||||
|
row = s.getRow(7);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setCpxh(getCellValue(cell, wb));
|
||||||
|
row = s.getRow(8);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setDllx1(getCellValue(cell, wb));
|
||||||
|
row = s.getRow(9);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setDllx2(getCellValue(cell, wb));
|
||||||
|
row = s.getRow(10);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setTxzd(sysDictService.queryDictItemByValue("communication_terminal", getCellValue(cell, wb), cut));
|
||||||
|
row = s.getRow(11);
|
||||||
|
cell = row.getCell(1);
|
||||||
|
jbxx.setCdotasj(getCellValue(cell, wb));
|
||||||
|
} catch (IndexOutOfBoundsException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return jbxx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-90
@@ -9,6 +9,7 @@ import com.jero.modules.ota.entity.OtaBaCxLsjl;
|
|||||||
import com.jero.modules.ota.mapper.OtaBaCxListMapper;
|
import com.jero.modules.ota.mapper.OtaBaCxListMapper;
|
||||||
import com.jero.modules.ota.service.IOtaBaCxListService;
|
import com.jero.modules.ota.service.IOtaBaCxListService;
|
||||||
import com.jero.modules.ota.service.IOtaBaCxLsjlService;
|
import com.jero.modules.ota.service.IOtaBaCxLsjlService;
|
||||||
|
import com.jero.modules.ota.utils.ImportFileUtil;
|
||||||
import com.jero.modules.split.common.FileUnZip;
|
import com.jero.modules.split.common.FileUnZip;
|
||||||
import com.jero.modules.system.util.StringUtils;
|
import com.jero.modules.system.util.StringUtils;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
@@ -44,8 +45,11 @@ public class OtaBaCxListServiceImpl extends ServiceImpl<OtaBaCxListMapper, OtaBa
|
|||||||
private IOtaBaCxLsjlService otaBaCxLsjlService;
|
private IOtaBaCxLsjlService otaBaCxLsjlService;
|
||||||
|
|
||||||
|
|
||||||
@Value(value = "${jero.path.upload}")
|
@Value(value = "${ota.templatePath}")
|
||||||
private String uploadpath;
|
private String templatePath;
|
||||||
|
|
||||||
|
@Value(value = "${ota.uploadPath}")
|
||||||
|
private String uploadPath;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
@@ -146,99 +150,13 @@ public class OtaBaCxListServiceImpl extends ServiceImpl<OtaBaCxListMapper, OtaBa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exportTemplate(HttpServletResponse response, HttpServletRequest request) {
|
public void exportTemplate(HttpServletResponse response, HttpServletRequest request) {
|
||||||
File template = new File("D://opt//ota//车型及功能备案.zip");
|
ImportFileUtil.exportTemplate(response, templatePath + "车型及功能备案.zip");
|
||||||
BufferedOutputStream os = null;
|
|
||||||
InputStream in = null;
|
|
||||||
try {
|
|
||||||
in = new FileInputStream(template);
|
|
||||||
response.setHeader("Content-disposition", "attachment;filename=" + template.getName());
|
|
||||||
response.setContentType("application/octet-stream;charset=UTF-8");
|
|
||||||
os = new BufferedOutputStream(response.getOutputStream());
|
|
||||||
int len;
|
|
||||||
while ((len = in.read()) != -1) {
|
|
||||||
os.write(len);
|
|
||||||
os.flush();
|
|
||||||
}
|
|
||||||
in.close();
|
|
||||||
os.close();
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new JeroBootException("下载文件失败,请重试");
|
|
||||||
} finally {
|
|
||||||
IOUtils.closeQuietly(in);
|
|
||||||
IOUtils.closeQuietly(os);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void importData(MultipartFile file, String cut) {
|
public void importData(MultipartFile file, String cut) {
|
||||||
try {
|
List<File> fileList =ImportFileUtil.importZip(file,cut,uploadPath);
|
||||||
int pos = file.getOriginalFilename().lastIndexOf(".");
|
|
||||||
String str = file.getOriginalFilename().substring(pos + 1).toLowerCase();
|
|
||||||
String filenameorg = file.getOriginalFilename().substring(0, pos);
|
|
||||||
//判断上传文件必须是zip
|
|
||||||
if (!str.equals("zip") && !str.equals("rar")) {
|
|
||||||
if (CutEnum.CN.getValue().equals(cut)) {
|
|
||||||
throw new JeroBootException("请上传zip格式的文件或rar格式的文件");
|
|
||||||
} else {
|
|
||||||
throw new JeroBootException("Please upload a zip file or rar file");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String path = uploadpath + File.separator + "modal" + File.separator + filenameorg + System.currentTimeMillis();
|
|
||||||
File saveDirectory = new File(path);
|
|
||||||
if (!saveDirectory.isDirectory()) {
|
|
||||||
saveDirectory.mkdir();
|
|
||||||
}
|
|
||||||
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + File.separator + file.getOriginalFilename()));
|
|
||||||
|
|
||||||
//解压缩
|
|
||||||
String zipEntryName = "";
|
|
||||||
if (str.equals("zip")) {
|
|
||||||
zipEntryName = FileUnZip.unZipFiles(path + File.separator + file.getOriginalFilename(), path);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// zipEntryName = FileRarUtils.rarUnCompress(path + File.separator + file.getOriginalFilename(), path);
|
|
||||||
}
|
|
||||||
//判断压缩包下是否只有一个文件夹
|
|
||||||
File fileTemp = new File(path);
|
|
||||||
int length = fileTemp.listFiles().length;
|
|
||||||
if (length > 2) {
|
|
||||||
//删除原上传文件
|
|
||||||
FileUnZip.deleteDir(saveDirectory);
|
|
||||||
if (CutEnum.CN.getValue().equals(cut)) {
|
|
||||||
throw new JeroBootException("压缩包中必须有且仅有一个文件夹,请重新上传");
|
|
||||||
} else {
|
|
||||||
throw new JeroBootException("There must be only one folder in the compressed package Please upload it again");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
File fileNew = new File(zipEntryName);
|
|
||||||
List<File> fileList = new ArrayList<>();
|
|
||||||
for (File file1 : fileNew.listFiles()) {
|
|
||||||
log.error("压缩包中的文件:" + file1.getName());
|
|
||||||
if (file1.getName().contains(".xls") || file1.getName().contains(".xlsx")) {
|
|
||||||
fileList.add(file1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (fileList.size() == 0) {
|
|
||||||
//删除原上传文件
|
|
||||||
FileUnZip.deleteDir(saveDirectory);
|
|
||||||
if (CutEnum.CN.getValue().equals(cut)) {
|
|
||||||
throw new JeroBootException("压缩包根目录下没有excel作为导入数据,请重新上传");
|
|
||||||
} else {
|
|
||||||
throw new JeroBootException("Excel does not exist in the root directory of the compressed package Please upload it again");
|
|
||||||
}
|
|
||||||
} else if (fileList.size() > 1) {
|
|
||||||
//删除原上传文件
|
|
||||||
FileUnZip.deleteDir(saveDirectory);
|
|
||||||
if (CutEnum.CN.getValue().equals(cut)) {
|
|
||||||
throw new JeroBootException("压缩包根目录下仅能存在一个excel为导入数据,请重新上传");
|
|
||||||
} else {
|
|
||||||
throw new JeroBootException("Only one Excel file can be imported in the compressed package root directory. Please upload data again");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+169
@@ -0,0 +1,169 @@
|
|||||||
|
package com.jero.modules.ota.utils;
|
||||||
|
|
||||||
|
import com.aliyuncs.utils.IOUtils;
|
||||||
|
import com.jero.common.constant.enums.CutEnum;
|
||||||
|
import com.jero.common.exception.JeroBootException;
|
||||||
|
import com.jero.modules.split.common.FileUnZip;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
|
import org.apache.poi.ss.usermodel.CellType;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ImportFileUtil {
|
||||||
|
|
||||||
|
public static File importFile(MultipartFile file, String cut, String uploadPath, String upLoadFileExt) {
|
||||||
|
File upLoadFile = null;
|
||||||
|
try {
|
||||||
|
int pos = file.getOriginalFilename().lastIndexOf(".");
|
||||||
|
String str = file.getOriginalFilename().substring(pos + 1).toLowerCase();
|
||||||
|
String fileNameOrg = file.getOriginalFilename().substring(0, pos);
|
||||||
|
//判断上传文件必须是
|
||||||
|
if (!str.equals(upLoadFileExt)) {
|
||||||
|
if (CutEnum.CN.getValue().equals(cut)) {
|
||||||
|
throw new JeroBootException("请上传" + upLoadFileExt + "格式的文件");
|
||||||
|
} else {
|
||||||
|
throw new JeroBootException("Please upload a " + upLoadFileExt + " file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String path = uploadPath + File.separator + "modal" + File.separator + fileNameOrg + System.currentTimeMillis();
|
||||||
|
File saveDirectory = new File(path);
|
||||||
|
if (!saveDirectory.isDirectory()) {
|
||||||
|
saveDirectory.mkdir();
|
||||||
|
}
|
||||||
|
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + File.separator + file.getOriginalFilename()));
|
||||||
|
upLoadFile = new File(path + File.separator + file.getOriginalFilename());
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return upLoadFile;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<File> importZip(MultipartFile file, String cut, String uploadPath) {
|
||||||
|
List<File> fileList = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
int pos = file.getOriginalFilename().lastIndexOf(".");
|
||||||
|
String str = file.getOriginalFilename().substring(pos + 1).toLowerCase();
|
||||||
|
String filenameorg = file.getOriginalFilename().substring(0, pos);
|
||||||
|
//判断上传文件必须是zip
|
||||||
|
if (!str.equals("zip") && !str.equals("rar")) {
|
||||||
|
if (CutEnum.CN.getValue().equals(cut)) {
|
||||||
|
throw new JeroBootException("请上传zip格式的文件或rar格式的文件");
|
||||||
|
} else {
|
||||||
|
throw new JeroBootException("Please upload a zip file or rar file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String path = uploadPath + File.separator + "modal" + File.separator + filenameorg + System.currentTimeMillis();
|
||||||
|
File saveDirectory = new File(path);
|
||||||
|
if (!saveDirectory.isDirectory()) {
|
||||||
|
saveDirectory.mkdir();
|
||||||
|
}
|
||||||
|
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + File.separator + file.getOriginalFilename()));
|
||||||
|
|
||||||
|
//解压缩
|
||||||
|
String zipEntryName = "";
|
||||||
|
if (str.equals("zip") || str.equals("rar")) {
|
||||||
|
zipEntryName = FileUnZip.unZipFiles(path + File.separator + file.getOriginalFilename(), path);
|
||||||
|
} else {
|
||||||
|
// zipEntryName = FileRarUtils.rarUnCompress(path + File.separator + file.getOriginalFilename(), path);
|
||||||
|
}
|
||||||
|
//判断压缩包下是否只有一个文件夹
|
||||||
|
// File fileTemp = new File(path);
|
||||||
|
// int length = fileTemp.listFiles().length;
|
||||||
|
// if (length > 2) {
|
||||||
|
// //删除原上传文件
|
||||||
|
// FileUnZip.deleteDir(saveDirectory);
|
||||||
|
// if (CutEnum.CN.getValue().equals(cut)) {
|
||||||
|
// throw new JeroBootException("压缩包中必须有且仅有一个文件夹,请重新上传");
|
||||||
|
// } else {
|
||||||
|
// throw new JeroBootException("There must be only one folder in the compressed package Please upload it again");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
File fileNew = new File(zipEntryName);
|
||||||
|
for (File file1 : fileNew.listFiles()) {
|
||||||
|
if (file1.getName().contains(".xls") || file1.getName().contains(".xlsx") || file1.isDirectory()
|
||||||
|
|| file1.getName().contains(".docx") || file1.getName().contains(".doc")) {
|
||||||
|
fileList.add(file1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if (fileList.size() == 0) {
|
||||||
|
// //删除原上传文件
|
||||||
|
// FileUnZip.deleteDir(saveDirectory);
|
||||||
|
// if (CutEnum.CN.getValue().equals(cut)) {
|
||||||
|
// throw new JeroBootException("压缩包根目录下没有excel作为导入数据,请重新上传");
|
||||||
|
// } else {
|
||||||
|
// throw new JeroBootException("Excel does not exist in the root directory of the compressed package Please upload it again");
|
||||||
|
// }
|
||||||
|
// } else if (fileList.size() > 1) {
|
||||||
|
// //删除原上传文件
|
||||||
|
// FileUnZip.deleteDir(saveDirectory);
|
||||||
|
// if (CutEnum.CN.getValue().equals(cut)) {
|
||||||
|
// throw new JeroBootException("压缩包根目录下仅能存在一个excel为导入数据,请重新上传");
|
||||||
|
// } else {
|
||||||
|
// throw new JeroBootException("Only one Excel file can be imported in the compressed package root directory. Please upload data again");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return fileList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void exportTemplate(HttpServletResponse response, String templateFilePath) {
|
||||||
|
File template = new File(templateFilePath);
|
||||||
|
BufferedOutputStream os = null;
|
||||||
|
InputStream in = null;
|
||||||
|
try {
|
||||||
|
in = new FileInputStream(template);
|
||||||
|
response.setHeader("Content-disposition", "attachment;filename=" + template.getName());
|
||||||
|
response.setContentType("application/octet-stream;charset=UTF-8");
|
||||||
|
os = new BufferedOutputStream(response.getOutputStream());
|
||||||
|
int len;
|
||||||
|
while ((len = in.read()) != -1) {
|
||||||
|
os.write(len);
|
||||||
|
os.flush();
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
os.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new JeroBootException("下载文件失败,请重试");
|
||||||
|
} finally {
|
||||||
|
IOUtils.closeQuietly(in);
|
||||||
|
IOUtils.closeQuietly(os);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Workbook readExcel(File file) {
|
||||||
|
Workbook wb = null;
|
||||||
|
if (file == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String extString = file.getName().substring(file.getName().lastIndexOf("."));
|
||||||
|
InputStream is = null;
|
||||||
|
try {
|
||||||
|
is = new FileInputStream(file);
|
||||||
|
if (".xls".equals(extString)) {
|
||||||
|
return wb = new HSSFWorkbook(is);
|
||||||
|
} else if (".xlsx".equals(extString)) {
|
||||||
|
return wb = new XSSFWorkbook(is);
|
||||||
|
}
|
||||||
|
is.close();
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
IOUtils.closeQuietly(is);
|
||||||
|
}
|
||||||
|
return wb;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -475,3 +475,8 @@ Space:
|
|||||||
# appSecret: d3bf6e69-0726-42ee-91bd-0441a8f6ccdf
|
# appSecret: d3bf6e69-0726-42ee-91bd-0441a8f6ccdf
|
||||||
# domainUrl: https://api-plm-portal.nioint.com/api/v1/plm-portal-middle-integration/integration/api/common/queryModelByModule
|
# domainUrl: https://api-plm-portal.nioint.com/api/v1/plm-portal-middle-integration/integration/api/common/queryModelByModule
|
||||||
|
|
||||||
|
ota :
|
||||||
|
#OTA 模版下载路径
|
||||||
|
templatePath: D://opt//ota//template//
|
||||||
|
uploadPath: D://opt//ota//upload//
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user