Java遞歸調用實例
private int num=0;
private String parentCode = null;
private String returnCode = null;
/**
* 查詢頂級外場,如果當前部門的上級部門一直是外場,那就返回最頂層的orgcode,如果一直不是外場,就返回最初的orgcode,
* 如果中間有一個是外場,並且它的父級部門不是外場,就返回是外場的部門code。。然後根據returnCode查找這個部門下的所有部門
* sql中主要使用where--contact--with來遞歸查找
* @author 272343 吳麗麗
* @param
* @date 2017-6-12
* @return
*/
@Override
public String queryCenterOrSales(
String orgcode) {
// TODO Auto-generated method stub
if (num == 0){
DivisionDepartmentEntity parentEntity = queryParent(orgcode);
parentCode = parentEntity.getParentOrgCode();
//System.out.println("初始值,parentCode" + parentCode);
//設定初始returnCode
returnCode = orgcode;
//System.out.println("初始值,orgcode" + orgcode);
}
//最多向上查詢五次
if(num<5){
//查看當前部門的上層部門信息
DivisionDepartmentEntity parent=queryParent(parentCode);
num=num+1;
System.out.println("查詢第n次" + num);
//如果上層部門是外場,TransferCenter是t_bas_org表中是否為外場的字段
if("Y".equals(parent.getTransferCenter())){
//獲得parentCode值,用於下一輪查詢的參數值
parentCode=parent.getParentOrgCode();
//System.out.println("是外場,parentCode" + parentCode);
//給returunCode重新賦值
returnCode=parent.getCode();
//System.out.println("是外場,returnCode" + returnCode);
}else{
//如果不是外場,要判斷是否是第一次查詢,如果不是第一次,就返回returnCode,結束程序
if(!returnCode.equals(orgcode)&&num!=1){
//System.out.println("不是外場,returnCode" + returnCode);
return returnCode;
}
}
//函數遞歸調用,調用函數本身
queryCenterOrSales(parentCode);
}
//如果一直是外場,在最頂層,返回最終被賦值的外場值
return returnCode;
}
Java遞歸調用實例