1. 程式人生 > >Java遞歸調用實例

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遞歸調用實例