Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/TousseSimpleVO.java =================================================================== diff -u -r33219 -r36652 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/TousseSimpleVO.java (.../TousseSimpleVO.java) (revision 33219) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/TousseSimpleVO.java (.../TousseSimpleVO.java) (revision 36652) @@ -171,7 +171,14 @@ * 3、"已接收"的代理灭菌单物品,才能录入灭菌记录。 */ private String hasReceived; - + /** + * 包定义拼音 + */ + private String spelling; + /** + * 包定义五笔码 + */ + private String wbCode; public int getAmount() { return amount; } @@ -516,4 +523,20 @@ this.hasReceived = hasReceived; } + public String getSpelling() { + return spelling; + } + + public void setSpelling(String spelling) { + this.spelling = spelling; + } + + public String getWbCode() { + return wbCode; + } + + public void setWbCode(String wbCode) { + this.wbCode = wbCode; + } + } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r36602 -r36652 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 36602) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 36652) @@ -129,11 +129,12 @@ * @param extraOrder 排序语句 * @param sterilingMode 灭菌方式SZYK-5(不追溯的包取包定义的默认灭菌程序关联的灭菌方式;追溯的包直接取包实例上的灭菌方式) * @param enableUrgentFunction 是否有加急功能 + * @param openGoodsSearch 是否开启物品过滤 开启时需要查询拼音和五笔 * @return Map<篮筐id,List> */ public Map> getTousseInstanceVOsInReviewedBaskets( List reviewedBaskets, String taskGroup, String extraOrder, String sterilingMode - , String sterilizerName, String sterileFrequency, boolean enableUrgentFunction); + , String sterilizerName, String sterileFrequency, boolean enableUrgentFunction, boolean openGoodsSearch); /** * 获取灭菌筐中已审核的器械包Vo对象 * @param SterileBasketBarcode 灭菌筐的条码 @@ -176,10 +177,11 @@ * @param enableUrgentFunction 是否开启加急 * @param extraOrder 排序语句 * @param sterilingMode 灭菌方式SZYK-5(不追溯的包取包定义的默认灭菌程序关联的灭菌方式;追溯的包直接取包实例上的灭菌方式) + * @param openGoodsSearch 开启物品查询 * @return */ public List getTodayReviewedTousseInsWithOutBasketBySterilization(String orgUnitCode, boolean enableUrgentFunction, String extraOrder, String sterilingMode - ,String sterilizerName, String sterileFrequency); + ,String sterilizerName, String sterileFrequency, boolean openGoodsSearch); /** * 根据时间段及科室编码查询所有已审核并且还未入审核篮筐的器械包实例(从结果集的下标为start开始取limit个). Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r36644 -r36652 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 36644) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 36652) @@ -1792,7 +1792,7 @@ @Override public Map> getTousseInstanceVOsInReviewedBaskets( List reviewedBaskets, String taskGroup, String extraOrder, String sterilingMode - , String sterilizerName, String sterileFrequency, boolean enableUrgentFunction) { + , String sterilizerName, String sterileFrequency, boolean enableUrgentFunction, boolean openGoodsSearch) { Map> map = new HashMap>(); if(CollectionUtils.isEmpty(reviewedBaskets)){ return map; @@ -1836,12 +1836,19 @@ //关联加急对象的sql语句 String sqlJoin_UrgentLevel = String.format(" left join %s ul on t.urgentLevel_id = ul.id ", UrgentLevel.class.getSimpleName()); String sqlSelect_UrgentLevel = String.format(" ,ul.colorCode ulColorCode ,ul.grade ulGrade, ul.name ulName , ul.id ulId "); + String sqlSelect_SpellingSql = null; + if(openGoodsSearch){ + sqlSelect_SpellingSql = ",td.spelling,td.wbCode "; + }else{ + sqlSelect_SpellingSql = ""; + } //关联来源科室的sql语句 String departJoinSql = String.format(" left join %s ou on ou.orgUnitCoding = t.departCoding ", OrgUnit.class.getSimpleName()); //1、普通器械包、消毒物品、敷料包 String sql = "select * from (select distinct t.reviewBasket_id,t.id id, ou.name depart, t.tousseName name, td.includeImplant, b.barcode, t.sterilingType, (case when tdAncestor.isTraceable = '"+ Constants.STR_NO +"' then s.sterilizationMode else t.sterilingMode end) sterilingMode," + " t.reviewTime,t.isUrgentTousse,tdAncestor.isTraceable, tdAncestor.id tdAncestorId " + sqlSelect_UrgentLevel + + sqlSelect_SpellingSql + " from tousseinstance t" + sqlJoin_UrgentLevel + departJoinSql + " , barcodedevice b , cssdHandleTousses tt , TousseDefinition td , TousseDefinition tdAncestor left join Sterilisation s on s.sterilisation = tdAncestor.sterilingMethod " + "where t.id = b.id and tt.tousseDefinitionId=td.ancestorID and t.tousseDefinition_id=td.id and td.ancestorID=tdAncestor.id " @@ -1865,6 +1872,7 @@ sql += " union all select t.reviewBasket_id,t.id id, ou.name depart, t.tousseName name, td.includeImplant, b.barcode, t.sterilingType, t.sterilingMode," + " t.reviewTime,t.isUrgentTousse, '"+ Constants.STR_YES +"' isTraceable, null tdAncestorId " + sqlSelect_UrgentLevel + + sqlSelect_SpellingSql + " from tousseinstance t " + sqlJoin_UrgentLevel + departJoinSql + " , barcodedevice b , TousseDefinition td " + "where t.id = b.id and t.tousseDefinition_id=td.id and td.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"') and t.reviewBasket_id " @@ -1879,6 +1887,7 @@ sql += " union all select reviewBasket_id,t.id id, ou.name depart, t.tousseName name, td.includeImplant, b.barcode, t.sterilingType, t.sterilingMode," + " t.reviewTime,t.isUrgentTousse , '"+ Constants.STR_YES +"' isTraceable, null tdAncestorId " + sqlSelect_UrgentLevel + + sqlSelect_SpellingSql + " from tousseinstance t" + sqlJoin_UrgentLevel + departJoinSql + " , barcodedevice b , TousseDefinition td " + "where t.id = b.id and t.tousseDefinition_id=td.id and td.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"') and t.reviewBasket_id " @@ -1892,6 +1901,7 @@ sql += " union all select t.reviewBasket_id,t.id id, ou.name depart,t.tousseName name, td.includeImplant, b.barcode, t.sterilingType, (case when tdAncestor.isTraceable = '"+ Constants.STR_NO +"' then s.sterilizationMode else t.sterilingMode end) sterilingMode," + " t.reviewTime,t.isUrgentTousse,tdAncestor.isTraceable, tdAncestor.id tdAncestorId " + sqlSelect_UrgentLevel + + sqlSelect_SpellingSql + "from tousseinstance t"+ sqlJoin_UrgentLevel + departJoinSql + " left join " + InvoicePlan.class.getSimpleName() + " pd on pd.id=t.proxyDisinfection_id " @@ -1907,6 +1917,7 @@ sql += " union all select t.reviewBasket_id,t.id id, ou.name depart, t.tousseName name, td.includeImplant, b.barcode, t.sterilingType, t.sterilingMode," + "t.reviewTime,t.isUrgentTousse , '"+ Constants.STR_YES +"' isTraceable, null tdAncestorId " + sqlSelect_UrgentLevel + + sqlSelect_SpellingSql + "from tousseinstance t " + sqlJoin_UrgentLevel + departJoinSql + " , barcodedevice b , TousseDefinition td " + "where t.id = b.id and t.tousseDefinition_id=td.id and td.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"') and t.reviewBasket_id " @@ -1919,6 +1930,7 @@ sql += " union all select t.reviewBasket_id,t.id id, ou.name depart, t.tousseName name, td.includeImplant, b.barcode, t.sterilingType, t.sterilingMode," + "t.reviewTime,t.isUrgentTousse , '"+ Constants.STR_YES +"' isTraceable, null tdAncestorId " + sqlSelect_UrgentLevel + + sqlSelect_SpellingSql + " from tousseinstance t " + sqlJoin_UrgentLevel + departJoinSql + " , barcodedevice b , TousseDefinition td " + "where t.id = b.id and t.tousseDefinition_id=td.id and td.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"') and t.reviewBasket_id " @@ -1931,6 +1943,7 @@ sql += " union all select t.reviewBasket_id,t.id id, ou.name depart,t.tousseName name, td.includeImplant, b.barcode, t.sterilingType, (case when tdAncestor.isTraceable = '"+ Constants.STR_NO +"' then s.sterilizationMode else t.sterilingMode end) sterilingMode," + "t.reviewTime,t.isUrgentTousse,tdAncestor.isTraceable, tdAncestor.id tdAncestorId " + sqlSelect_UrgentLevel + + sqlSelect_SpellingSql + "from tousseinstance t"+ sqlJoin_UrgentLevel + departJoinSql + " left join " + InvoicePlan.class.getSimpleName() + " pd on pd.id=t.proxyDisinfection_id " @@ -1943,7 +1956,7 @@ + sterilizerNameAndSterileFrequencySql; } sql += ")tempTable " + orderBySql; - buildTousseSimpleVOs(map, sql,enableUrgentFunction); + buildTousseSimpleVOs(map, sql,enableUrgentFunction, openGoodsSearch); return map; } /** @@ -2061,8 +2074,11 @@ * 构建map<篮筐id,List> * @param map * @param sql + * @param enableUrgentFunction 开启了加急 + * @param openGoodsSearch 是否开启物品过滤 */ - private void buildTousseSimpleVOs(Map> map, String sql, boolean enableUrgentFunction) { + private void buildTousseSimpleVOs(Map> map, String sql, boolean enableUrgentFunction + , boolean openGoodsSearch) { ResultSet rs = objectDao.executeSql(sql); Set fixedTousseDefinitionIds = new HashSet(); try { @@ -2109,6 +2125,11 @@ ItemDefinitionVO itemDefinitionVO = new ItemDefinitionVO(); itemDefinitionVO.setIncludeImplant(rs.getInt("includeImplant")); vo.setItemDefinition(itemDefinitionVO); + + if(openGoodsSearch){ + vo.setSpelling(rs.getString("spelling")); + vo.setWbCode(rs.getString("wbCode")); + } vos.add(vo); } @@ -6529,7 +6550,8 @@ String extraOrder = getExtraOrderSqlBySystemSetConfig(waitSterilizedTousseInstanceDefaultSortOrder); // 遍历加载放入灭菌篮筐的器械包 boolean enableUrgentFunction = CssdUtils.getSystemSetConfigByNameBool("enableUrgentFunction",false); - Map> tousseSimpleVOMap = getTousseInstanceVOsInReviewedBaskets(reviewedBaskets, taskGroup, extraOrder, sterilingMode, sterilizerNameTemp, sterileFrequency, enableUrgentFunction); + boolean openGoodsSearch = getOpenGoodsSearchOfExtraActionItemsOfItemsToBeSterilized(); + Map> tousseSimpleVOMap = getTousseInstanceVOsInReviewedBaskets(reviewedBaskets, taskGroup, extraOrder, sterilingMode, sterilizerNameTemp, sterileFrequency, enableUrgentFunction, openGoodsSearch); for (ReviewedBasket basket : reviewedBaskets) { List vos = tousseSimpleVOMap.get(basket.getId()); if(CollectionUtils.isEmpty(vos)){ @@ -6599,6 +6621,10 @@ obj.put("leaf", true); obj.put("iconCls", "task"); obj.put("objName",objName ); + if(openGoodsSearch){ + obj.put("wbCode", vo.getWbCode()); + obj.put("spelling",vo.getSpelling()); + } obj.put("urgentLevel", urgentLevelInfo);//加急信息 obj.put("urgentGrade", urgentGrade);//加急等级 obj.put("isUrgent", isUrgentTousse);//是否加急 @@ -6620,6 +6646,10 @@ tousseInBasket.put("objAmount", 1); tousseInBasket.put("reviewTime", vo.getReviewTime()); tousseInBasket.put("type", "TOUSSE_IN"); + if(openGoodsSearch){ + tousseInBasket.put("wbCode", vo.getWbCode()); + tousseInBasket.put("spelling",vo.getSpelling()); + } tousseInBasket.put("uiProvider", "col"); tousseInBasket.put("leaf", true); tousseInBasket.put("iconCls", "task"); @@ -6683,7 +6713,7 @@ //2、 当天审核的,未入筐的器械包 //List toussesOutsideBasketOfToday = getTodayReviewedTousseInstanceWithOutBasket(orgUnitCoding); //当天审核的,未入筐的器械包(新) :包括固定条码汇总 - List toussesOutsideBasketOfToday = getTodayReviewedTousseInsWithOutBasketBySterilization(orgUnitCoding, enableUrgentFunction, extraOrder, sterilingMode, sterilizerNameTemp, sterileFrequency); + List toussesOutsideBasketOfToday = getTodayReviewedTousseInsWithOutBasketBySterilization(orgUnitCoding, enableUrgentFunction, extraOrder, sterilingMode, sterilizerNameTemp, sterileFrequency, openGoodsSearch); for (TousseSimpleVO tousseOutsideBasket : toussesOutsideBasketOfToday) { //器械包的灭菌程序,属于此灭菌分组或者此灭菌炉(或者器械包的灭菌程序为“无”)才会显示(没选灭菌炉就按灭菌分组过滤) if (sterilingTypeMap != null && !Constants.HAS_TYPE_NO.equals(tousseOutsideBasket.getSterilingType())) { @@ -6712,6 +6742,10 @@ obj.put("depart", tousseOutsideBasket.getDepart()); obj.put("objName", tousseOutsideBasket.getTousseName()); obj.put("objBarcode", tousseOutsideBasket.getBarcode()); + if(openGoodsSearch){ + obj.put("wbCode", tousseOutsideBasket.getWbCode()); + obj.put("spelling",tousseOutsideBasket.getSpelling()); + } obj.put("objAmount", amount); obj.put("todayAmount", amount); obj.put("sterilingMode", tousseOutsideBasket.getSterilingMode()); @@ -6969,6 +7003,25 @@ } return arr; } + /** + * 获取extraActionItemsOfItemsToBeSterilized配置中是否显示物品过滤 + * @return + */ + private boolean getOpenGoodsSearchOfExtraActionItemsOfItemsToBeSterilized(){ + String extraActionItemsOfItemsToBeSterilizedStr = CssdUtils.getSystemSetConfigByName("extraActionItemsOfItemsToBeSterilized"); + if(StringUtils.isNotBlank(extraActionItemsOfItemsToBeSterilizedStr)){ + JSONArray extraActionItemsOfItemsToBeSterilizedArr = JSONArray.fromObject(extraActionItemsOfItemsToBeSterilizedStr); + if(CollectionUtils.isNotEmpty(extraActionItemsOfItemsToBeSterilizedArr)){ + for (int i = 0; i < extraActionItemsOfItemsToBeSterilizedArr.size(); i++) { + String item = extraActionItemsOfItemsToBeSterilizedArr.getString(i); + if("goodsSearch".equals(item)){ + return true; + } + } + } + } + return false; + } @Override public String getTousseBarcodeStrByFixedBarcode(String fixedBarcode, String barcodes, String sqlStatus, String paramsName, int type) { @@ -7509,10 +7562,11 @@ @Override public List getTodayReviewedTousseInsWithOutBasketBySterilization( String orgUnitCode, boolean enableUrgentFunction ,String extraOrder, String sterilingMode - ,String sterilizerName, String sterileFrequency) { - ResultSet rs = objectDao.executeSql(getToDayReviewedTousseInsSql(orgUnitCode, enableUrgentFunction, extraOrder, sterilingMode, sterilizerName, sterileFrequency)); + ,String sterilizerName, String sterileFrequency, boolean openGoodsSearch) { + ResultSet rs = null; List tousseList = new ArrayList(); try { + rs = objectDao.executeSql(getToDayReviewedTousseInsSql(orgUnitCode, enableUrgentFunction, extraOrder, sterilingMode, sterilizerName, sterileFrequency,openGoodsSearch)); if(enableUrgentFunction){ while(rs.next()){ TousseSimpleVO ti = new TousseSimpleVO(); @@ -7538,6 +7592,10 @@ ti.setUrgentLevelInfo(urgentLevelVo); } ti.setTaskGroup(rs.getString("taskGroup")); + if(openGoodsSearch){ + ti.setSpelling(rs.getString("spelling")); + ti.setWbCode(rs.getString("wbCode")); + } tousseList.add(ti); } }else{ @@ -7555,6 +7613,10 @@ ti.setSterilingType(rs.getString("sterilingType")); ti.setIsUrgentTousse(rs.getString("IsUrgentTousse")); ti.setTaskGroup(rs.getString("taskGroup")); + if(openGoodsSearch){ + ti.setSpelling(rs.getString("spelling")); + ti.setWbCode(rs.getString("wbCode")); + } tousseList.add(ti); } } @@ -7567,7 +7629,7 @@ // 不追溯的包,包括非今天审核的 ResultSet rs1 = null; try { - rs1 = objectDao.executeSql(getUnTraceableReviewedTousseInsSql(orgUnitCode, extraOrder, sterilingMode)); + rs1 = objectDao.executeSql(getUnTraceableReviewedTousseInsSql(orgUnitCode, extraOrder, sterilingMode, openGoodsSearch)); while(rs1.next()){ TousseSimpleVO ti = new TousseSimpleVO(); ItemDefinitionVO td = new ItemDefinitionVO(); @@ -7587,6 +7649,10 @@ ti.setSterilingType(rs1.getString("sterilingType")); ti.setIsUrgentTousse(rs1.getString("IsUrgentTousse")); ti.setIsTraceable(Constants.STR_NO); + if(openGoodsSearch){ + ti.setSpelling(rs.getString("spelling")); + ti.setWbCode(rs.getString("wbCode")); + } tousseList.add(ti); } } catch (Exception e) { @@ -7606,7 +7672,7 @@ * @return */ private String getToDayReviewedTousseInsSql(String orgUnitCode, boolean enableUrgentFunction, String extraOrder, String sterilingMode - ,String sterilizerName, String sterileFrequency){ + ,String sterilizerName, String sterileFrequency, boolean openGoodsSearch){ //待灭菌物品列表中显示按照科室供应室设置里面的每天开始时间作为时间节点(ZYYFS-118) Date out_beginTime = new Date(); Date out_endTime = new Date(); @@ -7655,16 +7721,25 @@ sqlSelect_UrgentLevel = String.format(" ,ul.colorCode ulColorCode ,ul.grade ulGrade, ul.name ulName , ul.id ulId "); sqlJoin_UrgentLevel = String.format(" left join %s ul on ti.urgentLevel_id = ul.id ", UrgentLevel.class.getSimpleName()); } + String sqlSelect_SpellingSql = null; + if(openGoodsSearch){ + sqlSelect_SpellingSql = ",td.spelling,td.wbCode "; + }else{ + sqlSelect_SpellingSql = ""; + } //关联来源科室的join语句 String departJoinSql = String.format(" left join %s ou on ou.orgUnitCoding = ti.departCoding ", OrgUnit.class.getSimpleName()); String sql = "select * from ((select tdancestor.id,ou.name depart,ti.tousseName,ti.sterilingType,ti.sterilingMode,ti.taskGroup," + "IsUrgentTousse,b.barcode,ti.reviewTime,1 amount, td.includeImplant " + sqlSelect_UrgentLevel + + sqlSelect_SpellingSql + " from "+ TousseInstance.class.getSimpleName() +" ti " + sqlJoin_UrgentLevel + departJoinSql + " join "+ BarcodeDevice.class.getSimpleName() +" b on b.id=ti.id " + "join "+ TousseDefinition.class.getSimpleName() +" td on ti.tousseDefinition_id=td.id join "+ TousseDefinition.class.getSimpleName() +" tdancestor on " - + "td.ancestorID=tdancestor.id left join "+ InvoicePlan.class.getSimpleName() +" pd on pd.id=ti.proxyDisinfection_id where tdancestor.isTraceable='"+ Constants.STR_YES +"' and ti.status='"+ TousseInstance.STATUS_REVIEWED +"' and ti.comboTousseInstanceId is null " + + "td.ancestorID=tdancestor.id left join "+ InvoicePlan.class.getSimpleName() +" pd on pd.id=ti.proxyDisinfection_id where tdancestor.isTraceable='"+ Constants.STR_YES + +"' and ti.status='"+ TousseInstance.STATUS_REVIEWED + +"' and ti.comboTousseInstanceId is null " + "and ti.reviewBasket_id is null "+dateSql+" " + sterilingModeSql + sterilizerNameAndSterileFrequencySql @@ -7698,7 +7773,7 @@ * @param extraOrder * @return */ - private String getUnTraceableReviewedTousseInsSql(String orgUnitCode, String extraOrder, String sterilingMode){ + private String getUnTraceableReviewedTousseInsSql(String orgUnitCode, String extraOrder, String sterilingMode, boolean openGoodsSearch){ String firstBarcodeSql = null; if(dbConnection.isSqlServer()){ firstBarcodeSql = "(select top 1 barcode from TousseInstance ti1 join barcodeDevice b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=tdancestor.id) "; @@ -7712,9 +7787,16 @@ }else if(StringUtils.isNotBlank(sterilingMode) && !StringUtils.equals(sterilingMode, "全部")){ sterilingModeSql = " and s.sterilizationMode = '" + sterilingMode + "' "; } + String sqlSelect_SpellingSql = null; + if(openGoodsSearch){ + sqlSelect_SpellingSql = ",td.spelling,td.wbCode "; + }else{ + sqlSelect_SpellingSql = ""; + } String sql = "select tdancestor.id ,null depart,tdancestor.name tousseName,null sterilingType,s.sterilizationMode sterilingMode,null IsUrgentTousse," + firstBarcodeSql + "barcode,null reviewTime,count(0) amount, max(tdancestor.includeImplant) includeImplant, tdancestor.scanAmount, tdancestor.sterilingMethod, tdancestor.tousseType " + + sqlSelect_SpellingSql + " from "+ TousseInstance.class.getSimpleName() +" ti " + " join "+ BarcodeDevice.class.getSimpleName() +" b on b.id=ti.id " + " join "+ TousseDefinition.class.getSimpleName() +" td on ti.tousseDefinition_id=td.id join "+ TousseDefinition.class.getSimpleName() +" tdancestor " @@ -7723,7 +7805,8 @@ + " where 1=1 and tdancestor.isTraceable='"+ Constants.STR_NO +"' and ti.status='"+ TousseInstance.STATUS_REVIEWED +"' and ti.comboTousseInstanceId is null " + " and ti.reviewBasket_id is null and (pd.id is null and ti.orgunitcoding='"+orgUnitCode+"' or pd.id is not null and pd.handleDepartCoding='"+orgUnitCode+"') " + sterilingModeSql - + " group by tdancestor.id,tdancestor.name,s.sterilizationMode, tdancestor.scanAmount, tdancestor.sterilingMethod, tdancestor.tousseType "; + + " group by tdancestor.id,tdancestor.name,s.sterilizationMode, tdancestor.scanAmount, tdancestor.sterilingMethod, tdancestor.tousseType " + + sqlSelect_SpellingSql; sql += " order by tdancestor.id "; return sql; }