Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java =================================================================== diff -u -r29539 -r29577 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 29539) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 29577) @@ -1417,9 +1417,24 @@ if (invoice != null) { List tousseInstances = invoice.getTousseInstances(objectDao); Set invoiceItemSet = invoice.getInvoiceItem(); + Map invoiceItemJsonMap = new LinkedHashMap(); for (InvoiceItem invoiceItem : invoiceItemSet) { String name = invoiceItem.getTousseName(); + String tousseType = invoiceItem.getTousseType(); + String key = name + "_" + tousseType; //StringBuffer materialBuff = new StringBuffer(); + if(invoiceItemJsonMap.containsKey(key)){ + JSONObject invoiceItemJson = invoiceItemJsonMap.get(key); + Integer middlePackageAmount = invoiceItem.getMiddlePackageAmount(); + int amount = invoiceItemJson.optInt("amount", 0); + if(middlePackageAmount != null && middlePackageAmount > 0){ + invoiceItemJson.put("amount", amount + middlePackageAmount); + }else{ + invoiceItemJson.put("amount", amount + invoiceItem.getAmount()); + } + invoiceItemJsonMap.put(key, invoiceItemJson); + continue; + } JSONArray materialArray = new JSONArray(); // 消毒物品材料显示 if (InvoiceItem.DIPOSABLE_NO.equals(invoiceItem @@ -1499,8 +1514,13 @@ } json.put("material", materialArray); - array.add(json); + invoiceItemJsonMap.put(key, json); } + if(!invoiceItemJsonMap.isEmpty()){ + for (String key : invoiceItemJsonMap.keySet()) { + array.add(invoiceItemJsonMap.get(key)); + } + } } StrutsResponseUtils.output(array); }