补充完整的索引
parent
1dde1a9e3b
commit
b5d3a7a526
@ -0,0 +1,330 @@
|
||||
package com.docus.sw.souyin;
|
||||
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.util.FileUtils;
|
||||
import com.docus.sw.Config;
|
||||
import com.docus.sw.fenpan.Document;
|
||||
import com.docus.sw.fenpan.FileTypeEnum;
|
||||
import com.docus.sw.fenpan.Pieces;
|
||||
import com.docus.sw.fenpan.Roll;
|
||||
import com.docus.sw.word.GetPicsDocx;
|
||||
import com.docus.sw.word.PdfBoxUtils;
|
||||
import com.docus.sw.word.ReadImgDoc;
|
||||
import com.google.gson.Gson;
|
||||
import org.apache.commons.imaging.ImageInfo;
|
||||
import org.apache.commons.imaging.ImageReadException;
|
||||
import org.apache.commons.imaging.Imaging;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.*;
|
||||
|
||||
public class CheckService {
|
||||
|
||||
//读取分盘后的结果。
|
||||
//宗,盘,卷,件
|
||||
//输出目录文件
|
||||
//生成片头,片尾
|
||||
//统计出需要使用的 胶片量
|
||||
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
Config.loadConfig();
|
||||
String path = "C:\\Users\\zhanghai\\Desktop\\桌面\\test\\ppp\\ppp";
|
||||
new CheckService().index(path);
|
||||
}
|
||||
|
||||
public void index(String path) throws IOException {
|
||||
Map<String, IndexPlate> map = new HashMap<>();
|
||||
findAllDir(path, map);
|
||||
|
||||
//计算出宗
|
||||
|
||||
//计算出每个盘的目录。
|
||||
for (IndexPlate indexPlate : map.values()) {
|
||||
String absolutePath = indexPlate.getAbsolutePath();
|
||||
File file = new File(absolutePath);
|
||||
File[] files = file.listFiles();
|
||||
|
||||
List<Roll> rollList = new ArrayList<>();
|
||||
//卷
|
||||
for (File rollFile : files) {
|
||||
if (rollFile.getName().equals("片头")) {
|
||||
//填充卷
|
||||
Roll roll = new Roll(rollFile.getName(), rollFile.getAbsolutePath());
|
||||
|
||||
rollList.add(roll);
|
||||
} else if (rollFile.getName().equals("片尾")) {
|
||||
//填充卷
|
||||
Roll roll = new Roll(rollFile.getName(), rollFile.getAbsolutePath());
|
||||
|
||||
rollList.add(roll);
|
||||
} else {
|
||||
//
|
||||
List<Pieces> pieceList = new ArrayList<>();
|
||||
File[] piecesFile = rollFile.listFiles();
|
||||
for (File piece : piecesFile) {
|
||||
|
||||
//区分word和pdf
|
||||
if (piece.getName().endsWith(".doc")) {
|
||||
Pieces pieces = new Pieces(FileTypeEnum.DOC, piece.getAbsolutePath(), piece.getName());
|
||||
|
||||
String teamName = "tempIndex/" + UUID.randomUUID();
|
||||
File temp = new File(teamName);
|
||||
if (!temp.exists()) {
|
||||
temp.mkdirs();
|
||||
}
|
||||
|
||||
ReadImgDoc.readPicture(piece.getAbsolutePath(), temp.getAbsolutePath());
|
||||
File[] listFiles = temp.listFiles();
|
||||
genPieces(pieces, listFiles, FileTypeEnum.DOC);
|
||||
pieceList.add(pieces);
|
||||
|
||||
//删除对应的temp 文件
|
||||
FileUtils.delete(temp);
|
||||
} else if (piece.getName().endsWith(".docx")) {
|
||||
Pieces pieces = new Pieces(FileTypeEnum.DOCX, piece.getAbsolutePath(), piece.getName());
|
||||
|
||||
String teamName = "tempIndex/" + UUID.randomUUID();
|
||||
File temp = new File(teamName);
|
||||
if (!temp.exists()) {
|
||||
temp.mkdirs();
|
||||
}
|
||||
|
||||
GetPicsDocx.getPics(piece.getAbsolutePath(), temp.getAbsolutePath());
|
||||
File[] listFiles = temp.listFiles();
|
||||
genPieces(pieces, listFiles, FileTypeEnum.DOCX);
|
||||
pieceList.add(pieces);
|
||||
//删除对应的temp 文件
|
||||
FileUtils.delete(temp);
|
||||
} else if (piece.getName().endsWith(".pdf")) {
|
||||
Pieces pieces = new Pieces(FileTypeEnum.DOC, piece.getAbsolutePath(), piece.getName());
|
||||
|
||||
String teamName = "tempIndex/" + UUID.randomUUID();
|
||||
File temp = new File(teamName);
|
||||
if (!temp.exists()) {
|
||||
temp.mkdirs();
|
||||
}
|
||||
|
||||
try {
|
||||
PdfBoxUtils.pdf2image(piece.getAbsolutePath(), temp.getAbsolutePath());
|
||||
File[] listFiles = temp.listFiles();
|
||||
genPieces(pieces, listFiles, FileTypeEnum.DOC);
|
||||
pieceList.add(pieces);
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
//删除对应的temp 文件
|
||||
// temp.delete();
|
||||
FileUtils.delete(temp);
|
||||
} else {
|
||||
Pieces pieces = new Pieces(FileTypeEnum.JPG, piece.getAbsolutePath(), piece.getName());
|
||||
File[] listFiles = piece.listFiles();
|
||||
genPieces(pieces, listFiles, FileTypeEnum.JPG);
|
||||
pieceList.add(pieces);
|
||||
}
|
||||
|
||||
}
|
||||
//填充卷
|
||||
Roll roll = new Roll(rollFile.getName(), rollFile.getAbsolutePath());
|
||||
roll.putAll(pieceList);
|
||||
rollList.add(roll);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
indexPlate.putAll(rollList);
|
||||
|
||||
}
|
||||
|
||||
FileUtils.delete(new File("tempIndex"));
|
||||
|
||||
//生成索引目录
|
||||
for (IndexPlate indexPlate : map.values()) {
|
||||
List<Roll> rollList = indexPlate.getRollList();
|
||||
for(Roll roll:rollList){
|
||||
List<Pieces> piecesList = roll.getPiecesList();
|
||||
for(Pieces pieces:piecesList){
|
||||
List<Document> documentList = pieces.getDocumentList();
|
||||
for(Document document:documentList){
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static void genPieces(Pieces pieces, File[] listFiles, FileTypeEnum fileTypeEnum) {
|
||||
List<Document> documentList = new ArrayList<>();
|
||||
|
||||
for (File docfile : listFiles) {
|
||||
//非图片模式,跳过。
|
||||
if (!(docfile.getName().endsWith(".jpg") || docfile.getName().endsWith(".png")
|
||||
|| docfile.getName().endsWith(".jpeg") || docfile.getName().endsWith(".tif")
|
||||
|| docfile.getName().endsWith(".tiff") || docfile.getName().endsWith(".jp2") || docfile.getName().endsWith(".jpm")) || docfile.getName().endsWith(".gif")) {
|
||||
continue;
|
||||
}
|
||||
if (docfile.getName().endsWith(".jp2") || docfile.getName().endsWith(".jpm")) {
|
||||
// 读取 JPEG 2000 图像文件
|
||||
|
||||
try {
|
||||
BufferedImage image = ImageIO.read(docfile);
|
||||
int height = image.getHeight();
|
||||
int width = image.getWidth();
|
||||
Document document = new Document(width, height, 300, docfile.getName());
|
||||
documentList.add(document);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
} else {
|
||||
try {
|
||||
ImageInfo imageInfo = Imaging.getImageInfo(docfile);
|
||||
int height = imageInfo.getHeight();
|
||||
int width = imageInfo.getWidth();
|
||||
int physicalHeightDpi = imageInfo.getPhysicalHeightDpi();
|
||||
Document document = new Document(width, height, physicalHeightDpi, docfile.getName());
|
||||
documentList.add(document);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("非图片格式", e);
|
||||
} catch (ImageReadException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
pieces.put(documentList);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private List<IndexPageRow> indexGen(IndexPlate indexPlate, List<Roll> rollList, Integer pianPageNum, Integer totalSize) {
|
||||
List<IndexPageRow> indexPageRows = new ArrayList<>();
|
||||
int start = 1;
|
||||
//添加片头
|
||||
for (Roll roll : rollList) {
|
||||
|
||||
//跳过片头
|
||||
if (roll.getName().equals("片头")) {
|
||||
File file = new File(roll.getAbsolutePath());
|
||||
int fileasize = file.listFiles().length;
|
||||
fileasize += pianPageNum;
|
||||
IndexPageRow indexPageRow = new IndexPageRow(indexPlate.getZongName(), indexPlate.getName(), roll.getName(), "", fileasize, start);
|
||||
start += fileasize;
|
||||
indexPageRows.add(indexPageRow);
|
||||
start += 1;
|
||||
}
|
||||
}
|
||||
|
||||
//处理偏中
|
||||
for (Roll roll : rollList) {
|
||||
|
||||
//跳过片头
|
||||
if (roll.getName().equals("片头")) {
|
||||
continue;
|
||||
}
|
||||
//跳过片尾
|
||||
if (roll.getName().equals("片尾")) {
|
||||
continue;
|
||||
}
|
||||
List<Pieces> piecesList = roll.getPiecesList();
|
||||
for (Pieces pieces : piecesList) {
|
||||
IndexPageRow indexPageRow = new IndexPageRow(indexPlate.getZongName(), indexPlate.getName(), roll.getName(), pieces.getName(), pieces.getDocumentList().size(), start);
|
||||
start += pieces.getDocumentList().size();
|
||||
indexPageRows.add(indexPageRow);
|
||||
}
|
||||
start += 1;
|
||||
}
|
||||
|
||||
//添加片尾
|
||||
for (Roll roll : rollList) {
|
||||
|
||||
//跳过片头
|
||||
if (roll.getName().equals("片尾")) {
|
||||
File file = new File(roll.getAbsolutePath());
|
||||
int fileasize = file.listFiles().length;
|
||||
fileasize += pianPageNum;
|
||||
IndexPageRow indexPageRow = new IndexPageRow(indexPlate.getZongName(), indexPlate.getName(), roll.getName(), "", fileasize, start);
|
||||
start += fileasize;
|
||||
indexPageRows.add(indexPageRow);
|
||||
start += 1;
|
||||
}
|
||||
}
|
||||
|
||||
//加上统计
|
||||
IndexPageRow indexPageRow = new IndexPageRow("", "", "", "有效画幅数", totalSize, null);
|
||||
indexPageRows.add(indexPageRow);
|
||||
|
||||
return indexPageRows;
|
||||
}
|
||||
|
||||
|
||||
private void findAllDir(String absolutePath, Map<String, IndexPlate> map) {
|
||||
|
||||
|
||||
File sourceFile = new File(absolutePath);
|
||||
File[] files = sourceFile.listFiles();
|
||||
for (File o : files) {
|
||||
if (o.isDirectory()) {
|
||||
findAllDir(o.getAbsolutePath(), map);
|
||||
}
|
||||
|
||||
if (o.isFile()) {
|
||||
//判断是word,pdf,pic
|
||||
if (o.getName().endsWith(".pdf")) {
|
||||
|
||||
File rofile = o.getParentFile().getParentFile();
|
||||
// new Plate()
|
||||
if (map.get(rofile.getAbsolutePath()) == null) {
|
||||
IndexPlate indexPlate = new IndexPlate(rofile.getAbsolutePath(), rofile.getName(), rofile.getParentFile().getName());
|
||||
map.put(rofile.getAbsolutePath(), indexPlate);
|
||||
}
|
||||
|
||||
} else if (o.getName().endsWith(".docx") || o.getName().endsWith(".doc")) {
|
||||
File rofile = o.getParentFile().getParentFile();
|
||||
// new Plate()
|
||||
if (map.get(rofile.getAbsolutePath()) == null) {
|
||||
IndexPlate indexPlate = new IndexPlate(rofile.getAbsolutePath(), rofile.getName(), rofile.getParentFile().getName());
|
||||
map.put(rofile.getAbsolutePath(), indexPlate);
|
||||
}
|
||||
} else if (o.getName().endsWith(".jpg") || o.getName().endsWith(".png")
|
||||
|| o.getName().endsWith(".jpeg") || o.getName().endsWith(".tif")
|
||||
|| o.getName().endsWith(".tiff")) {
|
||||
|
||||
if (o.getParentFile().getName().equals("片头") || o.getParentFile().getName().equals("片尾")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
//件
|
||||
File parentFile = o.getParentFile()
|
||||
//卷
|
||||
.getParentFile()
|
||||
//盘
|
||||
.getParentFile();
|
||||
|
||||
if (map.get(parentFile.getAbsolutePath()) == null) {
|
||||
IndexPlate indexPlate = new IndexPlate(parentFile.getAbsolutePath(), parentFile.getName(), parentFile.getParentFile().getName());
|
||||
map.put(parentFile.getAbsolutePath(), indexPlate);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
System.out.println("请删除无效的文件:" + o.getAbsolutePath());
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue