Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java =================================================================== diff -u -r41585 -r41588 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 41585) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 41588) @@ -1353,10 +1353,9 @@ List operationUseTousseItemList = null;// 手术使用器械包明细集合 if(StringUtils.isNotBlank(operation)){ - //1、查询系统是否有该手术名称定义 - OperationName operationNameObj = (OperationName)objectDao.getByProperty(OperationName.class.getSimpleName(), "operationName", operation); - //2-1、若有该手术名称定义:则获取该定义下的所有的器械包明细(常用物品+追加物品) - if(null != operationNameObj){ + //查询系统是否有该手术名称定义 + OperationName operationNameObj = getOperationNameByNameAndDepart(operation, depart); + if(operationNameObj != null){ return operationNameObj.getAllTousseItemsMergeByTousseDefinition(objectDao); } @@ -1440,6 +1439,30 @@ } /** + * 根据手术名称、科室查询手术名称对象 + * @param operation 手术名称 + * @param depart 科室 + * @return 手术名称对象 + */ + private OperationName getOperationNameByNameAndDepart(String operation, String depart) { + if(StringUtils.isBlank(operation)){ + return null; + } + //1、查询系统是否有该手术名称定义 + String hql = String.format("select po from %s po where operationName = '%s' ", + OperationName.class.getSimpleName(), operation); + if(StringUtils.isNotBlank(depart)){ + hql += String.format(" and po.operationOrg.orgUnitName = '%s'", depart); + } + List operationNameObjList = objectDao.findByHql(hql); + //2-1、若有该手术名称定义:则获取该定义下的所有的器械包明细(常用物品+追加物品) + if(CollectionUtils.isNotEmpty(operationNameObjList)){ + return operationNameObjList.get(0); + } + return null; + } + +/** * 获取联合手术名称间的分隔符,对于没有此operationJoinSeparator配置项的项目,则operationJoinSeparator的值设置为"+", * @return 分隔符 */ @@ -1460,7 +1483,7 @@ * @return */ private OperationName getOperationNameByName(String operation,String operationName, String depart){ - OperationName operationNameObject = (OperationName)objectDao.getByProperty(OperationName.class.getSimpleName(), "operationName",operationName ); + OperationName operationNameObject = getOperationNameByNameAndDepart(operationName, depart); if(null == operationNameObject){ //根据confjs配置:同步手术预约申请单时,若匹配不到手术名称定义,是否新建手术名称定义,默认为false。 if(CssdUtils.getSystemSetConfigByNameBool("syncOperation_BuildNewOperationName")){ @@ -1515,7 +1538,7 @@ List operationUseTousseItemList = null;// 手术使用器械包明细集合 if(StringUtils.isNotBlank(syncOperationName)){ //1、查询系统是否有该手术名称定义 - OperationName operationName = (OperationName)objectDao.getByProperty(OperationName.class.getSimpleName(), "operationName",syncOperationName ); + OperationName operationName = getOperationNameByNameAndDepart(syncOperationName, depart); //2-1、若有该手术名称定义:则获取该定义下的所有的器械包明细(常用物品+追加物品) if(null != operationName){ operationUseTousseItemList = operationName.getAllTousseItemsMergeByTousseDefinition(objectDao);