Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r34770 -r34839 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 34770) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 34839) @@ -1591,7 +1591,11 @@ SqlUtils.getNonStringFieldInLargeCollectionsPredicate("ip.id", ids), temp, ForeignTousseApplication.APPLICATION_STATUS_RETRUN); if (objectDao.countBySql(sql) > 0) { - throw new RuntimeException(String.format("部分申请单不能%s!", returnType)); + if(ForeignTousseApplication.ACTION_TYPE_CONFIRM_RETURN.equals(returnType)){ + throw new RuntimeException(String.format("部分申请单的回收状态不是“%s”或“%s”,无法使用批量确认归还", InvoicePlan.RECYCLINGSTATUS_RECYCLED,InvoicePlan.RECYCLINGSTATUS_SECRECYCLED)); + }else if(ForeignTousseApplication.ACTION_TYPE_EARLY_RETURN.equals(returnType)){ + throw new RuntimeException(String.format("部分申请单的回收状态是“%s”,无法使用批量提前归还", InvoicePlan.RECYCLINGSTATUS_AWAITRECEIVE)); + } } else { List list = objectDao.findByIds(ForeignTousseApplication.class.getSimpleName(), ids); if (CollectionUtils.isNotEmpty(list)) { @@ -1630,7 +1634,7 @@ } } } catch (Exception e) { - throw new RuntimeException(String.format("部分申请单不能%s!", returnType)); + throw new RuntimeException(String.format("部分申请单不能%s,%s", returnType, e.getMessage())); } } } Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r34831 -r34839 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 34831) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 34839) @@ -411,7 +411,10 @@ //根据使用记录的外来器械包实例的找到原单 Set foreignTousseApplicationSet = null; + //外器器械包定义ID + List foreignTousseDefinitionIdList = new ArrayList(); + //1.该使用记录所有的包实例 List tousseInstances = tousseInstanceManager .findTousseInstanceListByUseRecordId(useRecordId); @@ -523,10 +526,17 @@ if(foreignTousseApplication != null){ foreignTousseApplicationSet.add(foreignTousseApplication); } + if(tousseInstance.getTousseDefinition().isForeignTousse()){ + foreignTousseDefinitionIdList.add(tousseInstance.getTousseDefinition().getId()); + }else if(tousseInstance.getTousseDefinition().isSplit()){ + foreignTousseDefinitionIdList.add(tousseInstance.getTousseDefinition().getParentID()); + } + } } if(CollectionUtils.isNotEmpty(foreignTousseApplicationSet)){ + List foreignTousseApplicationIdList = new ArrayList(); for (ForeignTousseApplication tempForeignTousseApplication : foreignTousseApplicationSet) { String orginalRemark = tempForeignTousseApplication.getRemark(); String newRemark = (orginalRemark == null ? "" : orginalRemark + ";") + @@ -541,7 +551,18 @@ tempForeignTousseApplication.setRecyclingStatus(ForeignTousseApplication.APPLICATION_STATUS_SIGNED); } objectDao.saveOrUpdate(tempForeignTousseApplication); + foreignTousseApplicationIdList.add(tempForeignTousseApplication.getId()); } + if(CollectionUtils.isNotEmpty(foreignTousseDefinitionIdList)){ + String updateSql = String.format("update %s set packageStatus = '%s' where packageStatus = '%s' and %s and %s ", + TousseItem.class.getSimpleName(), + InvoicePlan.RECYCLINGSTATUS_AWAITRECEIVED, + TousseInstance.STATUS_USED, + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("recyclingApplication_ID", foreignTousseApplicationIdList), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("tousseDefinitionId", foreignTousseDefinitionIdList)); + objectDao.excuteSQL(updateSql); + } + } } @@ -2835,7 +2856,7 @@ if (++updateObjectCount % 20 == 0) { objectDao.flush(); } - if(StringUtils.equals(tousseInstance.getTousseDefinition().getTousseType(), TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + if(tousseInstance.getTousseDefinition().isForeignOrSplitTousse()){ Long invoicePlanID = tousseInstance.getInvoicePlanID(); List tousseInstanceIdList = invoicePlanIdMap.get(invoicePlanID); if(tousseInstanceIdList == null){ @@ -2914,7 +2935,7 @@ } /** - * 当外来器械包登记了病人使用记录之后,那么申请单包状态变为已使用 + * 当外来器械包登记了病人使用记录之后,那么申请单包状态变为已使用HBTSGRYY-11 * @param invoicePlanIdMap */ private void updateForeignTousseApplication(Map> invoicePlanIdMap, List tousseInstanceList) {