Flex Array多参数排名(含有并列名次)

最近有一个项目,客户不仅要求报表同时呈现:
1.员工在整个公司的排名
2.员工在其子公司的排名
3.员工在其专业组别的排名

由于是从数据库单一读取数据,并不含有排名信息,所以,在Flex中,需要对数据进行多参数排名处理,为此,用到了此函数:

//对指定数组进行多参数排名
private function setDataRate(sortFieldName:String, objProperty:String, tempArr:Array, DataValue:String):Object
{
tempArr.sortOn(sortFieldName, Array.NUMERIC | Array.DESCENDING);

var order:Number=0;
var tempObj:Object=new Object();

for (var k:int=0; k < tempArr.length; k++)
{
if ((k == 0) && (tempArr[k][sortFieldName] == DataValue))
{
order=Number(k + 1);
tempObj[objProperty]=order;
break;
}
else if (k > 0)
{
if ((tempArr[k][sortFieldName] == tempArr[k - 1][sortFieldName]) && (tempArr[k][sortFieldName] == DataValue))
{
order=order;
tempObj[objProperty]=order;
break;
}
else if ((tempArr[k][sortFieldName] == DataValue))
{
order=Number(k + 1);
tempObj[objProperty]=order;
break;
}

}

}
return tempObj;
//---------------------------------
}

调用方法:

for (var k:int=0; k < tempArr.length; k++)
{
var tempObj:Object=new Object();
//复制数组
var cloneArr:Array= tempArr.concat();
var obj1:Object =new Object();
obj1 = setDataRate("priceTotal","priceWeekRate",cloneArr,tempArr[k].priceTotal);
tempObj.priceWeekRate = obj1.priceWeekRate;

var obj2:Object =new Object();
obj2 = setDataRate("guestTotal","guestWeekRate",cloneArr,tempArr[k].guestTotal);
tempObj.guestWeekRate = obj2.guestWeekRate;

var obj3:Object =new Object();
obj3 = setDataRate("salaryTotal","salaryWeekRate",cloneArr,tempArr[k].salaryTotal);
tempObj.salaryWeekRate = obj3.salaryWeekRate;

var obj4:Object =new Object();
obj4 = setDataRate("chooseGuestTotal","chooseGuestWeekRate",cloneArr,tempArr[k].chooseGuestTotal);
tempObj.chooseGuestWeekRate = obj4.chooseGuestWeekRate;

var obj5:Object =new Object();
obj5 = setDataRate("countTotalMassage","massageWeekRate",cloneArr,tempArr[k].countTotalMassage);
tempObj.massageWeekRate = obj5.massageWeekRate;
//将对象压入数组
sendDataArr.push(tempObj);
}

附工程运用图例:
[img]http://dl.iteye.com/upload/attachment/470649/0aa79414-a16b-3add-8a1a-ac65067bdbb4.png[/img]
图例核心代码:

