Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r37028 -r37128 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 37028) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 37128) @@ -801,6 +801,11 @@ } } + //检查材料是否合法 + valideMaterialInstances(materialInstances); + //检查一次性物品材料是否合法 + valideDiposableGoodsInstances(diposableGoodsInstances); + //若为更新操作:判断包含的材料明细是否相同 Boolean isDifferent = false; if(isUpdate){ @@ -885,6 +890,62 @@ } /** + * 检查一次性物品材料明细是否合法: + * 1、数量必须为正整数; + * 2、关联一次性物品定义; + * 3、一次性物品不能重复; + * @param diposableGoodsInstances + */ + private void valideDiposableGoodsInstances(List diposableGoodsInstances) { + if(CollectionUtils.isEmpty(diposableGoodsInstances)){ + return; + } + Set diposableGoodsIdSet = new HashSet(); + for (DiposableGoodsInstance diposableGoodsInstance : diposableGoodsInstances) { + if(diposableGoodsInstance.getAmount() == null + || diposableGoodsInstance.getAmount().intValue() <= 0){ + throw new RuntimeException("材料明细异常!"); + } + DisposableGoods disposableGoods = diposableGoodsInstance.getDiposableGoods(); + if(disposableGoods == null){ + throw new RuntimeException("材料明细异常!"); + } + if(diposableGoodsIdSet.contains(disposableGoods.getId())){ + throw new RuntimeException("材料明细异常!"); + } + diposableGoodsIdSet.add(disposableGoods.getId()); + } + } + + /** + * 检查材料明细是否合法: + * 1、材料数量必须为正整数; + * 2、必须关联材料定义; + * 3、不允许出现重复的材料; + * @param materialInstances + */ + private void valideMaterialInstances(List materialInstances) { + if(CollectionUtils.isEmpty(materialInstances)){ + return; + } + Set materialDefinitionIdSet = new HashSet(); + for (MaterialInstance materialInstance : materialInstances) { + if(materialInstance.getCount() <= 0){ + throw new RuntimeException("材料明细异常!"); + } + MaterialDefinition md = materialInstance.getMaterialDefinition(); + if(md == null || !DatabaseUtil.isPoIdValid(md.getId())){ + throw new RuntimeException("材料明细异常!"); + } + if(materialDefinitionIdSet.contains(md.getId())){ + throw new RuntimeException("材料明细异常!"); + } + materialDefinitionIdSet.add(md.getId()); + } + } + + + /** * 删除材料时,关联删除丢失报损记录SZSDSRMYY-99 * @param tousseDefinition * @param deleteErrorMaterialInstanceIdList 需要删除的包含丢失报损记录的材料定义ID