Commit 9a01a7e6 zshaohui

1.解析客户表格,到barcode数据表中

1 个父辈 1e2c16a0
package com.neotel.smfcore.core.barcode.rest; package com.neotel.smfcore.core.barcode.rest;
import cn.hutool.poi.excel.ExcelUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.csv.CsvReader; import com.neotel.smfcore.common.csv.CsvReader;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil; import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.bean.BarcodeRule; import com.neotel.smfcore.core.barcode.bean.BarcodeRule;
import com.neotel.smfcore.core.barcode.bean.CodeBean; import com.neotel.smfcore.core.barcode.bean.CodeBean;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeDto; import com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeDto;
import com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeRuleDto; import com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeRuleDto;
import com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper; import com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper;
import com.neotel.smfcore.core.barcode.rest.bean.query.BarcodeQueryCriteria; import com.neotel.smfcore.core.barcode.rest.bean.query.BarcodeQueryCriteria;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.manager.IComponentManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.barcode.utils.CodeResolve; import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.barcode.utils.QrcodeUtils; import com.neotel.smfcore.core.barcode.utils.QrcodeUtils;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
...@@ -25,6 +31,7 @@ import io.swagger.annotations.Api; ...@@ -25,6 +31,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
...@@ -39,10 +46,10 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -39,10 +46,10 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.io.IOException;
import java.util.List; import java.io.InputStream;
import java.util.Map; import java.text.SimpleDateFormat;
import java.util.Set; import java.util.*;
@Slf4j @Slf4j
@RestController @RestController
...@@ -64,6 +71,9 @@ public class BarcodeController { ...@@ -64,6 +71,9 @@ public class BarcodeController {
@Autowired @Autowired
private CodeResolve codeResolve; private CodeResolve codeResolve;
@Autowired
private IComponentManager componentManager;
@ApiOperation("导出条码数据") @ApiOperation("导出条码数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
public void download(HttpServletResponse response, BarcodeQueryCriteria criteria) throws Exception { public void download(HttpServletResponse response, BarcodeQueryCriteria criteria) throws Exception {
...@@ -218,6 +228,90 @@ public class BarcodeController { ...@@ -218,6 +228,90 @@ public class BarcodeController {
return ResultBean.newErrorResult(1, "smfcore.error.barcode.invalid", "未找到有效条码"); return ResultBean.newErrorResult(1, "smfcore.error.barcode.invalid", "未找到有效条码");
} }
@ApiOperation("解析客户表格,增加物料信息")
@RequestMapping("/excelTransferToBarcode")
@AnonymousAccess
public ResultBean excelTransferToBarcode(@RequestParam MultipartFile file) throws IOException {
ExcelUtil util = new ExcelUtil();
// 获取excel文件数据流
InputStream is = file.getInputStream();
// 创建工作簿
Workbook wb = WorkbookFactory.create(is);
Sheet sheet = wb.getSheetAt(0);
List<Barcode> barcodeList = new ArrayList<>();
// 遍历每一行数据
for (int i = 3; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
String partNumber = row.getCell(1).getStringCellValue();
String barcodeStr = "";
Cell cell = row.getCell(2);
if (cell != null){
if (cell.getCellType() == CellType.STRING){
barcodeStr = cell.getStringCellValue();
} else if (cell.getCellType() == CellType.NUMERIC){
double value = cell.getNumericCellValue();
barcodeStr = String.valueOf((int) value);
}
}
if (StringUtils.isEmpty(barcodeStr)){
continue;
}
double amount = row.getCell(3).getNumericCellValue();
String yyMMdd = row.getCell(5).getStringCellValue();
// 假设时间格式为HH:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date date = row.getCell(6).getDateCellValue();
String hhMMss = sdf.format(date);
Date produceDate = DateUtil.toDate(yyMMdd + " " + hhMMss, "yy/MM/dd HH:mm:ss");
Barcode barcode = new Barcode();
barcode.setBarcode(barcodeStr);
barcode.setPartNumber(partNumber);
if (amount == 0){
amount = 1;
}
barcode.setAmount((int) amount);
barcode.setProduceDate(produceDate);
barcode.setPlateSize(7);
barcode.setHeight(8);
barcodeList.add(barcode);
}
for (int i = 0; i < barcodeList.size(); i++) {
Barcode barcode = barcodeList.get(i);
Component component = componentManager.findByPartNumberAndProvider(barcode.getPartNumber(),barcode.getProvider());
if(component == null) {
//log.info("自动添加[" + barcode.getPartNumber() + "][" + barcode.getProvider() + "]的档案信息[" + barcode.getPlateSize() + "x" + barcode.getHeight() + "]");
component = new Component();
component.setPartNumber(barcode.getPartNumber());
component.setAmount(barcode.getAmount());
component.setPlateSize(barcode.getPlateSize());
component.setHeight(barcode.getHeight());
component.setName(barcode.getPartNumber());
component.setProvider(barcode.getProvider());
component.setType(COMPONENT_TYPE.COMPONENT);
componentManager.save(component);
}
Barcode dbBarcode = barcodeManager.findByBarcode(barcode.getBarcode());
if (dbBarcode == null){
log.info("当前的保存的顺序为:"+i+",目标数量为:"+barcodeList.size()+",barcode为:"+barcode.getBarcode()+"partNumber为:"+barcode.getPartNumber());
barcodeManager.saveBarcode(barcode);
}
}
return ResultBean.newOkResult("");
}
protected String handleBarcode(String fileURL) throws Exception { protected String handleBarcode(String fileURL) throws Exception {
log.info("开始读取文件:" + fileURL); log.info("开始读取文件:" + fileURL);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!