package project.module.dataReport.company.page
{
import mx.collections.ArrayCollection;
import mx.containers.VBox;
import project.golbal.EmployeeServiceItemsArgsName;

public class AnalyzeMonthDataPage extends VBox
{
[Bindable]
public var AllStoreEmployeeAndBaseSalaryArr:Array;
[Bindable]
public var distinctMonthEmpoyeeIDArr:Array;
[Bindable]
public var IDArr:Array;
[Bindable]
public var employeeServiceItemNameArr:Array;
[Bindable]
public var employeeIDArr:Array;
[Bindable]
public var employeeNameArr:Array;
[Bindable]
public var employeeRegPlaceArr:Array;
[Bindable]
public var employeeGroupArr:Array;
[Bindable]
public var fromDateArr:Array;
[Bindable]
public var toDateArr:Array;
[Bindable]
public var countTotalGuestCountArr:Array;
[Bindable]
public var guestWeekRateArr:Array;
[Bindable]
public var countTotalChooseGuestArr:Array;
[Bindable]
public var chooseGuestWeekRateArr:Array;
[Bindable]
public var countTotalMassageArr:Array;
[Bindable]
public var countTotalUnMassageArr:Array;
[Bindable]
public var massageWeekRateArr:Array;
[Bindable]
public var countTotalPriceArr:Array;
[Bindable]
public var priceWeekRateArr:Array;
[Bindable]
public var countTotalSalaryArr:Array;
[Bindable]
public var salaryWeekRateArr:Array;
[Bindable]
public var temp_month_honor_employeeIDArr:Array;
[Bindable]
public var temp_month_honor_employeeNameArr:Array;
[Bindable]
public var temp_month_honor_employeeRegPlaceArr:Array;
[Bindable]
public var temp_month_honor_employeeGroupArr:Array
[Bindable]
public var temp_month_honor_salaryTotalArr:Array;
[Bindable]
public var temp_month_font_honor_employeeIDArr:Array;
[Bindable]
public var temp_month_font_honor_employeeNameArr:Array;
[Bindable]
public var temp_month_font_honor_employeeRegPlaceArr:Array;
[Bindable]
public var temp_month_font_honor_employeeGroupArr:Array;
[Bindable]
public var temp_month_font_honor_salaryTotalArr:Array;
[Bindable]
public var temp_month_overdrawn_employeeIDArr:Array;
[Bindable]
public var temp_month_overdrawn_employeeNameArr:Array;
[Bindable]
public var temp_month_overdrawn_employeeRegPlaceArr:Array;
[Bindable]
public var temp_month_overdrawn_employeeGroupArr:Array;
[Bindable]
public var temp_month_overdrawn_priceTotalArr:Array;

public function AnalyzeMonthDataPage()
{
super();
}


private var controlPage:Object;
public function AnalyzeeAllEmployeeMonthData(page:Object):void
{
controlPage=page;

for (var i:int=0; i < distinctMonthEmpoyeeIDArr.length; i++)
{
var obj:Object=new Object();

RolateData(distinctMonthEmpoyeeIDArr[i])
}
mergeEmpoyeeHonor();
}


private var RolateEmployeePriceArr:Array=new Array();

private function RolateData(employeeID:String):void
{
for (var i:int=0; i < IDArr.length; i++)
{
if (employeeID == employeeIDArr[i])
{
var obj:Object
var returnNum:Number=findIsDataInArrays("employeeID",employeeIDArr[i], RolateEmployeePriceArr);
//找到有
if (returnNum != -1)
{
//索引值
var idx:Number=findDataInArraysOrder("employeeID",employeeIDArr[i], RolateEmployeePriceArr);
//obj=RolateEmployeePriceArr.getItemAt(idx);
obj=RolateEmployeePriceArr[idx];
}
else
{
//没有找到
obj=new Object();
}
var itemName:String=employeeServiceItemNameArr[i];
switch (itemName)
{
case EmployeeServiceItemsArgsName.PermArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp1:Number=Number(obj.permTotalSalary) ? Number(obj.permTotalSalary) : 0
obj.permTotalSalary=temp1 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.PermNurseArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp2:Number=Number(obj.permNurseTotalSalary) ? Number(obj.permNurseTotalSalary) : 0;
obj.permNurseTotalSalary=temp2 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.DyeArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp3:Number=Number(obj.dyeTotalSalary) ? Number(obj.dyeTotalSalary) : 0;
obj.dyeTotalSalary=temp3 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.DyeNurseArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp4:Number=Number(obj.dyeNurseTotalSalary) ? Number(obj.dyeNurseTotalSalary) : 0;
obj.dyeNurseTotalSalary=temp4 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);


break;
case EmployeeServiceItemsArgsName.ClipDryArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp5:Number=Number(obj.clipDryTotalSalary) ? Number(obj.clipDryTotalSalary) : 0;
obj.clipDryTotalSalary=temp5 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);


break;
case EmployeeServiceItemsArgsName.CommonWashArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp6:Number=Number(obj.commonWashTotalSalary) ? Number(obj.commonWashTotalSalary) : 0;

obj.commonWashTotalSalary=temp6 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.SaleArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp7:Number=Number(obj.saleTotalSalary) ? Number(obj.saleTotalSalary) : 0;
obj.saleTotalSalary=temp7 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.AddedWashArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp8:Number=Number(obj.addedWashTotalSalary) ? Number(obj.addedWashTotalSalary) : 0;
obj.addedWashTotalSalary=temp8 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.ProcessMaintainArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp9:Number=Number(obj.processMaintainTotalSalary) ? Number(obj.processMaintainTotalSalary) : 0;
obj.processMaintainTotalSalary=temp9 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.PrepaidCardArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp10:Number=Number(obj.prepaidTotalSalary) ? Number(obj.prepaidTotalSalary) : 0
obj.prepaidTotalSalary=temp10 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.PhysiotherapyArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp11:Number=Number(obj.physiotherapyTotalSalary) ? Number(obj.physiotherapyTotalSalary) : 0;
obj.physiotherapyTotalSalary=temp11 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
case EmployeeServiceItemsArgsName.WorkOvertimeArgsName():
obj.employeeID=employeeIDArr[i];
obj.employeeName=employeeNameArr[i];
obj.employeeRegPlace=employeeRegPlaceArr[i];
obj.employeeGroup=employeeGroupArr[i];

var temp12:Number=Number(obj.workOvertimeTotalSalary) ? Number(obj.workOvertimeTotalSalary) : 0
obj.workOvertimeTotalSalary=temp12 + (Number(countTotalSalaryArr[i]) ? Number(countTotalSalaryArr[i]) : 0);

break;
}

if (returnNum != -1)
{
}
else
{
RolateEmployeePriceArr.push(obj)
}
}
}

}


