Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManagerImpl.java =================================================================== diff -u --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManagerImpl.java (revision 0) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManagerImpl.java (revision 21628) @@ -0,0 +1,388 @@ +package com.forgon.disinfectsystem.maintain.importexpensivegoods.service; + +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +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 org.springframework.stereotype.Service; + +import com.forgon.attachfile.service.AttachFileManager; +import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; +import com.forgon.disinfectsystem.expensiveGoods.service.ExpensiveGoodsManager; +import com.forgon.tools.GB2Alpha; +import com.forgon.tools.GB2WB; +import com.forgon.tools.excel.ParerUtils; +import com.forgon.tools.hibernate.ObjectDao; +/** + * + * @author qjw + * + * 2012-5-10 下午02:35:53 + */ +@Service("importExpensiveGoodsManagerTarget") +public class ImportExpensiveGoodsManagerImpl implements ImportExpensiveGoodsManager { + + final static Logger log = Logger.getLogger(ImportExpensiveGoodsManagerImpl.class); + + private AttachFileManager attachFileManager; + private ObjectDao objectDao; + private ExpensiveGoodsManager expensiveGoodsManager; + + + public void setExpensiveGoodsManager( + ExpensiveGoodsManager expensiveGoodsManager) { + this.expensiveGoodsManager = expensiveGoodsManager; + } + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + public void setAttachFileManager(AttachFileManager attachFileManager) { + this.attachFileManager = attachFileManager; + } + + @Override + public Map importExpensiveGoods(HttpServletRequest re) { + List inputStreams = attachFileManager + .getInputStreamFromAttachFile(re); + return importExpensiveGoods(inputStreams); + } + @Override + public Map importExpensiveGoods(List inputStreams) { + Map msg = new HashMap(); + if(CollectionUtils.isEmpty(inputStreams)){ + return msg; + } + AtomicInteger totalCount = new AtomicInteger(0); + for (InputStream is : inputStreams) { + try { + POIFSFileSystem fs = new POIFSFileSystem(is); + HSSFWorkbook wb = new HSSFWorkbook(fs); + + totalCount.set(importExpensiveGoods(wb.getSheet("高值耗材"), msg, totalCount.intValue())); + + objectDao.flush(); + } catch (Exception e) { + e.printStackTrace(); + } + } + Set set = msg.keySet(); + for (String key : set) { + // 格式:成功插入数量#插入失败数量#失败行1,失败行2... + if (msg.get(key) != null) { + String[] item = msg.get(key).split("#"); + String failureRow = ""; + if (item.length > 2) { + failureRow = item[2]; + log.debug(key + ":成功插入" + item[0] + "条,失败" + item[1] + + "条,失败行号:" + failureRow); + } + } + } + return msg; + } +// private int importExpensiveGoods(HSSFSheet expensiveGoodsSheet, +// Map msg, int totalCount,boolean byReflect) { +// StringBuffer sb = new StringBuffer(); +// if (expensiveGoodsSheet == null) { +// return totalCount; +// } +// int lastRowNum = expensiveGoodsSheet.getLastRowNum(); +// int successCount = 0, failureCount = 0; +// +// int rowNum = 0; +// HSSFRow row = expensiveGoodsSheet.getRow(rowNum); +// int rowSize = row.getLastCellNum(); +// +// //获得每列的属性名 +// List columnName = new ArrayList(); +// for(int i=0;i msg, int totalCount) { + StringBuffer sb = new StringBuffer(); + if (expensiveGoodsSheet == null) { + return totalCount; + } + int lastRowNum = expensiveGoodsSheet.getLastRowNum(); + int successCount = 0, failureCount = 0; + + for (int i = 1; i <= lastRowNum; i++) { + HSSFRow row = expensiveGoodsSheet.getRow(i); + int currentRowNum = i + 1; + int currentColumnNum = 0; + if (row == null || ParerUtils.isBlankRow(row)) { + continue; + } + + // 名称 + String name = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if (StringUtils.isBlank(name)) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + } + + //包装规格 + String packageSpec = ParerUtils.getCellFormatValue(row, currentColumnNum++); + + + // 分类级别 一类二类三类 + String grade = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isNotBlank(grade)){ + if (!ExpensiveGoods.gradeList.contains(grade)) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + continue; + } + } + + //物资编码 + String inventorySerialNumber = ParerUtils.getCellFormatValue(row, currentColumnNum++); + + //单位 + String unit = ParerUtils.getCellFormatValue(row,currentColumnNum++); + + // 最小库存(Integer) + Integer minStorage = null; + String minStorageStr = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if (StringUtils.isNotBlank(minStorageStr)) { + try { + minStorage = Integer.parseInt(minStorageStr); + } catch (Exception e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_NUMBER); + continue; + } + } + + // 最大库存(Integer) + Integer maxStorage = null; + String maxStorageStr = ParerUtils.getCellFormatValue(row,currentColumnNum++); + if (StringUtils.isNotBlank(maxStorageStr)) { + try { + maxStorage = Integer.parseInt(maxStorageStr); + } catch (Exception e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_NUMBER); + continue; + } + } + + // 能否作为器械包材料(String) + String isPartOfTousseMaterial = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if (StringUtils.isNotBlank(isPartOfTousseMaterial)) { + if (!com.forgon.tools.Constants.STR_CAN.equals(isPartOfTousseMaterial) + && !com.forgon.tools.Constants.STR_NO.equals(isPartOfTousseMaterial) ){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); + continue; + } + } else { + isPartOfTousseMaterial = "能"; //如果为空, 则置为默认值“能” + } + + // 能否被科室申请 + String isApplicationMaterial = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if (StringUtils.isNotBlank(isApplicationMaterial)) { + if (!com.forgon.tools.Constants.STR_CAN.equals(isApplicationMaterial) + && !com.forgon.tools.Constants.STR_NO.equals(isApplicationMaterial) ){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); + continue; + } + } else { + isApplicationMaterial = "能"; //如果为空, 则置为默认值“能” + } + + // 最小申请数量(Integer) + Integer minApplyAmount = null; + String minApplyAmountStr = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if (StringUtils.isNotBlank(minApplyAmountStr)) { + try { + minApplyAmount = Integer.parseInt(minApplyAmountStr); + } catch (Exception e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_NUMBER); + continue; + } + } + + //最大申请数量(Integer) + Integer maxApplyAmount = null; + String maxApplyAmountStr = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if (StringUtils.isNotBlank(maxApplyAmountStr)) { + try { + maxApplyAmount = Integer.parseInt(maxApplyAmountStr); + } catch (Exception e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_NUMBER); + continue; + } + } + + // 参考价(Double) + Double referencePrice = null; + String referencePriceStr = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if (StringUtils.isNotBlank(referencePriceStr)) { + try { + referencePrice = Double.parseDouble(referencePriceStr); + } catch (Exception e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_MONEY); + continue; + } + } + + //注册证id(Long) + Long certificationId = null; + String certificationIdStr = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isNotBlank(certificationIdStr)){ + try{ + certificationId = Long.parseLong(certificationIdStr); + }catch (Exception e){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum, com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_NUMBER); + continue; + } + } + + //收费码 + String chargeCode = ParerUtils.getCellFormatValue(row, currentColumnNum++); + + //平台代码 + String platformCode = ParerUtils.getCellFormatValue(row, currentColumnNum++); + + //是否植入物 + String isImplant = ParerUtils.getCellFormatValue(row,currentColumnNum++); + if(StringUtils.isNotBlank(isImplant)){ + if (!com.forgon.tools.Constants.STR_YES.equals(isImplant) + && !com.forgon.tools.Constants.STR_NO.equals(isImplant) ){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); + continue; + } + } + + ExpensiveGoods expensiveGoods = expensiveGoodsManager + .getExpensiveGoodsByName(name); + if (expensiveGoods == null) { + expensiveGoods = new ExpensiveGoods(); + expensiveGoods.setName(name); + expensiveGoods.setWbCode(GB2WB.getWBCode(expensiveGoods + .getName())); + expensiveGoods.setSpelling(GB2Alpha.string2Alpha(expensiveGoods + .getName())); + } + + expensiveGoods.setIsApplicationMaterial(isApplicationMaterial); + expensiveGoods.setIsPartOfTousseMaterial(isPartOfTousseMaterial); + expensiveGoods.setMaxStorage(maxStorage); + expensiveGoods.setMinStorage(minStorage); + expensiveGoods.setReferencePrice(referencePrice); + expensiveGoods.setGrade(grade); + expensiveGoods.setUnit(unit); + expensiveGoods.setPackageSpec(packageSpec); + expensiveGoods.setInventorySerialNumber(inventorySerialNumber); + expensiveGoods.setMaxApplyAmount(maxApplyAmount); + expensiveGoods.setMinApplyAmount(minApplyAmount); + expensiveGoods.setCertificationId(certificationId); + expensiveGoods.setPlatformCode(platformCode); + expensiveGoods.setChargeCode(chargeCode); + expensiveGoods.setIsImplant(isImplant); + totalCount = saveOrUpdateAndClearCache(totalCount, expensiveGoods); + successCount++; + + } + // 格式:成功插入数量#插入失败数量#失败行1,失败行2... + msg.put("高值耗材管理", + successCount + "#" + failureCount + "#" + sb.toString()); + return totalCount; + } + + private Integer saveOrUpdateAndClearCache(int count, Object po) { + if (po != null) { + objectDao.saveOrUpdate(po); + if (++count % 50 == 0) { + objectDao.clearCache(); + } + } + return count; + } + + private int appendFailureRowNumAndRecordFailureNum(int failureCount, + StringBuffer sb, int currentRowNum, int columnNum, int errorType) { + failureCount++;// + appendFailureRowNum(sb, currentRowNum,columnNum,errorType); + return failureCount; + } + + private void appendFailureRowNum(StringBuffer sb, int currentRowNum, int columnNum, int errorType) { + if (sb.length() > 0) { + sb.append("|"); + } + sb.append(currentRowNum + "," + columnNum + "," + errorType); + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/diposableGoodsDemo.xls =================================================================== diff -u -r20772 -r21628 Binary files differ Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsManagerImpl.java =================================================================== diff -u -r21619 -r21628 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsManagerImpl.java (.../ExpensiveGoodsManagerImpl.java) (revision 21619) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsManagerImpl.java (.../ExpensiveGoodsManagerImpl.java) (revision 21628) @@ -1453,7 +1453,15 @@ ExpensiveGoods.class.getSimpleName(), "inventorySerialNumber", inventorySerialNumber); } + @Override + public ExpensiveGoods getExpensiveGoodsByName(String name){ + return (ExpensiveGoods) objectDao.getByProperty( + ExpensiveGoods.class.getSimpleName(),"name", + name); + } + + @Override public ExpensiveGoods getExpensiveGoodsById_ForUpdate(String id) { return (ExpensiveGoods) objectDao.getByID_ForUpdate( ExpensiveGoods.class.getSimpleName(), Long.valueOf(id)); Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/action/ImportExpensiveGoodsController.java =================================================================== diff -u --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/action/ImportExpensiveGoodsController.java (revision 0) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/action/ImportExpensiveGoodsController.java (revision 21628) @@ -0,0 +1,130 @@ +package com.forgon.disinfectsystem.maintain.importexpensivegoods.action; + +import java.util.Map; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +import com.forgon.disinfectsystem.maintain.importexpensivegoods.service.ImportExpensiveGoodsManager; + +/** + * + * @author qjw + * + * 2012-5-10 下午02:00:47 + * + * 升级到Spring 4.2后进行重构,Terry Kwan, 2016-02-12 + */ +@Controller +public class ImportExpensiveGoodsController { + + private ImportExpensiveGoodsManager importExpensiveGoodsManager; + + public void setImportExpensiveGoodsManager( + ImportExpensiveGoodsManager importExpensiveGoodsManager) { + this.importExpensiveGoodsManager = importExpensiveGoodsManager; + } + + /** + * 处理提交导入的文件请求 + * @param request + * @param response + * @return + * @throws Exception + */ + @RequestMapping(value = "/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods.mhtml", method=RequestMethod.POST) + protected ModelAndView onSubmit(HttpServletRequest request, + HttpServletResponse response) + throws Exception { + String redirectUrl = "/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods"; + //没有实现通过zip来导入高值耗材 +// if( attachFileManager.isInputStreamContainZipFile(request) ) +// { +// List inputStreams = attachFileManager +// .getInputStreamFromAttachFile(request); +// for (InputStream is : inputStreams) +// { +// Map map = importExpensiveGoodsFromZipManager.importBasedata(is); +// Set keySet = map.keySet(); +// int count = keySet.size(); +// String[][] msg = new String[count][4]; +// for (String key : keySet) { +// count--; +// if (count < 0) { +// break; +// } +// msg[count][0] = key; +// // 格式:成功插入数量#插入失败数量#失败行1,失败行2... +// String v = map.get(key); +// if (v != null) +// { +// String[] vs = v.split("#"); +// if (vs[0].equals("-1")) { +// msg[count][3] = "系统出错,插入失败"; +// } else { +// msg[count][1] = vs[0]; +// msg[count][2] = vs[1]; +// if (vs.length > 2) { +// msg[count][3] = vs[2]; +// } +// } +// } +// } +// return new ModelAndView(redirectUrl, "msg", msg); +// } +//// return new ModelAndView(redirectUrl, "msg", null); +// } + + Map map = importExpensiveGoodsManager.importExpensiveGoods(request); + Set keySet = map.keySet(); + int count = keySet.size(); + String[][] msg = new String[count][4]; + for (String key : keySet) { + count--; + if (count < 0) { + break; + } + msg[count][0] = key; + // 格式:成功插入数量#插入失败数量#失败行1,失败行2... + String v = map.get(key); + if (v != null) { + String[] vs = v.split("#"); + if (vs[0].equals("-2")) { + msg[count][3] = "导入Excel表的列名不匹配,插入失败"; + } else if (vs[0].equals("-1")) { + msg[count][3] = "系统出错,插入失败"; + } else { + msg[count][1] = vs[0]; + msg[count][2] = vs[1]; + if (vs.length > 2) { + msg[count][3] = vs[2]; + } + } + + } + } + // request.setAttribute(AppKeys.TipMsgKey, ""); + // request.setAttribute(AppKeys.RedirectTo, redirectUrl); + return new ModelAndView(redirectUrl, "msg", msg); + } + /** + * 请求显示导入的界面 + * @param request + * @return + */ + @RequestMapping(value = "/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods.mhtml", method=RequestMethod.GET) + public String formBackingObject(HttpServletRequest request){ + request.setAttribute("poName", "高值耗材"); + request.setAttribute("actionUrl", + "/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods.mhtml"); + request.setAttribute("formatFile", + "/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsDemo.xls"); + return "/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods"; + } +} Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r21624 -r21628 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 21624) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 21628) @@ -321,6 +321,7 @@ hidden:SSTS_ExpensiveGoods_Menu, children:[ {hidden :SSTS_ExpensiveGoods_Menu,text:"高值耗材管理",href:WWWROOT+'/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_ExpensiveGoods_Menu,text:"导入高值耗材",href:WWWROOT+'/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods.mhtml',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_ExpensiveGoods_Menu,text:"高值耗材实例列表",href:WWWROOT+'/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsInstanceView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_ExpensiveGoods_Menu,text:"高值耗材库存",href:WWWROOT+'/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true}, //{hidden :SSTS_ExpensiveGoods_Menu,text:"高值耗材出入库记录",href:WWWROOT+'/disinfectsystem/assestManagement/expensiveGoods/storageRecordView.jsp',hrefTarget:linkTarget,leaf:true}, Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsDemo.xls =================================================================== diff -u Binary files differ Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsManager.java =================================================================== diff -u -r21468 -r21628 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsManager.java (.../ExpensiveGoodsManager.java) (revision 21468) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsManager.java (.../ExpensiveGoodsManager.java) (revision 21628) @@ -108,6 +108,8 @@ public ExpensiveGoodsStock getDiposableGoodsByInventorySerialNumber(String inventorySerialNumber); public ExpensiveGoods getExpensiveGoodsByInventorySerialNumber(String inventorySerialNumber); + + public ExpensiveGoods getExpensiveGoodsByName(String name); /////////////// public ExpensiveGoods getExpensiveGoodsById_ForUpdate(String id); Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/importExpensiveGoods.jsp (revision 21628) @@ -0,0 +1,182 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + + + +<%@ include file="/common/includeUploadFilesJSAndCSS.jsp"%> + + + + + + + + + + + + + + + + + +
+
+
    +
  • 当前位置--导入导出${poName }
  • +
+
+ + +
+
+
+
+

导入${poName }

+
+
+ + + + + +
${poName }文件:
+
+
错误代码说明 1:不能为空 2:未定义 3:重复值 4:不是金额 5:不是数字 6:不是日期 7:值无效
+ + + + + + + + + + + + + + + +
模块名称成功插入/更新数量失败数量失败的行号,列号,错误代码
${msgArr[0]}${msgArr[1]}${msgArr[2]} ${msgArr[3]}
+
+
+
+
+
+ + \ No newline at end of file Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManager.java =================================================================== diff -u --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManager.java (revision 0) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManager.java (revision 21628) @@ -0,0 +1,24 @@ +package com.forgon.disinfectsystem.maintain.importexpensivegoods.service; + +import java.io.InputStream; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +/** + * + * @author qjw + * + * 2012-5-10 下午02:35:27 + */ +public interface ImportExpensiveGoodsManager { + + public Map importExpensiveGoods(HttpServletRequest re); + /** + * 基础数据的导入,通过输入流 + * @param inputStreams + * @return + */ + public Map importExpensiveGoods(List inputStreams); +}