|
|
|
@ -13,6 +13,9 @@ import com.gaotao.modules.wms.data.InboundQcResultData; |
|
|
|
import com.gaotao.modules.wms.data.PoOrderRollNoOutData; |
|
|
|
import com.gaotao.modules.wms.entity.PoOrderRollNoImportData; |
|
|
|
import com.gaotao.modules.wms.service.WmsPrintService; |
|
|
|
import org.apache.poi.ss.usermodel.Row; |
|
|
|
import org.apache.poi.xssf.streaming.SXSSFSheet; |
|
|
|
import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFRow; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFSheet; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
|
|
@ -22,11 +25,15 @@ import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import java.io.IOException; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.nio.charset.StandardCharsets; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.net.URLEncoder; |
|
|
|
|
|
|
|
/** |
|
|
|
* @CLASSNAME WmsPrintServiceImpl |
|
|
|
@ -127,6 +134,62 @@ public class WmsPrintServiceImpl implements WmsPrintService { |
|
|
|
return new PageUtils(list); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void exportKuCunLabelData(InventoryStockOutData inData, HttpServletResponse response) throws IOException { |
|
|
|
if (inData == null) { |
|
|
|
inData = new InventoryStockOutData(); |
|
|
|
} |
|
|
|
|
|
|
|
final int batchSize = 5000; |
|
|
|
final SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
|
|
|
|
String fileName = URLEncoder.encode( |
|
|
|
"实时库存数据_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date()), |
|
|
|
"UTF-8" |
|
|
|
).replace("+", "%20"); |
|
|
|
|
|
|
|
response.setCharacterEncoding(StandardCharsets.UTF_8.name()); |
|
|
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); |
|
|
|
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + fileName + ".xlsx"); |
|
|
|
|
|
|
|
SXSSFWorkbook workbook = new SXSSFWorkbook(500); |
|
|
|
workbook.setCompressTempFiles(true); |
|
|
|
try { |
|
|
|
SXSSFSheet sheet = workbook.createSheet("实时库存数据"); |
|
|
|
int rowIndex = 0; |
|
|
|
Row headerRow = sheet.createRow(rowIndex++); |
|
|
|
fillInventoryHeader(headerRow); |
|
|
|
|
|
|
|
long currentPage = 1L; |
|
|
|
long totalPages = 1L; |
|
|
|
while (currentPage <= totalPages) { |
|
|
|
IPage<InventoryStockOutData> pageData = this.wmsPrintDao.getKuCunLabelData(new Page<InventoryStockOutData>(currentPage, batchSize), inData); |
|
|
|
totalPages = Math.max(pageData.getPages(), 1L); |
|
|
|
List<InventoryStockOutData> records = pageData.getRecords(); |
|
|
|
if (records == null || records.isEmpty()) { |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
for (InventoryStockOutData item : records) { |
|
|
|
Row row = sheet.createRow(rowIndex++); |
|
|
|
fillInventoryRow(row, item, dateTimeFormatter, dateFormatter); |
|
|
|
} |
|
|
|
sheet.flushRows(500); |
|
|
|
currentPage++; |
|
|
|
} |
|
|
|
|
|
|
|
workbook.write(response.getOutputStream()); |
|
|
|
response.flushBuffer(); |
|
|
|
} finally { |
|
|
|
try { |
|
|
|
workbook.close(); |
|
|
|
} finally { |
|
|
|
workbook.dispose(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void updateInventoryStockAttribute(List<InventoryStockOutData> inList){ |
|
|
|
@ -147,13 +210,8 @@ public class WmsPrintServiceImpl implements WmsPrintService { |
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void uploadPoPartPrintExcel(MultipartFile file, PoOrderRollNoImportData importData) { |
|
|
|
InputStream is = null; |
|
|
|
XSSFWorkbook workbook = null; |
|
|
|
try { |
|
|
|
// 转流 |
|
|
|
is = file.getInputStream(); |
|
|
|
// 读取工作簿 |
|
|
|
workbook = new XSSFWorkbook(is); |
|
|
|
try (InputStream is = file.getInputStream(); |
|
|
|
XSSFWorkbook workbook = new XSSFWorkbook(is)) { |
|
|
|
// 读取工作表 |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(0); |
|
|
|
// 获取行数 |
|
|
|
@ -285,17 +343,6 @@ public class WmsPrintServiceImpl implements WmsPrintService { |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
throw new RuntimeException("导入失败:" + e.getMessage()); |
|
|
|
} finally { |
|
|
|
try { |
|
|
|
if (workbook != null) { |
|
|
|
workbook.close(); |
|
|
|
} |
|
|
|
if (is != null) { |
|
|
|
is.close(); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
// 忽略关闭异常 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -348,4 +395,59 @@ public class WmsPrintServiceImpl implements WmsPrintService { |
|
|
|
|
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
private void fillInventoryHeader(Row headerRow) { |
|
|
|
String[] headers = new String[]{ |
|
|
|
"BU", "标签条码", "标签数量", "标签状态", "物料编码", "物料名称", "规格型号", "单位", |
|
|
|
"标签类型", "上级标签号", "上级标签类型", "仓库", "库位", "入库日期", "生产日期", "有效期", |
|
|
|
"来源单据类型", "来源单据号", "来源单据行号", "合约号码", "批次号", "备注说明" |
|
|
|
}; |
|
|
|
for (int i = 0; i < headers.length; i++) { |
|
|
|
headerRow.createCell(i).setCellValue(headers[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void fillInventoryRow(Row row, InventoryStockOutData item, SimpleDateFormat dateTimeFormatter, SimpleDateFormat dateFormatter) { |
|
|
|
String[] values = new String[]{ |
|
|
|
safeValue(item.getBuNo()), |
|
|
|
safeValue(item.getRollNo()), |
|
|
|
safeValue(item.getQtyOnHand()), |
|
|
|
safeValue(item.getStatus()), |
|
|
|
safeValue(item.getPartNo()), |
|
|
|
safeValue(item.getPartDescription()), |
|
|
|
safeValue(item.getSpec()), |
|
|
|
safeValue(item.getUmName()), |
|
|
|
safeValue(item.getLabelType()), |
|
|
|
safeValue(item.getParentRollNo()), |
|
|
|
safeValue(item.getParentRollType()), |
|
|
|
safeValue(item.getWarehouseName()), |
|
|
|
safeValue(item.getLocationName()), |
|
|
|
formatDate(item.getFirstInDate(), dateTimeFormatter), |
|
|
|
formatDate(item.getManufactureDate(), dateFormatter), |
|
|
|
formatDate(item.getExpiredDate(), dateFormatter), |
|
|
|
safeValue(item.getOrderref0()), |
|
|
|
safeValue(item.getOrderref1()), |
|
|
|
safeValue(item.getOrderref2()), |
|
|
|
safeValue(item.getBatchNo()), |
|
|
|
safeValue(item.getWdr()), |
|
|
|
safeValue(item.getRemark()) |
|
|
|
}; |
|
|
|
for (int i = 0; i < values.length; i++) { |
|
|
|
row.createCell(i).setCellValue(values[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private String formatDate(java.util.Date value, SimpleDateFormat formatter) { |
|
|
|
if (value == null) { |
|
|
|
return ""; |
|
|
|
} |
|
|
|
return formatter.format(value); |
|
|
|
} |
|
|
|
|
|
|
|
private String safeValue(Object value) { |
|
|
|
if (value == null) { |
|
|
|
return ""; |
|
|
|
} |
|
|
|
return String.valueOf(value); |
|
|
|
} |
|
|
|
} |