Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManager.java =================================================================== diff -u -r16282 -r17534 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManager.java (.../ImportBasedataManager.java) (revision 16282) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManager.java (.../ImportBasedataManager.java) (revision 17534) @@ -17,6 +17,12 @@ public interface ImportBasedataManager { public Map importBasedata(HttpServletRequest re); + /** + * 基础数据的导入,通过输入流 + * @param inputStreams + * @return + */ + public Map importBasedata(List inputStreams); public String importTousseDefinitionFromExcel(HttpServletRequest request); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/importbasedata/TestImportbaseData.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/importbasedata/TestImportbaseData.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/importbasedata/TestImportbaseData.java (revision 17534) @@ -0,0 +1,309 @@ +package test.forgon.disinfectsystem.importbasedata; + +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.testng.AssertJUnit; +import org.testng.annotations.Test; + +import test.forgon.disinfectsystem.AbstractCSSDTest; + +import com.forgon.disinfectsystem.basedatamanager.cleanmethod.service.CleanMethodManager; +import com.forgon.disinfectsystem.basedatamanager.container.service.ContainerManager; +import com.forgon.disinfectsystem.basedatamanager.rinser.service.RinserManager; +import com.forgon.disinfectsystem.basedatamanager.sterilisation.service.SterilisationManager; +import com.forgon.disinfectsystem.basedatamanager.sterilizer.service.SterilizerManager; +import com.forgon.disinfectsystem.basedatamanager.supplier.service.SupplierManager; +import com.forgon.disinfectsystem.basedatamanager.taskGroup.service.TaskGroupManager; +import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; +import com.forgon.disinfectsystem.entity.basedatamanager.cleanmethod.CleanMethod; +import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; +import com.forgon.disinfectsystem.entity.basedatamanager.expirationdateinfo.ExpirationDateInfo; +import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; +import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.expirationdateinfo.service.ExpirationDateInfoManager; +import com.forgon.disinfectsystem.maintain.importbasedata.service.ImportBasedataManager; +import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; +import com.forgon.systemsetting.model.HttpOption; +import com.forgon.systemsetting.service.HttpOptionManager; +import com.forgon.tools.Path; + +import static org.junit.Assert.*; +/** + * 基础数据导入测试用例 + * @author JC + * + */ +public class TestImportbaseData extends AbstractCSSDTest{ + @Autowired + private ImportBasedataManager importBasedataManager; + @Autowired + private TaskGroupManager taskGroupManager; + @Autowired + private HttpOptionManager httpOptionManager; + @Autowired + private ContainerManager containerManager; + @Autowired + private SupplierManager supplierManager; + + @Autowired + private DiposableGoodsManager diposableGoodsManager; + @Autowired + private MaterialDefinitionManager materialDefinitionManager; + @Autowired + private TousseDefinitionManager tousseDefinitionManager; + + @Autowired + private CleanMethodManager cleanMethodManager; + @Autowired + private RinserManager rinserManager; + @Autowired + private SterilisationManager sterilisationManager; + @Autowired + private SterilizerManager sterilizerManager; + @Autowired + private ExpirationDateInfoManager expirationDateInfoManager; + + @Test + public void testImportData(){ +// assertTrue +// assertEqual +// assertEquals + // 初始化基础数据 + initCSSDData(); + try{ + // 测试导入用的数据 + String fileName = Path.getWebAppRoot() + + "/disinfec" + + "tsystem/basedatamanager/importbasedata/basedataTest.xls"; + FileInputStream is = new FileInputStream(fileName); + List inputStreams = new ArrayList(); + inputStreams.add(is); + importBasedataManager.importBasedata(inputStreams); + //材料类型导入测试 + verifyMaterialType(); + //任务组导入测试 + verifyTaskGroup(); + // 包装类型导入测试 + verifyPackingType(); + //清洗分类类型导入测试 + verifyWashType(); + //一次性物品类型导入测试 + verifyDisposableType(); + // 容器管理导入测试 + verifyContainer(); + //供应商管理导入测试 + verifySupplier(); + // 一次性物品管理导入测试 + verifyDisposable(); + //材料管理导入测试 + verifyMaterial(); + // 器械包管理导入测试 + verifyTousseDefinition(); + // 外来器械包管理导入测试 + verifyForeignTousseDefinition(); + //清洗程序管理导入测试 + verifyWashMetod(); + //清洗机管理导入测试 + verifyRinser(); + //灭菌程序管理导入测试 + verifySterilization(); + //灭菌炉管理导入测试 + verifySterilizer(); + //物品失效期管理导入测试 + verifyGoodExpiryDate(); + is.close(); + }catch(Exception e){ + AssertJUnit.fail(e.getMessage()); + } + } + // 材料类型 + private void verifyMaterialType(){ + List httpOptionTexts = httpOptionManager + .getHttpOptionTextById(HttpOption.SYSTEMSETTING_MATERIALTYPE); + assertNotNull(httpOptionTexts); + assertTrue(httpOptionTexts.contains("平面类器械")); + assertTrue(httpOptionTexts.contains("镊子")); + } + // 任务组 + private void verifyTaskGroup(){ + List tgs = taskGroupManager.findAllTaskGroup(); + assertNotNull(tgs); + List tgNames = new ArrayList(); + for(TaskGroup tg : tgs){ + tgNames.add(tg.getTaskGroupName()); + } + assertTrue(tgNames.contains("任务组a")); + assertTrue(tgNames.contains("任务组b")); + } + // 包装类型 + private void verifyPackingType(){ + List httpOptionTexts = httpOptionManager + .getHttpOptionTextById(HttpOption.SYSTEMSETTING_PACKAGING_TYPE); + assertNotNull(httpOptionTexts); + assertTrue(httpOptionTexts.contains("无纺布")); + assertTrue(httpOptionTexts.contains("棉布")); + assertTrue(httpOptionTexts.contains("纸塑(双层)")); + } + // 清洗分类类型 + private void verifyWashType(){ + List httpOptionTexts = httpOptionManager + .getHttpOptionTextById(HttpOption.SYSTEMSETTING_MATERIAL_WASH_CLASSIFY); + assertNotNull(httpOptionTexts); + assertTrue(httpOptionTexts.contains("清洗分类测试")); + } + // 一次性物品类型 + private void verifyDisposableType(){ + List httpOptionTexts = httpOptionManager + .getHttpOptionTextById(HttpOption.SYSTEMSETTING_DIPOSABLEGOODS_TYPE); + assertNotNull(httpOptionTexts); + assertTrue(httpOptionTexts.contains("一次性物品类")); + assertTrue(httpOptionTexts.contains("低耗品")); + } + // 容器管理导入测试 + private void verifyContainer(){ +// 容器001 容器002 + List containers = containerManager.getAllContainer(); + assertNotNull(containers); + List names = new ArrayList(); + for(Container ct : containers){ + names.add(ct.getContainerName()); + } + assertTrue(names.contains("容器001")); + assertTrue(names.contains("容器002")); + } + //供应商管理导入测试 + private void verifySupplier(){ + List names = supplierManager.getAllSupplierNames(); + assertNotNull(names); + assertTrue(names.contains("中山捷飞")); + assertTrue(names.contains("中山国宇")); + } + // 一次性物品管理导入测试 + private void verifyDisposable(){ + //0.7管道刷(进口) 0.8g棉球(非无菌) + List dgs = diposableGoodsManager.getDisposableGoodsBySql(" where 1=1 "); + assertNotNull(dgs); + List names = new ArrayList(); + for(DisposableGoods dg : dgs){ + names.add(dg.getName()); + } + assertTrue(names.contains("0.7管道刷(进口)")); + assertTrue(names.contains("0.8g棉球(非无菌)")); + } + + // 材料导入管理测试 + private void verifyMaterial(){ + // 0.8手外克氏针 1.0骨科克氏针 半髋器械 + List ms = materialDefinitionManager.getAllMaterialDefinition(); + assertNotNull(ms); + List names = new ArrayList(); + for(MaterialDefinition m : ms){ + names.add(m.getName()); + } + assertTrue(names.contains("0.8手外克氏针")); + assertTrue(names.contains("1.0骨科克氏针")); + assertTrue(names.contains("工具")); + assertTrue(names.contains("动力工具")); + } + // 器械包导入管理测试 + private void verifyTousseDefinition(){ + // 产包 材料包含 0.8手外克氏针 1 1.0骨科克氏针 2 + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName("产包"); + assertNotNull(td); + List mInstansces = td.getMaterialInstances(); + assertNotNull(mInstansces); + for(MaterialInstance mi : mInstansces){ + String name = mi.getMaterialName(); + if("0.8手外克氏针".equals(name)){ + assertEquals(1,mi.getCount()); + }else if("1.0骨科克氏针".endsWith(name)){ + assertEquals(2,mi.getCount()); + }else{ + assertTrue( 1 == 2); + } + } + } + // 导入外来器械包测试 + private void verifyForeignTousseDefinition(){ + // 半髋器械 供应商: 中山达源 + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName("半髋器械"); + assertNotNull(td); + assertEquals(TousseDefinition.PACKAGE_TYPE_FOREIGN,td.getTousseType()); + assertEquals("中山达源",td.getSupplierName()); + } + // 清洗程序管理测试 + private void verifyWashMetod(){ + List cms = cleanMethodManager.getAllCleanMethod(); + assertNotNull(cms); + List names = new ArrayList(); + for(CleanMethod cm : cms){ + names.add(cm.getCleanMethod()); + } + assertTrue(names.contains("P1")); + assertTrue(names.contains("P2")); + } + //清洗机管理导入测试 + private void verifyRinser(){ + // 1号清洗机 + List rins = rinserManager.findAllRinser(); + assertNotNull(rins); + List names = new ArrayList(); + for(Rinser rin : rins){ + names.add(rin.getName()); + } + assertTrue(names.contains("1号清洗机")); + } + // 灭菌程序测试用例 + private void verifySterilization(){ + // P1 P2 + List ss = sterilisationManager.getAllSterilisation(); + assertNotNull(ss); + List names = new ArrayList(); + for(Sterilisation s : ss){ + names.add(s.getSterilisation()); + } + assertTrue(names.contains("P1")); + assertTrue(names.contains("P2")); + } + // 灭菌炉测试用例 + private void verifySterilizer(){ + List Sterilizers = sterilizerManager.getAllSterilizer(); + assertNotNull(Sterilizers); + List names = new ArrayList(); + for(Sterilizer ster : Sterilizers){ + names.add(ster.getName()); + } + assertTrue(names.contains("高温蒸汽灭菌器1")); + } + // 物品失效期测试用例 + private void verifyGoodExpiryDate(){ + List eds = expirationDateInfoManager.getAllExpirationDateInfo(); + assertNotNull(eds); + for(ExpirationDateInfo ed : eds){ + String packageType = ed.getPackageType(); + if("测试无纺布".equals(packageType)){ + Integer vd = 180; + Integer wd = 170; + assertEquals("天",ed.getValidDateUnit()); + assertEquals(vd,ed.getValidDate()); + assertEquals(wd,ed.getWarningDate()); + }else if("测试棉布".equals(packageType)){ + Integer vd = 7; + Integer wd = 4; + assertEquals("天",ed.getValidDateUnit()); + assertEquals(vd,ed.getValidDate()); + assertEquals(wd,ed.getWarningDate()); + } + } + } +} Index: ssts-web/src/test/resources/test/forgon/disinfectsystem/importbasedata/AllTests.xml =================================================================== diff -u -r16829 -r17534 --- ssts-web/src/test/resources/test/forgon/disinfectsystem/importbasedata/AllTests.xml (.../AllTests.xml) (revision 16829) +++ ssts-web/src/test/resources/test/forgon/disinfectsystem/importbasedata/AllTests.xml (.../AllTests.xml) (revision 17534) @@ -4,6 +4,7 @@ + \ No newline at end of file Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java =================================================================== diff -u -r17025 -r17534 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 17025) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 17534) @@ -1,5 +1,8 @@ package com.forgon.disinfectsystem.maintain.importbasedata.service; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; @@ -81,6 +84,7 @@ import com.forgon.systemsetting.service.HttpOptionManager; import com.forgon.tools.GB2Alpha; import com.forgon.tools.GB2WB; +import com.forgon.tools.Path; import com.forgon.tools.excel.ParerUtils; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; @@ -222,18 +226,22 @@ public void setWareHouseManager(WareHouseManager wareHouseManager) { this.wareHouseManager = wareHouseManager; } - - @Override public Map importBasedata(HttpServletRequest re) { List inputStreams = attachFileManager .getInputStreamFromAttachFile(re); + return importBasedata(inputStreams); + } + @Override + public Map importBasedata(List inputStreams) { Map msg = new HashMap(); + if(CollectionUtils.isEmpty(inputStreams)){ + return msg; + } AtomicInteger totalCount = new AtomicInteger(0); // 包装类型 List packageTypes = null; // 灭菌程序 List sterilingMethods = null; - for (InputStream is : inputStreams) { try { POIFSFileSystem fs = new POIFSFileSystem(is); @@ -250,8 +258,7 @@ totalCount.set(importMaterialDefinitionBasedata( wb.getSheet("材料管理"), msg, totalCount.intValue())); // 导入 "一次性物品管理" - totalCount.set(importDiposableGoodsBasedata(re, - wb.getSheet("一次性物品管理"), msg, totalCount.intValue())); + totalCount.set(importDiposableGoodsBasedata(wb.getSheet("一次性物品管理"), msg, totalCount.intValue())); // 导入"外来器械包"数据 totalCount.set(importForeignTousseData(wb.getSheet("外来器械包管理"), msg, packageTypes,totalCount.intValue())); @@ -952,10 +959,10 @@ * @param totalCount * @return */ - private int importDiposableGoodsBasedata(HttpServletRequest request,HSSFSheet diposableGoodsSheet, + private int importDiposableGoodsBasedata(HSSFSheet diposableGoodsSheet, Map msg, int totalCount) { StringBuffer sb = new StringBuffer(); - if (diposableGoodsSheet == null) { + if (diposableGoodsSheet == null) { return totalCount; } int lastRowNum = diposableGoodsSheet.getLastRowNum(); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/importbasedata/basedataTest.xls =================================================================== diff -u Binary files differ