Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r13784 -r13840 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 13784) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 13840) @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.stream.Collectors; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -130,6 +131,8 @@ private TaskGroupManager taskGroupManager; + private InvoicePlanManager invoicePlanManager; + public void setGoodsStockManager(GoodsStockManager goodsStockManager) { this.goodsStockManager = goodsStockManager; } @@ -191,6 +194,10 @@ this.taskGroupManager = taskGroupManager; } + public void setInvoicePlanManager(InvoicePlanManager invoicePlanManager) { + this.invoicePlanManager = invoicePlanManager; + } + @Override public void saveOrUpdate(RecyclingApplication recyclingApplication) { AclTools.addStartAndEndToken(recyclingApplication); @@ -3742,36 +3749,36 @@ Date now = new Date(); invoicePlans = new HashSet<>(invoicePlans); for(InvoicePlan invoicePlan : invoicePlans){ - computeAndSetPrintStatus(invoicePlan); + invoicePlanManager.computeAndSetPrintStatus(invoicePlan); if(setPrintTime){ invoicePlan.setPrintTime(now); } objectDao.saveOrUpdate(invoicePlan); } } + +// private void computeAndSetPrintStatus(InvoicePlan invoicePlan){ +// if(invoicePlan == null|| CollectionUtils.isEmpty(invoicePlan.getApplicationItems())) +// return; +// Predicate printedPred1 = new Predicate() { +// @Override +// public boolean evaluate(TousseItem vo) { +// return (BooleanUtils.isTrue(vo.getIsPrinted())); +// } +// }; +// +// int printStatus; +// if(CollectionUtils.matchesAll(invoicePlan.getApplicationItems(), printedPred1)){ +// printStatus = InvoicePlan.PRINT_STATUS_PRINTED; +// } else if(CollectionUtils.exists(invoicePlan.getApplicationItems(), printedPred1)){ +// printStatus = InvoicePlan.PRINT_STATUS_PART_PRINT; +// } else { +// printStatus = InvoicePlan.PRINT_STATUS_UNPRINT; +// } +// +// invoicePlan.setPrinted(printStatus); +// } - private void computeAndSetPrintStatus(InvoicePlan invoicePlan){ - if(invoicePlan == null|| CollectionUtils.isEmpty(invoicePlan.getApplicationItems())) - return; - Predicate printedPred1 = new Predicate() { - @Override - public boolean evaluate(TousseItem vo) { - return (BooleanUtils.isTrue(vo.getIsPrinted())); - } - }; - - int printStatus; - if(CollectionUtils.matchesAll(invoicePlan.getApplicationItems(), printedPred1)){ - printStatus = InvoicePlan.PRINT_STATUS_PRINTED; - } else if(CollectionUtils.exists(invoicePlan.getApplicationItems(), printedPred1)){ - printStatus = InvoicePlan.PRINT_STATUS_PART_PRINT; - } else { - printStatus = InvoicePlan.PRINT_STATUS_UNPRINT; - } - - invoicePlan.setPrinted(printStatus); - } - // 根据器械包实例的条码,获取包含该器械包的待回收的申请单的ID,取满足条件的第一张申请单 public String getWaitingRecycleApplicationIdContaintTousseInstance(String instantceBarcode){ Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r13689 -r13840 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 13689) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 13840) @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; @@ -1494,6 +1495,7 @@ } computeAndSetStatus(invoicePlan); + computeAndSetPrintStatus(invoicePlan); objectDao.saveOrUpdate(invoicePlan); switch (invoicePlan.getType()) { @@ -1518,4 +1520,41 @@ objectDao.delete(task); } + @Override + public void computeAndSetPrintStatus(InvoicePlan invoicePlan){ + if(invoicePlan == null|| CollectionUtils.isEmpty(invoicePlan.getApplicationItems())){ + return; + } + List items = invoicePlan.getApplicationItems(); + //notTerminatedItems返回结果不会为null,但可能是size=0 + List notTerminatedItems = items.stream().filter(item->{ + boolean ret = true; + if(item != null){ + ret = !BooleanUtils.isTrue(item.getIsTerminated()); + } + return ret; + }).collect(Collectors.toList()); + + if(CollectionUtils.isEmpty(notTerminatedItems)){ + return; + } + + Predicate printedPred1 = new Predicate() { + @Override + public boolean evaluate(TousseItem vo) { + return (BooleanUtils.isTrue(vo.getIsPrinted())); + } + }; + + int printStatus; + if(CollectionUtils.matchesAll(notTerminatedItems, printedPred1)){ + printStatus = InvoicePlan.PRINT_STATUS_PRINTED; + } else if(CollectionUtils.exists(notTerminatedItems, printedPred1)){ + printStatus = InvoicePlan.PRINT_STATUS_PART_PRINT; + } else { + printStatus = InvoicePlan.PRINT_STATUS_UNPRINT; + } + invoicePlan.setPrinted(printStatus); + } + } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r13352 -r13840 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 13352) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 13840) @@ -114,5 +114,12 @@ public void terminateTousseItemByIds(Collection tousseItemIds,String endCase); public void terminateTousseItems(Collection tousseItems); public void terminateInvoicePlan(InvoicePlan invoicePlan, String userName, String endCause); + /** + * 计算并设置发货计划单的打印状态。如果invoicePlan没有包含TousseItem(申请项),invoicePlan中的所有TousseItem都已经终止,则不改变打印状态。 + *
如果没有全部终止,则以去除终止项后的集合为标准,计算打印状态:剩余的集合中,物品都没有打印,则打印状态改为否;如果都已打印,则打印状态改为是;如果有 + *
一部分打印,一部分没有打印,则打印状态改为部分打印 + * @param invoicePlan + */ + public void computeAndSetPrintStatus(InvoicePlan invoicePlan); } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r13815 -r13840 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 13815) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 13840) @@ -1275,8 +1275,7 @@ private RecyclingApplication newRecyclingApplication( RecyclingRecord recyclingRecord) { - RecyclingApplication application; - application = new RecyclingApplication(); + RecyclingApplication application = new RecyclingApplication(); application.setSerialNumber(serialNumManager .getSerialNumberStr(SerialNum.TYPE_RECYCLINGAPPLICATION)); application.setApplicant(recyclingRecord.getRecyclingUser());