Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r17369 -r17409 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17369) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17409) @@ -820,9 +820,11 @@ saveOrUpdate(record); //日志记录 addLogInfo(params,record.getId()); + + boolean isChangeApplyDepart = isChangeApplyDepartment(record); //更新申请单 updateInvoicePlan(record, tousseItemJson, deleteTousseItems, idToTDMap, - errors, damages, basketItemJson, urgentTousseItems,isForeignTousseApplication); + errors, damages, basketItemJson, urgentTousseItems,isForeignTousseApplication,isChangeApplyDepart); //修改已清洗或清洗中的篮筐,清洗工作量需要重新计算 Map toReSetWorkloadMap = new HashMap(); @@ -833,7 +835,7 @@ //设置回收误差、器械报损 setErrorAndDamage(record,errors,damages,confirmation); //设置装配任务 - setPackingTask(record,tousseItemJson,idToTDMap,confirmation,urgentTousseItems,isForeignTousseApplication,containerMap); + setPackingTask(record,tousseItemJson,idToTDMap,confirmation,urgentTousseItems,isForeignTousseApplication,containerMap,isChangeApplyDepart); //更新借物单状态 updateBorrowApplication(record,tousseItemJson); // 更新科室二级库存 @@ -1020,9 +1022,8 @@ * @param containerBarcodeMap */ private void setPackingTask(RecyclingRecord recyclingRecord, - List itemJsonList, - Map idToTDMap, boolean confirmation, - JSONArray urgentTousseItems,boolean isForeignTousseApplication,Map containerBarcodeMap) { + List itemJsonList,Map idToTDMap, boolean confirmation,JSONArray urgentTousseItems, + boolean isForeignTousseApplication,Map containerBarcodeMap,boolean isChangeApplyDepart) { if(isForeignTousseApplication){ InvoicePlan invoicePlan = recyclingRecord.getRecyclingApplication(); @@ -1182,7 +1183,36 @@ if(urgentTousseItems != null){ setPackingTaskUrgentAmount(recyclingRecord, urgentTousseItems,idToTDMap); } + + if(isChangeApplyDepart){ + String sql = String + .format("update %s set department = '%s',departCoding = '%s' where sourceId = %s and taskType = %s", + PackingTask.class.getSimpleName(),recyclingRecord.getDepart(),recyclingRecord.getDepartCode(), + recyclingRecord.getId(),PackingTask.TASK_RECYCLINGRECORD); + objectDao.executeUpdate(sql); + } } + + /** + * 是否修改了科室 + * @param record + * @return + */ + private boolean isChangeApplyDepartment(RecyclingRecord record){ + //回收申请单修改科室名称 + boolean isChange = false; + InvoicePlan application = record.getRecyclingApplication(); + if (application != null) { + if(!StringUtils.equals(application.getDepartCoding(), record.getDepartCode())){ + if(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION.equals(application.getType())){ + isChange = true; + } else { + throw new RuntimeException("该回收单单类型不是回收申请单,不能修改科室!"); + } + } + } + return isChange; + } private void setIdCardBarcodeForPackingTask(Map idCardTaskMap) { boolean autoSetIDCardBarcodeForPacking = CssdUtils.getSystemSetConfigByNameBool("autoSetIDCardBarcodeForPacking"); @@ -1437,7 +1467,7 @@ List itemJsonList, JSONArray deleteTousseItems, Map idToTDMap, JSONArray errors, JSONArray damages, JSONArray basketItemJson, - JSONArray urgentTousseItems,boolean isForeignTousseApplication) { + JSONArray urgentTousseItems,boolean isForeignTousseApplication,boolean isChangeApplyDepart) { InvoicePlan application = record.getRecyclingApplication(); String invoiceOrigin = supplyRoomConfigManager.getInvoiceOrigin(); @@ -1446,9 +1476,7 @@ List applicationItemList = application .getApplicationItems(); //回收申请单修改科室名称 - if (InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION.equals(application - .getType()) && !application.getDepartCoding().equals( - record.getDepartCode())) { + if (isChangeApplyDepart) { application.setDepartCoding(record.getDepartCode()); application.setDepart(record.getDepart()); application.setSettleAccountsDepart(record.getDepart());