/***********
* 员工奖励
* ********************/
private var emloyeeHonorCashAco:Array=new Array();

private function mergeEmpoyeeHonor():void
{
if (temp_month_honor_employeeNameArr)
{
for (var i:int=0; i < temp_month_honor_employeeNameArr.length; i++)
{
var obj:Object
var returnNum:Number=findIsDataInArrays("employeeID",temp_month_honor_employeeIDArr[i], emloyeeHonorCashAco);
//找到有
if (returnNum != -1)
{
//索引值
var idx:Number=findDataInArraysOrder("employeeID",temp_month_honor_employeeIDArr[i], emloyeeHonorCashAco);
obj=emloyeeHonorCashAco[idx];
}
else
{
//没有找到
obj=new Object();
}
obj.employeeID=temp_month_honor_employeeIDArr[i]
obj.employeeName=temp_month_honor_employeeNameArr[i]
obj.employeeRegPlace=temp_month_honor_employeeRegPlaceArr[i];
obj.employeeGroupArr=temp_month_honor_employeeGroupArr[i];
//取值赋值
var temp1:Number=Number(obj.salaryTotal) ? Number(obj.salaryTotal) : 0;
obj.salaryTotal=temp1 + (Number(temp_month_honor_salaryTotalArr[i]) ? Number(temp_month_honor_salaryTotalArr[i]) : 0);

if (returnNum != -1)
{
}
else
{
emloyeeHonorCashAco.push(obj)
}
}

mergeEmployeeFrontHonor()
}
else
{
mergeEmployeeFrontHonor()
}
}

