`
diding
  • 浏览: 80375 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

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

    博客分类:
  • Flex
阅读更多
最近有一个项目,客户不仅要求报表同时呈现:
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);
			}

附工程运用图例:

图例核心代码:
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;
			//---------------------------------
		}
		//--------------------------------------------------
	}
}
  • 大小: 108.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics