浏览代码

pdf导入

zhouxingyu 5 天之前
父节点
当前提交
8e0280a5b1

+ 69 - 75
srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleInterfaceSyncServiceImpl.java

@@ -566,27 +566,26 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         ignoreList.add("Grand Total");
         ignoreList.add("(%)");
 
-        saleInterfaceSync.setPriority(PDFTableReader.getFields(file, "Priority", "", true).get(0).trim());
-        saleInterfaceSync.setBuyerName(PDFTableReader.getFields(file, "Company Name:", "", true).get(0).trim());
-        saleInterfaceSync.setBuyerContactName(PDFTableReader.getFields(file, "Our Contact", "", true).get(0).trim());
-        saleInterfaceSync.setBuyerTelephone(PDFTableReader.getFields(file, "Tel.", "", true).get(0).trim());
-        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Request For Quote No.", "", true).get(0).trim());
-        saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO Number").get(0).trim());
-        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel Name", "", true).get(0).trim());
+        saleInterfaceSync.setPriority(PDFTableReader.getFields(file, "Priority", "", true).get(0));
+        saleInterfaceSync.setBuyerName(PDFTableReader.getFields(file, "Company Name:", "", true).get(0));
+        saleInterfaceSync.setBuyerContactName(PDFTableReader.getFields(file, "Our Contact", "", true).get(0));
+        saleInterfaceSync.setBuyerTelephone(PDFTableReader.getFields(file, "Tel.", "", true).get(0));
+        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Request For Quote No.", "", true).get(0));
+        saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO Number").get(0));
+        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel Name", "", true).get(0));
 
         JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "Sub Total", -1, "mediate", "Request For Quote No", "Makers Reference");
         for(Object node : jsonArray) {
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
-            if(jsonObject.size() == 8) {
-                continue;
+            if(jsonObject.size() >= 8) {
+                SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
+                saleInterfaceItem.setDescription(jsonObject.getString("Description"));
+                saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
+                saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
+                saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
+                saleInterfaceItem.setHeadId(id);
+                saleInterfaceItemMapper.insert(saleInterfaceItem);
             }
-            SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
-            saleInterfaceItem.setDescription(jsonObject.getString("Description"));
-            saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
-            saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
-            saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
-            saleInterfaceItem.setHeadId(id);
-            saleInterfaceItemMapper.insert(saleInterfaceItem);
         }
         saleInterfaceSyncMapper.insert(saleInterfaceSync);
     }
@@ -606,6 +605,7 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         saleInterfaceSync.setVesselCode(PDFTableReader.getNextLineFields(file, "Vessel:").get(0));
 
         List<String> fieldList = new ArrayList<>();
+        fieldList.add("No.");
         fieldList.add("Description");
         fieldList.add("Item Code/Part");
         fieldList.add("Ref. No.");
@@ -630,16 +630,15 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "", -1, "left", "Request For Quote No", "Item Code/Part");
         for(Object node : jsonArray) {
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
-            if(jsonObject.size() == 6) {
-                continue;
+            if(jsonObject.size() >= 5) {
+                SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
+                saleInterfaceItem.setDescription(jsonObject.getString("Description"));
+                saleInterfaceItem.setQuantity(jsonObject.getString("Quantity"));
+                saleInterfaceItem.setSyncItemCode(jsonObject.getString("Item Code/Part"));
+                saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UoM"));
+                saleInterfaceItem.setHeadId(id);
+                saleInterfaceItemMapper.insert(saleInterfaceItem);
             }
-            SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
-            saleInterfaceItem.setDescription(jsonObject.getString("Description"));
-            saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
-            saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
-            saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
-            saleInterfaceItem.setHeadId(id);
-            saleInterfaceItemMapper.insert(saleInterfaceItem);
         }
         saleInterfaceSyncMapper.insert(saleInterfaceSync);
 
@@ -655,7 +654,7 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         //saleInterfaceSync.setSupplierName(PDFTableReader.getNextLineFields(file, "Name:").get(1));
         saleInterfaceSync.setBuyerContactName(PDFTableReader.getFields(file, "Contact:", "", true).get(0));
         saleInterfaceSync.setBuyerTelephone(PDFTableReader.getFields(file, "Telephone:", "", true).get(0));
-        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Reference:", "", true).get(0).trim());
+        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Reference:", "", true).get(0));
         //saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO:").get(0));
         saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Ship Name:", "", true).get(0));
 
@@ -682,16 +681,14 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "Contact:", -1, "left", "Contact:", "Part No.");
         for(Object node : jsonArray) {
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
-            if(jsonObject.size() == 4) {
-                continue;
+            if(jsonObject.size() >= 3) {
+                SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
+                saleInterfaceItem.setDescription(jsonObject.getString("Description"));
+                saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
+                saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UoM"));
+                saleInterfaceItem.setHeadId(id);
+                saleInterfaceItemMapper.insert(saleInterfaceItem);
             }
-            SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
-            saleInterfaceItem.setDescription(jsonObject.getString("Description"));
-            saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
-            saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
-            saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
-            saleInterfaceItem.setHeadId(id);
-            saleInterfaceItemMapper.insert(saleInterfaceItem);
         }
         saleInterfaceSyncMapper.insert(saleInterfaceSync);
     }
