正在做一个人事系统,在请假中有三种类型,分别为调休,年假,事假。在请假的界面中,不会给用户选择请假类型,当用户选好日期提交之后,系统会计算一下,根据优先级先看调休是否有时间可以抵充,如果小于4小时,则直接看年假的时间是否有抵充,如果也小于4小时,则请假的类型都为事假。以下是我总结的需求,及我举的例子。

解决方案 »

  1.   

    我先判断现在的日期是否大于4月1号,然后写的一个循环,开始日期到结束日期,遇到是WorkingDay的则开始计算,下面就不会了
      

  2.   

    用一个表存储人员(employee),假期年份(year),假期类型(type),假期时长(hour)。用另一个表存储假期类型(type)和优先级(level)。然后联表查询获取hour,以year和level排序。你上面已经得到了要请假的时长leavetime。先定义一个变量result用于存储整个请假的分配结果,遍历刚刚查询到的表的每一行,得到hour值a,如果a<leavetime,则leavetime=leavetime-a,并更新数据库,删除相应假期记录,并把相应的year,type,hour(即a)添加到result,然后进行下一行循环;如果a>leavetime则更新数据库,update相应记录set hour=a-leavetime,并把相应的year,type,hour(即leavetime)添加到result,然后退出循环。这是基本逻辑,复杂一点例如数据库里要有请假记录什么的自己加就好了。