Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r16422 -r16454 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 16422) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 16454) @@ -44,6 +44,7 @@ import com.forgon.directory.model.OrgUnit; import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; +import com.forgon.disinfectsystem.basedata.becleanitem.service.BeCleanItemManager; import com.forgon.disinfectsystem.basedatamanager.container.service.ReviewedBasketManager; import com.forgon.disinfectsystem.basedatamanager.goodsstock.service.GoodsStockManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; @@ -64,17 +65,20 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; +import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecord; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecordDiposableGoodsItem; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecordItem; +import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryRecord; import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningItemVO; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.inventorymanagement.service.WriteBackInventoryHelper; import com.forgon.disinfectsystem.stockmanage.cssdstock.service.TousseStockManager; import com.forgon.disinfectsystem.tousse.cssdhandletousses.service.CssdHandleTousseManager; @@ -148,6 +152,12 @@ private WriteBackInventoryHelper writeBackInventoryHelper; + private BeCleanItemManager beCleanItemManager; + + public void setBeCleanItemManager(BeCleanItemManager beCleanItemManager) { + this.beCleanItemManager = beCleanItemManager; + } + public void setCssdHandleTousseManager( CssdHandleTousseManager cssdHandleTousseManager) { this.cssdHandleTousseManager = cssdHandleTousseManager; @@ -2332,4 +2342,67 @@ } return positionMsg; } + /** + * 获取器械包实例的最后一条清洗记录 + */ + public WashAndDisinfectRecord getLastWashRecord(TousseInstance tousseInstance){ + if(tousseInstance == null){ + return null; + } + WashAndDisinfectRecord record = null; + if(StringUtils.isNotBlank(tousseInstance.getClassifyBasketIds())){ + String [] idArray = tousseInstance.getClassifyBasketIds().split(";"); + for (String cbId : idArray) { + ClassifyBasket basket = beCleanItemManager.getClassifyBasketById(cbId); + if(basket != null){ + List washRecords = basket.getWashAndDisinfectRecords(); + for(WashAndDisinfectRecord wr : washRecords){ + if(record != null){ + Date cur = record.getStartDate(); + Date date = wr.getStartDate(); + if(date != null){ + if(cur == null){ + record = wr; + }else if(cur.before(date)){ + record = wr; + } + } + }else{ + record = wr; + } + } + } + } + } + return record; + } + /** + * 获取回收记录 + */ + public RecyclingRecord getRecylingRecord(String recyclingRecordId){ + if(StringUtils.isNumeric(recyclingRecordId)){ + return (RecyclingRecord) objectDao.getByProperty( + RecyclingRecord.class.getSimpleName(), "id", Long.valueOf(recyclingRecordId)); + }else{ + return null; + } + } + /** + * 获取器械包篮筐条码 + */ + public String getClassifyBasketBarcodes(TousseInstance tousseInstance){ + if(tousseInstance == null){ + return null; + } + String barcodes = ""; + if(StringUtils.isNotBlank(tousseInstance.getClassifyBasketIds())){ + String [] idArray = tousseInstance.getClassifyBasketIds().split(";"); + for (String cbId : idArray) { + ClassifyBasket basket = beCleanItemManager.getClassifyBasketById(cbId); + barcodes += basket.getContainerBarcode(); + barcodes += ";"; + } + } + return barcodes; + } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r16438 -r16454 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 16438) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 16454) @@ -2932,7 +2932,6 @@ idToWashRecordMap.put(washAndDisinfectRecord.getId(), washAndDisinfectRecord); } } - } return idToWashRecordMap; } @@ -4912,26 +4911,93 @@ } List tousseInstanceList = entry.getValue(); - + Map> wtMap = new HashMap>(); + Map tidPackIdMap = new HashMap(); + // 按清洗时间组合器械包,不同清洗时间的器械包,创建不同的装配任务 + for(TousseInstance toussei : tousseInstanceList){ + WashAndDisinfectRecord wRecord = tousseInstanceManager.getLastWashRecord(toussei); + if( wRecord != null ){ + String washStartTime = wRecord.getStartDateStr(); + if(StringUtils.isNotBlank(washStartTime)){ + List tis = new ArrayList(); + String key = washStartTime +"_" + wRecord.getId() + "_" + toussei.getClassifyBasket_id(); + if(wtMap.containsKey(key)){ + tis = wtMap.get(key); + tis.add(toussei); + wtMap.put(key, tis); + }else{ + tis.add(toussei); + wtMap.put(key, tis); + } + } + }else{ + List tis = new ArrayList(); + String key = "notWashInstance"; + if(wtMap.containsKey(key)){ + tis = wtMap.get(key); + tis.add(toussei); + wtMap.put(key, tis); + }else{ + tis.add(toussei); + wtMap.put(key, tis); + } + } + } boolean isThereIDCard = tousseDefinitionManager .isThereIDCard(tousseDefinition); - int amount = tousseInstanceList.size(); - PackingTask packingTask = new PackingTask(); - packingTask.setStartTime(new Date()); - packingTask.setStatus(PackingTask.STATUS_AWAIT_PACKING); - packingTask.setAmount(amount); - packingTask.setUnPackAmount(amount); - packingTask.setUncofirmedAmount(0); - packingTask.setTousseDefinition(tousseDefinition); - /*packingTask.setOrgUnitCoding(tousseDefinition.getHandlerDepartCode());*/ - //装配任务的处理科室为当前用户所在科室 - packingTask.setOrgUnitCoding(AcegiHelper.getCurrentOrgUnitCode()); - packingTask.setSourceId(null); - packingTask.setTaskType(PackingTask.TASK_QUALITY_MONITOR); - packingTask.setDepartment(AcegiHelper.getCurrentOrgUnitName()); - packingTask.setDepartCoding(AcegiHelper.getCurrentOrgUnitCode()); - saveOrUpdate(packingTask); - + for(Entry> wentry : wtMap.entrySet()){ + String key = wentry.getKey(); + String washTime = ""; + Long washRecordId = 0L; + List tis = wentry.getValue(); + String[] arr = key.split("_"); + if(arr != null && arr.length > 1){ + washTime = arr[0]; + washRecordId = Long.valueOf(arr[1]); + } + if(tis != null && tis.size() > 0){ + int amount = tis.size(); + TousseInstance tousseInstance = tis.get(0); + PackingTask packingTask = new PackingTask(); + RecyclingRecord rr = tousseInstanceManager.getRecylingRecord(tousseInstance.getRecyclingRecordId() + ""); + if(rr != null){ + packingTask.setDepartment(tousseInstance.getDepart()); + packingTask.setDepartCoding(tousseInstance.getDepartCoding()); + packingTask.setStartTime(rr.getRecyclingTime()); + packingTask.setSourceId(rr.getId()); + } + // SourceId 要么是回收单id,要么是申请单id,没有回收单时,用申请单id. + if(packingTask.getSourceId() == null){ + packingTask.setSourceId(tousseInstance.getInvoicePlanID()); + } + if(packingTask.getDepartment() == null){ + packingTask.setDepartment(tousseInstance.getDepart()); + } + if(packingTask.getDepartCoding() == null){ + packingTask.setDepartCoding(tousseInstance.getDepartCoding()); + } + String barcodes = tousseInstanceManager.getClassifyBasketBarcodes(tousseInstance); + packingTask.setBasketBarcode(barcodes); + packingTask.setStatus(PackingTask.STATUS_AWAIT_PACKING); + packingTask.setAmount(amount); + packingTask.setUnPackAmount(amount); + packingTask.setUncofirmedAmount(0); + packingTask.setTousseDefinition(tousseDefinition); + packingTask.setOrgUnitCoding(tousseInstance.getOrgUnitCoding()); + packingTask.setTaskType(PackingTask.TASK_QUALITY_MONITOR); + // 设置清洗时间 清洗记录的信息 + packingTask.setWashTime(washTime); + packingTask.setWashRecord_id(washRecordId); + packingTask.setClassifyBasket_id(tousseInstance.getClassifyBasket_id()); + packingTask.setRecyclingBasketName(tousseInstance.getWashBasket()); + saveOrUpdate(packingTask); + if(isThereIDCard){ + for(TousseInstance ti : tis){ + tidPackIdMap.put(ti.getId(), packingTask.getId()); + } + } + } + } // 保存相关的IDCardInfoForPackingTask if (isThereIDCard) { for (TousseInstance ti : tousseInstanceList) { @@ -4950,7 +5016,7 @@ ti.getBarcode())); } idCardInfoForPackingTask.setIdCardInstanceID(idCardInstanceID); - idCardInfoForPackingTask.setPackingTaskID(packingTask.getId()); + idCardInfoForPackingTask.setPackingTaskID(tidPackIdMap.get(ti.getId())); idCardInfoForPackingTask .setType(IDCardInfoForPackingTask.TYPE_RETURN_REPACKING); idCardInfoForPackingTask.validateAssociatedInfo(); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r16376 -r16454 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 16376) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 16454) @@ -15,7 +15,9 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; +import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.vo.TousseSimpleVO; import com.forgon.tools.hibernate.BasePoManager; @@ -318,5 +320,21 @@ * 通过器械包实例id和灭菌记录id获取灭菌位置信息 */ public String getSterilzerPositionMsg(String tousseInstanceId,String sterilizationID); + /** + * 获取器械包实例的最后一条清洗记录 + * @param tousseInstance + * @return + */ + public WashAndDisinfectRecord getLastWashRecord(TousseInstance tousseInstance); + /** + * 获取回收记录 + * @param recyclingRecordId + * @return + */ + public RecyclingRecord getRecylingRecord(String recyclingRecordId); + /** + * 获取器械包篮筐条码 + */ + public String getClassifyBasketBarcodes(TousseInstance tousseInstance); }