|
@@ -1,13 +1,14 @@
|
|
package org.jeecg.modules.saleCode.service.impl;
|
|
package org.jeecg.modules.saleCode.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
-import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
|
import io.micrometer.core.instrument.util.StringUtils;
|
|
import io.micrometer.core.instrument.util.StringUtils;
|
|
import io.swagger.annotations.ApiModelProperty;
|
|
import io.swagger.annotations.ApiModelProperty;
|
|
import org.apache.shiro.SecurityUtils;
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
|
+import org.apache.shiro.SecurityUtils;
|
|
import org.jeecg.common.api.vo.Result;
|
|
import org.jeecg.common.api.vo.Result;
|
|
import org.jeecg.common.system.vo.DictModel;
|
|
import org.jeecg.common.system.vo.DictModel;
|
|
import org.jeecg.common.system.vo.LoginUser;
|
|
import org.jeecg.common.system.vo.LoginUser;
|
|
@@ -23,19 +24,28 @@ import org.jeecg.modules.cuspCode.mapper.CuspCustomerProfileManMapper;
|
|
import org.jeecg.modules.cuspCode.service.ICuspCustomerProfileService;
|
|
import org.jeecg.modules.cuspCode.service.ICuspCustomerProfileService;
|
|
import org.jeecg.modules.saleCode.entity.*;
|
|
import org.jeecg.modules.saleCode.entity.*;
|
|
import org.jeecg.modules.saleCode.mapper.*;
|
|
import org.jeecg.modules.saleCode.mapper.*;
|
|
|
|
+import org.jeecg.common.system.vo.LoginUser;
|
|
|
|
+import org.jeecg.common.util.UUIDGenerator;
|
|
|
|
+import org.jeecg.modules.saleCode.entity.SaleInterfaceSync;
|
|
|
|
+import org.jeecg.modules.saleCode.entity.SaleInterfaceItem;
|
|
|
|
+import org.jeecg.modules.saleCode.mapper.SaleInterfaceItemMapper;
|
|
|
|
+import org.jeecg.modules.saleCode.mapper.SaleInterfaceSyncMapper;
|
|
import org.jeecg.modules.saleCode.service.ISaleInterfaceSyncService;
|
|
import org.jeecg.modules.saleCode.service.ISaleInterfaceSyncService;
|
|
import org.jeecg.modules.saleCode.util.HttpUtils;
|
|
import org.jeecg.modules.saleCode.util.HttpUtils;
|
|
|
|
+import org.jeecg.modules.saleCode.util.PDFTableReader;
|
|
import org.jeecg.modules.system.mapper.SysDictMapper;
|
|
import org.jeecg.modules.system.mapper.SysDictMapper;
|
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.Serializable;
|
|
import java.io.Serializable;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.time.Instant;
|
|
import java.time.Instant;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @Description: 询价单-接口同步表
|
|
* @Description: 询价单-接口同步表
|
|
@@ -488,6 +498,224 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void parsePdfByType(String type, String txt, MultipartFile file) throws Exception{
|
|
|
|
+ switch(type) {
|
|
|
|
+ case "0" :
|
|
|
|
+ parseCSL(txt);
|
|
|
|
+ case "1" :
|
|
|
|
+ parseNorthern(txt, file);
|
|
|
|
+ case "2" :
|
|
|
|
+ parseNorthern2(txt, file);
|
|
|
|
+ case "3" :
|
|
|
|
+ parseBSM(txt, file);
|
|
|
|
+ case "7" :
|
|
|
|
+ parseWarine(txt, file);
|
|
|
|
+ default:
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void parseCSL(String txt) {
|
|
|
|
+ String[] nodes = txt.split("\n");
|
|
|
|
+ SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
|
|
|
|
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
|
+ saleInterfaceSync.setCreateBy(sysUser.getUsername());
|
|
|
|
+ for(int index = 0; index < nodes.length; index ++) {
|
|
|
|
+ if(nodes[index].contains("Request For Quote No.")) {
|
|
|
|
+ saleInterfaceSync.setReferenceNumber(nodes[index].replace("Request For Quote No. ", ""));
|
|
|
|
+ }
|
|
|
|
+ if(nodes[index].contains("Spare Part Type")) {
|
|
|
|
+ saleInterfaceSync.setPriority(nodes[index - 1]);
|
|
|
|
+ }
|
|
|
|
+ if(nodes[index].contains("Account Code")) {
|
|
|
|
+ saleInterfaceSync.setBuyerName(nodes[index].replace("Account Code ", ""));
|
|
|
|
+ }
|
|
|
|
+ if(nodes[index].contains("Account Code")) {
|
|
|
|
+ saleInterfaceSync.setBuyerName(nodes[index].replace("Account Code ", ""));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void parseNorthern(String txt, MultipartFile file) throws Exception{
|
|
|
|
+ String[] nodes = txt.split("\n");
|
|
|
|
+ SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
|
|
|
|
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
|
+ String id = UUIDGenerator.generate();
|
|
|
|
+ saleInterfaceSync.setId(id);
|
|
|
|
+ saleInterfaceSync.setCreateBy(sysUser.getUsername());
|
|
|
|
+ List<String> buyerNodes = PDFTableReader.getMultipleLineFields(file, "Supplier", "RFQ Details", true);
|
|
|
|
+ List<String> RFQNodes = PDFTableReader.getMultipleLineFields(file, "RFQ Details", "Buyer Message", true);
|
|
|
|
+ List<String> detailNodes = PDFTableReader.getMultipleLineFields(file, "UoM", "", true);
|
|
|
|
+ saleInterfaceSync.setBuyerName(PDFTableReader.getNextLineFields(file, "Company Name:").get(0));
|
|
|
|
+ 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.getNextLineFields(file, "Requisition No.:").get(0));
|
|
|
|
+ saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO:").get(0));
|
|
|
|
+ saleInterfaceSync.setVesselCode(PDFTableReader.getNextLineFields(file, "Vessel:").get(0));
|
|
|
|
+ saleInterfaceSync.setCurrencyCode(PDFTableReader.getNextLineFields(file, "Requested Currency:").get(0));
|
|
|
|
+
|
|
|
|
+ detailNodes = detailNodes.stream().filter(item -> !item.contains("Page")).collect(Collectors.toList());
|
|
|
|
+ int detailIndex = 0;
|
|
|
|
+ if(detailNodes != null) {
|
|
|
|
+ detailIndex = detailNodes.indexOf("1");
|
|
|
|
+ while(detailIndex + 7 <= detailNodes.size()) {
|
|
|
|
+ SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
|
|
|
|
+ saleInterfaceItem.setDescription(detailNodes.get(detailIndex + 1));
|
|
|
|
+ saleInterfaceItem.setQuantity(detailNodes.get(detailIndex + 5));
|
|
|
|
+ saleInterfaceItem.setSyncItemCode(detailNodes.get(detailIndex + 2));
|
|
|
|
+ saleInterfaceItem.setUnitOfMeasure(detailNodes.get(detailIndex + 6));
|
|
|
|
+ saleInterfaceItem.setHeadId(id);
|
|
|
|
+ saleInterfaceItemMapper.insert(saleInterfaceItem);
|
|
|
|
+ detailIndex += 7;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ saleInterfaceSyncMapper.insert(saleInterfaceSync);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void parseNorthern2(String txt, MultipartFile file) {
|
|
|
|
+ String[] nodes = txt.split("\n");
|
|
|
|
+ SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
|
|
|
|
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
|
+ String id = UUIDGenerator.generate();
|
|
|
|
+ saleInterfaceSync.setId(id);
|
|
|
|
+ saleInterfaceSync.setCreateBy(sysUser.getUsername());
|
|
|
|
+ List<String> detailNodes = PDFTableReader.getMultipleLineFields(file, "Enquiry", "Vendor Details", true);
|
|
|
|
+ saleInterfaceSync.setBuyerName(PDFTableReader.getNextLineFields(file, "Company Name:").get(0));
|
|
|
|
+ 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.getNextLineFields(file, "Requisition No.:").get(0));
|
|
|
|
+ saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO:").get(0));
|
|
|
|
+ saleInterfaceSync.setVesselCode(PDFTableReader.getNextLineFields(file, "Vessel:").get(0));
|
|
|
|
+ saleInterfaceSync.setCurrencyCode(PDFTableReader.getNextLineFields(file, "Requested Currency:").get(0));
|
|
|
|
+
|
|
|
|
+ int detailIndex = 0;
|
|
|
|
+ if(detailNodes != null) {
|
|
|
|
+ detailIndex = detailNodes.indexOf("1");
|
|
|
|
+ while(detailIndex < detailNodes.size()) {
|
|
|
|
+ SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
|
|
|
|
+ saleInterfaceItem.setDescription(detailNodes.get(detailIndex + 1));
|
|
|
|
+ saleInterfaceItem.setQuantity(detailNodes.get(detailIndex + 5));
|
|
|
|
+ saleInterfaceItem.setSyncItemCode(detailNodes.get(detailIndex + 2));
|
|
|
|
+ saleInterfaceItem.setUnitOfMeasure(detailNodes.get(detailIndex + 6));
|
|
|
|
+ saleInterfaceItem.setHeadId(id);
|
|
|
|
+ // saleInterfaceItemMapper.insert(saleInterfaceItem);
|
|
|
|
+ detailIndex += 7;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ // saleInterfaceSyncMapper.insert(saleInterfaceSync);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void parseBSM(String txt, MultipartFile file) {
|
|
|
|
+ String[] nodes = txt.split("\n");
|
|
|
|
+ SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
|
|
|
|
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
|
+ String id = UUIDGenerator.generate();
|
|
|
|
+ saleInterfaceSync.setId(id);
|
|
|
|
+ saleInterfaceSync.setCreateBy(sysUser.getUsername());
|
|
|
|
+ //List<String> detailNodes = PDFTableReader.getMultipleLineFields(file, "Enquiry", "Vendor Details");
|
|
|
|
+// saleInterfaceSync.setBuyerName(PDFTableReader.getNextLineFields(file, "Company Name:").get(0));
|
|
|
|
+// 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.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());
|
|
|
|
+
|
|
|
|
+ List<String> detailNodesPart1 = PDFTableReader.getMultipleLineFields(file, "Item Details", "1 of 2", false);
|
|
|
|
+ List<String> detailNodesPart2 = PDFTableReader.getMultipleLineFields(file, "Item Details", "Remarks To Vendor :", false);
|
|
|
|
+
|
|
|
|
+ List<String> fieldList = new ArrayList<>();
|
|
|
|
+ fieldList.add("S.No");
|
|
|
|
+ fieldList.add("Item Code");
|
|
|
|
+ fieldList.add("Item Description");
|
|
|
|
+ fieldList.add("Drawing Number");
|
|
|
|
+ fieldList.add("Part Number");
|
|
|
|
+ fieldList.add("Unit");
|
|
|
|
+ fieldList.add("Quantity");
|
|
|
|
+ fieldList.add("MD");
|
|
|
|
+ fieldList.add("SDoC");
|
|
|
|
+ fieldList.add("Origin of Product");
|
|
|
|
+ fieldList.add("MD");
|
|
|
|
+ fieldList.add("MD");
|
|
|
|
+ JSONArray table = PDFTableReader.getTable(file, fieldList);
|
|
|
|
+ List<String> strings = new ArrayList<>();
|
|
|
|
+// int detailIndex = 0;
|
|
|
|
+// if(detailNodes != null) {
|
|
|
|
+// detailIndex = detailNodes.indexOf("1");
|
|
|
|
+// while(detailIndex < detailNodes.size()) {
|
|
|
|
+// SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
|
|
|
|
+// saleInterfaceItem.setDescription(detailNodes.get(detailIndex + 1));
|
|
|
|
+// saleInterfaceItem.setQuantity(detailNodes.get(detailIndex + 5));
|
|
|
|
+// saleInterfaceItem.setSyncItemCode(detailNodes.get(detailIndex + 2));
|
|
|
|
+// saleInterfaceItem.setUnitOfMeasure(detailNodes.get(detailIndex + 6));
|
|
|
|
+// saleInterfaceItem.setHeadId(id);
|
|
|
|
+// saleInterfaceItemMapper.insert(saleInterfaceItem);
|
|
|
|
+// detailIndex += 7;
|
|
|
|
+//
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// }
|
|
|
|
+// saleInterfaceSyncMapper.insert(saleInterfaceSync);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void parseWarine(String txt, MultipartFile file) {
|
|
|
|
+ String[] nodes = txt.split("\n");
|
|
|
|
+ SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
|
|
|
|
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
|
+ String id = UUIDGenerator.generate();
|
|
|
|
+ saleInterfaceSync.setId(id);
|
|
|
|
+ saleInterfaceSync.setCreateBy(sysUser.getUsername());
|
|
|
|
+ List<String> buyerNodes = PDFTableReader.getMultipleLineFields(file, "Supplier", "RFQ Details", true);
|
|
|
|
+ List<String> RFQNodes = PDFTableReader.getMultipleLineFields(file, "RFQ Details", "Buyer Message", true);
|
|
|
|
+ saleInterfaceSync.setBuyerName(PDFTableReader.getNextLineFields(file, "Company Name:").get(0));
|
|
|
|
+ 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.getNextLineFields(file, "Requisition No.:").get(0));
|
|
|
|
+ saleInterfaceSync.setVesselImo(PDFTableReader.getNextLineFields(file, "IMO:").get(0));
|
|
|
|
+ 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.");
|
|
|
|
+ fieldList.add("Drawing");
|
|
|
|
+ fieldList.add("Quantity");
|
|
|
|
+ fieldList.add("UoM");
|
|
|
|
+ JSONArray table = PDFTableReader.getTable(file, fieldList);
|
|
|
|
+
|
|
|
|
+ int detailIndex = 0;
|
|
|
|
+// if(detailNodes != null) {
|
|
|
|
+// detailIndex = detailNodes.indexOf("1");
|
|
|
|
+// while(detailIndex < detailNodes.size()) {
|
|
|
|
+// SaleInterfaceItem saleInterfaceItem = new SaleInterfaceItem();
|
|
|
|
+// saleInterfaceItem.setDescription(detailNodes.get(detailIndex + 1));
|
|
|
|
+// saleInterfaceItem.setQuantity(detailNodes.get(detailIndex + 5));
|
|
|
|
+// saleInterfaceItem.setSyncItemCode(detailNodes.get(detailIndex + 2));
|
|
|
|
+// saleInterfaceItem.setUnitOfMeasure(detailNodes.get(detailIndex + 6));
|
|
|
|
+// saleInterfaceItem.setHeadId(id);
|
|
|
|
+// //saleInterfaceItemMapper.insert(saleInterfaceItem);
|
|
|
|
+// detailIndex += 7;
|
|
|
|
+//
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// }
|
|
|
|
+ //saleInterfaceSyncMapper.insert(saleInterfaceSync);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|