Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoiceView.js =================================================================== diff -u -r14483 -r14503 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoiceView.js (.../invoiceView.js) (revision 14483) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoiceView.js (.../invoiceView.js) (revision 14503) @@ -1918,17 +1918,15 @@ // 消毒物品材料显示 if (invoiceItems[i].material != null && invoiceItems[i].material.length > 0) { - var materialArray = invoiceItems[i].material - .split("@&"); + var materialArray = invoiceItems[i].material; for ( var j = 0; j < materialArray.length; j++) { - var materialItems = materialArray[j] - .split("#&"); + var materialItem = materialArray[j]; content += "   " - + materialItems[0] + + materialItem.name + "" - + materialItems[1] + + materialItem.count + ""; } } Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java =================================================================== diff -u -r14379 -r14503 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 14379) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 14503) @@ -27,6 +27,7 @@ import net.sf.json.util.PropertyFilter; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.Predicate; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; @@ -919,18 +920,33 @@ public String getInvoiceItemsByInvoiceId() { String invoiceId = StrutsParamUtils.getPraramValue("invoiceId", ""); if (StringUtils.isNotBlank(invoiceId)) { - StringBuffer buffer = new StringBuffer(); +// StringBuffer buffer = new StringBuffer(); + JSONArray array = new JSONArray(); Invoice invoice = invoiceManager.getInvoiceById(invoiceId); if (invoice != null) { + List tousseInstances = invoice.getTousseInstances(objectDao); Set invoiceItemSet = invoice.getInvoiceItem(); for (InvoiceItem invoiceItem : invoiceItemSet) { String name = invoiceItem.getTousseName(); - StringBuffer materialBuff = new StringBuffer(); + //StringBuffer materialBuff = new StringBuffer(); + JSONArray materialArray = new JSONArray(); // 消毒物品材料显示 if (InvoiceItem.DIPOSABLE_NO.equals(invoiceItem .getDiposable())) { - TousseDefinition definition = tousseDefinitionManager - .getTousseDefinitionByName(name); + TousseInstance tousseInstanceFind = CollectionUtils.find(tousseInstances, new Predicate(){ + @Override + public boolean evaluate(TousseInstance tousseInstance) { + return StringTools.equals(tousseInstance.getTousseName(),name); + } + }); + TousseDefinition definition = null; + if(tousseInstanceFind != null){ + definition = tousseInstanceFind.getTousseDefinition(); + }else{ + definition = tousseDefinitionManager + .getTousseDefinitionByName(name); + } + if (definition != null && TousseDefinition.PACKAGE_TYPE_DISINFECTION .equals(definition.getTousseType())) { @@ -943,12 +959,16 @@ String materialName = materialInstance .getMaterialDefinition().getName(); int count = materialInstance.getCount(); - materialBuff.append(materialName).append("#&") - .append(count); - if (i != materialList.size() - 1 - || diposableGoodsItems.size() > 0) { - materialBuff.append("@&"); - } + JSONObject material = new JSONObject(); + material.put("name", materialName); + material.put("count", count); + materialArray.add(material); +// materialBuff.append(materialName).append("#&") +// .append(count); +// if (i != materialList.size() - 1 +// || diposableGoodsItems.size() > 0) { +// materialBuff.append("@&"); +// } } // 一次性材料 for (int i = 0; i < diposableGoodsItems.size(); i++) { @@ -961,31 +981,31 @@ } int count = diposableGoodsItems.get(i) .getAmount(); - materialBuff.append(diposableGoodName) - .append("#&").append(count); - if (i != diposableGoodsItems.size() - 1) { - materialBuff.append("@&"); - } + JSONObject material = new JSONObject(); + material.put("name", diposableGoodName); + material.put("count", count); + materialArray.add(material); + +// materialBuff.append(diposableGoodName) +// .append("#&").append(count); +// if (i != diposableGoodsItems.size() - 1) { +// materialBuff.append("@&"); +// } } } } - if (buffer.length() > 0) { - buffer.append(","); - } - buffer.append("{name:'").append(name).append("',amount:'") - .append(invoiceItem.getAmount()) - .append("',material:'") - .append(materialBuff.toString()).append("'}"); +// if (buffer.length() > 0) { +// buffer.append(","); +// } + JSONObject json = new JSONObject(); + json.put("name", name); + json.put("amount", invoiceItem.getAmount()); + json.put("material", materialArray); + array.add(json); } } - try { - StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); - StrutsParamUtils.getResponse().getWriter() - .println("[" + buffer.toString() + "]"); - } catch (IOException e) { - e.printStackTrace(); - } + StrutsResponseUtils.output(array); } return null; }