|
@@ -38,6 +38,8 @@ import org.jeecg.modules.saleCode.service.ISaleInterfaceSyncService;
|
|
|
import org.jeecg.modules.saleCode.util.HttpUtils;
|
|
|
import org.jeecg.modules.saleCode.util.MonthUtil;
|
|
|
import org.jeecg.modules.saleCode.util.PDFTableReader;
|
|
|
+import org.jeecg.modules.saleCode.vo.PdfCell;
|
|
|
+import org.jeecg.modules.saleCode.vo.PdfTable;
|
|
|
import org.jeecg.modules.system.mapper.SysDictMapper;
|
|
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -561,6 +563,9 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
|
|
|
case "9" :
|
|
|
parseTechnava(file);
|
|
|
break;
|
|
|
+ case "10":
|
|
|
+ parseAnglo(file);
|
|
|
+ break;
|
|
|
default:
|
|
|
return;
|
|
|
}
|
|
@@ -619,7 +624,8 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
|
|
|
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).toUpperCase());
|
|
|
- saleInterfaceSync.setSubject(PDFTableReader.getLineByTitle(file, "Request For Quote No", "Order Title", "Priority", "Spare Part Type"));
|
|
|
+ PdfTable pdfTable = PDFTableReader.initTable(file, "Request For Quote No");
|
|
|
+ saleInterfaceSync.setSubject(PDFTableReader.getLineByTitle(pdfTable, "Order Title", "Priority", "Spare Part Type"));
|
|
|
String[] removeLine = {"Page", "Request For Quotation", "CSL Australia", "vessel m/v CSL RELIANCE", "Shipsure Version", "Notes"};
|
|
|
saleInterfaceSync.setComment(Strings.join(PDFTableReader.getMultipleLineFields(file, "Supplier Notes", "Terms and Conditions", removeLine, true), ' '));
|
|
|
|
|
@@ -847,25 +853,37 @@ 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.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));
|
|
|
- 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));
|
|
|
- saleInterfaceSync.setCurrencyCode(PDFTableReader.getFields(file, "Currency: ", "", true).get(0));
|
|
|
-
|
|
|
- String[] extra = {"Page", "Equipment Section Name"};
|
|
|
+ PdfTable pdfTable = PDFTableReader.initTable(file, "Buyer Details:");
|
|
|
+ saleInterfaceSync.setReferenceNumber(PDFTableReader.getLineByTitle(pdfTable, "RFQ Ref:", "Vessel:", null));
|
|
|
+ saleInterfaceSync.setSubject(PDFTableReader.getLineByTitle(pdfTable, "Subject:", "Vessel Arrival Est.:", "Requested Delivery:"));
|
|
|
+ String vessel = PDFTableReader.getLineByTitle(pdfTable, "Vessel:", null, null);
|
|
|
+ String[] split = vessel.split("\\(");
|
|
|
+ saleInterfaceSync.setVesselCode(split[0]);
|
|
|
+ saleInterfaceSync.setVesselImo(split[1].replaceAll("\\)", ""));
|
|
|
+ saleInterfaceSync.setCurrencyCode(PDFTableReader.getLineByTitle(pdfTable, "Currency:", null, null));
|
|
|
+ List<PdfCell> rowsByTitle = PDFTableReader.getRowsByTitle(pdfTable, "Buyer Details:", "Supplier Details:", "Vessel:");
|
|
|
+ saleInterfaceSync.setBuyerName(rowsByTitle.get(1).getText());
|
|
|
+ saleInterfaceSync.setBuyerContactName(rowsByTitle.get(rowsByTitle.size() - 4).getText());
|
|
|
+ saleInterfaceSync.setBuyerTelephone(rowsByTitle.get(rowsByTitle.size() - 3).getText());
|
|
|
+ saleInterfaceSync.setBuyerEmail(rowsByTitle.get(rowsByTitle.size() - 2).getText());
|
|
|
+
|
|
|
+ List<PdfCell> time = PDFTableReader.getRowsByTitle(pdfTable, "Request For Quote", null, "Currency:");
|
|
|
+ try {
|
|
|
+ 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) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ String[] extra = {"Buyer comments:"};
|
|
|
JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "ShipServ Buyer Record:", -1, "left", "Buyer Details:", "Item Description", extra, 5, 0);
|
|
|
for(Object node : jsonArray) {
|
|
|
JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
|
|
|
- if(jsonObject.size() == 0) {
|
|
|
+ if(jsonObject.size() >= 0) {
|
|
|
SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
|
|
|
saleInterfaceItem.setDescription(jsonObject.getString("Item Description"));
|
|
|
saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
|
|
|
- saleInterfaceItem.setSyncItemCode(jsonObject.getString("Part Number"));
|
|
|
+ saleInterfaceItem.setSupplierPartNumber(jsonObject.getString("Part Number"));
|
|
|
saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UoM"));
|
|
|
saleInterfaceItem.setHeadId(id);
|
|
|
saleInterfaceItemMapper.insert(saleInterfaceItem);
|
|
@@ -915,7 +933,7 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
|
|
|
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) {
|
|
|
+ if(jsonObject.size() >= 0) {
|
|
|
SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
|
|
|
saleInterfaceItem.setDescription(jsonObject.getString("Description"));
|
|
|
saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
|
|
@@ -978,7 +996,8 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
|
|
|
if (matcher.find()) {
|
|
|
saleInterfaceSync.setBuyerEmail(matcher.group(1));
|
|
|
}
|
|
|
- saleInterfaceSync.setSubject(PDFTableReader.getLineByTitle(file, "Request For Quote No", "Order Title", "Priority", "Spare Part Type"));
|
|
|
+ PdfTable pdfTable = PDFTableReader.initTable(file, "Request For Quote No");
|
|
|
+ saleInterfaceSync.setSubject(PDFTableReader.getLineByTitle(pdfTable, "Order Title", "Priority", "Spare Part Type"));
|
|
|
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));
|
|
@@ -1009,6 +1028,74 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
|
|
|
saleInterfaceSyncMapper.insert(saleInterfaceSync);
|
|
|
}
|
|
|
|
|
|
+ public void parseAnglo(MultipartFile file) {
|
|
|
+ SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
|
|
|
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
+ String id = UUIDGenerator.generate();
|
|
|
+ saleInterfaceSync.setId(id);
|
|
|
+ saleInterfaceSync.setCreateBy(sysUser.getUsername());
|
|
|
+ List<String> fieldList = new ArrayList<>();
|
|
|
+ fieldList.add("#");
|
|
|
+ fieldList.add("Part Number");
|
|
|
+ fieldList.add("Item Description");
|
|
|
+ fieldList.add("Quality");
|
|
|
+ fieldList.add("UoM");
|
|
|
+ fieldList.add("Qty");
|
|
|
+
|
|
|
+ List<String> ignoreList = new ArrayList<>();
|
|
|
+ ignoreList.add("Page");
|
|
|
+ ignoreList.add("Request For Quotation");
|
|
|
+ ignoreList.add("LIMITED as Managers");
|
|
|
+ ignoreList.add("behalf of Owners Abundance");
|
|
|
+ ignoreList.add("Shipsure Version Number");
|
|
|
+ ignoreList.add("Plate / Sheet No");
|
|
|
+ ignoreList.add("Order Line Notes");
|
|
|
+ ignoreList.add("Sub Total");
|
|
|
+ ignoreList.add("Freight Cost");
|
|
|
+ ignoreList.add("Packaging Cost");
|
|
|
+ ignoreList.add("Grand Total");
|
|
|
+ ignoreList.add("(%)");
|
|
|
+
|
|
|
+ PdfTable pdfTable = PDFTableReader.initTable(file, "Buyer Details:");
|
|
|
+ saleInterfaceSync.setReferenceNumber(PDFTableReader.getLineByTitle(pdfTable, "RFQ Ref:", "Vessel:", null));
|
|
|
+ saleInterfaceSync.setSubject(PDFTableReader.getLineByTitle(pdfTable, "Subject:", "Vessel Arrival Est.:", "Requested Delivery:"));
|
|
|
+ String vessel = PDFTableReader.getLineByTitle(pdfTable, "Vessel:", null, null);
|
|
|
+ String[] split = vessel.split("\\(");
|
|
|
+ saleInterfaceSync.setVesselCode(split[0]);
|
|
|
+ saleInterfaceSync.setVesselImo(split[1].replaceAll("\\)", ""));
|
|
|
+ saleInterfaceSync.setCurrencyCode(PDFTableReader.getLineByTitle(pdfTable, "Currency:", null, null));
|
|
|
+ List<PdfCell> rowsByTitle = PDFTableReader.getRowsByTitle(pdfTable, "Buyer Details:", "Supplier Details:", "Vessel:");
|
|
|
+ saleInterfaceSync.setBuyerName(rowsByTitle.get(1).getText());
|
|
|
+ saleInterfaceSync.setBuyerContactName(rowsByTitle.get(rowsByTitle.size() - 4).getText());
|
|
|
+ saleInterfaceSync.setBuyerTelephone(rowsByTitle.get(rowsByTitle.size() - 3).getText());
|
|
|
+ saleInterfaceSync.setBuyerEmail(rowsByTitle.get(rowsByTitle.size() - 2).getText());
|
|
|
+
|
|
|
+ List<PdfCell> time = PDFTableReader.getRowsByTitle(pdfTable, "Request For Quote", null, "Currency:");
|
|
|
+ try {
|
|
|
+ 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) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ String[] extra = {"Buyer comments:"};
|
|
|
+ JSONArray jsonArray = PDFTableReader.getTableByPosition(file, fieldList, ignoreList, "ShipServ Buyer Record:", -1, "left", "Buyer Details:", "Item Description", extra, 5, 0);
|
|
|
+ for(Object node : jsonArray) {
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(String.valueOf(node));
|
|
|
+ if(jsonObject.size() >= 0) {
|
|
|
+ SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
|
|
|
+ saleInterfaceItem.setDescription(jsonObject.getString("Item Description"));
|
|
|
+ saleInterfaceItem.setQuantity(jsonObject.getString("Qty"));
|
|
|
+ saleInterfaceItem.setSupplierPartNumber(jsonObject.getString("Part Number"));
|
|
|
+ saleInterfaceItem.setUnitOfMeasure(jsonObject.getString("UoM"));
|
|
|
+ saleInterfaceItem.setHeadId(id);
|
|
|
+ saleInterfaceItemMapper.insert(saleInterfaceItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ saleInterfaceSyncMapper.insert(saleInterfaceSync);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
public void parseTechnava(MultipartFile file) throws Exception{
|
|
|
SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
|
|
|
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|