@@ -707,10 +704,10 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
 //        saleInterfaceSync.setSupplierName(PDFTableReader.getNextLineFields(file, "Name:").get(1));
 //        saleInterfaceSync.setBuyerContactName(PDFTableReader.getNextLineFields(file, "Contact:").get(0));
 //        saleInterfaceSync.setBuyerTelephone(PDFTableReader.getNextLineFields(file, "Phone:").get(0));
-        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Enquiry Number", "Printed On", true).get(0).trim());
+        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Enquiry Number", "Printed On", true).get(0));
 //        saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO:").get(0));
-        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel  Name", "Quote By", true).get(0).trim());
-        saleInterfaceSync.setCurrencyCode(PDFTableReader.getFields(file, "Currency", "", true).get(0).trim());
+        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel  Name", "Quote By", true).get(0));
+        saleInterfaceSync.setCurrencyCode(PDFTableReader.getFields(file, "Currency", "", true).get(0));
 
         List<String> detailNodesPart1 = PDFTableReader.getMultipleLineFields(file, "Item Details", "1 of 2", false);
         List<String> detailNodesPart2 = PDFTableReader.getMultipleLineFields(file, "Item Details", "Remarks To Vendor :", false);
@@ -781,27 +778,26 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         ignoreList.add("(%)");
 
         //saleInterfaceSync.setPriority(PDFTableReader.getFields(file, "Priority", "", true).get(0).trim());
-        saleInterfaceSync.setBuyerName(PDFTableReader.getNextLineFields(file, "Buyer Details:").get(0).trim());
+        saleInterfaceSync.setBuyerName(PDFTableReader.getNextLineFields(file, "Buyer Details:").get(0));
         //saleInterfaceSync.setBuyerContactName(PDFTableReader.getFields(file, "Our Contact", "", true).get(0).trim());
         //saleInterfaceSync.setBuyerTelephone(PDFTableReader.getFields(file, "Tel.", "", true).get(0).trim());
-        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "RFQ Ref:", "", true).get(0).trim());
-        saleInterfaceSync.setSupplierName(PDFTableReader.getNextLineFields(file, "Supplier Details:").get(0).trim());
+        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "RFQ Ref:", "", true).get(0));
+        saleInterfaceSync.setSupplierName(PDFTableReader.getNextLineFields(file, "Supplier Details:").get(0));
         //saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO Number").get(0).trim());
-        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel:", "", true).get(0).trim());
-        saleInterfaceSync.setCurrencyCode(PDFTableReader.getFields(file, "Currency: ", "", true).get(0).trim());
+        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel:", "", true).get(0));
+        saleInterfaceSync.setCurrencyCode(PDFTableReader.getFields(file, "Currency: ", "", true).get(0));
         JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "ShipServ Buyer Record:", -1, "left", "Buyer Details:", "Supplier Part");
         for(Object node : jsonArray) {
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
             if(jsonObject.size() == 8) {
-                continue;
+                SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
+                saleInterfaceItem.setDescription(jsonObject.getString("Description"));
+                saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
+                saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
+                saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
+                saleInterfaceItem.setHeadId(id);
+                saleInterfaceItemMapper.insert(saleInterfaceItem);
             }
-            SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
-            saleInterfaceItem.setDescription(jsonObject.getString("Description"));
-            saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
-            saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
-            saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
-            saleInterfaceItem.setHeadId(id);
-            saleInterfaceItemMapper.insert(saleInterfaceItem);
         }
         saleInterfaceSyncMapper.insert(saleInterfaceSync);
     }
@@ -846,15 +842,14 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         for(Object node : jsonArray) {
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
             if(jsonObject.size() == 6) {
-                continue;
+                SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
+                saleInterfaceItem.setDescription(jsonObject.getString("Description"));
+                saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
+                saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
+                saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
+                saleInterfaceItem.setHeadId(id);
+                saleInterfaceItemMapper.insert(saleInterfaceItem);
             }
-            SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
-            saleInterfaceItem.setDescription(jsonObject.getString("Description"));
-            saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
-            saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
-            saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
-            saleInterfaceItem.setHeadId(id);
-            saleInterfaceItemMapper.insert(saleInterfaceItem);
         }
         saleInterfaceSyncMapper.insert(saleInterfaceSync);
 
