Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManagerImpl.java =================================================================== diff -u -r38223 -r38230 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManagerImpl.java (.../SterilizationTransitionManagerImpl.java) (revision 38223) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManagerImpl.java (.../SterilizationTransitionManagerImpl.java) (revision 38230) @@ -21,6 +21,7 @@ import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; @@ -109,25 +110,25 @@ public void saveOrUpdateSterilizationTransition( SterilizationTransition sterilizationTransition, Collection sterilizationTransitionItemVOs,String containerBarcode, String saveType) { save(sterilizationTransition); + //如果扫描了篮筐,则将器械包全部装载到篮筐内 + if(StringUtils.isNotBlank(containerBarcode)){ + Collection tousseInstanceBarcodes = new ArrayList(); + for (SterilizationTransitionItemVO vo : sterilizationTransitionItemVOs) { + tousseInstanceBarcodes.add(vo.getTousseInstanceBarcode()); + } + tousseInstanceManager.addTousseInstanceToBasket(containerBarcode, tousseInstanceBarcodes, null); + BarcodeDevice basketBarcodeDevice = barcodeManager.getBarcodeByBarcode(containerBarcode); + Container container = (Container)basketBarcodeDevice; + sterilizationTransition.setContainerId(container.getId()); + objectDao.saveOrUpdate(sterilizationTransition); + } //1、设置流水号 if (StringUtils.isBlank(sterilizationTransition.getSerialNumber())) { sterilizationTransition.setSerialNumber(serialNumManager.getSerialNumberStr(SerialNum.TYPE_RECYCLINGAPPLICATION)); } //2、设置灭菌交接项 setSterilizationTransitionItems(sterilizationTransition, sterilizationTransitionItemVOs, saveType); - //如果扫描了篮筐,则将器械包全部装载到篮筐内 - if(StringUtils.isNotBlank(containerBarcode)){ - Collection tousseInstanceBarcodes = new ArrayList(); - for (SterilizationTransitionItemVO vo : sterilizationTransitionItemVOs) { - tousseInstanceBarcodes.add(vo.getTousseInstanceBarcode()); - } - tousseInstanceManager.addTousseInstanceToBasket(containerBarcode, tousseInstanceBarcodes, null); - BarcodeDevice basketBarcodeDevice = barcodeManager.getBarcodeByBarcode(containerBarcode); - Container container = (Container)basketBarcodeDevice; - sterilizationTransition.setContainerId(container.getId()); - objectDao.saveOrUpdate(sterilizationTransition); - } } @@ -209,6 +210,13 @@ tousseInstanceManager.updateSterilizationTransition(deleteTousseInstanceIds, false, sterilizationTransition); if(enableSterilizationTransitionFormToProxyDisinfection && (proxyDisinfection != null || "saveAndConvert".equals(saveType))){ + if(proxyDisinfection == null){ + String departCoding = CssdUtils.getSystemSetConfigByName("sterilizationTransitionFormToProxyDisinfectionDesignatedDepart"); + String depart = getSterilizationTransitionFormToProxyDisinfectionDesignatedDepart(departCoding); + proxyDisinfection = new ProxyDisinfection(); + proxyDisinfection.setDepart(depart); + proxyDisinfection.setDepartCoding(departCoding); + } convertOrUpdateProxyDisinfection(sterilizationTransition, newItems, proxyDisinfection); } } @@ -304,18 +312,38 @@ throw new RuntimeException("找不到需要转换的代理交接单"); } int convertAmount = 0; + String departCoding = CssdUtils.getSystemSetConfigByName("sterilizationTransitionFormToProxyDisinfectionDesignatedDepart"); + String depart = getSterilizationTransitionFormToProxyDisinfectionDesignatedDepart(departCoding); for (SterilizationTransition sterilizationTransition : sterilizationTransitions) { if(SterilizationTransition.STAUTS_CONVERTED.equals(sterilizationTransition.getStatus())){ throw new SystemException("流水号“"+ sterilizationTransition.getSerialNumber() +"”已转换过代理灭菌单,不能再次转换。"); } convertAmount++; List newItems = sterilizationTransition.getSterilizationTransitionItems(objectDao); - convertOrUpdateProxyDisinfection(sterilizationTransition, newItems, null); + ProxyDisinfection proxyDisinfection = new ProxyDisinfection(); + proxyDisinfection.setDepart(depart); + proxyDisinfection.setDepartCoding(departCoding); + convertOrUpdateProxyDisinfection(sterilizationTransition, newItems, proxyDisinfection); } if(convertAmount == 0){ throw new RuntimeException("没有可以转换的代理灭菌单"); } } + /** + * 获取SterilizationTransitionFormToProxyDisinfectionDesignatedDepart配置项中的科室编码对应的未停用的科室 + * @param departCoding 科室编码 + * @return + */ + private String getSterilizationTransitionFormToProxyDisinfectionDesignatedDepart(String departCoding){ + if(StringUtils.isBlank(departCoding)){ + throw new SystemException("转换代理灭菌单失败,没有配置申请科室,请联系管理员。"); + } + String depart = objectDao.getAStringValue("select max(name) from " + OrgUnit.class.getSimpleName()+" where orgUnitCoding='"+ departCoding +"' and (status is null or status<>0) " , null); + if(StringUtils.isBlank(depart)){ + throw new SystemException("转换的申请科室不存在或已停用,请联系管理员处理。"); + } + return depart; + } @Override public void saveOrUpdateSterilizationTransition( SterilizationTransition sterilizationTransition, Collection sterilizationTransitionItemVOs,String containerBarcode) { Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java =================================================================== diff -u -r38204 -r38230 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 38204) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 38230) @@ -161,7 +161,9 @@ if(!supplyRoomConfigManager.isFirstOrSecondSupplyRoomOrgUnit(proxyDisinfection.getHandleDepartCoding())){ throw new RuntimeException("代理灭菌单处理科室必须为一级供应室或者二级供应室!"); } - if(StringUtils.equals(proxyDisinfection.getDepartCoding(), loginUserOrgUnitCode) && proxyDisinfection != null && !DatabaseUtil.isPoIdValid(proxyDisinfection.getId())){ + if(StringUtils.equals(proxyDisinfection.getDepartCoding(), loginUserOrgUnitCode) + && proxyDisinfection != null && !DatabaseUtil.isPoIdValid(proxyDisinfection.getId()) + && StringUtils.isBlank(proxyDisinfection.getReceiveStatus())){ //二级供应室在装配记录页面录代理灭菌单,物品都是二级供应室自己装配的,申请科室是二级供应室,处理科室默认是一级供应室,单状态为“待接收” proxyDisinfection.setReceiveStatus(ProxyDisinfection.RECEIVESTATUS_AWAITRECEIVE); proxyDisinfection.setIsConvertPackingRecord(Constants.STR_YES); @@ -1911,25 +1913,15 @@ if(sterilizationTransition == null || !DatabaseUtil.isPoIdValid(sterilizationTransition.getId())){ return; } - if(proxyDisinfection == null){ - String departCoding = CssdUtils.getSystemSetConfigByName("sterilizationTransitionFormToProxyDisinfectionDesignatedDepart"); - if(StringUtils.isBlank(departCoding)){ - throw new SystemException("转换代理灭菌单失败,没有配置申请科室,请联系管理员。"); - } - String depart = objectDao.getAStringValue("select max(name) from " + OrgUnit.class.getSimpleName()+" where orgUnitCoding='"+ departCoding +"' " , null); - if(StringUtils.isBlank(depart)){ - throw new SystemException("找不到sterilizationTransitionFormToProxyDisinfectionDesignatedDepart配置中"+departCoding+"对应的科室"); - } - proxyDisinfection = new ProxyDisinfection(); + if(!DatabaseUtil.isPoIdValid(proxyDisinfection.getId())){ proxyDisinfection.setApplicant(sterilizationTransition.getTakeover()); proxyDisinfection.setApplicantCode(sterilizationTransition.getTakeoverCode()); proxyDisinfection.setApplicationTime(new Date()); proxyDisinfection.setCanResendout(Constants.STR_NO); - proxyDisinfection.setDepart(depart); - proxyDisinfection.setDepartCoding(departCoding); proxyDisinfection.setRemark("由灭菌交接单"+ sterilizationTransition.getSerialNumber() +"转换为代理灭菌单"); proxyDisinfection.setSterilizationTransitionId(sterilizationTransition.getId()); sterilizationTransition.setStatus(SterilizationTransition.STAUTS_CONVERTED); + proxyDisinfection.setReceiveStatus(ProxyDisinfection.RECEIVESTATUS_RECEIVED); objectDao.saveOrUpdate(sterilizationTransition); }else{ proxyDisinfection.setApplicant(sterilizationTransition.getTakeover());