Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r34866 -r34870 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 34866) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 34870) @@ -2931,24 +2931,49 @@ } foreignTousseApplication.setReturnMan(returnMan); } - //如果是提前归还,并且整单物品都已经归还,回收状态要设置为“已提前归还” + //如果是提前归还,并且整单物品都已经归还,回收状态要设置为“已提前归还”; + //部分回收的申请单,需要根据回收数量,重新设置回收状态 if(StringUtils.equals(actionType, ForeignTousseApplication.ACTION_TYPE_EARLY_RETURN)){ List applicationItems = foreignTousseApplication.getApplicationItems(); + //归还数量:包状态为已归还/提前归还或者物品已被终止,归还数量+1 + int returnAmount = 0; //已终止的物品数量 int terminatedTousseAmount = 0; + //回收数量:包状态为待归还/已归还/提前归还三种状态或者物品已被终止,回收数量+1 + int recyclingAmount = 0; if(CollectionUtils.isNotEmpty(applicationItems)){ for (TousseItem tousseItem : applicationItems) { if(tousseItem.getIsTerminated() != null && tousseItem.getIsTerminated()){ terminatedTousseAmount++; } + if(StringUtils.equals(tousseItem.getPackageStatus(), ForeignTousseApplication.RETURN_STATUS_RETURNED) + || StringUtils.equals(tousseItem.getPackageStatus(), ForeignTousseApplication.RETURN_STATUS_INADVANCERETURNED) + || (tousseItem.getIsTerminated() != null && tousseItem.getIsTerminated())){ + returnAmount++; + } + if(StringUtils.equals(tousseItem.getPackageStatus(), "待归还") + || StringUtils.equals(tousseItem.getPackageStatus(), ForeignTousseApplication.RETURN_STATUS_RETURNED) + || StringUtils.equals(tousseItem.getPackageStatus(), ForeignTousseApplication.RETURN_STATUS_INADVANCERETURNED) + || (tousseItem.getIsTerminated() != null && tousseItem.getIsTerminated())){ + recyclingAmount++; + } } if(terminatedTousseAmount == applicationItems.size()){ - foreignTousseApplication.setRecyclingStatus(ForeignTousseApplication.RECYCLINGSTATUS_RETURNEDINADVANCE); + //提前归还时终止物品,并且整单物品都已经被终止,回收状态要设置为“已提前归还”并且增加提前归还终止申请单备注; String remark = "【该申请单在" + DateTools.getFormatDateStr(returnDate, DateTools.COMMON_DATE_HMS) + "被" + foreignTousseApplication.getReturnMan() + "终止,原因:" + ForeignTousseApplication.ACTION_TYPE_EARLY_RETURN + "】"; CssdUtils.appendRemarkOfInvoicePlan(foreignTousseApplication, remark); } + if(returnAmount == applicationItems.size()){ + //整单物品都已经归还,回收状态要设置为“已提前归还”; + foreignTousseApplication.setRecyclingStatus(ForeignTousseApplication.RECYCLINGSTATUS_RETURNEDINADVANCE); + }else if(StringUtils.equals(foreignTousseApplication.getRecyclingStatus(), ForeignTousseApplication.RECYCLINGSTATUS_PARTRECYCLE)){ + //部分回收的申请单,整单物品都已经回收,回收状态要设置为“二次回收”; + if(recyclingAmount == applicationItems.size()){ + foreignTousseApplication.setRecyclingStatus(ForeignTousseApplication.RECYCLINGSTATUS_SECRECYCLED); + } + } } } objectDao.saveOrUpdate(foreignTousseApplication);