@@ -891,27 +886,26 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         ignoreList.add("Grand Total");
         ignoreList.add("(%)");
 
-        saleInterfaceSync.setPriority(PDFTableReader.getFields(file, "Priority", "", true).get(0).trim());
-        saleInterfaceSync.setBuyerName(PDFTableReader.getFields(file, "Company Name:", "", true).get(0).trim());
-        saleInterfaceSync.setBuyerContactName(PDFTableReader.getFields(file, "Our Contact", "", true).get(0).trim());
-        saleInterfaceSync.setBuyerTelephone(PDFTableReader.getFields(file, "Tel.", "", true).get(0).trim());
-        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Request For Quote No.", "", true).get(0).trim());
-        saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO Number").get(0).trim());
-        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel Name", "", true).get(0).trim());
+        saleInterfaceSync.setPriority(PDFTableReader.getFields(file, "Priority", "", true).get(0));
+        saleInterfaceSync.setBuyerName(PDFTableReader.getFields(file, "Company Name:", "", true).get(0));
+        saleInterfaceSync.setBuyerContactName(PDFTableReader.getFields(file, "Our Contact", "", true).get(0));
+        saleInterfaceSync.setBuyerTelephone(PDFTableReader.getFields(file, "Tel.", "", true).get(0));
+        saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Request For Quote No.", "", true).get(0));
+        saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO Number").get(0));
+        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel Name", "", true).get(0));
 
         JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "Sub Total", -1, "mediate", "Request For Quote No", "Makers Reference");
         for(Object node : jsonArray) {
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
-            if(jsonObject.size() == 8) {
-                continue;
+            if(jsonObject.size() >= 8) {
+                SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
+                saleInterfaceItem.setDescription(jsonObject.getString("Description"));
+                saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
+                saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
+                saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
+                saleInterfaceItem.setHeadId(id);
+                saleInterfaceItemMapper.insert(saleInterfaceItem);
             }
-            SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
-            saleInterfaceItem.setDescription(jsonObject.getString("Description"));
-            saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
-            saleInterfaceItem.setSyncItemCode(jsonObject.getString("Makers Reference"));
-            saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UOM"));
-            saleInterfaceItem.setHeadId(id);
-            saleInterfaceItemMapper.insert(saleInterfaceItem);
         }
         saleInterfaceSyncMapper.insert(saleInterfaceSync);
     }

+ 9 - 6
srm-module-code/src/main/java/org/jeecg/modules/saleCode/util/PDFTableReader.java

@@ -292,7 +292,7 @@ public class PDFTableReader<T> {
                         if(endIndex == -1) {
                             endIndex = text.length();
                         }
-                        result.add(text.substring(startIndex + startText.length(), endIndex));
+                        result.add(text.substring(startIndex + startText.length(), endIndex).trim());
                     }
                 }
             };
@@ -354,7 +354,7 @@ public class PDFTableReader<T> {
                         }
                     }
                     if(startRecord[0]) {
-                        result.add(text);
+                        result.add(text.trim());
                     }
                 }
             };
@@ -409,7 +409,7 @@ public class PDFTableReader<T> {
                         return;
                     }
                     if(startRecord[0]) {
-                        result.add(text);
+                        result.add(text.trim());
                         startRecord[0] = false;
                     }
                 }
@@ -491,7 +491,7 @@ public class PDFTableReader<T> {
             }
 
         }
-
+        pdfTable.getHeaderRow().setCell(cells);
         for (String key : documentPositions.keySet()) {
             List<PdfTextPosition> item = documentPositions.get(key);
             //处理在表格起始行下和结束行上并且不在忽略行中的数据
@@ -603,10 +603,13 @@ public class PDFTableReader<T> {
 //                                    pdfCell.setCellStartX(0);
 //                                }
 //                            }
+                            //文本识别可能出错,会带多个字符,需识别标题在此文本中的位置并重新赋起始结束x值
+                            int firstPosition = text.indexOf(filed);
+                            int lastPosition = firstPosition + filed.length() - 1;
                             pdfCell.setCellY(positions.get(0).getY());
                             pdfCell.setHeaderText(filed);
-                            pdfCell.setCellStartX(textPositions.get(0).getX());
-                            pdfCell.setCellEndX(textPositions.get(textPositions.size() - 1).getX());
+                            pdfCell.setCellStartX(textPositions.get(firstPosition).getX());
+                            pdfCell.setCellEndX(textPositions.get(lastPosition).getX());
                             pdfCells.add(pdfCell);
 
                         }