Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java =================================================================== diff -u -r16483 -r16841 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 16483) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 16841) @@ -2069,11 +2069,17 @@ failureCount, sb, currentRowNum,basketSerialNumberIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); continue; } + boolean isForeignTousse = false; + TousseDefinition persistenceTousseDefinition = tousseDefinitionManager + .getTousseDefinitionByName(tousseDefinition.getName()); + if(persistenceTousseDefinition != null && Constants.STR_YES.equals(persistenceTousseDefinition.getIsForeignTousse())){ + isForeignTousse = true; + } // 当材料名称不为空时 if (StringUtils.isNotBlank(materialDefinitionName)) { int errorCode = validateAndAddMaterialInstance(materialInstanceList, diposableGoodsInstanceList, materialDefinitionName, - materialDefinitionNumStr, specification,basketSerialNumber,tousseDefinitionMaterials); + materialDefinitionNumStr, specification,basketSerialNumber,tousseDefinitionMaterials,isForeignTousse); if (errorCode != 0) { // 若在数据库中找不到该材料,或录入的数量有误或该材料已经存在列表中,则此时该器械包插入失败 failureCount = appendFailureRowNumAndRecordFailureNum( @@ -2266,6 +2272,12 @@ if (tousseDefinition == null) { continue; } else { + boolean isForeignTousse = false; + TousseDefinition persistenceTousseDefinition = tousseDefinitionManager + .getTousseDefinitionByName(tousseDefinition.getName()); + if(persistenceTousseDefinition != null && Constants.STR_YES.equals(persistenceTousseDefinition.getIsForeignTousse())){ + isForeignTousse = true; + } // 材料名称 String materialDefinitionName = ParerUtils.getCellFormatValue(row, materialDefinitionNameIndex); @@ -2292,7 +2304,7 @@ materialInstanceList, diposableGoodsInstanceList, materialDefinitionName, - materialDefinitionNumStr, specification,basketSerialNumber,tousseDefinitionMaterials); + materialDefinitionNumStr, specification,basketSerialNumber,tousseDefinitionMaterials, isForeignTousse); if (errorCode != 0) { // 若在数据库中找不到该材料,或录入的数量有误或该材料已经存在列表中,则此时该器械包插入失败 failureCount = appendFailureRowNumAndRecordFailureNum( @@ -2398,7 +2410,8 @@ List existingMaterialInstanceList, List existingDiposableGoodsInstanceList, String newMaterialDefinitionName, String newMaterialDefinitionNumStr, - String specification,Integer basketGroupNum,List tousseDefinitionMaterials) { + String specification,Integer basketGroupNum,List tousseDefinitionMaterials, + boolean isForeignTousse) { int materialDefinitionNum = 0; if (StringUtils.isNotBlank(newMaterialDefinitionNumStr)) { try { @@ -2411,9 +2424,15 @@ return com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK; } // 先从材料里加载 - MaterialDefinition materialDefinition = materialDefinitionManager - .getMaterialDefinitionByName(newMaterialDefinitionName, + MaterialDefinition materialDefinition = materialDefinitionManager.getMaterialDefinitionByName(newMaterialDefinitionName, + specification); + if(materialDefinition == null){ + // 如果从普通材料获取不到,器械包的‘是否外来器械’属性设为是的话,从外来器械 中找材料. + if(isForeignTousse == true){ + materialDefinition = materialDefinitionManager.getForeignTousseMaterialDefinition(newMaterialDefinitionName, specification); + } + } if (materialDefinition != null) { for (MaterialInstance instance : existingMaterialInstanceList) { if (materialDefinition.getId().equals(