//-------------------------------
private function mergeEmployeeFrontHonor():void
{
if (temp_month_font_honor_employeeNameArr)
{
for (var i:int=0; i < temp_month_font_honor_employeeNameArr.length; i++)
{
var obj:Object
var returnNum:Number=findIsDataInArrays("employeeID",temp_month_font_honor_employeeIDArr[i], emloyeeHonorCashAco);
//找到有
if (returnNum != -1)
{
//索引值
var idx:Number=findDataInArraysOrder("employeeID",temp_month_font_honor_employeeIDArr[i], emloyeeHonorCashAco);
obj=emloyeeHonorCashAco[idx];
}
else
{
//没有找到
obj=new Object();
}
obj.employeeID=temp_month_font_honor_employeeIDArr[i];
obj.employeeName=temp_month_font_honor_employeeNameArr[i];
obj.employeeRegPlace=temp_month_font_honor_employeeRegPlaceArr[i];
obj.employeeGroup=temp_month_font_honor_employeeGroupArr[i];

var temp1:Number=Number(obj.salaryTotal) ? Number(obj.salaryTotal) : 0;
obj.salaryTotal=temp1 + (Number(temp_month_font_honor_salaryTotalArr[i]) ? Number(temp_month_font_honor_salaryTotalArr[i]) : 0);

if (returnNum != -1)
{
}
else
{
emloyeeHonorCashAco.push(obj)
}
}
doMergeOverDrawnPrice()
}
else
{
doMergeOverDrawnPrice()
}
}
//------------------------------------------------
private var mergeOverDrawPriceACO:Array=new Array();

private function doMergeOverDrawnPrice():void
{
if (temp_month_overdrawn_employeeNameArr)
{
for (var i:int=0; i < temp_month_overdrawn_employeeNameArr.length; i++)
{
var obj:Object
var returnNum:Number=findIsDataInArrays("employeeID",temp_month_overdrawn_employeeIDArr[i], mergeOverDrawPriceACO);
//找到有
if (returnNum != -1)
{
//索引值
var idx:Number=findDataInArraysOrder("employeeID",temp_month_overdrawn_employeeIDArr[i], mergeOverDrawPriceACO);
obj=mergeOverDrawPriceACO[idx];
}
else
{
//没有找到
obj=new Object();
}

obj.employeeID=temp_month_overdrawn_employeeIDArr[i]
obj.employeeName=temp_month_overdrawn_employeeNameArr[i]
obj.employeeRegPlace=temp_month_overdrawn_employeeRegPlaceArr[i];
obj.employeeGroup=temp_month_overdrawn_employeeGroupArr[i];

var temp1:Number=Number(obj.priceTotal) ? Number(obj.priceTotal) : 0;
obj.priceTotal=temp1 + (Number(temp_month_overdrawn_priceTotalArr[i]) ? Number(temp_month_overdrawn_priceTotalArr[i]) : 0);

if (returnNum != -1)
{
}
else
{
mergeOverDrawPriceACO.push(obj)
}
}
AddHonorAndOverDrawnData()
}
else
{
AddHonorAndOverDrawnData()
}
}

//----------------------------------------
private function AddHonorAndOverDrawnData():void
{
for (var i:int=0; i < RolateEmployeePriceArr.length; i++)
{
var oldObj:Object=RolateEmployeePriceArr[i];

if (emloyeeHonorCashAco)
{
oldObj.honorSalaryTotal=addHonorIntoObj(RolateEmployeePriceArr[i].employeeID).honorSalaryTotal;
}
}
//填弃数据
fillDataGridItemData()
}


private var allEmployeeMonthWageRateArr:Array;

