Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r13720 -r13730 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 13720) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 13730) @@ -804,47 +804,48 @@ price = 0.00; } totalPrice = MathTools.mul(price, amount, 2); - List voList = map.get(materialName); - // 合并名称相同的物品,消毒日期、失效日期、单价相同的才合并 - if (voList != null) { - InvoicePrintVo tempVo = null; - for (InvoicePrintVo vo : voList) { - if (vo.getFrequency().equals(price) - && vo.getSterilizationdate().equals( - operationTime) - && vo.getSterilizerName().equals( - validUntil)) { - tempVo = vo; - break; - } - } - if (tempVo != null) { - tempVo.setAmount(tempVo.getAmount() + amount); - tempVo.setTotalPrice(tempVo.getTotalPrice() - + totalPrice); - } else { - tempVo = new InvoicePrintVo(); - tempVo.setMaterialAmount(amount); - tempVo.setMaterialName(materialName); - tempVo.setMaterialPrice(price); - tempVo.setOperationTime(operationTime); - tempVo.setValidUntil(validUntil); - tempVo.setMaterialTotalPrice(totalPrice); - voList.add(tempVo); - } - } else { - voList = new ArrayList(); - InvoicePrintVo tempVo = new InvoicePrintVo(); - tempVo = new InvoicePrintVo(); - tempVo.setMaterialAmount(amount); - tempVo.setMaterialName(materialName); - tempVo.setMaterialPrice(price); - tempVo.setOperationTime(operationTime); - tempVo.setValidUntil(validUntil); - tempVo.setMaterialTotalPrice(totalPrice); - voList.add(tempVo); - map.put(tousseInstance.getTousseName(), voList); - } + merge(map, operationTime, validUntil, materialName, amount, price, totalPrice, materialName); +// List voList = map.get(materialName); +// // 合并名称相同的物品,消毒日期、失效日期、单价相同的才合并 +// if (voList != null) { +// InvoicePrintVo tempVo = null; +// for (InvoicePrintVo vo : voList) { +// if (vo.getFrequency().equals(price) +// && vo.getSterilizationdate().equals( +// operationTime) +// && vo.getSterilizerName().equals( +// validUntil)) { +// tempVo = vo; +// break; +// } +// } +// if (tempVo != null) { +// tempVo.setAmount(tempVo.getAmount() + amount); +// tempVo.setTotalPrice(tempVo.getTotalPrice() +// + totalPrice); +// } else { +// tempVo = new InvoicePrintVo(); +// tempVo.setMaterialAmount(amount); +// tempVo.setMaterialName(materialName); +// tempVo.setMaterialPrice(price); +// tempVo.setOperationTime(operationTime); +// tempVo.setValidUntil(validUntil); +// tempVo.setMaterialTotalPrice(totalPrice); +// voList.add(tempVo); +// } +// } else { +// voList = new ArrayList(); +// InvoicePrintVo tempVo = new InvoicePrintVo(); +// tempVo = new InvoicePrintVo(); +// tempVo.setMaterialAmount(amount); +// tempVo.setMaterialName(materialName); +// tempVo.setMaterialPrice(price); +// tempVo.setOperationTime(operationTime); +// tempVo.setValidUntil(validUntil); +// tempVo.setMaterialTotalPrice(totalPrice); +// voList.add(tempVo); +// map.put(tousseInstance.getTousseName(), voList); +// } } } } @@ -4652,41 +4653,8 @@ String keyName = tousseInstance.getTousseName(); keyName = CssdUtils.filterDisinfectGoodsName(keyName); - List voList = map.get(keyName); - - if(voList == null){ - voList = new ArrayList(); - map.put(keyName, voList); - } - // 合并名称相同的物品,消毒日期、失效日期、单价相同的才合并 - InvoicePrintVo tempVo = null; - for (InvoicePrintVo vo : voList) { - if (vo.getFrequency().equals(price) - && vo.getSterilizationdate().equals( - operationTime) - && vo.getSterilizerName().equals( - expireDateStr)) { - tempVo = vo; - break; - } - } - if (tempVo != null) { - tempVo.setAmount(tempVo.getAmount() + amount); - tempVo.setTotalPrice(tempVo.getTotalPrice() - + totalPrice); - } else { - tempVo = new InvoicePrintVo(); - tempVo.setName(materialName); - tempVo.setAmount(amount); - tempVo.setMaterialAmount(amount); - tempVo.setMaterialName(materialName); - tempVo.setMaterialPrice(price); - tempVo.setOperationTime(operationTime); - tempVo.setValidUntil(expireDateStr); - tempVo.setExpireDate(expireDateStr); - tempVo.setMaterialTotalPrice(totalPrice); - voList.add(tempVo); - } + merge(map, operationTime, expireDateStr, materialName, + amount, price, totalPrice, keyName); } } } @@ -4702,6 +4670,49 @@ } return returnList; } + + private void merge(Map> map, + String operationTime, String expireDateStr, String materialName, + int amount, Double price, Double totalPrice, String keyName) { + List voList = map.get(keyName); + + if(voList == null){ + voList = new ArrayList(); + map.put(keyName, voList); + } + // 合并名称相同的物品,消毒日期、失效日期、单价相同的才合并 + InvoicePrintVo tempVo = null; + for (InvoicePrintVo vo : voList) { + if (vo.getPrice().equals(price) + && vo.getOperationTime().equals( + operationTime) + && vo.getExpireDate().equals( + expireDateStr)) { + tempVo = vo; + break; + } + } + if (tempVo != null) { + tempVo.setAmount(MathTools.add(tempVo.getAmount(), amount).intValue()); + tempVo.setMaterialAmount(MathTools.add(tempVo.getMaterialAmount(), amount).intValue()); + tempVo.setTotalPrice(MathTools.add(tempVo.getTotalPrice(),totalPrice).doubleValue()); + tempVo.setMaterialTotalPrice(MathTools.add(tempVo.getMaterialTotalPrice(), totalPrice).doubleValue()); + } else { + tempVo = new InvoicePrintVo(); + tempVo.setName(materialName); + tempVo.setMaterialName(materialName); + tempVo.setAmount(amount); + tempVo.setMaterialAmount(amount); + tempVo.setMaterialPrice(price); + tempVo.setPrice(price); + tempVo.setOperationTime(operationTime); + tempVo.setValidUntil(expireDateStr); + tempVo.setExpireDate(expireDateStr); + tempVo.setMaterialTotalPrice(totalPrice); + tempVo.setTotalPrice(totalPrice); + voList.add(tempVo); + } + } @Override public Collection getDisinfectGoodsPrintData( String[] invoiceIds){