Index: ssts-web/src/test/java/test/forgon/disinfectsystem/secondsupplyroom/service/TestSecondSupplyRoom.java =================================================================== diff -u -r16785 -r17427 --- ssts-web/src/test/java/test/forgon/disinfectsystem/secondsupplyroom/service/TestSecondSupplyRoom.java (.../TestSecondSupplyRoom.java) (revision 16785) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/secondsupplyroom/service/TestSecondSupplyRoom.java (.../TestSecondSupplyRoom.java) (revision 17427) @@ -2,31 +2,45 @@ import static org.testng.Assert.*; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.Rollback; +import org.testng.AssertJUnit; import org.testng.annotations.Test; import test.forgon.disinfectsystem.AbstractCSSDTest; import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; +import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.disinfectsystem.invoicemanager.service.InvoiceManager; import com.forgon.disinfectsystem.recyclingapplication.service.RecyclingApplicationManager; +import com.forgon.disinfectsystem.recyclingrecord.service.RecyclingRecordManager; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; import com.forgon.disinfectsystem.useRecord.service.UseRecordManager; +import com.forgon.serialnumber.model.SerialNum; public class TestSecondSupplyRoom extends AbstractCSSDTest { @Autowired @@ -37,16 +51,22 @@ private UseRecordManager useRecordManager; @Autowired private RecyclingApplicationManager recyclingApplicationManager; + @Autowired + private RecyclingRecordManager recyclingRecordManager; @Test public void testSecondSupplyRoom() { initCSSDData(); useCaseSecondSupplyRoom1(); } - @Test - public void useCaseSecondSupplyRoom1() { + private void useCaseSecondSupplyRoom1() { makeActiveUser("oruser1"); + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + //二级供应室自己发货设置为是(对所有科室回收的物品) + supplyRoomConfig.setIsSecondSupplyRoomAutoInvoice(SupplyRoomConfig.SECONDSUPPLYROOM_AUTOINVOICE_FROMALLORG); + supplyRoomConfigManager.saveOrUpdate(supplyRoomConfig); + SterilizationRecord sterilizationRecord = new SterilizationRecord(); sterilizationRecord .setStatus(SterilizationRecord.STERILIZATION_STATUS_BEGIN); @@ -97,14 +117,21 @@ tousseInstance3.setOperationTime(new Date()); tousseInstance3.setReviewer("oruser2"); tousseInstance3.setReviewTime(new Date()); + + tousseInstance3.setBarcode(serialNumManager.getSerialNumberStr("条码")); tousseInstanceManager.saveOrUpdate(tousseInstance3); sterilizationRecord .setTousseInstanceList(new ArrayList()); sterilizationRecord.getTousseInstanceList().add(tousseInstance1); sterilizationRecord.getTousseInstanceList().add(tousseInstance2); sterilizationRecord.getTousseInstanceList().add(tousseInstance3); - sterilizationRecordManager.saveOrUpdate(sterilizationRecord); + + List tousseInstanceBarcodes = new ArrayList(); + tousseInstanceBarcodes.add(tousseInstance1.getBarcode()); + tousseInstanceBarcodes.add(tousseInstance2.getBarcode()); + tousseInstanceBarcodes.add(tousseInstance3.getBarcode()); + sterilizationRecordManager.saveOrUpdateSterilizationRecord(sterilizationRecord, tousseInstanceBarcodes, null, null); String orgUnitCode = AcegiHelper.getLoginUser() .getOrgUnitCodingFromSupplyRoomConfig(); @@ -114,8 +141,7 @@ orgUnitCode,null); objectDao.clearCache(); - // 原invoice类是继承自barcodeDevice父类,后改为不继承。如果这一行有报错 - // 可能是数据库表结构中与父类的外键导致,注意去掉 + Invoice invoice = invoiceManager .getInvoiceByTousseInstanceId(tousseInstance1.getId() .toString()); @@ -169,5 +195,430 @@ //因为复大肿瘤不分单,所以使用记录转申请单生成的是通用申请单 assertTrue(comboRoomApplications.size() == 1); } + + /** + * 测试二级供应室自动发货 + * 二级供应室自动发货设置为不启用时,断言灭菌完成后自动发货的结果(发货单有没创建,科室编码,包实例的状态等) + */ + @Test + public void testSecondSupplyRoomAutoInvoiceDisable(){ + initCSSDData(); + makeActiveUser("oruser1"); + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + //一.不启用时 + supplyRoomConfig.setIsSecondSupplyRoomAutoInvoice(SupplyRoomConfig.SECONDSUPPLYROOM_AUTOINVOICE_DISABLE); + supplyRoomConfigManager.saveOrUpdate(supplyRoomConfig); + + prepareSecondSupplyRoomAutoInvoiceData(); + + //断言手术室的发货单数量为0 + @SuppressWarnings("unchecked") + List list = objectDao.findBySql(Invoice.class.getSimpleName(), " where departCoding='" + test.forgon.constant.Constants.ORG_UNIT_CODE_OR + "'"); + assertTrue(CollectionUtils.isEmpty(list)); + } + + /** + * 测试二级供应室自动发货 + * 二级供应室自动发货分别设置、对回收自所有科室的物品,断言灭菌完成后自动发货的结果(发货单有没创建,科室编码,包实例的状态等) + */ + @Test + public void testSecondSupplyRoomAutoInvoiceForAllOrg(){ + initCSSDData(); + makeActiveUser("oruser1"); + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + //二.对回收自所有科室的物品 + supplyRoomConfig.setIsSecondSupplyRoomAutoInvoice(SupplyRoomConfig.SECONDSUPPLYROOM_AUTOINVOICE_FROMALLORG); + supplyRoomConfigManager.saveOrUpdate(supplyRoomConfig); + prepareSecondSupplyRoomAutoInvoiceData(); + + //断言手术室的发货单数量为1,发货物品数量为12 + @SuppressWarnings("unchecked") + List list = objectDao.findBySql(Invoice.class.getSimpleName(), " where departCoding='" + test.forgon.constant.Constants.ORG_UNIT_CODE_OR + "'"); + AssertJUnit.assertEquals(1, list.size()); + //invoiceItem的数量是5,但其所有的amount之和是12 + AssertJUnit.assertEquals(5, list.get(0).getInvoiceItem().size()); + + int totalAmount = 0; + for(InvoiceItem item : list.get(0).getInvoiceItem()){ + totalAmount += item.getAmount(); + } + AssertJUnit.assertEquals(12, totalAmount); + } + + /** + * 测试二级供应室自动发货在三种不同配置下的情况 + * 二级供应室自动发货分别设置为对回收自本科室的器械包,断言灭菌完成后自动发货的结果(发货单有没创建,科室编码,包实例的状态等) + */ + @Test + public void testSecondSupplyRoomAutoInvoiceForCurrentOrg(){ + initCSSDData(); + makeActiveUser("oruser1"); + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + //三.对回收自本科室的器械包 + supplyRoomConfig.setIsSecondSupplyRoomAutoInvoice(SupplyRoomConfig.SECONDSUPPLYROOM_AUTOINVOICE_FROMCURRENTORG); + supplyRoomConfigManager.saveOrUpdate(supplyRoomConfig); + prepareSecondSupplyRoomAutoInvoiceData(); + + //断言手术室的发货单数量为1,发货物品数量为6 + @SuppressWarnings("unchecked") + List list = objectDao.findBySql(Invoice.class.getSimpleName(), " where departCoding='" + test.forgon.constant.Constants.ORG_UNIT_CODE_OR + "'"); + AssertJUnit.assertEquals(1, list.size()); + //invoiceItem的数量是3,但其所有的amount之和是6 + AssertJUnit.assertEquals(3, list.get(0).getInvoiceItem().size()); + + int totalAmount = 0; + for(InvoiceItem item : list.get(0).getInvoiceItem()){ + totalAmount += item.getAmount(); + } + AssertJUnit.assertEquals(6, totalAmount); + } + /** + * 准备回收单、回收物品、及待审核包实例的数据 + */ + private void prepareSecondSupplyRoomAutoInvoiceData(){ + //1.手术室对内科的器械包回收 + RecyclingRecord recyclingRecord = new RecyclingRecord(); + recyclingRecord.setRecyclingUser("张三"); + recyclingRecord.setRecyclingTime(new Date()); + recyclingRecord.setOrgUnitCoding(test.forgon.constant.Constants.ORG_UNIT_CODE_OR); + recyclingRecord.setDepart(test.forgon.constant.Constants.ORG_UNIT_NAME_NEIKE); + recyclingRecord.setDepartCode(test.forgon.constant.Constants.ORG_UNIT_CODE_NEIKE); + + //Test开胸包、Test开颅包、Test开口包 + JSONObject params = new JSONObject(); + params.put("confirmation", false); + JSONArray array = new JSONArray(); + + TousseDefinition td_Test开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + JSONObject obj = new JSONObject(); + obj.put("basketBarcode", "019000001"); + obj.put("basketId", 0); + obj.put("tousseName", td_Test开胸包.getName()); + obj.put("tousseDefinitionID", td_Test开胸包.getId()); + obj.put("amount", 2); + obj.put("itemType", "器械包"); + obj.put("tousseNameForMaterial", ""); + obj.put("idCardBarcode", ""); + obj.put("tousseAmountForMaterial", 0); + obj.put("basketGroupBarcodes", "019000001"); + array.add(obj); + + TousseDefinition td_Test开颅包 = tousseDefinitionManager.getTousseDefinitionByName("Test开颅包"); + obj = new JSONObject(); + obj.put("basketBarcode", "019000001"); + obj.put("basketId", 0); + obj.put("tousseName", td_Test开颅包.getName()); + obj.put("tousseDefinitionID", td_Test开颅包.getId()); + obj.put("amount", 2); + obj.put("itemType", "器械包"); + obj.put("tousseNameForMaterial", ""); + obj.put("idCardBarcode", ""); + obj.put("tousseAmountForMaterial", 0); + obj.put("basketGroupBarcodes", "019000001"); + array.add(obj); + + TousseDefinition td_Test开口包 = tousseDefinitionManager.getTousseDefinitionByName("Test开口包"); + obj = new JSONObject(); + obj.put("basketBarcode", "019000001"); + obj.put("basketId", 0); + obj.put("tousseName", td_Test开口包.getName()); + obj.put("tousseDefinitionID", td_Test开口包.getId()); + obj.put("amount", 2); + obj.put("itemType", "器械包"); + obj.put("tousseNameForMaterial", ""); + obj.put("idCardBarcode", ""); + obj.put("tousseAmountForMaterial", 0); + obj.put("basketGroupBarcodes", "019000001"); + array.add(obj); + + params.put("tousseJson", array); + + recyclingRecordManager.saveOrUpdate(recyclingRecord, params); + + //构造出对应数量的待审核的包实例数据 + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance1.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance1.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance1.setTousseDefinition(td_Test开胸包); + tousseInstance1.setTousseName(td_Test开胸包.getName()); + tousseInstance1.setDepart(recyclingRecord.getDepart()); + tousseInstance1.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance1.setOperationTime(new Date()); + tousseInstance1.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance1.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance1.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance1); + + TousseInstance tousseInstance2 = new TousseInstance(); + tousseInstance2.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance2.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance2.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance2.setTousseDefinition(td_Test开胸包); + tousseInstance2.setTousseName(td_Test开胸包.getName()); + tousseInstance2.setDepart(recyclingRecord.getDepart()); + tousseInstance2.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance2.setOperationTime(new Date()); + tousseInstance2.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance2.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance2.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance2); + + TousseInstance tousseInstance3 = new TousseInstance(); + tousseInstance3.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance3.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance3.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance3.setTousseDefinition(td_Test开颅包); + tousseInstance3.setTousseName(td_Test开颅包.getName()); + tousseInstance3.setDepart(recyclingRecord.getDepart()); + tousseInstance3.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance3.setOperationTime(new Date()); + tousseInstance3.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance3.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance3.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance3); + + TousseInstance tousseInstance4 = new TousseInstance(); + tousseInstance4.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance4.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance4.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance4.setTousseDefinition(td_Test开颅包); + tousseInstance4.setTousseName(td_Test开颅包.getName()); + tousseInstance4.setDepart(recyclingRecord.getDepart()); + tousseInstance4.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance4.setOperationTime(new Date()); + tousseInstance4.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance4.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance4.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance4); + + TousseInstance tousseInstance5 = new TousseInstance(); + tousseInstance5.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance5.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance5.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance5.setTousseDefinition(td_Test开口包); + tousseInstance5.setTousseName(td_Test开口包.getName()); + tousseInstance5.setDepart(recyclingRecord.getDepart()); + tousseInstance5.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance5.setOperationTime(new Date()); + tousseInstance5.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance5.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance5.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance5); + + TousseInstance tousseInstance6 = new TousseInstance(); + tousseInstance6.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance6.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance6.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance6.setTousseDefinition(td_Test开口包); + tousseInstance6.setTousseName(td_Test开口包.getName()); + tousseInstance6.setDepart(recyclingRecord.getDepart()); + tousseInstance6.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance6.setOperationTime(new Date()); + tousseInstance6.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance6.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance6.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance6); + + //2.手术室对手术室的器械包回收 + recyclingRecord = new RecyclingRecord(); + recyclingRecord.setRecyclingUser("张三"); + recyclingRecord.setRecyclingTime(new Date()); + recyclingRecord.setOrgUnitCoding(test.forgon.constant.Constants.ORG_UNIT_CODE_OR); + recyclingRecord.setDepart(test.forgon.constant.Constants.ORG_UNIT_NAME_OR); + recyclingRecord.setDepartCode(test.forgon.constant.Constants.ORG_UNIT_CODE_OR); + + //Test开胸包、Test穿刺包、TestOR胆加仪 + params = new JSONObject(); + params.put("confirmation", false); + array = new JSONArray(); + + obj = new JSONObject(); + obj.put("basketBarcode", "019000001"); + obj.put("basketId", 0); + obj.put("tousseName", td_Test开胸包.getName()); + obj.put("tousseDefinitionID", td_Test开胸包.getId()); + obj.put("amount", 2); + obj.put("itemType", "器械包"); + obj.put("tousseNameForMaterial", ""); + obj.put("idCardBarcode", ""); + obj.put("tousseAmountForMaterial", 0); + obj.put("basketGroupBarcodes", "019000002"); + array.add(obj); + + TousseDefinition td_Test穿刺包 = tousseDefinitionManager.getTousseDefinitionByName("Test穿刺包"); + obj = new JSONObject(); + obj.put("basketBarcode", "019000001"); + obj.put("basketId", 0); + obj.put("tousseName", td_Test穿刺包.getName()); + obj.put("tousseDefinitionID", td_Test穿刺包.getId()); + obj.put("amount", 2); + obj.put("itemType", "器械包"); + obj.put("tousseNameForMaterial", ""); + obj.put("idCardBarcode", ""); + obj.put("tousseAmountForMaterial", 0); + obj.put("basketGroupBarcodes", "019000002"); + array.add(obj); + + TousseDefinition td_TestOR胆加仪 = tousseDefinitionManager.getTousseDefinitionByName("TestOR胆加仪"); + obj = new JSONObject(); + obj.put("basketBarcode", "019000001"); + obj.put("basketId", 0); + obj.put("tousseName", td_TestOR胆加仪.getName()); + obj.put("tousseDefinitionID", td_TestOR胆加仪.getId()); + obj.put("amount", 2); + obj.put("itemType", "器械包"); + obj.put("tousseNameForMaterial", ""); + obj.put("idCardBarcode", ""); + obj.put("tousseAmountForMaterial", 0); + obj.put("basketGroupBarcodes", "019000002"); + array.add(obj); + + params.put("tousseJson", array); + + recyclingRecordManager.saveOrUpdate(recyclingRecord, params); + + //构造出对应数量的待审核的包实例数据 + TousseInstance tousseInstance7 = new TousseInstance(); + tousseInstance7.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance7.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance7.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance7.setTousseDefinition(td_Test开胸包); + tousseInstance7.setTousseName(td_Test开胸包.getName()); + tousseInstance7.setDepart(recyclingRecord.getDepart()); + tousseInstance7.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance7.setOperationTime(new Date()); + tousseInstance7.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance7.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance7.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance7); + + TousseInstance tousseInstance8 = new TousseInstance(); + tousseInstance8.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance8.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance8.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance8.setTousseDefinition(td_Test开胸包); + tousseInstance8.setTousseName(td_Test开胸包.getName()); + tousseInstance8.setDepart(recyclingRecord.getDepart()); + tousseInstance8.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance8.setOperationTime(new Date()); + tousseInstance8.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance8.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance8.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance8); + + TousseInstance tousseInstance9 = new TousseInstance(); + tousseInstance9.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance9.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance9.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance9.setTousseDefinition(td_Test穿刺包); + tousseInstance9.setTousseName(td_Test穿刺包.getName()); + tousseInstance9.setDepart(recyclingRecord.getDepart()); + tousseInstance9.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance9.setOperationTime(new Date()); + tousseInstance9.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance9.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance9.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance9); + + TousseInstance tousseInstance10 = new TousseInstance(); + tousseInstance10.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance10.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance10.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance10.setTousseDefinition(td_Test穿刺包); + tousseInstance10.setTousseName(td_Test穿刺包.getName()); + tousseInstance10.setDepart(recyclingRecord.getDepart()); + tousseInstance10.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance10.setOperationTime(new Date()); + tousseInstance10.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance10.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance10.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance10); + + TousseInstance tousseInstance11 = new TousseInstance(); + tousseInstance11.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance11.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance11.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance11.setTousseDefinition(td_TestOR胆加仪); + tousseInstance11.setTousseName(td_TestOR胆加仪.getName()); + tousseInstance11.setDepart(recyclingRecord.getDepart()); + tousseInstance11.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance11.setOperationTime(new Date()); + tousseInstance11.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance11.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance11.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance11); + + TousseInstance tousseInstance12 = new TousseInstance(); + tousseInstance12.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance12.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + tousseInstance12.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance12.setTousseDefinition(td_TestOR胆加仪); + tousseInstance12.setTousseName(td_TestOR胆加仪.getName()); + tousseInstance12.setDepart(recyclingRecord.getDepart()); + tousseInstance12.setDepartCoding(recyclingRecord.getDepartCode()); + tousseInstance12.setOperationTime(new Date()); + tousseInstance12.setOrgUnitCoding(recyclingRecord.getOrgUnitCoding()); + tousseInstance12.setRecyclingRecordId(recyclingRecord.getId()); + tousseInstance12.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstanceManager.save(tousseInstance12); + + + //添加灭菌记录,并完成灭菌 + SterilizationRecord sterilizationRecord = new SterilizationRecord(); + sterilizationRecord.setStartDate(new Date()); + sterilizationRecord.setOrgUnitCoding(AcegiHelper.getLoginUser() + .getOrgUnitCodingFromSupplyRoomConfig()); + sterilizationRecord.setOrgUnitCoding(test.forgon.constant.Constants.ORG_UNIT_CODE_OR); + sterilizationRecord.setStatus(""); + sterilizationRecord.setSterilizerName("6号高温蒸汽灭菌炉"); + sterilizationRecord.setSterilizationUser("test1"); + sterilizationRecord.setFrequency(2); + + Long originalRecordId = null; + Collection tousseInstanceBarcodes = new ArrayList(); + Collection containerBarcodes = new ArrayList(); + //010029007,,器械包##010029008,,器械包##010000006,,篮筐##004,,篮筐 + String waitSterilizer = tousseInstance1.getBarcode() + ",,器械包##" + + tousseInstance2.getBarcode()+",,器械包##" + + tousseInstance3.getBarcode()+",,器械包##" + + tousseInstance4.getBarcode()+",,器械包##" + + tousseInstance5.getBarcode()+",,器械包##" + + tousseInstance6.getBarcode()+",,器械包##" + + tousseInstance7.getBarcode()+",,器械包##" + + tousseInstance8.getBarcode()+",,器械包##" + + tousseInstance9.getBarcode()+",,器械包##" + + tousseInstance10.getBarcode()+",,器械包##" + + tousseInstance11.getBarcode()+",,器械包##" + + tousseInstance12.getBarcode()+",,器械包##"; + String[] goodsInfoArray = + StringUtils.split(waitSterilizer,"##"); + for (String item : goodsInfoArray) { + String[] goodsItem = StringUtils.split(item, ",,"); + if (goodsItem.length == 2) { + String type = goodsItem[1]; + if (type.equals("器械包")) { + tousseInstanceBarcodes.add(goodsItem[0]); + } else { + // 篮筐 + containerBarcodes.add(goodsItem[0]); + } + } + } + sterilizationRecordManager.saveOrUpdateSterilizationRecord( + sterilizationRecord, tousseInstanceBarcodes, + containerBarcodes, originalRecordId); + + //6.断言灭菌记录 + assertEquals(sterilizationRecord.getStatus(),SterilizationRecord.STERILIZATION_STATUS_BEGIN); + + //完成灭菌记录 + String finishComfirmer = "测试完成"; + boolean needFinishConfirm = false; + sterilizationRecordManager.completeSterilization( + Collections.singleton(sterilizationRecord.getId()), test.forgon.constant.Constants.ORG_UNIT_CODE_OR,finishComfirmer,finishComfirmer,needFinishConfirm); + + assertEquals(sterilizationRecord.getStatus(),SterilizationRecord.STERILIZATION_STATUS_END); + } }