Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r26338 -r26340 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 26338) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 26340) @@ -1332,7 +1332,8 @@ if(invoicePlanId != null) { String sql = String.format("select sum(rgi.amount) from ReturnGoodsRecord rgr join ReturnGoodsItem rgi on rgr.id=rgi.returnGoodsRecord_ID" + " where rgr.invoicePlanId=%s" + - " group by rgi.tousseDefinition_id,rgi.tousseName", invoicePlanId.toString()); + "and rgi.tousseName = '%s'" + + " group by rgi.tousseDefinition_id,rgi.tousseName", invoicePlanId.toString(), item.getTousseName()); int returnAmount = objectDao.countBySql(sql); sendAmount = sendAmount - returnAmount; } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r26322 -r26340 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26322) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26340) @@ -2743,36 +2743,41 @@ @Override public boolean canSign(TousseInstance tousseInstance,String signerOrgUnitCoding) { - if (TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals( - tousseInstance.getTousseDefinition().getTousseType())){ - throw new RuntimeException("不能签收消毒物品"); - }else{ - String location = tousseInstance.getLocation(); - String locationForDisplay = tousseInstance.getLocationForDisplay(); - String location_2 = tousseInstance.getLocation_2(); - String locationForDisplay2 = tousseInstance.getLocationForDisplay2(); - if(StringUtils.isNotBlank(location_2)){ - //有二次发货,验证二次发货的位置 - location = location_2; - locationForDisplay = locationForDisplay2; - } - if (StringUtils.isNotBlank(location) && - !StringUtils.equals(signerOrgUnitCoding , location)) { - throw new RuntimeException("该器械包属于" + locationForDisplay + ",不能被签收"); - } else { - if (StringUtils.isNotBlank(tousseInstance - .getSignedUser())) { - throw new RuntimeException("该器械包已签收,或该条码下暂无已发货的器械包"); - } else { - String status = tousseInstance.getStatus(); - if (!tousseInstance.isShipped()) { - throw new RuntimeException("器械包状态为" + status + ",不能签收"); - } else { - return true; - } - } - } - } + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals( + tousseInstance.getTousseDefinition().getTousseType())){ + TousseDefinition tousseDefinition = tousseInstance.getTousseDefinition(); + while(!tousseDefinition.getId().equals(tousseDefinition.getAncestorID())) { + tousseDefinition = (TousseDefinition) objectDao.getById(TousseDefinition.class.getSimpleName(), tousseDefinition.getAncestorID()); + if(!tousseDefinition.traceable()){ + throw new RuntimeException("不能签收不追溯的消毒物品"); + } + } + } + String location = tousseInstance.getLocation(); + String locationForDisplay = tousseInstance.getLocationForDisplay(); + String location_2 = tousseInstance.getLocation_2(); + String locationForDisplay2 = tousseInstance.getLocationForDisplay2(); + if(StringUtils.isNotBlank(location_2)){ + //有二次发货,验证二次发货的位置 + location = location_2; + locationForDisplay = locationForDisplay2; + } + if (StringUtils.isNotBlank(location) && + !StringUtils.equals(signerOrgUnitCoding , location)) { + throw new RuntimeException("该器械包属于" + locationForDisplay + ",不能被签收"); + } else { + if (StringUtils.isNotBlank(tousseInstance + .getSignedUser())) { + throw new RuntimeException("该器械包已签收,或该条码下暂无已发货的器械包"); + } else { + String status = tousseInstance.getStatus(); + if (!tousseInstance.isShipped()) { + throw new RuntimeException("器械包状态为" + status + ",不能签收"); + } else { + return true; + } + } + } } /**