You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

629 lines
25 KiB

<?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.daqing.financial.hrms.dao.EmployeeDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.daqing.framework.domain.hrms.EmployeeEntity" id="employeeMap">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="gender" column="gender"/>
<result property="birthday" column="birthday"/>
<result property="officePhone" column="office_phone"/>
<result property="phone" column="phone"/>
<result property="companyMail" column="company_mail"/>
<result property="spareMail" column="spare_mail"/>
<result property="positionDescription" column="position_description"/>
<result property="jobNumber" column="job_number"/>
<result property="headPortaritUrl" column="head_portarit_url"/>
<result property="userId" column="user_id"/>
</resultMap>
<!-- 不含部门id时列表 -->
<resultMap id="employeeList" type="com.daqing.framework.domain.hrms.ext.EmployeeListVO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="jobNumber" column="job_number"/>
<association property="account" javaType="string">
<result column="account"/>
</association>
<association property="createTime" javaType="java.util.Date">
<result column="create_time"/>
</association>
<association property="status" javaType="integer">
<result column="status"/>
</association>
<collection property="departmentNameList" ofType="string" column="id" select="departmentList"/>
<collection property="positionNameList" ofType="string" column="id" select="positionList"/>
<collection property="roleNameList" ofType="string" column="id" select="roleList"/>
</resultMap>
<!-- 含有部门时列表 -->
<resultMap id="employeeAndDeptList" type="com.daqing.framework.domain.hrms.ext.EmployeeListVO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="jobNumber" column="job_number"/>
<association property="account" javaType="string">
<result column="account"/>
</association>
<association property="createTime" javaType="java.util.Date">
<result column="create_time"/>
</association>
<association property="status" javaType="integer">
<result column="status"/>
</association>
<collection property="departmentNameList" ofType="string" column="id" select="departmentList"/>
<collection property="positionNameList" ofType="string" column="id" select="positionList"/>
<collection property="roleNameList" ofType="string" column="id" select="roleList"/>
</resultMap>
<!-- 员工详情(人力后台展示) -->
<resultMap id="employeeInfo" type="com.daqing.framework.domain.hrms.ext.EmployeeInfoVO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="jobNumber" column="job_number"/>
<result property="gender" column="gender"/>
<result property="birthday" column="birthday"/>
<result property="phone" column="phone"/>
<result property="companyMail" column="company_mail"/>
<association property="account" javaType="string">
<result column="account"/>
</association>
<association property="status" javaType="integer">
<result column="status"/>
</association>
<collection property="departments" ofType="com.daqing.framework.domain.hrms.DeptEntity">
<id property="id" column="dept_id"/>
<result property="name" column="dept_name"/>
</collection>
<collection property="positions" ofType="com.daqing.framework.domain.hrms.PositionEntity">
<id property="id" column="position_id"/>
<result property="name" column="position_name"/>
</collection>
<collection property="roles" ofType="com.daqing.framework.domain.hrms.RoleEntity">
<id property="id" column="role_id"/>
<result property="name" column="role_name"/>
</collection>
</resultMap>
<!-- 员工详情(人力工作台展示) -->
<resultMap id="employeeInfoByUserId" type="com.daqing.framework.domain.hrms.ext.EmployeeAndUserVO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="jobNumber" column="job_number"/>
<result property="gender" column="gender"/>
<result property="birthday" column="birthday"/>
<result property="phone" column="phone"/>
<result property="companyMail" column="company_mail"/>
<result property="spareMail" column="spare_mail"/>
<result property="officePhone" column="office_phone"/>
<result property="positionDescription" column="position_description"/>
<result property="headPortaritUrl" column="head_portarit_url"/>
<result property="userId" column="user_id"/>
<association property="account" javaType="string">
<result column="account"/>
</association>
<association property="password" javaType="string">
<result column="password"/>
</association>
<association property="loginNum" javaType="integer">
<result column="login_num"/>
</association>
<association property="lasttime" javaType="java.util.Date">
<result column="lasttime"/>
</association>
<association property="phoneAccount" javaType="string">
<result column="phone_account"/>
</association>
<association property="wechatId" javaType="string">
<result column="wechat_id"/>
</association>
<collection property="departments" ofType="string">
<result column="dept_name"/>
</collection>
<collection property="positions" ofType="string">
<result column="position_name"/>
</collection>
<collection property="roles" ofType="string">
<result column="role_name"/>
</collection>
</resultMap>
<!-- 映射user实体类和数据库表主键,使之能获取到新增的主键 -->
<resultMap type="com.daqing.framework.domain.hrms.UserEntity" id="userMap">
<result property="id" column="id"/>
</resultMap>
<resultMap type="com.daqing.framework.domain.hrms.ext.EmployeeTO" id="employeeTO">
<id property="id" column="eid"/>
<result property="empName" column="emp_name"/>
<collection property="deptNames" ofType="string">
<result column="dept_name"/> <!-- 员工和部门是多对多,从单个员工的角度看为一对多 -->
</collection>
</resultMap>
<!-- 根据员工id查询员工的姓名和部门信息 -->
<select id="getEmployeeAndDeptById" resultMap="employeeTO">
SELECT e.id eid,e.name emp_name,d.name dept_name
FROM hrms_employee e
LEFT JOIN hrms_employee_dept ed
ON e.id = ed.employee_id
LEFT JOIN hrms_dept d
ON d.id = ed.dept_id
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND e.id
IN
<foreach collection="ids" open="(" separator="," close=")" item="id">
#{id}
</foreach>
</select>
<!-- 根据id查询员工姓名 -->
<select id="getEmployeeById" parameterType="long" resultType="com.daqing.framework.domain.hrms.EmployeeEntity">
SELECT e.name name
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND e.id = #{id}
</select>
<!-- 根据部门id获取该部门下面所有的员工 -->
<select id="listEmployeeByDeptId" parameterType="long" resultType="com.daqing.framework.domain.hrms.ext.EmployeeVO">
SELECT e.id,e.name
FROM hrms_employee e
LEFT JOIN hrms_employee_dept ed
ON e.id = ed.employee_id
LEFT JOIN hrms_dept d
ON ed.dept_id = d.id
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND d.id = #{id}
</select>
<!-- 根据部门id获取该部门下面所有的员工 -->
<select id="listEmployeeByDeptIdAndEmpId" resultType="com.daqing.framework.domain.hrms.ext.EmployeeVO">
SELECT e.id,e.name
FROM hrms_employee e
LEFT JOIN hrms_employee_dept ed
ON e.id = ed.employee_id
LEFT JOIN hrms_dept d
ON ed.dept_id = d.id
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND d.id = #{id}
<if test="name != null and name != ''">
AND e.name LIKE CONCAT('%',#{name},'%')
</if>
<if test="empIds != null and empIds != ''">
AND e.id NOT IN
<foreach collection="empIds" item="empId" open="(" separator="," close=")">
#{empId}
</foreach>
</if>
</select>
<!-- 根据部门id获取该部门下面所有的员工 -->
<select id="employeeListByDeptId" parameterType="long" resultType="com.daqing.framework.domain.hrms.ext.UserDeptVO">
SELECT
u.id,
e.name as account , GROUP_CONCAT(er.role_id SEPARATOR ',') roleId
FROM
hrms_employee e
LEFT JOIN hrms_employee_dept ed ON e.id = ed.employee_id
LEFT JOIN hrms_dept d ON ed.dept_id = d.id
LEFT JOIN hrms_user u ON e.user_id = u.id
left join hrms_employee_role er on e.user_id = er.user_id
WHERE
u.del_or_not = 0
AND d.id = #{id}
<if test="account != null">
AND e.name LIKE CONCAT('%',#{account},'%')
</if>
GROUP BY u.id
</select>
<!-- 查询所有的员工姓名和id -->
<select id="listEmployeeName" resultType="com.daqing.framework.domain.hrms.ext.EmployeeVO">
SELECT e.id id,e.name name
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
</select>
<!-- //TODO 修改查询员工为user表的del_or_not = 0的员工 -->
<select id="pageByCondition" resultMap="employeeMap">
SELECT e.id eid,e.name emp_name,d.name
,u.account,e.job_number,u.create_time,p.name pos_name
FROM hrms_employee e
LEFT JOIN hrms_employee_dept ed ON e.id = ed.employee_id
LEFT JOIN hrms_dept d ON d.id = ed.dept_id
LEFT JOIN hrms_user u ON e.user_id = u.id
LEFT JOIN hrms_employee_position ep ON e.id = ep.emp_id
LEFT JOIN hrms_position p ON p.id = ep.position_id
<where>
<if test="employee.name != null and employee.name != ''">
e.`name` LIKE CONCAT('%',#{employee.name},'%')
</if>
<if test="employee.jobNumber != null and employee.jobNumber != ''">
AND e.job_number = #{employee.jobNumber}
</if>
AND u.del_or_not = 0
</where>
</select>
<select id="pageList" parameterType="com.daqing.framework.domain.hrms.request.EmployeeRequest"
resultMap="employeeList">
SELECT e.id id,e.name name,u.account account,e.job_number job_number,
u.create_time create_time,u.status status
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
<if test="employee.codeOrName != null and employee.codeOrName != ''">
AND (e.name LIKE CONCAT('%',#{employee.codeOrName},'%') OR u.account LIKE
CONCAT('%',#{employee.codeOrName},'%')
OR e.job_number LIKE CONCAT('%',#{employee.codeOrName},'%'))
</if>
</select>
<select id="excelList" resultMap="employeeList">
SELECT e.id id,e.name name,u.account account,e.job_number job_number,
u.create_time create_time,u.status status
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
</select>
<select id="pageListByDept" parameterType="com.daqing.framework.domain.hrms.request.EmployeeRequest"
resultMap="employeeList">
SELECT e.id id,e.name name,u.account account,e.job_number job_number,
u.create_time create_time,u.status status
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
LEFT JOIN hrms_employee_dept ed
ON e.id = ed.employee_id
LEFT JOIN hrms_dept d
ON ed.dept_id = d.id
WHERE u.del_or_not = 0
<if test="employee.id != null and employee.id != ''">
AND d.id = #{employee.id}
</if>
<if test="employee.codeOrName != null and employee.codeOrName != ''">
AND (e.name LIKE CONCAT('%',#{employee.codeOrName},'%') OR u.account LIKE
CONCAT('%',#{employee.codeOrName},'%')
OR e.job_number LIKE CONCAT('%',#{employee.codeOrName},'%'))
</if>
</select>
<select id="departmentList" parameterType="long" resultType="string">
SELECT d.name
FROM hrms_dept d
LEFT JOIN hrms_employee_dept ed
ON d.id = ed.dept_id
LEFT JOIN hrms_employee e
ON ed.employee_id = e.id
WHERE e.id = #{id}
</select>
<select id="positionList" parameterType="long" resultType="string">
SELECT p.name
FROM hrms_position p
LEFT JOIN hrms_employee_position ep
ON p.id = ep.position_id
LEFT JOIN hrms_employee e
ON ep.emp_id = e.id
WHERE e.id = #{id}
</select>
<select id="roleList" parameterType="long" resultType="string">
SELECT r.name
FROM hrms_role r
LEFT JOIN hrms_employee_role er
ON r.id = er.role_id
LEFT JOIN hrms_user u
ON u.id = er.user_id
LEFT JOIN hrms_employee e
ON e.user_id = u.id
WHERE e.id = #{id}
</select>
<!-- 根据employee id得到 user_id-->
<select id="queryIds" parameterType="long" resultType="long">
SELECT user_id FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND e.id IN
<foreach collection="ids" open="(" separator="," close=")" item="id">
#{id}
</foreach>
</select>
<!-- 删除:del_or_not = 1 -->
<delete id="deleteByIds" parameterType="long">
UPDATE hrms_user SET del_or_not = 1 WHERE id IN
<foreach collection="ids" open="(" separator="," close=")" item="id">
#{id}
</foreach>
</delete>
<select id="getStatus" parameterType="long" resultType="integer">
SELECT u.status status FROM hrms_user u
LEFT JOIN hrms_employee e
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND e.id = #{id}
</select>
<!-- 启用或者禁用 -->
<update id="startOrStop" parameterType="com.daqing.framework.domain.hrms.UserEntity">
UPDATE hrms_user SET status = #{status},disable_start_time = #{disableStartTime},
disable_end_time = #{disableEndTime},disable_cause = #{disableCause}
WHERE id = #{id}
</update>
<!-- 禁用详情-->
<select id="forbidInfo" parameterType="long" resultType="com.daqing.framework.domain.hrms.UserEntity">
SELECT disable_start_time,disable_end_time,disable_cause
FROM hrms_user WHERE id = #{id}
</select>
<!-- 所有的禁用时间 -->
<select id="listDisableTime" resultType="com.daqing.framework.domain.hrms.UserEntity">
SELECT id,disable_start_time,disable_end_time,disable_cause
FROM hrms_user WHERE status = 1 OR status = 2
</select>
<!-- 获取user_id-->
<select id="getUserId" resultType="long">
SELECT user_id FROM hrms_employee WHERE id = #{id}
</select>
<!-- 重置密码 -->
<update id="updatePassword">
UPDATE hrms_user SET password = #{password} WHERE id = #{id}
</update>
<select id="getInfo" resultMap="employeeInfo" parameterType="long">
SELECT e.id id,e.name name,e.job_number job_number,e.phone phone,e.gender gender,
e.birthday birthday,e.company_mail company_mail,u.account account,u.status status,
d.id dept_id,d.name dept_name,r.id role_id,r.name role_name,po.id position_id,
po.name position_name
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
LEFT JOIN hrms_employee_dept ed
ON ed.employee_id = e.id
LEFT JOIN hrms_dept d
ON ed.dept_id = d.id
LEFT JOIN hrms_employee_role er
ON er.user_id = u.id
LEFT JOIN hrms_role r
ON er.role_id = r.id
LEFT JOIN hrms_employee_position ep
ON ep.emp_id = e.id
LEFT JOIN hrms_position po
ON ep.position_id = po.id
WHERE u.del_or_not = 0
AND e.id = #{id}
</select>
<update id="updateEmployee" parameterType="com.daqing.framework.domain.hrms.EmployeeEntity">
UPDATE hrms_employee SET name = #{name},job_number = #{jobNumber},gender = #{gender},birthday = #{birthday},
phone = #{phone},company_mail = #{companyMail}
WHERE id = #{id}
</update>
<update id="updateUser">
UPDATE hrms_user SET account = #{account},motify_time = #{modifyTime} WHERE id = #{id}
</update>
<delete id="deleteDepartment" parameterType="long">
DELETE FROM hrms_employee_dept WHERE employee_id = #{id}
</delete>
<delete id="deletePosition" parameterType="long">
DELETE FROM hrms_employee_position WHERE emp_id = #{id}
</delete>
<delete id="deleteRole" parameterType="long">
DELETE FROM hrms_employee_role WHERE user_id = #{id}
</delete>
<insert id="insertDepartment">
INSERT INTO hrms_employee_dept
(employee_id,dept_id)
VALUES
<foreach collection="deptIds" item="deptId" separator=",">
(#{id},#{deptId})
</foreach>
</insert>
<insert id="insertPosition">
INSERT INTO hrms_employee_position
(emp_id,position_id)
VALUES
<foreach collection="positionIds" item="positionId" separator=",">
(#{id},#{positionId})
</foreach>
</insert>
<insert id="insertRole">
INSERT INTO hrms_employee_role
(user_id,role_id)
VALUES
<foreach collection="roleIds" item="roleId" separator=",">
(#{id},#{roleId})
</foreach>
</insert>
<insert id="insertUsrRole">
INSERT INTO hrms_employee_role
(user_id,role_id)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.userId},#{item.roleId})
</foreach>
</insert>
<insert id="insertUserRole">
INSERT INTO hrms_employee_role
(user_id,role_id)
VALUES (#{userId},#{roleId})
</insert>
<insert id="saveUserRole">
INSERT INTO hrms_employee_role
(user_id,role_id)
VALUES (#{userId},#{roleId})
</insert>
<insert id="insertEmployee" keyProperty="id" useGeneratedKeys="true"
parameterType="com.daqing.framework.domain.hrms.EmployeeEntity">
INSERT INTO hrms_employee (name,job_number,gender,birthday,phone,company_mail,user_id)
VALUES (#{name},#{jobNumber},#{gender},#{birthday},#{phone},#{companyMail},#{userId})
</insert>
<insert id="insertUser" keyProperty="id" useGeneratedKeys="true"
parameterType="com.daqing.framework.domain.hrms.UserEntity">
INSERT INTO hrms_user (account,create_time,motify_time) VALUES (#{account},#{createTime},#{motifyTime})
</insert>
<select id="getEmployeeByUserId" parameterType="long" resultMap="employeeInfoByUserId">
SELECT e.id id,e.name name,e.job_number job_number,e.phone phone,e.gender gender,
e.birthday birthday,e.company_mail company_mail,e.spare_mail spare_mail,
e.office_phone office_phone,e.position_description position_description,
e.head_portarit_url head_portarit_url,e.user_id user_id,u.account account,
u.password password,u.login_num login_num,u.lasttime lasttime,u.phone_account
phone_account,u.wechat_id wechat_id,d.name dept_name,r.name role_name,
po.name position_name
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
LEFT JOIN hrms_employee_dept ed
ON ed.employee_id = e.id
LEFT JOIN hrms_dept d
ON ed.dept_id = d.id
LEFT JOIN hrms_employee_role er
ON er.user_id = u.id
LEFT JOIN hrms_role r
ON er.role_id = r.id
LEFT JOIN hrms_employee_position ep
ON ep.emp_id = e.id
LEFT JOIN hrms_position po
ON ep.position_id = po.id
WHERE u.del_or_not = 0
AND u.id = #{id}
</select>
<update id="updateEmployeeAndUser" parameterType="com.daqing.framework.domain.hrms.EmployeeEntity">
UPDATE hrms_employee SET gender = #{gender},office_phone = #{officePhone},phone = #{phone},
company_mail = #{companyMail},spare_mail = #{spareMail}
<if test="headPortaritUrl != null and headPortaritUrl != ''">
,head_portarit_url = #{headPortaritUrl}
</if>
WHERE id = #{id}
</update>
<!-- 根据id查询员工头像 -->
<select id="getEmployeeEntityByUserId" parameterType="long"
resultType="com.daqing.framework.domain.hrms.EmployeeEntity">
SELECT head_portarit_url
FROM hrms_employee
WHERE user_id = #{userId}
</select>
<!-- 新增员工时判断姓名、工号、账号是否存在 -->
<select id="employeeNameCount" parameterType="string" resultType="integer">
SELECT COUNT(e.id)
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND e.name = #{name}
</select>
<select id="userAccountCount" parameterType="string" resultType="integer">
SELECT COUNT(id) FROM hrms_user WHERE del_or_not = 0 AND account = #{account}
</select>
<select id="employeeJobNumberCount" parameterType="string" resultType="integer">
SELECT COUNT(e.id)
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND e.job_number = #{jobNumber}
</select>
<select id="getEmployeeRepetitionByEmpId" parameterType="long"
resultType="com.daqing.framework.domain.hrms.ext.EmployeeRepetition">
SELECT e.name name,e.job_number job_number,u.account account
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND e.id = #{empId}
</select>
<select id="getAccountAndDeptNameById"
resultType="com.daqing.framework.domain.guarantee.response.EmployeeMessageResponse">
select hu.id, hu.account, GROUP_CONCAT(hd.`name` SEPARATOR '/')deptName
from hrms_employee_dept ed
LEFT JOIN hrms_dept hd on hd.id=ed.dept_id
LEFT JOIN hrms_employee he on he.id=ed.employee_id
LEFT JOIN hrms_user hu on hu.id = he.user_id
where hu.id IN
<foreach collection="ids" open="(" separator="," close=")" item="id">
#{id}
</foreach>
GROUP BY hu.id
</select>
<!-- 根据userId查询对应的员工姓名 -->
<select id="listEmpNameByUserId" parameterType="integer" resultType="com.daqing.framework.domain.hrms.ext.EmployeeVO">
SELECT u.id id,e.name name
FROM hrms_employee e
LEFT JOIN hrms_user u
ON e.user_id = u.id
WHERE u.del_or_not = 0
AND u.id IN
<foreach collection="userIds" open="(" separator="," close=")" item="userId">
#{userId}
</foreach>
</select>
<select id="getListEmployeeTrees" parameterType="long" resultType="com.daqing.framework.domain.hrms.ext.UserDeptVO">
SELECT
u.id,
e.name as account
FROM
hrms_employee e
LEFT JOIN hrms_employee_dept ed ON e.id = ed.employee_id
LEFT JOIN hrms_dept d ON ed.dept_id = d.id
LEFT JOIN hrms_user u ON e.user_id = u.id
WHERE
u.del_or_not = 0
AND d.id = #{id}
<if test="account != null">
AND e.name LIKE CONCAT('%',#{account},'%')
</if>
</select>
<select id="selectUserRole" resultType="java.lang.Integer">
select COUNT(0) from hrms_employee_role where user_id=#{userId} and role_id=#{roleId}
</select>
<select id="countUserIdAndRoleId" resultType="integer">
SELECT COUNT(id) FROM hrms_employee_role WHERE user_id = #{userId} AND role_id = #{roleId}
</select>
</mapper>