在项目中有这样的一个需求:给员工发工资的时候有一项叫做应发工资,现在暂定应发工资是由岗位工资+基本工资+绩效工资+加班工资组成,其中的每一项又由其他N多项组成,例如:岗位工资=党费+工费,绩效工资=加班工资*(基本工资-加班工资)/2+3500,加班工资=基本工资/(23*24)*1.5,通过循环递归找到了最基础的项是党费,工费和基本工资,现在要求计算出应发工资中每一项的值,即岗位工资,绩效工资,加班工资各多少,最后再加起来算出应发工资的总额,这里最关键的是要算出每一项的值,需要说明的是,每一项都是由其他不同的项组合而成,并且其他项又是有另外的项组成,有没有一种可行的办法算出应发工资=岗位工资(5000)+绩效工资(3500)+基本工资(3000)+加班工资(3500)这样形式的结果呢???
递归函数的返回值为一个结构体或者类,把你的三类或者多类工资单独累加就可以了。
把工资标准写一个对象类,包含每个人的所有的工资基本项目,党费,工费,基本工资。。。。。。
然后用的时候,直接按照规则计算就行了~~
为什么要用递归呢?
如:加班工资=基本工资/(23*24)*1.5,这里的“基本工资”可以看着常量,写到配置文件里,把加班工资写成一个方法,
绩效工资=加班工资*(基本工资-加班工资)/2+3500,这里调用加班工资这个方法就能得到绩效工资,其它的类似,这样做个人感觉要简单一点
如下类型
set好了初始值后,只要AAA.get就可以了~~
public class AAA {
private double dbl工费;
private double dbl党费;
private double dbl加班时间;
private double dbl加班单位金额;
private double dbl补助金额;
public void set工费(dobule val) {
dbl工费 = val;
}
public void set党费(dobule val) {
dbl党费 = val;
}
.......
public double get岗位工资() {
return dbl党费 + dbl工费;
}
public double get加班工资() {
return dbl加班时间 + dbl加班单位金额;
}
.......
public double get总工资() {
return get岗位工资() + get加班工资()...;
}
}
设置一个字段:Path(路径),在递归的时候把金额按一级级往上汇总。如:
应发工资》岗位工资》党费
应发工资》岗位工资》工费
应发工资》绩效工资》加班工资》基本工资