private function fillDataGridItemData():void
{
for (var j:int=0; j < AllStoreEmployeeAndBaseSalaryArr.length; j++)
{
var oldObj:Object=AllStoreEmployeeAndBaseSalaryArr[j];
var getObj:Object=getLockEmployeeEachItem(AllStoreEmployeeAndBaseSalaryArr[j].employeeID);
var temp1:Number=Number(AllStoreEmployeeAndBaseSalaryArr[j].baseSalary) ? Number(AllStoreEmployeeAndBaseSalaryArr[j].baseSalary) : 0
oldObj.baseSalary=temp1.toFixed(2);

var temp2:Number=Number(getObj.monthSalaryTotal) ? Number(getObj.monthSalaryTotal) : 0;
oldObj.monthSalaryTotal=temp2.toFixed(2);

var temp3:Number=Number(getObj.overDrawnPriceTotal) ? Number(getObj.overDrawnPriceTotal) : 0;
oldObj.overDrawnPriceTotal=temp3.toFixed(2);

oldObj.MonthWageTotal=Number(temp1 + temp2 - temp3).toFixed(2);

}
//最终生成公司所有员工的工资数组
//AllStoreEmployeeAndBaseSalaryArr.sortOn("MonthWageTotal", Array.NUMERIC | Array.DESCENDING);
//设置全部员工的薪水排名;
allEmployeeMonthWageRateArr=doSetMonthWageRate(AllStoreEmployeeAndBaseSalaryArr);

//设置分组
AnalyzeEmployeeGroup()
}
private function getLockEmployeeEachItem(employeeID:String):Object
{
var tempObj:Object=new Object();
for (var j:int=0; j < RolateEmployeePriceArr.length; j++)
{
if (employeeID == String(RolateEmployeePriceArr[j].employeeID))
{
tempObj.overDrawnPriceTotal=addOverDrawnIntoObj(RolateEmployeePriceArr[j].employeeID).overDrawnPriceTotal;
tempObj.monthSalaryTotal=getDataScore(RolateEmployeePriceArr[j].employeeID).monthSalaryTotal;
}
}
return tempObj;
}

private function addHonorIntoObj(employeeID:String):Object
{
var tempObj:Object=new Object();
var honorSalaryTotal:Number=0
for (var j:int=0; j < emloyeeHonorCashAco.length; j++)
{
if (employeeID == String(emloyeeHonorCashAco[j].employeeID))
{
honorSalaryTotal=emloyeeHonorCashAco[j].salaryTotal
break;
}
}
tempObj.honorSalaryTotal=honorSalaryTotal;
return (tempObj)
}

//员工的月支出
private function addOverDrawnIntoObj(employeeID:String):Object
{
var tempObj:Object=new Object();
var overDrawnPriceTotal:Number=0;
if (mergeOverDrawPriceACO)
{
for (var j:int=0; j < mergeOverDrawPriceACO.length; j++)
{
if (employeeID == String(mergeOverDrawPriceACO[j].employeeID))
{
overDrawnPriceTotal=mergeOverDrawPriceACO[j].priceTotal;
break;
}
}
}
tempObj.overDrawnPriceTotal=overDrawnPriceTotal
return (tempObj)
}

