TAverageSalaryMapper.xml 2.09 KB
Newer Older
1 2 3 4 5 6 7 8 9
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.yifu.cloud.plus.v1.yifu.salary.mapper.TAverageSalaryMapper">

	<resultMap id="tAverageSalaryMap" type="com.yifu.cloud.plus.v1.yifu.salary.entity.TAverageSalary">
		<id property="id" column="ID"/>
		<result property="empIdcard" column="EMP_IDCARD"/>
fangxinjiang's avatar
fangxinjiang committed
10
		<result property="averageSalary" column="AVERAGE_SALARY"/>
11 12 13
		<result property="createMonth" column="CREATE_MONTH"/>
	</resultMap>

fangxinjiang's avatar
fangxinjiang committed
14 15 16 17 18
	<resultMap id="tAverageSalaryVoMap" type="com.yifu.cloud.plus.v1.yifu.salary.vo.TAverageSalaryVo">
		<result property="empIdcard" column="EMP_IDCARD"/>
		<result property="averageSalary" column="AVERAGE_SALARY"/>
	</resultMap>

19
	<!-- 删除不需要的数据 -->
fangxinjiang's avatar
fangxinjiang committed
20
	<delete id="deleteByCreateMonth">
21 22 23
		delete
		from t_average_salary
		where CREATE_MONTH in (
fangxinjiang's avatar
fangxinjiang committed
24 25
							   DATE_FORMAT(now(), '%Y%m'), DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 MONTH), '%Y%m')
			)
26 27 28
	</delete>

	<!-- 生成需要的数据 -->
fangxinjiang's avatar
fangxinjiang committed
29
	<insert id="insertAverageSalary">
30
		insert into t_average_salary
fangxinjiang's avatar
fangxinjiang committed
31 32 33 34
		select CONCAT(DATE_FORMAT(now(), '%Y%m-'), a.ID)                                 ID
			 , a.EMP_IDCARD
			 , round(sum(a.RELAY_SALARY) / ifnull(count(DISTINCT a.SALARY_MONTH), 1), 2) AVERAGE_SALARY
			 , DATE_FORMAT(now(), '%Y%m')                                                CREATE_MONTH
35
		from t_salary_account a
36
		where a.DELETE_FLAG=0 and a.SALARY_MONTH >= date_format(DATE_SUB(NOW(), INTERVAL 1 YEAR), '%Y%m')
37 38
		GROUP BY a.EMP_IDCARD
	</insert>
fangxinjiang's avatar
fangxinjiang committed
39 40 41 42 43 44 45 46

	<select id="getAverageSalary" resultMap="tAverageSalaryVoMap">
		select x.* from
		(select a.EMP_IDCARD,a.AVERAGE_SALARY from view_average_cur_month a) x
		LEFT JOIN
		(select a.EMP_IDCARD,a.AVERAGE_SALARY from view_average_last_month a) y
		on x.EMP_IDCARD=y.EMP_IDCARD
		where (x.AVERAGE_SALARY <![CDATA[ <>  ]]> IFNULL(y.AVERAGE_SALARY,-1))
47 48 49 50 51
		<if test="idNum != null and idNum.size > 0">
			AND x.EMP_IDCARD in
			<foreach item="item" index="index" collection="idNum" open="(" separator="," close=")">
				#{item}
			</foreach>
fangxinjiang's avatar
fangxinjiang committed
52 53
		</if>
	</select>
54
</mapper>