Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r15518 -r15583 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 15518) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 15583) @@ -1376,7 +1376,7 @@ newUnPackingTousseInstanceOrDisinfectGoodsDefinition( record, application, amount, isNewAddTousse, td, appItem, json, errors, damages, - basketItemJson, urgentTousseItems); + basketItemJson, urgentTousseItems,appTousseItemMap); } } } @@ -1424,11 +1424,20 @@ application = newRecyclingApplication(record); record.setRecyclingApplication(application); + Map itemMap = new HashMap(); + for (JSONObject json : itemJsonList) { Long tousseDefinitionID = json.optLong("tousseDefinitionID"); - TousseItem item = new TousseItem(); + TousseItem item = itemMap.get(tousseDefinitionID); + if(item == null){ + item = new TousseItem(); + itemMap.put(tousseDefinitionID, item); + } item.setAmount(0); - item.setRecyclingAmount(json.optInt("amount")); + + Integer recyclingAmount = json.optInt("amount"); + + item.setRecyclingAmount(item.getRecyclingAmount() == null ? recyclingAmount : (recyclingAmount + item.getRecyclingAmount())); item.setTousseName(json.optString("tousseName")); TousseDefinition td = getTousseDefinition(idToTDMap, tousseDefinitionID); item.setTousseType(td.getTousseType()); @@ -1455,9 +1464,9 @@ //不装配不追溯物品 newUnPackingTousseInstanceOrDisinfectGoodsDefinition( - record, application, item.getRecyclingAmount(), + record, application, recyclingAmount, true, td, item, json, errors, damages, - basketItemJson, urgentTousseItems); + basketItemJson, urgentTousseItems,itemMap); } application.setApplicationItems(tousseItems); invoicePlanManager.computeAndSetStatus(application); @@ -1544,10 +1553,11 @@ * @param basketItemJson */ private void newUnPackingTousseInstanceOrDisinfectGoodsDefinition( - RecyclingRecord record, InvoicePlan application, - Integer amount, boolean isNewAddTousse, TousseDefinition td, - TousseItem appItem, JSONObject basketItemJson, JSONArray errors, - JSONArray damages,JSONArray basketItems,JSONArray urgentTousseItems) { + RecyclingRecord record, InvoicePlan application, Integer amount, + boolean isNewAddTousse, TousseDefinition td, TousseItem appItem, + JSONObject basketItemJson, JSONArray errors, JSONArray damages, + JSONArray basketItems, JSONArray urgentTousseItems, + Map toussItemMap) { TousseDefinition createInstanceTD = td; //创建消毒物品包定义 @@ -1565,13 +1575,17 @@ appItem.setTousseDefinitionId(createInstanceTD.getId()); //把页面中传到后台的JSON tousseDefinitionID都替换成新的器械包定义 id - String originalId = basketItemJson.optString("tousseDefinitionID"); + long originalId = basketItemJson.optLong("tousseDefinitionID"); basketItemJson.put("tousseDefinitionID", createInstanceTD.getId()); resetJsonPropertyTousseDefinitionId(errors,originalId,createInstanceTD.getId()); resetJsonPropertyTousseDefinitionId(damages,originalId,createInstanceTD.getId()); resetJsonPropertyTousseDefinitionId(basketItems,originalId,createInstanceTD.getId()); resetJsonPropertyTousseDefinitionId(urgentTousseItems, originalId, createInstanceTD.getId()); - + TousseItem tousseItem = toussItemMap.get(originalId); + if(tousseItem != null && originalId != createInstanceTD.getId()){ + toussItemMap.put(createInstanceTD.getId(), tousseItem); + toussItemMap.remove(originalId, tousseItem); + } } //创建不装配、不追溯的包实例 if(TousseDefinition.STR_NO.equals(td.getIsPacking())){ @@ -1586,11 +1600,11 @@ * @param originalId * @param replaceId */ - private void resetJsonPropertyTousseDefinitionId(JSONArray array,String originalId ,Long replaceId){ + private void resetJsonPropertyTousseDefinitionId(JSONArray array,long originalId ,Long replaceId){ if(array != null){ for (int i = 0; i < array.size(); i++) { JSONObject item = array.optJSONObject(i); - if(item.optString("tousseDefinitionID").equals(originalId)){ + if(item.optLong("tousseDefinitionID") == originalId){ item.put("tousseDefinitionID", replaceId); } }