//员工业绩薪酬+荣誉奖励现金
private function getDataScore(employeeID:String):Object
{
var score:Number=0;
var tempObj:Object=new Object();
for (var j:int=0; j < RolateEmployeePriceArr.length; j++)
{
if (employeeID == String(RolateEmployeePriceArr[j].employeeID))
{
var Num1:Number=Number(RolateEmployeePriceArr[j].permTotalSalary) ? Number(RolateEmployeePriceArr[j].permTotalSalary) : 0;
var Num2:Number=Number(RolateEmployeePriceArr[j].permNurseTotalSalary) ? Number(RolateEmployeePriceArr[j].permNurseTotalSalary) : 0;
var Num3:Number=Number(RolateEmployeePriceArr[j].dyeTotalSalary) ? Number(RolateEmployeePriceArr[j].dyeTotalSalary) : 0;
var Num4:Number=Number(RolateEmployeePriceArr[j].dyeNurseTotalSalary) ? Number(RolateEmployeePriceArr[j].dyeNurseTotalSalary) : 0;
var Num5:Number=Number(RolateEmployeePriceArr[j].clipDryTotalSalary) ? Number(RolateEmployeePriceArr[j].clipDryTotalSalary) : 0;
var Num6:Number=Number(RolateEmployeePriceArr[j].commonWashTotalSalary) ? Number(RolateEmployeePriceArr[j].commonWashTotalSalary) : 0;
var Num7:Number=Number(RolateEmployeePriceArr[j].saleTotalSalary) ? Number(RolateEmployeePriceArr[j].saleTotalSalary) : 0;
var Num8:Number=Number(RolateEmployeePriceArr[j].addedWashTotalSalary) ? Number(RolateEmployeePriceArr[j].addedWashTotalSalary) : 0;
var Num9:Number=Number(RolateEmployeePriceArr[j].processMaintainTotalSalary) ? Number(RolateEmployeePriceArr[j].processMaintainTotalSalary) : 0;
var Num10:Number=Number(RolateEmployeePriceArr[j].prepaidTotalSalary) ? Number(RolateEmployeePriceArr[j].prepaidTotalSalary) : 0;
var Num11:Number=Number(RolateEmployeePriceArr[j].physiotherapyTotalSalary) ? Number(RolateEmployeePriceArr[j].physiotherapyTotalSalary) : 0;
var Num12:Number=Number(RolateEmployeePriceArr[j].workOvertimeTotalSalary) ? Number(RolateEmployeePriceArr[j].workOvertimeTotalSalary) : 0;

var Num13:Number
if (emloyeeHonorCashAco)
{
Num13=Number(RolateEmployeePriceArr[j].honorSalaryTotal) ? Number(RolateEmployeePriceArr[j].honorSalaryTotal) : 0;
}
score=(Num1 + Num2 + Num3 + Num4 + Num5 + Num6 + Num7 + Num8 + Num9 + Num10 + Num11 + Num12 + Num13)
}
}
tempObj.monthSalaryTotal=score;
return (tempObj)
}


private function doSetMonthWageRate(tempArr:Array):Array
{
//排名 并附值
var re_EmployeeMonthWageRateArr:Array=[];
for (var k:int=0; k < tempArr.length; k++)
{
var tempObj:Object=new Object();

tempObj.employeeID=tempArr[k].employeeID
tempObj.employeeName=tempArr[k].employeeName
tempObj.employeeRegPlace=tempArr[k].employeeRegPlace;
tempObj.employeeGroup=tempArr[k].employeeGroup;


tempObj.baseSalary=tempArr[k].baseSalary;
tempObj.monthSalaryTotal=tempArr[k].monthSalaryTotal;
tempObj.overDrawnPriceTotal=tempArr[k].overDrawnPriceTotal;
tempObj.MonthWageTotal=tempArr[k].MonthWageTotal;

//复制数组
var cloneArr:Array=tempArr.concat();
var obj1:Object=new Object();
//全部员工的薪水排名
obj1=setDataRate("MonthWageTotal", "MonthWageTotalRate", cloneArr, tempArr[k].MonthWageTotal);
tempObj.MonthWageTotalRate=obj1.MonthWageTotalRate;

re_EmployeeMonthWageRateArr.push(tempObj)
}
return re_EmployeeMonthWageRateArr;
}



private var AnalyzedGroupACOData:ArrayCollection=new ArrayCollection()

private function AnalyzeEmployeeGroup():void
{
for (var k:int=0; k < allEmployeeMonthWageRateArr.length; k++)
{
var obj:Object=new Object();
var obj2:Object=new Object()
var childrenACO:ArrayCollection=new ArrayCollection();
if (k == 0)
{
obj.employeeGroup=allEmployeeMonthWageRateArr[k].employeeGroup;
childrenACO.addItem(allEmployeeMonthWageRateArr[k])
obj.children=childrenACO;
AnalyzedGroupACOData.addItem(obj)
}
else
{
//判断companyEmployeeDBDataArr[k].employeeGroup是否在数组中,如果存在,
//取得其索引,加入children
//否则 新加入数组
var returnNum:Number=findIsDataInArrays("employeeGroup",allEmployeeMonthWageRateArr[k].employeeGroup,AnalyzedGroupACOData);
//找到有
if (returnNum != -1)
{
//索引值
var idx:Number=findDataInArraysOrder("employeeGroup",allEmployeeMonthWageRateArr[k].employeeGroup,AnalyzedGroupACOData);
var oldObj:Object=AnalyzedGroupACOData.getItemAt(idx);
ArrayCollection(oldObj.children).addItem(allEmployeeMonthWageRateArr[k])
}
else
{
//没有找到
obj.employeeGroup=allEmployeeMonthWageRateArr[k].employeeGroup;
childrenACO.addItem(allEmployeeMonthWageRateArr[k])
obj.children=childrenACO;
AnalyzedGroupACOData.addItem(obj);
}
}
}
//设置分组排名
AnalyzeeEmployeeGroupRate()
}


