OTA-硬件版本生成word文件。
This commit is contained in:
+75
-1
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
|
import com.jero.modules.oss.entity.OSSFile;
|
||||||
import com.jero.modules.oss.service.IOSSFileService;
|
import com.jero.modules.oss.service.IOSSFileService;
|
||||||
import com.jero.modules.ota.entity.*;
|
import com.jero.modules.ota.entity.*;
|
||||||
import com.jero.modules.ota.enums.OtaModuleEnum;
|
import com.jero.modules.ota.enums.OtaModuleEnum;
|
||||||
@@ -13,21 +14,29 @@ import com.jero.modules.ota.mapper.OtaBaSjSjxtbhMapper;
|
|||||||
import com.jero.modules.ota.service.IOtaBaCxTxjlService;
|
import com.jero.modules.ota.service.IOtaBaCxTxjlService;
|
||||||
import com.jero.modules.ota.service.IOtaBaSjGnxtwhService;
|
import com.jero.modules.ota.service.IOtaBaSjGnxtwhService;
|
||||||
import com.jero.modules.ota.service.IOtaBaSjSjxtbhService;
|
import com.jero.modules.ota.service.IOtaBaSjSjxtbhService;
|
||||||
|
import com.jero.modules.ota.service.IOtaBaSjSjyxpgService;
|
||||||
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.ota.utils.ImportFileUtil;
|
||||||
|
import com.jero.modules.project.util.WordUtil;
|
||||||
|
import com.jero.modules.split.common.FileUnZip;
|
||||||
import com.jero.modules.system.service.ISysDictService;
|
import com.jero.modules.system.service.ISysDictService;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
|
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
|
||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.mock.web.MockMultipartFile;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -61,6 +70,9 @@ public class OtaBaSjSjxtbhServiceImpl extends ServiceImpl<OtaBaSjSjxtbhMapper, O
|
|||||||
@Value(value = "${ota.uploadPath}")
|
@Value(value = "${ota.uploadPath}")
|
||||||
private String uploadPath;
|
private String uploadPath;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IOtaBaSjSjyxpgService otaBaSjSjyxpgService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
*/
|
*/
|
||||||
@@ -236,6 +248,21 @@ public class OtaBaSjSjxtbhServiceImpl extends ServiceImpl<OtaBaSjSjxtbhMapper, O
|
|||||||
Workbook wb = ImportFileUtil.readExcel(upFile);
|
Workbook wb = ImportFileUtil.readExcel(upFile);
|
||||||
Sheet s = wb.getSheetAt(0);
|
Sheet s = wb.getSheetAt(0);
|
||||||
int rows = s.getPhysicalNumberOfRows();
|
int rows = s.getPhysicalNumberOfRows();
|
||||||
|
|
||||||
|
List<OtaBaSjSjxtbh> otaBaSjSjxtbh = this.getByOtaId(otaId);
|
||||||
|
List<String> oldYjbbList = otaBaSjSjxtbh.stream().map(OtaBaSjSjxtbh::getYjbb).distinct().collect(Collectors.toList());
|
||||||
|
List<String> oldTempFileNameList = new ArrayList<>();
|
||||||
|
oldYjbbList.forEach(sjSjxtbh -> {
|
||||||
|
oldTempFileNameList.add(sjSjxtbh.replaceAll("见","") + ".docx");
|
||||||
|
});
|
||||||
|
|
||||||
|
int tempFileIndex = 1;
|
||||||
|
String tempFilePath = uploadPath + "tempFile" + "/" + otaId;
|
||||||
|
File tempFile = new File(tempFilePath);
|
||||||
|
if(!tempFile.exists()){
|
||||||
|
tempFile.mkdirs();
|
||||||
|
}
|
||||||
|
List<String> tempFileNames = new ArrayList<>();
|
||||||
for (int i = 4; i < rows; i++) {
|
for (int i = 4; i < rows; i++) {
|
||||||
OtaBaSjSjxtbh xtbh = new OtaBaSjSjxtbh();
|
OtaBaSjSjxtbh xtbh = new OtaBaSjSjxtbh();
|
||||||
Row row = s.getRow(i);
|
Row row = s.getRow(i);
|
||||||
@@ -253,7 +280,17 @@ public class OtaBaSjSjxtbhServiceImpl extends ServiceImpl<OtaBaSjSjxtbhMapper, O
|
|||||||
cell = row.getCell(1);
|
cell = row.getCell(1);
|
||||||
xtbh.setSjhbgcs(ImportFileUtil.getCellValue(cell, wb));
|
xtbh.setSjhbgcs(ImportFileUtil.getCellValue(cell, wb));
|
||||||
cell = row.getCell(3);
|
cell = row.getCell(3);
|
||||||
xtbh.setYjbb(ImportFileUtil.getCellValue(cell, wb));
|
String yjbb = ImportFileUtil.getCellValue(cell, wb);
|
||||||
|
if(yjbb.length() > 50){
|
||||||
|
String fileName = "附件" + tempFileIndex + ".docx";
|
||||||
|
String tempFileUrl = WordUtil.createWord(tempFilePath, fileName, yjbb);
|
||||||
|
if (StringUtils.isNotEmpty(tempFileUrl)) {
|
||||||
|
tempFileNames.add(fileName);
|
||||||
|
}
|
||||||
|
yjbb = "见附件" + tempFileIndex;
|
||||||
|
tempFileIndex ++;
|
||||||
|
}
|
||||||
|
xtbh.setYjbb(yjbb);
|
||||||
cell = row.getCell(4);
|
cell = row.getCell(4);
|
||||||
xtbh.setSjqrjbb(ImportFileUtil.getCellValue(cell, wb));
|
xtbh.setSjqrjbb(ImportFileUtil.getCellValue(cell, wb));
|
||||||
cell = row.getCell(5);
|
cell = row.getCell(5);
|
||||||
@@ -279,6 +316,43 @@ public class OtaBaSjSjxtbhServiceImpl extends ServiceImpl<OtaBaSjSjxtbhMapper, O
|
|||||||
|
|
||||||
list.add(xtbh);
|
list.add(xtbh);
|
||||||
}
|
}
|
||||||
|
if(CollectionUtils.isNotEmpty(tempFileNames)){
|
||||||
|
List<String> newClfjList = new ArrayList<>();
|
||||||
|
List<String> oldClfjList = new ArrayList<>();
|
||||||
|
OtaBaSjSjyxpg otaBaSjSjyxpg = this.otaBaSjSjyxpgService.queryByOtaId(otaId, null);
|
||||||
|
if(StringUtils.isNotEmpty(otaBaSjSjyxpg.getClfj())){
|
||||||
|
List<OSSFile> clfjFileList = this.ossFileService.getFileInfos(otaBaSjSjyxpg.getClfj());
|
||||||
|
oldClfjList = clfjFileList.stream().filter(clfjFile -> {
|
||||||
|
boolean flag = true;
|
||||||
|
for (String oldTempFileName : oldTempFileNameList) {
|
||||||
|
if (StringUtils.equals(clfjFile.getFileName(), oldTempFileName)) {
|
||||||
|
flag = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}).map(OSSFile::getId).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
// 读取临时文件,上传至服务器。
|
||||||
|
for (String tempFileName : tempFileNames) {
|
||||||
|
try {
|
||||||
|
FileInputStream input = new FileInputStream(tempFilePath + "/" + tempFileName);
|
||||||
|
MultipartFile multipartFile = new MockMultipartFile(tempFileName, tempFileName, "text/plain", input);
|
||||||
|
OSSFile ossFile = this.ossFileService.uploadLocalOfCos(multipartFile, "", null,null);
|
||||||
|
if (ObjectUtils.isNotEmpty(ossFile)) {
|
||||||
|
newClfjList.add(ossFile.getId());
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(ObjectUtils.isNotEmpty(otaBaSjSjyxpg)){
|
||||||
|
newClfjList.addAll(oldClfjList);
|
||||||
|
otaBaSjSjyxpg.setClfj(StringUtils.join(newClfjList.stream().distinct().collect(Collectors.toList()), ","));
|
||||||
|
this.otaBaSjSjyxpgService.updateById(otaBaSjSjyxpg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FileUnZip.deleteDir(tempFile);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+32
-4
@@ -1,6 +1,9 @@
|
|||||||
package com.jero.modules.project.util;
|
package com.jero.modules.project.util;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||||
|
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
|
||||||
|
import org.apache.poi.xwpf.usermodel.XWPFRun;
|
||||||
import org.docx4j.Docx4J;
|
import org.docx4j.Docx4J;
|
||||||
import org.docx4j.TraversalUtil;
|
import org.docx4j.TraversalUtil;
|
||||||
import org.docx4j.XmlUtils;
|
import org.docx4j.XmlUtils;
|
||||||
@@ -22,10 +25,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
import org.springframework.util.FileCopyUtils;
|
import org.springframework.util.FileCopyUtils;
|
||||||
|
|
||||||
import javax.xml.bind.JAXBElement;
|
import javax.xml.bind.JAXBElement;
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -632,5 +632,33 @@ public class WordUtil {
|
|||||||
addImageInlineAndTextToPackage(wordMLPackage, bytes, "这是图3,name.png,看图片的嵌入方式");
|
addImageInlineAndTextToPackage(wordMLPackage, bytes, "这是图3,name.png,看图片的嵌入方式");
|
||||||
wordMLPackage.save(new File("d:/opt/测试" + System.currentTimeMillis() + ".docx"));
|
wordMLPackage.save(new File("d:/opt/测试" + System.currentTimeMillis() + ".docx"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建word文件。
|
||||||
|
* @param path
|
||||||
|
* @param fileName
|
||||||
|
* @param content
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String createWord(String path,String fileName,String content){
|
||||||
|
String result = "";
|
||||||
|
try {
|
||||||
|
result = path + "/" +fileName;
|
||||||
|
XWPFDocument document = new XWPFDocument();
|
||||||
|
// 段落
|
||||||
|
XWPFParagraph paragraph = document.createParagraph();
|
||||||
|
// 添加文本
|
||||||
|
XWPFRun run = paragraph.createRun();
|
||||||
|
run.setText(content);
|
||||||
|
|
||||||
|
FileOutputStream out = new FileOutputStream(new File(result));
|
||||||
|
document.write(out);
|
||||||
|
out.close();
|
||||||
|
log.info(fileName + " Word文件创建成功!");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user