Index: ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestDisinfectGoodsInvoiceWithDiffAncestorTousseDefinition.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestDisinfectGoodsInvoiceWithDiffAncestorTousseDefinition.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestDisinfectGoodsInvoiceWithDiffAncestorTousseDefinition.java (revision 17252) @@ -0,0 +1,153 @@ +package test.forgon.disinfectsystem.invoicemanager.service; +import static org.testng.Assert.*; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.springframework.test.annotation.Rollback; +import org.testng.annotations.Test; + +import test.forgon.constant.Constants; +import test.forgon.disinfectsystem.AbstractCSSDTest; + +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; +import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; + +public class TestDisinfectGoodsInvoiceWithDiffAncestorTousseDefinition extends AbstractCSSDTest { + + //消毒物品器械包条码 + private String [] barcodeArray1 = {"201410160001","201410160002","201410160003"}; + + /** + * 创建一张消毒物品申请单,申请数量为3个消毒物品 + */ + private void createDisifectGoodsApplication(){ + RecyclingApplication application = new RecyclingApplication(); + application.setSerialNumber("2014101600001"); + application.setApplicant("吴启华"); + application.setDepartCoding("3266"); + application.setDepart("妇产科护士"); + application.setSettleAccountsDepartCoding("3266"); + application.setSettleAccountsDepart("妇产科护士"); + application.setHandleDepart(Constants.ORG_UNIT_NAME_CSSD); + application.setHandleDepartCoding(Constants.ORG_UNIT_CODE_CSSD); + application.setApplicationTime(new Date()); + application.setCommittedStatus(true); + application.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + application.setType(InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM); + objectDao.saveOrUpdate(application); + /// + TousseDefinition ancestorTd = tousseDefinitionManager.getTousseDefinitionByName("test止血带"); + + TousseDefinition disinfectionTousse = new TousseDefinition(); + disinfectionTousse.setTousseType(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + disinfectionTousse.setIsTraceable("否"); + disinfectionTousse.setName(ancestorTd.getName()); + disinfectionTousse.setPrice(2.5); + disinfectionTousse.setIsCleanedEntirely("否"); + disinfectionTousse.setIsRecycling(TousseDefinition.STR_YES); + disinfectionTousse.setHandlerDepartCode(Constants.ORG_UNIT_CODE_CSSD); + disinfectionTousse.setHandlerDepartName(Constants.ORG_UNIT_NAME_CSSD); + disinfectionTousse.setAncestorID(ancestorTd.getId()); + objectDao.saveOrUpdate(disinfectionTousse); + + for(String barcode : barcodeArray1){ + TousseInstance tousseInstance = new TousseInstance(); + tousseInstance.setTousseDefinition(disinfectionTousse); + tousseInstance.setTousseName(disinfectionTousse.getName()); + tousseInstance.setBarcode(barcode); + tousseInstance.setType(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + tousseInstance.setStatus(TousseInstance.STATUS_DISINFECTED); + tousseInstance.setPrice(3.5); + tousseInstance.setFluctuationPrice(3.5); + tousseInstance.setOrgUnitCoding(Constants.ORG_UNIT_CODE_DISINFECT); + tousseInstance.setOrgUnitName(Constants.ORG_UNIT_NAME_DISINFECT); + tousseInstance.setStatisticsAmount(10); + tousseInstance.setPackageType("胶带"); + tousseInstanceManager.setToDefaultWareHouse(tousseInstance, Constants.ORG_UNIT_CODE_DISINFECT); + tousseInstanceManager.saveOrUpdate(tousseInstance); + tousseStockManager.increaseStockByTousseName(tousseInstance.getTousseName()); + } + /// + List items = new ArrayList(); + TousseItem item = new TousseItem(); + item.setTousseName(disinfectionTousse.getName()); + item.setTousseDefinitionId(disinfectionTousse.getId()); + item.setAmount(3); + item.setDiposable("否"); + item.setInvoicePlan(application); + items.add(item); + tousseItemManager.saveOrUpdate(item); + application.setApplicationItems(items); + objectDao.saveOrUpdate(application); + } + + @Test + @Rollback(false) + public void testSendAllDisifectGoods(){ + prepareData(); + WareHouse wareHouse_CSSD = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + assertNotNull(wareHouse_CSSD); + JSONObject params = new JSONObject(); + JSONArray invoiceItems1 = new JSONArray(); + + JSONObject invoiceItems1_1 = new JSONObject(); + invoiceItems1_1.put("barcode", "201410160001"); + invoiceItems1_1.put("sendAmount", 3); + invoiceItems1_1.put("isRoutine", TousseInstance.ROUTINE_YES); + invoiceItems1.add(invoiceItems1_1); + + params.put("mode", "depart"); + params.put("departCode", "3266"); + params.put("assistantSender", "朱广兴"); + params.put("sender", "朱广兴"); + params.put("invoiceItems", invoiceItems1); + params.put("sourceWarehouseId", wareHouse_CSSD.getId()); + params.put("sourceWarehouseName", wareHouse_CSSD.getName()); + webServiceManager.submitInvoicePlans(params.toString()); + + //浮动价格 + double tousseFluctionPrice = supplyRoomConfigManager.getTousseFluctuationPercent(); + + //发货单 + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014101600001"); + + //全部发货 + //断言发货单关联的包实例为3个 + assertEquals(1 , invoice.getTousseInstances(objectDao).size()); + + TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[0]); + //断言发货状态为已发货 + assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); + + //断言申请单状态为部分发货(因为申请项为三个不同条码的物品,而发货只发其中一个条码) + assertEquals(InvoicePlan.DELIVERSTATUS_PARTDELIVERED , invoice.getInvoicePlan().getDeliverStatus()); + + //断言发货单金额 + assertEquals( 3.5 *tousseFluctionPrice , invoice.getTotalPrice()); + + + } + + + private void prepareData(){ + initCSSDData(); + makeActiveUser("admin"); + //创建消毒物品器械包定义 + initBasicData(); + //创建消毒物品申请单 + createDisifectGoodsApplication(); + //创建消毒物品器械包并增加库存 +// createDisifectGoodsInstanceAndAddStroge(); + } + +} Index: ssts-web/src/test/resources/test/forgon/disinfectsystem/invoicemanager/service/AllTests.xml =================================================================== diff -u -r17062 -r17252 --- ssts-web/src/test/resources/test/forgon/disinfectsystem/invoicemanager/service/AllTests.xml (.../AllTests.xml) (revision 17062) +++ ssts-web/src/test/resources/test/forgon/disinfectsystem/invoicemanager/service/AllTests.xml (.../AllTests.xml) (revision 17252) @@ -21,6 +21,8 @@ + + \ No newline at end of file