根据一个实际的需求案例,描述一下:如何在工资条中添加获取累计工资[字段]和月平均工资[字段]

这个需求存在一个前后端分离的微服务EHR项目中,通过两个SQL语句来实现。业务逻辑:前端调用一个接口,返回两个对象。两个SQL语句就写在MyBatis中。

项目技术栈:前端vue.js + 后端Spring Cloud微服务

1、加入给出一张工资表,除了在前端页面显示这个人的工资条之外,还需要显示这个人的累计工资和月平均工资。

具体的需求如下:

1、首先,用户登录账户,点击工资条page,进入工资条界面,顶部有一个日期选择器,用户可以选择【年月】(没有具体到哪一天)。

2、其次,用户选择那个也,累计工资就计算到那个月,【即使现在是12月份,用户选择的是201805,工资条结果显示5月的工资,累计工资和月平均工资的计算也是截止到5月份,选择时间点后边的不考虑。】

3、最后,判断当前日期,如果当前日期是15号或者15号之前,则显示上个月的工资条;15号之后,则显示当月的工资条。

需求具体解析:

ps:想在项目中完成这个需求,需要掌握的知识点比较全面,需要掌握vue.js框架的知识、Spring Cloud框架、Spring框架、微服务的概念、MyBatis、MySQL等知识。这些就需要自己去学习啦~我们今天的侧重点在MySQL这一部分。

1、工资条中,有很多内容,但是存在与数据库中的工资表中,这样的话,把数据拿来显示就行了。这个不需要去分析。

2、主要是截止到选择的月份,进行计算累计工资和月平均工资。累计的拿出来了,月平均的也就好说了。selectsum(total_theory_wages) AS wages_total ,

count(total_theory_wages) ,

sum(total_theory_wages) / count(total_theory_wages) AS wages_month_average

from

t_wages t

where

employee_id = 88888888

and

(wages_time  between  201801  and  201812)

每一行是一个小块,没对代码进行风格优化。

字段说明:

total_theory_wages 应发工资

wages_month_average 月平均工资

wages_time  年月,例如‘201805’

1、首先,用sum()函数统计累计工资和。

在用count()统计一下次数,注意!这里我没有用截止月份减去起始月份

原因是可能期间有人因为某些原因,没有发工资,取值就会不正确。

这样这个问题就很好的解决了。

2、还有个问题。这里注意一下count(total_theory_wages)为0的情况,如果一个人上个月刚刚入职,还没法工资,虽然在前台看不到工资条数据(对于前台来说,是正确的现象;但是后台是会报错的。)

3、最后,判断当前日期,这个在前端用JavaScript写个if{}else{}代码块控制一下即可。

Logo

前往低代码交流专区

更多推荐