zhouxingyu 4 hari lalu
induk
melakukan
f46da8cf85

+ 13 - 8
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleInterfaceSyncController.java

@@ -502,14 +502,19 @@ public class SaleInterfaceSyncController {
          PDDocument document = null;
          InputStream inputStream = null;
 		 try {
-             inputStream = file.getInputStream();
-             document = PDDocument.load(inputStream);
-			 PDFTextStripper pdfStripper = new PDFTextStripper();
-			 String text = pdfStripper.getText(document);
-
-			 //PDFTableReader.load(document);
-			 //根据字符串解析订单
-			 saleInterfaceSyncService.parsePdfByType(type, text, file);
+		     if(file.getOriginalFilename().contains(".xls")) {
+                 saleInterfaceSyncService.parsePdfByType(type, "excel", file);
+             }else {
+                 inputStream = file.getInputStream();
+                 document = PDDocument.load(inputStream);
+                 PDFTextStripper pdfStripper = new PDFTextStripper();
+                 String text = pdfStripper.getText(document);
+
+                 //PDFTableReader.load(document);
+                 //根据字符串解析订单
+                 saleInterfaceSyncService.parsePdfByType(type, text, file);
+             }
+
 			 return Result.ok("导入成功");
 		 }catch (Exception ex){
 			 return Result.error(ex.getMessage());

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

@@ -1,5 +1,7 @@
 package org.jeecg.modules.saleCode.service.impl;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.builder.ExcelReaderBuilder;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.alibaba.fastjson.JSONArray;
@@ -10,6 +12,8 @@ import com.google.gson.JsonObject;
 import io.micrometer.core.instrument.util.StringUtils;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.logging.log4j.util.Strings;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.*;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
@@ -42,12 +46,14 @@ 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.jeecgframework.poi.util.ExcelUtil;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.InputStream;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
@@ -560,6 +566,8 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
             case "7" :
                 parseWarine(file);
                 break;
+            case "8" :
+                parseLemissoler(file);
             case "9" :
                 parseTechnava(file);
                 break;
@@ -1169,6 +1177,78 @@ public class SaleInterfaceSyncServiceImpl extends ServiceImpl<SaleInterfaceSyncM
         saleInterfaceSyncMapper.insert(saleInterfaceSync);
     }
 
+    public void parseLemissoler(MultipartFile file) throws Exception {
+        SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String id = UUIDGenerator.generate();
+        saleInterfaceSync.setId(id);
+        saleInterfaceSync.setCreateBy(sysUser.getUsername());
+        InputStream inputStream = file.getInputStream();
+        Workbook workbook = new HSSFWorkbook(inputStream);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<String> fields = new ArrayList<>();
+        int headerNum = 0;
+        for(int index = 0; index <= sheet.getLastRowNum(); index ++) {
+            Row row = sheet.getRow(index);
+            for(int cellIndex = 0; cellIndex <= sheet.getLastRowNum(); cellIndex ++) {
+                Cell cell = row.getCell(cellIndex);
+                if(cell != null) {
+                    cell.setCellType(CellType.STRING);
+                    if("Ship Name".equals(cell.getStringCellValue())) {
+                        if(row.getCell(cellIndex + 1) != null) {
+                            saleInterfaceSync.setVesselImo(row.getCell(cellIndex + 1).getStringCellValue());
+                        }
+                    }
+                    if("HazMat Division".equals(cell.getStringCellValue())) {
+                        headerNum = index;
+                    }
+                }
+            }
+        }
+
+        Row headerRow = sheet.getRow(headerNum);
+        for(int i = 0; i < sheet.getLastRowNum() + 1; i ++) {
+            Cell cell = headerRow.getCell(i);
+            if(cell != null) {
+                cell.setCellType(CellType.STRING);
+                fields.add(i, cell.getStringCellValue());
+            }
+        }
+        JSONArray jsonArray = new JSONArray();
+
+        for(int index = headerNum + 1; index <= sheet.getLastRowNum(); index ++) {
+            Row row = sheet.getRow(index);
+            JSONObject jsonObject = new JSONObject();
+            for(int cellIndex = 0; cellIndex <= fields.size(); cellIndex ++) {
+                Cell cell = row.getCell(cellIndex);
+                if(cell != null) {
+                    cell.setCellType(CellType.STRING);
+                    jsonObject.put(fields.get(cellIndex), cell.getStringCellValue());
+                }
+            }
+            if(Strings.isBlank(jsonObject.getString("Line No"))) {
+                break;
+            }
+
+            jsonArray.add(jsonObject);
+        }
+
+        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("Orig Qty"));
+                saleInterfaceItem.setComment(jsonObject.getString("Manufacturer"));
+                saleInterfaceItem.setHeadId(id);
+                saleInterfaceItemMapper.insert(saleInterfaceItem);
+            }
+        }
+
+
+        saleInterfaceSyncMapper.insert(saleInterfaceSync);
+        inputStream.close();
+    }
 
     public void parseTechnava(MultipartFile file) throws Exception{
         SaleInterfaceSync saleInterfaceSync = new SaleInterfaceSync();