Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r33990 -r34025 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 33990) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 34025) @@ -100,6 +100,8 @@ import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; import com.forgon.disinfectsystem.entity.printinvoiceconfig.PrintInvoiceConfig; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; +import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingItem; +import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyDisinfection; import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyItem; @@ -2177,6 +2179,7 @@ if(actualSendAmount >= urgentAmount){ applicationItem.setUrgentAmount(0); applicationItem.setUrgent(Constants.STR_NO);// 修改紧急状态 + updateRecyclingItemUrgentInfo(applicationItem); if(CssdUtils.getSystemSetConfigByNameBool("enableUrgentFunction", false) && invoicePlan != null){//紧急物品完全发货时,重新计算申请单的紧急情况 UrgentLevel urgentLevel = urgentLevelManager.getMostUrgentByItemsList(invoicePlan.getApplicationItems()); invoicePlan.setUrgentLevel(urgentLevel); @@ -8180,6 +8183,7 @@ if(submitInvoiceContext.isSendOnlyUrgentGoods()){ item.setUrgentAmount(0);// 修改紧急数量 item.setUrgent(Constants.STR_NO);// 修改紧急状态 + updateRecyclingItemUrgentInfo(item); } }else{ invoicePlan.setDeliverStatus(InvoicePlan.DELIVERSTATUS_PARTDELIVERED); @@ -8190,6 +8194,7 @@ if(submitInvoiceContext.isSendOnlyUrgentGoods()){ item.setUrgentAmount(0);// 修改紧急数量 item.setUrgent(Constants.STR_NO);// 修改紧急状态 + updateRecyclingItemUrgentInfo(item); } // 最后一起验证 if(!verifyPartInvoiceImmediately){ @@ -8245,6 +8250,7 @@ if(submitInvoiceContext.isSendOnlyUrgentGoods()){ item.setUrgentAmount(0);// 修改紧急数量 item.setUrgent(Constants.STR_NO);// 修改紧急状态 + updateRecyclingItemUrgentInfo(item); } }else{ partDelivered = true; @@ -8688,6 +8694,7 @@ if(actualSendAmount >= urgentAmount){ applicationItem.setUrgentAmount(0); applicationItem.setUrgent(Constants.STR_NO);// 修改紧急状态 + updateRecyclingItemUrgentInfo(applicationItem); if(CssdUtils.getSystemSetConfigByNameBool("enableUrgentFunction", false) && invoicePlan != null){//紧急物品完全发货时,重新计算申请单的紧急情况 UrgentLevel urgentLevel = urgentLevelManager.getMostUrgentByItemsList(invoicePlan.getApplicationItems()); invoicePlan.setUrgentLevel(urgentLevel); @@ -8700,6 +8707,20 @@ // sendOutGoods.put(applicationGoodsName, scannedAmount); sendOutGoodsTdIdToAmountMap.put(ancestorId, scannedAmount); } + /** + * 清空回收项的加急信息 + * @param cleanTousseItem + */ + protected void updateRecyclingItemUrgentInfo(TousseItem cleanTousseItem){ + String sql = "update "+ RecyclingItem.class.getSimpleName() +" set urgentLevel=null,urgentAmount=0 " + + "where recyclingRecord_id in( select id from " + + RecyclingRecord.class.getSimpleName() + +" where recyclingApplication_id="+ + cleanTousseItem.getInvoicePlan().getId() + +") and tousseDefinitionId=" + + cleanTousseItem.getTousseDefinitionId(); + objectDao.excuteSQL(sql); + } private Set getAvaliableInvoiceItemForOperationReservationAppliaction(InvoicePlan invoicePlan, SubmitInvoiceContext submitInvoiceContext) { Set invoiceItemSet = new HashSet(); Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java =================================================================== diff -u -r33991 -r34025 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 33991) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 34025) @@ -7494,6 +7494,7 @@ Map>> invoicePlanToTousseItemMapListMap , Map> allForeignTousseAppIdToNotSentForeignTousseInstanceListMap){ Map idToAmountMap = new HashMap(); + List cleanTousseItems = new ArrayList(); invoicePlanToTousseItemMapListMap.entrySet().stream().forEach(entry -> { InvoicePlan invoicePlan = entry.getKey(); List> list = entry.getValue(); @@ -7528,21 +7529,36 @@ } //如果是外来器械拆分小包,则同一个申请项对应装配拆分出来的不管多少个包数量都只算作1 idToAmountMap.put(tousseItem.getId(), amount); + if(tousseItem.getUrgentAmount() > 0 && amount >= tousseItem.getUrgentAmount()){ + cleanTousseItems.add(tousseItem); + } }else if(value instanceof Map){ Map identiToAmountMap = (Map)value; - idToAmountMap.put(tousseItem.getId(), identiToAmountMap.values().stream().reduce((amount1,amount2) -> { + Integer amount3 = identiToAmountMap.values().stream().reduce((amount1,amount2) -> { return MathTools.add(amount1 , amount2).intValue(); - }).orElse(0) - ); + }).orElse(0); + idToAmountMap.put(tousseItem.getId(), amount3); + if(tousseItem.getUrgentAmount() > 0 && amount3 != null && amount3 >= tousseItem.getUrgentAmount()){ + cleanTousseItems.add(tousseItem); + } } }); }); }); batchExcuteUpdateTousseItem(idToAmountMap); + batchExcuteUpdateRecyclingItem(cleanTousseItems); } /** * 批量执行申请项的发货数量等有关字段的更新 + */ + private void batchExcuteUpdateRecyclingItem(List cleanTousseItems){ + for (TousseItem cleanTousseItem : cleanTousseItems) { + updateRecyclingItemUrgentInfo(cleanTousseItem); + } + } + /** + * 批量执行申请项的发货数量等有关字段的更新 * @param idToAmountMap key为申请项id,value为本次的发货数量(非更新的发货数量) */ private void batchExcuteUpdateTousseItem(Map idToAmountMap){ @@ -8748,11 +8764,14 @@ //批量更新TousseItem,InvoicePlan表数据 List invoicePlanIdList = new ArrayList(); Map tousseItemIdToAmountMap = new HashMap(); + List cleanTousseItems = new ArrayList(); for(Entry> entry : tousseItemToSubTousseInstanceListMap.entrySet()){ TousseItem tousseItem = entry.getKey(); List subTiList = entry.getValue(); tousseItemIdToAmountMap.put(tousseItem.getId() , subTiList.size()); - + if(tousseItem.getUrgentAmount() > 0 && subTiList.size() >= tousseItem.getUrgentAmount()){ + cleanTousseItems.add(tousseItem); + } Long ipId = tousseItem.getInvoicePlan().getId(); if(!invoicePlanIdList.contains(ipId)){ invoicePlanIdList.add(ipId); @@ -8778,6 +8797,7 @@ } batchExcuteUpdateTousseItem(tousseItemIdToAmountMap); + batchExcuteUpdateRecyclingItem(cleanTousseItems); batchUpdateInvoicePlanTableData(invoicePlanIdList,currentDateTime,invoiceOrigin,tousseDeliverOccasion); //批量新增invoice_InvoicePlan记录