private function AnalyzeeEmployeeGroupRate():void
{
//各个分组一组一组的解析
for (var i:int=0; i < AnalyzedGroupACOData.length; i++)
{
//取得 Children
var tempArr:*=(AnalyzedGroupACOData[i].children);
var childrenArr:Array=[];
var newArr:Array=[];
for (var j:int=0; j < tempArr.length; j++)
{
var tempObj2:Object=new Object();
tempObj2.employeeID=tempArr[j].employeeID;
tempObj2.MonthWageTotal=tempArr[j].MonthWageTotal;
newArr.push(tempObj2)
}
for (var k:int=0; k < newArr.length; k++)
{
var tempObj:Object=new Object();
tempObj.employeeID=newArr[k].employeeID;
//复制数组
var cloneArr:Array=newArr.concat();
var obj1:Object=new Object();
//全部员工的薪水排名
obj1=setDataRate("MonthWageTotal", "groupRate", cloneArr, newArr[k].MonthWageTotal);
tempObj.groupRate=obj1.groupRate;

childrenArr.push(tempObj)
}
//执行绑定
bidingGroupRate(childrenArr)

}
//班次排名
AnalyzeEmployeeRegPlace()
}

private function bidingGroupRate(tempArr:Array):void
{
for (var j:int=0; j < allEmployeeMonthWageRateArr.length; j++)
{
//取得对应的对象
var oldObj:Object=allEmployeeMonthWageRateArr[j];

for (var k:int=0; k < tempArr.length; k++)
{
//传送过来的小组含有排名,绑定名次
if (allEmployeeMonthWageRateArr[j].employeeID == tempArr[k].employeeID)
{
oldObj.groupRate=tempArr[k].groupRate
}
}
}
}
//---------------------------------------------------
private var AnalyzedRegplaceACOData:ArrayCollection=new ArrayCollection()

private function AnalyzeEmployeeRegPlace():void
{
for (var k:int=0; k < allEmployeeMonthWageRateArr.length; k++)
{
var obj:Object=new Object();
var obj2:Object=new Object()
var childrenACO:ArrayCollection=new ArrayCollection();
if (k == 0)
{
obj.employeeRegPlace=allEmployeeMonthWageRateArr[k].employeeRegPlace;
childrenACO.addItem(allEmployeeMonthWageRateArr[k])
obj.children=childrenACO;
AnalyzedRegplaceACOData.addItem(obj)
}
else
{
//判断companyEmployeeDBDataArr[k].employeeRegPlace是否在数组中,如果存在,
//取得其索引,加入children
//否则 新加入数组
var returnNum:Number=findIsDataInArrays("employeeRegPlace",allEmployeeMonthWageRateArr[k].employeeRegPlace,AnalyzedRegplaceACOData);
//找到有
if (returnNum != -1)
{
//索引值
var idx:Number=findDataInArraysOrder("employeeRegPlace",allEmployeeMonthWageRateArr[k].employeeRegPlace,AnalyzedRegplaceACOData);
var oldObj:Object=AnalyzedRegplaceACOData.getItemAt(idx);
ArrayCollection(oldObj.children).addItem(allEmployeeMonthWageRateArr[k])
}
else
{
//没有找到
obj.employeeRegPlace=allEmployeeMonthWageRateArr[k].employeeRegPlace;
childrenACO.addItem(allEmployeeMonthWageRateArr[k])
obj.children=childrenACO;
AnalyzedRegplaceACOData.addItem(obj);
}
}
}
//设置班次排名
AnalyzeeEmployeeRegPlaceRate()
}


