Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsGodownEntryManagerImpl.java =================================================================== diff -u -r22095 -r22112 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsGodownEntryManagerImpl.java (.../ExpensiveGoodsGodownEntryManagerImpl.java) (revision 22095) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsGodownEntryManagerImpl.java (.../ExpensiveGoodsGodownEntryManagerImpl.java) (revision 22112) @@ -24,6 +24,7 @@ import com.forgon.directory.model.OrgUnit; import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; @@ -32,27 +33,37 @@ import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsStock; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; +import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.ExpensiveGoodsSupplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.RegistrationCertification; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.expensivegoods.AuthorizationCertification; import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsAuthorization; import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsBatch; import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsModel; import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsModelStock; import com.forgon.disinfectsystem.entity.expensivegoods.RelevancyGoodsAuthorization; +import com.forgon.disinfectsystem.entity.expensivegoodsapplication.ExpensiveGoodsApplication; +import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryRecord; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.expensivegoods.ExpensiveGoodsServiceContext; import com.forgon.disinfectsystem.vo.ExpensiveGodownEntryReceivingReportItemVO; import com.forgon.exception.SystemException; import com.forgon.log.service.LogManager; import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; +import com.forgon.tools.GB2Alpha; +import com.forgon.tools.GB2WB; import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; import com.forgon.tools.util.SqlUtils; @@ -75,6 +86,8 @@ private BarcodeManager barcodeManager; + private SupplyRoomConfigManager supplyRoomConfigManager; + public void setSerialNumManager(SerialNumManager serialNumManager) { this.serialNumManager = serialNumManager; } @@ -92,6 +105,11 @@ this.expensiveGoodsGodownEntryItemManager = expensiveGoodsGodownEntryItemManager; } + public void setSupplyRoomConfigManager( + SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + public void setWareHouseManager(WareHouseManager wareHouseManager) { this.wareHouseManager = wareHouseManager; } @@ -148,14 +166,219 @@ context.getExpensiveGoodsIdToExpensiveGoodsStockMap() , context.getIdToExpensiveGoodsInstanceMap()); //若是预入库则生成外来器械包申请单 if(ExpensiveGoodsGodownEntry.SUBTYPE_PREPARE_IN.equals(expensiveGoodsGodownEntry.getSubType())){ + createForeignTousseApplicationForEntry(expensiveGoodsGodownEntry); } // 设置GodownEntryItem详细列表 setReturnDetails(expensiveGoodsGodownEntry,context.getIdToExpensiveGoodsInstanceMap(),result); } } + /** + * 根据高值耗材的预入库单产生外来器械包申请单. + * @param expensiveGoodsGodownEntry 高值耗材入库单 + */ + private void createForeignTousseApplicationForEntry(ExpensiveGoodsGodownEntry expensiveGoodsGodownEntry) { + if (expensiveGoodsGodownEntry != null) { + Long invoicePlanId = expensiveGoodsGodownEntry.getInvoicePlanId(); + if (DatabaseUtil.isPoIdValid(invoicePlanId) && ExpensiveGoodsGodownEntry.SUBTYPE_PREPARE_IN.equals(expensiveGoodsGodownEntry.getSubType())) { + ExpensiveGoodsApplication expensiveGoodsApplication = (ExpensiveGoodsApplication) objectDao + .getByProperty( + ExpensiveGoodsApplication.class.getSimpleName(), + "id", invoicePlanId.toString()); + if (expensiveGoodsApplication != null) { + //1、把预入库的植入物的高值耗材转成材料 + Map materialDefinitionToAmountMap = convertToBeForeignTousseDefinition(expensiveGoodsGodownEntry.getItemsList()); + + //2、创建外来器械包申请单 + SupplyRoomConfig systemParams = supplyRoomConfigManager.getSystemParamsObj(); + ForeignTousseApplication foreignTousseApplication = new ForeignTousseApplication(); + foreignTousseApplication.setApplicant(expensiveGoodsApplication.getApplicant()); + foreignTousseApplication.setApplicantCode(expensiveGoodsApplication.getApplicantCode()); + foreignTousseApplication.setSerialNumber(serialNumManager.getSerialNumberStr(SerialNum.TYPE_RECYCLINGAPPLICATION)); + foreignTousseApplication.setApplicationTime(new Date()); + foreignTousseApplication.setDepart(expensiveGoodsApplication.getDepart()); + foreignTousseApplication.setDepartCoding(expensiveGoodsApplication.getDepartCoding()); + foreignTousseApplication.setSettleAccountsDepart(expensiveGoodsApplication.getSettleAccountsDepart()); + foreignTousseApplication.setSettleAccountsDepartCoding(expensiveGoodsApplication.getSettleAccountsDepartCoding()); + foreignTousseApplication.setHandleDepart(systemParams.getDptNameOfForeignTousse()); + foreignTousseApplication.setHandleDepartCoding(systemParams.getDptCodeOfForeignTousse()); + foreignTousseApplication.setHospitalNumber(expensiveGoodsApplication.getHospitalNumber()); + foreignTousseApplication.setClinicNumber(expensiveGoodsApplication.getClinicNumber()); + foreignTousseApplication.setPatient(expensiveGoodsApplication.getPatient()); + foreignTousseApplication.setPatientArea(expensiveGoodsApplication.getPatientArea()); + foreignTousseApplication.setRoomNumber(expensiveGoodsApplication.getRoomNumber()); + foreignTousseApplication.setBedNumber(expensiveGoodsApplication.getBedNumber()); + foreignTousseApplication.setPatientAge(expensiveGoodsApplication.getPatientAge() != null ? expensiveGoodsApplication.getPatientAge()+"" : ""); + foreignTousseApplication.setPatientSex(expensiveGoodsApplication.getPatientSex()); + foreignTousseApplication.setAscriptionDepartment(expensiveGoodsApplication.getAscriptionDepartment()); + foreignTousseApplication.setSurgery(expensiveGoodsApplication.getSurgery()); + foreignTousseApplication.setOperationTime(expensiveGoodsApplication.getOperationTime()); + foreignTousseApplication.setDoctor(expensiveGoodsApplication.getDoctor()); + foreignTousseApplication.setOperationRoom(expensiveGoodsApplication.getOperationRoom()); + foreignTousseApplication.setTousseName(expensiveGoodsApplication.getForeignTousseName()); + foreignTousseApplication.setRemark(expensiveGoodsApplication.getRemark()); + foreignTousseApplication.setSequence(supplyRoomConfigManager.getOrgUnitSequence(foreignTousseApplication.getDepartCoding())); + foreignTousseApplication.setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECEIVE); + foreignTousseApplication.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + foreignTousseApplication.setCommittedStatus(true); + foreignTousseApplication.setIncludeRecyclingItems(InvoicePlan.SIGNED_TRUE); + foreignTousseApplication.setSubmitTime(new Date()); + // 设置五笔码和拼音码 + String depart = foreignTousseApplication.getDepart(); + foreignTousseApplication.setSpelling(GB2Alpha.string2Alpha(depart)); + foreignTousseApplication.setWbCode(GB2WB.getWBCode(depart)); + objectDao.saveOrUpdate(foreignTousseApplication); + + //3、创建外来器械包定义 + TousseDefinition foreignTousseDefinition = createForeignTousseForExpensiveGoodsGodownEntry( + expensiveGoodsGodownEntry, + materialDefinitionToAmountMap, + foreignTousseApplication); + + //4、生成申请项 + TousseItem tousseItem = new TousseItem(); + tousseItem.setTousseName(foreignTousseDefinition.getName()); + tousseItem.setSupplierName(foreignTousseDefinition.getSupplierName()); + tousseItem.setAmount(1); + tousseItem.setPrice(systemParams.getForeignToussePrice()); + tousseItem.setRowPrice(systemParams.getForeignToussePrice() * tousseItem.getAmount()); + tousseItem.setDiposable(TousseItem.DIPOSABLE_NO); + tousseItem.setTousseType(TousseDefinition.PACKAGE_TYPE_FOREIGN); + tousseItem.setInvoicePlan(foreignTousseApplication); + tousseItem.setTousseDefinitionId(foreignTousseDefinition.getId()); + tousseItem.setInvoicePlanID(foreignTousseApplication.getId()); + tousseItem.setIsCleanedEntirely(systemParams.getForeignTousseCleanedEntirely()); + tousseItem.setIsRecycling(Constants.STR_YES); + objectDao.saveOrUpdate(tousseItem); + + List foreignTousseItems = new ArrayList(); + foreignTousseItems.add(tousseItem); + foreignTousseApplication.setApplicationItems(foreignTousseItems); + objectDao.saveOrUpdate(foreignTousseApplication); + } + } + } + } /** + * 根据高值耗材入库单生成外来器械包定义. + * @param expensiveGoodsGodownEntry 高值耗材入库单 + * @param foreignMaterialDefinitionToAmountMap 外来器械包的材料 + * @param foreignTousseApplication 高值耗材申请单 + * @return + */ + private TousseDefinition createForeignTousseForExpensiveGoodsGodownEntry( + ExpensiveGoodsGodownEntry expensiveGoodsGodownEntry, + Map foreignMaterialDefinitionToAmountMap, + ForeignTousseApplication foreignTousseApplication) { + SupplyRoomConfig systemParams = supplyRoomConfigManager.getSystemParamsObj(); + TousseDefinition tousseDefinition = new TousseDefinition(); + String tousseName = expensiveGoodsGodownEntry.getSupplierName(); + if (StringTools.isNotBlank(foreignTousseApplication.getTousseName())) { + tousseName = foreignTousseApplication.getTousseName(); + } else if (StringTools.isNotBlank(foreignTousseApplication.getSurgery())) { + tousseName = foreignTousseApplication.getSurgery(); + } + tousseDefinition.setForDisplay(false); + tousseDefinition.setInvoicePlanID(foreignTousseApplication.getId()); + tousseDefinition.setName(tousseName); + tousseDefinition.setSupplierName(expensiveGoodsGodownEntry.getSupplierName()); + + tousseDefinition.setWorkLoadStatisticalMethod(TousseDefinition.WORKLOAD_STATISTICAL_METHOD_MATERIAL_AND_DIPOSABLES); + tousseDefinition.setTousseType(TousseDefinition.PACKAGE_TYPE_FOREIGN); + tousseDefinition.setTaskGroup(systemParams.getDefalutTaskGroup()); + tousseDefinition.setHandlerDepartCode(systemParams.getDptCodeOfForeignTousse()); + tousseDefinition.setHandlerDepartName(systemParams.getDptNameOfForeignTousse()); + tousseDefinition.setIsCleanedEntirely(systemParams.getForeignTousseCleanedEntirely()); + tousseDefinition.setIsReview(systemParams.getForeignTousseNeedReview()); + tousseDefinition.setPackageSize(TousseDefinition.PACKAGE_SIZE_BIG); //包大小 + tousseDefinition.setForeignToussePrintAmount(1); //打印数量 + tousseDefinition.setSplitNumber(1); //拆包数量 + tousseDefinition.setPackageType(systemParams.getFtDefaultPackageType()); + tousseDefinition.setSterilingMethod(systemParams.getFtDefaultSterilingMethod()); + tousseDefinition.setIncludeImplant(TousseDefinition.UNINCLUDE_IMPLANT); + + Set foreignTousseMaterialDefinitions = foreignMaterialDefinitionToAmountMap.keySet(); + List foreignMaterialInstances = new ArrayList(); + for (MaterialDefinition materialDefinition : foreignTousseMaterialDefinitions) { + Integer amount = foreignMaterialDefinitionToAmountMap.get(materialDefinition); + if (amount != null && amount > 0) { + MaterialInstance materialInstance = new MaterialInstance(); + materialInstance.setMaterialName(materialDefinition.getName()); + materialInstance.setCount(amount); + materialInstance.setTousse(tousseDefinition); + materialInstance.setMaterialDefinition(materialDefinition); + materialInstance.setWashClassifyType(materialDefinition.getWashClassifyType()); + materialInstance.setIsImplant(Constants.STR_YES); + foreignMaterialInstances.add(materialInstance); + } + } + tousseDefinition.setMaterialInstances(foreignMaterialInstances); + objectDao.saveOrUpdate(tousseDefinition); + tousseDefinition.setAncestorID(tousseDefinition.getId()); + return tousseDefinition; + } + + /** + * 把植入物的高值耗材转成材料. + * @param expensiveGoodsGodownEntryItems 高值耗材集合 + * @return + */ + private Map convertToBeForeignTousseDefinition( + List expensiveGoodsGodownEntryItems) { + Map materialDefinitionToAmountMap = new HashMap(); + if (CollectionUtils.isNotEmpty(expensiveGoodsGodownEntryItems)) { + //1、获取所有的是植入物的高值耗材 + Map expensiveGoodsToAmountMap = new HashMap(); + for (ExpensiveGoodsGodownEntryItem expensiveGoodsGodownEntryItem : expensiveGoodsGodownEntryItems) { + Long expensiveGoodsId = expensiveGoodsGodownEntryItem.getExpensiveGoodsId(); + if (DatabaseUtil.isPoIdValid(expensiveGoodsId)) { + ExpensiveGoods expensiveGoods = expensiveGoodsManager.get(expensiveGoodsId); + if (expensiveGoods != null && expensiveGoods.implant()) { + Integer amount = expensiveGoodsToAmountMap.get(expensiveGoods); + expensiveGoodsToAmountMap.put(expensiveGoods, amount != null ? ++amount : 1); + } + } + } + + //2、把高值耗材转成材料(如果根据名称和规格匹配不到则重新生成一个材料定义) + Set expensiveGoodsSet = expensiveGoodsToAmountMap.keySet(); + for (ExpensiveGoods expensiveGoods : expensiveGoodsSet) { + String name = expensiveGoods.getName(); + String specification = expensiveGoods.getSpecification(); + String sql = " where 1=1 "; + if (StringUtils.isNotBlank(name)) { + sql += " and po.name = '" + name + "'"; + } + if (StringUtils.isNotBlank(specification)) { + sql += " and po.specification = '" + specification + "'"; + } else { + sql += " and po.specification is null"; + } + sql += " and po.isForeignMaterial = '" + Constants.STR_YES + "'"; + MaterialDefinition foreignTousseMaterialDefinition = (MaterialDefinition) objectDao.getBySql( + MaterialDefinition.class.getSimpleName(), sql); + + + if (foreignTousseMaterialDefinition == null) { + foreignTousseMaterialDefinition = new MaterialDefinition(); + foreignTousseMaterialDefinition.setName(expensiveGoods.getName()); + foreignTousseMaterialDefinition.setSpecification(expensiveGoods.getSpecification()); + foreignTousseMaterialDefinition.setIsImplant(Constants.STR_YES); + foreignTousseMaterialDefinition.setGoodsType(MaterialDefinition.TYPE_EXPENSIVEMATERIALGOODS); + foreignTousseMaterialDefinition.setIsForeignMaterial(Constants.STR_YES); + foreignTousseMaterialDefinition.setSpelling(GB2Alpha.string2Alpha(foreignTousseMaterialDefinition.getName())); + foreignTousseMaterialDefinition.setWbCode(GB2WB.getWBCode(foreignTousseMaterialDefinition.getName())); + objectDao.saveOrUpdate(foreignTousseMaterialDefinition); + } + materialDefinitionToAmountMap.put(foreignTousseMaterialDefinition, expensiveGoodsToAmountMap.get(expensiveGoods)); + } + } + return materialDefinitionToAmountMap; + } + + + /** * * @param expensiveGoodsGodownEntry * @param context Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r22096 -r22112 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 22096) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 22112) @@ -27,23 +27,17 @@ import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; import com.forgon.disinfectsystem.common.CssdUtils; -import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; -import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsGodownEntry; -import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsGodownEntryItem; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; 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.expensivegoodsapplication.ExpensiveGoodsApplication; import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.packing.PackingRecord; import com.forgon.disinfectsystem.entity.packing.PackingTask; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; -import com.forgon.disinfectsystem.expensiveGoods.service.ExpensiveGoodsManager; -import com.forgon.disinfectsystem.expensivegoodsapplication.service.ExpensiveGoodsApplicationManager; import com.forgon.disinfectsystem.packing.service.PackingManager; import com.forgon.disinfectsystem.recyclingapplication.service.InvoicePlanManager; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; @@ -98,10 +92,6 @@ private TousseItemManager tousseItemManager; - private ExpensiveGoodsManager expensiveGoodsManager; - - private ExpensiveGoodsApplicationManager expensiveGoodsApplicationManager; - public void setMaterialDefinitionManager( MaterialDefinitionManager materialDefinitionManager) { this.materialDefinitionManager = materialDefinitionManager; @@ -158,15 +148,6 @@ this.orgUnitManager = orgUnitManager; } - public void setExpensiveGoodsManager(ExpensiveGoodsManager expensiveGoodsManager) { - this.expensiveGoodsManager = expensiveGoodsManager; - } - - public void setExpensiveGoodsApplicationManager( - ExpensiveGoodsApplicationManager expensiveGoodsApplicationManager) { - this.expensiveGoodsApplicationManager = expensiveGoodsApplicationManager; - } - /** * 获取外来器械申请单的各种信息,包含病人姓名、住院号、诊疗号、器械包拆包数量、器械包的总件数等信息 * @@ -397,185 +378,7 @@ foreignTousseApplication.setApplicationItems(foreignTousseItems); } - @Override - public void createForeignTousseApplicationForEntry(ExpensiveGoodsGodownEntry expensiveGoodsGodownEntry) { - if (expensiveGoodsGodownEntry != null) { - Long invoicePlanId = expensiveGoodsGodownEntry.getInvoicePlanId(); - if (DatabaseUtil.isPoIdValid(invoicePlanId) && ExpensiveGoodsGodownEntry.SUBTYPE_PREPARE_IN.equals(expensiveGoodsGodownEntry.getSubType())) { - ExpensiveGoodsApplication expensiveGoodsApplication = expensiveGoodsApplicationManager.get(invoicePlanId); - if (expensiveGoodsApplication != null) { - //1、把预入库的植入物的高值耗材转成材料 - Map materialDefinitionToAmountMap = convertToBeForeignTousseDefinition(expensiveGoodsGodownEntry.getItemsList()); - - //2、创建外来器械包申请单 - SupplyRoomConfig systemParams = supplyRoomConfigManager.getSystemParamsObj(); - ForeignTousseApplication foreignTousseApplication = new ForeignTousseApplication(); - foreignTousseApplication.setApplicant(expensiveGoodsApplication.getApplicant()); - foreignTousseApplication.setApplicantCode(expensiveGoodsApplication.getApplicantCode()); - foreignTousseApplication.setSerialNumber(serialNumManager.getSerialNumberStr(SerialNum.TYPE_RECYCLINGAPPLICATION)); - foreignTousseApplication.setApplicationTime(new Date()); - foreignTousseApplication.setDepart(expensiveGoodsApplication.getDepart()); - foreignTousseApplication.setDepartCoding(expensiveGoodsApplication.getDepartCoding()); - foreignTousseApplication.setSettleAccountsDepart(expensiveGoodsApplication.getSettleAccountsDepart()); - foreignTousseApplication.setSettleAccountsDepartCoding(expensiveGoodsApplication.getSettleAccountsDepartCoding()); - foreignTousseApplication.setHandleDepart(systemParams.getDptNameOfForeignTousse()); - foreignTousseApplication.setHandleDepartCoding(systemParams.getDptCodeOfForeignTousse()); - foreignTousseApplication.setHospitalNumber(expensiveGoodsApplication.getHospitalNumber()); - foreignTousseApplication.setClinicNumber(expensiveGoodsApplication.getClinicNumber()); - foreignTousseApplication.setPatient(expensiveGoodsApplication.getPatient()); - foreignTousseApplication.setPatientArea(expensiveGoodsApplication.getPatientArea()); - foreignTousseApplication.setRoomNumber(expensiveGoodsApplication.getRoomNumber()); - foreignTousseApplication.setBedNumber(expensiveGoodsApplication.getBedNumber()); - foreignTousseApplication.setPatientAge(expensiveGoodsApplication.getPatientAge() != null ? expensiveGoodsApplication.getPatientAge()+"" : ""); - foreignTousseApplication.setPatientSex(expensiveGoodsApplication.getPatientSex()); - foreignTousseApplication.setAscriptionDepartment(expensiveGoodsApplication.getAscriptionDepartment()); - foreignTousseApplication.setSurgery(expensiveGoodsApplication.getSurgery()); - foreignTousseApplication.setOperationTime(expensiveGoodsApplication.getOperationTime()); - foreignTousseApplication.setDoctor(expensiveGoodsApplication.getDoctor()); - foreignTousseApplication.setOperationRoom(expensiveGoodsApplication.getOperationRoom()); - foreignTousseApplication.setTousseName(expensiveGoodsApplication.getForeignTousseName()); - foreignTousseApplication.setRemark(expensiveGoodsApplication.getRemark()); - foreignTousseApplication.setSequence(supplyRoomConfigManager.getOrgUnitSequence(foreignTousseApplication.getDepartCoding())); - foreignTousseApplication.setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECEIVE); - foreignTousseApplication.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); - foreignTousseApplication.setCommittedStatus(true); - foreignTousseApplication.setIncludeRecyclingItems(InvoicePlan.SIGNED_TRUE); - foreignTousseApplication.setSubmitTime(new Date()); - saveOrUpdate(foreignTousseApplication); - - //3、创建外来器械包定义 - TousseDefinition foreignTousseDefinition = createForeignTousseForExpensiveGoodsGodownEntry( - expensiveGoodsGodownEntry, - materialDefinitionToAmountMap, - foreignTousseApplication); - - //4、生成申请项 - TousseItem tousseItem = new TousseItem(); - tousseItem.setTousseName(foreignTousseDefinition.getName()); - tousseItem.setSupplierName(foreignTousseDefinition.getSupplierName()); - tousseItem.setAmount(1); - tousseItem.setPrice(systemParams.getForeignToussePrice()); - tousseItem.setRowPrice(systemParams.getForeignToussePrice() * tousseItem.getAmount()); - tousseItem.setDiposable(TousseItem.DIPOSABLE_NO); - tousseItem.setTousseType(TousseDefinition.PACKAGE_TYPE_FOREIGN); - tousseItem.setInvoicePlan(foreignTousseApplication); - tousseItem.setTousseDefinitionId(foreignTousseDefinition.getId()); - tousseItem.setInvoicePlanID(foreignTousseApplication.getId()); - tousseItem.setIsCleanedEntirely(systemParams.getForeignTousseCleanedEntirely()); - tousseItem.setIsRecycling(Constants.STR_YES); - objectDao.saveOrUpdate(tousseItem); - - List foreignTousseItems = new ArrayList(); - foreignTousseItems.add(tousseItem); - foreignTousseApplication.setApplicationItems(foreignTousseItems); - objectDao.saveOrUpdate(foreignTousseApplication); - } - } - } - } - /** - * 根据高值耗材入库单生成外来器械包定义. - * @param expensiveGoodsGodownEntry 高值耗材入库单 - * @param foreignMaterialDefinitionToAmountMap 外来器械包的材料 - * @param foreignTousseApplication 高值耗材申请单 - * @return - */ - private TousseDefinition createForeignTousseForExpensiveGoodsGodownEntry( - ExpensiveGoodsGodownEntry expensiveGoodsGodownEntry, - Map foreignMaterialDefinitionToAmountMap, - ForeignTousseApplication foreignTousseApplication) { - SupplyRoomConfig systemParams = supplyRoomConfigManager.getSystemParamsObj(); - TousseDefinition tousseDefinition = new TousseDefinition(); - String tousseName = expensiveGoodsGodownEntry.getSupplierName(); - if (StringTools.isNotBlank(foreignTousseApplication.getTousseName())) { - tousseName = foreignTousseApplication.getTousseName(); - } else if (StringTools.isNotBlank(foreignTousseApplication.getSurgery())) { - tousseName = foreignTousseApplication.getSurgery(); - } - tousseDefinition.setForDisplay(false); - tousseDefinition.setInvoicePlanID(foreignTousseApplication.getId()); - tousseDefinition.setName(tousseName); - tousseDefinition.setSupplierName(expensiveGoodsGodownEntry.getSupplierName()); - - tousseDefinition.setWorkLoadStatisticalMethod(TousseDefinition.WORKLOAD_STATISTICAL_METHOD_MATERIAL_AND_DIPOSABLES); - tousseDefinition.setTousseType(TousseDefinition.PACKAGE_TYPE_FOREIGN); - tousseDefinition.setTaskGroup(systemParams.getDefalutTaskGroup()); - tousseDefinition.setHandlerDepartCode(systemParams.getDptCodeOfForeignTousse()); - tousseDefinition.setHandlerDepartName(systemParams.getDptNameOfForeignTousse()); - tousseDefinition.setIsCleanedEntirely(systemParams.getForeignTousseCleanedEntirely()); - tousseDefinition.setIsReview(systemParams.getForeignTousseNeedReview()); - tousseDefinition.setPackageSize(TousseDefinition.PACKAGE_SIZE_BIG); //包大小 - tousseDefinition.setForeignToussePrintAmount(1); //打印数量 - tousseDefinition.setSplitNumber(1); //拆包数量 - tousseDefinition.setPackageType(systemParams.getFtDefaultPackageType()); - tousseDefinition.setSterilingMethod(systemParams.getFtDefaultSterilingMethod()); - tousseDefinition.setIncludeImplant(TousseDefinition.UNINCLUDE_IMPLANT); - - Set foreignTousseMaterialDefinitions = foreignMaterialDefinitionToAmountMap.keySet(); - List foreignMaterialInstances = new ArrayList(); - for (MaterialDefinition materialDefinition : foreignTousseMaterialDefinitions) { - Integer amount = foreignMaterialDefinitionToAmountMap.get(materialDefinition); - if (amount != null && amount > 0) { - MaterialInstance materialInstance = new MaterialInstance(); - materialInstance.setMaterialName(materialDefinition.getName()); - materialInstance.setCount(amount); - materialInstance.setTousse(tousseDefinition); - materialInstance.setMaterialDefinition(materialDefinition); - materialInstance.setWashClassifyType(materialDefinition.getWashClassifyType()); - materialInstance.setIsImplant(Constants.STR_YES); - foreignMaterialInstances.add(materialInstance); - } - } - tousseDefinition.setMaterialInstances(foreignMaterialInstances); - objectDao.saveOrUpdate(tousseDefinition); - tousseDefinition.setAncestorID(tousseDefinition.getId()); - return tousseDefinition; - } - - /** - * 把植入物的高值耗材转成材料. - * @param expensiveGoodsGodownEntryItems 高值耗材集合 - * @return - */ - private Map convertToBeForeignTousseDefinition( - List expensiveGoodsGodownEntryItems) { - Map materialDefinitionToAmountMap = new HashMap(); - if (CollectionUtils.isNotEmpty(expensiveGoodsGodownEntryItems)) { - //1、获取所有的是植入物的高值耗材 - Map expensiveGoodsToAmountMap = new HashMap(); - for (ExpensiveGoodsGodownEntryItem expensiveGoodsGodownEntryItem : expensiveGoodsGodownEntryItems) { - Long expensiveGoodsId = expensiveGoodsGodownEntryItem.getExpensiveGoodsId(); - if (DatabaseUtil.isPoIdValid(expensiveGoodsId)) { - ExpensiveGoods expensiveGoods = expensiveGoodsManager.get(expensiveGoodsId); - if (expensiveGoods != null && expensiveGoods.implant()) { - Integer amount = expensiveGoodsToAmountMap.get(expensiveGoods); - expensiveGoodsToAmountMap.put(expensiveGoods, amount != null ? ++amount : 1); - } - } - } - - //2、把高值耗材转成材料(如果根据名称和规格匹配不到则重新生成一个材料定义) - Set expensiveGoodsSet = expensiveGoodsToAmountMap.keySet(); - for (ExpensiveGoods expensiveGoods : expensiveGoodsSet) { - MaterialDefinition foreignTousseMaterialDefinition = materialDefinitionManager - .getForeignTousseMaterialDefinition(expensiveGoods.getName(), expensiveGoods.getSpecification()); - if (foreignTousseMaterialDefinition == null) { - foreignTousseMaterialDefinition = new MaterialDefinition(); - foreignTousseMaterialDefinition.setName(expensiveGoods.getName()); - foreignTousseMaterialDefinition.setSpecification(expensiveGoods.getSpecification()); - foreignTousseMaterialDefinition.setIsImplant(Constants.STR_YES); - foreignTousseMaterialDefinition.setGoodsType(MaterialDefinition.TYPE_EXPENSIVEMATERIALGOODS); - foreignTousseMaterialDefinition.setIsForeignMaterial(Constants.STR_YES); - materialDefinitionManager.save(foreignTousseMaterialDefinition); - } - materialDefinitionToAmountMap.put(foreignTousseMaterialDefinition, expensiveGoodsToAmountMap.get(expensiveGoods)); - } - } - return materialDefinitionToAmountMap; - } - - /** * 为外来器械申请单设置科室查看权限. * @param foreignTousseApplication * 2014-8-18 Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManager.java =================================================================== diff -u -r22004 -r22112 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManager.java (.../ForeignTousseApplicationManager.java) (revision 22004) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManager.java (.../ForeignTousseApplicationManager.java) (revision 22112) @@ -5,7 +5,6 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; -import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsGodownEntry; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; import com.forgon.tools.hibernate.BasePoManager; @@ -47,12 +46,6 @@ public boolean isForeignTousseInstanceUsed(ForeignTousseApplication foreignTousseApplication); /** - * 根据高值耗材的预入库单产生外来器械包申请单. - * @param expensiveGoodsGodownEntry 高值耗材入库单 - */ - public void createForeignTousseApplicationForEntry(ExpensiveGoodsGodownEntry expensiveGoodsGodownEntry); - - /** * 设置外来器械包(如果是外来申请单申请的器械包,修改过名称或者供应商,会创建一个祖先包定义,再创建一个包定义,没修改过则值创建一个包定义). * @param foreignTousseApplication 外来器械包申请单 * @param jsonArray 外来器械包的一些数据