Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java =================================================================== diff -u -r13548 -r13916 --- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java (.../InventoryRecordManagerImpl.java) (revision 13548) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java (.../InventoryRecordManagerImpl.java) (revision 13916) @@ -1,5 +1,8 @@ package com.forgon.disinfectsystem.inventoryrecord.service; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.OutputStream; import java.sql.ResultSet; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -14,6 +17,12 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFFont; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.vo.LoginUserData; @@ -34,8 +43,12 @@ import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.tousse.materialmanager.service.MaterialCheckManager; import com.forgon.disinfectsystem.tousse.materialmanager.service.MaterialEntryManager; +import com.forgon.excel.service.ExcelUtils; import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; +import com.forgon.tools.Path; +import com.forgon.tools.excel.ExcelCellStyle; +import com.forgon.tools.excel.ExcelHelper; import com.forgon.tools.hibernate.ObjectDao; /** @@ -527,5 +540,102 @@ } } + @Override + public void exportInventoryReocrd(OutputStream ops,String id) { + if(StringUtils.isNotBlank(id)){ + InventoryRecord record = getById(id); + if(record != null){ + createExportFile(record, ops); + } + } + } + + public void createExportFile(InventoryRecord record,OutputStream ops) { + String inputFile = Path.getWebAppRoot() + + "/disinfectsystem/reportforms/emptyExcelDemo.xls"; + FileInputStream fos = null; + POIFSFileSystem fs = null; + HSSFWorkbook wb = null; + try { + fos = new FileInputStream(inputFile); + fs = new POIFSFileSystem(fos); + wb = new HSSFWorkbook(fs); + ExcelHelper.setWorkbook(wb); + ExcelCellStyle.iniAllStyles(); + HSSFSheet sheet = wb.getSheetAt(0); + + HSSFCellStyle cellStyle = wb.createCellStyle(); // 数据单元格格式 + cellStyle.setWrapText(true); + cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); + cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); + cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); + cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); + cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); + HSSFFont font = wb.createFont(); + font.setFontHeightInPoints((short) 10); // 设置字体大小为10 + font.setFontName("宋体"); + cellStyle.setFont(font); + + HSSFRow operatingRow1 = sheet.createRow(0); + if(InventoryRecord.TYPE_DISPOSABLEGOOD.equals(record.getType())){ + ExcelUtils.createStringCell(operatingRow1, cellStyle, 0, "序号"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 1, "外部编码"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 2, "名称"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 3, "规格"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 4, "批次"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 5, "账面数量"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 6, "盘点数量"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 7, "单价"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 8, "供应商"); + }else{ + ExcelUtils.createStringCell(operatingRow1, cellStyle, 0, "序号"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 1, "名称"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 2, "规格"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 3, "账面数量"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 4, "盘点数量"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 5, "单价"); + ExcelUtils.createStringCell(operatingRow1, cellStyle, 6, "供应商"); + } + + int row = 1; + if(record.getItems() != null){ + for (InventoryItem item : record.getItems()) { + HSSFRow operatingRow = sheet.createRow(row); + ExcelUtils.createIntCell(operatingRow, cellStyle, 0, row); + if(InventoryRecord.TYPE_DISPOSABLEGOOD.equals(record.getType())){ + ExcelUtils.createStringCell(operatingRow, cellStyle, 1, item.getExternalCode()); + ExcelUtils.createStringCell(operatingRow, cellStyle, 2,item.getMaterialName()); + ExcelUtils.createStringCell(operatingRow, cellStyle, 3, item.getSpecification()); + ExcelUtils.createStringCell(operatingRow, cellStyle, 4, item.getBatchNumber()); + ExcelUtils.createIntCell(operatingRow, cellStyle, 5, item.getStorage()); + ExcelUtils.createIntCell(operatingRow, cellStyle, 6, item.getAmount()); + ExcelUtils.createDoubleCell(operatingRow, cellStyle, 7, item.getPrice()); + ExcelUtils.createStringCell(operatingRow, cellStyle, 8, item.getSupplierName()); + }else{ + ExcelUtils.createStringCell(operatingRow, cellStyle, 1,item.getMaterialName()); + ExcelUtils.createStringCell(operatingRow, cellStyle, 2, item.getSpecification()); + ExcelUtils.createIntCell(operatingRow, cellStyle, 3, item.getStorage()); + ExcelUtils.createIntCell(operatingRow, cellStyle, 4, item.getAmount()); + ExcelUtils.createDoubleCell(operatingRow, cellStyle, 5, item.getPrice()); + ExcelUtils.createStringCell(operatingRow, cellStyle, 6, item.getSupplierName()); + } + + row++; + } + } + wb.write(ops); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + ops.close(); + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + } Index: ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryDisposableGoodsForm.js =================================================================== diff -u -r13248 -r13916 --- ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryDisposableGoodsForm.js (.../inventoryDisposableGoodsForm.js) (revision 13248) +++ ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryDisposableGoodsForm.js (.../inventoryDisposableGoodsForm.js) (revision 13916) @@ -292,6 +292,12 @@ }] })], buttons : [{ + text : '导出', + hidden:(recordId == ""), + handler : function() { + location.href = WWWROOT + "/disinfectsystem/stocktakerecordmanager/exportInventoryRecord.jsp?id=" + recordId + "&time=" + time; + } + },{ text : '暂存', id:'button1', hidden:status=="已更新"?true:false, Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManager.java =================================================================== diff -u -r13179 -r13916 --- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManager.java (.../InventoryRecordManager.java) (revision 13179) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManager.java (.../InventoryRecordManager.java) (revision 13916) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.inventoryrecord.service; +import java.io.OutputStream; import java.util.List; import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryItem; @@ -25,4 +26,6 @@ public void deleteInventoryRecords(String ids); + public void exportInventoryReocrd(OutputStream ops,String id); + } Index: ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/exportInventoryRecord.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/exportInventoryRecord.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/exportInventoryRecord.jsp (revision 13916) @@ -0,0 +1,17 @@ +<%@page import="com.forgon.disinfectsystem.inventoryrecord.service.InventoryRecordManager"%> +<%@ page contentType="text/html; charset=UTF-8"%><%@ page + import="com.forgon.tools.*,org.apache.commons.lang.*,com.forgon.directory.service.*"%> +<% +String time = request.getParameter("time"); +if(StringUtils.isBlank(time)){ + time = ""; +} +String fileName="盘点记录" + time + ".xls"; +String id = request.getParameter("id"); +ServletOutputStream servletOutputStream = response.getOutputStream(); +response.setContentType("application/octet-stream"); +response.addHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes("GBK"), "ISO8859_1")); +InventoryRecordManager inventoryRecordManager = (InventoryRecordManager)SpringBeanManger.getBean("inventoryRecordManager"); +inventoryRecordManager.exportInventoryReocrd(response.getOutputStream(),id); +servletOutputStream.flush(); +%> \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryMaterialForm.js =================================================================== diff -u -r13248 -r13916 --- ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryMaterialForm.js (.../inventoryMaterialForm.js) (revision 13248) +++ ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryMaterialForm.js (.../inventoryMaterialForm.js) (revision 13916) @@ -110,6 +110,12 @@ }] })], buttons : [{ + text : '导出', + hidden:(recordId == ""), + handler : function() { + location.href = WWWROOT + "/disinfectsystem/stocktakerecordmanager/exportInventoryRecord.jsp?id=" + recordId + "&time=" + time; + } + },{ text : '暂存', hidden:status=="已更新"?true:false, id:'button1', Index: ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.js =================================================================== diff -u -r13179 -r13916 --- ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.js (.../inventoryrecordView.js) (revision 13179) +++ ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.js (.../inventoryrecordView.js) (revision 13916) @@ -352,6 +352,23 @@ handler : function() { deleteStockRecord(grid); } + },{ + text : '导出', + iconCls:'btn_ext_download', + handler : function() { + var records = grid.getSelectionModel().getSelections(); + if (records.length == 0) { + showResult("请选择要导出的记录!"); + return false; + } + if(records.length > 1){ + showResult("一次只能导出一条盘点记录!"); + return false; + } + var recordId = records[0].data['id']; + var time = records[0].data['time'];; + location.href = WWWROOT + "/disinfectsystem/stocktakerecordmanager/exportInventoryRecord.jsp?id=" + recordId + "&time=" + time; + } }]; grid = new Ext.ux.ForgonPageGrid({ Index: forgon-core/src/main/java/com/forgon/excel/service/ExcelUtils.java =================================================================== diff -u -r12531 -r13916 --- forgon-core/src/main/java/com/forgon/excel/service/ExcelUtils.java (.../ExcelUtils.java) (revision 12531) +++ forgon-core/src/main/java/com/forgon/excel/service/ExcelUtils.java (.../ExcelUtils.java) (revision 13916) @@ -10,6 +10,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; @@ -73,4 +74,31 @@ } return index.intValue(); } + + public static void createStringCell(HSSFRow row, HSSFCellStyle cellStyle, + int cellIndex, String value) { + HSSFCell cell = row.createCell(cellIndex); + cell.setCellStyle(cellStyle); + if (value != null) { + cell.setCellValue(value); + } + } + + public static void createIntCell(HSSFRow row, HSSFCellStyle cellStyle, + int cellIndex, Integer value) { + HSSFCell cell = row.createCell(cellIndex); + cell.setCellStyle(cellStyle); + if (value != null) { + cell.setCellValue(value); + } + } + + public static void createDoubleCell(HSSFRow row, HSSFCellStyle cellStyle, + int cellIndex, Double value) { + HSSFCell cell = row.createCell(cellIndex); + cell.setCellStyle(cellStyle); + if (value != null) { + cell.setCellValue(value); + } + } } Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/emptyExcelDemo.xls =================================================================== diff -u Binary files differ