zhouxingyu hai 4 días
pai
achega
4a2f60c3e9

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

@@ -805,7 +805,7 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
             for(PdfCell cell : rowsByTitle) {
                 comment = comment + cell.getText();
             }
-            comment.replaceAll("Remarks To Vendor :", "");
+            comment = comment.replaceAll("Remarks To Vendor :", "");
             saleInterfaceSync.setComment(comment);
         }
         saleInterfaceSync.setReferenceNumber(PDFTableReader.getFields(file, "Enquiry Number", "Printed On", true).get(0));
@@ -929,6 +929,7 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String id = UUIDGenerator.generate();
+        PdfTable pdfTable = PDFTableReader.handlePdf(file, "RFQ Details");
         saleInterfaceSync.setId(id);
         saleInterfaceSync.setCreateBy(sysUser.getUsername());
         saleInterfaceSync.setBuyerName(PDFTableReader.getNextLineFields(file, "Company Name:").get(0));
@@ -938,6 +939,26 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         saleInterfaceSync.setReferenceNumber(PDFTableReader.getNextLineFields(file, "Requisition No.:").get(0));
         saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO:").get(0));
         saleInterfaceSync.setVesselCode(PDFTableReader.getNextLineFields(file, "Vessel:").get(0));
+        saleInterfaceSync.setSubject(PDFTableReader.getLineByTitle(pdfTable, "Description:", null, "Buyer Message"));
+        try {
+            String[] removeLine = {"Buyer Message"};
+            List<PdfCell> buyerMessage = PDFTableReader.getRowsByTitle(pdfTable, "Buyer Message", null, "Equipment:");
+            if(buyerMessage != null && buyerMessage.size() > 0) {
+                buyerMessage.remove(buyerMessage.size() - 1);
+                String comment = "";
+                for(PdfCell cell : buyerMessage) {
+                    comment = comment + cell.getText();
+                }
+                comment = comment.replaceAll("Buyer Message", "");
+                saleInterfaceSync.setComment(comment);
+            }
+            String[] date = PDFTableReader.getNextLineFields(file, "Requisition Date:").get(0).split("/");
+            String day = date[2] + "-" + date[1] + "-" + date[0];
+            saleInterfaceSync.setSubmittedDate(DateUtils.parseDate(day, "yyyy-MM-dd"));
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+
 
         List<String> fieldList = new ArrayList<>();
         fieldList.add("No.");
@@ -956,22 +977,40 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         ignoreList.add("Shipsure Version Number");
         ignoreList.add("Plate");
         ignoreList.add("Order Line Notes");
-        ignoreList.add("Sub Total");
-        ignoreList.add("Freight Cost");
+        ignoreList.add("Assembly Particulars:");
+        ignoreList.add("Assembly:");
         ignoreList.add("Packaging Cost");
-        ignoreList.add("Grand Total");
-        ignoreList.add("(%)");
+        ignoreList.add("Equipment Particulars:");
+        ignoreList.add("Item Code/Part");
+
+        String[] extra = {"Office Notes:"};
+        JSONArray jsonArray = PDFTableReader.getPdfTable(pdfTable, fieldList, ignoreList, extra, "Item Code/Part", "noEndKey", "left", true);
+        //JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "", -1, "left", "Buyer Message", "Item Code/Part", extra, 6, 0);
+        //数据去重,No.重复的去掉,取第二个
+        try {
+            Map<String, JSONObject> willSortedData = new HashMap<>();
+            for(Object data : jsonArray) {
+                willSortedData.put(((JSONObject)data).getString("No."), (JSONObject)data);
+            }
+            List<JSONObject> values = willSortedData.values().stream().sorted(new Comparator<JSONObject>() {
+                @Override
+                public int compare(JSONObject o1, JSONObject o2) {
+                    return (o1.getInteger("No.") - o2.getInteger("No."));
+                }}).collect(Collectors.toList());
+
+            jsonArray = JSONArray.parseArray(JSONArray.toJSONString(values));
+        } catch (Exception e) {
+            log.error("去重失败", e);
+        }
 
-        String[] extra = {"Equipment: -", "Page"};
-        JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "", -1, "left", "Buyer Message", "Item Code/Part", extra, 6, 0);
         for(Object node : jsonArray) {
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
             if(jsonObject.size() >= 0) {
                 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.setQuantity(jsonObject.getString("Quantity"));
+                saleInterfaceItem.setSupplierPartNumber(jsonObject.getString("Item Code/Part"));
+                saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UoM") == null ? "" : jsonObject.getString("UoM").toUpperCase());
                 saleInterfaceItem.setHeadId(id);
                 saleInterfaceItemMapper.insert(saleInterfaceItem);
             }
@@ -1109,7 +1148,7 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
             String[] date = time.get(2).getText().split(",")[0].split(" ");
             String day = date[2] + "-" + MonthUtil.getMonthValue(date[1]) + "-" + date[0];
             saleInterfaceSync.setSubmittedDate(DateUtils.parseDate(day, "yyyy-MM-dd"));
-        } catch (ParseException e) {
+        } catch (Exception e) {
             e.printStackTrace();
         }
         String[] extra = {"Buyer comments:", "Equipment Section Name:"};
@@ -1146,26 +1185,31 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         List<String> ignoreList = new ArrayList<>();
         ignoreList.add("Page");
         ignoreList.add("Awaiting your");
+        ignoreList.add("Part No.");
 
+        PdfTable pdfTable = PDFTableReader.handlePdf(file, "Machinery type:");
 
-        //saleInterfaceSync.setPriority(PDFTableReader.getFields(file, "Priority", "", true).get(0));
-        saleInterfaceSync.setBuyerName(PDFTableReader.getFields(file, "MAKER:", "", 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, "Our Reference……", "", true).get(0));
-        saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO No:").get(0));
-        saleInterfaceSync.setVesselCode(PDFTableReader.getFields(file, "Vessel:", "", true).get(0));
+        saleInterfaceSync.setVesselImo(PDFTableReader.getLineByTitle(pdfTable, "IMO No:", null, null));
+        saleInterfaceSync.setVesselCode(PDFTableReader.getLineByTitle(pdfTable, "Vessel", null, null).split(":")[1]);
+        String date = PDFTableReader.getLineByTitle(pdfTable, "Date…", null, null);
+        try {
+            String[] split = date.split(":")[1].split(".");
+            String day = split[2] + "-" + split[1] + "-" + split[0];
+            saleInterfaceSync.setSubmittedDate(DateUtils.parseDate(day, "yyyy-MM-dd"));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
-        String[] extra = {"Page", "Awaiting your"};
-        JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "Awaiting your", -1, "left", "Awaiting your", "Part No.", extra, 3, 0);
+        String[] extra = {"haveNoExtra"};
+        JSONArray jsonArray = PDFTableReader.getPdfTable(pdfTable, fieldList, ignoreList, extra, "Part No.", "Awaiting your", "left", false);
+        //JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "Awaiting your", -1, "left", "Awaiting your", "Part No.", extra, 3, 0);
         for(Object node : jsonArray) {
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
             if(jsonObject.size() >= 0) {
                 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.setQuantity(jsonObject.getString("Quantity"));
+                saleInterfaceItem.setSupplierPartNumber(jsonObject.getString("Part No."));
                 saleInterfaceItem.setHeadId(id);
                 saleInterfaceItemMapper.insert(saleInterfaceItem);
             }