Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r30054 -r30250 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 30054) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 30250) @@ -2387,6 +2387,7 @@ //使用记录新增加录入的器械包需要减少器械包库存的器械包实例集合 List needRegisterUseRecordTousseInstanceList = new ArrayList(); + Map> invoicePlanIdMap = new HashMap>(); for (Long id : tousseInstanceIDSet) { TousseInstance tousseInstance = tousseInstancesMap.get(id); TousseInstance modifiedTousseInstance = modifiedTousseInstanceMap.get(id); @@ -2428,6 +2429,15 @@ if (++updateObjectCount % 20 == 0) { objectDao.flush(); } + if(StringUtils.equals(tousseInstance.getTousseDefinition().getTousseType(), TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + Long invoicePlanID = tousseInstance.getInvoicePlanID(); + List tousseInstanceIdList = invoicePlanIdMap.get(invoicePlanID); + if(tousseInstanceIdList == null){ + tousseInstanceIdList = new ArrayList(); + } + tousseInstanceIdList.add(tousseInstance.getId()); + invoicePlanIdMap.put(invoicePlanID, tousseInstanceIdList); + } } //对使用记录中新录入的器械包进行减少库存处理 @@ -2480,9 +2490,34 @@ } } } + + // 当外来器械包登记了病人使用记录之后,那么包状态变为已使用 + updateForeignTousseApplication(invoicePlanIdMap); + } /** + * 当外来器械包登记了病人使用记录之后,那么申请单包状态变为已使用 + * @param invoicePlanIdMap + */ + private void updateForeignTousseApplication(Map> invoicePlanIdMap) { + if(invoicePlanIdMap == null || invoicePlanIdMap.isEmpty()){ + return; + } + List invoicePlanIdList = new ArrayList(); + for (Long id : invoicePlanIdMap.keySet()) { + invoicePlanIdList.add(id); + } + List appList = objectDao.findByIds(ForeignTousseApplication.class.getSimpleName(), invoicePlanIdList); + if(CollectionUtils.isNotEmpty(appList)){ + for (ForeignTousseApplication foreignTousseApplication : appList) { + foreignTousseApplication.setPackageStatus(TousseInstance.STATUS_USED); + } + objectDao.batchSaveOrUpdate(appList); + } + } + + /** * 更新包实例的丢失报损信息 * @param tousseInstance 包实例及其丢失报损信息 */