Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r29247 -r29259 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 29247) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 29259) @@ -1739,6 +1739,17 @@ boolean isForeignTousseApplication = (application == null) ? false : application.isForeignTousseAppliaction(); //是否外来器械申请单二次回收 boolean isSecondRecycleForForeignTousse = (application == null) ? false : application.isSecondRecycleForForeignTousse(); + //收集tousseItem改动前的加急数量,用来判断是否有改动 + Map tousseItemIdAndUrgentAmountMap = new HashMap();//改动前的申请物品的加急数量 + if(application != null){ + if(CollectionUtils.isNotEmpty(application.getApplicationItems())){ + for (TousseItem tousseItem : application.getApplicationItems()) { + if(tousseItem.getUrgentAmount() != null && tousseItem.getUrgentAmount() != 0){ + tousseItemIdAndUrgentAmountMap.put(tousseItem.getId(), tousseItem.getUrgentAmount()); + } + } + } + } save(record); //日志记录 addLogInfo(params,record.getId()); @@ -1772,6 +1783,10 @@ //设置装配任务 setPackingTask(record,tousseItemJson,tousseDefinitions,confirmation,urgentTousseItems,isForeignTousseApplication,containerMap, isChangeApplyDepart,recyclingContext); + //加急物品 + if(urgentTousseItems != null){ + setPackingTaskUrgentAmount(record, urgentTousseItems,tousseDefinitions,tousseItemIdAndUrgentAmountMap); + } //更新借物单状态 updateBorrowApplication(record,tousseItemJson); // 更新科室二级库存 @@ -2061,6 +2076,17 @@ appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_RECYCLINGRECORD, Log.TYPE_QUERY, "回收清点项及入筐物品都为空,不再产生回收记录"); return; } + //收集tousseItem改动前的加急数量,用来判断是否有改动 + Map tousseItemIdAndUrgentAmountMap = new HashMap();//改动前的申请物品的加急数量 + if(application != null){ + if(CollectionUtils.isNotEmpty(application.getApplicationItems())){ + for (TousseItem tousseItem : application.getApplicationItems()) { + if(tousseItem.getUrgentAmount() != null && tousseItem.getUrgentAmount() != 0){ + tousseItemIdAndUrgentAmountMap.put(tousseItem.getId(), tousseItem.getUrgentAmount()); + } + } + } + } save(record); //日志记录 addLogInfo(params,record.getId()); @@ -2105,6 +2131,10 @@ //设置装配任务 setPackingTask(record,tousseItemJson,tousseDefinitions,confirmation,urgentTousseItems,isForeignTousseApplication,containerMap, isChangeApplyDepart,recyclingContext); + //加急物品 + if(urgentTousseItems != null){ + setPackingTaskUrgentAmount(record, urgentTousseItems,tousseDefinitions,tousseItemIdAndUrgentAmountMap); + } //更新借物单状态 updateBorrowApplication(record,tousseItemJson); //已清洗完成或或清洗中篮筐修改后重新计算清洗工作量 @@ -3208,10 +3238,6 @@ setIdCardBarcodeForPackingTask(idCardTaskMap); //报损、丢失关联装配任务 setRecyclingErrorAndDamagePackingTaskId(recyclingRecord,tousseDefinitions,confirmation); - //加急物品 - if(urgentTousseItems != null){ - setPackingTaskUrgentAmount(recyclingRecord, urgentTousseItems,tousseDefinitions); - } if(isChangeApplyDepart){ String sql = String @@ -3387,7 +3413,7 @@ } private void setPackingTaskUrgentAmount(RecyclingRecord recyclingRecord, - List urgentTousseItems,List tousseDefinitions) { + List urgentTousseItems,List tousseDefinitions,Map tousseItemIdAndUrgentAmountMap) { for (int i = 0; i < urgentTousseItems.size(); i++) { UrgentTousseItem urgentTousseItem = urgentTousseItems.get(i); String tousseName = urgentTousseItem.getTousseName(); @@ -3418,30 +3444,39 @@ if(urgentTousseItem.getModified() != null && urgentTousseItem.getModified()){ throw new RuntimeException(tousseName + "已装配,不能修改加急数量!"); } - urgentAmount = 0; }else{ - throw new RuntimeException(tousseName + "未回收,不能修改加急数量!"); + InvoicePlan invoicePlan = recyclingRecord.getRecyclingApplication(); + if(invoicePlan != null){ + List tousseItems = invoicePlan.getApplicationItems(); + if(CollectionUtils.isNotEmpty(tousseItems)){ + for(TousseItem tousseItem : tousseItems){ + if(tousseItemIdAndUrgentAmountMap.containsKey(tousseItem.getId()) && tousseItemIdAndUrgentAmountMap.get(tousseItem.getId()).intValue() != urgentAmount.intValue()){ + throw new RuntimeException(tousseName + "未回收,不能修改加急数量!"); + } + } + } + } } - } - //单个装配任务 或 一个包分多个篮筐装时多个装配任务 - for (PackingTask packingTask : packingTasks) { - if(packingTask.getUnPackAmount() >= urgentAmount){ - packingTask.setUrgentAmount(urgentAmount); - urgentAmount = 0; - break; - }else{ - packingTask.setUrgentAmount(packingTask.getUnPackAmount()); - urgentAmount -= packingTask.getUrgentAmount(); + }else{ + //单个装配任务 或 一个包分多个篮筐装时多个装配任务 + for (PackingTask packingTask : packingTasks) { + if(packingTask.getUnPackAmount() >= urgentAmount){ + packingTask.setUrgentAmount(urgentAmount); + urgentAmount = 0; + break; + }else{ + packingTask.setUrgentAmount(packingTask.getUnPackAmount()); + urgentAmount -= packingTask.getUrgentAmount(); + } + if(packingTask.getUrgentAmount() == null || packingTask.getUrgentAmount() == 0){ + packingTask.setUrgentLevel(null); + packingTask.setUrgentLevelObj(null); + } } - if(packingTask.getUrgentAmount() == null || packingTask.getUrgentAmount() == 0){ - packingTask.setUrgentLevel(null); - packingTask.setUrgentLevelObj(null); + if(urgentAmount > 0){ + throw new RuntimeException(tousseName + "已装配,不能修改加急数量!"); } } - - if(urgentAmount > 0){ - throw new RuntimeException(tousseName + "已装配,不能修改加急数量!"); - } } } }