private function AnalyzeeEmployeeRegPlaceRate():void
{
//各个分组一组一组的解析
for (var i:int=0; i < AnalyzedRegplaceACOData.length; i++)
{
//取得 Children
var tempArr:*=(AnalyzedRegplaceACOData[i].children);
var childrenArr:Array=[];
var newArr:Array=[];
for (var j:int=0; j < tempArr.length; j++)
{
var tempObj2:Object=new Object();
tempObj2.employeeID=tempArr[j].employeeID;
tempObj2.MonthWageTotal=tempArr[j].MonthWageTotal;
newArr.push(tempObj2)
}

for (var k:int=0; k < newArr.length; k++)
{
var tempObj:Object=new Object();
tempObj.employeeID=newArr[k].employeeID;
//复制数组
var cloneArr:Array=newArr.concat();
var obj1:Object=new Object();
//全部员工的薪水排名
obj1=setDataRate("MonthWageTotal", "regPlaceRate", cloneArr, newArr[k].MonthWageTotal);
tempObj.regPlaceRate=obj1.regPlaceRate;

childrenArr.push(tempObj)
}
//执行绑定
bidingRegplaceRate(childrenArr)
}

//各个分组解析完毕
//最终设置好所有员工的全部数据表
//调用页执行相关函数
controlPage.fillADG(allEmployeeMonthWageRateArr)
}

private function bidingRegplaceRate(tempArr:Array):void
{
for (var j:int=0; j < allEmployeeMonthWageRateArr.length; j++)
{
//取得对应的对象
var oldObj:Object=allEmployeeMonthWageRateArr[j];

for (var k:int=0; k < tempArr.length; k++)
{
//传送过来的小组含有排名,绑定名次
if (allEmployeeMonthWageRateArr[j].employeeID == tempArr[k].employeeID)
{
oldObj.regPlaceRate=tempArr[k].regPlaceRate
}
}
}
}
//--------------------------------------------------------

//查对对象比较并返回
private function findIsDataInArrays(fieldName:String,input:String,compareArr:*):Number
{
for (var i:int=0; i < compareArr.length; i++)
{
if (compareArr[i][fieldName]=== input)
{
return i;
}
}
return -1;
}

private function findDataInArraysOrder(fieldName:String,input:String,compareArr:*):Number
{
for (var i:int=0; i < compareArr.length; i++)
{
if (compareArr[i][fieldName]=== input)
{
return i;
break;
}
}
return -1;
}

//对指定数组进行多参数排名
private function setDataRate(sortFieldName:String, objProperty:String, tempArr:Array, DataValue:String):Object
{
tempArr.sortOn(sortFieldName, Array.NUMERIC | Array.DESCENDING);

var order:Number=0;
var tempObj:Object=new Object();

for (var k:int=0; k < tempArr.length; k++)
{
if ((k == 0) && (tempArr[k][sortFieldName] == DataValue))
{
order=Number(k + 1);
tempObj[objProperty]=order;
break;
}
else if (k > 0)
{
if ((tempArr[k][sortFieldName] == tempArr[k - 1][sortFieldName]) && (tempArr[k][sortFieldName] == DataValue))
{
order=order;
tempObj[objProperty]=order;
break;
}
else if ((tempArr[k][sortFieldName] == DataValue))
{
order=Number(k + 1);
tempObj[objProperty]=order;
break;
}

}

}
return tempObj;
//---------------------------------
}
//--------------------------------------------------
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值