Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java =================================================================== diff -u -r13519 -r13540 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 13519) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 13540) @@ -451,8 +451,8 @@ throw new RuntimeException("高值耗材退货数量必须为1!"); } BigDecimal settlementPrice = new BigDecimal(0.00); - - String sql = String.format(" where %s", SqlUtils.getLongFieldPredicate("po.expensiveDisposablegoodsId", expensiveDisposablegoodsId)); + String isNullFunctionName = DatabaseUtil.getSqlIsNullFunctionName(dbConnection); + String sql = String.format(" where %s and %s(po.returnedAmount,0)<%s(po.amount,0)", SqlUtils.getLongFieldPredicate("po.expensiveDisposablegoodsId", expensiveDisposablegoodsId),isNullFunctionName,isNullFunctionName); DiposableGoodsItem sendOutDiposableGoodsItem = (DiposableGoodsItem)objectDao.getBySql(DiposableGoodsItem.class.getSimpleName(), sql);// 发货明细 if(sendOutDiposableGoodsItem == null){ throw new RuntimeException(String.format("未找到高值耗材 %s(条码=%s) 的发货明细记录,不能退货!", diposableGoodsShowName,barcode)); @@ -849,7 +849,10 @@ if("是".equals(item.getDiposable())){ tousseType = TousseItem.TYPE_DIPOSABLE_GOODS; // TODO:为item的disposableGoodsId属性赋值 - + item.setDisposableGoodsId(returnGoodsItem.getDisposableGoodsID()); + if(!DatabaseUtil.isPoIdValid(item.getDisposableGoodsId())){ + throw new RuntimeException("申请项的一次性物品id不能为空!"); + } }else{ TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName(item.getTousseName()); if(td != null){