Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r35212 -r35247 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 35212) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 35247) @@ -1239,12 +1239,20 @@ } sql = getWhereSqlForAssetsBelong(useAssetsBelong, sql); - - // 防止把同名但是供应商不同的外来器械包定义被过滤掉 - sql += " group by po.name, po.supplierName "; - - sql += " order by po.name asc," + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc "; - + if(StringUtils.isNotBlank(searchString)){ + sql += " group by po.name, po.supplierName,po.spelling "; + sql += " order by case when po.name like '%" + + searchString + +"%' then 3 when po.spelling like '%" + + searchString + +"%' then 2 else 1 end desc," + + sqlFunctionsAdapter.strlen("po.name") + +",po.name "; + }else{ + // 防止把同名但是供应商不同的外来器械包定义被过滤掉 + sql += " group by po.name, po.supplierName "; + sql += " order by po.name asc," + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc "; + } // 只查询最近一次申请单生成的外来器械包定义或者外来器械包定义祖先包 sql = " select max(po.id) from TousseDefinition po " + sql; @@ -1521,13 +1529,13 @@ sql += " and (po.isDisable = '" + Constants.STR_NO + "' or po.isDisable is null) "; } sql = getWhereSqlForAssetsBelong(useAssetsBelong, sql); - // 外来器械申请单器械包名称需要按照名称排序(广东省人民医院GDSRMYY-496) - if (StringUtils.equals(TousseDefinition.PACKAGE_TYPE_FOREIGN, tousseType)) { - sql += " order by po.name asc," + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc,id desc"; - } else { - sql += " order by " + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc,id desc"; - } - + sql += " order by case when po.name like '%" + + searchString + +"%' then 3 when po.spelling like '%" + + searchString + +"%' then 2 else 1 end desc," + + sqlFunctionsAdapter.strlen("po.name") + +",po.name,id desc "; @SuppressWarnings("unchecked") List tousseDefinitions = objectDao.findBySql( TousseDefinition.class.getSimpleName(), sql);