Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceItemManagerImpl.java =================================================================== diff -u -r37999 -r38008 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceItemManagerImpl.java (.../InvoiceItemManagerImpl.java) (revision 37999) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceItemManagerImpl.java (.../InvoiceItemManagerImpl.java) (revision 38008) @@ -1,9 +1,9 @@ package com.forgon.disinfectsystem.invoicemanager.service; -import java.math.RoundingMode; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -69,12 +69,17 @@ List batches = disposableGoodsBatchManager.getCollection(batchIds); //InvoiceItem关联的DisposableGoodsBatch Map> invoiceItemBatcheMap = getInvoiceItemDisposableGoodsBatchMap(idList); + Map invoiceItemDisposableGoodsMap = getInvoiceItemDisposableGoods(invoiceItems); + //同一个发货单明细包含多个批次时,按照一次性物品定义汇总显示 + boolean mergeByDisposableGoods = false; for(InvoiceItem ii : invoiceItems){ InvoiceItemSummaryVo find = null; Long goodsId = null; String batchNumber = null; DisposableGoodsBatch batch = null; + DisposableGoods diposableGoods = null; if(ii.disposable()){ + diposableGoods = invoiceItemDisposableGoodsMap.get(ii.getDisposableGoodsId()); goodsId = ii.getDisposableGoodsBatchId(); batch = IDOperators.find(batches, goodsId); if(batch != null){ @@ -89,7 +94,19 @@ } } } - find = InvoiceItemSummaryVo.find(vos, batch); + if(batch != null && !mergeByDisposableGoods){ + //按照批次合并 + find = InvoiceItemSummaryVo.find(vos, batch); + }else{ + //按照一次性物品定义合并 + find = InvoiceItemSummaryVo.find(vos, diposableGoods); + mergeByDisposableGoods = true; + if(find != null){ + //不显示批次号 + find.setBatchNumber(null); + find.setGoodsId(null); + } + } }else{ if(DatabaseUtil.isPoIdValid(ii.getTousseDefinitionId())){ TousseDefinition td = IDOperators.find(tds, ii.getTousseDefinitionId()); @@ -116,13 +133,19 @@ find.setDisposable(ii.getDiposable()); find.setGoodsId(goodsId); find.setTousseType(ii.getTousseType()); - if(batch != null){ - DisposableGoods diposableGoods = batch.getDiposableGoods(); + /*if(batch != null){ + //DisposableGoods diposableGoods = batch.getDiposableGoods(); if(diposableGoods != null){ find.setUnit(diposableGoods.getUnit()); find.setMiddlePackageUnit(diposableGoods.getMiddlePackageUnit()); find.setTransferScale(diposableGoods.getTransferScale()); } + }*/ + if(diposableGoods != null){ + find.setDisposableGoodsId(diposableGoods.getId()); + find.setUnit(diposableGoods.getUnit()); + find.setMiddlePackageUnit(diposableGoods.getMiddlePackageUnit()); + find.setTransferScale(diposableGoods.getTransferScale()); } vos.add(find); } @@ -148,6 +171,36 @@ } /** + * 发货明细的一次性物品定义id及一次性物品定义的map + * @param invoiceItems + * @return + */ + private Map getInvoiceItemDisposableGoods(List invoiceItems) { + + Map invoiceItemDisposableGoodsMap = new HashMap(); + Set disposableGoodsIdSet = new HashSet(); + for(InvoiceItem ii : invoiceItems){ + if(ii.disposable()){ + disposableGoodsIdSet.add(ii.getDisposableGoodsId()); + } + } + if(CollectionUtils.isEmpty(disposableGoodsIdSet)){ + return invoiceItemDisposableGoodsMap; + } + List ids = new ArrayList(); + ids.addAll(disposableGoodsIdSet); + @SuppressWarnings("unchecked") + List disposableGoodsList = objectDao.findByIds(DisposableGoods.class.getSimpleName(), ids); + if(CollectionUtils.isEmpty(disposableGoodsList)){ + return invoiceItemDisposableGoodsMap; + } + for (DisposableGoods disposableGoods : disposableGoodsList) { + invoiceItemDisposableGoodsMap.put(disposableGoods.getId(), disposableGoods); + } + return invoiceItemDisposableGoodsMap; + } + + /** * 查询一次性物品发货单的一次性物品批次 * @param disposableInvoiceIdColl * @return Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/vo/InvoiceItemSummaryVo.java =================================================================== diff -u -r37999 -r38008 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/vo/InvoiceItemSummaryVo.java (.../InvoiceItemSummaryVo.java) (revision 37999) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/vo/InvoiceItemSummaryVo.java (.../InvoiceItemSummaryVo.java) (revision 38008) @@ -8,6 +8,7 @@ import org.apache.commons.lang3.StringUtils; import com.forgon.Constants; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatch; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; @@ -53,6 +54,11 @@ */ private Long goodsId; /** + * 一次性物品定义ID + */ + private Long disposableGoodsId; + + /** * 是否一次性物品 */ private String disposable; @@ -115,6 +121,12 @@ public void setGoodsId(Long goodsId) { this.goodsId = goodsId; } + public Long getDisposableGoodsId() { + return disposableGoodsId; + } + public void setDisposableGoodsId(Long disposableGoodsId) { + this.disposableGoodsId = disposableGoodsId; + } public String getDisposable() { return disposable; } @@ -213,4 +225,20 @@ }}); } + + public static InvoiceItemSummaryVo find(List items, DisposableGoods diposableGoods) { + return CollectionUtils.find(items, new Predicate(){ + @Override + public boolean evaluate(InvoiceItemSummaryVo object) { + if(object == null && diposableGoods == null){ + return true; + } + if(object == null || diposableGoods == null){ + return false; + } + return MathTools.valueEquals(object.disposableGoodsId, diposableGoods.getId()) + && StringUtils.equals(object.disposable, Constants.STR_YES); + + }}); + } }