Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r23301 -r23391 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 23301) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 23391) @@ -827,7 +827,7 @@ return td; } - private RecyclingApplication getSameStatusRecyclingApplication( + private RecyclingApplication getSameStatusRecyclingApplicationForUpdate( RecyclingApplication recyclingApplication,Boolean isCommit) { String sql = "where po.departCoding = '" + recyclingApplication.getDepartCoding() @@ -847,7 +847,7 @@ + (recyclingApplication.getId() != null ? " and po.id !=" + recyclingApplication.getId() : "") + " order by po.applicationTime desc"; - return (RecyclingApplication) objectDao.getBySql( + return (RecyclingApplication) objectDao.getBySql_ForUpdate( RecyclingApplication.class.getName(), sql); } @@ -3811,7 +3811,7 @@ isNeedToBeMerged = isApplicationFormMerge(recyclingApplication,supplyRoomConfig, autoMerge); if (isNeedToBeMerged) { - existApplication = getSameStatusRecyclingApplication(recyclingApplication,isCommit); + existApplication = getSameStatusRecyclingApplicationForUpdate(recyclingApplication,isCommit); if (existApplication != null) { List needToBeAdded = new ArrayList(); @@ -3840,7 +3840,8 @@ * 旧单据的物品设置编辑数量等于申请数量 */ Map tousseNameAndTypeToTousseItem = new HashMap(); //物品名称_类型与TousseItem的Map - ListoldItems = existApplication.getApplicationItems(); + //原有已存在的申请单的申请项 + List oldItems = existApplication.getApplicationItems(); for (TousseItem oldItem : oldItems) { oldItem.setEditAmount(oldItem.getAmount()); String key = String.format("%s_%s", oldItem.getTousseName(), oldItem.getTousseType()); @@ -3875,7 +3876,11 @@ // } // break; // } - + //验证物品名称及类型是否都一致,如果不是都一致的话则进入下一次循环 + if (!StringUtils.equals(newItem.getTousseName(), oldItem.getTousseName()) + || !StringUtils.equals(newItem.getTousseType(), oldItem.getTousseType())){ + continue; + } String key = String.format("%s_%s", newItem.getTousseName(), newItem.getTousseType()); TousseItem existTousseItem = tousseNameAndTypeToTousseItem.get(key); if (existTousseItem != null) {